isl_ast_codegen.c: add_domain: only take single copy of inverse schedule
[isl.git] / include / isl / typed_cpp.h
blobbc67b1aef5dedc47587f41405669d62124654379
1 /// These are automatically generated templated C++ bindings for isl.
2 ///
3 /// isl is a library for computing with integer sets and maps described by
4 /// Presburger formulas. On top of this, isl provides various tools for
5 /// polyhedral compilation, ranging from dependence analysis over scheduling
6 /// to AST generation.
8 #ifndef ISL_TYPED_CPP
9 #define ISL_TYPED_CPP
11 #include <type_traits>
13 #include <isl/cpp.h>
15 namespace isl {
16 namespace typed {
18 template <typename Domain, typename Range>
19 struct pair {};
21 struct Anonymous;
24 template <typename...>
25 struct aff;
27 template <typename...Ts>
28 using aff_on = aff<Ts..., Anonymous>;
30 template <typename...>
31 struct aff_list;
33 template <typename...Ts>
34 using aff_list_on = aff_list<Ts..., Anonymous>;
36 template <typename...>
37 struct basic_map;
39 template <typename...>
40 struct basic_set;
42 template <typename...>
43 struct fixed_box;
45 template <typename...>
46 struct id;
48 template <typename...>
49 struct id_list;
51 template <typename...>
52 struct map;
54 template <typename...>
55 struct map_list;
57 template <typename...>
58 struct multi_aff;
60 template <typename...>
61 struct multi_id;
63 template <typename...>
64 struct multi_pw_aff;
66 template <typename...>
67 struct multi_union_pw_aff;
69 template <typename...>
70 struct multi_val;
72 template <typename...>
73 struct point;
75 template <typename...>
76 struct pw_aff;
78 template <typename...Ts>
79 using pw_aff_on = pw_aff<Ts..., Anonymous>;
81 template <typename...>
82 struct pw_aff_list;
84 template <typename...Ts>
85 using pw_aff_list_on = pw_aff_list<Ts..., Anonymous>;
87 template <typename...>
88 struct pw_multi_aff;
90 template <typename...>
91 struct pw_multi_aff_list;
93 template <typename...>
94 struct set;
96 template <typename...>
97 struct set_list;
99 template <typename...>
100 struct space;
102 template <typename...>
103 struct union_map;
105 template <typename...>
106 struct union_pw_aff;
108 template <typename...Ts>
109 using union_pw_aff_on = union_pw_aff<Ts..., Anonymous>;
111 template <typename...>
112 struct union_pw_aff_list;
114 template <typename...Ts>
115 using union_pw_aff_list_on = union_pw_aff_list<Ts..., Anonymous>;
117 template <typename...>
118 struct union_pw_multi_aff;
120 template <typename...>
121 struct union_set;
123 template <typename...>
124 struct union_set_list;
126 template <typename...>
127 struct val;
129 template <typename...>
130 struct val_list;
132 template <>
133 struct aff<Anonymous> : public isl::aff {
134 template <typename...>
135 friend struct aff;
136 template <typename...>
137 friend struct aff_list;
138 template <typename...>
139 friend struct basic_map;
140 template <typename...>
141 friend struct basic_set;
142 template <typename...>
143 friend struct fixed_box;
144 template <typename...>
145 friend struct id;
146 template <typename...>
147 friend struct id_list;
148 template <typename...>
149 friend struct map;
150 template <typename...>
151 friend struct map_list;
152 template <typename...>
153 friend struct multi_aff;
154 template <typename...>
155 friend struct multi_id;
156 template <typename...>
157 friend struct multi_pw_aff;
158 template <typename...>
159 friend struct multi_union_pw_aff;
160 template <typename...>
161 friend struct multi_val;
162 template <typename...>
163 friend struct point;
164 template <typename...>
165 friend struct pw_aff;
166 template <typename...>
167 friend struct pw_aff_list;
168 template <typename...>
169 friend struct pw_multi_aff;
170 template <typename...>
171 friend struct pw_multi_aff_list;
172 template <typename...>
173 friend struct set;
174 template <typename...>
175 friend struct set_list;
176 template <typename...>
177 friend struct space;
178 template <typename...>
179 friend struct union_map;
180 template <typename...>
181 friend struct union_pw_aff;
182 template <typename...>
183 friend struct union_pw_aff_list;
184 template <typename...>
185 friend struct union_pw_multi_aff;
186 template <typename...>
187 friend struct union_set;
188 template <typename...>
189 friend struct union_set_list;
190 template <typename...>
191 friend struct val;
192 template <typename...>
193 friend struct val_list;
195 aff() = default;
196 aff(const isl::aff &obj) : isl::aff(obj) {}
197 static aff from(const isl::aff &obj) {
198 return aff(obj);
200 inline explicit aff(const isl::ctx &ctx, const std::string &str);
201 inline typed::aff<Anonymous> add(const typed::aff<Anonymous> &aff2) const;
202 inline typed::multi_aff<Anonymous> add(const typed::multi_aff<Anonymous> &multi2) const;
203 inline typed::multi_pw_aff<Anonymous> add(const typed::multi_pw_aff<Anonymous> &multi2) const;
204 inline typed::multi_union_pw_aff<Anonymous> add(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
205 inline typed::pw_aff<Anonymous> add(const typed::pw_aff<Anonymous> &pwaff2) const;
206 inline typed::pw_multi_aff<Anonymous> add(const typed::pw_multi_aff<Anonymous> &pma2) const;
207 inline typed::union_pw_aff<Anonymous> add(const typed::union_pw_aff<Anonymous> &upa2) const;
208 inline typed::union_pw_multi_aff<Anonymous> add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
209 inline typed::aff<Anonymous> add_constant(const typed::val<Anonymous> &v) const;
210 inline typed::aff<Anonymous> add_constant(long v) const;
211 inline typed::multi_aff<Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
212 template <typename Range>
213 inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const;
214 inline typed::aff<Anonymous> as_aff() const;
215 inline typed::map<Anonymous> as_map() const = delete;
216 inline typed::multi_aff<Anonymous> as_multi_aff() const;
217 inline typed::multi_union_pw_aff<Anonymous> as_multi_union_pw_aff() const;
218 inline typed::pw_multi_aff<Anonymous> as_pw_multi_aff() const;
219 inline typed::set<Anonymous> as_set() const;
220 inline typed::union_map<Anonymous> as_union_map() const = delete;
221 inline typed::aff<Anonymous> at(int pos) const;
222 inline typed::basic_set<> bind(const typed::id<Anonymous> &id) const;
223 inline typed::basic_set<> bind(const std::string &id) const;
224 inline typed::basic_set<> bind(const typed::multi_id<Anonymous> &tuple) const;
225 inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<> &tuple) const = delete;
226 inline typed::pw_aff<Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
227 inline typed::aff<Anonymous> ceil() const;
228 inline typed::pw_aff<Anonymous> coalesce() const;
229 inline typed::pw_aff<Anonymous> cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const;
230 inline typed::multi_val<Anonymous> constant_multi_val() const;
231 inline typed::val<Anonymous> constant_val() const;
232 inline typed::val<Anonymous> get_constant_val() const = delete;
233 inline typed::set<> domain() const;
234 inline typed::aff<Anonymous> domain_reverse() const = delete;
235 inline typed::pw_aff<Anonymous> drop_unused_params() const;
236 inline typed::pw_multi_aff<Anonymous> extract_pw_multi_aff(const typed::space<Anonymous> &space) const;
237 inline typed::aff<Anonymous> floor() const;
238 inline typed::set<Anonymous> ge_set(const typed::aff<> &aff2) const = delete;
239 inline typed::set<Anonymous> ge_set(const typed::pw_aff<> &pwaff2) const = delete;
240 inline typed::aff<Anonymous> gist(const typed::set<> &context) const;
241 inline typed::union_pw_aff<Anonymous> gist(const typed::union_set<> &context) const;
242 inline typed::aff<Anonymous> gist(const typed::basic_set<> &context) const;
243 inline typed::aff<Anonymous> gist(const typed::point<> &context) const;
244 inline typed::aff<Anonymous> gist_params(const typed::set<> &context) const;
245 inline typed::aff<Anonymous> gist_params(const typed::basic_set<> &context) const;
246 inline typed::aff<Anonymous> gist_params(const typed::point<> &context) const;
247 inline typed::set<Anonymous> gt_set(const typed::aff<> &aff2) const = delete;
248 inline typed::set<Anonymous> gt_set(const typed::pw_aff<> &pwaff2) const = delete;
249 inline typed::multi_aff<Anonymous, Anonymous> identity() const;
250 template <typename Domain>
251 inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<Domain> &domain) const;
252 inline typed::pw_aff<Anonymous> intersect_domain(const typed::set<> &set) const = delete;
253 inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::space<> &space) const = delete;
254 inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::union_set<> &uset) const = delete;
255 inline typed::union_pw_aff<Anonymous> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
256 inline typed::pw_aff<Anonymous> intersect_params(const typed::set<> &set) const;
257 inline typed::set<Anonymous> le_set(const typed::aff<> &aff2) const = delete;
258 inline typed::set<Anonymous> le_set(const typed::pw_aff<> &pwaff2) const = delete;
259 inline typed::aff_list<Anonymous> list() const;
260 inline typed::set<Anonymous> lt_set(const typed::aff<> &aff2) const = delete;
261 inline typed::set<Anonymous> lt_set(const typed::pw_aff<> &pwaff2) const = delete;
262 inline typed::multi_pw_aff<Anonymous> max(const typed::multi_pw_aff<Anonymous> &multi2) const;
263 inline typed::pw_aff<Anonymous> max(const typed::pw_aff<Anonymous> &pwaff2) const;
264 inline typed::multi_val<Anonymous> max_multi_val() const;
265 inline typed::val<Anonymous> max_val() const;
266 inline typed::multi_pw_aff<Anonymous> min(const typed::multi_pw_aff<Anonymous> &multi2) const;
267 inline typed::pw_aff<Anonymous> min(const typed::pw_aff<Anonymous> &pwaff2) const;
268 inline typed::multi_val<Anonymous> min_multi_val() const;
269 inline typed::val<Anonymous> min_val() const;
270 inline typed::aff<Anonymous> mod(const typed::val<Anonymous> &mod) const;
271 inline typed::aff<Anonymous> mod(long mod) const;
272 inline typed::aff<Anonymous> neg() const;
273 inline typed::set<> params() const;
274 inline typed::pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
275 inline typed::union_pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
276 template <typename Range>
277 inline typed::multi_aff<pair<Anonymous, Range>> product(const typed::multi_aff<Range> &multi2) const;
278 template <typename Range>
279 inline typed::multi_pw_aff<pair<Anonymous, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
280 template <typename Range>
281 inline typed::pw_multi_aff<pair<Anonymous, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
282 inline typed::aff<Anonymous> pullback(const typed::multi_aff<> &ma) const = delete;
283 inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<> &mpa) const = delete;
284 inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<> &pma) const = delete;
285 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
286 inline typed::aff<Anonymous> pullback(const typed::aff<> &ma) const = delete;
287 inline typed::pw_multi_aff_list<Anonymous> pw_multi_aff_list() const;
288 inline typed::pw_multi_aff<Anonymous> range_factor_domain() const = delete;
289 inline typed::pw_multi_aff<Anonymous> range_factor_range() const = delete;
290 inline typed::multi_aff<Anonymous> range_product(const typed::multi_aff<> &multi2) const = delete;
291 inline typed::multi_pw_aff<Anonymous> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
292 inline typed::multi_union_pw_aff<Anonymous> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
293 inline typed::pw_multi_aff<Anonymous> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
294 inline typed::union_pw_multi_aff<Anonymous> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
295 inline typed::aff<Anonymous> scale(const typed::val<Anonymous> &v) const;
296 inline typed::aff<Anonymous> scale(long v) const;
297 inline typed::multi_aff<Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
298 inline typed::aff<Anonymous> scale_down(const typed::val<Anonymous> &v) const;
299 inline typed::aff<Anonymous> scale_down(long v) const;
300 inline typed::multi_aff<Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
301 inline typed::multi_aff<Anonymous> set_at(int pos, const typed::aff<Anonymous> &el) const;
302 inline typed::multi_pw_aff<Anonymous> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
303 inline typed::multi_union_pw_aff<Anonymous> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
304 template <typename Domain2>
305 inline typed::multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
306 template <typename Domain2>
307 inline typed::multi_aff<Domain2> set_range_tuple(const std::string &id) const;
308 inline typed::space<Anonymous> space() const;
309 inline typed::aff<Anonymous> sub(const typed::aff<Anonymous> &aff2) const;
310 inline typed::multi_aff<Anonymous> sub(const typed::multi_aff<Anonymous> &multi2) const;
311 inline typed::multi_pw_aff<Anonymous> sub(const typed::multi_pw_aff<Anonymous> &multi2) const;
312 inline typed::multi_union_pw_aff<Anonymous> sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
313 inline typed::pw_aff<Anonymous> sub(const typed::pw_aff<Anonymous> &pwaff2) const;
314 inline typed::pw_multi_aff<Anonymous> sub(const typed::pw_multi_aff<Anonymous> &pma2) const;
315 inline typed::union_pw_aff<Anonymous> sub(const typed::union_pw_aff<Anonymous> &upa2) const;
316 inline typed::union_pw_multi_aff<Anonymous> sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
317 inline typed::pw_aff<Anonymous> subtract_domain(const typed::set<> &set) const = delete;
318 inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::space<> &space) const = delete;
319 inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::union_set<> &uset) const = delete;
320 inline typed::multi_pw_aff<Anonymous> to_multi_pw_aff() const;
321 inline typed::multi_union_pw_aff<Anonymous> to_multi_union_pw_aff() const;
322 inline typed::pw_multi_aff<Anonymous> to_pw_multi_aff() const;
323 inline typed::union_pw_aff<Anonymous> to_union_pw_aff() const;
324 inline typed::union_pw_multi_aff<Anonymous> to_union_pw_multi_aff() const;
325 template <typename Domain>
326 inline typed::aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const;
327 inline typed::multi_pw_aff<Anonymous> union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const;
328 inline typed::multi_union_pw_aff<Anonymous> union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const;
329 inline typed::pw_aff<Anonymous> union_add(const typed::pw_aff<Anonymous> &pwaff2) const;
330 inline typed::pw_multi_aff<Anonymous> union_add(const typed::pw_multi_aff<Anonymous> &pma2) const;
331 inline typed::union_pw_aff<Anonymous> union_add(const typed::union_pw_aff<Anonymous> &upa2) const;
332 inline typed::union_pw_multi_aff<Anonymous> union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
335 template <typename Domain>
336 struct aff<Domain, Anonymous> : public isl::aff {
337 template <typename...>
338 friend struct aff;
339 template <typename...>
340 friend struct aff_list;
341 template <typename...>
342 friend struct basic_map;
343 template <typename...>
344 friend struct basic_set;
345 template <typename...>
346 friend struct fixed_box;
347 template <typename...>
348 friend struct id;
349 template <typename...>
350 friend struct id_list;
351 template <typename...>
352 friend struct map;
353 template <typename...>
354 friend struct map_list;
355 template <typename...>
356 friend struct multi_aff;
357 template <typename...>
358 friend struct multi_id;
359 template <typename...>
360 friend struct multi_pw_aff;
361 template <typename...>
362 friend struct multi_union_pw_aff;
363 template <typename...>
364 friend struct multi_val;
365 template <typename...>
366 friend struct point;
367 template <typename...>
368 friend struct pw_aff;
369 template <typename...>
370 friend struct pw_aff_list;
371 template <typename...>
372 friend struct pw_multi_aff;
373 template <typename...>
374 friend struct pw_multi_aff_list;
375 template <typename...>
376 friend struct set;
377 template <typename...>
378 friend struct set_list;
379 template <typename...>
380 friend struct space;
381 template <typename...>
382 friend struct union_map;
383 template <typename...>
384 friend struct union_pw_aff;
385 template <typename...>
386 friend struct union_pw_aff_list;
387 template <typename...>
388 friend struct union_pw_multi_aff;
389 template <typename...>
390 friend struct union_set;
391 template <typename...>
392 friend struct union_set_list;
393 template <typename...>
394 friend struct val;
395 template <typename...>
396 friend struct val_list;
398 aff() = default;
399 template <typename Arg1,
400 typename std::enable_if<
401 std::is_base_of<Domain, Arg1>{},
402 bool>::type = true>
403 aff(const aff<Arg1, Anonymous> &obj) : isl::aff(obj) {}
404 private:
405 template <typename base,
406 typename std::enable_if<
407 std::is_same<base, isl::aff>{}, bool>::type = true>
408 aff(const base &obj) : isl::aff(obj) {}
409 public:
410 static aff from(const isl::aff &obj) {
411 return aff(obj);
413 inline explicit aff(const isl::ctx &ctx, const std::string &str);
414 inline typed::aff<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &aff2) const;
415 inline typed::multi_aff<Domain, Anonymous> add(const typed::multi_aff<Domain, Anonymous> &multi2) const;
416 inline typed::multi_pw_aff<Domain, Anonymous> add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
417 inline typed::multi_union_pw_aff<Domain, Anonymous> add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
418 inline typed::pw_aff<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
419 inline typed::pw_multi_aff<Domain, Anonymous> add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
420 inline typed::union_pw_aff<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
421 inline typed::union_pw_multi_aff<Domain, Anonymous> add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
422 inline typed::aff<Domain, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
423 inline typed::aff<Domain, Anonymous> add_constant(long v) const;
424 inline typed::multi_aff<Domain, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
425 template <typename Range2>
426 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
427 inline typed::aff<Domain, Anonymous> as_aff() const;
428 inline typed::map<Domain, Anonymous> as_map() const;
429 inline typed::multi_aff<Domain, Anonymous> as_multi_aff() const;
430 inline typed::multi_union_pw_aff<Domain, Anonymous> as_multi_union_pw_aff() const;
431 inline typed::pw_multi_aff<Domain, Anonymous> as_pw_multi_aff() const;
432 inline typed::set<Domain, Anonymous> as_set() const = delete;
433 inline typed::union_map<Domain, Anonymous> as_union_map() const;
434 inline typed::aff<Domain, Anonymous> at(int pos) const;
435 inline typed::basic_set<Domain> bind(const typed::id<Anonymous> &id) const;
436 inline typed::basic_set<Domain> bind(const std::string &id) const;
437 inline typed::basic_set<Domain> bind(const typed::multi_id<Anonymous> &tuple) const;
438 inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<Domain> &tuple) const;
439 inline typed::pw_aff<Domain, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
440 inline typed::aff<Domain, Anonymous> ceil() const;
441 inline typed::pw_aff<Domain, Anonymous> coalesce() const;
442 inline typed::pw_aff<Domain, Anonymous> cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const;
443 inline typed::multi_val<Anonymous> constant_multi_val() const;
444 inline typed::val<Anonymous> constant_val() const;
445 inline typed::val<Domain, Anonymous> get_constant_val() const = delete;
446 inline typed::set<Domain> domain() const;
447 inline typed::aff<Domain, Anonymous> domain_reverse() const = delete;
448 inline typed::pw_aff<Domain, Anonymous> drop_unused_params() const;
449 inline typed::pw_multi_aff<Domain, Anonymous> extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const;
450 inline typed::aff<Domain, Anonymous> floor() const;
451 inline typed::set<Domain> ge_set(const typed::aff<Domain, Anonymous> &aff2) const;
452 inline typed::set<Domain> ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
453 inline typed::aff<Domain, Anonymous> gist(const typed::set<Domain> &context) const;
454 inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::union_set<Domain> &context) const;
455 inline typed::aff<Domain, Anonymous> gist(const typed::basic_set<Domain> &context) const;
456 inline typed::aff<Domain, Anonymous> gist(const typed::point<Domain> &context) const;
457 inline typed::aff<Domain, Anonymous> gist_params(const typed::set<> &context) const;
458 inline typed::aff<Domain, Anonymous> gist_params(const typed::basic_set<> &context) const;
459 inline typed::aff<Domain, Anonymous> gist_params(const typed::point<> &context) const;
460 inline typed::set<Domain> gt_set(const typed::aff<Domain, Anonymous> &aff2) const;
461 inline typed::set<Domain> gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
462 inline typed::multi_aff<Domain, Anonymous> identity() const;
463 inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
464 inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::set<Domain> &set) const;
465 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::space<Domain> &space) const;
466 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::union_set<Domain> &uset) const;
467 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
468 inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::set<> &set) const;
469 inline typed::set<Domain> le_set(const typed::aff<Domain, Anonymous> &aff2) const;
470 inline typed::set<Domain> le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
471 inline typed::aff_list<Domain, Anonymous> list() const;
472 inline typed::set<Domain> lt_set(const typed::aff<Domain, Anonymous> &aff2) const;
473 inline typed::set<Domain> lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
474 inline typed::multi_pw_aff<Domain, Anonymous> max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
475 inline typed::pw_aff<Domain, Anonymous> max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
476 inline typed::multi_val<Anonymous> max_multi_val() const;
477 inline typed::val<Anonymous> max_val() const;
478 inline typed::multi_pw_aff<Domain, Anonymous> min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
479 inline typed::pw_aff<Domain, Anonymous> min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
480 inline typed::multi_val<Anonymous> min_multi_val() const;
481 inline typed::val<Anonymous> min_val() const;
482 inline typed::aff<Domain, Anonymous> mod(const typed::val<Anonymous> &mod) const;
483 inline typed::aff<Domain, Anonymous> mod(long mod) const;
484 inline typed::aff<Domain, Anonymous> neg() const;
485 inline typed::set<> params() const;
486 inline typed::pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
487 inline typed::union_pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
488 template <typename Domain2, typename Range2>
489 inline typed::multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::multi_aff<Domain2, Range2> &multi2) const;
490 template <typename Domain2, typename Range2>
491 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
492 template <typename Domain2, typename Range2>
493 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
494 template <typename Domain2>
495 inline typed::aff<Domain2, Anonymous> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
496 inline typed::aff<Anonymous> pullback(const typed::multi_aff<Domain> &ma) const;
497 template <typename Domain2>
498 inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
499 inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<Domain> &mpa) const;
500 template <typename Domain2>
501 inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
502 inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<Domain> &pma) const;
503 template <typename Domain2>
504 inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
505 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
506 template <typename Domain2>
507 inline typed::aff<Domain2, Anonymous> pullback(const typed::aff<Domain2, Domain> &ma) const;
508 inline typed::aff<Anonymous> pullback(const typed::aff<Domain> &ma) const;
509 inline typed::pw_multi_aff_list<Domain, Anonymous> pw_multi_aff_list() const;
510 inline typed::pw_multi_aff<Domain, Anonymous> range_factor_domain() const = delete;
511 inline typed::pw_multi_aff<Domain, Anonymous> range_factor_range() const = delete;
512 template <typename Range2>
513 inline typed::multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_aff<Domain, Range2> &multi2) const;
514 template <typename Range2>
515 inline typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
516 template <typename Range2>
517 inline typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
518 template <typename Range2>
519 inline typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
520 template <typename Range2>
521 inline typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
522 inline typed::aff<Domain, Anonymous> scale(const typed::val<Anonymous> &v) const;
523 inline typed::aff<Domain, Anonymous> scale(long v) const;
524 inline typed::multi_aff<Domain, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
525 inline typed::aff<Domain, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
526 inline typed::aff<Domain, Anonymous> scale_down(long v) const;
527 inline typed::multi_aff<Domain, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
528 inline typed::multi_aff<Domain, Anonymous> set_at(int pos, const typed::aff<Domain, Anonymous> &el) const;
529 inline typed::multi_pw_aff<Domain, Anonymous> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
530 inline typed::multi_union_pw_aff<Domain, Anonymous> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
531 template <typename Range2>
532 inline typed::multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
533 template <typename Range2>
534 inline typed::multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
535 inline typed::space<Domain, Anonymous> space() const;
536 inline typed::aff<Domain, Anonymous> sub(const typed::aff<Domain, Anonymous> &aff2) const;
537 inline typed::multi_aff<Domain, Anonymous> sub(const typed::multi_aff<Domain, Anonymous> &multi2) const;
538 inline typed::multi_pw_aff<Domain, Anonymous> sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
539 inline typed::multi_union_pw_aff<Domain, Anonymous> sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
540 inline typed::pw_aff<Domain, Anonymous> sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
541 inline typed::pw_multi_aff<Domain, Anonymous> sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
542 inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
543 inline typed::union_pw_multi_aff<Domain, Anonymous> sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
544 inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::set<Domain> &set) const;
545 inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::space<Domain> &space) const;
546 inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::union_set<Domain> &uset) const;
547 inline typed::multi_pw_aff<Domain, Anonymous> to_multi_pw_aff() const;
548 inline typed::multi_union_pw_aff<Domain, Anonymous> to_multi_union_pw_aff() const;
549 inline typed::pw_multi_aff<Domain, Anonymous> to_pw_multi_aff() const;
550 inline typed::union_pw_aff<Domain, Anonymous> to_union_pw_aff() const;
551 inline typed::union_pw_multi_aff<Domain, Anonymous> to_union_pw_multi_aff() const;
552 inline typed::aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
553 inline typed::multi_pw_aff<Domain, Anonymous> union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const;
554 inline typed::multi_union_pw_aff<Domain, Anonymous> union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const;
555 inline typed::pw_aff<Domain, Anonymous> union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
556 inline typed::pw_multi_aff<Domain, Anonymous> union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
557 inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
558 inline typed::union_pw_multi_aff<Domain, Anonymous> union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
561 template <typename Domain2, typename Range2>
562 struct aff<pair<Domain2, Range2>, Anonymous> : public isl::aff {
563 template <typename...>
564 friend struct aff;
565 template <typename...>
566 friend struct aff_list;
567 template <typename...>
568 friend struct basic_map;
569 template <typename...>
570 friend struct basic_set;
571 template <typename...>
572 friend struct fixed_box;
573 template <typename...>
574 friend struct id;
575 template <typename...>
576 friend struct id_list;
577 template <typename...>
578 friend struct map;
579 template <typename...>
580 friend struct map_list;
581 template <typename...>
582 friend struct multi_aff;
583 template <typename...>
584 friend struct multi_id;
585 template <typename...>
586 friend struct multi_pw_aff;
587 template <typename...>
588 friend struct multi_union_pw_aff;
589 template <typename...>
590 friend struct multi_val;
591 template <typename...>
592 friend struct point;
593 template <typename...>
594 friend struct pw_aff;
595 template <typename...>
596 friend struct pw_aff_list;
597 template <typename...>
598 friend struct pw_multi_aff;
599 template <typename...>
600 friend struct pw_multi_aff_list;
601 template <typename...>
602 friend struct set;
603 template <typename...>
604 friend struct set_list;
605 template <typename...>
606 friend struct space;
607 template <typename...>
608 friend struct union_map;
609 template <typename...>
610 friend struct union_pw_aff;
611 template <typename...>
612 friend struct union_pw_aff_list;
613 template <typename...>
614 friend struct union_pw_multi_aff;
615 template <typename...>
616 friend struct union_set;
617 template <typename...>
618 friend struct union_set_list;
619 template <typename...>
620 friend struct val;
621 template <typename...>
622 friend struct val_list;
624 aff() = default;
625 template <typename Arg1, typename Arg2,
626 typename std::enable_if<
627 std::is_base_of<Domain2, Arg1>{} &&
628 std::is_base_of<Range2, Arg2>{},
629 bool>::type = true>
630 aff(const aff<pair<Arg1, Arg2>, Anonymous> &obj) : isl::aff(obj) {}
631 private:
632 template <typename base,
633 typename std::enable_if<
634 std::is_same<base, isl::aff>{}, bool>::type = true>
635 aff(const base &obj) : isl::aff(obj) {}
636 public:
637 static aff from(const isl::aff &obj) {
638 return aff(obj);
640 inline explicit aff(const isl::ctx &ctx, const std::string &str);
641 inline typed::aff<pair<Domain2, Range2>, Anonymous> add(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
642 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
643 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
644 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
645 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
646 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
647 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
648 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
649 inline typed::aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
650 inline typed::aff<pair<Domain2, Range2>, Anonymous> add_constant(long v) const;
651 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
652 template <typename Arg1>
653 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const;
654 inline typed::aff<pair<Domain2, Range2>, Anonymous> as_aff() const;
655 inline typed::map<pair<Domain2, Range2>, Anonymous> as_map() const;
656 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> as_multi_aff() const;
657 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> as_multi_union_pw_aff() const;
658 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> as_pw_multi_aff() const;
659 inline typed::set<pair<Domain2, Range2>, Anonymous> as_set() const = delete;
660 inline typed::union_map<pair<Domain2, Range2>, Anonymous> as_union_map() const;
661 inline typed::aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
662 inline typed::basic_set<pair<Domain2, Range2>> bind(const typed::id<Anonymous> &id) const;
663 inline typed::basic_set<pair<Domain2, Range2>> bind(const std::string &id) const;
664 inline typed::basic_set<pair<Domain2, Range2>> bind(const typed::multi_id<Anonymous> &tuple) const;
665 inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
666 inline typed::pw_aff<Range2, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
667 inline typed::aff<pair<Domain2, Range2>, Anonymous> ceil() const;
668 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> coalesce() const;
669 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const;
670 inline typed::multi_val<Anonymous> constant_multi_val() const;
671 inline typed::val<Anonymous> constant_val() const;
672 inline typed::val<pair<Domain2, Range2>, Anonymous> get_constant_val() const = delete;
673 inline typed::set<pair<Domain2, Range2>> domain() const;
674 inline typed::aff<pair<Range2, Domain2>, Anonymous> domain_reverse() const;
675 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> drop_unused_params() const;
676 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const;
677 inline typed::aff<pair<Domain2, Range2>, Anonymous> floor() const;
678 inline typed::set<pair<Domain2, Range2>> ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
679 inline typed::set<pair<Domain2, Range2>> ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
680 inline typed::aff<pair<Domain2, Range2>, Anonymous> gist(const typed::set<pair<Domain2, Range2>> &context) const;
681 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
682 inline typed::aff<pair<Domain2, Range2>, Anonymous> gist(const typed::basic_set<pair<Domain2, Range2>> &context) const;
683 inline typed::aff<pair<Domain2, Range2>, Anonymous> gist(const typed::point<pair<Domain2, Range2>> &context) const;
684 inline typed::aff<pair<Domain2, Range2>, Anonymous> gist_params(const typed::set<> &context) const;
685 inline typed::aff<pair<Domain2, Range2>, Anonymous> gist_params(const typed::basic_set<> &context) const;
686 inline typed::aff<pair<Domain2, Range2>, Anonymous> gist_params(const typed::point<> &context) const;
687 inline typed::set<pair<Domain2, Range2>> gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
688 inline typed::set<pair<Domain2, Range2>> gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
689 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> identity() const;
690 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
691 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
692 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
693 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
694 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const;
695 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::set<> &set) const;
696 inline typed::set<pair<Domain2, Range2>> le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
697 inline typed::set<pair<Domain2, Range2>> le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
698 inline typed::aff_list<pair<Domain2, Range2>, Anonymous> list() const;
699 inline typed::set<pair<Domain2, Range2>> lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
700 inline typed::set<pair<Domain2, Range2>> lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
701 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
702 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
703 inline typed::multi_val<Anonymous> max_multi_val() const;
704 inline typed::val<Anonymous> max_val() const;
705 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
706 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
707 inline typed::multi_val<Anonymous> min_multi_val() const;
708 inline typed::val<Anonymous> min_val() const;
709 inline typed::aff<pair<Domain2, Range2>, Anonymous> mod(const typed::val<Anonymous> &mod) const;
710 inline typed::aff<pair<Domain2, Range2>, Anonymous> mod(long mod) const;
711 inline typed::aff<pair<Domain2, Range2>, Anonymous> neg() const;
712 inline typed::set<> params() const;
713 template <typename Domain3>
714 inline typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
715 template <typename Domain3>
716 inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
717 template <typename Arg1, typename Arg2>
718 inline typed::multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::multi_aff<Arg1, Arg2> &multi2) const;
719 template <typename Arg1, typename Arg2>
720 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const;
721 template <typename Arg1, typename Arg2>
722 inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const;
723 template <typename Arg1>
724 inline typed::aff<Arg1, Anonymous> pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const;
725 inline typed::aff<Anonymous> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
726 template <typename Arg1>
727 inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const;
728 inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const;
729 template <typename Arg1>
730 inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const;
731 inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const;
732 template <typename Arg1>
733 inline typed::union_pw_aff<Arg1, Anonymous> pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const;
734 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const;
735 template <typename Arg1>
736 inline typed::aff<Arg1, Anonymous> pullback(const typed::aff<Arg1, pair<Domain2, Range2>> &ma) const;
737 inline typed::aff<Anonymous> pullback(const typed::aff<pair<Domain2, Range2>> &ma) const;
738 inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> pw_multi_aff_list() const;
739 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_domain() const = delete;
740 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_range() const = delete;
741 template <typename Arg1>
742 inline typed::multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
743 template <typename Arg1>
744 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
745 template <typename Arg1>
746 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
747 template <typename Arg1>
748 inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const;
749 template <typename Arg1>
750 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const;
751 inline typed::aff<pair<Domain2, Range2>, Anonymous> scale(const typed::val<Anonymous> &v) const;
752 inline typed::aff<pair<Domain2, Range2>, Anonymous> scale(long v) const;
753 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
754 inline typed::aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
755 inline typed::aff<pair<Domain2, Range2>, Anonymous> scale_down(long v) const;
756 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
757 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const;
758 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
759 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
760 template <typename Arg1>
761 inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
762 template <typename Arg1>
763 inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
764 inline typed::space<pair<Domain2, Range2>, Anonymous> space() const;
765 inline typed::aff<pair<Domain2, Range2>, Anonymous> sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const;
766 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
767 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
768 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
769 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
770 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
771 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
772 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
773 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
774 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
775 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
776 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> to_multi_pw_aff() const;
777 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> to_multi_union_pw_aff() const;
778 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> to_pw_multi_aff() const;
779 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_aff() const;
780 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_multi_aff() const;
781 inline typed::aff<pair<Domain2, Range2>, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
782 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const;
783 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const;
784 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
785 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
786 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
787 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
790 template <>
791 struct aff_list<Anonymous> : public isl::aff_list {
792 template <typename...>
793 friend struct aff;
794 template <typename...>
795 friend struct aff_list;
796 template <typename...>
797 friend struct basic_map;
798 template <typename...>
799 friend struct basic_set;
800 template <typename...>
801 friend struct fixed_box;
802 template <typename...>
803 friend struct id;
804 template <typename...>
805 friend struct id_list;
806 template <typename...>
807 friend struct map;
808 template <typename...>
809 friend struct map_list;
810 template <typename...>
811 friend struct multi_aff;
812 template <typename...>
813 friend struct multi_id;
814 template <typename...>
815 friend struct multi_pw_aff;
816 template <typename...>
817 friend struct multi_union_pw_aff;
818 template <typename...>
819 friend struct multi_val;
820 template <typename...>
821 friend struct point;
822 template <typename...>
823 friend struct pw_aff;
824 template <typename...>
825 friend struct pw_aff_list;
826 template <typename...>
827 friend struct pw_multi_aff;
828 template <typename...>
829 friend struct pw_multi_aff_list;
830 template <typename...>
831 friend struct set;
832 template <typename...>
833 friend struct set_list;
834 template <typename...>
835 friend struct space;
836 template <typename...>
837 friend struct union_map;
838 template <typename...>
839 friend struct union_pw_aff;
840 template <typename...>
841 friend struct union_pw_aff_list;
842 template <typename...>
843 friend struct union_pw_multi_aff;
844 template <typename...>
845 friend struct union_set;
846 template <typename...>
847 friend struct union_set_list;
848 template <typename...>
849 friend struct val;
850 template <typename...>
851 friend struct val_list;
853 aff_list() = default;
854 aff_list(const isl::aff_list &obj) : isl::aff_list(obj) {}
855 static aff_list from(const isl::aff_list &obj) {
856 return aff_list(obj);
858 inline explicit aff_list(const isl::ctx &ctx, int n);
859 inline explicit aff_list(const typed::aff<Anonymous> &el);
860 inline explicit aff_list(const isl::ctx &ctx, const std::string &str);
861 inline typed::aff_list<Anonymous> add(const typed::aff<Anonymous> &el) const;
862 inline typed::aff<Anonymous> at(int index) const;
863 inline typed::aff<Anonymous> get_at(int index) const = delete;
864 inline typed::aff_list<Anonymous> drop(unsigned int first, unsigned int n) const;
865 inline void foreach(const std::function<void(typed::aff<Anonymous>)> &fn) const;
866 inline void foreach_scc(const std::function<bool(typed::aff<Anonymous>, typed::aff<Anonymous>)> &follows, const std::function<void(typed::aff_list<Anonymous>)> &fn) const;
867 inline typed::aff_list<Anonymous> set_at(int index, const typed::aff<Anonymous> &el) const;
870 template <typename Domain>
871 struct aff_list<Domain, Anonymous> : public isl::aff_list {
872 template <typename...>
873 friend struct aff;
874 template <typename...>
875 friend struct aff_list;
876 template <typename...>
877 friend struct basic_map;
878 template <typename...>
879 friend struct basic_set;
880 template <typename...>
881 friend struct fixed_box;
882 template <typename...>
883 friend struct id;
884 template <typename...>
885 friend struct id_list;
886 template <typename...>
887 friend struct map;
888 template <typename...>
889 friend struct map_list;
890 template <typename...>
891 friend struct multi_aff;
892 template <typename...>
893 friend struct multi_id;
894 template <typename...>
895 friend struct multi_pw_aff;
896 template <typename...>
897 friend struct multi_union_pw_aff;
898 template <typename...>
899 friend struct multi_val;
900 template <typename...>
901 friend struct point;
902 template <typename...>
903 friend struct pw_aff;
904 template <typename...>
905 friend struct pw_aff_list;
906 template <typename...>
907 friend struct pw_multi_aff;
908 template <typename...>
909 friend struct pw_multi_aff_list;
910 template <typename...>
911 friend struct set;
912 template <typename...>
913 friend struct set_list;
914 template <typename...>
915 friend struct space;
916 template <typename...>
917 friend struct union_map;
918 template <typename...>
919 friend struct union_pw_aff;
920 template <typename...>
921 friend struct union_pw_aff_list;
922 template <typename...>
923 friend struct union_pw_multi_aff;
924 template <typename...>
925 friend struct union_set;
926 template <typename...>
927 friend struct union_set_list;
928 template <typename...>
929 friend struct val;
930 template <typename...>
931 friend struct val_list;
933 aff_list() = default;
934 template <typename Arg1,
935 typename std::enable_if<
936 std::is_base_of<Domain, Arg1>{},
937 bool>::type = true>
938 aff_list(const aff_list<Arg1, Anonymous> &obj) : isl::aff_list(obj) {}
939 private:
940 template <typename base,
941 typename std::enable_if<
942 std::is_same<base, isl::aff_list>{}, bool>::type = true>
943 aff_list(const base &obj) : isl::aff_list(obj) {}
944 public:
945 static aff_list from(const isl::aff_list &obj) {
946 return aff_list(obj);
948 inline explicit aff_list(const isl::ctx &ctx, int n);
949 inline explicit aff_list(const typed::aff<Domain, Anonymous> &el);
950 inline explicit aff_list(const isl::ctx &ctx, const std::string &str);
951 inline typed::aff_list<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &el) const;
952 inline typed::aff<Domain, Anonymous> at(int index) const;
953 inline typed::aff<Domain, Anonymous> get_at(int index) const = delete;
954 inline typed::aff_list<Domain, Anonymous> drop(unsigned int first, unsigned int n) const;
955 inline void foreach(const std::function<void(typed::aff<Domain, Anonymous>)> &fn) const;
956 inline void foreach_scc(const std::function<bool(typed::aff<Domain, Anonymous>, typed::aff<Domain, Anonymous>)> &follows, const std::function<void(typed::aff_list<Domain, Anonymous>)> &fn) const;
957 inline typed::aff_list<Domain, Anonymous> set_at(int index, const typed::aff<Domain, Anonymous> &el) const;
960 template <typename Domain, typename Range>
961 struct basic_map<Domain, Range> : public isl::basic_map {
962 template <typename...>
963 friend struct aff;
964 template <typename...>
965 friend struct aff_list;
966 template <typename...>
967 friend struct basic_map;
968 template <typename...>
969 friend struct basic_set;
970 template <typename...>
971 friend struct fixed_box;
972 template <typename...>
973 friend struct id;
974 template <typename...>
975 friend struct id_list;
976 template <typename...>
977 friend struct map;
978 template <typename...>
979 friend struct map_list;
980 template <typename...>
981 friend struct multi_aff;
982 template <typename...>
983 friend struct multi_id;
984 template <typename...>
985 friend struct multi_pw_aff;
986 template <typename...>
987 friend struct multi_union_pw_aff;
988 template <typename...>
989 friend struct multi_val;
990 template <typename...>
991 friend struct point;
992 template <typename...>
993 friend struct pw_aff;
994 template <typename...>
995 friend struct pw_aff_list;
996 template <typename...>
997 friend struct pw_multi_aff;
998 template <typename...>
999 friend struct pw_multi_aff_list;
1000 template <typename...>
1001 friend struct set;
1002 template <typename...>
1003 friend struct set_list;
1004 template <typename...>
1005 friend struct space;
1006 template <typename...>
1007 friend struct union_map;
1008 template <typename...>
1009 friend struct union_pw_aff;
1010 template <typename...>
1011 friend struct union_pw_aff_list;
1012 template <typename...>
1013 friend struct union_pw_multi_aff;
1014 template <typename...>
1015 friend struct union_set;
1016 template <typename...>
1017 friend struct union_set_list;
1018 template <typename...>
1019 friend struct val;
1020 template <typename...>
1021 friend struct val_list;
1023 basic_map() = default;
1024 template <typename Arg1, typename Arg2,
1025 typename std::enable_if<
1026 std::is_base_of<Domain, Arg1>{} &&
1027 std::is_base_of<Range, Arg2>{},
1028 bool>::type = true>
1029 basic_map(const basic_map<Arg1, Arg2> &obj) : isl::basic_map(obj) {}
1030 private:
1031 template <typename base,
1032 typename std::enable_if<
1033 std::is_same<base, isl::basic_map>{}, bool>::type = true>
1034 basic_map(const base &obj) : isl::basic_map(obj) {}
1035 public:
1036 static basic_map from(const isl::basic_map &obj) {
1037 return basic_map(obj);
1039 inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
1040 template <typename Domain2>
1041 inline typed::basic_map<Domain2, Range> apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const;
1042 template <typename Domain2>
1043 inline typed::map<Domain2, Range> apply_domain(const typed::map<Domain, Domain2> &map2) const;
1044 template <typename Domain2>
1045 inline typed::union_map<Domain2, Range> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
1046 template <typename Range2>
1047 inline typed::basic_map<Domain, Range2> apply_range(const typed::basic_map<Range, Range2> &bmap2) const;
1048 template <typename Range2>
1049 inline typed::map<Domain, Range2> apply_range(const typed::map<Range, Range2> &map2) const;
1050 template <typename Range2>
1051 inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Range, Range2> &umap2) const;
1052 inline typed::map<Domain, Range> as_map() const;
1053 inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
1054 inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
1055 inline typed::union_pw_multi_aff<Domain, Range> as_union_pw_multi_aff() const;
1056 inline typed::set<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
1057 inline typed::set<Domain> bind_range(const typed::multi_id<Range> &tuple) const;
1058 inline typed::map<Domain, Range> coalesce() const;
1059 inline typed::map<Domain, Range> curry() const = delete;
1060 inline typed::basic_set<Domain, Range> deltas() const = delete;
1061 inline typed::basic_map<Domain, Range> detect_equalities() const;
1062 inline typed::set<Domain> domain() const;
1063 inline typed::map<Domain, Range> domain_factor_domain() const = delete;
1064 inline typed::map<Domain, Range> domain_factor_range() const = delete;
1065 inline typed::union_map<pair<Domain, Range>, Domain> domain_map() const;
1066 inline typed::union_pw_multi_aff<pair<Domain, Range>, Domain> domain_map_union_pw_multi_aff() const;
1067 template <typename Domain2>
1068 inline typed::map<pair<Domain, Domain2>, Range> domain_product(const typed::map<Domain2, Range> &map2) const;
1069 template <typename Domain2>
1070 inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::union_map<Domain2, Range> &umap2) const;
1071 inline typed::map<Domain, Range> domain_reverse() const = delete;
1072 inline typed::map<Domain, Range> drop_unused_params() const;
1073 inline typed::map<Domain, Range> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
1074 inline typed::union_map<Domain, Range> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
1075 inline bool every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const;
1076 inline typed::map<Domain, Range> extract_map(const typed::space<Domain, Range> &space) const;
1077 inline typed::basic_map<Domain, Range> flatten_domain() const = delete;
1078 inline typed::basic_map<Domain, Range> flatten_range() const = delete;
1079 inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const;
1080 inline void foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const;
1081 inline typed::basic_map<Domain, Range> gist(const typed::basic_map<Domain, Range> &context) const;
1082 inline typed::map<Domain, Range> gist(const typed::map<Domain, Range> &context) const;
1083 inline typed::union_map<Domain, Range> gist(const typed::union_map<Domain, Range> &context) const;
1084 inline typed::map<Domain, Range> gist_domain(const typed::set<Domain> &context) const;
1085 inline typed::union_map<Domain, Range> gist_domain(const typed::union_set<Domain> &uset) const;
1086 inline typed::map<Domain, Range> gist_params(const typed::set<> &context) const;
1087 inline typed::basic_map<Domain, Range> intersect(const typed::basic_map<Domain, Range> &bmap2) const;
1088 inline typed::map<Domain, Range> intersect(const typed::map<Domain, Range> &map2) const;
1089 inline typed::union_map<Domain, Range> intersect(const typed::union_map<Domain, Range> &umap2) const;
1090 inline typed::basic_map<Domain, Range> intersect_domain(const typed::basic_set<Domain> &bset) const;
1091 inline typed::map<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
1092 inline typed::union_map<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
1093 inline typed::union_map<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
1094 inline typed::basic_map<Domain, Range> intersect_domain(const typed::point<Domain> &bset) const;
1095 inline typed::map<Domain, Range> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
1096 inline typed::union_map<Domain, Range> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
1097 inline typed::basic_map<Domain, Range> intersect_params(const typed::basic_set<> &bset) const;
1098 inline typed::map<Domain, Range> intersect_params(const typed::set<> &params) const;
1099 inline typed::basic_map<Domain, Range> intersect_params(const typed::point<> &bset) const;
1100 inline typed::basic_map<Domain, Range> intersect_range(const typed::basic_set<Range> &bset) const;
1101 inline typed::map<Domain, Range> intersect_range(const typed::set<Range> &set) const;
1102 inline typed::union_map<Domain, Range> intersect_range(const typed::space<Range> &space) const;
1103 inline typed::union_map<Domain, Range> intersect_range(const typed::union_set<Range> &uset) const;
1104 inline typed::basic_map<Domain, Range> intersect_range(const typed::point<Range> &bset) const;
1105 inline typed::map<Domain, Range> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
1106 inline typed::union_map<Domain, Range> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
1107 inline typed::map<Domain, Range> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
1108 inline typed::map<Domain, Range> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
1109 inline typed::map<Domain, Range> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
1110 inline typed::map<Domain, Range> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
1111 inline typed::map<Domain, Range> lexmax() const;
1112 inline typed::pw_multi_aff<Domain, Range> lexmax_pw_multi_aff() const;
1113 inline typed::map<Domain, Range> lexmin() const;
1114 inline typed::pw_multi_aff<Domain, Range> lexmin_pw_multi_aff() const;
1115 inline typed::map<Domain, Range> lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const;
1116 inline typed::map_list<Domain, Range> map_list() const;
1117 inline typed::multi_pw_aff<Domain, Range> max_multi_pw_aff() const;
1118 inline typed::multi_pw_aff<Domain, Range> min_multi_pw_aff() const;
1119 inline typed::set<> params() const;
1120 template <typename Domain2>
1121 inline typed::map<Domain2, Range> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
1122 template <typename Domain2>
1123 inline typed::map<Domain2, Range> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
1124 template <typename Domain2>
1125 inline typed::map<Domain2, Range> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
1126 template <typename Domain2>
1127 inline typed::union_map<Domain2, Range> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
1128 template <typename Range2>
1129 inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Range> &ma) const;
1130 template <typename Range2>
1131 inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const;
1132 template <typename Range2>
1133 inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const;
1134 template <typename Domain2, typename Range2>
1135 inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
1136 template <typename Domain2, typename Range2>
1137 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
1138 inline typed::map<Domain, Range> project_out_all_params() const;
1139 inline typed::map<Domain, Range> project_out_param(const typed::id<Anonymous> &id) const;
1140 inline typed::map<Domain, Range> project_out_param(const std::string &id) const;
1141 inline typed::map<Domain, Range> project_out_param(const typed::id_list<Anonymous> &list) const;
1142 inline typed::set<Range> range() const;
1143 inline typed::map<Domain, Range> range_factor_domain() const = delete;
1144 inline typed::map<Domain, Range> range_factor_range() const = delete;
1145 inline typed::fixed_box<Domain, Range> range_lattice_tile() const;
1146 inline typed::union_map<pair<Domain, Range>, Range> range_map() const;
1147 template <typename Range2>
1148 inline typed::map<Domain, pair<Range, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
1149 template <typename Range2>
1150 inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
1151 inline typed::map<Domain, Range> range_reverse() const = delete;
1152 inline typed::fixed_box<Domain, Range> range_simple_fixed_box_hull() const;
1153 inline typed::basic_map<Range, Domain> reverse() const;
1154 template <typename Domain2>
1155 inline typed::map<Domain2, Range> set_domain_tuple(const typed::id<Anonymous> &id) const;
1156 template <typename Domain2>
1157 inline typed::map<Domain2, Range> set_domain_tuple(const std::string &id) const;
1158 template <typename Range2>
1159 inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
1160 template <typename Range2>
1161 inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
1162 inline typed::space<Domain, Range> space() const;
1163 inline typed::map<Domain, Range> subtract(const typed::map<Domain, Range> &map2) const;
1164 inline typed::union_map<Domain, Range> subtract(const typed::union_map<Domain, Range> &umap2) const;
1165 inline typed::union_map<Domain, Range> subtract_domain(const typed::union_set<Domain> &dom) const;
1166 inline typed::union_map<Domain, Range> subtract_range(const typed::union_set<Range> &dom) const;
1167 inline typed::union_map<Domain, Range> to_union_map() const;
1168 inline typed::map<Domain, Range> uncurry() const = delete;
1169 inline typed::map<Domain, Range> unite(const typed::basic_map<Domain, Range> &bmap2) const;
1170 inline typed::map<Domain, Range> unite(const typed::map<Domain, Range> &map2) const;
1171 inline typed::union_map<Domain, Range> unite(const typed::union_map<Domain, Range> &umap2) const;
1172 inline typed::map<Domain, Range> upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const;
1173 inline typed::set<pair<Domain, Range>> wrap() const;
1176 template <typename Domain, typename Range, typename Range2>
1177 struct basic_map<pair<Domain, Range>, Range2> : public isl::basic_map {
1178 template <typename...>
1179 friend struct aff;
1180 template <typename...>
1181 friend struct aff_list;
1182 template <typename...>
1183 friend struct basic_map;
1184 template <typename...>
1185 friend struct basic_set;
1186 template <typename...>
1187 friend struct fixed_box;
1188 template <typename...>
1189 friend struct id;
1190 template <typename...>
1191 friend struct id_list;
1192 template <typename...>
1193 friend struct map;
1194 template <typename...>
1195 friend struct map_list;
1196 template <typename...>
1197 friend struct multi_aff;
1198 template <typename...>
1199 friend struct multi_id;
1200 template <typename...>
1201 friend struct multi_pw_aff;
1202 template <typename...>
1203 friend struct multi_union_pw_aff;
1204 template <typename...>
1205 friend struct multi_val;
1206 template <typename...>
1207 friend struct point;
1208 template <typename...>
1209 friend struct pw_aff;
1210 template <typename...>
1211 friend struct pw_aff_list;
1212 template <typename...>
1213 friend struct pw_multi_aff;
1214 template <typename...>
1215 friend struct pw_multi_aff_list;
1216 template <typename...>
1217 friend struct set;
1218 template <typename...>
1219 friend struct set_list;
1220 template <typename...>
1221 friend struct space;
1222 template <typename...>
1223 friend struct union_map;
1224 template <typename...>
1225 friend struct union_pw_aff;
1226 template <typename...>
1227 friend struct union_pw_aff_list;
1228 template <typename...>
1229 friend struct union_pw_multi_aff;
1230 template <typename...>
1231 friend struct union_set;
1232 template <typename...>
1233 friend struct union_set_list;
1234 template <typename...>
1235 friend struct val;
1236 template <typename...>
1237 friend struct val_list;
1239 basic_map() = default;
1240 template <typename Arg1, typename Arg2, typename Arg3,
1241 typename std::enable_if<
1242 std::is_base_of<Domain, Arg1>{} &&
1243 std::is_base_of<Range, Arg2>{} &&
1244 std::is_base_of<Range2, Arg3>{},
1245 bool>::type = true>
1246 basic_map(const basic_map<pair<Arg1, Arg2>, Arg3> &obj) : isl::basic_map(obj) {}
1247 private:
1248 template <typename base,
1249 typename std::enable_if<
1250 std::is_same<base, isl::basic_map>{}, bool>::type = true>
1251 basic_map(const base &obj) : isl::basic_map(obj) {}
1252 public:
1253 static basic_map from(const isl::basic_map &obj) {
1254 return basic_map(obj);
1256 inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
1257 template <typename Domain2>
1258 inline typed::basic_map<Domain2, Range2> apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &bmap2) const;
1259 template <typename Domain2>
1260 inline typed::map<Domain2, Range2> apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const;
1261 template <typename Domain2>
1262 inline typed::union_map<Domain2, Range2> apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const;
1263 template <typename Arg3>
1264 inline typed::basic_map<pair<Domain, Range>, Arg3> apply_range(const typed::basic_map<Range2, Arg3> &bmap2) const;
1265 template <typename Arg3>
1266 inline typed::map<pair<Domain, Range>, Arg3> apply_range(const typed::map<Range2, Arg3> &map2) const;
1267 template <typename Arg3>
1268 inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::union_map<Range2, Arg3> &umap2) const;
1269 inline typed::map<pair<Domain, Range>, Range2> as_map() const;
1270 inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> as_multi_union_pw_aff() const;
1271 inline typed::pw_multi_aff<pair<Domain, Range>, Range2> as_pw_multi_aff() const;
1272 inline typed::union_pw_multi_aff<pair<Domain, Range>, Range2> as_union_pw_multi_aff() const;
1273 inline typed::set<Range2> bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const;
1274 inline typed::set<pair<Domain, Range>> bind_range(const typed::multi_id<Range2> &tuple) const;
1275 inline typed::map<pair<Domain, Range>, Range2> coalesce() const;
1276 inline typed::map<Domain, pair<Range, Range2>> curry() const;
1277 inline typed::basic_set<pair<Domain, Range>, Range2> deltas() const = delete;
1278 inline typed::basic_map<pair<Domain, Range>, Range2> detect_equalities() const;
1279 inline typed::set<pair<Domain, Range>> domain() const;
1280 inline typed::map<Domain, Range2> domain_factor_domain() const;
1281 inline typed::map<Range, Range2> domain_factor_range() const;
1282 inline typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map() const;
1283 inline typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_union_pw_multi_aff() const;
1284 template <typename Domain2>
1285 inline typed::map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::map<Domain2, Range2> &map2) const;
1286 template <typename Domain2>
1287 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::union_map<Domain2, Range2> &umap2) const;
1288 inline typed::map<pair<Range, Domain>, Range2> domain_reverse() const;
1289 inline typed::map<pair<Domain, Range>, Range2> drop_unused_params() const;
1290 inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
1291 inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
1292 inline bool every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const;
1293 inline typed::map<pair<Domain, Range>, Range2> extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const;
1294 inline typed::basic_map<Anonymous, Range2> flatten_domain() const;
1295 inline typed::basic_map<pair<Domain, Range>, Range2> flatten_range() const = delete;
1296 inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const;
1297 inline void foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const;
1298 inline typed::basic_map<pair<Domain, Range>, Range2> gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const;
1299 inline typed::map<pair<Domain, Range>, Range2> gist(const typed::map<pair<Domain, Range>, Range2> &context) const;
1300 inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const;
1301 inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::set<pair<Domain, Range>> &context) const;
1302 inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
1303 inline typed::map<pair<Domain, Range>, Range2> gist_params(const typed::set<> &context) const;
1304 inline typed::basic_map<pair<Domain, Range>, Range2> intersect(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const;
1305 inline typed::map<pair<Domain, Range>, Range2> intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const;
1306 inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
1307 inline typed::basic_map<pair<Domain, Range>, Range2> intersect_domain(const typed::basic_set<pair<Domain, Range>> &bset) const;
1308 inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::set<pair<Domain, Range>> &set) const;
1309 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::space<pair<Domain, Range>> &space) const;
1310 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
1311 inline typed::basic_map<pair<Domain, Range>, Range2> intersect_domain(const typed::point<pair<Domain, Range>> &bset) const;
1312 inline typed::map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::set<Domain> &domain) const;
1313 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::union_set<Domain> &domain) const;
1314 inline typed::basic_map<pair<Domain, Range>, Range2> intersect_params(const typed::basic_set<> &bset) const;
1315 inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::set<> &params) const;
1316 inline typed::basic_map<pair<Domain, Range>, Range2> intersect_params(const typed::point<> &bset) const;
1317 inline typed::basic_map<pair<Domain, Range>, Range2> intersect_range(const typed::basic_set<Range2> &bset) const;
1318 inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::set<Range2> &set) const;
1319 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::space<Range2> &space) const;
1320 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::union_set<Range2> &uset) const;
1321 inline typed::basic_map<pair<Domain, Range>, Range2> intersect_range(const typed::point<Range2> &bset) const;
1322 inline typed::map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
1323 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
1324 inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
1325 inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
1326 inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
1327 inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
1328 inline typed::map<pair<Domain, Range>, Range2> lexmax() const;
1329 inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmax_pw_multi_aff() const;
1330 inline typed::map<pair<Domain, Range>, Range2> lexmin() const;
1331 inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmin_pw_multi_aff() const;
1332 inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const;
1333 inline typed::map_list<pair<Domain, Range>, Range2> map_list() const;
1334 inline typed::multi_pw_aff<pair<Domain, Range>, Range2> max_multi_pw_aff() const;
1335 inline typed::multi_pw_aff<pair<Domain, Range>, Range2> min_multi_pw_aff() const;
1336 inline typed::set<> params() const;
1337 template <typename Domain2>
1338 inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
1339 template <typename Domain2>
1340 inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
1341 template <typename Domain2>
1342 inline typed::map<Domain2, Range2> preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
1343 template <typename Domain2>
1344 inline typed::union_map<Domain2, Range2> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
1345 template <typename Arg3>
1346 inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const;
1347 template <typename Arg3>
1348 inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const;
1349 template <typename Arg3>
1350 inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const;
1351 template <typename Domain2, typename Arg3>
1352 inline typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
1353 template <typename Domain2, typename Arg3>
1354 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
1355 inline typed::map<pair<Domain, Range>, Range2> project_out_all_params() const;
1356 inline typed::map<pair<Domain, Range>, Range2> project_out_param(const typed::id<Anonymous> &id) const;
1357 inline typed::map<pair<Domain, Range>, Range2> project_out_param(const std::string &id) const;
1358 inline typed::map<pair<Domain, Range>, Range2> project_out_param(const typed::id_list<Anonymous> &list) const;
1359 inline typed::set<Range2> range() const;
1360 inline typed::map<pair<Domain, Range>, Range2> range_factor_domain() const = delete;
1361 inline typed::map<pair<Domain, Range>, Range2> range_factor_range() const = delete;
1362 inline typed::fixed_box<pair<Domain, Range>, Range2> range_lattice_tile() const;
1363 inline typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> range_map() const;
1364 template <typename Arg3>
1365 inline typed::map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const;
1366 template <typename Arg3>
1367 inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const;
1368 inline typed::map<pair<Domain, Range>, Range2> range_reverse() const = delete;
1369 inline typed::fixed_box<pair<Domain, Range>, Range2> range_simple_fixed_box_hull() const;
1370 inline typed::basic_map<Range2, pair<Domain, Range>> reverse() const;
1371 inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const typed::id<> &id) const = delete;
1372 inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const std::string &id) const = delete;
1373 template <typename Arg2>
1374 inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const typed::id<Anonymous> &id) const;
1375 template <typename Arg2>
1376 inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const std::string &id) const;
1377 inline typed::space<pair<Domain, Range>, Range2> space() const;
1378 inline typed::map<pair<Domain, Range>, Range2> subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const;
1379 inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
1380 inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const;
1381 inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::union_set<Range2> &dom) const;
1382 inline typed::union_map<pair<Domain, Range>, Range2> to_union_map() const;
1383 inline typed::map<pair<Domain, Range>, Range2> uncurry() const = delete;
1384 inline typed::map<pair<Domain, Range>, Range2> unite(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const;
1385 inline typed::map<pair<Domain, Range>, Range2> unite(const typed::map<pair<Domain, Range>, Range2> &map2) const;
1386 inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
1387 inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const;
1388 inline typed::set<pair<pair<Domain, Range>, Range2>> wrap() const;
1391 template <typename Domain>
1392 struct basic_map<Domain, Domain> : public isl::basic_map {
1393 template <typename...>
1394 friend struct aff;
1395 template <typename...>
1396 friend struct aff_list;
1397 template <typename...>
1398 friend struct basic_map;
1399 template <typename...>
1400 friend struct basic_set;
1401 template <typename...>
1402 friend struct fixed_box;
1403 template <typename...>
1404 friend struct id;
1405 template <typename...>
1406 friend struct id_list;
1407 template <typename...>
1408 friend struct map;
1409 template <typename...>
1410 friend struct map_list;
1411 template <typename...>
1412 friend struct multi_aff;
1413 template <typename...>
1414 friend struct multi_id;
1415 template <typename...>
1416 friend struct multi_pw_aff;
1417 template <typename...>
1418 friend struct multi_union_pw_aff;
1419 template <typename...>
1420 friend struct multi_val;
1421 template <typename...>
1422 friend struct point;
1423 template <typename...>
1424 friend struct pw_aff;
1425 template <typename...>
1426 friend struct pw_aff_list;
1427 template <typename...>
1428 friend struct pw_multi_aff;
1429 template <typename...>
1430 friend struct pw_multi_aff_list;
1431 template <typename...>
1432 friend struct set;
1433 template <typename...>
1434 friend struct set_list;
1435 template <typename...>
1436 friend struct space;
1437 template <typename...>
1438 friend struct union_map;
1439 template <typename...>
1440 friend struct union_pw_aff;
1441 template <typename...>
1442 friend struct union_pw_aff_list;
1443 template <typename...>
1444 friend struct union_pw_multi_aff;
1445 template <typename...>
1446 friend struct union_set;
1447 template <typename...>
1448 friend struct union_set_list;
1449 template <typename...>
1450 friend struct val;
1451 template <typename...>
1452 friend struct val_list;
1454 basic_map() = default;
1455 template <typename Arg1,
1456 typename std::enable_if<
1457 std::is_base_of<Domain, Arg1>{},
1458 bool>::type = true>
1459 basic_map(const basic_map<Arg1, Arg1> &obj) : isl::basic_map(obj) {}
1460 private:
1461 template <typename base,
1462 typename std::enable_if<
1463 std::is_same<base, isl::basic_map>{}, bool>::type = true>
1464 basic_map(const base &obj) : isl::basic_map(obj) {}
1465 public:
1466 static basic_map from(const isl::basic_map &obj) {
1467 return basic_map(obj);
1469 inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
1470 template <typename Domain2>
1471 inline typed::basic_map<Domain2, Domain> apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const;
1472 template <typename Domain2>
1473 inline typed::map<Domain2, Domain> apply_domain(const typed::map<Domain, Domain2> &map2) const;
1474 template <typename Domain2>
1475 inline typed::union_map<Domain2, Domain> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
1476 template <typename Range2>
1477 inline typed::basic_map<Domain, Range2> apply_range(const typed::basic_map<Domain, Range2> &bmap2) const;
1478 template <typename Range2>
1479 inline typed::map<Domain, Range2> apply_range(const typed::map<Domain, Range2> &map2) const;
1480 template <typename Range2>
1481 inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Domain, Range2> &umap2) const;
1482 inline typed::map<Domain, Domain> as_map() const;
1483 inline typed::multi_union_pw_aff<Domain, Domain> as_multi_union_pw_aff() const;
1484 inline typed::pw_multi_aff<Domain, Domain> as_pw_multi_aff() const;
1485 inline typed::union_pw_multi_aff<Domain, Domain> as_union_pw_multi_aff() const;
1486 inline typed::set<Domain> bind_domain(const typed::multi_id<Domain> &tuple) const;
1487 inline typed::set<Domain> bind_range(const typed::multi_id<Domain> &tuple) const;
1488 inline typed::map<Domain, Domain> coalesce() const;
1489 inline typed::map<Domain, Domain> curry() const = delete;
1490 inline typed::basic_set<Domain> deltas() const;
1491 inline typed::basic_map<Domain, Domain> detect_equalities() const;
1492 inline typed::set<Domain> domain() const;
1493 inline typed::map<Domain, Domain> domain_factor_domain() const = delete;
1494 inline typed::map<Domain, Domain> domain_factor_range() const = delete;
1495 inline typed::union_map<pair<Domain, Domain>, Domain> domain_map() const;
1496 inline typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> domain_map_union_pw_multi_aff() const;
1497 template <typename Domain2>
1498 inline typed::map<pair<Domain, Domain2>, Domain> domain_product(const typed::map<Domain2, Domain> &map2) const;
1499 template <typename Domain2>
1500 inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::union_map<Domain2, Domain> &umap2) const;
1501 inline typed::map<Domain, Domain> domain_reverse() const = delete;
1502 inline typed::map<Domain, Domain> drop_unused_params() const;
1503 template <typename Range>
1504 inline typed::map<Domain, Domain> eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
1505 template <typename Range>
1506 inline typed::union_map<Domain, Domain> eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const;
1507 inline bool every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const;
1508 inline typed::map<Domain, Domain> extract_map(const typed::space<Domain, Domain> &space) const;
1509 inline typed::basic_map<Domain, Domain> flatten_domain() const = delete;
1510 inline typed::basic_map<Domain, Domain> flatten_range() const = delete;
1511 inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const;
1512 inline void foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const;
1513 inline typed::basic_map<Domain, Domain> gist(const typed::basic_map<Domain, Domain> &context) const;
1514 inline typed::map<Domain, Domain> gist(const typed::map<Domain, Domain> &context) const;
1515 inline typed::union_map<Domain, Domain> gist(const typed::union_map<Domain, Domain> &context) const;
1516 inline typed::map<Domain, Domain> gist_domain(const typed::set<Domain> &context) const;
1517 inline typed::union_map<Domain, Domain> gist_domain(const typed::union_set<Domain> &uset) const;
1518 inline typed::map<Domain, Domain> gist_params(const typed::set<> &context) const;
1519 inline typed::basic_map<Domain, Domain> intersect(const typed::basic_map<Domain, Domain> &bmap2) const;
1520 inline typed::map<Domain, Domain> intersect(const typed::map<Domain, Domain> &map2) const;
1521 inline typed::union_map<Domain, Domain> intersect(const typed::union_map<Domain, Domain> &umap2) const;
1522 inline typed::basic_map<Domain, Domain> intersect_domain(const typed::basic_set<Domain> &bset) const;
1523 inline typed::map<Domain, Domain> intersect_domain(const typed::set<Domain> &set) const;
1524 inline typed::union_map<Domain, Domain> intersect_domain(const typed::space<Domain> &space) const;
1525 inline typed::union_map<Domain, Domain> intersect_domain(const typed::union_set<Domain> &uset) const;
1526 inline typed::basic_map<Domain, Domain> intersect_domain(const typed::point<Domain> &bset) const;
1527 inline typed::map<Domain, Domain> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
1528 inline typed::union_map<Domain, Domain> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
1529 inline typed::basic_map<Domain, Domain> intersect_params(const typed::basic_set<> &bset) const;
1530 inline typed::map<Domain, Domain> intersect_params(const typed::set<> &params) const;
1531 inline typed::basic_map<Domain, Domain> intersect_params(const typed::point<> &bset) const;
1532 inline typed::basic_map<Domain, Domain> intersect_range(const typed::basic_set<Domain> &bset) const;
1533 inline typed::map<Domain, Domain> intersect_range(const typed::set<Domain> &set) const;
1534 inline typed::union_map<Domain, Domain> intersect_range(const typed::space<Domain> &space) const;
1535 inline typed::union_map<Domain, Domain> intersect_range(const typed::union_set<Domain> &uset) const;
1536 inline typed::basic_map<Domain, Domain> intersect_range(const typed::point<Domain> &bset) const;
1537 inline typed::map<Domain, Domain> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
1538 inline typed::union_map<Domain, Domain> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
1539 template <typename Range>
1540 inline typed::map<Domain, Domain> lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
1541 template <typename Range>
1542 inline typed::map<Domain, Domain> lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
1543 template <typename Range>
1544 inline typed::map<Domain, Domain> lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
1545 template <typename Range>
1546 inline typed::map<Domain, Domain> lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
1547 inline typed::map<Domain, Domain> lexmax() const;
1548 inline typed::pw_multi_aff<Domain, Domain> lexmax_pw_multi_aff() const;
1549 inline typed::map<Domain, Domain> lexmin() const;
1550 inline typed::pw_multi_aff<Domain, Domain> lexmin_pw_multi_aff() const;
1551 inline typed::map<Domain, Domain> lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const;
1552 inline typed::map_list<Domain, Domain> map_list() const;
1553 inline typed::multi_pw_aff<Domain, Domain> max_multi_pw_aff() const;
1554 inline typed::multi_pw_aff<Domain, Domain> min_multi_pw_aff() const;
1555 inline typed::set<> params() const;
1556 template <typename Domain2>
1557 inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
1558 template <typename Domain2>
1559 inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
1560 template <typename Domain2>
1561 inline typed::map<Domain2, Domain> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
1562 template <typename Domain2>
1563 inline typed::union_map<Domain2, Domain> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
1564 template <typename Range2>
1565 inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Domain> &ma) const;
1566 template <typename Range2>
1567 inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const;
1568 template <typename Range2>
1569 inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const;
1570 template <typename Domain2, typename Range2>
1571 inline typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
1572 template <typename Domain2, typename Range2>
1573 inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
1574 inline typed::map<Domain, Domain> project_out_all_params() const;
1575 inline typed::map<Domain, Domain> project_out_param(const typed::id<Anonymous> &id) const;
1576 inline typed::map<Domain, Domain> project_out_param(const std::string &id) const;
1577 inline typed::map<Domain, Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
1578 inline typed::set<Domain> range() const;
1579 inline typed::map<Domain, Domain> range_factor_domain() const = delete;
1580 inline typed::map<Domain, Domain> range_factor_range() const = delete;
1581 inline typed::fixed_box<Domain, Domain> range_lattice_tile() const;
1582 inline typed::union_map<pair<Domain, Domain>, Domain> range_map() const;
1583 template <typename Range2>
1584 inline typed::map<Domain, pair<Domain, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
1585 template <typename Range2>
1586 inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
1587 inline typed::map<Domain, Domain> range_reverse() const = delete;
1588 inline typed::fixed_box<Domain, Domain> range_simple_fixed_box_hull() const;
1589 inline typed::basic_map<Domain, Domain> reverse() const;
1590 template <typename Domain2>
1591 inline typed::map<Domain2, Domain> set_domain_tuple(const typed::id<Anonymous> &id) const;
1592 template <typename Domain2>
1593 inline typed::map<Domain2, Domain> set_domain_tuple(const std::string &id) const;
1594 template <typename Range2>
1595 inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
1596 template <typename Range2>
1597 inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
1598 inline typed::space<Domain, Domain> space() const;
1599 inline typed::map<Domain, Domain> subtract(const typed::map<Domain, Domain> &map2) const;
1600 inline typed::union_map<Domain, Domain> subtract(const typed::union_map<Domain, Domain> &umap2) const;
1601 inline typed::union_map<Domain, Domain> subtract_domain(const typed::union_set<Domain> &dom) const;
1602 inline typed::union_map<Domain, Domain> subtract_range(const typed::union_set<Domain> &dom) const;
1603 inline typed::union_map<Domain, Domain> to_union_map() const;
1604 inline typed::map<Domain, Domain> uncurry() const = delete;
1605 inline typed::map<Domain, Domain> unite(const typed::basic_map<Domain, Domain> &bmap2) const;
1606 inline typed::map<Domain, Domain> unite(const typed::map<Domain, Domain> &map2) const;
1607 inline typed::union_map<Domain, Domain> unite(const typed::union_map<Domain, Domain> &umap2) const;
1608 inline typed::map<Domain, Domain> upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const;
1609 inline typed::set<pair<Domain, Domain>> wrap() const;
1612 template <typename Domain, typename Range, typename Range2>
1613 struct basic_map<Domain, pair<Range, Range2>> : public isl::basic_map {
1614 template <typename...>
1615 friend struct aff;
1616 template <typename...>
1617 friend struct aff_list;
1618 template <typename...>
1619 friend struct basic_map;
1620 template <typename...>
1621 friend struct basic_set;
1622 template <typename...>
1623 friend struct fixed_box;
1624 template <typename...>
1625 friend struct id;
1626 template <typename...>
1627 friend struct id_list;
1628 template <typename...>
1629 friend struct map;
1630 template <typename...>
1631 friend struct map_list;
1632 template <typename...>
1633 friend struct multi_aff;
1634 template <typename...>
1635 friend struct multi_id;
1636 template <typename...>
1637 friend struct multi_pw_aff;
1638 template <typename...>
1639 friend struct multi_union_pw_aff;
1640 template <typename...>
1641 friend struct multi_val;
1642 template <typename...>
1643 friend struct point;
1644 template <typename...>
1645 friend struct pw_aff;
1646 template <typename...>
1647 friend struct pw_aff_list;
1648 template <typename...>
1649 friend struct pw_multi_aff;
1650 template <typename...>
1651 friend struct pw_multi_aff_list;
1652 template <typename...>
1653 friend struct set;
1654 template <typename...>
1655 friend struct set_list;
1656 template <typename...>
1657 friend struct space;
1658 template <typename...>
1659 friend struct union_map;
1660 template <typename...>
1661 friend struct union_pw_aff;
1662 template <typename...>
1663 friend struct union_pw_aff_list;
1664 template <typename...>
1665 friend struct union_pw_multi_aff;
1666 template <typename...>
1667 friend struct union_set;
1668 template <typename...>
1669 friend struct union_set_list;
1670 template <typename...>
1671 friend struct val;
1672 template <typename...>
1673 friend struct val_list;
1675 basic_map() = default;
1676 template <typename Arg1, typename Arg2, typename Arg3,
1677 typename std::enable_if<
1678 std::is_base_of<Domain, Arg1>{} &&
1679 std::is_base_of<Range, Arg2>{} &&
1680 std::is_base_of<Range2, Arg3>{},
1681 bool>::type = true>
1682 basic_map(const basic_map<Arg1, pair<Arg2, Arg3>> &obj) : isl::basic_map(obj) {}
1683 private:
1684 template <typename base,
1685 typename std::enable_if<
1686 std::is_same<base, isl::basic_map>{}, bool>::type = true>
1687 basic_map(const base &obj) : isl::basic_map(obj) {}
1688 public:
1689 static basic_map from(const isl::basic_map &obj) {
1690 return basic_map(obj);
1692 inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
1693 template <typename Domain2>
1694 inline typed::basic_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const;
1695 template <typename Domain2>
1696 inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<Domain, Domain2> &map2) const;
1697 template <typename Domain2>
1698 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
1699 template <typename Arg3>
1700 inline typed::basic_map<Domain, Arg3> apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &bmap2) const;
1701 template <typename Arg3>
1702 inline typed::map<Domain, Arg3> apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const;
1703 template <typename Arg3>
1704 inline typed::union_map<Domain, Arg3> apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const;
1705 inline typed::map<Domain, pair<Range, Range2>> as_map() const;
1706 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
1707 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
1708 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> as_union_pw_multi_aff() const;
1709 inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
1710 inline typed::set<Domain> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
1711 inline typed::map<Domain, pair<Range, Range2>> coalesce() const;
1712 inline typed::map<Domain, pair<Range, Range2>> curry() const = delete;
1713 inline typed::basic_set<Domain, pair<Range, Range2>> deltas() const = delete;
1714 inline typed::basic_map<Domain, pair<Range, Range2>> detect_equalities() const;
1715 inline typed::set<Domain> domain() const;
1716 inline typed::map<Domain, pair<Range, Range2>> domain_factor_domain() const = delete;
1717 inline typed::map<Domain, pair<Range, Range2>> domain_factor_range() const = delete;
1718 inline typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> domain_map() const;
1719 inline typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_union_pw_multi_aff() const;
1720 template <typename Domain2>
1721 inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
1722 template <typename Domain2>
1723 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
1724 inline typed::map<Domain, pair<Range, Range2>> domain_reverse() const = delete;
1725 inline typed::map<Domain, pair<Range, Range2>> drop_unused_params() const;
1726 inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
1727 inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
1728 inline bool every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const;
1729 inline typed::map<Domain, pair<Range, Range2>> extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const;
1730 inline typed::basic_map<Domain, pair<Range, Range2>> flatten_domain() const = delete;
1731 inline typed::basic_map<Domain, Anonymous> flatten_range() const;
1732 inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const;
1733 inline void foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const;
1734 inline typed::basic_map<Domain, pair<Range, Range2>> gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const;
1735 inline typed::map<Domain, pair<Range, Range2>> gist(const typed::map<Domain, pair<Range, Range2>> &context) const;
1736 inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const;
1737 inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::set<Domain> &context) const;
1738 inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::union_set<Domain> &uset) const;
1739 inline typed::map<Domain, pair<Range, Range2>> gist_params(const typed::set<> &context) const;
1740 inline typed::basic_map<Domain, pair<Range, Range2>> intersect(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const;
1741 inline typed::map<Domain, pair<Range, Range2>> intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const;
1742 inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
1743 inline typed::basic_map<Domain, pair<Range, Range2>> intersect_domain(const typed::basic_set<Domain> &bset) const;
1744 inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
1745 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
1746 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
1747 inline typed::basic_map<Domain, pair<Range, Range2>> intersect_domain(const typed::point<Domain> &bset) const;
1748 inline typed::map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
1749 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
1750 inline typed::basic_map<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &bset) const;
1751 inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
1752 inline typed::basic_map<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &bset) const;
1753 inline typed::basic_map<Domain, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const;
1754 inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
1755 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
1756 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
1757 inline typed::basic_map<Domain, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &bset) const;
1758 inline typed::map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::set<Range> &domain) const;
1759 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const;
1760 inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
1761 inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
1762 inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
1763 inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
1764 inline typed::map<Domain, pair<Range, Range2>> lexmax() const;
1765 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmax_pw_multi_aff() const;
1766 inline typed::map<Domain, pair<Range, Range2>> lexmin() const;
1767 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmin_pw_multi_aff() const;
1768 inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const;
1769 inline typed::map_list<Domain, pair<Range, Range2>> map_list() const;
1770 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max_multi_pw_aff() const;
1771 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min_multi_pw_aff() const;
1772 inline typed::set<> params() const;
1773 template <typename Domain2>
1774 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
1775 template <typename Domain2>
1776 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
1777 template <typename Domain2>
1778 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
1779 template <typename Domain2>
1780 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
1781 template <typename Arg3>
1782 inline typed::map<Domain, Arg3> preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const;
1783 template <typename Arg3>
1784 inline typed::map<Domain, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const;
1785 template <typename Arg3>
1786 inline typed::union_map<Domain, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const;
1787 template <typename Domain2, typename Arg3>
1788 inline typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
1789 template <typename Domain2, typename Arg3>
1790 inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
1791 inline typed::map<Domain, pair<Range, Range2>> project_out_all_params() const;
1792 inline typed::map<Domain, pair<Range, Range2>> project_out_param(const typed::id<Anonymous> &id) const;
1793 inline typed::map<Domain, pair<Range, Range2>> project_out_param(const std::string &id) const;
1794 inline typed::map<Domain, pair<Range, Range2>> project_out_param(const typed::id_list<Anonymous> &list) const;
1795 inline typed::set<pair<Range, Range2>> range() const;
1796 inline typed::map<Domain, Range> range_factor_domain() const;
1797 inline typed::map<Domain, Range2> range_factor_range() const;
1798 inline typed::fixed_box<Domain, pair<Range, Range2>> range_lattice_tile() const;
1799 inline typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
1800 template <typename Arg3>
1801 inline typed::map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::map<Domain, Arg3> &map2) const;
1802 template <typename Arg3>
1803 inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_map<Domain, Arg3> &umap2) const;
1804 inline typed::map<Domain, pair<Range2, Range>> range_reverse() const;
1805 inline typed::fixed_box<Domain, pair<Range, Range2>> range_simple_fixed_box_hull() const;
1806 inline typed::basic_map<pair<Range, Range2>, Domain> reverse() const;
1807 template <typename Domain2>
1808 inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const typed::id<Anonymous> &id) const;
1809 template <typename Domain2>
1810 inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const std::string &id) const;
1811 inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
1812 inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
1813 inline typed::space<Domain, pair<Range, Range2>> space() const;
1814 inline typed::map<Domain, pair<Range, Range2>> subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const;
1815 inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
1816 inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &dom) const;
1817 inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
1818 inline typed::union_map<Domain, pair<Range, Range2>> to_union_map() const;
1819 inline typed::map<pair<Domain, Range>, Range2> uncurry() const;
1820 inline typed::map<Domain, pair<Range, Range2>> unite(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const;
1821 inline typed::map<Domain, pair<Range, Range2>> unite(const typed::map<Domain, pair<Range, Range2>> &map2) const;
1822 inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
1823 inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const;
1824 inline typed::set<pair<Domain, pair<Range, Range2>>> wrap() const;
1827 template <typename T1, typename T2>
1828 struct basic_map<pair<T1, T2>, pair<T1, T2>> : public isl::basic_map {
1829 template <typename...>
1830 friend struct aff;
1831 template <typename...>
1832 friend struct aff_list;
1833 template <typename...>
1834 friend struct basic_map;
1835 template <typename...>
1836 friend struct basic_set;
1837 template <typename...>
1838 friend struct fixed_box;
1839 template <typename...>
1840 friend struct id;
1841 template <typename...>
1842 friend struct id_list;
1843 template <typename...>
1844 friend struct map;
1845 template <typename...>
1846 friend struct map_list;
1847 template <typename...>
1848 friend struct multi_aff;
1849 template <typename...>
1850 friend struct multi_id;
1851 template <typename...>
1852 friend struct multi_pw_aff;
1853 template <typename...>
1854 friend struct multi_union_pw_aff;
1855 template <typename...>
1856 friend struct multi_val;
1857 template <typename...>
1858 friend struct point;
1859 template <typename...>
1860 friend struct pw_aff;
1861 template <typename...>
1862 friend struct pw_aff_list;
1863 template <typename...>
1864 friend struct pw_multi_aff;
1865 template <typename...>
1866 friend struct pw_multi_aff_list;
1867 template <typename...>
1868 friend struct set;
1869 template <typename...>
1870 friend struct set_list;
1871 template <typename...>
1872 friend struct space;
1873 template <typename...>
1874 friend struct union_map;
1875 template <typename...>
1876 friend struct union_pw_aff;
1877 template <typename...>
1878 friend struct union_pw_aff_list;
1879 template <typename...>
1880 friend struct union_pw_multi_aff;
1881 template <typename...>
1882 friend struct union_set;
1883 template <typename...>
1884 friend struct union_set_list;
1885 template <typename...>
1886 friend struct val;
1887 template <typename...>
1888 friend struct val_list;
1890 basic_map() = default;
1891 template <typename Arg1, typename Arg2,
1892 typename std::enable_if<
1893 std::is_base_of<T1, Arg1>{} &&
1894 std::is_base_of<T2, Arg2>{},
1895 bool>::type = true>
1896 basic_map(const basic_map<pair<Arg1, Arg2>, pair<Arg1, Arg2>> &obj) : isl::basic_map(obj) {}
1897 private:
1898 template <typename base,
1899 typename std::enable_if<
1900 std::is_same<base, isl::basic_map>{}, bool>::type = true>
1901 basic_map(const base &obj) : isl::basic_map(obj) {}
1902 public:
1903 static basic_map from(const isl::basic_map &obj) {
1904 return basic_map(obj);
1906 inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
1907 template <typename Domain2>
1908 inline typed::basic_map<Domain2, pair<T1, T2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const;
1909 template <typename Domain2>
1910 inline typed::map<Domain2, pair<T1, T2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
1911 template <typename Domain2>
1912 inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
1913 template <typename Range2>
1914 inline typed::basic_map<pair<T1, T2>, Range2> apply_range(const typed::basic_map<pair<T1, T2>, Range2> &bmap2) const;
1915 template <typename Range2>
1916 inline typed::map<pair<T1, T2>, Range2> apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const;
1917 template <typename Range2>
1918 inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
1919 inline typed::map<pair<T1, T2>, pair<T1, T2>> as_map() const;
1920 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> as_multi_union_pw_aff() const;
1921 inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_pw_multi_aff() const;
1922 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_union_pw_multi_aff() const;
1923 inline typed::set<pair<T1, T2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
1924 inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const;
1925 inline typed::map<pair<T1, T2>, pair<T1, T2>> coalesce() const;
1926 inline typed::map<T1, pair<T2, pair<T1, T2>>> curry() const;
1927 inline typed::basic_set<pair<T1, T2>> deltas() const;
1928 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> detect_equalities() const;
1929 inline typed::set<pair<T1, T2>> domain() const;
1930 inline typed::map<T1, pair<T1, T2>> domain_factor_domain() const;
1931 inline typed::map<T2, pair<T1, T2>> domain_factor_range() const;
1932 inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map() const;
1933 inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
1934 template <typename Domain2>
1935 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const;
1936 template <typename Domain2>
1937 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const;
1938 inline typed::map<pair<T2, T1>, pair<T1, T2>> domain_reverse() const;
1939 inline typed::map<pair<T1, T2>, pair<T1, T2>> drop_unused_params() const;
1940 template <typename Range>
1941 inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
1942 template <typename Range>
1943 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const;
1944 inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const;
1945 inline typed::map<pair<T1, T2>, pair<T1, T2>> extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const;
1946 inline typed::basic_map<Anonymous, pair<T1, T2>> flatten_domain() const;
1947 inline typed::basic_map<pair<T1, T2>, Anonymous> flatten_range() const;
1948 inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
1949 inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
1950 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const;
1951 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const;
1952 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const;
1953 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
1954 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
1955 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_params(const typed::set<> &context) const;
1956 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const;
1957 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
1958 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
1959 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const;
1960 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
1961 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
1962 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
1963 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::point<pair<T1, T2>> &bset) const;
1964 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::set<T1> &domain) const;
1965 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const;
1966 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::basic_set<> &bset) const;
1967 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::set<> &params) const;
1968 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::point<> &bset) const;
1969 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::basic_set<pair<T1, T2>> &bset) const;
1970 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::set<pair<T1, T2>> &set) const;
1971 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::space<pair<T1, T2>> &space) const;
1972 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::union_set<pair<T1, T2>> &uset) const;
1973 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::point<pair<T1, T2>> &bset) const;
1974 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::set<T1> &domain) const;
1975 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::union_set<T1> &domain) const;
1976 template <typename Range>
1977 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
1978 template <typename Range>
1979 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
1980 template <typename Range>
1981 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
1982 template <typename Range>
1983 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
1984 inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmax() const;
1985 inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmax_pw_multi_aff() const;
1986 inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmin() const;
1987 inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmin_pw_multi_aff() const;
1988 inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
1989 inline typed::map_list<pair<T1, T2>, pair<T1, T2>> map_list() const;
1990 inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> max_multi_pw_aff() const;
1991 inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> min_multi_pw_aff() const;
1992 inline typed::set<> params() const;
1993 template <typename Domain2>
1994 inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
1995 template <typename Domain2>
1996 inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
1997 template <typename Domain2>
1998 inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
1999 template <typename Domain2>
2000 inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
2001 template <typename Range2>
2002 inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const;
2003 template <typename Range2>
2004 inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const;
2005 template <typename Range2>
2006 inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const;
2007 template <typename Domain2, typename Range2>
2008 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
2009 template <typename Domain2, typename Range2>
2010 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
2011 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_all_params() const;
2012 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_param(const typed::id<Anonymous> &id) const;
2013 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_param(const std::string &id) const;
2014 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_param(const typed::id_list<Anonymous> &list) const;
2015 inline typed::set<pair<T1, T2>> range() const;
2016 inline typed::map<pair<T1, T2>, T1> range_factor_domain() const;
2017 inline typed::map<pair<T1, T2>, T2> range_factor_range() const;
2018 inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_lattice_tile() const;
2019 inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> range_map() const;
2020 template <typename Range2>
2021 inline typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::map<pair<T1, T2>, Range2> &map2) const;
2022 template <typename Range2>
2023 inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
2024 inline typed::map<pair<T1, T2>, pair<T2, T1>> range_reverse() const;
2025 inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_simple_fixed_box_hull() const;
2026 inline typed::basic_map<pair<T1, T2>, pair<T1, T2>> reverse() const;
2027 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const typed::id<> &id) const = delete;
2028 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const std::string &id) const = delete;
2029 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const typed::id<> &id) const = delete;
2030 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const std::string &id) const = delete;
2031 inline typed::space<pair<T1, T2>, pair<T1, T2>> space() const;
2032 inline typed::map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
2033 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
2034 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
2035 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::union_set<pair<T1, T2>> &dom) const;
2036 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> to_union_map() const;
2037 inline typed::map<pair<pair<T1, T2>, T1>, T2> uncurry() const;
2038 inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const;
2039 inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
2040 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
2041 inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
2042 inline typed::set<pair<pair<T1, T2>, pair<T1, T2>>> wrap() const;
2045 template <typename T1, typename T2, typename Range, typename Range2>
2046 struct basic_map<pair<T1, T2>, pair<Range, Range2>> : public isl::basic_map {
2047 template <typename...>
2048 friend struct aff;
2049 template <typename...>
2050 friend struct aff_list;
2051 template <typename...>
2052 friend struct basic_map;
2053 template <typename...>
2054 friend struct basic_set;
2055 template <typename...>
2056 friend struct fixed_box;
2057 template <typename...>
2058 friend struct id;
2059 template <typename...>
2060 friend struct id_list;
2061 template <typename...>
2062 friend struct map;
2063 template <typename...>
2064 friend struct map_list;
2065 template <typename...>
2066 friend struct multi_aff;
2067 template <typename...>
2068 friend struct multi_id;
2069 template <typename...>
2070 friend struct multi_pw_aff;
2071 template <typename...>
2072 friend struct multi_union_pw_aff;
2073 template <typename...>
2074 friend struct multi_val;
2075 template <typename...>
2076 friend struct point;
2077 template <typename...>
2078 friend struct pw_aff;
2079 template <typename...>
2080 friend struct pw_aff_list;
2081 template <typename...>
2082 friend struct pw_multi_aff;
2083 template <typename...>
2084 friend struct pw_multi_aff_list;
2085 template <typename...>
2086 friend struct set;
2087 template <typename...>
2088 friend struct set_list;
2089 template <typename...>
2090 friend struct space;
2091 template <typename...>
2092 friend struct union_map;
2093 template <typename...>
2094 friend struct union_pw_aff;
2095 template <typename...>
2096 friend struct union_pw_aff_list;
2097 template <typename...>
2098 friend struct union_pw_multi_aff;
2099 template <typename...>
2100 friend struct union_set;
2101 template <typename...>
2102 friend struct union_set_list;
2103 template <typename...>
2104 friend struct val;
2105 template <typename...>
2106 friend struct val_list;
2108 basic_map() = default;
2109 template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
2110 typename std::enable_if<
2111 std::is_base_of<T1, Arg1>{} &&
2112 std::is_base_of<T2, Arg2>{} &&
2113 std::is_base_of<Range, Arg3>{} &&
2114 std::is_base_of<Range2, Arg4>{},
2115 bool>::type = true>
2116 basic_map(const basic_map<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::basic_map(obj) {}
2117 private:
2118 template <typename base,
2119 typename std::enable_if<
2120 std::is_same<base, isl::basic_map>{}, bool>::type = true>
2121 basic_map(const base &obj) : isl::basic_map(obj) {}
2122 public:
2123 static basic_map from(const isl::basic_map &obj) {
2124 return basic_map(obj);
2126 inline explicit basic_map(const isl::ctx &ctx, const std::string &str);
2127 template <typename Domain2>
2128 inline typed::basic_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const;
2129 template <typename Domain2>
2130 inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
2131 template <typename Domain2>
2132 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
2133 template <typename Arg2>
2134 inline typed::basic_map<pair<T1, T2>, Arg2> apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &bmap2) const;
2135 template <typename Arg2>
2136 inline typed::map<pair<T1, T2>, Arg2> apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const;
2137 template <typename Arg2>
2138 inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const;
2139 inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
2140 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
2141 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
2142 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_union_pw_multi_aff() const;
2143 inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
2144 inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
2145 inline typed::map<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
2146 inline typed::map<T1, pair<T2, pair<Range, Range2>>> curry() const;
2147 inline typed::basic_set<pair<T1, T2>, pair<Range, Range2>> deltas() const = delete;
2148 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> detect_equalities() const;
2149 inline typed::set<pair<T1, T2>> domain() const;
2150 inline typed::map<T1, pair<Range, Range2>> domain_factor_domain() const;
2151 inline typed::map<T2, pair<Range, Range2>> domain_factor_range() const;
2152 inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map() const;
2153 inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
2154 template <typename Domain2>
2155 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
2156 template <typename Domain2>
2157 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
2158 inline typed::map<pair<T2, T1>, pair<Range, Range2>> domain_reverse() const;
2159 inline typed::map<pair<T1, T2>, pair<Range, Range2>> drop_unused_params() const;
2160 inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
2161 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
2162 inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const;
2163 inline typed::map<pair<T1, T2>, pair<Range, Range2>> extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
2164 inline typed::basic_map<Anonymous, pair<Range, Range2>> flatten_domain() const;
2165 inline typed::basic_map<pair<T1, T2>, Anonymous> flatten_range() const;
2166 inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
2167 inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
2168 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
2169 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const;
2170 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
2171 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
2172 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
2173 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::set<> &context) const;
2174 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const;
2175 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
2176 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
2177 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const;
2178 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
2179 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
2180 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
2181 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::point<pair<T1, T2>> &bset) const;
2182 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<T1> &domain) const;
2183 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const;
2184 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &bset) const;
2185 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
2186 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &bset) const;
2187 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const;
2188 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
2189 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
2190 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
2191 inline typed::basic_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &bset) const;
2192 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::set<Range> &domain) const;
2193 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const;
2194 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
2195 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
2196 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
2197 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
2198 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmax() const;
2199 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmax_pw_multi_aff() const;
2200 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmin() const;
2201 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmin_pw_multi_aff() const;
2202 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
2203 inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> map_list() const;
2204 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max_multi_pw_aff() const;
2205 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min_multi_pw_aff() const;
2206 inline typed::set<> params() const;
2207 template <typename Domain2>
2208 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
2209 template <typename Domain2>
2210 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
2211 template <typename Domain2>
2212 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
2213 template <typename Domain2>
2214 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
2215 template <typename Arg2>
2216 inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const;
2217 template <typename Arg2>
2218 inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const;
2219 template <typename Arg2>
2220 inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const;
2221 template <typename Domain2, typename Arg2>
2222 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::map<Domain2, Arg2> &map2) const;
2223 template <typename Domain2, typename Arg2>
2224 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::union_map<Domain2, Arg2> &umap2) const;
2225 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_all_params() const;
2226 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const typed::id<Anonymous> &id) const;
2227 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const std::string &id) const;
2228 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const typed::id_list<Anonymous> &list) const;
2229 inline typed::set<pair<Range, Range2>> range() const;
2230 inline typed::map<pair<T1, T2>, Range> range_factor_domain() const;
2231 inline typed::map<pair<T1, T2>, Range2> range_factor_range() const;
2232 inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_lattice_tile() const;
2233 inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
2234 template <typename Arg2>
2235 inline typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const;
2236 template <typename Arg2>
2237 inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const;
2238 inline typed::map<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
2239 inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_simple_fixed_box_hull() const;
2240 inline typed::basic_map<pair<Range, Range2>, pair<T1, T2>> reverse() const;
2241 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const typed::id<> &id) const = delete;
2242 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const std::string &id) const = delete;
2243 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
2244 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
2245 inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
2246 inline typed::map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
2247 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
2248 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
2249 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
2250 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> to_union_map() const;
2251 inline typed::map<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
2252 inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const;
2253 inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
2254 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
2255 inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
2256 inline typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
2259 template <>
2260 struct basic_set<> : public isl::basic_set {
2261 template <typename...>
2262 friend struct aff;
2263 template <typename...>
2264 friend struct aff_list;
2265 template <typename...>
2266 friend struct basic_map;
2267 template <typename...>
2268 friend struct basic_set;
2269 template <typename...>
2270 friend struct fixed_box;
2271 template <typename...>
2272 friend struct id;
2273 template <typename...>
2274 friend struct id_list;
2275 template <typename...>
2276 friend struct map;
2277 template <typename...>
2278 friend struct map_list;
2279 template <typename...>
2280 friend struct multi_aff;
2281 template <typename...>
2282 friend struct multi_id;
2283 template <typename...>
2284 friend struct multi_pw_aff;
2285 template <typename...>
2286 friend struct multi_union_pw_aff;
2287 template <typename...>
2288 friend struct multi_val;
2289 template <typename...>
2290 friend struct point;
2291 template <typename...>
2292 friend struct pw_aff;
2293 template <typename...>
2294 friend struct pw_aff_list;
2295 template <typename...>
2296 friend struct pw_multi_aff;
2297 template <typename...>
2298 friend struct pw_multi_aff_list;
2299 template <typename...>
2300 friend struct set;
2301 template <typename...>
2302 friend struct set_list;
2303 template <typename...>
2304 friend struct space;
2305 template <typename...>
2306 friend struct union_map;
2307 template <typename...>
2308 friend struct union_pw_aff;
2309 template <typename...>
2310 friend struct union_pw_aff_list;
2311 template <typename...>
2312 friend struct union_pw_multi_aff;
2313 template <typename...>
2314 friend struct union_set;
2315 template <typename...>
2316 friend struct union_set_list;
2317 template <typename...>
2318 friend struct val;
2319 template <typename...>
2320 friend struct val_list;
2322 basic_set() = default;
2323 private:
2324 template <typename base,
2325 typename std::enable_if<
2326 std::is_same<base, isl::basic_set>{}, bool>::type = true>
2327 basic_set(const base &obj) : isl::basic_set(obj) {}
2328 public:
2329 static basic_set from(const isl::basic_set &obj) {
2330 return basic_set(obj);
2332 inline /* implicit */ basic_set(const typed::point<> &pnt);
2333 inline explicit basic_set(const isl::ctx &ctx, const std::string &str);
2334 inline typed::basic_set<> apply(const typed::basic_map<> &bmap) const = delete;
2335 inline typed::set<> apply(const typed::map<> &map) const = delete;
2336 inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
2337 inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete;
2338 inline typed::set<> as_set() const = delete;
2339 inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete;
2340 inline typed::set<> coalesce() const;
2341 inline typed::basic_set<> detect_equalities() const;
2342 inline typed::set<> drop_unused_params() const;
2343 inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
2344 inline typed::set<> extract_set(const typed::space<> &space) const;
2345 inline void foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const;
2346 inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
2347 inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
2348 inline typed::basic_set<> gist(const typed::basic_set<> &context) const;
2349 inline typed::set<> gist(const typed::set<> &context) const;
2350 inline typed::union_set<> gist(const typed::union_set<> &context) const;
2351 inline typed::basic_set<> gist(const typed::point<> &context) const;
2352 inline typed::set<> gist_params(const typed::set<> &context) const = delete;
2353 inline typed::map<> identity() const = delete;
2354 inline typed::pw_aff<Anonymous> indicator_function() const;
2355 inline typed::map<> insert_domain(const typed::space<> &domain) const = delete;
2356 inline typed::basic_set<> intersect(const typed::basic_set<> &bset2) const;
2357 inline typed::set<> intersect(const typed::set<> &set2) const;
2358 inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
2359 inline typed::basic_set<> intersect(const typed::point<> &bset2) const;
2360 inline typed::basic_set<> intersect_params(const typed::basic_set<> &bset2) const = delete;
2361 inline typed::set<> intersect_params(const typed::set<> &params) const = delete;
2362 inline typed::basic_set<> intersect_params(const typed::point<> &bset2) const = delete;
2363 inline typed::fixed_box<> lattice_tile() const = delete;
2364 inline typed::set<> lexmax() const = delete;
2365 inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete;
2366 inline typed::set<> lexmin() const = delete;
2367 inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete;
2368 inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete;
2369 inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete;
2370 inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete;
2371 inline typed::val<> max_val(const typed::aff<> &obj) const = delete;
2372 inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete;
2373 inline typed::val<> min_val(const typed::aff<> &obj) const = delete;
2374 inline typed::pw_aff<Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
2375 inline typed::pw_aff<Anonymous> param_pw_aff_on_domain(const std::string &id) const;
2376 inline typed::basic_set<> params() const = delete;
2377 inline typed::multi_val<> plain_multi_val_if_fixed() const = delete;
2378 inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete;
2379 inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete;
2380 inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
2381 inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
2382 inline typed::set<> product(const typed::set<> &set2) const = delete;
2383 inline typed::set<> project_out_all_params() const;
2384 inline typed::set<> project_out_param(const typed::id<Anonymous> &id) const;
2385 inline typed::set<> project_out_param(const std::string &id) const;
2386 inline typed::set<> project_out_param(const typed::id_list<Anonymous> &list) const;
2387 inline typed::pw_aff<Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
2388 inline typed::pw_aff<Anonymous> pw_aff_on_domain(long v) const;
2389 template <typename Domain>
2390 inline typed::pw_multi_aff<Domain> pw_multi_aff_on_domain(const typed::multi_val<Domain> &mv) const;
2391 inline typed::set_list<> set_list() const;
2392 inline typed::fixed_box<> simple_fixed_box_hull() const = delete;
2393 inline typed::space<> space() const;
2394 inline typed::set<> subtract(const typed::set<> &set2) const;
2395 inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
2396 inline typed::set<> to_set() const;
2397 inline typed::union_set<> to_union_set() const;
2398 inline typed::map<> translation() const = delete;
2399 template <typename Domain>
2400 inline typed::set<Domain> unbind_params(const typed::multi_id<Domain> &tuple) const;
2401 inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
2402 inline typed::set<> unite(const typed::basic_set<> &bset2) const;
2403 inline typed::set<> unite(const typed::set<> &set2) const;
2404 inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
2405 inline typed::set<> unite(const typed::point<> &bset2) const;
2406 inline typed::map<> unwrap() const = delete;
2407 inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete;
2408 inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete;
2409 inline typed::set<> wrapped_reverse() const = delete;
2412 template <typename Domain>
2413 struct basic_set<Domain> : public isl::basic_set {
2414 template <typename...>
2415 friend struct aff;
2416 template <typename...>
2417 friend struct aff_list;
2418 template <typename...>
2419 friend struct basic_map;
2420 template <typename...>
2421 friend struct basic_set;
2422 template <typename...>
2423 friend struct fixed_box;
2424 template <typename...>
2425 friend struct id;
2426 template <typename...>
2427 friend struct id_list;
2428 template <typename...>
2429 friend struct map;
2430 template <typename...>
2431 friend struct map_list;
2432 template <typename...>
2433 friend struct multi_aff;
2434 template <typename...>
2435 friend struct multi_id;
2436 template <typename...>
2437 friend struct multi_pw_aff;
2438 template <typename...>
2439 friend struct multi_union_pw_aff;
2440 template <typename...>
2441 friend struct multi_val;
2442 template <typename...>
2443 friend struct point;
2444 template <typename...>
2445 friend struct pw_aff;
2446 template <typename...>
2447 friend struct pw_aff_list;
2448 template <typename...>
2449 friend struct pw_multi_aff;
2450 template <typename...>
2451 friend struct pw_multi_aff_list;
2452 template <typename...>
2453 friend struct set;
2454 template <typename...>
2455 friend struct set_list;
2456 template <typename...>
2457 friend struct space;
2458 template <typename...>
2459 friend struct union_map;
2460 template <typename...>
2461 friend struct union_pw_aff;
2462 template <typename...>
2463 friend struct union_pw_aff_list;
2464 template <typename...>
2465 friend struct union_pw_multi_aff;
2466 template <typename...>
2467 friend struct union_set;
2468 template <typename...>
2469 friend struct union_set_list;
2470 template <typename...>
2471 friend struct val;
2472 template <typename...>
2473 friend struct val_list;
2475 basic_set() = default;
2476 template <typename Arg1,
2477 typename std::enable_if<
2478 std::is_base_of<Domain, Arg1>{},
2479 bool>::type = true>
2480 basic_set(const basic_set<Arg1> &obj) : isl::basic_set(obj) {}
2481 private:
2482 template <typename base,
2483 typename std::enable_if<
2484 std::is_same<base, isl::basic_set>{}, bool>::type = true>
2485 basic_set(const base &obj) : isl::basic_set(obj) {}
2486 public:
2487 static basic_set from(const isl::basic_set &obj) {
2488 return basic_set(obj);
2490 inline /* implicit */ basic_set(const typed::point<Domain> &pnt);
2491 inline explicit basic_set(const isl::ctx &ctx, const std::string &str);
2492 template <typename Range>
2493 inline typed::basic_set<Range> apply(const typed::basic_map<Domain, Range> &bmap) const;
2494 template <typename Range>
2495 inline typed::set<Range> apply(const typed::map<Domain, Range> &map) const;
2496 template <typename Range>
2497 inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
2498 inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
2499 inline typed::set<Domain> as_set() const;
2500 inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
2501 inline typed::set<Domain> coalesce() const;
2502 inline typed::basic_set<Domain> detect_equalities() const;
2503 inline typed::set<Domain> drop_unused_params() const;
2504 inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
2505 inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
2506 inline void foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const;
2507 inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
2508 inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
2509 inline typed::basic_set<Domain> gist(const typed::basic_set<Domain> &context) const;
2510 inline typed::set<Domain> gist(const typed::set<Domain> &context) const;
2511 inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
2512 inline typed::basic_set<Domain> gist(const typed::point<Domain> &context) const;
2513 inline typed::set<Domain> gist_params(const typed::set<> &context) const;
2514 inline typed::map<Domain, Domain> identity() const;
2515 inline typed::pw_aff<Domain, Anonymous> indicator_function() const;
2516 template <typename Arg1>
2517 inline typed::map<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
2518 inline typed::basic_set<Domain> intersect(const typed::basic_set<Domain> &bset2) const;
2519 inline typed::set<Domain> intersect(const typed::set<Domain> &set2) const;
2520 inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
2521 inline typed::basic_set<Domain> intersect(const typed::point<Domain> &bset2) const;
2522 inline typed::basic_set<Domain> intersect_params(const typed::basic_set<> &bset2) const;
2523 inline typed::set<Domain> intersect_params(const typed::set<> &params) const;
2524 inline typed::basic_set<Domain> intersect_params(const typed::point<> &bset2) const;
2525 inline typed::fixed_box<Domain> lattice_tile() const;
2526 inline typed::set<Domain> lexmax() const;
2527 inline typed::pw_multi_aff<Domain> lexmax_pw_multi_aff() const;
2528 inline typed::set<Domain> lexmin() const;
2529 inline typed::pw_multi_aff<Domain> lexmin_pw_multi_aff() const;
2530 inline typed::set<Domain> lower_bound(const typed::multi_pw_aff<Domain> &lower) const;
2531 inline typed::set<Domain> lower_bound(const typed::multi_val<Domain> &lower) const;
2532 inline typed::multi_pw_aff<Domain> max_multi_pw_aff() const;
2533 inline typed::val<Domain> max_val(const typed::aff<> &obj) const = delete;
2534 inline typed::multi_pw_aff<Domain> min_multi_pw_aff() const;
2535 inline typed::val<Domain> min_val(const typed::aff<> &obj) const = delete;
2536 inline typed::pw_aff<Domain, Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
2537 inline typed::pw_aff<Domain, Anonymous> param_pw_aff_on_domain(const std::string &id) const;
2538 inline typed::basic_set<> params() const;
2539 inline typed::multi_val<Domain> plain_multi_val_if_fixed() const;
2540 template <typename Domain2>
2541 inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
2542 template <typename Domain2>
2543 inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
2544 template <typename Domain2>
2545 inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
2546 template <typename Domain2>
2547 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
2548 template <typename Range>
2549 inline typed::set<pair<Domain, Range>> product(const typed::set<Range> &set2) const;
2550 inline typed::set<Domain> project_out_all_params() const;
2551 inline typed::set<Domain> project_out_param(const typed::id<Anonymous> &id) const;
2552 inline typed::set<Domain> project_out_param(const std::string &id) const;
2553 inline typed::set<Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
2554 inline typed::pw_aff<Domain, Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
2555 inline typed::pw_aff<Domain, Anonymous> pw_aff_on_domain(long v) const;
2556 template <typename Range>
2557 inline typed::pw_multi_aff<Domain, Range> pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
2558 inline typed::set_list<Domain> set_list() const;
2559 inline typed::fixed_box<Domain> simple_fixed_box_hull() const;
2560 inline typed::space<Domain> space() const;
2561 inline typed::set<Domain> subtract(const typed::set<Domain> &set2) const;
2562 inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
2563 inline typed::set<Domain> to_set() const;
2564 inline typed::union_set<Domain> to_union_set() const;
2565 inline typed::map<Domain, Domain> translation() const;
2566 inline typed::set<Domain> unbind_params(const typed::multi_id<> &tuple) const = delete;
2567 template <typename Arg1>
2568 inline typed::map<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
2569 inline typed::set<Domain> unite(const typed::basic_set<Domain> &bset2) const;
2570 inline typed::set<Domain> unite(const typed::set<Domain> &set2) const;
2571 inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
2572 inline typed::set<Domain> unite(const typed::point<Domain> &bset2) const;
2573 inline typed::map<Domain> unwrap() const = delete;
2574 inline typed::set<Domain> upper_bound(const typed::multi_pw_aff<Domain> &upper) const;
2575 inline typed::set<Domain> upper_bound(const typed::multi_val<Domain> &upper) const;
2576 inline typed::set<Domain> wrapped_reverse() const = delete;
2579 template <typename Domain, typename Range>
2580 struct basic_set<pair<Domain, Range>> : public isl::basic_set {
2581 template <typename...>
2582 friend struct aff;
2583 template <typename...>
2584 friend struct aff_list;
2585 template <typename...>
2586 friend struct basic_map;
2587 template <typename...>
2588 friend struct basic_set;
2589 template <typename...>
2590 friend struct fixed_box;
2591 template <typename...>
2592 friend struct id;
2593 template <typename...>
2594 friend struct id_list;
2595 template <typename...>
2596 friend struct map;
2597 template <typename...>
2598 friend struct map_list;
2599 template <typename...>
2600 friend struct multi_aff;
2601 template <typename...>
2602 friend struct multi_id;
2603 template <typename...>
2604 friend struct multi_pw_aff;
2605 template <typename...>
2606 friend struct multi_union_pw_aff;
2607 template <typename...>
2608 friend struct multi_val;
2609 template <typename...>
2610 friend struct point;
2611 template <typename...>
2612 friend struct pw_aff;
2613 template <typename...>
2614 friend struct pw_aff_list;
2615 template <typename...>
2616 friend struct pw_multi_aff;
2617 template <typename...>
2618 friend struct pw_multi_aff_list;
2619 template <typename...>
2620 friend struct set;
2621 template <typename...>
2622 friend struct set_list;
2623 template <typename...>
2624 friend struct space;
2625 template <typename...>
2626 friend struct union_map;
2627 template <typename...>
2628 friend struct union_pw_aff;
2629 template <typename...>
2630 friend struct union_pw_aff_list;
2631 template <typename...>
2632 friend struct union_pw_multi_aff;
2633 template <typename...>
2634 friend struct union_set;
2635 template <typename...>
2636 friend struct union_set_list;
2637 template <typename...>
2638 friend struct val;
2639 template <typename...>
2640 friend struct val_list;
2642 basic_set() = default;
2643 template <typename Arg1, typename Arg2,
2644 typename std::enable_if<
2645 std::is_base_of<Domain, Arg1>{} &&
2646 std::is_base_of<Range, Arg2>{},
2647 bool>::type = true>
2648 basic_set(const basic_set<pair<Arg1, Arg2>> &obj) : isl::basic_set(obj) {}
2649 private:
2650 template <typename base,
2651 typename std::enable_if<
2652 std::is_same<base, isl::basic_set>{}, bool>::type = true>
2653 basic_set(const base &obj) : isl::basic_set(obj) {}
2654 public:
2655 static basic_set from(const isl::basic_set &obj) {
2656 return basic_set(obj);
2658 inline /* implicit */ basic_set(const typed::point<pair<Domain, Range>> &pnt);
2659 inline explicit basic_set(const isl::ctx &ctx, const std::string &str);
2660 template <typename Arg2>
2661 inline typed::basic_set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const;
2662 template <typename Arg2>
2663 inline typed::set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &map) const;
2664 template <typename Arg2>
2665 inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
2666 inline typed::pw_multi_aff<pair<Domain, Range>> as_pw_multi_aff() const;
2667 inline typed::set<pair<Domain, Range>> as_set() const;
2668 inline typed::set<> bind(const typed::multi_id<pair<Domain, Range>> &tuple) const;
2669 inline typed::set<pair<Domain, Range>> coalesce() const;
2670 inline typed::basic_set<pair<Domain, Range>> detect_equalities() const;
2671 inline typed::set<pair<Domain, Range>> drop_unused_params() const;
2672 inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
2673 inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
2674 inline void foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const;
2675 inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
2676 inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
2677 inline typed::basic_set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
2678 inline typed::set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
2679 inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
2680 inline typed::basic_set<pair<Domain, Range>> gist(const typed::point<pair<Domain, Range>> &context) const;
2681 inline typed::set<pair<Domain, Range>> gist_params(const typed::set<> &context) const;
2682 inline typed::map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
2683 inline typed::pw_aff<pair<Domain, Range>, Anonymous> indicator_function() const;
2684 template <typename Arg2>
2685 inline typed::map<Arg2, pair<Domain, Range>> insert_domain(const typed::space<Arg2> &domain) const;
2686 inline typed::basic_set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const;
2687 inline typed::set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &set2) const;
2688 inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
2689 inline typed::basic_set<pair<Domain, Range>> intersect(const typed::point<pair<Domain, Range>> &bset2) const;
2690 inline typed::basic_set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &bset2) const;
2691 inline typed::set<pair<Domain, Range>> intersect_params(const typed::set<> &params) const;
2692 inline typed::basic_set<pair<Domain, Range>> intersect_params(const typed::point<> &bset2) const;
2693 inline typed::fixed_box<pair<Domain, Range>> lattice_tile() const;
2694 inline typed::set<pair<Domain, Range>> lexmax() const;
2695 inline typed::pw_multi_aff<pair<Domain, Range>> lexmax_pw_multi_aff() const;
2696 inline typed::set<pair<Domain, Range>> lexmin() const;
2697 inline typed::pw_multi_aff<pair<Domain, Range>> lexmin_pw_multi_aff() const;
2698 inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const;
2699 inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const;
2700 inline typed::multi_pw_aff<pair<Domain, Range>> max_multi_pw_aff() const;
2701 inline typed::val<pair<Domain, Range>> max_val(const typed::aff<> &obj) const = delete;
2702 inline typed::multi_pw_aff<pair<Domain, Range>> min_multi_pw_aff() const;
2703 inline typed::val<pair<Domain, Range>> min_val(const typed::aff<> &obj) const = delete;
2704 inline typed::pw_aff<pair<Domain, Range>, Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
2705 inline typed::pw_aff<pair<Domain, Range>, Anonymous> param_pw_aff_on_domain(const std::string &id) const;
2706 inline typed::basic_set<> params() const;
2707 inline typed::multi_val<pair<Domain, Range>> plain_multi_val_if_fixed() const;
2708 template <typename Domain2>
2709 inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
2710 template <typename Domain2>
2711 inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
2712 template <typename Domain2>
2713 inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
2714 template <typename Domain2>
2715 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
2716 template <typename Arg2>
2717 inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::set<Arg2> &set2) const;
2718 inline typed::set<pair<Domain, Range>> project_out_all_params() const;
2719 inline typed::set<pair<Domain, Range>> project_out_param(const typed::id<Anonymous> &id) const;
2720 inline typed::set<pair<Domain, Range>> project_out_param(const std::string &id) const;
2721 inline typed::set<pair<Domain, Range>> project_out_param(const typed::id_list<Anonymous> &list) const;
2722 inline typed::pw_aff<pair<Domain, Range>, Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
2723 inline typed::pw_aff<pair<Domain, Range>, Anonymous> pw_aff_on_domain(long v) const;
2724 template <typename Arg2>
2725 inline typed::pw_multi_aff<pair<Domain, Range>, Arg2> pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
2726 inline typed::set_list<pair<Domain, Range>> set_list() const;
2727 inline typed::fixed_box<pair<Domain, Range>> simple_fixed_box_hull() const;
2728 inline typed::space<pair<Domain, Range>> space() const;
2729 inline typed::set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &set2) const;
2730 inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
2731 inline typed::set<pair<Domain, Range>> to_set() const;
2732 inline typed::union_set<pair<Domain, Range>> to_union_set() const;
2733 inline typed::map<pair<Domain, Range>, pair<Domain, Range>> translation() const;
2734 inline typed::set<pair<Domain, Range>> unbind_params(const typed::multi_id<> &tuple) const = delete;
2735 template <typename Arg2>
2736 inline typed::map<Arg2, pair<Domain, Range>> unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const;
2737 inline typed::set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &bset2) const;
2738 inline typed::set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &set2) const;
2739 inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
2740 inline typed::set<pair<Domain, Range>> unite(const typed::point<pair<Domain, Range>> &bset2) const;
2741 inline typed::map<Domain, Range> unwrap() const;
2742 inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const;
2743 inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const;
2744 inline typed::set<pair<Range, Domain>> wrapped_reverse() const;
2747 template <typename Domain>
2748 struct fixed_box<Domain> : public isl::fixed_box {
2749 template <typename...>
2750 friend struct aff;
2751 template <typename...>
2752 friend struct aff_list;
2753 template <typename...>
2754 friend struct basic_map;
2755 template <typename...>
2756 friend struct basic_set;
2757 template <typename...>
2758 friend struct fixed_box;
2759 template <typename...>
2760 friend struct id;
2761 template <typename...>
2762 friend struct id_list;
2763 template <typename...>
2764 friend struct map;
2765 template <typename...>
2766 friend struct map_list;
2767 template <typename...>
2768 friend struct multi_aff;
2769 template <typename...>
2770 friend struct multi_id;
2771 template <typename...>
2772 friend struct multi_pw_aff;
2773 template <typename...>
2774 friend struct multi_union_pw_aff;
2775 template <typename...>
2776 friend struct multi_val;
2777 template <typename...>
2778 friend struct point;
2779 template <typename...>
2780 friend struct pw_aff;
2781 template <typename...>
2782 friend struct pw_aff_list;
2783 template <typename...>
2784 friend struct pw_multi_aff;
2785 template <typename...>
2786 friend struct pw_multi_aff_list;
2787 template <typename...>
2788 friend struct set;
2789 template <typename...>
2790 friend struct set_list;
2791 template <typename...>
2792 friend struct space;
2793 template <typename...>
2794 friend struct union_map;
2795 template <typename...>
2796 friend struct union_pw_aff;
2797 template <typename...>
2798 friend struct union_pw_aff_list;
2799 template <typename...>
2800 friend struct union_pw_multi_aff;
2801 template <typename...>
2802 friend struct union_set;
2803 template <typename...>
2804 friend struct union_set_list;
2805 template <typename...>
2806 friend struct val;
2807 template <typename...>
2808 friend struct val_list;
2810 fixed_box() = default;
2811 template <typename Arg1,
2812 typename std::enable_if<
2813 std::is_base_of<Domain, Arg1>{},
2814 bool>::type = true>
2815 fixed_box(const fixed_box<Arg1> &obj) : isl::fixed_box(obj) {}
2816 private:
2817 template <typename base,
2818 typename std::enable_if<
2819 std::is_same<base, isl::fixed_box>{}, bool>::type = true>
2820 fixed_box(const base &obj) : isl::fixed_box(obj) {}
2821 public:
2822 static fixed_box from(const isl::fixed_box &obj) {
2823 return fixed_box(obj);
2825 inline explicit fixed_box(const isl::ctx &ctx, const std::string &str);
2826 inline typed::multi_aff<Domain> offset() const;
2827 inline typed::multi_aff<Domain> get_offset() const = delete;
2828 inline typed::multi_val<Domain> size() const;
2829 inline typed::multi_val<Domain> get_size() const = delete;
2830 inline typed::space<Domain> space() const;
2831 inline typed::space<Domain> get_space() const = delete;
2834 template <typename Domain, typename Range>
2835 struct fixed_box<Domain, Range> : public isl::fixed_box {
2836 template <typename...>
2837 friend struct aff;
2838 template <typename...>
2839 friend struct aff_list;
2840 template <typename...>
2841 friend struct basic_map;
2842 template <typename...>
2843 friend struct basic_set;
2844 template <typename...>
2845 friend struct fixed_box;
2846 template <typename...>
2847 friend struct id;
2848 template <typename...>
2849 friend struct id_list;
2850 template <typename...>
2851 friend struct map;
2852 template <typename...>
2853 friend struct map_list;
2854 template <typename...>
2855 friend struct multi_aff;
2856 template <typename...>
2857 friend struct multi_id;
2858 template <typename...>
2859 friend struct multi_pw_aff;
2860 template <typename...>
2861 friend struct multi_union_pw_aff;
2862 template <typename...>
2863 friend struct multi_val;
2864 template <typename...>
2865 friend struct point;
2866 template <typename...>
2867 friend struct pw_aff;
2868 template <typename...>
2869 friend struct pw_aff_list;
2870 template <typename...>
2871 friend struct pw_multi_aff;
2872 template <typename...>
2873 friend struct pw_multi_aff_list;
2874 template <typename...>
2875 friend struct set;
2876 template <typename...>
2877 friend struct set_list;
2878 template <typename...>
2879 friend struct space;
2880 template <typename...>
2881 friend struct union_map;
2882 template <typename...>
2883 friend struct union_pw_aff;
2884 template <typename...>
2885 friend struct union_pw_aff_list;
2886 template <typename...>
2887 friend struct union_pw_multi_aff;
2888 template <typename...>
2889 friend struct union_set;
2890 template <typename...>
2891 friend struct union_set_list;
2892 template <typename...>
2893 friend struct val;
2894 template <typename...>
2895 friend struct val_list;
2897 fixed_box() = default;
2898 template <typename Arg1, typename Arg2,
2899 typename std::enable_if<
2900 std::is_base_of<Domain, Arg1>{} &&
2901 std::is_base_of<Range, Arg2>{},
2902 bool>::type = true>
2903 fixed_box(const fixed_box<Arg1, Arg2> &obj) : isl::fixed_box(obj) {}
2904 private:
2905 template <typename base,
2906 typename std::enable_if<
2907 std::is_same<base, isl::fixed_box>{}, bool>::type = true>
2908 fixed_box(const base &obj) : isl::fixed_box(obj) {}
2909 public:
2910 static fixed_box from(const isl::fixed_box &obj) {
2911 return fixed_box(obj);
2913 inline explicit fixed_box(const isl::ctx &ctx, const std::string &str);
2914 inline typed::multi_aff<Domain, Range> offset() const;
2915 inline typed::multi_aff<Domain, Range> get_offset() const = delete;
2916 inline typed::multi_val<Range> size() const;
2917 inline typed::multi_val<Domain, Range> get_size() const = delete;
2918 inline typed::space<Domain, Range> space() const;
2919 inline typed::space<Domain, Range> get_space() const = delete;
2922 template <>
2923 struct id<Anonymous> : public isl::id {
2924 template <typename...>
2925 friend struct aff;
2926 template <typename...>
2927 friend struct aff_list;
2928 template <typename...>
2929 friend struct basic_map;
2930 template <typename...>
2931 friend struct basic_set;
2932 template <typename...>
2933 friend struct fixed_box;
2934 template <typename...>
2935 friend struct id;
2936 template <typename...>
2937 friend struct id_list;
2938 template <typename...>
2939 friend struct map;
2940 template <typename...>
2941 friend struct map_list;
2942 template <typename...>
2943 friend struct multi_aff;
2944 template <typename...>
2945 friend struct multi_id;
2946 template <typename...>
2947 friend struct multi_pw_aff;
2948 template <typename...>
2949 friend struct multi_union_pw_aff;
2950 template <typename...>
2951 friend struct multi_val;
2952 template <typename...>
2953 friend struct point;
2954 template <typename...>
2955 friend struct pw_aff;
2956 template <typename...>
2957 friend struct pw_aff_list;
2958 template <typename...>
2959 friend struct pw_multi_aff;
2960 template <typename...>
2961 friend struct pw_multi_aff_list;
2962 template <typename...>
2963 friend struct set;
2964 template <typename...>
2965 friend struct set_list;
2966 template <typename...>
2967 friend struct space;
2968 template <typename...>
2969 friend struct union_map;
2970 template <typename...>
2971 friend struct union_pw_aff;
2972 template <typename...>
2973 friend struct union_pw_aff_list;
2974 template <typename...>
2975 friend struct union_pw_multi_aff;
2976 template <typename...>
2977 friend struct union_set;
2978 template <typename...>
2979 friend struct union_set_list;
2980 template <typename...>
2981 friend struct val;
2982 template <typename...>
2983 friend struct val_list;
2985 id() = default;
2986 id(const isl::id &obj) : isl::id(obj) {}
2987 static id from(const isl::id &obj) {
2988 return id(obj);
2990 inline explicit id(const isl::ctx &ctx, const std::string &str);
2991 inline std::string get_name() const = delete;
2994 template <>
2995 struct id_list<Anonymous> : public isl::id_list {
2996 template <typename...>
2997 friend struct aff;
2998 template <typename...>
2999 friend struct aff_list;
3000 template <typename...>
3001 friend struct basic_map;
3002 template <typename...>
3003 friend struct basic_set;
3004 template <typename...>
3005 friend struct fixed_box;
3006 template <typename...>
3007 friend struct id;
3008 template <typename...>
3009 friend struct id_list;
3010 template <typename...>
3011 friend struct map;
3012 template <typename...>
3013 friend struct map_list;
3014 template <typename...>
3015 friend struct multi_aff;
3016 template <typename...>
3017 friend struct multi_id;
3018 template <typename...>
3019 friend struct multi_pw_aff;
3020 template <typename...>
3021 friend struct multi_union_pw_aff;
3022 template <typename...>
3023 friend struct multi_val;
3024 template <typename...>
3025 friend struct point;
3026 template <typename...>
3027 friend struct pw_aff;
3028 template <typename...>
3029 friend struct pw_aff_list;
3030 template <typename...>
3031 friend struct pw_multi_aff;
3032 template <typename...>
3033 friend struct pw_multi_aff_list;
3034 template <typename...>
3035 friend struct set;
3036 template <typename...>
3037 friend struct set_list;
3038 template <typename...>
3039 friend struct space;
3040 template <typename...>
3041 friend struct union_map;
3042 template <typename...>
3043 friend struct union_pw_aff;
3044 template <typename...>
3045 friend struct union_pw_aff_list;
3046 template <typename...>
3047 friend struct union_pw_multi_aff;
3048 template <typename...>
3049 friend struct union_set;
3050 template <typename...>
3051 friend struct union_set_list;
3052 template <typename...>
3053 friend struct val;
3054 template <typename...>
3055 friend struct val_list;
3057 id_list() = default;
3058 id_list(const isl::id_list &obj) : isl::id_list(obj) {}
3059 static id_list from(const isl::id_list &obj) {
3060 return id_list(obj);
3062 inline explicit id_list(const isl::ctx &ctx, int n);
3063 inline explicit id_list(const typed::id<Anonymous> &el);
3064 inline explicit id_list(const isl::ctx &ctx, const std::string &str);
3065 inline typed::id_list<Anonymous> add(const typed::id<Anonymous> &el) const;
3066 inline typed::id_list<Anonymous> add(const std::string &el) const;
3067 inline typed::id<Anonymous> at(int index) const;
3068 inline typed::id<Anonymous> get_at(int index) const = delete;
3069 inline typed::id_list<Anonymous> drop(unsigned int first, unsigned int n) const;
3070 inline void foreach(const std::function<void(typed::id<Anonymous>)> &fn) const;
3071 inline void foreach_scc(const std::function<bool(typed::id<Anonymous>, typed::id<Anonymous>)> &follows, const std::function<void(typed::id_list<Anonymous>)> &fn) const;
3072 inline typed::id_list<Anonymous> set_at(int index, const typed::id<Anonymous> &el) const;
3073 inline typed::id_list<Anonymous> set_at(int index, const std::string &el) const;
3076 template <typename Domain, typename Range>
3077 struct map<Domain, Range> : public isl::map {
3078 template <typename...>
3079 friend struct aff;
3080 template <typename...>
3081 friend struct aff_list;
3082 template <typename...>
3083 friend struct basic_map;
3084 template <typename...>
3085 friend struct basic_set;
3086 template <typename...>
3087 friend struct fixed_box;
3088 template <typename...>
3089 friend struct id;
3090 template <typename...>
3091 friend struct id_list;
3092 template <typename...>
3093 friend struct map;
3094 template <typename...>
3095 friend struct map_list;
3096 template <typename...>
3097 friend struct multi_aff;
3098 template <typename...>
3099 friend struct multi_id;
3100 template <typename...>
3101 friend struct multi_pw_aff;
3102 template <typename...>
3103 friend struct multi_union_pw_aff;
3104 template <typename...>
3105 friend struct multi_val;
3106 template <typename...>
3107 friend struct point;
3108 template <typename...>
3109 friend struct pw_aff;
3110 template <typename...>
3111 friend struct pw_aff_list;
3112 template <typename...>
3113 friend struct pw_multi_aff;
3114 template <typename...>
3115 friend struct pw_multi_aff_list;
3116 template <typename...>
3117 friend struct set;
3118 template <typename...>
3119 friend struct set_list;
3120 template <typename...>
3121 friend struct space;
3122 template <typename...>
3123 friend struct union_map;
3124 template <typename...>
3125 friend struct union_pw_aff;
3126 template <typename...>
3127 friend struct union_pw_aff_list;
3128 template <typename...>
3129 friend struct union_pw_multi_aff;
3130 template <typename...>
3131 friend struct union_set;
3132 template <typename...>
3133 friend struct union_set_list;
3134 template <typename...>
3135 friend struct val;
3136 template <typename...>
3137 friend struct val_list;
3139 map() = default;
3140 template <typename Arg1, typename Arg2,
3141 typename std::enable_if<
3142 std::is_base_of<Domain, Arg1>{} &&
3143 std::is_base_of<Range, Arg2>{},
3144 bool>::type = true>
3145 map(const map<Arg1, Arg2> &obj) : isl::map(obj) {}
3146 private:
3147 template <typename base,
3148 typename std::enable_if<
3149 std::is_same<base, isl::map>{}, bool>::type = true>
3150 map(const base &obj) : isl::map(obj) {}
3151 public:
3152 static map from(const isl::map &obj) {
3153 return map(obj);
3155 inline /* implicit */ map(const typed::basic_map<Domain, Range> &bmap);
3156 inline explicit map(const isl::ctx &ctx, const std::string &str);
3157 template <typename Domain2>
3158 inline typed::map<Domain2, Range> apply_domain(const typed::map<Domain, Domain2> &map2) const;
3159 template <typename Domain2>
3160 inline typed::union_map<Domain2, Range> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
3161 template <typename Domain2>
3162 inline typed::map<Domain2, Range> apply_domain(const typed::basic_map<Domain, Domain2> &map2) const;
3163 template <typename Range2>
3164 inline typed::map<Domain, Range2> apply_range(const typed::map<Range, Range2> &map2) const;
3165 template <typename Range2>
3166 inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Range, Range2> &umap2) const;
3167 template <typename Range2>
3168 inline typed::map<Domain, Range2> apply_range(const typed::basic_map<Range, Range2> &map2) const;
3169 inline typed::map<Domain, Range> as_map() const;
3170 inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
3171 inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
3172 inline typed::union_pw_multi_aff<Domain, Range> as_union_pw_multi_aff() const;
3173 inline typed::set<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
3174 inline typed::set<Domain> bind_range(const typed::multi_id<Range> &tuple) const;
3175 inline typed::map<Domain, Range> coalesce() const;
3176 inline typed::map<Domain, Range> curry() const = delete;
3177 inline typed::set<Domain, Range> deltas() const = delete;
3178 inline typed::map<Domain, Range> detect_equalities() const;
3179 inline typed::set<Domain> domain() const;
3180 inline typed::map<Domain, Range> domain_factor_domain() const = delete;
3181 inline typed::map<Domain, Range> domain_factor_range() const = delete;
3182 inline typed::union_map<pair<Domain, Range>, Domain> domain_map() const;
3183 inline typed::union_pw_multi_aff<pair<Domain, Range>, Domain> domain_map_union_pw_multi_aff() const;
3184 template <typename Domain2>
3185 inline typed::map<pair<Domain, Domain2>, Range> domain_product(const typed::map<Domain2, Range> &map2) const;
3186 template <typename Domain2>
3187 inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::union_map<Domain2, Range> &umap2) const;
3188 template <typename Domain2>
3189 inline typed::map<pair<Domain, Domain2>, Range> domain_product(const typed::basic_map<Domain2, Range> &map2) const;
3190 inline typed::map<Domain, Range> domain_reverse() const = delete;
3191 inline typed::id<Domain, Range> get_domain_tuple_id() const = delete;
3192 inline typed::map<Domain, Range> drop_unused_params() const;
3193 inline typed::map<Domain, Range> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
3194 inline typed::union_map<Domain, Range> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
3195 inline typed::map<Domain, Range> eq_at(const typed::aff<> &mpa) const = delete;
3196 inline typed::map<Domain, Range> eq_at(const typed::multi_aff<> &mpa) const = delete;
3197 inline typed::map<Domain, Range> eq_at(const typed::pw_aff<> &mpa) const = delete;
3198 inline typed::map<Domain, Range> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
3199 inline bool every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const;
3200 inline typed::map<Domain, Range> extract_map(const typed::space<Domain, Range> &space) const;
3201 inline typed::map<Domain, Range> flatten_domain() const = delete;
3202 inline typed::map<Domain, Range> flatten_range() const = delete;
3203 inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const;
3204 inline void foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const;
3205 inline typed::map<Domain, Range> gist(const typed::map<Domain, Range> &context) const;
3206 inline typed::union_map<Domain, Range> gist(const typed::union_map<Domain, Range> &context) const;
3207 inline typed::map<Domain, Range> gist(const typed::basic_map<Domain, Range> &context) const;
3208 inline typed::map<Domain, Range> gist_domain(const typed::set<Domain> &context) const;
3209 inline typed::union_map<Domain, Range> gist_domain(const typed::union_set<Domain> &uset) const;
3210 inline typed::map<Domain, Range> gist_domain(const typed::basic_set<Domain> &context) const;
3211 inline typed::map<Domain, Range> gist_domain(const typed::point<Domain> &context) const;
3212 inline typed::map<Domain, Range> gist_params(const typed::set<> &context) const;
3213 inline typed::map<Domain, Range> gist_params(const typed::basic_set<> &context) const;
3214 inline typed::map<Domain, Range> gist_params(const typed::point<> &context) const;
3215 inline typed::map<Domain, Range> intersect(const typed::map<Domain, Range> &map2) const;
3216 inline typed::union_map<Domain, Range> intersect(const typed::union_map<Domain, Range> &umap2) const;
3217 inline typed::map<Domain, Range> intersect(const typed::basic_map<Domain, Range> &map2) const;
3218 inline typed::map<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
3219 inline typed::union_map<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
3220 inline typed::union_map<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
3221 inline typed::map<Domain, Range> intersect_domain(const typed::basic_set<Domain> &set) const;
3222 inline typed::map<Domain, Range> intersect_domain(const typed::point<Domain> &set) const;
3223 inline typed::map<Domain, Range> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
3224 inline typed::union_map<Domain, Range> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
3225 inline typed::map<Domain, Range> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete;
3226 inline typed::map<Domain, Range> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete;
3227 inline typed::map<Domain, Range> intersect_params(const typed::set<> &params) const;
3228 inline typed::map<Domain, Range> intersect_params(const typed::basic_set<> &params) const;
3229 inline typed::map<Domain, Range> intersect_params(const typed::point<> &params) const;
3230 inline typed::map<Domain, Range> intersect_range(const typed::set<Range> &set) const;
3231 inline typed::union_map<Domain, Range> intersect_range(const typed::space<Range> &space) const;
3232 inline typed::union_map<Domain, Range> intersect_range(const typed::union_set<Range> &uset) const;
3233 inline typed::map<Domain, Range> intersect_range(const typed::basic_set<Range> &set) const;
3234 inline typed::map<Domain, Range> intersect_range(const typed::point<Range> &set) const;
3235 inline typed::map<Domain, Range> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
3236 inline typed::union_map<Domain, Range> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
3237 inline typed::map<Domain, Range> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete;
3238 inline typed::map<Domain, Range> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete;
3239 inline typed::map<Domain, Range> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
3240 inline typed::map<Domain, Range> lex_ge_at(const typed::aff<> &mpa) const = delete;
3241 inline typed::map<Domain, Range> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
3242 inline typed::map<Domain, Range> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
3243 inline typed::map<Domain, Range> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
3244 inline typed::map<Domain, Range> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
3245 inline typed::map<Domain, Range> lex_gt_at(const typed::aff<> &mpa) const = delete;
3246 inline typed::map<Domain, Range> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
3247 inline typed::map<Domain, Range> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
3248 inline typed::map<Domain, Range> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
3249 inline typed::map<Domain, Range> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
3250 inline typed::map<Domain, Range> lex_le_at(const typed::aff<> &mpa) const = delete;
3251 inline typed::map<Domain, Range> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
3252 inline typed::map<Domain, Range> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
3253 inline typed::map<Domain, Range> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
3254 inline typed::map<Domain, Range> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
3255 inline typed::map<Domain, Range> lex_lt_at(const typed::aff<> &mpa) const = delete;
3256 inline typed::map<Domain, Range> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
3257 inline typed::map<Domain, Range> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
3258 inline typed::map<Domain, Range> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
3259 inline typed::map<Domain, Range> lexmax() const;
3260 inline typed::pw_multi_aff<Domain, Range> lexmax_pw_multi_aff() const;
3261 inline typed::map<Domain, Range> lexmin() const;
3262 inline typed::pw_multi_aff<Domain, Range> lexmin_pw_multi_aff() const;
3263 inline typed::map<Domain, Range> lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const;
3264 inline typed::map<Domain, Range> lower_bound(const typed::aff<Domain, Range> &lower) const;
3265 inline typed::map<Domain, Range> lower_bound(const typed::multi_aff<Domain, Range> &lower) const;
3266 inline typed::map<Domain, Range> lower_bound(const typed::pw_aff<Domain, Range> &lower) const;
3267 inline typed::map<Domain, Range> lower_bound(const typed::pw_multi_aff<Domain, Range> &lower) const;
3268 inline typed::map_list<Domain, Range> map_list() const;
3269 inline typed::multi_pw_aff<Domain, Range> max_multi_pw_aff() const;
3270 inline typed::multi_pw_aff<Domain, Range> min_multi_pw_aff() const;
3271 inline typed::set<> params() const;
3272 template <typename Domain2>
3273 inline typed::map<Domain2, Range> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
3274 template <typename Domain2>
3275 inline typed::map<Domain2, Range> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
3276 template <typename Domain2>
3277 inline typed::map<Domain2, Range> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
3278 template <typename Domain2>
3279 inline typed::union_map<Domain2, Range> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
3280 template <typename Range2>
3281 inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Range> &ma) const;
3282 template <typename Range2>
3283 inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const;
3284 template <typename Range2>
3285 inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const;
3286 template <typename Domain2, typename Range2>
3287 inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
3288 template <typename Domain2, typename Range2>
3289 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
3290 template <typename Domain2, typename Range2>
3291 inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::basic_map<Domain2, Range2> &map2) const;
3292 inline typed::map<Domain, Range> project_out_all_params() const;
3293 inline typed::map<Domain, Range> project_out_param(const typed::id<Anonymous> &id) const;
3294 inline typed::map<Domain, Range> project_out_param(const std::string &id) const;
3295 inline typed::map<Domain, Range> project_out_param(const typed::id_list<Anonymous> &list) const;
3296 inline typed::set<Range> range() const;
3297 inline typed::map<Domain, Range> range_factor_domain() const = delete;
3298 inline typed::map<Domain, Range> range_factor_range() const = delete;
3299 inline typed::fixed_box<Domain, Range> range_lattice_tile() const;
3300 inline typed::fixed_box<Domain, Range> get_range_lattice_tile() const = delete;
3301 inline typed::union_map<pair<Domain, Range>, Range> range_map() const;
3302 template <typename Range2>
3303 inline typed::map<Domain, pair<Range, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
3304 template <typename Range2>
3305 inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
3306 template <typename Range2>
3307 inline typed::map<Domain, pair<Range, Range2>> range_product(const typed::basic_map<Domain, Range2> &map2) const;
3308 inline typed::map<Domain, Range> range_reverse() const = delete;
3309 inline typed::fixed_box<Domain, Range> range_simple_fixed_box_hull() const;
3310 inline typed::fixed_box<Domain, Range> get_range_simple_fixed_box_hull() const = delete;
3311 inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
3312 inline typed::map<Range, Domain> reverse() const;
3313 template <typename Domain2>
3314 inline typed::map<Domain2, Range> set_domain_tuple(const typed::id<Anonymous> &id) const;
3315 template <typename Domain2>
3316 inline typed::map<Domain2, Range> set_domain_tuple(const std::string &id) const;
3317 template <typename Range2>
3318 inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
3319 template <typename Range2>
3320 inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
3321 inline typed::space<Domain, Range> space() const;
3322 inline typed::space<Domain, Range> get_space() const = delete;
3323 inline typed::map<Domain, Range> subtract(const typed::map<Domain, Range> &map2) const;
3324 inline typed::union_map<Domain, Range> subtract(const typed::union_map<Domain, Range> &umap2) const;
3325 inline typed::map<Domain, Range> subtract(const typed::basic_map<Domain, Range> &map2) const;
3326 inline typed::union_map<Domain, Range> subtract_domain(const typed::union_set<Domain> &dom) const;
3327 inline typed::union_map<Domain, Range> subtract_range(const typed::union_set<Range> &dom) const;
3328 inline typed::union_map<Domain, Range> to_union_map() const;
3329 inline typed::map<Domain, Range> uncurry() const = delete;
3330 inline typed::map<Domain, Range> unite(const typed::map<Domain, Range> &map2) const;
3331 inline typed::union_map<Domain, Range> unite(const typed::union_map<Domain, Range> &umap2) const;
3332 inline typed::map<Domain, Range> unite(const typed::basic_map<Domain, Range> &map2) const;
3333 static inline typed::map<Domain, Range> universe(const typed::space<Domain, Range> &space);
3334 inline typed::map<Domain, Range> upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const;
3335 inline typed::map<Domain, Range> upper_bound(const typed::aff<Domain, Range> &upper) const;
3336 inline typed::map<Domain, Range> upper_bound(const typed::multi_aff<Domain, Range> &upper) const;
3337 inline typed::map<Domain, Range> upper_bound(const typed::pw_aff<Domain, Range> &upper) const;
3338 inline typed::map<Domain, Range> upper_bound(const typed::pw_multi_aff<Domain, Range> &upper) const;
3339 inline typed::set<pair<Domain, Range>> wrap() const;
3342 template <typename Domain, typename Range, typename Range2>
3343 struct map<pair<Domain, Range>, Range2> : public isl::map {
3344 template <typename...>
3345 friend struct aff;
3346 template <typename...>
3347 friend struct aff_list;
3348 template <typename...>
3349 friend struct basic_map;
3350 template <typename...>
3351 friend struct basic_set;
3352 template <typename...>
3353 friend struct fixed_box;
3354 template <typename...>
3355 friend struct id;
3356 template <typename...>
3357 friend struct id_list;
3358 template <typename...>
3359 friend struct map;
3360 template <typename...>
3361 friend struct map_list;
3362 template <typename...>
3363 friend struct multi_aff;
3364 template <typename...>
3365 friend struct multi_id;
3366 template <typename...>
3367 friend struct multi_pw_aff;
3368 template <typename...>
3369 friend struct multi_union_pw_aff;
3370 template <typename...>
3371 friend struct multi_val;
3372 template <typename...>
3373 friend struct point;
3374 template <typename...>
3375 friend struct pw_aff;
3376 template <typename...>
3377 friend struct pw_aff_list;
3378 template <typename...>
3379 friend struct pw_multi_aff;
3380 template <typename...>
3381 friend struct pw_multi_aff_list;
3382 template <typename...>
3383 friend struct set;
3384 template <typename...>
3385 friend struct set_list;
3386 template <typename...>
3387 friend struct space;
3388 template <typename...>
3389 friend struct union_map;
3390 template <typename...>
3391 friend struct union_pw_aff;
3392 template <typename...>
3393 friend struct union_pw_aff_list;
3394 template <typename...>
3395 friend struct union_pw_multi_aff;
3396 template <typename...>
3397 friend struct union_set;
3398 template <typename...>
3399 friend struct union_set_list;
3400 template <typename...>
3401 friend struct val;
3402 template <typename...>
3403 friend struct val_list;
3405 map() = default;
3406 template <typename Arg1, typename Arg2, typename Arg3,
3407 typename std::enable_if<
3408 std::is_base_of<Domain, Arg1>{} &&
3409 std::is_base_of<Range, Arg2>{} &&
3410 std::is_base_of<Range2, Arg3>{},
3411 bool>::type = true>
3412 map(const map<pair<Arg1, Arg2>, Arg3> &obj) : isl::map(obj) {}
3413 private:
3414 template <typename base,
3415 typename std::enable_if<
3416 std::is_same<base, isl::map>{}, bool>::type = true>
3417 map(const base &obj) : isl::map(obj) {}
3418 public:
3419 static map from(const isl::map &obj) {
3420 return map(obj);
3422 inline /* implicit */ map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap);
3423 inline explicit map(const isl::ctx &ctx, const std::string &str);
3424 template <typename Domain2>
3425 inline typed::map<Domain2, Range2> apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const;
3426 template <typename Domain2>
3427 inline typed::union_map<Domain2, Range2> apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const;
3428 template <typename Domain2>
3429 inline typed::map<Domain2, Range2> apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &map2) const;
3430 template <typename Arg3>
3431 inline typed::map<pair<Domain, Range>, Arg3> apply_range(const typed::map<Range2, Arg3> &map2) const;
3432 template <typename Arg3>
3433 inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::union_map<Range2, Arg3> &umap2) const;
3434 template <typename Arg3>
3435 inline typed::map<pair<Domain, Range>, Arg3> apply_range(const typed::basic_map<Range2, Arg3> &map2) const;
3436 inline typed::map<pair<Domain, Range>, Range2> as_map() const;
3437 inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> as_multi_union_pw_aff() const;
3438 inline typed::pw_multi_aff<pair<Domain, Range>, Range2> as_pw_multi_aff() const;
3439 inline typed::union_pw_multi_aff<pair<Domain, Range>, Range2> as_union_pw_multi_aff() const;
3440 inline typed::set<Range2> bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const;
3441 inline typed::set<pair<Domain, Range>> bind_range(const typed::multi_id<Range2> &tuple) const;
3442 inline typed::map<pair<Domain, Range>, Range2> coalesce() const;
3443 inline typed::map<Domain, pair<Range, Range2>> curry() const;
3444 inline typed::set<pair<Domain, Range>, Range2> deltas() const = delete;
3445 inline typed::map<pair<Domain, Range>, Range2> detect_equalities() const;
3446 inline typed::set<pair<Domain, Range>> domain() const;
3447 inline typed::map<Domain, Range2> domain_factor_domain() const;
3448 inline typed::map<Range, Range2> domain_factor_range() const;
3449 inline typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map() const;
3450 inline typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_union_pw_multi_aff() const;
3451 template <typename Domain2>
3452 inline typed::map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::map<Domain2, Range2> &map2) const;
3453 template <typename Domain2>
3454 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::union_map<Domain2, Range2> &umap2) const;
3455 template <typename Domain2>
3456 inline typed::map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::basic_map<Domain2, Range2> &map2) const;
3457 inline typed::map<pair<Range, Domain>, Range2> domain_reverse() const;
3458 inline typed::id<pair<Domain, Range>, Range2> get_domain_tuple_id() const = delete;
3459 inline typed::map<pair<Domain, Range>, Range2> drop_unused_params() const;
3460 inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
3461 inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
3462 inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::aff<> &mpa) const = delete;
3463 inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::multi_aff<> &mpa) const = delete;
3464 inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::pw_aff<> &mpa) const = delete;
3465 inline typed::map<pair<Domain, Range>, Range2> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
3466 inline bool every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const;
3467 inline typed::map<pair<Domain, Range>, Range2> extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const;
3468 inline typed::map<Anonymous, Range2> flatten_domain() const;
3469 inline typed::map<pair<Domain, Range>, Range2> flatten_range() const = delete;
3470 inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const;
3471 inline void foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const;
3472 inline typed::map<pair<Domain, Range>, Range2> gist(const typed::map<pair<Domain, Range>, Range2> &context) const;
3473 inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const;
3474 inline typed::map<pair<Domain, Range>, Range2> gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const;
3475 inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::set<pair<Domain, Range>> &context) const;
3476 inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
3477 inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::basic_set<pair<Domain, Range>> &context) const;
3478 inline typed::map<pair<Domain, Range>, Range2> gist_domain(const typed::point<pair<Domain, Range>> &context) const;
3479 inline typed::map<pair<Domain, Range>, Range2> gist_params(const typed::set<> &context) const;
3480 inline typed::map<pair<Domain, Range>, Range2> gist_params(const typed::basic_set<> &context) const;
3481 inline typed::map<pair<Domain, Range>, Range2> gist_params(const typed::point<> &context) const;
3482 inline typed::map<pair<Domain, Range>, Range2> intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const;
3483 inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
3484 inline typed::map<pair<Domain, Range>, Range2> intersect(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const;
3485 inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::set<pair<Domain, Range>> &set) const;
3486 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::space<pair<Domain, Range>> &space) const;
3487 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
3488 inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::basic_set<pair<Domain, Range>> &set) const;
3489 inline typed::map<pair<Domain, Range>, Range2> intersect_domain(const typed::point<pair<Domain, Range>> &set) const;
3490 inline typed::map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::set<Domain> &domain) const;
3491 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::union_set<Domain> &domain) const;
3492 inline typed::map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::basic_set<Domain> &domain) const;
3493 inline typed::map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::point<Domain> &domain) const;
3494 inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::set<> &params) const;
3495 inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::basic_set<> &params) const;
3496 inline typed::map<pair<Domain, Range>, Range2> intersect_params(const typed::point<> &params) const;
3497 inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::set<Range2> &set) const;
3498 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::space<Range2> &space) const;
3499 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::union_set<Range2> &uset) const;
3500 inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::basic_set<Range2> &set) const;
3501 inline typed::map<pair<Domain, Range>, Range2> intersect_range(const typed::point<Range2> &set) const;
3502 inline typed::map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
3503 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
3504 inline typed::map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete;
3505 inline typed::map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete;
3506 inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
3507 inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::aff<> &mpa) const = delete;
3508 inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
3509 inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
3510 inline typed::map<pair<Domain, Range>, Range2> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
3511 inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
3512 inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::aff<> &mpa) const = delete;
3513 inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
3514 inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
3515 inline typed::map<pair<Domain, Range>, Range2> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
3516 inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
3517 inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::aff<> &mpa) const = delete;
3518 inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
3519 inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
3520 inline typed::map<pair<Domain, Range>, Range2> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
3521 inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
3522 inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::aff<> &mpa) const = delete;
3523 inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
3524 inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
3525 inline typed::map<pair<Domain, Range>, Range2> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
3526 inline typed::map<pair<Domain, Range>, Range2> lexmax() const;
3527 inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmax_pw_multi_aff() const;
3528 inline typed::map<pair<Domain, Range>, Range2> lexmin() const;
3529 inline typed::pw_multi_aff<pair<Domain, Range>, Range2> lexmin_pw_multi_aff() const;
3530 inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const;
3531 inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::aff<pair<Domain, Range>, Range2> &lower) const;
3532 inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &lower) const;
3533 inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &lower) const;
3534 inline typed::map<pair<Domain, Range>, Range2> lower_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &lower) const;
3535 inline typed::map_list<pair<Domain, Range>, Range2> map_list() const;
3536 inline typed::multi_pw_aff<pair<Domain, Range>, Range2> max_multi_pw_aff() const;
3537 inline typed::multi_pw_aff<pair<Domain, Range>, Range2> min_multi_pw_aff() const;
3538 inline typed::set<> params() const;
3539 template <typename Domain2>
3540 inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
3541 template <typename Domain2>
3542 inline typed::map<Domain2, Range2> preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
3543 template <typename Domain2>
3544 inline typed::map<Domain2, Range2> preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
3545 template <typename Domain2>
3546 inline typed::union_map<Domain2, Range2> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
3547 template <typename Arg3>
3548 inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const;
3549 template <typename Arg3>
3550 inline typed::map<pair<Domain, Range>, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const;
3551 template <typename Arg3>
3552 inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const;
3553 template <typename Domain2, typename Arg3>
3554 inline typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
3555 template <typename Domain2, typename Arg3>
3556 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
3557 template <typename Domain2, typename Arg3>
3558 inline typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::basic_map<Domain2, Arg3> &map2) const;
3559 inline typed::map<pair<Domain, Range>, Range2> project_out_all_params() const;
3560 inline typed::map<pair<Domain, Range>, Range2> project_out_param(const typed::id<Anonymous> &id) const;
3561 inline typed::map<pair<Domain, Range>, Range2> project_out_param(const std::string &id) const;
3562 inline typed::map<pair<Domain, Range>, Range2> project_out_param(const typed::id_list<Anonymous> &list) const;
3563 inline typed::set<Range2> range() const;
3564 inline typed::map<pair<Domain, Range>, Range2> range_factor_domain() const = delete;
3565 inline typed::map<pair<Domain, Range>, Range2> range_factor_range() const = delete;
3566 inline typed::fixed_box<pair<Domain, Range>, Range2> range_lattice_tile() const;
3567 inline typed::fixed_box<pair<Domain, Range>, Range2> get_range_lattice_tile() const = delete;
3568 inline typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> range_map() const;
3569 template <typename Arg3>
3570 inline typed::map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const;
3571 template <typename Arg3>
3572 inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const;
3573 template <typename Arg3>
3574 inline typed::map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &map2) const;
3575 inline typed::map<pair<Domain, Range>, Range2> range_reverse() const = delete;
3576 inline typed::fixed_box<pair<Domain, Range>, Range2> range_simple_fixed_box_hull() const;
3577 inline typed::fixed_box<pair<Domain, Range>, Range2> get_range_simple_fixed_box_hull() const = delete;
3578 inline typed::id<pair<Domain, Range>, Range2> get_range_tuple_id() const = delete;
3579 inline typed::map<Range2, pair<Domain, Range>> reverse() const;
3580 inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const typed::id<> &id) const = delete;
3581 inline typed::map<pair<Domain, Range>, Range2> set_domain_tuple(const std::string &id) const = delete;
3582 template <typename Arg2>
3583 inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const typed::id<Anonymous> &id) const;
3584 template <typename Arg2>
3585 inline typed::map<pair<Domain, Range>, Arg2> set_range_tuple(const std::string &id) const;
3586 inline typed::space<pair<Domain, Range>, Range2> space() const;
3587 inline typed::space<pair<Domain, Range>, Range2> get_space() const = delete;
3588 inline typed::map<pair<Domain, Range>, Range2> subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const;
3589 inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
3590 inline typed::map<pair<Domain, Range>, Range2> subtract(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const;
3591 inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const;
3592 inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::union_set<Range2> &dom) const;
3593 inline typed::union_map<pair<Domain, Range>, Range2> to_union_map() const;
3594 inline typed::map<pair<Domain, Range>, Range2> uncurry() const = delete;
3595 inline typed::map<pair<Domain, Range>, Range2> unite(const typed::map<pair<Domain, Range>, Range2> &map2) const;
3596 inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
3597 inline typed::map<pair<Domain, Range>, Range2> unite(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const;
3598 static inline typed::map<pair<Domain, Range>, Range2> universe(const typed::space<pair<Domain, Range>, Range2> &space);
3599 inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const;
3600 inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::aff<pair<Domain, Range>, Range2> &upper) const;
3601 inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &upper) const;
3602 inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &upper) const;
3603 inline typed::map<pair<Domain, Range>, Range2> upper_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &upper) const;
3604 inline typed::set<pair<pair<Domain, Range>, Range2>> wrap() const;
3607 template <typename Domain>
3608 struct map<Domain, Domain> : public isl::map {
3609 template <typename...>
3610 friend struct aff;
3611 template <typename...>
3612 friend struct aff_list;
3613 template <typename...>
3614 friend struct basic_map;
3615 template <typename...>
3616 friend struct basic_set;
3617 template <typename...>
3618 friend struct fixed_box;
3619 template <typename...>
3620 friend struct id;
3621 template <typename...>
3622 friend struct id_list;
3623 template <typename...>
3624 friend struct map;
3625 template <typename...>
3626 friend struct map_list;
3627 template <typename...>
3628 friend struct multi_aff;
3629 template <typename...>
3630 friend struct multi_id;
3631 template <typename...>
3632 friend struct multi_pw_aff;
3633 template <typename...>
3634 friend struct multi_union_pw_aff;
3635 template <typename...>
3636 friend struct multi_val;
3637 template <typename...>
3638 friend struct point;
3639 template <typename...>
3640 friend struct pw_aff;
3641 template <typename...>
3642 friend struct pw_aff_list;
3643 template <typename...>
3644 friend struct pw_multi_aff;
3645 template <typename...>
3646 friend struct pw_multi_aff_list;
3647 template <typename...>
3648 friend struct set;
3649 template <typename...>
3650 friend struct set_list;
3651 template <typename...>
3652 friend struct space;
3653 template <typename...>
3654 friend struct union_map;
3655 template <typename...>
3656 friend struct union_pw_aff;
3657 template <typename...>
3658 friend struct union_pw_aff_list;
3659 template <typename...>
3660 friend struct union_pw_multi_aff;
3661 template <typename...>
3662 friend struct union_set;
3663 template <typename...>
3664 friend struct union_set_list;
3665 template <typename...>
3666 friend struct val;
3667 template <typename...>
3668 friend struct val_list;
3670 map() = default;
3671 template <typename Arg1,
3672 typename std::enable_if<
3673 std::is_base_of<Domain, Arg1>{},
3674 bool>::type = true>
3675 map(const map<Arg1, Arg1> &obj) : isl::map(obj) {}
3676 private:
3677 template <typename base,
3678 typename std::enable_if<
3679 std::is_same<base, isl::map>{}, bool>::type = true>
3680 map(const base &obj) : isl::map(obj) {}
3681 public:
3682 static map from(const isl::map &obj) {
3683 return map(obj);
3685 inline /* implicit */ map(const typed::basic_map<Domain, Domain> &bmap);
3686 inline explicit map(const isl::ctx &ctx, const std::string &str);
3687 template <typename Domain2>
3688 inline typed::map<Domain2, Domain> apply_domain(const typed::map<Domain, Domain2> &map2) const;
3689 template <typename Domain2>
3690 inline typed::union_map<Domain2, Domain> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
3691 template <typename Domain2>
3692 inline typed::map<Domain2, Domain> apply_domain(const typed::basic_map<Domain, Domain2> &map2) const;
3693 template <typename Range2>
3694 inline typed::map<Domain, Range2> apply_range(const typed::map<Domain, Range2> &map2) const;
3695 template <typename Range2>
3696 inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Domain, Range2> &umap2) const;
3697 template <typename Range2>
3698 inline typed::map<Domain, Range2> apply_range(const typed::basic_map<Domain, Range2> &map2) const;
3699 inline typed::map<Domain, Domain> as_map() const;
3700 inline typed::multi_union_pw_aff<Domain, Domain> as_multi_union_pw_aff() const;
3701 inline typed::pw_multi_aff<Domain, Domain> as_pw_multi_aff() const;
3702 inline typed::union_pw_multi_aff<Domain, Domain> as_union_pw_multi_aff() const;
3703 inline typed::set<Domain> bind_domain(const typed::multi_id<Domain> &tuple) const;
3704 inline typed::set<Domain> bind_range(const typed::multi_id<Domain> &tuple) const;
3705 inline typed::map<Domain, Domain> coalesce() const;
3706 inline typed::map<Domain, Domain> curry() const = delete;
3707 inline typed::set<Domain> deltas() const;
3708 inline typed::map<Domain, Domain> detect_equalities() const;
3709 inline typed::set<Domain> domain() const;
3710 inline typed::map<Domain, Domain> domain_factor_domain() const = delete;
3711 inline typed::map<Domain, Domain> domain_factor_range() const = delete;
3712 inline typed::union_map<pair<Domain, Domain>, Domain> domain_map() const;
3713 inline typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> domain_map_union_pw_multi_aff() const;
3714 template <typename Domain2>
3715 inline typed::map<pair<Domain, Domain2>, Domain> domain_product(const typed::map<Domain2, Domain> &map2) const;
3716 template <typename Domain2>
3717 inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::union_map<Domain2, Domain> &umap2) const;
3718 template <typename Domain2>
3719 inline typed::map<pair<Domain, Domain2>, Domain> domain_product(const typed::basic_map<Domain2, Domain> &map2) const;
3720 inline typed::map<Domain, Domain> domain_reverse() const = delete;
3721 inline typed::id<Domain, Domain> get_domain_tuple_id() const = delete;
3722 inline typed::map<Domain, Domain> drop_unused_params() const;
3723 template <typename Range>
3724 inline typed::map<Domain, Domain> eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
3725 template <typename Range>
3726 inline typed::union_map<Domain, Domain> eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const;
3727 inline typed::map<Domain, Domain> eq_at(const typed::aff<Domain, Anonymous> &mpa) const;
3728 template <typename Range>
3729 inline typed::map<Domain, Domain> eq_at(const typed::multi_aff<Domain, Range> &mpa) const;
3730 inline typed::map<Domain, Domain> eq_at(const typed::pw_aff<Domain, Anonymous> &mpa) const;
3731 template <typename Range>
3732 inline typed::map<Domain, Domain> eq_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
3733 inline bool every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const;
3734 inline typed::map<Domain, Domain> extract_map(const typed::space<Domain, Domain> &space) const;
3735 inline typed::map<Domain, Domain> flatten_domain() const = delete;
3736 inline typed::map<Domain, Domain> flatten_range() const = delete;
3737 inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const;
3738 inline void foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const;
3739 inline typed::map<Domain, Domain> gist(const typed::map<Domain, Domain> &context) const;
3740 inline typed::union_map<Domain, Domain> gist(const typed::union_map<Domain, Domain> &context) const;
3741 inline typed::map<Domain, Domain> gist(const typed::basic_map<Domain, Domain> &context) const;
3742 inline typed::map<Domain, Domain> gist_domain(const typed::set<Domain> &context) const;
3743 inline typed::union_map<Domain, Domain> gist_domain(const typed::union_set<Domain> &uset) const;
3744 inline typed::map<Domain, Domain> gist_domain(const typed::basic_set<Domain> &context) const;
3745 inline typed::map<Domain, Domain> gist_domain(const typed::point<Domain> &context) const;
3746 inline typed::map<Domain, Domain> gist_params(const typed::set<> &context) const;
3747 inline typed::map<Domain, Domain> gist_params(const typed::basic_set<> &context) const;
3748 inline typed::map<Domain, Domain> gist_params(const typed::point<> &context) const;
3749 inline typed::map<Domain, Domain> intersect(const typed::map<Domain, Domain> &map2) const;
3750 inline typed::union_map<Domain, Domain> intersect(const typed::union_map<Domain, Domain> &umap2) const;
3751 inline typed::map<Domain, Domain> intersect(const typed::basic_map<Domain, Domain> &map2) const;
3752 inline typed::map<Domain, Domain> intersect_domain(const typed::set<Domain> &set) const;
3753 inline typed::union_map<Domain, Domain> intersect_domain(const typed::space<Domain> &space) const;
3754 inline typed::union_map<Domain, Domain> intersect_domain(const typed::union_set<Domain> &uset) const;
3755 inline typed::map<Domain, Domain> intersect_domain(const typed::basic_set<Domain> &set) const;
3756 inline typed::map<Domain, Domain> intersect_domain(const typed::point<Domain> &set) const;
3757 inline typed::map<Domain, Domain> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
3758 inline typed::union_map<Domain, Domain> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
3759 inline typed::map<Domain, Domain> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete;
3760 inline typed::map<Domain, Domain> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete;
3761 inline typed::map<Domain, Domain> intersect_params(const typed::set<> &params) const;
3762 inline typed::map<Domain, Domain> intersect_params(const typed::basic_set<> &params) const;
3763 inline typed::map<Domain, Domain> intersect_params(const typed::point<> &params) const;
3764 inline typed::map<Domain, Domain> intersect_range(const typed::set<Domain> &set) const;
3765 inline typed::union_map<Domain, Domain> intersect_range(const typed::space<Domain> &space) const;
3766 inline typed::union_map<Domain, Domain> intersect_range(const typed::union_set<Domain> &uset) const;
3767 inline typed::map<Domain, Domain> intersect_range(const typed::basic_set<Domain> &set) const;
3768 inline typed::map<Domain, Domain> intersect_range(const typed::point<Domain> &set) const;
3769 inline typed::map<Domain, Domain> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
3770 inline typed::union_map<Domain, Domain> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
3771 inline typed::map<Domain, Domain> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete;
3772 inline typed::map<Domain, Domain> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete;
3773 template <typename Range>
3774 inline typed::map<Domain, Domain> lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
3775 inline typed::map<Domain, Domain> lex_ge_at(const typed::aff<Domain, Anonymous> &mpa) const;
3776 template <typename Range>
3777 inline typed::map<Domain, Domain> lex_ge_at(const typed::multi_aff<Domain, Range> &mpa) const;
3778 inline typed::map<Domain, Domain> lex_ge_at(const typed::pw_aff<Domain, Anonymous> &mpa) const;
3779 template <typename Range>
3780 inline typed::map<Domain, Domain> lex_ge_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
3781 template <typename Range>
3782 inline typed::map<Domain, Domain> lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
3783 inline typed::map<Domain, Domain> lex_gt_at(const typed::aff<Domain, Anonymous> &mpa) const;
3784 template <typename Range>
3785 inline typed::map<Domain, Domain> lex_gt_at(const typed::multi_aff<Domain, Range> &mpa) const;
3786 inline typed::map<Domain, Domain> lex_gt_at(const typed::pw_aff<Domain, Anonymous> &mpa) const;
3787 template <typename Range>
3788 inline typed::map<Domain, Domain> lex_gt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
3789 template <typename Range>
3790 inline typed::map<Domain, Domain> lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
3791 inline typed::map<Domain, Domain> lex_le_at(const typed::aff<Domain, Anonymous> &mpa) const;
3792 template <typename Range>
3793 inline typed::map<Domain, Domain> lex_le_at(const typed::multi_aff<Domain, Range> &mpa) const;
3794 inline typed::map<Domain, Domain> lex_le_at(const typed::pw_aff<Domain, Anonymous> &mpa) const;
3795 template <typename Range>
3796 inline typed::map<Domain, Domain> lex_le_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
3797 template <typename Range>
3798 inline typed::map<Domain, Domain> lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const;
3799 inline typed::map<Domain, Domain> lex_lt_at(const typed::aff<Domain, Anonymous> &mpa) const;
3800 template <typename Range>
3801 inline typed::map<Domain, Domain> lex_lt_at(const typed::multi_aff<Domain, Range> &mpa) const;
3802 inline typed::map<Domain, Domain> lex_lt_at(const typed::pw_aff<Domain, Anonymous> &mpa) const;
3803 template <typename Range>
3804 inline typed::map<Domain, Domain> lex_lt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const;
3805 inline typed::map<Domain, Domain> lexmax() const;
3806 inline typed::pw_multi_aff<Domain, Domain> lexmax_pw_multi_aff() const;
3807 inline typed::map<Domain, Domain> lexmin() const;
3808 inline typed::pw_multi_aff<Domain, Domain> lexmin_pw_multi_aff() const;
3809 inline typed::map<Domain, Domain> lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const;
3810 inline typed::map<Domain, Domain> lower_bound(const typed::aff<Domain, Domain> &lower) const;
3811 inline typed::map<Domain, Domain> lower_bound(const typed::multi_aff<Domain, Domain> &lower) const;
3812 inline typed::map<Domain, Domain> lower_bound(const typed::pw_aff<Domain, Domain> &lower) const;
3813 inline typed::map<Domain, Domain> lower_bound(const typed::pw_multi_aff<Domain, Domain> &lower) const;
3814 inline typed::map_list<Domain, Domain> map_list() const;
3815 inline typed::multi_pw_aff<Domain, Domain> max_multi_pw_aff() const;
3816 inline typed::multi_pw_aff<Domain, Domain> min_multi_pw_aff() const;
3817 inline typed::set<> params() const;
3818 template <typename Domain2>
3819 inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
3820 template <typename Domain2>
3821 inline typed::map<Domain2, Domain> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
3822 template <typename Domain2>
3823 inline typed::map<Domain2, Domain> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
3824 template <typename Domain2>
3825 inline typed::union_map<Domain2, Domain> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
3826 template <typename Range2>
3827 inline typed::map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Domain> &ma) const;
3828 template <typename Range2>
3829 inline typed::map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const;
3830 template <typename Range2>
3831 inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const;
3832 template <typename Domain2, typename Range2>
3833 inline typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
3834 template <typename Domain2, typename Range2>
3835 inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
3836 template <typename Domain2, typename Range2>
3837 inline typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::basic_map<Domain2, Range2> &map2) const;
3838 inline typed::map<Domain, Domain> project_out_all_params() const;
3839 inline typed::map<Domain, Domain> project_out_param(const typed::id<Anonymous> &id) const;
3840 inline typed::map<Domain, Domain> project_out_param(const std::string &id) const;
3841 inline typed::map<Domain, Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
3842 inline typed::set<Domain> range() const;
3843 inline typed::map<Domain, Domain> range_factor_domain() const = delete;
3844 inline typed::map<Domain, Domain> range_factor_range() const = delete;
3845 inline typed::fixed_box<Domain, Domain> range_lattice_tile() const;
3846 inline typed::fixed_box<Domain, Domain> get_range_lattice_tile() const = delete;
3847 inline typed::union_map<pair<Domain, Domain>, Domain> range_map() const;
3848 template <typename Range2>
3849 inline typed::map<Domain, pair<Domain, Range2>> range_product(const typed::map<Domain, Range2> &map2) const;
3850 template <typename Range2>
3851 inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
3852 template <typename Range2>
3853 inline typed::map<Domain, pair<Domain, Range2>> range_product(const typed::basic_map<Domain, Range2> &map2) const;
3854 inline typed::map<Domain, Domain> range_reverse() const = delete;
3855 inline typed::fixed_box<Domain, Domain> range_simple_fixed_box_hull() const;
3856 inline typed::fixed_box<Domain, Domain> get_range_simple_fixed_box_hull() const = delete;
3857 inline typed::id<Domain, Domain> get_range_tuple_id() const = delete;
3858 inline typed::map<Domain, Domain> reverse() const;
3859 template <typename Domain2>
3860 inline typed::map<Domain2, Domain> set_domain_tuple(const typed::id<Anonymous> &id) const;
3861 template <typename Domain2>
3862 inline typed::map<Domain2, Domain> set_domain_tuple(const std::string &id) const;
3863 template <typename Range2>
3864 inline typed::map<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
3865 template <typename Range2>
3866 inline typed::map<Domain, Range2> set_range_tuple(const std::string &id) const;
3867 inline typed::space<Domain, Domain> space() const;
3868 inline typed::space<Domain, Domain> get_space() const = delete;
3869 inline typed::map<Domain, Domain> subtract(const typed::map<Domain, Domain> &map2) const;
3870 inline typed::union_map<Domain, Domain> subtract(const typed::union_map<Domain, Domain> &umap2) const;
3871 inline typed::map<Domain, Domain> subtract(const typed::basic_map<Domain, Domain> &map2) const;
3872 inline typed::union_map<Domain, Domain> subtract_domain(const typed::union_set<Domain> &dom) const;
3873 inline typed::union_map<Domain, Domain> subtract_range(const typed::union_set<Domain> &dom) const;
3874 inline typed::union_map<Domain, Domain> to_union_map() const;
3875 inline typed::map<Domain, Domain> uncurry() const = delete;
3876 inline typed::map<Domain, Domain> unite(const typed::map<Domain, Domain> &map2) const;
3877 inline typed::union_map<Domain, Domain> unite(const typed::union_map<Domain, Domain> &umap2) const;
3878 inline typed::map<Domain, Domain> unite(const typed::basic_map<Domain, Domain> &map2) const;
3879 static inline typed::map<Domain, Domain> universe(const typed::space<Domain, Domain> &space);
3880 inline typed::map<Domain, Domain> upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const;
3881 inline typed::map<Domain, Domain> upper_bound(const typed::aff<Domain, Domain> &upper) const;
3882 inline typed::map<Domain, Domain> upper_bound(const typed::multi_aff<Domain, Domain> &upper) const;
3883 inline typed::map<Domain, Domain> upper_bound(const typed::pw_aff<Domain, Domain> &upper) const;
3884 inline typed::map<Domain, Domain> upper_bound(const typed::pw_multi_aff<Domain, Domain> &upper) const;
3885 inline typed::set<pair<Domain, Domain>> wrap() const;
3888 template <typename Domain, typename Range, typename Range2>
3889 struct map<Domain, pair<Range, Range2>> : public isl::map {
3890 template <typename...>
3891 friend struct aff;
3892 template <typename...>
3893 friend struct aff_list;
3894 template <typename...>
3895 friend struct basic_map;
3896 template <typename...>
3897 friend struct basic_set;
3898 template <typename...>
3899 friend struct fixed_box;
3900 template <typename...>
3901 friend struct id;
3902 template <typename...>
3903 friend struct id_list;
3904 template <typename...>
3905 friend struct map;
3906 template <typename...>
3907 friend struct map_list;
3908 template <typename...>
3909 friend struct multi_aff;
3910 template <typename...>
3911 friend struct multi_id;
3912 template <typename...>
3913 friend struct multi_pw_aff;
3914 template <typename...>
3915 friend struct multi_union_pw_aff;
3916 template <typename...>
3917 friend struct multi_val;
3918 template <typename...>
3919 friend struct point;
3920 template <typename...>
3921 friend struct pw_aff;
3922 template <typename...>
3923 friend struct pw_aff_list;
3924 template <typename...>
3925 friend struct pw_multi_aff;
3926 template <typename...>
3927 friend struct pw_multi_aff_list;
3928 template <typename...>
3929 friend struct set;
3930 template <typename...>
3931 friend struct set_list;
3932 template <typename...>
3933 friend struct space;
3934 template <typename...>
3935 friend struct union_map;
3936 template <typename...>
3937 friend struct union_pw_aff;
3938 template <typename...>
3939 friend struct union_pw_aff_list;
3940 template <typename...>
3941 friend struct union_pw_multi_aff;
3942 template <typename...>
3943 friend struct union_set;
3944 template <typename...>
3945 friend struct union_set_list;
3946 template <typename...>
3947 friend struct val;
3948 template <typename...>
3949 friend struct val_list;
3951 map() = default;
3952 template <typename Arg1, typename Arg2, typename Arg3,
3953 typename std::enable_if<
3954 std::is_base_of<Domain, Arg1>{} &&
3955 std::is_base_of<Range, Arg2>{} &&
3956 std::is_base_of<Range2, Arg3>{},
3957 bool>::type = true>
3958 map(const map<Arg1, pair<Arg2, Arg3>> &obj) : isl::map(obj) {}
3959 private:
3960 template <typename base,
3961 typename std::enable_if<
3962 std::is_same<base, isl::map>{}, bool>::type = true>
3963 map(const base &obj) : isl::map(obj) {}
3964 public:
3965 static map from(const isl::map &obj) {
3966 return map(obj);
3968 inline /* implicit */ map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap);
3969 inline explicit map(const isl::ctx &ctx, const std::string &str);
3970 template <typename Domain2>
3971 inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<Domain, Domain2> &map2) const;
3972 template <typename Domain2>
3973 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
3974 template <typename Domain2>
3975 inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<Domain, Domain2> &map2) const;
3976 template <typename Arg3>
3977 inline typed::map<Domain, Arg3> apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const;
3978 template <typename Arg3>
3979 inline typed::union_map<Domain, Arg3> apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const;
3980 template <typename Arg3>
3981 inline typed::map<Domain, Arg3> apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &map2) const;
3982 inline typed::map<Domain, pair<Range, Range2>> as_map() const;
3983 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
3984 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
3985 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> as_union_pw_multi_aff() const;
3986 inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
3987 inline typed::set<Domain> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
3988 inline typed::map<Domain, pair<Range, Range2>> coalesce() const;
3989 inline typed::map<Domain, pair<Range, Range2>> curry() const = delete;
3990 inline typed::set<Domain, pair<Range, Range2>> deltas() const = delete;
3991 inline typed::map<Domain, pair<Range, Range2>> detect_equalities() const;
3992 inline typed::set<Domain> domain() const;
3993 inline typed::map<Domain, pair<Range, Range2>> domain_factor_domain() const = delete;
3994 inline typed::map<Domain, pair<Range, Range2>> domain_factor_range() const = delete;
3995 inline typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> domain_map() const;
3996 inline typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_union_pw_multi_aff() const;
3997 template <typename Domain2>
3998 inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
3999 template <typename Domain2>
4000 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
4001 template <typename Domain2>
4002 inline typed::map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const;
4003 inline typed::map<Domain, pair<Range, Range2>> domain_reverse() const = delete;
4004 inline typed::id<Domain, pair<Range, Range2>> get_domain_tuple_id() const = delete;
4005 inline typed::map<Domain, pair<Range, Range2>> drop_unused_params() const;
4006 inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
4007 inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
4008 inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::aff<> &mpa) const = delete;
4009 inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::multi_aff<> &mpa) const = delete;
4010 inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::pw_aff<> &mpa) const = delete;
4011 inline typed::map<Domain, pair<Range, Range2>> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
4012 inline bool every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const;
4013 inline typed::map<Domain, pair<Range, Range2>> extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const;
4014 inline typed::map<Domain, pair<Range, Range2>> flatten_domain() const = delete;
4015 inline typed::map<Domain, Anonymous> flatten_range() const;
4016 inline void foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const;
4017 inline void foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const;
4018 inline typed::map<Domain, pair<Range, Range2>> gist(const typed::map<Domain, pair<Range, Range2>> &context) const;
4019 inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const;
4020 inline typed::map<Domain, pair<Range, Range2>> gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const;
4021 inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::set<Domain> &context) const;
4022 inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::union_set<Domain> &uset) const;
4023 inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::basic_set<Domain> &context) const;
4024 inline typed::map<Domain, pair<Range, Range2>> gist_domain(const typed::point<Domain> &context) const;
4025 inline typed::map<Domain, pair<Range, Range2>> gist_params(const typed::set<> &context) const;
4026 inline typed::map<Domain, pair<Range, Range2>> gist_params(const typed::basic_set<> &context) const;
4027 inline typed::map<Domain, pair<Range, Range2>> gist_params(const typed::point<> &context) const;
4028 inline typed::map<Domain, pair<Range, Range2>> intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const;
4029 inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
4030 inline typed::map<Domain, pair<Range, Range2>> intersect(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const;
4031 inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
4032 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
4033 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
4034 inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::basic_set<Domain> &set) const;
4035 inline typed::map<Domain, pair<Range, Range2>> intersect_domain(const typed::point<Domain> &set) const;
4036 inline typed::map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
4037 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
4038 inline typed::map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete;
4039 inline typed::map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete;
4040 inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
4041 inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &params) const;
4042 inline typed::map<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &params) const;
4043 inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
4044 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
4045 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
4046 inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const;
4047 inline typed::map<Domain, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &set) const;
4048 inline typed::map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::set<Range> &domain) const;
4049 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const;
4050 inline typed::map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const;
4051 inline typed::map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::point<Range> &domain) const;
4052 inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
4053 inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::aff<> &mpa) const = delete;
4054 inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
4055 inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
4056 inline typed::map<Domain, pair<Range, Range2>> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
4057 inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
4058 inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::aff<> &mpa) const = delete;
4059 inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
4060 inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
4061 inline typed::map<Domain, pair<Range, Range2>> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
4062 inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
4063 inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::aff<> &mpa) const = delete;
4064 inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
4065 inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
4066 inline typed::map<Domain, pair<Range, Range2>> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
4067 inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
4068 inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::aff<> &mpa) const = delete;
4069 inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
4070 inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
4071 inline typed::map<Domain, pair<Range, Range2>> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
4072 inline typed::map<Domain, pair<Range, Range2>> lexmax() const;
4073 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmax_pw_multi_aff() const;
4074 inline typed::map<Domain, pair<Range, Range2>> lexmin() const;
4075 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> lexmin_pw_multi_aff() const;
4076 inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const;
4077 inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::aff<Domain, pair<Range, Range2>> &lower) const;
4078 inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &lower) const;
4079 inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &lower) const;
4080 inline typed::map<Domain, pair<Range, Range2>> lower_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &lower) const;
4081 inline typed::map_list<Domain, pair<Range, Range2>> map_list() const;
4082 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max_multi_pw_aff() const;
4083 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min_multi_pw_aff() const;
4084 inline typed::set<> params() const;
4085 template <typename Domain2>
4086 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
4087 template <typename Domain2>
4088 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
4089 template <typename Domain2>
4090 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
4091 template <typename Domain2>
4092 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
4093 template <typename Arg3>
4094 inline typed::map<Domain, Arg3> preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const;
4095 template <typename Arg3>
4096 inline typed::map<Domain, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const;
4097 template <typename Arg3>
4098 inline typed::union_map<Domain, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const;
4099 template <typename Domain2, typename Arg3>
4100 inline typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::map<Domain2, Arg3> &map2) const;
4101 template <typename Domain2, typename Arg3>
4102 inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
4103 template <typename Domain2, typename Arg3>
4104 inline typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::basic_map<Domain2, Arg3> &map2) const;
4105 inline typed::map<Domain, pair<Range, Range2>> project_out_all_params() const;
4106 inline typed::map<Domain, pair<Range, Range2>> project_out_param(const typed::id<Anonymous> &id) const;
4107 inline typed::map<Domain, pair<Range, Range2>> project_out_param(const std::string &id) const;
4108 inline typed::map<Domain, pair<Range, Range2>> project_out_param(const typed::id_list<Anonymous> &list) const;
4109 inline typed::set<pair<Range, Range2>> range() const;
4110 inline typed::map<Domain, Range> range_factor_domain() const;
4111 inline typed::map<Domain, Range2> range_factor_range() const;
4112 inline typed::fixed_box<Domain, pair<Range, Range2>> range_lattice_tile() const;
4113 inline typed::fixed_box<Domain, pair<Range, Range2>> get_range_lattice_tile() const = delete;
4114 inline typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
4115 template <typename Arg3>
4116 inline typed::map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::map<Domain, Arg3> &map2) const;
4117 template <typename Arg3>
4118 inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_map<Domain, Arg3> &umap2) const;
4119 template <typename Arg3>
4120 inline typed::map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::basic_map<Domain, Arg3> &map2) const;
4121 inline typed::map<Domain, pair<Range2, Range>> range_reverse() const;
4122 inline typed::fixed_box<Domain, pair<Range, Range2>> range_simple_fixed_box_hull() const;
4123 inline typed::fixed_box<Domain, pair<Range, Range2>> get_range_simple_fixed_box_hull() const = delete;
4124 inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
4125 inline typed::map<pair<Range, Range2>, Domain> reverse() const;
4126 template <typename Domain2>
4127 inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const typed::id<Anonymous> &id) const;
4128 template <typename Domain2>
4129 inline typed::map<Domain2, pair<Range, Range2>> set_domain_tuple(const std::string &id) const;
4130 inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
4131 inline typed::map<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
4132 inline typed::space<Domain, pair<Range, Range2>> space() const;
4133 inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
4134 inline typed::map<Domain, pair<Range, Range2>> subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const;
4135 inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
4136 inline typed::map<Domain, pair<Range, Range2>> subtract(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const;
4137 inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &dom) const;
4138 inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
4139 inline typed::union_map<Domain, pair<Range, Range2>> to_union_map() const;
4140 inline typed::map<pair<Domain, Range>, Range2> uncurry() const;
4141 inline typed::map<Domain, pair<Range, Range2>> unite(const typed::map<Domain, pair<Range, Range2>> &map2) const;
4142 inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
4143 inline typed::map<Domain, pair<Range, Range2>> unite(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const;
4144 static inline typed::map<Domain, pair<Range, Range2>> universe(const typed::space<Domain, pair<Range, Range2>> &space);
4145 inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const;
4146 inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::aff<Domain, pair<Range, Range2>> &upper) const;
4147 inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &upper) const;
4148 inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &upper) const;
4149 inline typed::map<Domain, pair<Range, Range2>> upper_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upper) const;
4150 inline typed::set<pair<Domain, pair<Range, Range2>>> wrap() const;
4153 template <typename T1, typename T2>
4154 struct map<pair<T1, T2>, pair<T1, T2>> : public isl::map {
4155 template <typename...>
4156 friend struct aff;
4157 template <typename...>
4158 friend struct aff_list;
4159 template <typename...>
4160 friend struct basic_map;
4161 template <typename...>
4162 friend struct basic_set;
4163 template <typename...>
4164 friend struct fixed_box;
4165 template <typename...>
4166 friend struct id;
4167 template <typename...>
4168 friend struct id_list;
4169 template <typename...>
4170 friend struct map;
4171 template <typename...>
4172 friend struct map_list;
4173 template <typename...>
4174 friend struct multi_aff;
4175 template <typename...>
4176 friend struct multi_id;
4177 template <typename...>
4178 friend struct multi_pw_aff;
4179 template <typename...>
4180 friend struct multi_union_pw_aff;
4181 template <typename...>
4182 friend struct multi_val;
4183 template <typename...>
4184 friend struct point;
4185 template <typename...>
4186 friend struct pw_aff;
4187 template <typename...>
4188 friend struct pw_aff_list;
4189 template <typename...>
4190 friend struct pw_multi_aff;
4191 template <typename...>
4192 friend struct pw_multi_aff_list;
4193 template <typename...>
4194 friend struct set;
4195 template <typename...>
4196 friend struct set_list;
4197 template <typename...>
4198 friend struct space;
4199 template <typename...>
4200 friend struct union_map;
4201 template <typename...>
4202 friend struct union_pw_aff;
4203 template <typename...>
4204 friend struct union_pw_aff_list;
4205 template <typename...>
4206 friend struct union_pw_multi_aff;
4207 template <typename...>
4208 friend struct union_set;
4209 template <typename...>
4210 friend struct union_set_list;
4211 template <typename...>
4212 friend struct val;
4213 template <typename...>
4214 friend struct val_list;
4216 map() = default;
4217 template <typename Arg1, typename Arg2,
4218 typename std::enable_if<
4219 std::is_base_of<T1, Arg1>{} &&
4220 std::is_base_of<T2, Arg2>{},
4221 bool>::type = true>
4222 map(const map<pair<Arg1, Arg2>, pair<Arg1, Arg2>> &obj) : isl::map(obj) {}
4223 private:
4224 template <typename base,
4225 typename std::enable_if<
4226 std::is_same<base, isl::map>{}, bool>::type = true>
4227 map(const base &obj) : isl::map(obj) {}
4228 public:
4229 static map from(const isl::map &obj) {
4230 return map(obj);
4232 inline /* implicit */ map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap);
4233 inline explicit map(const isl::ctx &ctx, const std::string &str);
4234 template <typename Domain2>
4235 inline typed::map<Domain2, pair<T1, T2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
4236 template <typename Domain2>
4237 inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
4238 template <typename Domain2>
4239 inline typed::map<Domain2, pair<T1, T2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const;
4240 template <typename Range2>
4241 inline typed::map<pair<T1, T2>, Range2> apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const;
4242 template <typename Range2>
4243 inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
4244 template <typename Range2>
4245 inline typed::map<pair<T1, T2>, Range2> apply_range(const typed::basic_map<pair<T1, T2>, Range2> &map2) const;
4246 inline typed::map<pair<T1, T2>, pair<T1, T2>> as_map() const;
4247 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> as_multi_union_pw_aff() const;
4248 inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_pw_multi_aff() const;
4249 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_union_pw_multi_aff() const;
4250 inline typed::set<pair<T1, T2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
4251 inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const;
4252 inline typed::map<pair<T1, T2>, pair<T1, T2>> coalesce() const;
4253 inline typed::map<T1, pair<T2, pair<T1, T2>>> curry() const;
4254 inline typed::set<pair<T1, T2>> deltas() const;
4255 inline typed::map<pair<T1, T2>, pair<T1, T2>> detect_equalities() const;
4256 inline typed::set<pair<T1, T2>> domain() const;
4257 inline typed::map<T1, pair<T1, T2>> domain_factor_domain() const;
4258 inline typed::map<T2, pair<T1, T2>> domain_factor_range() const;
4259 inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map() const;
4260 inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
4261 template <typename Domain2>
4262 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const;
4263 template <typename Domain2>
4264 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const;
4265 template <typename Domain2>
4266 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &map2) const;
4267 inline typed::map<pair<T2, T1>, pair<T1, T2>> domain_reverse() const;
4268 inline typed::id<pair<T1, T2>, pair<T1, T2>> get_domain_tuple_id() const = delete;
4269 inline typed::map<pair<T1, T2>, pair<T1, T2>> drop_unused_params() const;
4270 template <typename Range>
4271 inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
4272 template <typename Range>
4273 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const;
4274 inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const;
4275 template <typename Range>
4276 inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
4277 inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const;
4278 template <typename Range>
4279 inline typed::map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
4280 inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const;
4281 inline typed::map<pair<T1, T2>, pair<T1, T2>> extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const;
4282 inline typed::map<Anonymous, pair<T1, T2>> flatten_domain() const;
4283 inline typed::map<pair<T1, T2>, Anonymous> flatten_range() const;
4284 inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
4285 inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
4286 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const;
4287 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const;
4288 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const;
4289 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
4290 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
4291 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::basic_set<pair<T1, T2>> &context) const;
4292 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::point<pair<T1, T2>> &context) const;
4293 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_params(const typed::set<> &context) const;
4294 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_params(const typed::basic_set<> &context) const;
4295 inline typed::map<pair<T1, T2>, pair<T1, T2>> gist_params(const typed::point<> &context) const;
4296 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
4297 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
4298 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const;
4299 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
4300 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
4301 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
4302 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const;
4303 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::point<pair<T1, T2>> &set) const;
4304 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::set<T1> &domain) const;
4305 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const;
4306 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const;
4307 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::point<T1> &domain) const;
4308 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::set<> &params) const;
4309 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::basic_set<> &params) const;
4310 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::point<> &params) const;
4311 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::set<pair<T1, T2>> &set) const;
4312 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::space<pair<T1, T2>> &space) const;
4313 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::union_set<pair<T1, T2>> &uset) const;
4314 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::basic_set<pair<T1, T2>> &set) const;
4315 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::point<pair<T1, T2>> &set) const;
4316 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::set<T1> &domain) const;
4317 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::union_set<T1> &domain) const;
4318 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::basic_set<T1> &domain) const;
4319 inline typed::map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::point<T1> &domain) const;
4320 template <typename Range>
4321 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
4322 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const;
4323 template <typename Range>
4324 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
4325 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const;
4326 template <typename Range>
4327 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_ge_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
4328 template <typename Range>
4329 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
4330 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const;
4331 template <typename Range>
4332 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
4333 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const;
4334 template <typename Range>
4335 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_gt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
4336 template <typename Range>
4337 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
4338 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const;
4339 template <typename Range>
4340 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
4341 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const;
4342 template <typename Range>
4343 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_le_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
4344 template <typename Range>
4345 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const;
4346 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const;
4347 template <typename Range>
4348 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const;
4349 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const;
4350 template <typename Range>
4351 inline typed::map<pair<T1, T2>, pair<T1, T2>> lex_lt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const;
4352 inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmax() const;
4353 inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmax_pw_multi_aff() const;
4354 inline typed::map<pair<T1, T2>, pair<T1, T2>> lexmin() const;
4355 inline typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> lexmin_pw_multi_aff() const;
4356 inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
4357 inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
4358 inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
4359 inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
4360 inline typed::map<pair<T1, T2>, pair<T1, T2>> lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const;
4361 inline typed::map_list<pair<T1, T2>, pair<T1, T2>> map_list() const;
4362 inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> max_multi_pw_aff() const;
4363 inline typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> min_multi_pw_aff() const;
4364 inline typed::set<> params() const;
4365 template <typename Domain2>
4366 inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
4367 template <typename Domain2>
4368 inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
4369 template <typename Domain2>
4370 inline typed::map<Domain2, pair<T1, T2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
4371 template <typename Domain2>
4372 inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
4373 template <typename Range2>
4374 inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const;
4375 template <typename Range2>
4376 inline typed::map<pair<T1, T2>, Range2> preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const;
4377 template <typename Range2>
4378 inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const;
4379 template <typename Domain2, typename Range2>
4380 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::map<Domain2, Range2> &map2) const;
4381 template <typename Domain2, typename Range2>
4382 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
4383 template <typename Domain2, typename Range2>
4384 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::basic_map<Domain2, Range2> &map2) const;
4385 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_all_params() const;
4386 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_param(const typed::id<Anonymous> &id) const;
4387 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_param(const std::string &id) const;
4388 inline typed::map<pair<T1, T2>, pair<T1, T2>> project_out_param(const typed::id_list<Anonymous> &list) const;
4389 inline typed::set<pair<T1, T2>> range() const;
4390 inline typed::map<pair<T1, T2>, T1> range_factor_domain() const;
4391 inline typed::map<pair<T1, T2>, T2> range_factor_range() const;
4392 inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_lattice_tile() const;
4393 inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> get_range_lattice_tile() const = delete;
4394 inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> range_map() const;
4395 template <typename Range2>
4396 inline typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::map<pair<T1, T2>, Range2> &map2) const;
4397 template <typename Range2>
4398 inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
4399 template <typename Range2>
4400 inline typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::basic_map<pair<T1, T2>, Range2> &map2) const;
4401 inline typed::map<pair<T1, T2>, pair<T2, T1>> range_reverse() const;
4402 inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> range_simple_fixed_box_hull() const;
4403 inline typed::fixed_box<pair<T1, T2>, pair<T1, T2>> get_range_simple_fixed_box_hull() const = delete;
4404 inline typed::id<pair<T1, T2>, pair<T1, T2>> get_range_tuple_id() const = delete;
4405 inline typed::map<pair<T1, T2>, pair<T1, T2>> reverse() const;
4406 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const typed::id<> &id) const = delete;
4407 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_domain_tuple(const std::string &id) const = delete;
4408 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const typed::id<> &id) const = delete;
4409 inline typed::map<pair<T1, T2>, pair<T1, T2>> set_range_tuple(const std::string &id) const = delete;
4410 inline typed::space<pair<T1, T2>, pair<T1, T2>> space() const;
4411 inline typed::space<pair<T1, T2>, pair<T1, T2>> get_space() const = delete;
4412 inline typed::map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
4413 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
4414 inline typed::map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const;
4415 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
4416 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::union_set<pair<T1, T2>> &dom) const;
4417 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> to_union_map() const;
4418 inline typed::map<pair<pair<T1, T2>, T1>, T2> uncurry() const;
4419 inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const;
4420 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
4421 inline typed::map<pair<T1, T2>, pair<T1, T2>> unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const;
4422 static inline typed::map<pair<T1, T2>, pair<T1, T2>> universe(const typed::space<pair<T1, T2>, pair<T1, T2>> &space);
4423 inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
4424 inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
4425 inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
4426 inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
4427 inline typed::map<pair<T1, T2>, pair<T1, T2>> upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const;
4428 inline typed::set<pair<pair<T1, T2>, pair<T1, T2>>> wrap() const;
4431 template <typename T1, typename T2, typename Range, typename Range2>
4432 struct map<pair<T1, T2>, pair<Range, Range2>> : public isl::map {
4433 template <typename...>
4434 friend struct aff;
4435 template <typename...>
4436 friend struct aff_list;
4437 template <typename...>
4438 friend struct basic_map;
4439 template <typename...>
4440 friend struct basic_set;
4441 template <typename...>
4442 friend struct fixed_box;
4443 template <typename...>
4444 friend struct id;
4445 template <typename...>
4446 friend struct id_list;
4447 template <typename...>
4448 friend struct map;
4449 template <typename...>
4450 friend struct map_list;
4451 template <typename...>
4452 friend struct multi_aff;
4453 template <typename...>
4454 friend struct multi_id;
4455 template <typename...>
4456 friend struct multi_pw_aff;
4457 template <typename...>
4458 friend struct multi_union_pw_aff;
4459 template <typename...>
4460 friend struct multi_val;
4461 template <typename...>
4462 friend struct point;
4463 template <typename...>
4464 friend struct pw_aff;
4465 template <typename...>
4466 friend struct pw_aff_list;
4467 template <typename...>
4468 friend struct pw_multi_aff;
4469 template <typename...>
4470 friend struct pw_multi_aff_list;
4471 template <typename...>
4472 friend struct set;
4473 template <typename...>
4474 friend struct set_list;
4475 template <typename...>
4476 friend struct space;
4477 template <typename...>
4478 friend struct union_map;
4479 template <typename...>
4480 friend struct union_pw_aff;
4481 template <typename...>
4482 friend struct union_pw_aff_list;
4483 template <typename...>
4484 friend struct union_pw_multi_aff;
4485 template <typename...>
4486 friend struct union_set;
4487 template <typename...>
4488 friend struct union_set_list;
4489 template <typename...>
4490 friend struct val;
4491 template <typename...>
4492 friend struct val_list;
4494 map() = default;
4495 template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
4496 typename std::enable_if<
4497 std::is_base_of<T1, Arg1>{} &&
4498 std::is_base_of<T2, Arg2>{} &&
4499 std::is_base_of<Range, Arg3>{} &&
4500 std::is_base_of<Range2, Arg4>{},
4501 bool>::type = true>
4502 map(const map<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::map(obj) {}
4503 private:
4504 template <typename base,
4505 typename std::enable_if<
4506 std::is_same<base, isl::map>{}, bool>::type = true>
4507 map(const base &obj) : isl::map(obj) {}
4508 public:
4509 static map from(const isl::map &obj) {
4510 return map(obj);
4512 inline /* implicit */ map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap);
4513 inline explicit map(const isl::ctx &ctx, const std::string &str);
4514 template <typename Domain2>
4515 inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const;
4516 template <typename Domain2>
4517 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
4518 template <typename Domain2>
4519 inline typed::map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const;
4520 template <typename Arg2>
4521 inline typed::map<pair<T1, T2>, Arg2> apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const;
4522 template <typename Arg2>
4523 inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const;
4524 template <typename Arg2>
4525 inline typed::map<pair<T1, T2>, Arg2> apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &map2) const;
4526 inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
4527 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
4528 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
4529 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_union_pw_multi_aff() const;
4530 inline typed::set<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
4531 inline typed::set<pair<T1, T2>> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
4532 inline typed::map<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
4533 inline typed::map<T1, pair<T2, pair<Range, Range2>>> curry() const;
4534 inline typed::set<pair<T1, T2>, pair<Range, Range2>> deltas() const = delete;
4535 inline typed::map<pair<T1, T2>, pair<Range, Range2>> detect_equalities() const;
4536 inline typed::set<pair<T1, T2>> domain() const;
4537 inline typed::map<T1, pair<Range, Range2>> domain_factor_domain() const;
4538 inline typed::map<T2, pair<Range, Range2>> domain_factor_range() const;
4539 inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map() const;
4540 inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
4541 template <typename Domain2>
4542 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const;
4543 template <typename Domain2>
4544 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
4545 template <typename Domain2>
4546 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const;
4547 inline typed::map<pair<T2, T1>, pair<Range, Range2>> domain_reverse() const;
4548 inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_domain_tuple_id() const = delete;
4549 inline typed::map<pair<T1, T2>, pair<Range, Range2>> drop_unused_params() const;
4550 inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mpa) const = delete;
4551 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
4552 inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::aff<> &mpa) const = delete;
4553 inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_aff<> &mpa) const = delete;
4554 inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::pw_aff<> &mpa) const = delete;
4555 inline typed::map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::pw_multi_aff<> &mpa) const = delete;
4556 inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const;
4557 inline typed::map<pair<T1, T2>, pair<Range, Range2>> extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
4558 inline typed::map<Anonymous, pair<Range, Range2>> flatten_domain() const;
4559 inline typed::map<pair<T1, T2>, Anonymous> flatten_range() const;
4560 inline void foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
4561 inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
4562 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const;
4563 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
4564 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
4565 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::set<pair<T1, T2>> &context) const;
4566 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
4567 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::basic_set<pair<T1, T2>> &context) const;
4568 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::point<pair<T1, T2>> &context) const;
4569 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::set<> &context) const;
4570 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::basic_set<> &context) const;
4571 inline typed::map<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::point<> &context) const;
4572 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
4573 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
4574 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
4575 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
4576 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
4577 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
4578 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const;
4579 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::point<pair<T1, T2>> &set) const;
4580 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<T1> &domain) const;
4581 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const;
4582 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const;
4583 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::point<T1> &domain) const;
4584 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &params) const;
4585 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &params) const;
4586 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &params) const;
4587 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::set<pair<Range, Range2>> &set) const;
4588 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
4589 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
4590 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const;
4591 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::point<pair<Range, Range2>> &set) const;
4592 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::set<Range> &domain) const;
4593 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const;
4594 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const;
4595 inline typed::map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::point<Range> &domain) const;
4596 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::multi_pw_aff<> &mpa) const = delete;
4597 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::aff<> &mpa) const = delete;
4598 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::multi_aff<> &mpa) const = delete;
4599 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::pw_aff<> &mpa) const = delete;
4600 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_ge_at(const typed::pw_multi_aff<> &mpa) const = delete;
4601 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::multi_pw_aff<> &mpa) const = delete;
4602 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::aff<> &mpa) const = delete;
4603 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::multi_aff<> &mpa) const = delete;
4604 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::pw_aff<> &mpa) const = delete;
4605 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_gt_at(const typed::pw_multi_aff<> &mpa) const = delete;
4606 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::multi_pw_aff<> &mpa) const = delete;
4607 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::aff<> &mpa) const = delete;
4608 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::multi_aff<> &mpa) const = delete;
4609 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::pw_aff<> &mpa) const = delete;
4610 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_le_at(const typed::pw_multi_aff<> &mpa) const = delete;
4611 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::multi_pw_aff<> &mpa) const = delete;
4612 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::aff<> &mpa) const = delete;
4613 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::multi_aff<> &mpa) const = delete;
4614 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::pw_aff<> &mpa) const = delete;
4615 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lex_lt_at(const typed::pw_multi_aff<> &mpa) const = delete;
4616 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmax() const;
4617 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmax_pw_multi_aff() const;
4618 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lexmin() const;
4619 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> lexmin_pw_multi_aff() const;
4620 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
4621 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
4622 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
4623 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
4624 inline typed::map<pair<T1, T2>, pair<Range, Range2>> lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const;
4625 inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> map_list() const;
4626 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max_multi_pw_aff() const;
4627 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min_multi_pw_aff() const;
4628 inline typed::set<> params() const;
4629 template <typename Domain2>
4630 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
4631 template <typename Domain2>
4632 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
4633 template <typename Domain2>
4634 inline typed::map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
4635 template <typename Domain2>
4636 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
4637 template <typename Arg2>
4638 inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const;
4639 template <typename Arg2>
4640 inline typed::map<pair<T1, T2>, Arg2> preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const;
4641 template <typename Arg2>
4642 inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const;
4643 template <typename Domain2, typename Arg2>
4644 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::map<Domain2, Arg2> &map2) const;
4645 template <typename Domain2, typename Arg2>
4646 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::union_map<Domain2, Arg2> &umap2) const;
4647 template <typename Domain2, typename Arg2>
4648 inline typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::basic_map<Domain2, Arg2> &map2) const;
4649 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_all_params() const;
4650 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const typed::id<Anonymous> &id) const;
4651 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const std::string &id) const;
4652 inline typed::map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const typed::id_list<Anonymous> &list) const;
4653 inline typed::set<pair<Range, Range2>> range() const;
4654 inline typed::map<pair<T1, T2>, Range> range_factor_domain() const;
4655 inline typed::map<pair<T1, T2>, Range2> range_factor_range() const;
4656 inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_lattice_tile() const;
4657 inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> get_range_lattice_tile() const = delete;
4658 inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
4659 template <typename Arg2>
4660 inline typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const;
4661 template <typename Arg2>
4662 inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const;
4663 template <typename Arg2>
4664 inline typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::basic_map<pair<T1, T2>, Arg2> &map2) const;
4665 inline typed::map<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
4666 inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> range_simple_fixed_box_hull() const;
4667 inline typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> get_range_simple_fixed_box_hull() const = delete;
4668 inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
4669 inline typed::map<pair<Range, Range2>, pair<T1, T2>> reverse() const;
4670 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const typed::id<> &id) const = delete;
4671 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const std::string &id) const = delete;
4672 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
4673 inline typed::map<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
4674 inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
4675 inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
4676 inline typed::map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
4677 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
4678 inline typed::map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
4679 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
4680 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
4681 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> to_union_map() const;
4682 inline typed::map<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
4683 inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
4684 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
4685 inline typed::map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const;
4686 static inline typed::map<pair<T1, T2>, pair<Range, Range2>> universe(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space);
4687 inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
4688 inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
4689 inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
4690 inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
4691 inline typed::map<pair<T1, T2>, pair<Range, Range2>> upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const;
4692 inline typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
4695 template <typename Domain, typename Range>
4696 struct map_list<Domain, Range> : public isl::map_list {
4697 template <typename...>
4698 friend struct aff;
4699 template <typename...>
4700 friend struct aff_list;
4701 template <typename...>
4702 friend struct basic_map;
4703 template <typename...>
4704 friend struct basic_set;
4705 template <typename...>
4706 friend struct fixed_box;
4707 template <typename...>
4708 friend struct id;
4709 template <typename...>
4710 friend struct id_list;
4711 template <typename...>
4712 friend struct map;
4713 template <typename...>
4714 friend struct map_list;
4715 template <typename...>
4716 friend struct multi_aff;
4717 template <typename...>
4718 friend struct multi_id;
4719 template <typename...>
4720 friend struct multi_pw_aff;
4721 template <typename...>
4722 friend struct multi_union_pw_aff;
4723 template <typename...>
4724 friend struct multi_val;
4725 template <typename...>
4726 friend struct point;
4727 template <typename...>
4728 friend struct pw_aff;
4729 template <typename...>
4730 friend struct pw_aff_list;
4731 template <typename...>
4732 friend struct pw_multi_aff;
4733 template <typename...>
4734 friend struct pw_multi_aff_list;
4735 template <typename...>
4736 friend struct set;
4737 template <typename...>
4738 friend struct set_list;
4739 template <typename...>
4740 friend struct space;
4741 template <typename...>
4742 friend struct union_map;
4743 template <typename...>
4744 friend struct union_pw_aff;
4745 template <typename...>
4746 friend struct union_pw_aff_list;
4747 template <typename...>
4748 friend struct union_pw_multi_aff;
4749 template <typename...>
4750 friend struct union_set;
4751 template <typename...>
4752 friend struct union_set_list;
4753 template <typename...>
4754 friend struct val;
4755 template <typename...>
4756 friend struct val_list;
4758 map_list() = default;
4759 template <typename Arg1, typename Arg2,
4760 typename std::enable_if<
4761 std::is_base_of<Domain, Arg1>{} &&
4762 std::is_base_of<Range, Arg2>{},
4763 bool>::type = true>
4764 map_list(const map_list<Arg1, Arg2> &obj) : isl::map_list(obj) {}
4765 private:
4766 template <typename base,
4767 typename std::enable_if<
4768 std::is_same<base, isl::map_list>{}, bool>::type = true>
4769 map_list(const base &obj) : isl::map_list(obj) {}
4770 public:
4771 static map_list from(const isl::map_list &obj) {
4772 return map_list(obj);
4774 inline explicit map_list(const isl::ctx &ctx, int n);
4775 inline explicit map_list(const typed::map<Domain, Range> &el);
4776 inline explicit map_list(const isl::ctx &ctx, const std::string &str);
4777 inline typed::map_list<Domain, Range> add(const typed::map<Domain, Range> &el) const;
4778 inline typed::map_list<Domain, Range> add(const typed::basic_map<Domain, Range> &el) const;
4779 inline typed::map<Domain, Range> at(int index) const;
4780 inline typed::map<Domain, Range> get_at(int index) const = delete;
4781 inline typed::map_list<Domain, Range> drop(unsigned int first, unsigned int n) const;
4782 inline void foreach(const std::function<void(typed::map<Domain, Range>)> &fn) const;
4783 inline void foreach_scc(const std::function<bool(typed::map<Domain, Range>, typed::map<Domain, Range>)> &follows, const std::function<void(typed::map_list<Domain, Range>)> &fn) const;
4784 inline typed::map_list<Domain, Range> set_at(int index, const typed::map<Domain, Anonymous> &el) const;
4787 template <typename Domain>
4788 struct multi_aff<Domain> : public isl::multi_aff {
4789 template <typename...>
4790 friend struct aff;
4791 template <typename...>
4792 friend struct aff_list;
4793 template <typename...>
4794 friend struct basic_map;
4795 template <typename...>
4796 friend struct basic_set;
4797 template <typename...>
4798 friend struct fixed_box;
4799 template <typename...>
4800 friend struct id;
4801 template <typename...>
4802 friend struct id_list;
4803 template <typename...>
4804 friend struct map;
4805 template <typename...>
4806 friend struct map_list;
4807 template <typename...>
4808 friend struct multi_aff;
4809 template <typename...>
4810 friend struct multi_id;
4811 template <typename...>
4812 friend struct multi_pw_aff;
4813 template <typename...>
4814 friend struct multi_union_pw_aff;
4815 template <typename...>
4816 friend struct multi_val;
4817 template <typename...>
4818 friend struct point;
4819 template <typename...>
4820 friend struct pw_aff;
4821 template <typename...>
4822 friend struct pw_aff_list;
4823 template <typename...>
4824 friend struct pw_multi_aff;
4825 template <typename...>
4826 friend struct pw_multi_aff_list;
4827 template <typename...>
4828 friend struct set;
4829 template <typename...>
4830 friend struct set_list;
4831 template <typename...>
4832 friend struct space;
4833 template <typename...>
4834 friend struct union_map;
4835 template <typename...>
4836 friend struct union_pw_aff;
4837 template <typename...>
4838 friend struct union_pw_aff_list;
4839 template <typename...>
4840 friend struct union_pw_multi_aff;
4841 template <typename...>
4842 friend struct union_set;
4843 template <typename...>
4844 friend struct union_set_list;
4845 template <typename...>
4846 friend struct val;
4847 template <typename...>
4848 friend struct val_list;
4850 multi_aff() = default;
4851 template <typename Arg1,
4852 typename std::enable_if<
4853 std::is_base_of<Domain, Arg1>{},
4854 bool>::type = true>
4855 multi_aff(const multi_aff<Arg1> &obj) : isl::multi_aff(obj) {}
4856 private:
4857 template <typename base,
4858 typename std::enable_if<
4859 std::is_same<base, isl::multi_aff>{}, bool>::type = true>
4860 multi_aff(const base &obj) : isl::multi_aff(obj) {}
4861 public:
4862 static multi_aff from(const isl::multi_aff &obj) {
4863 return multi_aff(obj);
4865 inline /* implicit */ multi_aff(const typed::aff<Domain> &aff);
4866 inline explicit multi_aff(const typed::space<Domain> &space, const typed::aff_list<Anonymous> &list);
4867 inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
4868 inline typed::multi_aff<Domain> add(const typed::multi_aff<Domain> &multi2) const;
4869 inline typed::multi_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
4870 inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
4871 inline typed::pw_multi_aff<Domain> add(const typed::pw_multi_aff<Domain> &pma2) const;
4872 inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_multi_aff<Domain> &upma2) const;
4873 inline typed::multi_aff<Domain> add(const typed::aff<Domain> &multi2) const;
4874 inline typed::multi_aff<Domain> add_constant(const typed::multi_val<Domain> &mv) const;
4875 inline typed::multi_aff<Domain> add_constant(const typed::val<Domain> &v) const;
4876 inline typed::multi_aff<Domain> add_constant(long v) const;
4877 template <typename Range>
4878 inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
4879 inline typed::map<Domain> as_map() const = delete;
4880 inline typed::multi_aff<Domain> as_multi_aff() const;
4881 inline typed::multi_union_pw_aff<Domain> as_multi_union_pw_aff() const;
4882 inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
4883 inline typed::set<Domain> as_set() const;
4884 inline typed::union_map<Domain> as_union_map() const = delete;
4885 inline typed::aff<Anonymous> at(int pos) const;
4886 inline typed::aff<Domain> get_at(int pos) const = delete;
4887 inline typed::basic_set<> bind(const typed::multi_id<Domain> &tuple) const;
4888 inline typed::multi_aff<Domain> bind_domain(const typed::multi_id<> &tuple) const = delete;
4889 inline typed::multi_aff<Domain> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
4890 inline typed::pw_multi_aff<Domain> coalesce() const;
4891 inline typed::multi_val<Domain> constant_multi_val() const;
4892 inline typed::multi_val<Domain> get_constant_multi_val() const = delete;
4893 inline typed::set<> domain() const;
4894 inline typed::multi_aff<Domain> domain_reverse() const = delete;
4895 inline typed::pw_multi_aff<Domain> drop_unused_params() const;
4896 inline typed::pw_multi_aff<Domain> extract_pw_multi_aff(const typed::space<Domain> &space) const;
4897 inline typed::multi_aff<Domain> floor() const;
4898 inline typed::multi_aff<Domain> gist(const typed::set<> &context) const;
4899 inline typed::union_pw_multi_aff<Domain> gist(const typed::union_set<> &context) const;
4900 inline typed::multi_aff<Domain> gist(const typed::basic_set<> &context) const;
4901 inline typed::multi_aff<Domain> gist(const typed::point<> &context) const;
4902 inline typed::multi_aff<Domain> gist_params(const typed::set<> &context) const;
4903 inline typed::multi_aff<Domain> gist_params(const typed::basic_set<> &context) const;
4904 inline typed::multi_aff<Domain> gist_params(const typed::point<> &context) const;
4905 inline typed::multi_aff<Domain, Domain> identity() const;
4906 template <typename Arg1>
4907 inline typed::multi_aff<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
4908 inline typed::pw_multi_aff<Domain> intersect_domain(const typed::set<> &set) const = delete;
4909 inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::space<> &space) const = delete;
4910 inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
4911 inline typed::union_pw_multi_aff<Domain> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
4912 inline typed::pw_multi_aff<Domain> intersect_params(const typed::set<> &set) const;
4913 inline typed::aff_list<Anonymous> list() const;
4914 inline typed::aff_list<Domain> get_list() const = delete;
4915 inline typed::multi_pw_aff<Domain> max(const typed::multi_pw_aff<Domain> &multi2) const;
4916 inline typed::multi_val<Domain> max_multi_val() const;
4917 inline typed::multi_pw_aff<Domain> min(const typed::multi_pw_aff<Domain> &multi2) const;
4918 inline typed::multi_val<Domain> min_multi_val() const;
4919 inline typed::multi_aff<Domain> neg() const;
4920 inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
4921 inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
4922 template <typename Range>
4923 inline typed::multi_aff<pair<Domain, Range>> product(const typed::multi_aff<Range> &multi2) const;
4924 template <typename Range>
4925 inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
4926 template <typename Range>
4927 inline typed::pw_multi_aff<pair<Domain, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
4928 inline typed::multi_aff<pair<Domain, Anonymous>> product(const typed::aff<Anonymous> &multi2) const;
4929 inline typed::multi_aff<Domain> pullback(const typed::multi_aff<> &ma2) const = delete;
4930 inline typed::multi_pw_aff<Domain> pullback(const typed::multi_pw_aff<> &mpa2) const = delete;
4931 inline typed::pw_multi_aff<Domain> pullback(const typed::pw_multi_aff<> &pma2) const = delete;
4932 inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma2) const = delete;
4933 inline typed::multi_aff<Domain> pullback(const typed::aff<> &ma2) const = delete;
4934 inline typed::pw_multi_aff_list<Domain> pw_multi_aff_list() const;
4935 inline typed::pw_multi_aff<Domain> range_factor_domain() const = delete;
4936 inline typed::pw_multi_aff<Domain> range_factor_range() const = delete;
4937 inline typed::multi_aff<Domain> range_product(const typed::multi_aff<> &multi2) const = delete;
4938 inline typed::multi_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
4939 inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
4940 inline typed::pw_multi_aff<Domain> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
4941 inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
4942 inline typed::multi_aff<Domain> range_product(const typed::aff<> &multi2) const = delete;
4943 inline typed::id<Domain> get_range_tuple_id() const = delete;
4944 inline typed::multi_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
4945 inline typed::multi_aff<Domain> scale(const typed::val<Domain> &v) const;
4946 inline typed::multi_aff<Domain> scale(long v) const;
4947 inline typed::multi_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
4948 inline typed::multi_aff<Domain> scale_down(const typed::val<Domain> &v) const;
4949 inline typed::multi_aff<Domain> scale_down(long v) const;
4950 inline typed::multi_aff<Domain> set_at(int pos, const typed::aff<Anonymous> &el) const;
4951 inline typed::multi_pw_aff<Domain> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
4952 inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
4953 template <typename Domain2>
4954 inline typed::multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
4955 template <typename Domain2>
4956 inline typed::multi_aff<Domain2> set_range_tuple(const std::string &id) const;
4957 inline typed::space<Domain> space() const;
4958 inline typed::space<Domain> get_space() const = delete;
4959 inline typed::multi_aff<Domain> sub(const typed::multi_aff<Domain> &multi2) const;
4960 inline typed::multi_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
4961 inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
4962 inline typed::pw_multi_aff<Domain> sub(const typed::pw_multi_aff<Domain> &pma2) const;
4963 inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_multi_aff<Domain> &upma2) const;
4964 inline typed::multi_aff<Domain> sub(const typed::aff<Domain> &multi2) const;
4965 inline typed::pw_multi_aff<Domain> subtract_domain(const typed::set<> &set) const = delete;
4966 inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::space<> &space) const = delete;
4967 inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::union_set<> &uset) const = delete;
4968 inline typed::multi_pw_aff<Domain> to_multi_pw_aff() const;
4969 inline typed::multi_union_pw_aff<Domain> to_multi_union_pw_aff() const;
4970 inline typed::pw_multi_aff<Domain> to_pw_multi_aff() const;
4971 inline typed::union_pw_multi_aff<Domain> to_union_pw_multi_aff() const;
4972 template <typename Arg1>
4973 inline typed::multi_aff<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
4974 inline typed::multi_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mpa2) const;
4975 inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
4976 inline typed::pw_multi_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &pma2) const;
4977 inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_multi_aff<Domain> &upma2) const;
4980 template <typename Domain, typename Range>
4981 struct multi_aff<Domain, Range> : public isl::multi_aff {
4982 template <typename...>
4983 friend struct aff;
4984 template <typename...>
4985 friend struct aff_list;
4986 template <typename...>
4987 friend struct basic_map;
4988 template <typename...>
4989 friend struct basic_set;
4990 template <typename...>
4991 friend struct fixed_box;
4992 template <typename...>
4993 friend struct id;
4994 template <typename...>
4995 friend struct id_list;
4996 template <typename...>
4997 friend struct map;
4998 template <typename...>
4999 friend struct map_list;
5000 template <typename...>
5001 friend struct multi_aff;
5002 template <typename...>
5003 friend struct multi_id;
5004 template <typename...>
5005 friend struct multi_pw_aff;
5006 template <typename...>
5007 friend struct multi_union_pw_aff;
5008 template <typename...>
5009 friend struct multi_val;
5010 template <typename...>
5011 friend struct point;
5012 template <typename...>
5013 friend struct pw_aff;
5014 template <typename...>
5015 friend struct pw_aff_list;
5016 template <typename...>
5017 friend struct pw_multi_aff;
5018 template <typename...>
5019 friend struct pw_multi_aff_list;
5020 template <typename...>
5021 friend struct set;
5022 template <typename...>
5023 friend struct set_list;
5024 template <typename...>
5025 friend struct space;
5026 template <typename...>
5027 friend struct union_map;
5028 template <typename...>
5029 friend struct union_pw_aff;
5030 template <typename...>
5031 friend struct union_pw_aff_list;
5032 template <typename...>
5033 friend struct union_pw_multi_aff;
5034 template <typename...>
5035 friend struct union_set;
5036 template <typename...>
5037 friend struct union_set_list;
5038 template <typename...>
5039 friend struct val;
5040 template <typename...>
5041 friend struct val_list;
5043 multi_aff() = default;
5044 template <typename Arg1, typename Arg2,
5045 typename std::enable_if<
5046 std::is_base_of<Domain, Arg1>{} &&
5047 std::is_base_of<Range, Arg2>{},
5048 bool>::type = true>
5049 multi_aff(const multi_aff<Arg1, Arg2> &obj) : isl::multi_aff(obj) {}
5050 private:
5051 template <typename base,
5052 typename std::enable_if<
5053 std::is_same<base, isl::multi_aff>{}, bool>::type = true>
5054 multi_aff(const base &obj) : isl::multi_aff(obj) {}
5055 public:
5056 static multi_aff from(const isl::multi_aff &obj) {
5057 return multi_aff(obj);
5059 inline /* implicit */ multi_aff(const typed::aff<Domain, Range> &aff);
5060 inline explicit multi_aff(const typed::space<Domain, Range> &space, const typed::aff_list<Domain, Anonymous> &list);
5061 inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
5062 inline typed::multi_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &multi2) const;
5063 inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
5064 inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
5065 inline typed::pw_multi_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
5066 inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
5067 inline typed::multi_aff<Domain, Range> add(const typed::aff<Domain, Range> &multi2) const;
5068 inline typed::multi_aff<Domain, Range> add_constant(const typed::multi_val<Range> &mv) const;
5069 inline typed::multi_aff<Domain, Range> add_constant(const typed::val<Range> &v) const;
5070 inline typed::multi_aff<Domain, Range> add_constant(long v) const;
5071 template <typename Range2>
5072 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
5073 inline typed::map<Domain, Range> as_map() const;
5074 inline typed::multi_aff<Domain, Range> as_multi_aff() const;
5075 inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
5076 inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
5077 inline typed::set<Domain, Range> as_set() const = delete;
5078 inline typed::union_map<Domain, Range> as_union_map() const;
5079 inline typed::aff<Domain, Anonymous> at(int pos) const;
5080 inline typed::aff<Domain, Range> get_at(int pos) const = delete;
5081 inline typed::basic_set<Domain> bind(const typed::multi_id<Range> &tuple) const;
5082 inline typed::multi_aff<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
5083 inline typed::multi_aff<Domain, Range> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
5084 inline typed::pw_multi_aff<Domain, Range> coalesce() const;
5085 inline typed::multi_val<Range> constant_multi_val() const;
5086 inline typed::multi_val<Domain, Range> get_constant_multi_val() const = delete;
5087 inline typed::set<Domain> domain() const;
5088 inline typed::multi_aff<Domain, Range> domain_reverse() const = delete;
5089 inline typed::pw_multi_aff<Domain, Range> drop_unused_params() const;
5090 inline typed::pw_multi_aff<Domain, Range> extract_pw_multi_aff(const typed::space<Domain, Range> &space) const;
5091 inline typed::multi_aff<Domain, Range> floor() const;
5092 inline typed::multi_aff<Domain, Range> gist(const typed::set<Domain> &context) const;
5093 inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
5094 inline typed::multi_aff<Domain, Range> gist(const typed::basic_set<Domain> &context) const;
5095 inline typed::multi_aff<Domain, Range> gist(const typed::point<Domain> &context) const;
5096 inline typed::multi_aff<Domain, Range> gist_params(const typed::set<> &context) const;
5097 inline typed::multi_aff<Domain, Range> gist_params(const typed::basic_set<> &context) const;
5098 inline typed::multi_aff<Domain, Range> gist_params(const typed::point<> &context) const;
5099 inline typed::multi_aff<Domain, Range> identity() const;
5100 inline typed::multi_aff<Domain, Range> insert_domain(const typed::space<> &domain) const = delete;
5101 inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
5102 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
5103 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
5104 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
5105 inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
5106 inline typed::aff_list<Domain, Anonymous> list() const;
5107 inline typed::aff_list<Domain, Range> get_list() const = delete;
5108 inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_pw_aff<Domain, Range> &multi2) const;
5109 inline typed::multi_val<Range> max_multi_val() const;
5110 inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_pw_aff<Domain, Range> &multi2) const;
5111 inline typed::multi_val<Range> min_multi_val() const;
5112 inline typed::multi_aff<Domain, Range> neg() const;
5113 inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
5114 inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
5115 template <typename Domain2, typename Range2>
5116 inline typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_aff<Domain2, Range2> &multi2) const;
5117 template <typename Domain2, typename Range2>
5118 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
5119 template <typename Domain2, typename Range2>
5120 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
5121 template <typename Domain2>
5122 inline typed::multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> product(const typed::aff<Domain2, Anonymous> &multi2) const;
5123 template <typename Domain2>
5124 inline typed::multi_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &ma2) const;
5125 inline typed::multi_aff<Range> pullback(const typed::multi_aff<Domain> &ma2) const;
5126 template <typename Domain2>
5127 inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
5128 inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
5129 template <typename Domain2>
5130 inline typed::pw_multi_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
5131 inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
5132 template <typename Domain2>
5133 inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
5134 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
5135 template <typename Domain2>
5136 inline typed::multi_aff<Domain2, Range> pullback(const typed::aff<Domain2, Domain> &ma2) const;
5137 inline typed::multi_aff<Range> pullback(const typed::aff<Domain> &ma2) const;
5138 inline typed::pw_multi_aff_list<Domain, Range> pw_multi_aff_list() const;
5139 inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const = delete;
5140 inline typed::pw_multi_aff<Domain, Range> range_factor_range() const = delete;
5141 template <typename Range2>
5142 inline typed::multi_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &multi2) const;
5143 template <typename Range2>
5144 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
5145 template <typename Range2>
5146 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
5147 template <typename Range2>
5148 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
5149 template <typename Range2>
5150 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
5151 inline typed::multi_aff<Domain, pair<Range, Anonymous>> range_product(const typed::aff<Domain, Anonymous> &multi2) const;
5152 inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
5153 inline typed::multi_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
5154 inline typed::multi_aff<Domain, Range> scale(const typed::val<Range> &v) const;
5155 inline typed::multi_aff<Domain, Range> scale(long v) const;
5156 inline typed::multi_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
5157 inline typed::multi_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
5158 inline typed::multi_aff<Domain, Range> scale_down(long v) const;
5159 inline typed::multi_aff<Domain, Range> set_at(int pos, const typed::aff<Domain, Anonymous> &el) const;
5160 inline typed::multi_pw_aff<Domain, Range> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
5161 inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
5162 template <typename Range2>
5163 inline typed::multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
5164 template <typename Range2>
5165 inline typed::multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
5166 inline typed::space<Domain, Range> space() const;
5167 inline typed::space<Domain, Range> get_space() const = delete;
5168 inline typed::multi_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &multi2) const;
5169 inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
5170 inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
5171 inline typed::pw_multi_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &pma2) const;
5172 inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
5173 inline typed::multi_aff<Domain, Range> sub(const typed::aff<Domain, Range> &multi2) const;
5174 inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::set<Domain> &set) const;
5175 inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::space<Domain> &space) const;
5176 inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::union_set<Domain> &uset) const;
5177 inline typed::multi_pw_aff<Domain, Range> to_multi_pw_aff() const;
5178 inline typed::multi_union_pw_aff<Domain, Range> to_multi_union_pw_aff() const;
5179 inline typed::pw_multi_aff<Domain, Range> to_pw_multi_aff() const;
5180 inline typed::union_pw_multi_aff<Domain, Range> to_union_pw_multi_aff() const;
5181 inline typed::multi_aff<Domain, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
5182 inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const;
5183 inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
5184 inline typed::pw_multi_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
5185 inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
5188 template <typename Domain2, typename Range2, typename Range>
5189 struct multi_aff<pair<Domain2, Range2>, Range> : public isl::multi_aff {
5190 template <typename...>
5191 friend struct aff;
5192 template <typename...>
5193 friend struct aff_list;
5194 template <typename...>
5195 friend struct basic_map;
5196 template <typename...>
5197 friend struct basic_set;
5198 template <typename...>
5199 friend struct fixed_box;
5200 template <typename...>
5201 friend struct id;
5202 template <typename...>
5203 friend struct id_list;
5204 template <typename...>
5205 friend struct map;
5206 template <typename...>
5207 friend struct map_list;
5208 template <typename...>
5209 friend struct multi_aff;
5210 template <typename...>
5211 friend struct multi_id;
5212 template <typename...>
5213 friend struct multi_pw_aff;
5214 template <typename...>
5215 friend struct multi_union_pw_aff;
5216 template <typename...>
5217 friend struct multi_val;
5218 template <typename...>
5219 friend struct point;
5220 template <typename...>
5221 friend struct pw_aff;
5222 template <typename...>
5223 friend struct pw_aff_list;
5224 template <typename...>
5225 friend struct pw_multi_aff;
5226 template <typename...>
5227 friend struct pw_multi_aff_list;
5228 template <typename...>
5229 friend struct set;
5230 template <typename...>
5231 friend struct set_list;
5232 template <typename...>
5233 friend struct space;
5234 template <typename...>
5235 friend struct union_map;
5236 template <typename...>
5237 friend struct union_pw_aff;
5238 template <typename...>
5239 friend struct union_pw_aff_list;
5240 template <typename...>
5241 friend struct union_pw_multi_aff;
5242 template <typename...>
5243 friend struct union_set;
5244 template <typename...>
5245 friend struct union_set_list;
5246 template <typename...>
5247 friend struct val;
5248 template <typename...>
5249 friend struct val_list;
5251 multi_aff() = default;
5252 template <typename Arg1, typename Arg2, typename Arg3,
5253 typename std::enable_if<
5254 std::is_base_of<Domain2, Arg1>{} &&
5255 std::is_base_of<Range2, Arg2>{} &&
5256 std::is_base_of<Range, Arg3>{},
5257 bool>::type = true>
5258 multi_aff(const multi_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::multi_aff(obj) {}
5259 private:
5260 template <typename base,
5261 typename std::enable_if<
5262 std::is_same<base, isl::multi_aff>{}, bool>::type = true>
5263 multi_aff(const base &obj) : isl::multi_aff(obj) {}
5264 public:
5265 static multi_aff from(const isl::multi_aff &obj) {
5266 return multi_aff(obj);
5268 inline /* implicit */ multi_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff);
5269 inline explicit multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::aff_list<pair<Domain2, Range2>, Anonymous> &list);
5270 inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
5271 inline typed::multi_aff<pair<Domain2, Range2>, Range> add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
5272 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
5273 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
5274 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
5275 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
5276 inline typed::multi_aff<pair<Domain2, Range2>, Range> add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
5277 inline typed::multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::multi_val<Range> &mv) const;
5278 inline typed::multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::val<Range> &v) const;
5279 inline typed::multi_aff<pair<Domain2, Range2>, Range> add_constant(long v) const;
5280 template <typename Arg2>
5281 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const;
5282 inline typed::map<pair<Domain2, Range2>, Range> as_map() const;
5283 inline typed::multi_aff<pair<Domain2, Range2>, Range> as_multi_aff() const;
5284 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> as_multi_union_pw_aff() const;
5285 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> as_pw_multi_aff() const;
5286 inline typed::set<pair<Domain2, Range2>, Range> as_set() const = delete;
5287 inline typed::union_map<pair<Domain2, Range2>, Range> as_union_map() const;
5288 inline typed::aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
5289 inline typed::aff<pair<Domain2, Range2>, Range> get_at(int pos) const = delete;
5290 inline typed::basic_set<pair<Domain2, Range2>> bind(const typed::multi_id<Range> &tuple) const;
5291 inline typed::multi_aff<Range> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
5292 inline typed::multi_aff<Range2, Range> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
5293 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> coalesce() const;
5294 inline typed::multi_val<Range> constant_multi_val() const;
5295 inline typed::multi_val<pair<Domain2, Range2>, Range> get_constant_multi_val() const = delete;
5296 inline typed::set<pair<Domain2, Range2>> domain() const;
5297 inline typed::multi_aff<pair<Range2, Domain2>, Range> domain_reverse() const;
5298 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> drop_unused_params() const;
5299 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const;
5300 inline typed::multi_aff<pair<Domain2, Range2>, Range> floor() const;
5301 inline typed::multi_aff<pair<Domain2, Range2>, Range> gist(const typed::set<pair<Domain2, Range2>> &context) const;
5302 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
5303 inline typed::multi_aff<pair<Domain2, Range2>, Range> gist(const typed::basic_set<pair<Domain2, Range2>> &context) const;
5304 inline typed::multi_aff<pair<Domain2, Range2>, Range> gist(const typed::point<pair<Domain2, Range2>> &context) const;
5305 inline typed::multi_aff<pair<Domain2, Range2>, Range> gist_params(const typed::set<> &context) const;
5306 inline typed::multi_aff<pair<Domain2, Range2>, Range> gist_params(const typed::basic_set<> &context) const;
5307 inline typed::multi_aff<pair<Domain2, Range2>, Range> gist_params(const typed::point<> &context) const;
5308 inline typed::multi_aff<pair<Domain2, Range2>, Range> identity() const;
5309 inline typed::multi_aff<pair<Domain2, Range2>, Range> insert_domain(const typed::space<> &domain) const = delete;
5310 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
5311 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
5312 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
5313 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const;
5314 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::set<> &set) const;
5315 inline typed::aff_list<pair<Domain2, Range2>, Anonymous> list() const;
5316 inline typed::aff_list<pair<Domain2, Range2>, Range> get_list() const = delete;
5317 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
5318 inline typed::multi_val<Range> max_multi_val() const;
5319 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
5320 inline typed::multi_val<Range> min_multi_val() const;
5321 inline typed::multi_aff<pair<Domain2, Range2>, Range> neg() const;
5322 template <typename Domain3>
5323 inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
5324 template <typename Domain3>
5325 inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
5326 template <typename Arg2, typename Arg3>
5327 inline typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_aff<Arg2, Arg3> &multi2) const;
5328 template <typename Arg2, typename Arg3>
5329 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const;
5330 template <typename Arg2, typename Arg3>
5331 inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const;
5332 template <typename Arg2>
5333 inline typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> product(const typed::aff<Arg2, Anonymous> &multi2) const;
5334 template <typename Arg2>
5335 inline typed::multi_aff<Arg2, Range> pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma2) const;
5336 inline typed::multi_aff<Range> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma2) const;
5337 template <typename Arg2>
5338 inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const;
5339 inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const;
5340 template <typename Arg2>
5341 inline typed::pw_multi_aff<Arg2, Range> pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const;
5342 inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const;
5343 template <typename Arg2>
5344 inline typed::union_pw_multi_aff<Arg2, Range> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const;
5345 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const;
5346 template <typename Arg2>
5347 inline typed::multi_aff<Arg2, Range> pullback(const typed::aff<Arg2, pair<Domain2, Range2>> &ma2) const;
5348 inline typed::multi_aff<Range> pullback(const typed::aff<pair<Domain2, Range2>> &ma2) const;
5349 inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> pw_multi_aff_list() const;
5350 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_domain() const = delete;
5351 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_range() const = delete;
5352 template <typename Arg2>
5353 inline typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
5354 template <typename Arg2>
5355 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
5356 template <typename Arg2>
5357 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
5358 template <typename Arg2>
5359 inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const;
5360 template <typename Arg2>
5361 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const;
5362 inline typed::multi_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> range_product(const typed::aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
5363 inline typed::id<pair<Domain2, Range2>, Range> get_range_tuple_id() const = delete;
5364 inline typed::multi_aff<pair<Domain2, Range2>, Range> scale(const typed::multi_val<Range> &mv) const;
5365 inline typed::multi_aff<pair<Domain2, Range2>, Range> scale(const typed::val<Range> &v) const;
5366 inline typed::multi_aff<pair<Domain2, Range2>, Range> scale(long v) const;
5367 inline typed::multi_aff<pair<Domain2, Range2>, Range> scale_down(const typed::multi_val<Range> &mv) const;
5368 inline typed::multi_aff<pair<Domain2, Range2>, Range> scale_down(const typed::val<Range> &v) const;
5369 inline typed::multi_aff<pair<Domain2, Range2>, Range> scale_down(long v) const;
5370 inline typed::multi_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const;
5371 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
5372 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
5373 template <typename Arg1>
5374 inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
5375 template <typename Arg1>
5376 inline typed::multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
5377 inline typed::space<pair<Domain2, Range2>, Range> space() const;
5378 inline typed::space<pair<Domain2, Range2>, Range> get_space() const = delete;
5379 inline typed::multi_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
5380 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
5381 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
5382 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
5383 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
5384 inline typed::multi_aff<pair<Domain2, Range2>, Range> sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
5385 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
5386 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
5387 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
5388 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> to_multi_pw_aff() const;
5389 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> to_multi_union_pw_aff() const;
5390 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> to_pw_multi_aff() const;
5391 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> to_union_pw_multi_aff() const;
5392 inline typed::multi_aff<pair<Domain2, Range2>, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
5393 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
5394 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const;
5395 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
5396 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
5399 template <typename Domain, typename Range, typename Range2>
5400 struct multi_aff<Domain, pair<Range, Range2>> : public isl::multi_aff {
5401 template <typename...>
5402 friend struct aff;
5403 template <typename...>
5404 friend struct aff_list;
5405 template <typename...>
5406 friend struct basic_map;
5407 template <typename...>
5408 friend struct basic_set;
5409 template <typename...>
5410 friend struct fixed_box;
5411 template <typename...>
5412 friend struct id;
5413 template <typename...>
5414 friend struct id_list;
5415 template <typename...>
5416 friend struct map;
5417 template <typename...>
5418 friend struct map_list;
5419 template <typename...>
5420 friend struct multi_aff;
5421 template <typename...>
5422 friend struct multi_id;
5423 template <typename...>
5424 friend struct multi_pw_aff;
5425 template <typename...>
5426 friend struct multi_union_pw_aff;
5427 template <typename...>
5428 friend struct multi_val;
5429 template <typename...>
5430 friend struct point;
5431 template <typename...>
5432 friend struct pw_aff;
5433 template <typename...>
5434 friend struct pw_aff_list;
5435 template <typename...>
5436 friend struct pw_multi_aff;
5437 template <typename...>
5438 friend struct pw_multi_aff_list;
5439 template <typename...>
5440 friend struct set;
5441 template <typename...>
5442 friend struct set_list;
5443 template <typename...>
5444 friend struct space;
5445 template <typename...>
5446 friend struct union_map;
5447 template <typename...>
5448 friend struct union_pw_aff;
5449 template <typename...>
5450 friend struct union_pw_aff_list;
5451 template <typename...>
5452 friend struct union_pw_multi_aff;
5453 template <typename...>
5454 friend struct union_set;
5455 template <typename...>
5456 friend struct union_set_list;
5457 template <typename...>
5458 friend struct val;
5459 template <typename...>
5460 friend struct val_list;
5462 multi_aff() = default;
5463 template <typename Arg1, typename Arg2, typename Arg3,
5464 typename std::enable_if<
5465 std::is_base_of<Domain, Arg1>{} &&
5466 std::is_base_of<Range, Arg2>{} &&
5467 std::is_base_of<Range2, Arg3>{},
5468 bool>::type = true>
5469 multi_aff(const multi_aff<Arg1, pair<Arg2, Arg3>> &obj) : isl::multi_aff(obj) {}
5470 private:
5471 template <typename base,
5472 typename std::enable_if<
5473 std::is_same<base, isl::multi_aff>{}, bool>::type = true>
5474 multi_aff(const base &obj) : isl::multi_aff(obj) {}
5475 public:
5476 static multi_aff from(const isl::multi_aff &obj) {
5477 return multi_aff(obj);
5479 inline /* implicit */ multi_aff(const typed::aff<Domain, pair<Range, Range2>> &aff);
5480 inline explicit multi_aff(const typed::space<Domain, pair<Range, Range2>> &space, const typed::aff_list<Domain, Anonymous> &list);
5481 inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
5482 inline typed::multi_aff<Domain, pair<Range, Range2>> add(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const;
5483 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
5484 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
5485 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
5486 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
5487 inline typed::multi_aff<Domain, pair<Range, Range2>> add(const typed::aff<Domain, pair<Range, Range2>> &multi2) const;
5488 inline typed::multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
5489 inline typed::multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
5490 inline typed::multi_aff<Domain, pair<Range, Range2>> add_constant(long v) const;
5491 template <typename Arg3>
5492 inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
5493 inline typed::map<Domain, pair<Range, Range2>> as_map() const;
5494 inline typed::multi_aff<Domain, pair<Range, Range2>> as_multi_aff() const;
5495 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
5496 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
5497 inline typed::set<Domain, pair<Range, Range2>> as_set() const = delete;
5498 inline typed::union_map<Domain, pair<Range, Range2>> as_union_map() const;
5499 inline typed::aff<Domain, Anonymous> at(int pos) const;
5500 inline typed::aff<Domain, pair<Range, Range2>> get_at(int pos) const = delete;
5501 inline typed::basic_set<Domain> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
5502 inline typed::multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
5503 inline typed::multi_aff<Domain, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
5504 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> coalesce() const;
5505 inline typed::multi_val<pair<Range, Range2>> constant_multi_val() const;
5506 inline typed::multi_val<Domain, pair<Range, Range2>> get_constant_multi_val() const = delete;
5507 inline typed::set<Domain> domain() const;
5508 inline typed::multi_aff<Domain, pair<Range, Range2>> domain_reverse() const = delete;
5509 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> drop_unused_params() const;
5510 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const;
5511 inline typed::multi_aff<Domain, pair<Range, Range2>> floor() const;
5512 inline typed::multi_aff<Domain, pair<Range, Range2>> gist(const typed::set<Domain> &context) const;
5513 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::union_set<Domain> &context) const;
5514 inline typed::multi_aff<Domain, pair<Range, Range2>> gist(const typed::basic_set<Domain> &context) const;
5515 inline typed::multi_aff<Domain, pair<Range, Range2>> gist(const typed::point<Domain> &context) const;
5516 inline typed::multi_aff<Domain, pair<Range, Range2>> gist_params(const typed::set<> &context) const;
5517 inline typed::multi_aff<Domain, pair<Range, Range2>> gist_params(const typed::basic_set<> &context) const;
5518 inline typed::multi_aff<Domain, pair<Range, Range2>> gist_params(const typed::point<> &context) const;
5519 inline typed::multi_aff<Domain, pair<Range, Range2>> identity() const;
5520 inline typed::multi_aff<Domain, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
5521 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
5522 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
5523 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
5524 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
5525 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
5526 inline typed::aff_list<Domain, Anonymous> list() const;
5527 inline typed::aff_list<Domain, pair<Range, Range2>> get_list() const = delete;
5528 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
5529 inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
5530 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
5531 inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
5532 inline typed::multi_aff<Domain, pair<Range, Range2>> neg() const;
5533 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
5534 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
5535 template <typename Domain2, typename Arg3>
5536 inline typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_aff<Domain2, Arg3> &multi2) const;
5537 template <typename Domain2, typename Arg3>
5538 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const;
5539 template <typename Domain2, typename Arg3>
5540 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const;
5541 template <typename Domain2>
5542 inline typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Anonymous>> product(const typed::aff<Domain2, Anonymous> &multi2) const;
5543 template <typename Domain2>
5544 inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, Domain> &ma2) const;
5545 inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<Domain> &ma2) const;
5546 template <typename Domain2>
5547 inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
5548 inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
5549 template <typename Domain2>
5550 inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
5551 inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
5552 template <typename Domain2>
5553 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
5554 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
5555 template <typename Domain2>
5556 inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::aff<Domain2, Domain> &ma2) const;
5557 inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::aff<Domain> &ma2) const;
5558 inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> pw_multi_aff_list() const;
5559 inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const;
5560 inline typed::pw_multi_aff<Domain, Range2> range_factor_range() const;
5561 template <typename Arg3>
5562 inline typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_aff<Domain, Arg3> &multi2) const;
5563 template <typename Arg3>
5564 inline typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const;
5565 template <typename Arg3>
5566 inline typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const;
5567 template <typename Arg3>
5568 inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const;
5569 template <typename Arg3>
5570 inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const;
5571 inline typed::multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>> range_product(const typed::aff<Domain, Anonymous> &multi2) const;
5572 inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
5573 inline typed::multi_aff<Domain, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
5574 inline typed::multi_aff<Domain, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
5575 inline typed::multi_aff<Domain, pair<Range, Range2>> scale(long v) const;
5576 inline typed::multi_aff<Domain, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
5577 inline typed::multi_aff<Domain, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
5578 inline typed::multi_aff<Domain, pair<Range, Range2>> scale_down(long v) const;
5579 inline typed::multi_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::aff<Domain, Anonymous> &el) const;
5580 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
5581 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
5582 inline typed::multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
5583 inline typed::multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
5584 inline typed::space<Domain, pair<Range, Range2>> space() const;
5585 inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
5586 inline typed::multi_aff<Domain, pair<Range, Range2>> sub(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const;
5587 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
5588 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
5589 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
5590 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
5591 inline typed::multi_aff<Domain, pair<Range, Range2>> sub(const typed::aff<Domain, pair<Range, Range2>> &multi2) const;
5592 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::set<Domain> &set) const;
5593 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::space<Domain> &space) const;
5594 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &uset) const;
5595 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> to_multi_pw_aff() const;
5596 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> to_multi_union_pw_aff() const;
5597 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> to_pw_multi_aff() const;
5598 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> to_union_pw_multi_aff() const;
5599 inline typed::multi_aff<Domain, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
5600 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const;
5601 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const;
5602 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
5603 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
5606 template <typename T1, typename T2, typename Range, typename Range2>
5607 struct multi_aff<pair<T1, T2>, pair<Range, Range2>> : public isl::multi_aff {
5608 template <typename...>
5609 friend struct aff;
5610 template <typename...>
5611 friend struct aff_list;
5612 template <typename...>
5613 friend struct basic_map;
5614 template <typename...>
5615 friend struct basic_set;
5616 template <typename...>
5617 friend struct fixed_box;
5618 template <typename...>
5619 friend struct id;
5620 template <typename...>
5621 friend struct id_list;
5622 template <typename...>
5623 friend struct map;
5624 template <typename...>
5625 friend struct map_list;
5626 template <typename...>
5627 friend struct multi_aff;
5628 template <typename...>
5629 friend struct multi_id;
5630 template <typename...>
5631 friend struct multi_pw_aff;
5632 template <typename...>
5633 friend struct multi_union_pw_aff;
5634 template <typename...>
5635 friend struct multi_val;
5636 template <typename...>
5637 friend struct point;
5638 template <typename...>
5639 friend struct pw_aff;
5640 template <typename...>
5641 friend struct pw_aff_list;
5642 template <typename...>
5643 friend struct pw_multi_aff;
5644 template <typename...>
5645 friend struct pw_multi_aff_list;
5646 template <typename...>
5647 friend struct set;
5648 template <typename...>
5649 friend struct set_list;
5650 template <typename...>
5651 friend struct space;
5652 template <typename...>
5653 friend struct union_map;
5654 template <typename...>
5655 friend struct union_pw_aff;
5656 template <typename...>
5657 friend struct union_pw_aff_list;
5658 template <typename...>
5659 friend struct union_pw_multi_aff;
5660 template <typename...>
5661 friend struct union_set;
5662 template <typename...>
5663 friend struct union_set_list;
5664 template <typename...>
5665 friend struct val;
5666 template <typename...>
5667 friend struct val_list;
5669 multi_aff() = default;
5670 template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
5671 typename std::enable_if<
5672 std::is_base_of<T1, Arg1>{} &&
5673 std::is_base_of<T2, Arg2>{} &&
5674 std::is_base_of<Range, Arg3>{} &&
5675 std::is_base_of<Range2, Arg4>{},
5676 bool>::type = true>
5677 multi_aff(const multi_aff<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::multi_aff(obj) {}
5678 private:
5679 template <typename base,
5680 typename std::enable_if<
5681 std::is_same<base, isl::multi_aff>{}, bool>::type = true>
5682 multi_aff(const base &obj) : isl::multi_aff(obj) {}
5683 public:
5684 static multi_aff from(const isl::multi_aff &obj) {
5685 return multi_aff(obj);
5687 inline /* implicit */ multi_aff(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &aff);
5688 inline explicit multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space, const typed::aff_list<pair<T1, T2>, Anonymous> &list);
5689 inline explicit multi_aff(const isl::ctx &ctx, const std::string &str);
5690 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5691 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5692 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5693 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
5694 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
5695 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5696 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
5697 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
5698 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(long v) const;
5699 template <typename Arg2>
5700 inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
5701 inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
5702 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_aff() const;
5703 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
5704 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
5705 inline typed::set<pair<T1, T2>, pair<Range, Range2>> as_set() const = delete;
5706 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> as_union_map() const;
5707 inline typed::aff<pair<T1, T2>, Anonymous> at(int pos) const;
5708 inline typed::aff<pair<T1, T2>, pair<Range, Range2>> get_at(int pos) const = delete;
5709 inline typed::basic_set<pair<T1, T2>> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
5710 inline typed::multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
5711 inline typed::multi_aff<T2, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const;
5712 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
5713 inline typed::multi_val<pair<Range, Range2>> constant_multi_val() const;
5714 inline typed::multi_val<pair<T1, T2>, pair<Range, Range2>> get_constant_multi_val() const = delete;
5715 inline typed::set<pair<T1, T2>> domain() const;
5716 inline typed::multi_aff<pair<T2, T1>, pair<Range, Range2>> domain_reverse() const;
5717 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> drop_unused_params() const;
5718 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
5719 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> floor() const;
5720 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::set<pair<T1, T2>> &context) const;
5721 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_set<pair<T1, T2>> &context) const;
5722 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_set<pair<T1, T2>> &context) const;
5723 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::point<pair<T1, T2>> &context) const;
5724 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::set<> &context) const;
5725 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::basic_set<> &context) const;
5726 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::point<> &context) const;
5727 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> identity() const;
5728 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
5729 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
5730 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
5731 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
5732 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &uset) const;
5733 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
5734 inline typed::aff_list<pair<T1, T2>, Anonymous> list() const;
5735 inline typed::aff_list<pair<T1, T2>, pair<Range, Range2>> get_list() const = delete;
5736 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5737 inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
5738 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5739 inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
5740 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> neg() const;
5741 template <typename Domain3>
5742 inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const;
5743 template <typename Domain3>
5744 inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const;
5745 template <typename Domain2, typename Arg2>
5746 inline typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_aff<Domain2, Arg2> &multi2) const;
5747 template <typename Domain2, typename Arg2>
5748 inline typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const;
5749 template <typename Domain2, typename Arg2>
5750 inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const;
5751 template <typename Domain2>
5752 inline typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Anonymous>> product(const typed::aff<Domain2, Anonymous> &multi2) const;
5753 template <typename Domain2>
5754 inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma2) const;
5755 inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<pair<T1, T2>> &ma2) const;
5756 template <typename Domain2>
5757 inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const;
5758 inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const;
5759 template <typename Domain2>
5760 inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const;
5761 inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const;
5762 template <typename Domain2>
5763 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
5764 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const;
5765 template <typename Domain2>
5766 inline typed::multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::aff<Domain2, pair<T1, T2>> &ma2) const;
5767 inline typed::multi_aff<pair<Range, Range2>> pullback(const typed::aff<pair<T1, T2>> &ma2) const;
5768 inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> pw_multi_aff_list() const;
5769 inline typed::pw_multi_aff<pair<T1, T2>, Range> range_factor_domain() const;
5770 inline typed::pw_multi_aff<pair<T1, T2>, Range2> range_factor_range() const;
5771 template <typename Arg2>
5772 inline typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &multi2) const;
5773 template <typename Arg2>
5774 inline typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
5775 template <typename Arg2>
5776 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
5777 template <typename Arg2>
5778 inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const;
5779 template <typename Arg2>
5780 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
5781 inline typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>> range_product(const typed::aff<pair<T1, T2>, Anonymous> &multi2) const;
5782 inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
5783 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
5784 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
5785 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(long v) const;
5786 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
5787 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
5788 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(long v) const;
5789 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::aff<pair<T1, T2>, Anonymous> &el) const;
5790 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const;
5791 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const;
5792 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
5793 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
5794 inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
5795 inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
5796 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5797 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5798 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5799 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
5800 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
5801 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
5802 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::set<pair<T1, T2>> &set) const;
5803 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::space<pair<T1, T2>> &space) const;
5804 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const;
5805 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> to_multi_pw_aff() const;
5806 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> to_multi_union_pw_aff() const;
5807 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> to_pw_multi_aff() const;
5808 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> to_union_pw_multi_aff() const;
5809 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
5810 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const;
5811 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const;
5812 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
5813 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
5816 template <typename Domain>
5817 struct multi_id<Domain> : public isl::multi_id {
5818 template <typename...>
5819 friend struct aff;
5820 template <typename...>
5821 friend struct aff_list;
5822 template <typename...>
5823 friend struct basic_map;
5824 template <typename...>
5825 friend struct basic_set;
5826 template <typename...>
5827 friend struct fixed_box;
5828 template <typename...>
5829 friend struct id;
5830 template <typename...>
5831 friend struct id_list;
5832 template <typename...>
5833 friend struct map;
5834 template <typename...>
5835 friend struct map_list;
5836 template <typename...>
5837 friend struct multi_aff;
5838 template <typename...>
5839 friend struct multi_id;
5840 template <typename...>
5841 friend struct multi_pw_aff;
5842 template <typename...>
5843 friend struct multi_union_pw_aff;
5844 template <typename...>
5845 friend struct multi_val;
5846 template <typename...>
5847 friend struct point;
5848 template <typename...>
5849 friend struct pw_aff;
5850 template <typename...>
5851 friend struct pw_aff_list;
5852 template <typename...>
5853 friend struct pw_multi_aff;
5854 template <typename...>
5855 friend struct pw_multi_aff_list;
5856 template <typename...>
5857 friend struct set;
5858 template <typename...>
5859 friend struct set_list;
5860 template <typename...>
5861 friend struct space;
5862 template <typename...>
5863 friend struct union_map;
5864 template <typename...>
5865 friend struct union_pw_aff;
5866 template <typename...>
5867 friend struct union_pw_aff_list;
5868 template <typename...>
5869 friend struct union_pw_multi_aff;
5870 template <typename...>
5871 friend struct union_set;
5872 template <typename...>
5873 friend struct union_set_list;
5874 template <typename...>
5875 friend struct val;
5876 template <typename...>
5877 friend struct val_list;
5879 multi_id() = default;
5880 template <typename Arg1,
5881 typename std::enable_if<
5882 std::is_base_of<Domain, Arg1>{},
5883 bool>::type = true>
5884 multi_id(const multi_id<Arg1> &obj) : isl::multi_id(obj) {}
5885 private:
5886 template <typename base,
5887 typename std::enable_if<
5888 std::is_same<base, isl::multi_id>{}, bool>::type = true>
5889 multi_id(const base &obj) : isl::multi_id(obj) {}
5890 public:
5891 static multi_id from(const isl::multi_id &obj) {
5892 return multi_id(obj);
5894 inline explicit multi_id(const typed::space<Domain> &space, const typed::id_list<Anonymous> &list);
5895 inline explicit multi_id(const isl::ctx &ctx, const std::string &str);
5896 inline typed::id<Anonymous> at(int pos) const;
5897 inline typed::id<Domain> get_at(int pos) const = delete;
5898 inline typed::id_list<Anonymous> list() const;
5899 inline typed::id_list<Domain> get_list() const = delete;
5900 inline typed::multi_id<Domain> range_product(const typed::multi_id<> &multi2) const = delete;
5901 inline typed::multi_id<Domain> set_at(int pos, const typed::id<Anonymous> &el) const;
5902 inline typed::multi_id<Domain> set_at(int pos, const std::string &el) const;
5903 inline typed::space<Domain> space() const;
5904 inline typed::space<Domain> get_space() const = delete;
5907 template <typename Domain>
5908 struct multi_pw_aff<Domain> : public isl::multi_pw_aff {
5909 template <typename...>
5910 friend struct aff;
5911 template <typename...>
5912 friend struct aff_list;
5913 template <typename...>
5914 friend struct basic_map;
5915 template <typename...>
5916 friend struct basic_set;
5917 template <typename...>
5918 friend struct fixed_box;
5919 template <typename...>
5920 friend struct id;
5921 template <typename...>
5922 friend struct id_list;
5923 template <typename...>
5924 friend struct map;
5925 template <typename...>
5926 friend struct map_list;
5927 template <typename...>
5928 friend struct multi_aff;
5929 template <typename...>
5930 friend struct multi_id;
5931 template <typename...>
5932 friend struct multi_pw_aff;
5933 template <typename...>
5934 friend struct multi_union_pw_aff;
5935 template <typename...>
5936 friend struct multi_val;
5937 template <typename...>
5938 friend struct point;
5939 template <typename...>
5940 friend struct pw_aff;
5941 template <typename...>
5942 friend struct pw_aff_list;
5943 template <typename...>
5944 friend struct pw_multi_aff;
5945 template <typename...>
5946 friend struct pw_multi_aff_list;
5947 template <typename...>
5948 friend struct set;
5949 template <typename...>
5950 friend struct set_list;
5951 template <typename...>
5952 friend struct space;
5953 template <typename...>
5954 friend struct union_map;
5955 template <typename...>
5956 friend struct union_pw_aff;
5957 template <typename...>
5958 friend struct union_pw_aff_list;
5959 template <typename...>
5960 friend struct union_pw_multi_aff;
5961 template <typename...>
5962 friend struct union_set;
5963 template <typename...>
5964 friend struct union_set_list;
5965 template <typename...>
5966 friend struct val;
5967 template <typename...>
5968 friend struct val_list;
5970 multi_pw_aff() = default;
5971 template <typename Arg1,
5972 typename std::enable_if<
5973 std::is_base_of<Domain, Arg1>{},
5974 bool>::type = true>
5975 multi_pw_aff(const multi_pw_aff<Arg1> &obj) : isl::multi_pw_aff(obj) {}
5976 private:
5977 template <typename base,
5978 typename std::enable_if<
5979 std::is_same<base, isl::multi_pw_aff>{}, bool>::type = true>
5980 multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {}
5981 public:
5982 static multi_pw_aff from(const isl::multi_pw_aff &obj) {
5983 return multi_pw_aff(obj);
5985 inline /* implicit */ multi_pw_aff(const typed::aff<Domain> &aff);
5986 inline /* implicit */ multi_pw_aff(const typed::multi_aff<Domain> &ma);
5987 inline /* implicit */ multi_pw_aff(const typed::pw_aff<Domain> &pa);
5988 inline explicit multi_pw_aff(const typed::space<Domain> &space, const typed::pw_aff_list<Anonymous> &list);
5989 inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff<Domain> &pma);
5990 inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str);
5991 inline typed::multi_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
5992 inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
5993 inline typed::multi_pw_aff<Domain> add(const typed::aff<Domain> &multi2) const;
5994 inline typed::multi_pw_aff<Domain> add(const typed::multi_aff<Domain> &multi2) const;
5995 inline typed::multi_pw_aff<Domain> add(const typed::pw_aff<Domain> &multi2) const;
5996 inline typed::multi_pw_aff<Domain> add(const typed::pw_multi_aff<Domain> &multi2) const;
5997 inline typed::multi_pw_aff<Domain> add_constant(const typed::multi_val<Domain> &mv) const;
5998 inline typed::multi_pw_aff<Domain> add_constant(const typed::val<Domain> &v) const;
5999 inline typed::multi_pw_aff<Domain> add_constant(long v) const;
6000 inline typed::map<Domain> as_map() const = delete;
6001 inline typed::multi_aff<Domain> as_multi_aff() const;
6002 inline typed::set<Domain> as_set() const;
6003 inline typed::pw_aff<Anonymous> at(int pos) const;
6004 inline typed::pw_aff<Domain> get_at(int pos) const = delete;
6005 inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
6006 inline typed::multi_pw_aff<Domain> bind_domain(const typed::multi_id<> &tuple) const = delete;
6007 inline typed::multi_pw_aff<Domain> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
6008 inline typed::multi_pw_aff<Domain> coalesce() const;
6009 inline typed::set<> domain() const;
6010 inline typed::multi_pw_aff<Domain> domain_reverse() const = delete;
6011 inline typed::multi_pw_aff<Domain> gist(const typed::set<> &set) const;
6012 inline typed::multi_union_pw_aff<Domain> gist(const typed::union_set<> &context) const;
6013 inline typed::multi_pw_aff<Domain> gist(const typed::basic_set<> &set) const;
6014 inline typed::multi_pw_aff<Domain> gist(const typed::point<> &set) const;
6015 inline typed::multi_pw_aff<Domain> gist_params(const typed::set<> &set) const;
6016 inline typed::multi_pw_aff<Domain> gist_params(const typed::basic_set<> &set) const;
6017 inline typed::multi_pw_aff<Domain> gist_params(const typed::point<> &set) const;
6018 inline typed::multi_pw_aff<Domain, Domain> identity() const;
6019 template <typename Arg1>
6020 inline typed::multi_pw_aff<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
6021 inline typed::multi_pw_aff<Domain> intersect_domain(const typed::set<> &domain) const = delete;
6022 inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
6023 inline typed::multi_pw_aff<Domain> intersect_domain(const typed::basic_set<> &domain) const = delete;
6024 inline typed::multi_pw_aff<Domain> intersect_domain(const typed::point<> &domain) const = delete;
6025 inline typed::multi_pw_aff<Domain> intersect_params(const typed::set<> &set) const;
6026 inline typed::multi_pw_aff<Domain> intersect_params(const typed::basic_set<> &set) const;
6027 inline typed::multi_pw_aff<Domain> intersect_params(const typed::point<> &set) const;
6028 inline typed::pw_aff_list<Anonymous> list() const;
6029 inline typed::pw_aff_list<Domain> get_list() const = delete;
6030 inline typed::multi_pw_aff<Domain> max(const typed::multi_pw_aff<Domain> &multi2) const;
6031 inline typed::multi_pw_aff<Domain> max(const typed::aff<Domain> &multi2) const;
6032 inline typed::multi_pw_aff<Domain> max(const typed::multi_aff<Domain> &multi2) const;
6033 inline typed::multi_pw_aff<Domain> max(const typed::pw_aff<Domain> &multi2) const;
6034 inline typed::multi_pw_aff<Domain> max(const typed::pw_multi_aff<Domain> &multi2) const;
6035 inline typed::multi_val<Domain> max_multi_val() const;
6036 inline typed::multi_pw_aff<Domain> min(const typed::multi_pw_aff<Domain> &multi2) const;
6037 inline typed::multi_pw_aff<Domain> min(const typed::aff<Domain> &multi2) const;
6038 inline typed::multi_pw_aff<Domain> min(const typed::multi_aff<Domain> &multi2) const;
6039 inline typed::multi_pw_aff<Domain> min(const typed::pw_aff<Domain> &multi2) const;
6040 inline typed::multi_pw_aff<Domain> min(const typed::pw_multi_aff<Domain> &multi2) const;
6041 inline typed::multi_val<Domain> min_multi_val() const;
6042 inline typed::multi_pw_aff<Domain> neg() const;
6043 template <typename Range>
6044 inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
6045 inline typed::multi_pw_aff<pair<Domain, Anonymous>> product(const typed::aff<Anonymous> &multi2) const;
6046 template <typename Range>
6047 inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_aff<Range> &multi2) const;
6048 inline typed::multi_pw_aff<pair<Domain, Anonymous>> product(const typed::pw_aff<Anonymous> &multi2) const;
6049 template <typename Range>
6050 inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::pw_multi_aff<Range> &multi2) const;
6051 inline typed::multi_pw_aff<Domain> pullback(const typed::multi_aff<> &ma) const = delete;
6052 inline typed::multi_pw_aff<Domain> pullback(const typed::multi_pw_aff<> &mpa2) const = delete;
6053 inline typed::multi_pw_aff<Domain> pullback(const typed::pw_multi_aff<> &pma) const = delete;
6054 inline typed::multi_union_pw_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
6055 inline typed::multi_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
6056 inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
6057 inline typed::multi_pw_aff<Domain> range_product(const typed::aff<> &multi2) const = delete;
6058 inline typed::multi_pw_aff<Domain> range_product(const typed::multi_aff<> &multi2) const = delete;
6059 inline typed::multi_pw_aff<Domain> range_product(const typed::pw_aff<> &multi2) const = delete;
6060 inline typed::multi_pw_aff<Domain> range_product(const typed::pw_multi_aff<> &multi2) const = delete;
6061 inline typed::id<Domain> get_range_tuple_id() const = delete;
6062 inline typed::multi_pw_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
6063 inline typed::multi_pw_aff<Domain> scale(const typed::val<Domain> &v) const;
6064 inline typed::multi_pw_aff<Domain> scale(long v) const;
6065 inline typed::multi_pw_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
6066 inline typed::multi_pw_aff<Domain> scale_down(const typed::val<Domain> &v) const;
6067 inline typed::multi_pw_aff<Domain> scale_down(long v) const;
6068 inline typed::multi_pw_aff<Domain> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
6069 inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
6070 template <typename Domain2>
6071 inline typed::multi_pw_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
6072 template <typename Domain2>
6073 inline typed::multi_pw_aff<Domain2> set_range_tuple(const std::string &id) const;
6074 inline typed::space<Domain> space() const;
6075 inline typed::space<Domain> get_space() const = delete;
6076 inline typed::multi_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
6077 inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
6078 inline typed::multi_pw_aff<Domain> sub(const typed::aff<Domain> &multi2) const;
6079 inline typed::multi_pw_aff<Domain> sub(const typed::multi_aff<Domain> &multi2) const;
6080 inline typed::multi_pw_aff<Domain> sub(const typed::pw_aff<Domain> &multi2) const;
6081 inline typed::multi_pw_aff<Domain> sub(const typed::pw_multi_aff<Domain> &multi2) const;
6082 template <typename Arg1>
6083 inline typed::multi_pw_aff<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
6084 inline typed::multi_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mpa2) const;
6085 inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
6086 inline typed::multi_pw_aff<Domain> union_add(const typed::aff<Domain> &mpa2) const;
6087 inline typed::multi_pw_aff<Domain> union_add(const typed::multi_aff<Domain> &mpa2) const;
6088 inline typed::multi_pw_aff<Domain> union_add(const typed::pw_aff<Domain> &mpa2) const;
6089 inline typed::multi_pw_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &mpa2) const;
6092 template <typename Domain, typename Range>
6093 struct multi_pw_aff<Domain, Range> : public isl::multi_pw_aff {
6094 template <typename...>
6095 friend struct aff;
6096 template <typename...>
6097 friend struct aff_list;
6098 template <typename...>
6099 friend struct basic_map;
6100 template <typename...>
6101 friend struct basic_set;
6102 template <typename...>
6103 friend struct fixed_box;
6104 template <typename...>
6105 friend struct id;
6106 template <typename...>
6107 friend struct id_list;
6108 template <typename...>
6109 friend struct map;
6110 template <typename...>
6111 friend struct map_list;
6112 template <typename...>
6113 friend struct multi_aff;
6114 template <typename...>
6115 friend struct multi_id;
6116 template <typename...>
6117 friend struct multi_pw_aff;
6118 template <typename...>
6119 friend struct multi_union_pw_aff;
6120 template <typename...>
6121 friend struct multi_val;
6122 template <typename...>
6123 friend struct point;
6124 template <typename...>
6125 friend struct pw_aff;
6126 template <typename...>
6127 friend struct pw_aff_list;
6128 template <typename...>
6129 friend struct pw_multi_aff;
6130 template <typename...>
6131 friend struct pw_multi_aff_list;
6132 template <typename...>
6133 friend struct set;
6134 template <typename...>
6135 friend struct set_list;
6136 template <typename...>
6137 friend struct space;
6138 template <typename...>
6139 friend struct union_map;
6140 template <typename...>
6141 friend struct union_pw_aff;
6142 template <typename...>
6143 friend struct union_pw_aff_list;
6144 template <typename...>
6145 friend struct union_pw_multi_aff;
6146 template <typename...>
6147 friend struct union_set;
6148 template <typename...>
6149 friend struct union_set_list;
6150 template <typename...>
6151 friend struct val;
6152 template <typename...>
6153 friend struct val_list;
6155 multi_pw_aff() = default;
6156 template <typename Arg1, typename Arg2,
6157 typename std::enable_if<
6158 std::is_base_of<Domain, Arg1>{} &&
6159 std::is_base_of<Range, Arg2>{},
6160 bool>::type = true>
6161 multi_pw_aff(const multi_pw_aff<Arg1, Arg2> &obj) : isl::multi_pw_aff(obj) {}
6162 private:
6163 template <typename base,
6164 typename std::enable_if<
6165 std::is_same<base, isl::multi_pw_aff>{}, bool>::type = true>
6166 multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {}
6167 public:
6168 static multi_pw_aff from(const isl::multi_pw_aff &obj) {
6169 return multi_pw_aff(obj);
6171 inline /* implicit */ multi_pw_aff(const typed::aff<Domain, Range> &aff);
6172 inline /* implicit */ multi_pw_aff(const typed::multi_aff<Domain, Range> &ma);
6173 inline /* implicit */ multi_pw_aff(const typed::pw_aff<Domain, Range> &pa);
6174 inline explicit multi_pw_aff(const typed::space<Domain, Range> &space, const typed::pw_aff_list<Domain, Anonymous> &list);
6175 inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff<Domain, Range> &pma);
6176 inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str);
6177 inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
6178 inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
6179 inline typed::multi_pw_aff<Domain, Range> add(const typed::aff<Domain, Range> &multi2) const;
6180 inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &multi2) const;
6181 inline typed::multi_pw_aff<Domain, Range> add(const typed::pw_aff<Domain, Range> &multi2) const;
6182 inline typed::multi_pw_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &multi2) const;
6183 inline typed::multi_pw_aff<Domain, Range> add_constant(const typed::multi_val<Range> &mv) const;
6184 inline typed::multi_pw_aff<Domain, Range> add_constant(const typed::val<Range> &v) const;
6185 inline typed::multi_pw_aff<Domain, Range> add_constant(long v) const;
6186 inline typed::map<Domain, Range> as_map() const;
6187 inline typed::multi_aff<Domain, Range> as_multi_aff() const;
6188 inline typed::set<Domain, Range> as_set() const = delete;
6189 inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
6190 inline typed::pw_aff<Domain, Range> get_at(int pos) const = delete;
6191 inline typed::set<Domain> bind(const typed::multi_id<Range> &tuple) const;
6192 inline typed::multi_pw_aff<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
6193 inline typed::multi_pw_aff<Domain, Range> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
6194 inline typed::multi_pw_aff<Domain, Range> coalesce() const;
6195 inline typed::set<Domain> domain() const;
6196 inline typed::multi_pw_aff<Domain, Range> domain_reverse() const = delete;
6197 inline typed::multi_pw_aff<Domain, Range> gist(const typed::set<Domain> &set) const;
6198 inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
6199 inline typed::multi_pw_aff<Domain, Range> gist(const typed::basic_set<Domain> &set) const;
6200 inline typed::multi_pw_aff<Domain, Range> gist(const typed::point<Domain> &set) const;
6201 inline typed::multi_pw_aff<Domain, Range> gist_params(const typed::set<> &set) const;
6202 inline typed::multi_pw_aff<Domain, Range> gist_params(const typed::basic_set<> &set) const;
6203 inline typed::multi_pw_aff<Domain, Range> gist_params(const typed::point<> &set) const;
6204 inline typed::multi_pw_aff<Domain, Range> identity() const;
6205 inline typed::multi_pw_aff<Domain, Range> insert_domain(const typed::space<> &domain) const = delete;
6206 inline typed::multi_pw_aff<Domain, Range> intersect_domain(const typed::set<Domain> &domain) const;
6207 inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
6208 inline typed::multi_pw_aff<Domain, Range> intersect_domain(const typed::basic_set<Domain> &domain) const;
6209 inline typed::multi_pw_aff<Domain, Range> intersect_domain(const typed::point<Domain> &domain) const;
6210 inline typed::multi_pw_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
6211 inline typed::multi_pw_aff<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
6212 inline typed::multi_pw_aff<Domain, Range> intersect_params(const typed::point<> &set) const;
6213 inline typed::pw_aff_list<Domain, Anonymous> list() const;
6214 inline typed::pw_aff_list<Domain, Range> get_list() const = delete;
6215 inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_pw_aff<Domain, Range> &multi2) const;
6216 inline typed::multi_pw_aff<Domain, Range> max(const typed::aff<Domain, Range> &multi2) const;
6217 inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_aff<Domain, Range> &multi2) const;
6218 inline typed::multi_pw_aff<Domain, Range> max(const typed::pw_aff<Domain, Range> &multi2) const;
6219 inline typed::multi_pw_aff<Domain, Range> max(const typed::pw_multi_aff<Domain, Range> &multi2) const;
6220 inline typed::multi_val<Range> max_multi_val() const;
6221 inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_pw_aff<Domain, Range> &multi2) const;
6222 inline typed::multi_pw_aff<Domain, Range> min(const typed::aff<Domain, Range> &multi2) const;
6223 inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_aff<Domain, Range> &multi2) const;
6224 inline typed::multi_pw_aff<Domain, Range> min(const typed::pw_aff<Domain, Range> &multi2) const;
6225 inline typed::multi_pw_aff<Domain, Range> min(const typed::pw_multi_aff<Domain, Range> &multi2) const;
6226 inline typed::multi_val<Range> min_multi_val() const;
6227 inline typed::multi_pw_aff<Domain, Range> neg() const;
6228 template <typename Domain2, typename Range2>
6229 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
6230 template <typename Domain2>
6231 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> product(const typed::aff<Domain2, Anonymous> &multi2) const;
6232 template <typename Domain2, typename Range2>
6233 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_aff<Domain2, Range2> &multi2) const;
6234 template <typename Domain2>
6235 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> product(const typed::pw_aff<Domain2, Anonymous> &multi2) const;
6236 template <typename Domain2, typename Range2>
6237 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &multi2) const;
6238 template <typename Domain2>
6239 inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
6240 inline typed::multi_pw_aff<Range> pullback(const typed::multi_aff<Domain> &ma) const;
6241 template <typename Domain2>
6242 inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
6243 inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
6244 template <typename Domain2>
6245 inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
6246 inline typed::multi_pw_aff<Range> pullback(const typed::pw_multi_aff<Domain> &pma) const;
6247 template <typename Domain2>
6248 inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
6249 inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
6250 template <typename Range2>
6251 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
6252 template <typename Range2>
6253 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
6254 inline typed::multi_pw_aff<Domain, pair<Range, Anonymous>> range_product(const typed::aff<Domain, Anonymous> &multi2) const;
6255 template <typename Range2>
6256 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &multi2) const;
6257 inline typed::multi_pw_aff<Domain, pair<Range, Anonymous>> range_product(const typed::pw_aff<Domain, Anonymous> &multi2) const;
6258 template <typename Range2>
6259 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &multi2) const;
6260 inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
6261 inline typed::multi_pw_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
6262 inline typed::multi_pw_aff<Domain, Range> scale(const typed::val<Range> &v) const;
6263 inline typed::multi_pw_aff<Domain, Range> scale(long v) const;
6264 inline typed::multi_pw_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
6265 inline typed::multi_pw_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
6266 inline typed::multi_pw_aff<Domain, Range> scale_down(long v) const;
6267 inline typed::multi_pw_aff<Domain, Range> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
6268 inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
6269 template <typename Range2>
6270 inline typed::multi_pw_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
6271 template <typename Range2>
6272 inline typed::multi_pw_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
6273 inline typed::space<Domain, Range> space() const;
6274 inline typed::space<Domain, Range> get_space() const = delete;
6275 inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
6276 inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
6277 inline typed::multi_pw_aff<Domain, Range> sub(const typed::aff<Domain, Range> &multi2) const;
6278 inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &multi2) const;
6279 inline typed::multi_pw_aff<Domain, Range> sub(const typed::pw_aff<Domain, Range> &multi2) const;
6280 inline typed::multi_pw_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &multi2) const;
6281 inline typed::multi_pw_aff<Domain, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
6282 inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const;
6283 inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
6284 inline typed::multi_pw_aff<Domain, Range> union_add(const typed::aff<Domain, Range> &mpa2) const;
6285 inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_aff<Domain, Range> &mpa2) const;
6286 inline typed::multi_pw_aff<Domain, Range> union_add(const typed::pw_aff<Domain, Range> &mpa2) const;
6287 inline typed::multi_pw_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &mpa2) const;
6290 template <typename Domain2, typename Range2, typename Range>
6291 struct multi_pw_aff<pair<Domain2, Range2>, Range> : public isl::multi_pw_aff {
6292 template <typename...>
6293 friend struct aff;
6294 template <typename...>
6295 friend struct aff_list;
6296 template <typename...>
6297 friend struct basic_map;
6298 template <typename...>
6299 friend struct basic_set;
6300 template <typename...>
6301 friend struct fixed_box;
6302 template <typename...>
6303 friend struct id;
6304 template <typename...>
6305 friend struct id_list;
6306 template <typename...>
6307 friend struct map;
6308 template <typename...>
6309 friend struct map_list;
6310 template <typename...>
6311 friend struct multi_aff;
6312 template <typename...>
6313 friend struct multi_id;
6314 template <typename...>
6315 friend struct multi_pw_aff;
6316 template <typename...>
6317 friend struct multi_union_pw_aff;
6318 template <typename...>
6319 friend struct multi_val;
6320 template <typename...>
6321 friend struct point;
6322 template <typename...>
6323 friend struct pw_aff;
6324 template <typename...>
6325 friend struct pw_aff_list;
6326 template <typename...>
6327 friend struct pw_multi_aff;
6328 template <typename...>
6329 friend struct pw_multi_aff_list;
6330 template <typename...>
6331 friend struct set;
6332 template <typename...>
6333 friend struct set_list;
6334 template <typename...>
6335 friend struct space;
6336 template <typename...>
6337 friend struct union_map;
6338 template <typename...>
6339 friend struct union_pw_aff;
6340 template <typename...>
6341 friend struct union_pw_aff_list;
6342 template <typename...>
6343 friend struct union_pw_multi_aff;
6344 template <typename...>
6345 friend struct union_set;
6346 template <typename...>
6347 friend struct union_set_list;
6348 template <typename...>
6349 friend struct val;
6350 template <typename...>
6351 friend struct val_list;
6353 multi_pw_aff() = default;
6354 template <typename Arg1, typename Arg2, typename Arg3,
6355 typename std::enable_if<
6356 std::is_base_of<Domain2, Arg1>{} &&
6357 std::is_base_of<Range2, Arg2>{} &&
6358 std::is_base_of<Range, Arg3>{},
6359 bool>::type = true>
6360 multi_pw_aff(const multi_pw_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::multi_pw_aff(obj) {}
6361 private:
6362 template <typename base,
6363 typename std::enable_if<
6364 std::is_same<base, isl::multi_pw_aff>{}, bool>::type = true>
6365 multi_pw_aff(const base &obj) : isl::multi_pw_aff(obj) {}
6366 public:
6367 static multi_pw_aff from(const isl::multi_pw_aff &obj) {
6368 return multi_pw_aff(obj);
6370 inline /* implicit */ multi_pw_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff);
6371 inline /* implicit */ multi_pw_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma);
6372 inline /* implicit */ multi_pw_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa);
6373 inline explicit multi_pw_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> &list);
6374 inline /* implicit */ multi_pw_aff(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma);
6375 inline explicit multi_pw_aff(const isl::ctx &ctx, const std::string &str);
6376 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6377 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6378 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
6379 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6380 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6381 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6382 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add_constant(const typed::multi_val<Range> &mv) const;
6383 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add_constant(const typed::val<Range> &v) const;
6384 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add_constant(long v) const;
6385 inline typed::map<pair<Domain2, Range2>, Range> as_map() const;
6386 inline typed::multi_aff<pair<Domain2, Range2>, Range> as_multi_aff() const;
6387 inline typed::set<pair<Domain2, Range2>, Range> as_set() const = delete;
6388 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
6389 inline typed::pw_aff<pair<Domain2, Range2>, Range> get_at(int pos) const = delete;
6390 inline typed::set<pair<Domain2, Range2>> bind(const typed::multi_id<Range> &tuple) const;
6391 inline typed::multi_pw_aff<Range> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
6392 inline typed::multi_pw_aff<Range2, Range> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
6393 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> coalesce() const;
6394 inline typed::set<pair<Domain2, Range2>> domain() const;
6395 inline typed::multi_pw_aff<pair<Range2, Domain2>, Range> domain_reverse() const;
6396 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::set<pair<Domain2, Range2>> &set) const;
6397 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
6398 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::basic_set<pair<Domain2, Range2>> &set) const;
6399 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist(const typed::point<pair<Domain2, Range2>> &set) const;
6400 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist_params(const typed::set<> &set) const;
6401 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist_params(const typed::basic_set<> &set) const;
6402 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> gist_params(const typed::point<> &set) const;
6403 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> identity() const;
6404 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> insert_domain(const typed::space<> &domain) const = delete;
6405 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::set<pair<Domain2, Range2>> &domain) const;
6406 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
6407 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &domain) const;
6408 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::point<pair<Domain2, Range2>> &domain) const;
6409 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::set<> &set) const;
6410 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::basic_set<> &set) const;
6411 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::point<> &set) const;
6412 inline typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> list() const;
6413 inline typed::pw_aff_list<pair<Domain2, Range2>, Range> get_list() const = delete;
6414 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6415 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
6416 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6417 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6418 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6419 inline typed::multi_val<Range> max_multi_val() const;
6420 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6421 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
6422 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6423 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6424 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6425 inline typed::multi_val<Range> min_multi_val() const;
6426 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> neg() const;
6427 template <typename Arg2, typename Arg3>
6428 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const;
6429 template <typename Arg2>
6430 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> product(const typed::aff<Arg2, Anonymous> &multi2) const;
6431 template <typename Arg2, typename Arg3>
6432 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_aff<Arg2, Arg3> &multi2) const;
6433 template <typename Arg2>
6434 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> product(const typed::pw_aff<Arg2, Anonymous> &multi2) const;
6435 template <typename Arg2, typename Arg3>
6436 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_multi_aff<Arg2, Arg3> &multi2) const;
6437 template <typename Arg2>
6438 inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const;
6439 inline typed::multi_pw_aff<Range> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
6440 template <typename Arg2>
6441 inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const;
6442 inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const;
6443 template <typename Arg2>
6444 inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma) const;
6445 inline typed::multi_pw_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const;
6446 template <typename Arg2>
6447 inline typed::multi_union_pw_aff<Arg2, Range> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma) const;
6448 inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const;
6449 template <typename Arg2>
6450 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
6451 template <typename Arg2>
6452 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
6453 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> range_product(const typed::aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
6454 template <typename Arg2>
6455 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
6456 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> range_product(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
6457 template <typename Arg2>
6458 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
6459 inline typed::id<pair<Domain2, Range2>, Range> get_range_tuple_id() const = delete;
6460 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale(const typed::multi_val<Range> &mv) const;
6461 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale(const typed::val<Range> &v) const;
6462 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale(long v) const;
6463 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale_down(const typed::multi_val<Range> &mv) const;
6464 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale_down(const typed::val<Range> &v) const;
6465 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> scale_down(long v) const;
6466 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
6467 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
6468 template <typename Arg1>
6469 inline typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
6470 template <typename Arg1>
6471 inline typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
6472 inline typed::space<pair<Domain2, Range2>, Range> space() const;
6473 inline typed::space<pair<Domain2, Range2>, Range> get_space() const = delete;
6474 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6475 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6476 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const;
6477 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6478 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
6479 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const;
6480 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
6481 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
6482 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const;
6483 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::aff<pair<Domain2, Range2>, Range> &mpa2) const;
6484 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &mpa2) const;
6485 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
6486 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &mpa2) const;
6489 template <typename Domain>
6490 struct multi_union_pw_aff<Domain> : public isl::multi_union_pw_aff {
6491 template <typename...>
6492 friend struct aff;
6493 template <typename...>
6494 friend struct aff_list;
6495 template <typename...>
6496 friend struct basic_map;
6497 template <typename...>
6498 friend struct basic_set;
6499 template <typename...>
6500 friend struct fixed_box;
6501 template <typename...>
6502 friend struct id;
6503 template <typename...>
6504 friend struct id_list;
6505 template <typename...>
6506 friend struct map;
6507 template <typename...>
6508 friend struct map_list;
6509 template <typename...>
6510 friend struct multi_aff;
6511 template <typename...>
6512 friend struct multi_id;
6513 template <typename...>
6514 friend struct multi_pw_aff;
6515 template <typename...>
6516 friend struct multi_union_pw_aff;
6517 template <typename...>
6518 friend struct multi_val;
6519 template <typename...>
6520 friend struct point;
6521 template <typename...>
6522 friend struct pw_aff;
6523 template <typename...>
6524 friend struct pw_aff_list;
6525 template <typename...>
6526 friend struct pw_multi_aff;
6527 template <typename...>
6528 friend struct pw_multi_aff_list;
6529 template <typename...>
6530 friend struct set;
6531 template <typename...>
6532 friend struct set_list;
6533 template <typename...>
6534 friend struct space;
6535 template <typename...>
6536 friend struct union_map;
6537 template <typename...>
6538 friend struct union_pw_aff;
6539 template <typename...>
6540 friend struct union_pw_aff_list;
6541 template <typename...>
6542 friend struct union_pw_multi_aff;
6543 template <typename...>
6544 friend struct union_set;
6545 template <typename...>
6546 friend struct union_set_list;
6547 template <typename...>
6548 friend struct val;
6549 template <typename...>
6550 friend struct val_list;
6552 multi_union_pw_aff() = default;
6553 template <typename Arg1,
6554 typename std::enable_if<
6555 std::is_base_of<Domain, Arg1>{},
6556 bool>::type = true>
6557 multi_union_pw_aff(const multi_union_pw_aff<Arg1> &obj) : isl::multi_union_pw_aff(obj) {}
6558 private:
6559 template <typename base,
6560 typename std::enable_if<
6561 std::is_same<base, isl::multi_union_pw_aff>{}, bool>::type = true>
6562 multi_union_pw_aff(const base &obj) : isl::multi_union_pw_aff(obj) {}
6563 public:
6564 static multi_union_pw_aff from(const isl::multi_union_pw_aff &obj) {
6565 return multi_union_pw_aff(obj);
6567 inline /* implicit */ multi_union_pw_aff(const typed::multi_pw_aff<Domain> &mpa);
6568 inline /* implicit */ multi_union_pw_aff(const typed::union_pw_aff<Domain> &upa);
6569 inline explicit multi_union_pw_aff(const typed::space<Domain> &space, const typed::union_pw_aff_list<Anonymous> &list);
6570 inline explicit multi_union_pw_aff(const isl::ctx &ctx, const std::string &str);
6571 inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
6572 inline typed::multi_union_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
6573 inline typed::multi_union_pw_aff<Domain> add(const typed::union_pw_aff<Domain> &multi2) const;
6574 inline typed::union_pw_aff<Anonymous> at(int pos) const;
6575 inline typed::union_pw_aff<Domain> get_at(int pos) const = delete;
6576 inline typed::union_set<> bind(const typed::multi_id<Domain> &tuple) const;
6577 inline typed::multi_union_pw_aff<Domain> coalesce() const;
6578 inline typed::union_set<> domain() const;
6579 inline typed::multi_union_pw_aff<Domain> gist(const typed::union_set<> &context) const;
6580 inline typed::multi_union_pw_aff<Domain> gist(const typed::basic_set<> &context) const;
6581 inline typed::multi_union_pw_aff<Domain> gist(const typed::point<> &context) const;
6582 inline typed::multi_union_pw_aff<Domain> gist(const typed::set<> &context) const;
6583 inline typed::multi_union_pw_aff<Domain> gist_params(const typed::set<> &context) const;
6584 inline typed::multi_union_pw_aff<Domain> gist_params(const typed::basic_set<> &context) const;
6585 inline typed::multi_union_pw_aff<Domain> gist_params(const typed::point<> &context) const;
6586 inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
6587 inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::basic_set<> &uset) const = delete;
6588 inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::point<> &uset) const = delete;
6589 inline typed::multi_union_pw_aff<Domain> intersect_domain(const typed::set<> &uset) const = delete;
6590 inline typed::multi_union_pw_aff<Domain> intersect_params(const typed::set<> &params) const;
6591 inline typed::multi_union_pw_aff<Domain> intersect_params(const typed::basic_set<> &params) const;
6592 inline typed::multi_union_pw_aff<Domain> intersect_params(const typed::point<> &params) const;
6593 inline typed::union_pw_aff_list<Anonymous> list() const;
6594 inline typed::union_pw_aff_list<Domain> get_list() const = delete;
6595 inline typed::multi_union_pw_aff<Domain> neg() const;
6596 inline typed::multi_union_pw_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
6597 inline typed::multi_union_pw_aff<Domain> pullback(const typed::multi_aff<> &upma) const = delete;
6598 inline typed::multi_union_pw_aff<Domain> pullback(const typed::pw_multi_aff<> &upma) const = delete;
6599 inline typed::multi_union_pw_aff<Domain> pullback(const typed::union_pw_aff<> &upma) const = delete;
6600 inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
6601 inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
6602 inline typed::multi_union_pw_aff<Domain> range_product(const typed::union_pw_aff<> &multi2) const = delete;
6603 inline typed::id<Domain> get_range_tuple_id() const = delete;
6604 inline typed::multi_union_pw_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
6605 inline typed::multi_union_pw_aff<Domain> scale(const typed::val<Domain> &v) const;
6606 inline typed::multi_union_pw_aff<Domain> scale(long v) const;
6607 inline typed::multi_union_pw_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
6608 inline typed::multi_union_pw_aff<Domain> scale_down(const typed::val<Domain> &v) const;
6609 inline typed::multi_union_pw_aff<Domain> scale_down(long v) const;
6610 inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
6611 template <typename Domain2>
6612 inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
6613 template <typename Domain2>
6614 inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const std::string &id) const;
6615 inline typed::space<Domain> space() const;
6616 inline typed::space<Domain> get_space() const = delete;
6617 inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
6618 inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
6619 inline typed::multi_union_pw_aff<Domain> sub(const typed::union_pw_aff<Domain> &multi2) const;
6620 inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
6621 inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mupa2) const;
6622 inline typed::multi_union_pw_aff<Domain> union_add(const typed::union_pw_aff<Domain> &mupa2) const;
6625 template <typename Domain, typename Range>
6626 struct multi_union_pw_aff<Domain, Range> : public isl::multi_union_pw_aff {
6627 template <typename...>
6628 friend struct aff;
6629 template <typename...>
6630 friend struct aff_list;
6631 template <typename...>
6632 friend struct basic_map;
6633 template <typename...>
6634 friend struct basic_set;
6635 template <typename...>
6636 friend struct fixed_box;
6637 template <typename...>
6638 friend struct id;
6639 template <typename...>
6640 friend struct id_list;
6641 template <typename...>
6642 friend struct map;
6643 template <typename...>
6644 friend struct map_list;
6645 template <typename...>
6646 friend struct multi_aff;
6647 template <typename...>
6648 friend struct multi_id;
6649 template <typename...>
6650 friend struct multi_pw_aff;
6651 template <typename...>
6652 friend struct multi_union_pw_aff;
6653 template <typename...>
6654 friend struct multi_val;
6655 template <typename...>
6656 friend struct point;
6657 template <typename...>
6658 friend struct pw_aff;
6659 template <typename...>
6660 friend struct pw_aff_list;
6661 template <typename...>
6662 friend struct pw_multi_aff;
6663 template <typename...>
6664 friend struct pw_multi_aff_list;
6665 template <typename...>
6666 friend struct set;
6667 template <typename...>
6668 friend struct set_list;
6669 template <typename...>
6670 friend struct space;
6671 template <typename...>
6672 friend struct union_map;
6673 template <typename...>
6674 friend struct union_pw_aff;
6675 template <typename...>
6676 friend struct union_pw_aff_list;
6677 template <typename...>
6678 friend struct union_pw_multi_aff;
6679 template <typename...>
6680 friend struct union_set;
6681 template <typename...>
6682 friend struct union_set_list;
6683 template <typename...>
6684 friend struct val;
6685 template <typename...>
6686 friend struct val_list;
6688 multi_union_pw_aff() = default;
6689 template <typename Arg1, typename Arg2,
6690 typename std::enable_if<
6691 std::is_base_of<Domain, Arg1>{} &&
6692 std::is_base_of<Range, Arg2>{},
6693 bool>::type = true>
6694 multi_union_pw_aff(const multi_union_pw_aff<Arg1, Arg2> &obj) : isl::multi_union_pw_aff(obj) {}
6695 private:
6696 template <typename base,
6697 typename std::enable_if<
6698 std::is_same<base, isl::multi_union_pw_aff>{}, bool>::type = true>
6699 multi_union_pw_aff(const base &obj) : isl::multi_union_pw_aff(obj) {}
6700 public:
6701 static multi_union_pw_aff from(const isl::multi_union_pw_aff &obj) {
6702 return multi_union_pw_aff(obj);
6704 inline /* implicit */ multi_union_pw_aff(const typed::multi_pw_aff<Domain, Range> &mpa);
6705 inline /* implicit */ multi_union_pw_aff(const typed::union_pw_aff<Domain, Range> &upa);
6706 inline explicit multi_union_pw_aff(const typed::space<Domain, Range> &space, const typed::union_pw_aff_list<Domain, Anonymous> &list);
6707 inline explicit multi_union_pw_aff(const isl::ctx &ctx, const std::string &str);
6708 inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
6709 inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
6710 inline typed::multi_union_pw_aff<Domain, Range> add(const typed::union_pw_aff<Domain, Range> &multi2) const;
6711 inline typed::union_pw_aff<Domain, Anonymous> at(int pos) const;
6712 inline typed::union_pw_aff<Domain, Range> get_at(int pos) const = delete;
6713 inline typed::union_set<Domain> bind(const typed::multi_id<Range> &tuple) const;
6714 inline typed::multi_union_pw_aff<Domain, Range> coalesce() const;
6715 inline typed::union_set<Domain> domain() const;
6716 inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
6717 inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::basic_set<Domain> &context) const;
6718 inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::point<Domain> &context) const;
6719 inline typed::multi_union_pw_aff<Domain, Range> gist(const typed::set<Domain> &context) const;
6720 inline typed::multi_union_pw_aff<Domain, Range> gist_params(const typed::set<> &context) const;
6721 inline typed::multi_union_pw_aff<Domain, Range> gist_params(const typed::basic_set<> &context) const;
6722 inline typed::multi_union_pw_aff<Domain, Range> gist_params(const typed::point<> &context) const;
6723 inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
6724 inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::basic_set<Domain> &uset) const;
6725 inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::point<Domain> &uset) const;
6726 inline typed::multi_union_pw_aff<Domain, Range> intersect_domain(const typed::set<Domain> &uset) const;
6727 inline typed::multi_union_pw_aff<Domain, Range> intersect_params(const typed::set<> &params) const;
6728 inline typed::multi_union_pw_aff<Domain, Range> intersect_params(const typed::basic_set<> &params) const;
6729 inline typed::multi_union_pw_aff<Domain, Range> intersect_params(const typed::point<> &params) const;
6730 inline typed::union_pw_aff_list<Domain, Anonymous> list() const;
6731 inline typed::union_pw_aff_list<Domain, Range> get_list() const = delete;
6732 inline typed::multi_union_pw_aff<Domain, Range> neg() const;
6733 template <typename Domain2>
6734 inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
6735 inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
6736 template <typename Domain2>
6737 inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &upma) const;
6738 inline typed::multi_union_pw_aff<Range> pullback(const typed::multi_aff<Domain> &upma) const;
6739 template <typename Domain2>
6740 inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const;
6741 inline typed::multi_union_pw_aff<Range> pullback(const typed::pw_multi_aff<Domain> &upma) const;
6742 template <typename Domain2>
6743 inline typed::multi_union_pw_aff<Domain2, Range> pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const;
6744 inline typed::multi_union_pw_aff<Range> pullback(const typed::union_pw_aff<Domain> &upma) const;
6745 template <typename Range2>
6746 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
6747 template <typename Range2>
6748 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
6749 inline typed::multi_union_pw_aff<Domain, pair<Range, Anonymous>> range_product(const typed::union_pw_aff<Domain, Anonymous> &multi2) const;
6750 inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
6751 inline typed::multi_union_pw_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
6752 inline typed::multi_union_pw_aff<Domain, Range> scale(const typed::val<Range> &v) const;
6753 inline typed::multi_union_pw_aff<Domain, Range> scale(long v) const;
6754 inline typed::multi_union_pw_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
6755 inline typed::multi_union_pw_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
6756 inline typed::multi_union_pw_aff<Domain, Range> scale_down(long v) const;
6757 inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
6758 template <typename Range2>
6759 inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
6760 template <typename Range2>
6761 inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
6762 inline typed::space<Range> space() const;
6763 inline typed::space<Domain, Range> get_space() const = delete;
6764 inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
6765 inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
6766 inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::union_pw_aff<Domain, Range> &multi2) const;
6767 inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
6768 inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mupa2) const;
6769 inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::union_pw_aff<Domain, Range> &mupa2) const;
6772 template <typename Domain>
6773 struct multi_val<Domain> : public isl::multi_val {
6774 template <typename...>
6775 friend struct aff;
6776 template <typename...>
6777 friend struct aff_list;
6778 template <typename...>
6779 friend struct basic_map;
6780 template <typename...>
6781 friend struct basic_set;
6782 template <typename...>
6783 friend struct fixed_box;
6784 template <typename...>
6785 friend struct id;
6786 template <typename...>
6787 friend struct id_list;
6788 template <typename...>
6789 friend struct map;
6790 template <typename...>
6791 friend struct map_list;
6792 template <typename...>
6793 friend struct multi_aff;
6794 template <typename...>
6795 friend struct multi_id;
6796 template <typename...>
6797 friend struct multi_pw_aff;
6798 template <typename...>
6799 friend struct multi_union_pw_aff;
6800 template <typename...>
6801 friend struct multi_val;
6802 template <typename...>
6803 friend struct point;
6804 template <typename...>
6805 friend struct pw_aff;
6806 template <typename...>
6807 friend struct pw_aff_list;
6808 template <typename...>
6809 friend struct pw_multi_aff;
6810 template <typename...>
6811 friend struct pw_multi_aff_list;
6812 template <typename...>
6813 friend struct set;
6814 template <typename...>
6815 friend struct set_list;
6816 template <typename...>
6817 friend struct space;
6818 template <typename...>
6819 friend struct union_map;
6820 template <typename...>
6821 friend struct union_pw_aff;
6822 template <typename...>
6823 friend struct union_pw_aff_list;
6824 template <typename...>
6825 friend struct union_pw_multi_aff;
6826 template <typename...>
6827 friend struct union_set;
6828 template <typename...>
6829 friend struct union_set_list;
6830 template <typename...>
6831 friend struct val;
6832 template <typename...>
6833 friend struct val_list;
6835 multi_val() = default;
6836 template <typename Arg1,
6837 typename std::enable_if<
6838 std::is_base_of<Domain, Arg1>{},
6839 bool>::type = true>
6840 multi_val(const multi_val<Arg1> &obj) : isl::multi_val(obj) {}
6841 private:
6842 template <typename base,
6843 typename std::enable_if<
6844 std::is_same<base, isl::multi_val>{}, bool>::type = true>
6845 multi_val(const base &obj) : isl::multi_val(obj) {}
6846 public:
6847 static multi_val from(const isl::multi_val &obj) {
6848 return multi_val(obj);
6850 inline explicit multi_val(const typed::space<Domain> &space, const typed::val_list<Anonymous> &list);
6851 inline explicit multi_val(const isl::ctx &ctx, const std::string &str);
6852 inline typed::multi_val<Domain> add(const typed::multi_val<Domain> &multi2) const;
6853 inline typed::multi_val<Domain> add(const typed::val<Domain> &v) const;
6854 inline typed::multi_val<Domain> add(long v) const;
6855 inline typed::val<Anonymous> at(int pos) const;
6856 inline typed::val<Domain> get_at(int pos) const = delete;
6857 inline typed::val_list<Anonymous> list() const;
6858 inline typed::val_list<Domain> get_list() const = delete;
6859 inline typed::multi_val<Domain> max(const typed::multi_val<Domain> &multi2) const;
6860 inline typed::multi_val<Domain> min(const typed::multi_val<Domain> &multi2) const;
6861 inline typed::multi_val<Domain> neg() const;
6862 template <typename Range>
6863 inline typed::multi_val<pair<Domain, Range>> product(const typed::multi_val<Range> &multi2) const;
6864 inline typed::multi_val<Domain> range_product(const typed::multi_val<> &multi2) const = delete;
6865 inline typed::id<Domain> get_range_tuple_id() const = delete;
6866 inline typed::multi_val<Domain> scale(const typed::multi_val<Domain> &mv) const;
6867 inline typed::multi_val<Domain> scale(const typed::val<Domain> &v) const;
6868 inline typed::multi_val<Domain> scale(long v) const;
6869 inline typed::multi_val<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
6870 inline typed::multi_val<Domain> scale_down(const typed::val<Domain> &v) const;
6871 inline typed::multi_val<Domain> scale_down(long v) const;
6872 inline typed::multi_val<Domain> set_at(int pos, const typed::val<Anonymous> &el) const;
6873 inline typed::multi_val<Domain> set_at(int pos, long el) const;
6874 template <typename Domain2>
6875 inline typed::multi_val<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
6876 template <typename Domain2>
6877 inline typed::multi_val<Domain2> set_range_tuple(const std::string &id) const;
6878 inline typed::space<Domain> space() const;
6879 inline typed::space<Domain> get_space() const = delete;
6880 inline typed::multi_val<Domain> sub(const typed::multi_val<Domain> &multi2) const;
6883 template <>
6884 struct point<> : public isl::point {
6885 template <typename...>
6886 friend struct aff;
6887 template <typename...>
6888 friend struct aff_list;
6889 template <typename...>
6890 friend struct basic_map;
6891 template <typename...>
6892 friend struct basic_set;
6893 template <typename...>
6894 friend struct fixed_box;
6895 template <typename...>
6896 friend struct id;
6897 template <typename...>
6898 friend struct id_list;
6899 template <typename...>
6900 friend struct map;
6901 template <typename...>
6902 friend struct map_list;
6903 template <typename...>
6904 friend struct multi_aff;
6905 template <typename...>
6906 friend struct multi_id;
6907 template <typename...>
6908 friend struct multi_pw_aff;
6909 template <typename...>
6910 friend struct multi_union_pw_aff;
6911 template <typename...>
6912 friend struct multi_val;
6913 template <typename...>
6914 friend struct point;
6915 template <typename...>
6916 friend struct pw_aff;
6917 template <typename...>
6918 friend struct pw_aff_list;
6919 template <typename...>
6920 friend struct pw_multi_aff;
6921 template <typename...>
6922 friend struct pw_multi_aff_list;
6923 template <typename...>
6924 friend struct set;
6925 template <typename...>
6926 friend struct set_list;
6927 template <typename...>
6928 friend struct space;
6929 template <typename...>
6930 friend struct union_map;
6931 template <typename...>
6932 friend struct union_pw_aff;
6933 template <typename...>
6934 friend struct union_pw_aff_list;
6935 template <typename...>
6936 friend struct union_pw_multi_aff;
6937 template <typename...>
6938 friend struct union_set;
6939 template <typename...>
6940 friend struct union_set_list;
6941 template <typename...>
6942 friend struct val;
6943 template <typename...>
6944 friend struct val_list;
6946 point() = default;
6947 private:
6948 template <typename base,
6949 typename std::enable_if<
6950 std::is_same<base, isl::point>{}, bool>::type = true>
6951 point(const base &obj) : isl::point(obj) {}
6952 public:
6953 static point from(const isl::point &obj) {
6954 return point(obj);
6956 inline typed::basic_set<> apply(const typed::basic_map<> &bmap) const = delete;
6957 inline typed::set<> apply(const typed::map<> &map) const = delete;
6958 inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
6959 inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete;
6960 inline typed::set<> as_set() const = delete;
6961 inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete;
6962 inline typed::set<> coalesce() const;
6963 inline typed::basic_set<> detect_equalities() const;
6964 inline typed::set<> drop_unused_params() const;
6965 inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
6966 inline typed::set<> extract_set(const typed::space<> &space) const;
6967 inline void foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const;
6968 inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
6969 inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
6970 inline typed::basic_set<> gist(const typed::basic_set<> &context) const;
6971 inline typed::set<> gist(const typed::set<> &context) const;
6972 inline typed::union_set<> gist(const typed::union_set<> &context) const;
6973 inline typed::set<> gist_params(const typed::set<> &context) const = delete;
6974 inline typed::map<> identity() const = delete;
6975 inline typed::pw_aff<Anonymous> indicator_function() const;
6976 inline typed::map<> insert_domain(const typed::space<> &domain) const = delete;
6977 inline typed::basic_set<> intersect(const typed::basic_set<> &bset2) const;
6978 inline typed::set<> intersect(const typed::set<> &set2) const;
6979 inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
6980 inline typed::basic_set<> intersect_params(const typed::basic_set<> &bset2) const = delete;
6981 inline typed::set<> intersect_params(const typed::set<> &params) const = delete;
6982 inline typed::fixed_box<> lattice_tile() const = delete;
6983 inline typed::set<> lexmax() const = delete;
6984 inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete;
6985 inline typed::set<> lexmin() const = delete;
6986 inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete;
6987 inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete;
6988 inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete;
6989 inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete;
6990 inline typed::val<> max_val(const typed::aff<> &obj) const = delete;
6991 inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete;
6992 inline typed::val<> min_val(const typed::aff<> &obj) const = delete;
6993 inline typed::multi_val<> multi_val() const = delete;
6994 inline typed::multi_val<> get_multi_val() const = delete;
6995 inline typed::pw_aff<Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
6996 inline typed::pw_aff<Anonymous> param_pw_aff_on_domain(const std::string &id) const;
6997 inline typed::basic_set<> params() const = delete;
6998 inline typed::multi_val<> plain_multi_val_if_fixed() const = delete;
6999 inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete;
7000 inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete;
7001 inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
7002 inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
7003 inline typed::set<> product(const typed::set<> &set2) const = delete;
7004 inline typed::set<> project_out_all_params() const;
7005 inline typed::set<> project_out_param(const typed::id<Anonymous> &id) const;
7006 inline typed::set<> project_out_param(const std::string &id) const;
7007 inline typed::set<> project_out_param(const typed::id_list<Anonymous> &list) const;
7008 inline typed::pw_aff<Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
7009 inline typed::pw_aff<Anonymous> pw_aff_on_domain(long v) const;
7010 template <typename Domain>
7011 inline typed::pw_multi_aff<Domain> pw_multi_aff_on_domain(const typed::multi_val<Domain> &mv) const;
7012 inline typed::set_list<> set_list() const;
7013 inline typed::fixed_box<> simple_fixed_box_hull() const = delete;
7014 inline typed::space<> space() const;
7015 inline typed::set<> subtract(const typed::set<> &set2) const;
7016 inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
7017 inline typed::set<> to_set() const;
7018 inline typed::union_set<> to_union_set() const;
7019 inline typed::map<> translation() const = delete;
7020 template <typename Domain>
7021 inline typed::set<Domain> unbind_params(const typed::multi_id<Domain> &tuple) const;
7022 inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
7023 inline typed::set<> unite(const typed::basic_set<> &bset2) const;
7024 inline typed::set<> unite(const typed::set<> &set2) const;
7025 inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
7026 inline typed::map<> unwrap() const = delete;
7027 inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete;
7028 inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete;
7029 inline typed::set<> wrapped_reverse() const = delete;
7032 template <typename Domain>
7033 struct point<Domain> : public isl::point {
7034 template <typename...>
7035 friend struct aff;
7036 template <typename...>
7037 friend struct aff_list;
7038 template <typename...>
7039 friend struct basic_map;
7040 template <typename...>
7041 friend struct basic_set;
7042 template <typename...>
7043 friend struct fixed_box;
7044 template <typename...>
7045 friend struct id;
7046 template <typename...>
7047 friend struct id_list;
7048 template <typename...>
7049 friend struct map;
7050 template <typename...>
7051 friend struct map_list;
7052 template <typename...>
7053 friend struct multi_aff;
7054 template <typename...>
7055 friend struct multi_id;
7056 template <typename...>
7057 friend struct multi_pw_aff;
7058 template <typename...>
7059 friend struct multi_union_pw_aff;
7060 template <typename...>
7061 friend struct multi_val;
7062 template <typename...>
7063 friend struct point;
7064 template <typename...>
7065 friend struct pw_aff;
7066 template <typename...>
7067 friend struct pw_aff_list;
7068 template <typename...>
7069 friend struct pw_multi_aff;
7070 template <typename...>
7071 friend struct pw_multi_aff_list;
7072 template <typename...>
7073 friend struct set;
7074 template <typename...>
7075 friend struct set_list;
7076 template <typename...>
7077 friend struct space;
7078 template <typename...>
7079 friend struct union_map;
7080 template <typename...>
7081 friend struct union_pw_aff;
7082 template <typename...>
7083 friend struct union_pw_aff_list;
7084 template <typename...>
7085 friend struct union_pw_multi_aff;
7086 template <typename...>
7087 friend struct union_set;
7088 template <typename...>
7089 friend struct union_set_list;
7090 template <typename...>
7091 friend struct val;
7092 template <typename...>
7093 friend struct val_list;
7095 point() = default;
7096 template <typename Arg1,
7097 typename std::enable_if<
7098 std::is_base_of<Domain, Arg1>{},
7099 bool>::type = true>
7100 point(const point<Arg1> &obj) : isl::point(obj) {}
7101 private:
7102 template <typename base,
7103 typename std::enable_if<
7104 std::is_same<base, isl::point>{}, bool>::type = true>
7105 point(const base &obj) : isl::point(obj) {}
7106 public:
7107 static point from(const isl::point &obj) {
7108 return point(obj);
7110 template <typename Range>
7111 inline typed::basic_set<Range> apply(const typed::basic_map<Domain, Range> &bmap) const;
7112 template <typename Range>
7113 inline typed::set<Range> apply(const typed::map<Domain, Range> &map) const;
7114 template <typename Range>
7115 inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
7116 inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
7117 inline typed::set<Domain> as_set() const;
7118 inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
7119 inline typed::set<Domain> coalesce() const;
7120 inline typed::basic_set<Domain> detect_equalities() const;
7121 inline typed::set<Domain> drop_unused_params() const;
7122 inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
7123 inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
7124 inline void foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const;
7125 inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
7126 inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
7127 inline typed::basic_set<Domain> gist(const typed::basic_set<Domain> &context) const;
7128 inline typed::set<Domain> gist(const typed::set<Domain> &context) const;
7129 inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
7130 inline typed::set<Domain> gist_params(const typed::set<> &context) const;
7131 inline typed::map<Domain, Domain> identity() const;
7132 inline typed::pw_aff<Domain, Anonymous> indicator_function() const;
7133 template <typename Arg1>
7134 inline typed::map<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
7135 inline typed::basic_set<Domain> intersect(const typed::basic_set<Domain> &bset2) const;
7136 inline typed::set<Domain> intersect(const typed::set<Domain> &set2) const;
7137 inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
7138 inline typed::basic_set<Domain> intersect_params(const typed::basic_set<> &bset2) const;
7139 inline typed::set<Domain> intersect_params(const typed::set<> &params) const;
7140 inline typed::fixed_box<Domain> lattice_tile() const;
7141 inline typed::set<Domain> lexmax() const;
7142 inline typed::pw_multi_aff<Domain> lexmax_pw_multi_aff() const;
7143 inline typed::set<Domain> lexmin() const;
7144 inline typed::pw_multi_aff<Domain> lexmin_pw_multi_aff() const;
7145 inline typed::set<Domain> lower_bound(const typed::multi_pw_aff<Domain> &lower) const;
7146 inline typed::set<Domain> lower_bound(const typed::multi_val<Domain> &lower) const;
7147 inline typed::multi_pw_aff<Domain> max_multi_pw_aff() const;
7148 inline typed::val<Domain> max_val(const typed::aff<> &obj) const = delete;
7149 inline typed::multi_pw_aff<Domain> min_multi_pw_aff() const;
7150 inline typed::val<Domain> min_val(const typed::aff<> &obj) const = delete;
7151 inline typed::multi_val<Domain> multi_val() const;
7152 inline typed::multi_val<Domain> get_multi_val() const = delete;
7153 inline typed::pw_aff<Domain, Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
7154 inline typed::pw_aff<Domain, Anonymous> param_pw_aff_on_domain(const std::string &id) const;
7155 inline typed::basic_set<> params() const;
7156 inline typed::multi_val<Domain> plain_multi_val_if_fixed() const;
7157 template <typename Domain2>
7158 inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
7159 template <typename Domain2>
7160 inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
7161 template <typename Domain2>
7162 inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
7163 template <typename Domain2>
7164 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
7165 template <typename Range>
7166 inline typed::set<pair<Domain, Range>> product(const typed::set<Range> &set2) const;
7167 inline typed::set<Domain> project_out_all_params() const;
7168 inline typed::set<Domain> project_out_param(const typed::id<Anonymous> &id) const;
7169 inline typed::set<Domain> project_out_param(const std::string &id) const;
7170 inline typed::set<Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
7171 inline typed::pw_aff<Domain, Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
7172 inline typed::pw_aff<Domain, Anonymous> pw_aff_on_domain(long v) const;
7173 template <typename Range>
7174 inline typed::pw_multi_aff<Domain, Range> pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
7175 inline typed::set_list<Domain> set_list() const;
7176 inline typed::fixed_box<Domain> simple_fixed_box_hull() const;
7177 inline typed::space<Domain> space() const;
7178 inline typed::set<Domain> subtract(const typed::set<Domain> &set2) const;
7179 inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
7180 inline typed::set<Domain> to_set() const;
7181 inline typed::union_set<Domain> to_union_set() const;
7182 inline typed::map<Domain, Domain> translation() const;
7183 inline typed::set<Domain> unbind_params(const typed::multi_id<> &tuple) const = delete;
7184 template <typename Arg1>
7185 inline typed::map<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
7186 inline typed::set<Domain> unite(const typed::basic_set<Domain> &bset2) const;
7187 inline typed::set<Domain> unite(const typed::set<Domain> &set2) const;
7188 inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
7189 inline typed::map<Domain> unwrap() const = delete;
7190 inline typed::set<Domain> upper_bound(const typed::multi_pw_aff<Domain> &upper) const;
7191 inline typed::set<Domain> upper_bound(const typed::multi_val<Domain> &upper) const;
7192 inline typed::set<Domain> wrapped_reverse() const = delete;
7195 template <typename Domain, typename Range>
7196 struct point<pair<Domain, Range>> : public isl::point {
7197 template <typename...>
7198 friend struct aff;
7199 template <typename...>
7200 friend struct aff_list;
7201 template <typename...>
7202 friend struct basic_map;
7203 template <typename...>
7204 friend struct basic_set;
7205 template <typename...>
7206 friend struct fixed_box;
7207 template <typename...>
7208 friend struct id;
7209 template <typename...>
7210 friend struct id_list;
7211 template <typename...>
7212 friend struct map;
7213 template <typename...>
7214 friend struct map_list;
7215 template <typename...>
7216 friend struct multi_aff;
7217 template <typename...>
7218 friend struct multi_id;
7219 template <typename...>
7220 friend struct multi_pw_aff;
7221 template <typename...>
7222 friend struct multi_union_pw_aff;
7223 template <typename...>
7224 friend struct multi_val;
7225 template <typename...>
7226 friend struct point;
7227 template <typename...>
7228 friend struct pw_aff;
7229 template <typename...>
7230 friend struct pw_aff_list;
7231 template <typename...>
7232 friend struct pw_multi_aff;
7233 template <typename...>
7234 friend struct pw_multi_aff_list;
7235 template <typename...>
7236 friend struct set;
7237 template <typename...>
7238 friend struct set_list;
7239 template <typename...>
7240 friend struct space;
7241 template <typename...>
7242 friend struct union_map;
7243 template <typename...>
7244 friend struct union_pw_aff;
7245 template <typename...>
7246 friend struct union_pw_aff_list;
7247 template <typename...>
7248 friend struct union_pw_multi_aff;
7249 template <typename...>
7250 friend struct union_set;
7251 template <typename...>
7252 friend struct union_set_list;
7253 template <typename...>
7254 friend struct val;
7255 template <typename...>
7256 friend struct val_list;
7258 point() = default;
7259 template <typename Arg1, typename Arg2,
7260 typename std::enable_if<
7261 std::is_base_of<Domain, Arg1>{} &&
7262 std::is_base_of<Range, Arg2>{},
7263 bool>::type = true>
7264 point(const point<pair<Arg1, Arg2>> &obj) : isl::point(obj) {}
7265 private:
7266 template <typename base,
7267 typename std::enable_if<
7268 std::is_same<base, isl::point>{}, bool>::type = true>
7269 point(const base &obj) : isl::point(obj) {}
7270 public:
7271 static point from(const isl::point &obj) {
7272 return point(obj);
7274 template <typename Arg2>
7275 inline typed::basic_set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const;
7276 template <typename Arg2>
7277 inline typed::set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &map) const;
7278 template <typename Arg2>
7279 inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
7280 inline typed::pw_multi_aff<pair<Domain, Range>> as_pw_multi_aff() const;
7281 inline typed::set<pair<Domain, Range>> as_set() const;
7282 inline typed::set<> bind(const typed::multi_id<pair<Domain, Range>> &tuple) const;
7283 inline typed::set<pair<Domain, Range>> coalesce() const;
7284 inline typed::basic_set<pair<Domain, Range>> detect_equalities() const;
7285 inline typed::set<pair<Domain, Range>> drop_unused_params() const;
7286 inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
7287 inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
7288 inline void foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const;
7289 inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
7290 inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
7291 inline typed::basic_set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
7292 inline typed::set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
7293 inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
7294 inline typed::set<pair<Domain, Range>> gist_params(const typed::set<> &context) const;
7295 inline typed::map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
7296 inline typed::pw_aff<pair<Domain, Range>, Anonymous> indicator_function() const;
7297 template <typename Arg2>
7298 inline typed::map<Arg2, pair<Domain, Range>> insert_domain(const typed::space<Arg2> &domain) const;
7299 inline typed::basic_set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const;
7300 inline typed::set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &set2) const;
7301 inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
7302 inline typed::basic_set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &bset2) const;
7303 inline typed::set<pair<Domain, Range>> intersect_params(const typed::set<> &params) const;
7304 inline typed::fixed_box<pair<Domain, Range>> lattice_tile() const;
7305 inline typed::set<pair<Domain, Range>> lexmax() const;
7306 inline typed::pw_multi_aff<pair<Domain, Range>> lexmax_pw_multi_aff() const;
7307 inline typed::set<pair<Domain, Range>> lexmin() const;
7308 inline typed::pw_multi_aff<pair<Domain, Range>> lexmin_pw_multi_aff() const;
7309 inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const;
7310 inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const;
7311 inline typed::multi_pw_aff<pair<Domain, Range>> max_multi_pw_aff() const;
7312 inline typed::val<pair<Domain, Range>> max_val(const typed::aff<> &obj) const = delete;
7313 inline typed::multi_pw_aff<pair<Domain, Range>> min_multi_pw_aff() const;
7314 inline typed::val<pair<Domain, Range>> min_val(const typed::aff<> &obj) const = delete;
7315 inline typed::multi_val<pair<Domain, Range>> multi_val() const;
7316 inline typed::multi_val<pair<Domain, Range>> get_multi_val() const = delete;
7317 inline typed::pw_aff<pair<Domain, Range>, Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
7318 inline typed::pw_aff<pair<Domain, Range>, Anonymous> param_pw_aff_on_domain(const std::string &id) const;
7319 inline typed::basic_set<> params() const;
7320 inline typed::multi_val<pair<Domain, Range>> plain_multi_val_if_fixed() const;
7321 template <typename Domain2>
7322 inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
7323 template <typename Domain2>
7324 inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
7325 template <typename Domain2>
7326 inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
7327 template <typename Domain2>
7328 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
7329 template <typename Arg2>
7330 inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::set<Arg2> &set2) const;
7331 inline typed::set<pair<Domain, Range>> project_out_all_params() const;
7332 inline typed::set<pair<Domain, Range>> project_out_param(const typed::id<Anonymous> &id) const;
7333 inline typed::set<pair<Domain, Range>> project_out_param(const std::string &id) const;
7334 inline typed::set<pair<Domain, Range>> project_out_param(const typed::id_list<Anonymous> &list) const;
7335 inline typed::pw_aff<pair<Domain, Range>, Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
7336 inline typed::pw_aff<pair<Domain, Range>, Anonymous> pw_aff_on_domain(long v) const;
7337 template <typename Arg2>
7338 inline typed::pw_multi_aff<pair<Domain, Range>, Arg2> pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
7339 inline typed::set_list<pair<Domain, Range>> set_list() const;
7340 inline typed::fixed_box<pair<Domain, Range>> simple_fixed_box_hull() const;
7341 inline typed::space<pair<Domain, Range>> space() const;
7342 inline typed::set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &set2) const;
7343 inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
7344 inline typed::set<pair<Domain, Range>> to_set() const;
7345 inline typed::union_set<pair<Domain, Range>> to_union_set() const;
7346 inline typed::map<pair<Domain, Range>, pair<Domain, Range>> translation() const;
7347 inline typed::set<pair<Domain, Range>> unbind_params(const typed::multi_id<> &tuple) const = delete;
7348 template <typename Arg2>
7349 inline typed::map<Arg2, pair<Domain, Range>> unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const;
7350 inline typed::set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &bset2) const;
7351 inline typed::set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &set2) const;
7352 inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
7353 inline typed::map<Domain, Range> unwrap() const;
7354 inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const;
7355 inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const;
7356 inline typed::set<pair<Range, Domain>> wrapped_reverse() const;
7359 template <>
7360 struct pw_aff<Anonymous> : public isl::pw_aff {
7361 template <typename...>
7362 friend struct aff;
7363 template <typename...>
7364 friend struct aff_list;
7365 template <typename...>
7366 friend struct basic_map;
7367 template <typename...>
7368 friend struct basic_set;
7369 template <typename...>
7370 friend struct fixed_box;
7371 template <typename...>
7372 friend struct id;
7373 template <typename...>
7374 friend struct id_list;
7375 template <typename...>
7376 friend struct map;
7377 template <typename...>
7378 friend struct map_list;
7379 template <typename...>
7380 friend struct multi_aff;
7381 template <typename...>
7382 friend struct multi_id;
7383 template <typename...>
7384 friend struct multi_pw_aff;
7385 template <typename...>
7386 friend struct multi_union_pw_aff;
7387 template <typename...>
7388 friend struct multi_val;
7389 template <typename...>
7390 friend struct point;
7391 template <typename...>
7392 friend struct pw_aff;
7393 template <typename...>
7394 friend struct pw_aff_list;
7395 template <typename...>
7396 friend struct pw_multi_aff;
7397 template <typename...>
7398 friend struct pw_multi_aff_list;
7399 template <typename...>
7400 friend struct set;
7401 template <typename...>
7402 friend struct set_list;
7403 template <typename...>
7404 friend struct space;
7405 template <typename...>
7406 friend struct union_map;
7407 template <typename...>
7408 friend struct union_pw_aff;
7409 template <typename...>
7410 friend struct union_pw_aff_list;
7411 template <typename...>
7412 friend struct union_pw_multi_aff;
7413 template <typename...>
7414 friend struct union_set;
7415 template <typename...>
7416 friend struct union_set_list;
7417 template <typename...>
7418 friend struct val;
7419 template <typename...>
7420 friend struct val_list;
7422 pw_aff() = default;
7423 pw_aff(const isl::pw_aff &obj) : isl::pw_aff(obj) {}
7424 static pw_aff from(const isl::pw_aff &obj) {
7425 return pw_aff(obj);
7427 inline /* implicit */ pw_aff(const typed::aff<Anonymous> &aff);
7428 inline explicit pw_aff(const isl::ctx &ctx, const std::string &str);
7429 inline typed::multi_pw_aff<Anonymous> add(const typed::multi_pw_aff<Anonymous> &multi2) const;
7430 inline typed::multi_union_pw_aff<Anonymous> add(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
7431 inline typed::pw_aff<Anonymous> add(const typed::pw_aff<Anonymous> &pwaff2) const;
7432 inline typed::pw_multi_aff<Anonymous> add(const typed::pw_multi_aff<Anonymous> &pma2) const;
7433 inline typed::union_pw_aff<Anonymous> add(const typed::union_pw_aff<Anonymous> &upa2) const;
7434 inline typed::union_pw_multi_aff<Anonymous> add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
7435 inline typed::pw_aff<Anonymous> add(const typed::aff<Anonymous> &pwaff2) const;
7436 inline typed::pw_aff<Anonymous> add_constant(const typed::val<Anonymous> &v) const;
7437 inline typed::pw_aff<Anonymous> add_constant(long v) const;
7438 inline typed::pw_multi_aff<Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
7439 template <typename Range>
7440 inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const;
7441 inline typed::aff<Anonymous> as_aff() const;
7442 inline typed::map<Anonymous> as_map() const = delete;
7443 inline typed::multi_aff<Anonymous> as_multi_aff() const;
7444 inline typed::multi_union_pw_aff<Anonymous> as_multi_union_pw_aff() const;
7445 inline typed::pw_multi_aff<Anonymous> as_pw_multi_aff() const;
7446 inline typed::set<Anonymous> as_set() const;
7447 inline typed::union_map<Anonymous> as_union_map() const = delete;
7448 inline typed::pw_aff<Anonymous> at(int pos) const;
7449 inline typed::set<> bind(const typed::multi_id<Anonymous> &tuple) const;
7450 inline typed::set<> bind(const typed::id<Anonymous> &id) const;
7451 inline typed::set<> bind(const std::string &id) const;
7452 inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<> &tuple) const = delete;
7453 inline typed::pw_aff<Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
7454 inline typed::pw_aff<Anonymous> ceil() const;
7455 inline typed::pw_aff<Anonymous> coalesce() const;
7456 inline typed::pw_aff<Anonymous> cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const;
7457 inline typed::set<> domain() const;
7458 inline typed::pw_aff<Anonymous> domain_reverse() const = delete;
7459 inline typed::pw_aff<Anonymous> drop_unused_params() const;
7460 inline typed::pw_multi_aff<Anonymous> extract_pw_multi_aff(const typed::space<Anonymous> &space) const;
7461 inline typed::pw_aff<Anonymous> floor() const;
7462 inline typed::set<Anonymous> ge_set(const typed::pw_aff<> &pwaff2) const = delete;
7463 inline typed::set<Anonymous> ge_set(const typed::aff<> &pwaff2) const = delete;
7464 inline typed::pw_aff<Anonymous> gist(const typed::set<> &context) const;
7465 inline typed::union_pw_aff<Anonymous> gist(const typed::union_set<> &context) const;
7466 inline typed::pw_aff<Anonymous> gist(const typed::basic_set<> &context) const;
7467 inline typed::pw_aff<Anonymous> gist(const typed::point<> &context) const;
7468 inline typed::pw_aff<Anonymous> gist_params(const typed::set<> &context) const;
7469 inline typed::pw_aff<Anonymous> gist_params(const typed::basic_set<> &context) const;
7470 inline typed::pw_aff<Anonymous> gist_params(const typed::point<> &context) const;
7471 inline typed::set<Anonymous> gt_set(const typed::pw_aff<> &pwaff2) const = delete;
7472 inline typed::set<Anonymous> gt_set(const typed::aff<> &pwaff2) const = delete;
7473 inline typed::multi_pw_aff<Anonymous, Anonymous> identity() const;
7474 template <typename Domain>
7475 inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<Domain> &domain) const;
7476 inline typed::pw_aff<Anonymous> intersect_domain(const typed::set<> &set) const = delete;
7477 inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::space<> &space) const = delete;
7478 inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::union_set<> &uset) const = delete;
7479 inline typed::pw_aff<Anonymous> intersect_domain(const typed::basic_set<> &set) const = delete;
7480 inline typed::pw_aff<Anonymous> intersect_domain(const typed::point<> &set) const = delete;
7481 inline typed::union_pw_aff<Anonymous> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
7482 inline typed::pw_aff<Anonymous> intersect_params(const typed::set<> &set) const;
7483 inline typed::pw_aff<Anonymous> intersect_params(const typed::basic_set<> &set) const;
7484 inline typed::pw_aff<Anonymous> intersect_params(const typed::point<> &set) const;
7485 inline typed::set<Anonymous> le_set(const typed::pw_aff<> &pwaff2) const = delete;
7486 inline typed::set<Anonymous> le_set(const typed::aff<> &pwaff2) const = delete;
7487 inline typed::pw_aff_list<Anonymous> list() const;
7488 inline typed::set<Anonymous> lt_set(const typed::pw_aff<> &pwaff2) const = delete;
7489 inline typed::set<Anonymous> lt_set(const typed::aff<> &pwaff2) const = delete;
7490 inline typed::multi_pw_aff<Anonymous> max(const typed::multi_pw_aff<Anonymous> &multi2) const;
7491 inline typed::pw_aff<Anonymous> max(const typed::pw_aff<Anonymous> &pwaff2) const;
7492 inline typed::pw_aff<Anonymous> max(const typed::aff<Anonymous> &pwaff2) const;
7493 inline typed::multi_val<Anonymous> max_multi_val() const;
7494 inline typed::val<Anonymous> max_val() const;
7495 inline typed::multi_pw_aff<Anonymous> min(const typed::multi_pw_aff<Anonymous> &multi2) const;
7496 inline typed::pw_aff<Anonymous> min(const typed::pw_aff<Anonymous> &pwaff2) const;
7497 inline typed::pw_aff<Anonymous> min(const typed::aff<Anonymous> &pwaff2) const;
7498 inline typed::multi_val<Anonymous> min_multi_val() const;
7499 inline typed::val<Anonymous> min_val() const;
7500 inline typed::pw_aff<Anonymous> mod(const typed::val<Anonymous> &mod) const;
7501 inline typed::pw_aff<Anonymous> mod(long mod) const;
7502 inline typed::pw_aff<Anonymous> neg() const;
7503 inline typed::set<> params() const;
7504 inline typed::pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
7505 inline typed::union_pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
7506 template <typename Range>
7507 inline typed::multi_pw_aff<pair<Anonymous, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
7508 template <typename Range>
7509 inline typed::pw_multi_aff<pair<Anonymous, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
7510 inline typed::pw_aff<Anonymous> pullback(const typed::multi_aff<> &ma) const = delete;
7511 inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<> &mpa) const = delete;
7512 inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<> &pma) const = delete;
7513 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
7514 inline typed::pw_multi_aff_list<Anonymous> pw_multi_aff_list() const;
7515 inline typed::pw_multi_aff<Anonymous> range_factor_domain() const = delete;
7516 inline typed::pw_multi_aff<Anonymous> range_factor_range() const = delete;
7517 inline typed::multi_pw_aff<Anonymous> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
7518 inline typed::multi_union_pw_aff<Anonymous> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
7519 inline typed::pw_multi_aff<Anonymous> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
7520 inline typed::union_pw_multi_aff<Anonymous> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
7521 inline typed::pw_aff<Anonymous> scale(const typed::val<Anonymous> &v) const;
7522 inline typed::pw_aff<Anonymous> scale(long v) const;
7523 inline typed::pw_multi_aff<Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
7524 inline typed::pw_aff<Anonymous> scale_down(const typed::val<Anonymous> &f) const;
7525 inline typed::pw_aff<Anonymous> scale_down(long f) const;
7526 inline typed::pw_multi_aff<Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
7527 inline typed::multi_pw_aff<Anonymous> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
7528 inline typed::multi_union_pw_aff<Anonymous> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
7529 template <typename Domain2>
7530 inline typed::pw_multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
7531 template <typename Domain2>
7532 inline typed::pw_multi_aff<Domain2> set_range_tuple(const std::string &id) const;
7533 inline typed::space<Anonymous> space() const;
7534 inline typed::space<Anonymous> get_space() const = delete;
7535 inline typed::multi_pw_aff<Anonymous> sub(const typed::multi_pw_aff<Anonymous> &multi2) const;
7536 inline typed::multi_union_pw_aff<Anonymous> sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
7537 inline typed::pw_aff<Anonymous> sub(const typed::pw_aff<Anonymous> &pwaff2) const;
7538 inline typed::pw_multi_aff<Anonymous> sub(const typed::pw_multi_aff<Anonymous> &pma2) const;
7539 inline typed::union_pw_aff<Anonymous> sub(const typed::union_pw_aff<Anonymous> &upa2) const;
7540 inline typed::union_pw_multi_aff<Anonymous> sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
7541 inline typed::pw_aff<Anonymous> sub(const typed::aff<Anonymous> &pwaff2) const;
7542 inline typed::pw_aff<Anonymous> subtract_domain(const typed::set<> &set) const = delete;
7543 inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::space<> &space) const = delete;
7544 inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::union_set<> &uset) const = delete;
7545 inline typed::pw_aff<Anonymous> subtract_domain(const typed::basic_set<> &set) const = delete;
7546 inline typed::pw_aff<Anonymous> subtract_domain(const typed::point<> &set) const = delete;
7547 inline typed::multi_pw_aff<Anonymous> to_multi_pw_aff() const;
7548 inline typed::union_pw_aff<Anonymous> to_union_pw_aff() const;
7549 inline typed::union_pw_multi_aff<Anonymous> to_union_pw_multi_aff() const;
7550 template <typename Domain>
7551 inline typed::multi_pw_aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const;
7552 inline typed::multi_pw_aff<Anonymous> union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const;
7553 inline typed::multi_union_pw_aff<Anonymous> union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const;
7554 inline typed::pw_aff<Anonymous> union_add(const typed::pw_aff<Anonymous> &pwaff2) const;
7555 inline typed::pw_multi_aff<Anonymous> union_add(const typed::pw_multi_aff<Anonymous> &pma2) const;
7556 inline typed::union_pw_aff<Anonymous> union_add(const typed::union_pw_aff<Anonymous> &upa2) const;
7557 inline typed::union_pw_multi_aff<Anonymous> union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
7558 inline typed::pw_aff<Anonymous> union_add(const typed::aff<Anonymous> &pwaff2) const;
7561 template <typename Domain>
7562 struct pw_aff<Domain, Anonymous> : public isl::pw_aff {
7563 template <typename...>
7564 friend struct aff;
7565 template <typename...>
7566 friend struct aff_list;
7567 template <typename...>
7568 friend struct basic_map;
7569 template <typename...>
7570 friend struct basic_set;
7571 template <typename...>
7572 friend struct fixed_box;
7573 template <typename...>
7574 friend struct id;
7575 template <typename...>
7576 friend struct id_list;
7577 template <typename...>
7578 friend struct map;
7579 template <typename...>
7580 friend struct map_list;
7581 template <typename...>
7582 friend struct multi_aff;
7583 template <typename...>
7584 friend struct multi_id;
7585 template <typename...>
7586 friend struct multi_pw_aff;
7587 template <typename...>
7588 friend struct multi_union_pw_aff;
7589 template <typename...>
7590 friend struct multi_val;
7591 template <typename...>
7592 friend struct point;
7593 template <typename...>
7594 friend struct pw_aff;
7595 template <typename...>
7596 friend struct pw_aff_list;
7597 template <typename...>
7598 friend struct pw_multi_aff;
7599 template <typename...>
7600 friend struct pw_multi_aff_list;
7601 template <typename...>
7602 friend struct set;
7603 template <typename...>
7604 friend struct set_list;
7605 template <typename...>
7606 friend struct space;
7607 template <typename...>
7608 friend struct union_map;
7609 template <typename...>
7610 friend struct union_pw_aff;
7611 template <typename...>
7612 friend struct union_pw_aff_list;
7613 template <typename...>
7614 friend struct union_pw_multi_aff;
7615 template <typename...>
7616 friend struct union_set;
7617 template <typename...>
7618 friend struct union_set_list;
7619 template <typename...>
7620 friend struct val;
7621 template <typename...>
7622 friend struct val_list;
7624 pw_aff() = default;
7625 template <typename Arg1,
7626 typename std::enable_if<
7627 std::is_base_of<Domain, Arg1>{},
7628 bool>::type = true>
7629 pw_aff(const pw_aff<Arg1, Anonymous> &obj) : isl::pw_aff(obj) {}
7630 private:
7631 template <typename base,
7632 typename std::enable_if<
7633 std::is_same<base, isl::pw_aff>{}, bool>::type = true>
7634 pw_aff(const base &obj) : isl::pw_aff(obj) {}
7635 public:
7636 static pw_aff from(const isl::pw_aff &obj) {
7637 return pw_aff(obj);
7639 inline /* implicit */ pw_aff(const typed::aff<Domain, Anonymous> &aff);
7640 inline explicit pw_aff(const isl::ctx &ctx, const std::string &str);
7641 inline typed::multi_pw_aff<Domain, Anonymous> add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
7642 inline typed::multi_union_pw_aff<Domain, Anonymous> add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
7643 inline typed::pw_aff<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7644 inline typed::pw_multi_aff<Domain, Anonymous> add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
7645 inline typed::union_pw_aff<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
7646 inline typed::union_pw_multi_aff<Domain, Anonymous> add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
7647 inline typed::pw_aff<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &pwaff2) const;
7648 inline typed::pw_aff<Domain, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
7649 inline typed::pw_aff<Domain, Anonymous> add_constant(long v) const;
7650 inline typed::pw_multi_aff<Domain, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
7651 template <typename Range2>
7652 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
7653 inline typed::aff<Domain, Anonymous> as_aff() const;
7654 inline typed::map<Domain, Anonymous> as_map() const;
7655 inline typed::multi_aff<Domain, Anonymous> as_multi_aff() const;
7656 inline typed::multi_union_pw_aff<Domain, Anonymous> as_multi_union_pw_aff() const;
7657 inline typed::pw_multi_aff<Domain, Anonymous> as_pw_multi_aff() const;
7658 inline typed::set<Domain, Anonymous> as_set() const = delete;
7659 inline typed::union_map<Domain, Anonymous> as_union_map() const;
7660 inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
7661 inline typed::set<Domain> bind(const typed::multi_id<Anonymous> &tuple) const;
7662 inline typed::set<Domain> bind(const typed::id<Anonymous> &id) const;
7663 inline typed::set<Domain> bind(const std::string &id) const;
7664 inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<Domain> &tuple) const;
7665 inline typed::pw_aff<Domain, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
7666 inline typed::pw_aff<Domain, Anonymous> ceil() const;
7667 inline typed::pw_aff<Domain, Anonymous> coalesce() const;
7668 inline typed::pw_aff<Domain, Anonymous> cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const;
7669 inline typed::set<Domain> domain() const;
7670 inline typed::pw_aff<Domain, Anonymous> domain_reverse() const = delete;
7671 inline typed::pw_aff<Domain, Anonymous> drop_unused_params() const;
7672 inline typed::pw_multi_aff<Domain, Anonymous> extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const;
7673 inline typed::pw_aff<Domain, Anonymous> floor() const;
7674 inline typed::set<Domain> ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7675 inline typed::set<Domain> ge_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
7676 inline typed::pw_aff<Domain, Anonymous> gist(const typed::set<Domain> &context) const;
7677 inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::union_set<Domain> &context) const;
7678 inline typed::pw_aff<Domain, Anonymous> gist(const typed::basic_set<Domain> &context) const;
7679 inline typed::pw_aff<Domain, Anonymous> gist(const typed::point<Domain> &context) const;
7680 inline typed::pw_aff<Domain, Anonymous> gist_params(const typed::set<> &context) const;
7681 inline typed::pw_aff<Domain, Anonymous> gist_params(const typed::basic_set<> &context) const;
7682 inline typed::pw_aff<Domain, Anonymous> gist_params(const typed::point<> &context) const;
7683 inline typed::set<Domain> gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7684 inline typed::set<Domain> gt_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
7685 inline typed::multi_pw_aff<Domain, Anonymous> identity() const;
7686 inline typed::pw_aff<Domain, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
7687 inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::set<Domain> &set) const;
7688 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::space<Domain> &space) const;
7689 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::union_set<Domain> &uset) const;
7690 inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::basic_set<Domain> &set) const;
7691 inline typed::pw_aff<Domain, Anonymous> intersect_domain(const typed::point<Domain> &set) const;
7692 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
7693 inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::set<> &set) const;
7694 inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::basic_set<> &set) const;
7695 inline typed::pw_aff<Domain, Anonymous> intersect_params(const typed::point<> &set) const;
7696 inline typed::set<Domain> le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7697 inline typed::set<Domain> le_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
7698 inline typed::pw_aff_list<Domain, Anonymous> list() const;
7699 inline typed::set<Domain> lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7700 inline typed::set<Domain> lt_set(const typed::aff<Domain, Anonymous> &pwaff2) const;
7701 inline typed::multi_pw_aff<Domain, Anonymous> max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
7702 inline typed::pw_aff<Domain, Anonymous> max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7703 inline typed::pw_aff<Domain, Anonymous> max(const typed::aff<Domain, Anonymous> &pwaff2) const;
7704 inline typed::multi_val<Anonymous> max_multi_val() const;
7705 inline typed::val<Anonymous> max_val() const;
7706 inline typed::multi_pw_aff<Domain, Anonymous> min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
7707 inline typed::pw_aff<Domain, Anonymous> min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7708 inline typed::pw_aff<Domain, Anonymous> min(const typed::aff<Domain, Anonymous> &pwaff2) const;
7709 inline typed::multi_val<Anonymous> min_multi_val() const;
7710 inline typed::val<Anonymous> min_val() const;
7711 inline typed::pw_aff<Domain, Anonymous> mod(const typed::val<Anonymous> &mod) const;
7712 inline typed::pw_aff<Domain, Anonymous> mod(long mod) const;
7713 inline typed::pw_aff<Domain, Anonymous> neg() const;
7714 inline typed::set<> params() const;
7715 inline typed::pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
7716 inline typed::union_pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
7717 template <typename Domain2, typename Range2>
7718 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
7719 template <typename Domain2, typename Range2>
7720 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
7721 template <typename Domain2>
7722 inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
7723 inline typed::pw_aff<Anonymous> pullback(const typed::multi_aff<Domain> &ma) const;
7724 template <typename Domain2>
7725 inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
7726 inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<Domain> &mpa) const;
7727 template <typename Domain2>
7728 inline typed::pw_aff<Domain2, Anonymous> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
7729 inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<Domain> &pma) const;
7730 template <typename Domain2>
7731 inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
7732 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
7733 inline typed::pw_multi_aff_list<Domain, Anonymous> pw_multi_aff_list() const;
7734 inline typed::pw_multi_aff<Domain, Anonymous> range_factor_domain() const = delete;
7735 inline typed::pw_multi_aff<Domain, Anonymous> range_factor_range() const = delete;
7736 template <typename Range2>
7737 inline typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
7738 template <typename Range2>
7739 inline typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
7740 template <typename Range2>
7741 inline typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
7742 template <typename Range2>
7743 inline typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
7744 inline typed::pw_aff<Domain, Anonymous> scale(const typed::val<Anonymous> &v) const;
7745 inline typed::pw_aff<Domain, Anonymous> scale(long v) const;
7746 inline typed::pw_multi_aff<Domain, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
7747 inline typed::pw_aff<Domain, Anonymous> scale_down(const typed::val<Anonymous> &f) const;
7748 inline typed::pw_aff<Domain, Anonymous> scale_down(long f) const;
7749 inline typed::pw_multi_aff<Domain, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
7750 inline typed::multi_pw_aff<Domain, Anonymous> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
7751 inline typed::multi_union_pw_aff<Domain, Anonymous> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
7752 template <typename Range2>
7753 inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
7754 template <typename Range2>
7755 inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
7756 inline typed::space<Domain, Anonymous> space() const;
7757 inline typed::space<Domain, Anonymous> get_space() const = delete;
7758 inline typed::multi_pw_aff<Domain, Anonymous> sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const;
7759 inline typed::multi_union_pw_aff<Domain, Anonymous> sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
7760 inline typed::pw_aff<Domain, Anonymous> sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7761 inline typed::pw_multi_aff<Domain, Anonymous> sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
7762 inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
7763 inline typed::union_pw_multi_aff<Domain, Anonymous> sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
7764 inline typed::pw_aff<Domain, Anonymous> sub(const typed::aff<Domain, Anonymous> &pwaff2) const;
7765 inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::set<Domain> &set) const;
7766 inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::space<Domain> &space) const;
7767 inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::union_set<Domain> &uset) const;
7768 inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::basic_set<Domain> &set) const;
7769 inline typed::pw_aff<Domain, Anonymous> subtract_domain(const typed::point<Domain> &set) const;
7770 inline typed::multi_pw_aff<Domain, Anonymous> to_multi_pw_aff() const;
7771 inline typed::union_pw_aff<Domain, Anonymous> to_union_pw_aff() const;
7772 inline typed::union_pw_multi_aff<Domain, Anonymous> to_union_pw_multi_aff() const;
7773 inline typed::multi_pw_aff<Domain, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
7774 inline typed::multi_pw_aff<Domain, Anonymous> union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const;
7775 inline typed::multi_union_pw_aff<Domain, Anonymous> union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const;
7776 inline typed::pw_aff<Domain, Anonymous> union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const;
7777 inline typed::pw_multi_aff<Domain, Anonymous> union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const;
7778 inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
7779 inline typed::union_pw_multi_aff<Domain, Anonymous> union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
7780 inline typed::pw_aff<Domain, Anonymous> union_add(const typed::aff<Domain, Anonymous> &pwaff2) const;
7783 template <typename Domain2, typename Range2>
7784 struct pw_aff<pair<Domain2, Range2>, Anonymous> : public isl::pw_aff {
7785 template <typename...>
7786 friend struct aff;
7787 template <typename...>
7788 friend struct aff_list;
7789 template <typename...>
7790 friend struct basic_map;
7791 template <typename...>
7792 friend struct basic_set;
7793 template <typename...>
7794 friend struct fixed_box;
7795 template <typename...>
7796 friend struct id;
7797 template <typename...>
7798 friend struct id_list;
7799 template <typename...>
7800 friend struct map;
7801 template <typename...>
7802 friend struct map_list;
7803 template <typename...>
7804 friend struct multi_aff;
7805 template <typename...>
7806 friend struct multi_id;
7807 template <typename...>
7808 friend struct multi_pw_aff;
7809 template <typename...>
7810 friend struct multi_union_pw_aff;
7811 template <typename...>
7812 friend struct multi_val;
7813 template <typename...>
7814 friend struct point;
7815 template <typename...>
7816 friend struct pw_aff;
7817 template <typename...>
7818 friend struct pw_aff_list;
7819 template <typename...>
7820 friend struct pw_multi_aff;
7821 template <typename...>
7822 friend struct pw_multi_aff_list;
7823 template <typename...>
7824 friend struct set;
7825 template <typename...>
7826 friend struct set_list;
7827 template <typename...>
7828 friend struct space;
7829 template <typename...>
7830 friend struct union_map;
7831 template <typename...>
7832 friend struct union_pw_aff;
7833 template <typename...>
7834 friend struct union_pw_aff_list;
7835 template <typename...>
7836 friend struct union_pw_multi_aff;
7837 template <typename...>
7838 friend struct union_set;
7839 template <typename...>
7840 friend struct union_set_list;
7841 template <typename...>
7842 friend struct val;
7843 template <typename...>
7844 friend struct val_list;
7846 pw_aff() = default;
7847 template <typename Arg1, typename Arg2,
7848 typename std::enable_if<
7849 std::is_base_of<Domain2, Arg1>{} &&
7850 std::is_base_of<Range2, Arg2>{},
7851 bool>::type = true>
7852 pw_aff(const pw_aff<pair<Arg1, Arg2>, Anonymous> &obj) : isl::pw_aff(obj) {}
7853 private:
7854 template <typename base,
7855 typename std::enable_if<
7856 std::is_same<base, isl::pw_aff>{}, bool>::type = true>
7857 pw_aff(const base &obj) : isl::pw_aff(obj) {}
7858 public:
7859 static pw_aff from(const isl::pw_aff &obj) {
7860 return pw_aff(obj);
7862 inline /* implicit */ pw_aff(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff);
7863 inline explicit pw_aff(const isl::ctx &ctx, const std::string &str);
7864 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
7865 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
7866 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7867 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
7868 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
7869 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
7870 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7871 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::val<Anonymous> &v) const;
7872 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> add_constant(long v) const;
7873 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> add_constant(const typed::multi_val<Anonymous> &mv) const;
7874 template <typename Arg1>
7875 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const;
7876 inline typed::aff<pair<Domain2, Range2>, Anonymous> as_aff() const;
7877 inline typed::map<pair<Domain2, Range2>, Anonymous> as_map() const;
7878 inline typed::multi_aff<pair<Domain2, Range2>, Anonymous> as_multi_aff() const;
7879 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> as_multi_union_pw_aff() const;
7880 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> as_pw_multi_aff() const;
7881 inline typed::set<pair<Domain2, Range2>, Anonymous> as_set() const = delete;
7882 inline typed::union_map<pair<Domain2, Range2>, Anonymous> as_union_map() const;
7883 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
7884 inline typed::set<pair<Domain2, Range2>> bind(const typed::multi_id<Anonymous> &tuple) const;
7885 inline typed::set<pair<Domain2, Range2>> bind(const typed::id<Anonymous> &id) const;
7886 inline typed::set<pair<Domain2, Range2>> bind(const std::string &id) const;
7887 inline typed::pw_aff<Anonymous> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
7888 inline typed::pw_aff<Range2, Anonymous> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
7889 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> ceil() const;
7890 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> coalesce() const;
7891 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const;
7892 inline typed::set<pair<Domain2, Range2>> domain() const;
7893 inline typed::pw_aff<pair<Range2, Domain2>, Anonymous> domain_reverse() const;
7894 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> drop_unused_params() const;
7895 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const;
7896 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> floor() const;
7897 inline typed::set<pair<Domain2, Range2>> ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7898 inline typed::set<pair<Domain2, Range2>> ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7899 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::set<pair<Domain2, Range2>> &context) const;
7900 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
7901 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::basic_set<pair<Domain2, Range2>> &context) const;
7902 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist(const typed::point<pair<Domain2, Range2>> &context) const;
7903 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist_params(const typed::set<> &context) const;
7904 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist_params(const typed::basic_set<> &context) const;
7905 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> gist_params(const typed::point<> &context) const;
7906 inline typed::set<pair<Domain2, Range2>> gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7907 inline typed::set<pair<Domain2, Range2>> gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7908 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> identity() const;
7909 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> insert_domain(const typed::space<> &domain) const = delete;
7910 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
7911 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
7912 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
7913 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
7914 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const;
7915 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const;
7916 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::set<> &set) const;
7917 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::basic_set<> &set) const;
7918 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> intersect_params(const typed::point<> &set) const;
7919 inline typed::set<pair<Domain2, Range2>> le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7920 inline typed::set<pair<Domain2, Range2>> le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7921 inline typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> list() const;
7922 inline typed::set<pair<Domain2, Range2>> lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7923 inline typed::set<pair<Domain2, Range2>> lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7924 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
7925 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7926 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> max(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7927 inline typed::multi_val<Anonymous> max_multi_val() const;
7928 inline typed::val<Anonymous> max_val() const;
7929 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
7930 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7931 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> min(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7932 inline typed::multi_val<Anonymous> min_multi_val() const;
7933 inline typed::val<Anonymous> min_val() const;
7934 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> mod(const typed::val<Anonymous> &mod) const;
7935 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> mod(long mod) const;
7936 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> neg() const;
7937 inline typed::set<> params() const;
7938 template <typename Domain3>
7939 inline typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
7940 template <typename Domain3>
7941 inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
7942 template <typename Arg1, typename Arg2>
7943 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const;
7944 template <typename Arg1, typename Arg2>
7945 inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const;
7946 template <typename Arg1>
7947 inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const;
7948 inline typed::pw_aff<Anonymous> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
7949 template <typename Arg1>
7950 inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const;
7951 inline typed::pw_aff<Anonymous> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const;
7952 template <typename Arg1>
7953 inline typed::pw_aff<Arg1, Anonymous> pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const;
7954 inline typed::pw_aff<Anonymous> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const;
7955 template <typename Arg1>
7956 inline typed::union_pw_aff<Arg1, Anonymous> pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const;
7957 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const;
7958 inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> pw_multi_aff_list() const;
7959 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_domain() const = delete;
7960 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> range_factor_range() const = delete;
7961 template <typename Arg1>
7962 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
7963 template <typename Arg1>
7964 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const;
7965 template <typename Arg1>
7966 inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const;
7967 template <typename Arg1>
7968 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const;
7969 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale(const typed::val<Anonymous> &v) const;
7970 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale(long v) const;
7971 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
7972 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::val<Anonymous> &f) const;
7973 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> scale_down(long f) const;
7974 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
7975 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
7976 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
7977 template <typename Arg1>
7978 inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
7979 template <typename Arg1>
7980 inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
7981 inline typed::space<pair<Domain2, Range2>, Anonymous> space() const;
7982 inline typed::space<pair<Domain2, Range2>, Anonymous> get_space() const = delete;
7983 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
7984 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const;
7985 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7986 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
7987 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
7988 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
7989 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
7990 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
7991 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
7992 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
7993 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
7994 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const;
7995 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> to_multi_pw_aff() const;
7996 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_aff() const;
7997 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> to_union_pw_multi_aff() const;
7998 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
7999 inline typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const;
8000 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const;
8001 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
8002 inline typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
8003 inline typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const;
8004 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const;
8005 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> union_add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const;
8008 template <>
8009 struct pw_aff_list<Anonymous> : public isl::pw_aff_list {
8010 template <typename...>
8011 friend struct aff;
8012 template <typename...>
8013 friend struct aff_list;
8014 template <typename...>
8015 friend struct basic_map;
8016 template <typename...>
8017 friend struct basic_set;
8018 template <typename...>
8019 friend struct fixed_box;
8020 template <typename...>
8021 friend struct id;
8022 template <typename...>
8023 friend struct id_list;
8024 template <typename...>
8025 friend struct map;
8026 template <typename...>
8027 friend struct map_list;
8028 template <typename...>
8029 friend struct multi_aff;
8030 template <typename...>
8031 friend struct multi_id;
8032 template <typename...>
8033 friend struct multi_pw_aff;
8034 template <typename...>
8035 friend struct multi_union_pw_aff;
8036 template <typename...>
8037 friend struct multi_val;
8038 template <typename...>
8039 friend struct point;
8040 template <typename...>
8041 friend struct pw_aff;
8042 template <typename...>
8043 friend struct pw_aff_list;
8044 template <typename...>
8045 friend struct pw_multi_aff;
8046 template <typename...>
8047 friend struct pw_multi_aff_list;
8048 template <typename...>
8049 friend struct set;
8050 template <typename...>
8051 friend struct set_list;
8052 template <typename...>
8053 friend struct space;
8054 template <typename...>
8055 friend struct union_map;
8056 template <typename...>
8057 friend struct union_pw_aff;
8058 template <typename...>
8059 friend struct union_pw_aff_list;
8060 template <typename...>
8061 friend struct union_pw_multi_aff;
8062 template <typename...>
8063 friend struct union_set;
8064 template <typename...>
8065 friend struct union_set_list;
8066 template <typename...>
8067 friend struct val;
8068 template <typename...>
8069 friend struct val_list;
8071 pw_aff_list() = default;
8072 pw_aff_list(const isl::pw_aff_list &obj) : isl::pw_aff_list(obj) {}
8073 static pw_aff_list from(const isl::pw_aff_list &obj) {
8074 return pw_aff_list(obj);
8076 inline explicit pw_aff_list(const isl::ctx &ctx, int n);
8077 inline explicit pw_aff_list(const typed::pw_aff<Anonymous> &el);
8078 inline explicit pw_aff_list(const isl::ctx &ctx, const std::string &str);
8079 inline typed::pw_aff_list<Anonymous> add(const typed::pw_aff<Anonymous> &el) const;
8080 inline typed::pw_aff_list<Anonymous> add(const typed::aff<Anonymous> &el) const;
8081 inline typed::pw_aff<Anonymous> at(int index) const;
8082 inline typed::pw_aff<Anonymous> get_at(int index) const = delete;
8083 inline typed::pw_aff_list<Anonymous> drop(unsigned int first, unsigned int n) const;
8084 inline void foreach(const std::function<void(typed::pw_aff<Anonymous>)> &fn) const;
8085 inline void foreach_scc(const std::function<bool(typed::pw_aff<Anonymous>, typed::pw_aff<Anonymous>)> &follows, const std::function<void(typed::pw_aff_list<Anonymous>)> &fn) const;
8086 inline typed::pw_aff_list<Anonymous> set_at(int index, const typed::pw_aff<Anonymous> &el) const;
8089 template <typename Domain>
8090 struct pw_aff_list<Domain, Anonymous> : public isl::pw_aff_list {
8091 template <typename...>
8092 friend struct aff;
8093 template <typename...>
8094 friend struct aff_list;
8095 template <typename...>
8096 friend struct basic_map;
8097 template <typename...>
8098 friend struct basic_set;
8099 template <typename...>
8100 friend struct fixed_box;
8101 template <typename...>
8102 friend struct id;
8103 template <typename...>
8104 friend struct id_list;
8105 template <typename...>
8106 friend struct map;
8107 template <typename...>
8108 friend struct map_list;
8109 template <typename...>
8110 friend struct multi_aff;
8111 template <typename...>
8112 friend struct multi_id;
8113 template <typename...>
8114 friend struct multi_pw_aff;
8115 template <typename...>
8116 friend struct multi_union_pw_aff;
8117 template <typename...>
8118 friend struct multi_val;
8119 template <typename...>
8120 friend struct point;
8121 template <typename...>
8122 friend struct pw_aff;
8123 template <typename...>
8124 friend struct pw_aff_list;
8125 template <typename...>
8126 friend struct pw_multi_aff;
8127 template <typename...>
8128 friend struct pw_multi_aff_list;
8129 template <typename...>
8130 friend struct set;
8131 template <typename...>
8132 friend struct set_list;
8133 template <typename...>
8134 friend struct space;
8135 template <typename...>
8136 friend struct union_map;
8137 template <typename...>
8138 friend struct union_pw_aff;
8139 template <typename...>
8140 friend struct union_pw_aff_list;
8141 template <typename...>
8142 friend struct union_pw_multi_aff;
8143 template <typename...>
8144 friend struct union_set;
8145 template <typename...>
8146 friend struct union_set_list;
8147 template <typename...>
8148 friend struct val;
8149 template <typename...>
8150 friend struct val_list;
8152 pw_aff_list() = default;
8153 template <typename Arg1,
8154 typename std::enable_if<
8155 std::is_base_of<Domain, Arg1>{},
8156 bool>::type = true>
8157 pw_aff_list(const pw_aff_list<Arg1, Anonymous> &obj) : isl::pw_aff_list(obj) {}
8158 private:
8159 template <typename base,
8160 typename std::enable_if<
8161 std::is_same<base, isl::pw_aff_list>{}, bool>::type = true>
8162 pw_aff_list(const base &obj) : isl::pw_aff_list(obj) {}
8163 public:
8164 static pw_aff_list from(const isl::pw_aff_list &obj) {
8165 return pw_aff_list(obj);
8167 inline explicit pw_aff_list(const isl::ctx &ctx, int n);
8168 inline explicit pw_aff_list(const typed::pw_aff<Domain, Anonymous> &el);
8169 inline explicit pw_aff_list(const isl::ctx &ctx, const std::string &str);
8170 inline typed::pw_aff_list<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &el) const;
8171 inline typed::pw_aff_list<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &el) const;
8172 inline typed::pw_aff<Domain, Anonymous> at(int index) const;
8173 inline typed::pw_aff<Domain, Anonymous> get_at(int index) const = delete;
8174 inline typed::pw_aff_list<Domain, Anonymous> drop(unsigned int first, unsigned int n) const;
8175 inline void foreach(const std::function<void(typed::pw_aff<Domain, Anonymous>)> &fn) const;
8176 inline void foreach_scc(const std::function<bool(typed::pw_aff<Domain, Anonymous>, typed::pw_aff<Domain, Anonymous>)> &follows, const std::function<void(typed::pw_aff_list<Domain, Anonymous>)> &fn) const;
8177 inline typed::pw_aff_list<Domain, Anonymous> set_at(int index, const typed::pw_aff<Domain, Anonymous> &el) const;
8180 template <typename Domain>
8181 struct pw_multi_aff<Domain> : public isl::pw_multi_aff {
8182 template <typename...>
8183 friend struct aff;
8184 template <typename...>
8185 friend struct aff_list;
8186 template <typename...>
8187 friend struct basic_map;
8188 template <typename...>
8189 friend struct basic_set;
8190 template <typename...>
8191 friend struct fixed_box;
8192 template <typename...>
8193 friend struct id;
8194 template <typename...>
8195 friend struct id_list;
8196 template <typename...>
8197 friend struct map;
8198 template <typename...>
8199 friend struct map_list;
8200 template <typename...>
8201 friend struct multi_aff;
8202 template <typename...>
8203 friend struct multi_id;
8204 template <typename...>
8205 friend struct multi_pw_aff;
8206 template <typename...>
8207 friend struct multi_union_pw_aff;
8208 template <typename...>
8209 friend struct multi_val;
8210 template <typename...>
8211 friend struct point;
8212 template <typename...>
8213 friend struct pw_aff;
8214 template <typename...>
8215 friend struct pw_aff_list;
8216 template <typename...>
8217 friend struct pw_multi_aff;
8218 template <typename...>
8219 friend struct pw_multi_aff_list;
8220 template <typename...>
8221 friend struct set;
8222 template <typename...>
8223 friend struct set_list;
8224 template <typename...>
8225 friend struct space;
8226 template <typename...>
8227 friend struct union_map;
8228 template <typename...>
8229 friend struct union_pw_aff;
8230 template <typename...>
8231 friend struct union_pw_aff_list;
8232 template <typename...>
8233 friend struct union_pw_multi_aff;
8234 template <typename...>
8235 friend struct union_set;
8236 template <typename...>
8237 friend struct union_set_list;
8238 template <typename...>
8239 friend struct val;
8240 template <typename...>
8241 friend struct val_list;
8243 pw_multi_aff() = default;
8244 template <typename Arg1,
8245 typename std::enable_if<
8246 std::is_base_of<Domain, Arg1>{},
8247 bool>::type = true>
8248 pw_multi_aff(const pw_multi_aff<Arg1> &obj) : isl::pw_multi_aff(obj) {}
8249 private:
8250 template <typename base,
8251 typename std::enable_if<
8252 std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
8253 pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
8254 public:
8255 static pw_multi_aff from(const isl::pw_multi_aff &obj) {
8256 return pw_multi_aff(obj);
8258 inline /* implicit */ pw_multi_aff(const typed::multi_aff<Domain> &ma);
8259 inline /* implicit */ pw_multi_aff(const typed::pw_aff<Domain> &pa);
8260 inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
8261 inline typed::multi_pw_aff<Domain> add(const typed::multi_pw_aff<Domain> &multi2) const;
8262 inline typed::multi_union_pw_aff<Domain> add(const typed::multi_union_pw_aff<Domain> &multi2) const;
8263 inline typed::pw_multi_aff<Domain> add(const typed::pw_multi_aff<Domain> &pma2) const;
8264 inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_multi_aff<Domain> &upma2) const;
8265 inline typed::pw_multi_aff<Domain> add(const typed::multi_aff<Domain> &pma2) const;
8266 inline typed::pw_multi_aff<Domain> add(const typed::pw_aff<Domain> &pma2) const;
8267 inline typed::pw_multi_aff<Domain> add_constant(const typed::multi_val<Domain> &mv) const;
8268 inline typed::pw_multi_aff<Domain> add_constant(const typed::val<Domain> &v) const;
8269 inline typed::pw_multi_aff<Domain> add_constant(long v) const;
8270 template <typename Range>
8271 inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
8272 inline typed::map<Domain> as_map() const = delete;
8273 inline typed::multi_aff<Domain> as_multi_aff() const;
8274 inline typed::multi_union_pw_aff<Domain> as_multi_union_pw_aff() const;
8275 inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
8276 inline typed::set<Domain> as_set() const;
8277 inline typed::union_map<Domain> as_union_map() const = delete;
8278 inline typed::pw_aff<Anonymous> at(int pos) const;
8279 inline typed::pw_aff<Domain> get_at(int pos) const = delete;
8280 inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
8281 inline typed::pw_multi_aff<Domain> bind_domain(const typed::multi_id<> &tuple) const = delete;
8282 inline typed::pw_multi_aff<Domain> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
8283 inline typed::pw_multi_aff<Domain> coalesce() const;
8284 inline typed::set<> domain() const;
8285 inline typed::pw_multi_aff<Domain> domain_reverse() const = delete;
8286 inline typed::pw_multi_aff<Domain> drop_unused_params() const;
8287 inline typed::pw_multi_aff<Domain> extract_pw_multi_aff(const typed::space<Domain> &space) const;
8288 inline typed::pw_multi_aff<Domain> gist(const typed::set<> &set) const;
8289 inline typed::union_pw_multi_aff<Domain> gist(const typed::union_set<> &context) const;
8290 inline typed::pw_multi_aff<Domain> gist(const typed::basic_set<> &set) const;
8291 inline typed::pw_multi_aff<Domain> gist(const typed::point<> &set) const;
8292 inline typed::pw_multi_aff<Domain> gist_params(const typed::set<> &set) const;
8293 inline typed::pw_multi_aff<Domain> gist_params(const typed::basic_set<> &set) const;
8294 inline typed::pw_multi_aff<Domain> gist_params(const typed::point<> &set) const;
8295 inline typed::multi_pw_aff<Domain, Domain> identity() const;
8296 template <typename Arg1>
8297 inline typed::pw_multi_aff<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
8298 inline typed::pw_multi_aff<Domain> intersect_domain(const typed::set<> &set) const = delete;
8299 inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::space<> &space) const = delete;
8300 inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
8301 inline typed::pw_multi_aff<Domain> intersect_domain(const typed::basic_set<> &set) const = delete;
8302 inline typed::pw_multi_aff<Domain> intersect_domain(const typed::point<> &set) const = delete;
8303 inline typed::union_pw_multi_aff<Domain> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
8304 inline typed::pw_multi_aff<Domain> intersect_params(const typed::set<> &set) const;
8305 inline typed::pw_multi_aff<Domain> intersect_params(const typed::basic_set<> &set) const;
8306 inline typed::pw_multi_aff<Domain> intersect_params(const typed::point<> &set) const;
8307 inline typed::pw_aff_list<Anonymous> list() const;
8308 inline typed::multi_pw_aff<Domain> max(const typed::multi_pw_aff<Domain> &multi2) const;
8309 inline typed::multi_val<Domain> max_multi_val() const;
8310 inline typed::multi_pw_aff<Domain> min(const typed::multi_pw_aff<Domain> &multi2) const;
8311 inline typed::multi_val<Domain> min_multi_val() const;
8312 inline typed::multi_pw_aff<Domain> neg() const;
8313 inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
8314 inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
8315 inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete;
8316 inline typed::pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete;
8317 template <typename Range>
8318 inline typed::multi_pw_aff<pair<Domain, Range>> product(const typed::multi_pw_aff<Range> &multi2) const;
8319 template <typename Range>
8320 inline typed::pw_multi_aff<pair<Domain, Range>> product(const typed::pw_multi_aff<Range> &pma2) const;
8321 template <typename Range>
8322 inline typed::pw_multi_aff<pair<Domain, Range>> product(const typed::multi_aff<Range> &pma2) const;
8323 inline typed::pw_multi_aff<pair<Domain, Anonymous>> product(const typed::pw_aff<Anonymous> &pma2) const;
8324 inline typed::multi_pw_aff<Domain> pullback(const typed::multi_pw_aff<> &mpa2) const = delete;
8325 inline typed::pw_multi_aff<Domain> pullback(const typed::multi_aff<> &ma) const = delete;
8326 inline typed::pw_multi_aff<Domain> pullback(const typed::pw_multi_aff<> &pma2) const = delete;
8327 inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma2) const = delete;
8328 inline typed::pw_multi_aff_list<Domain> pw_multi_aff_list() const;
8329 inline typed::pw_multi_aff<Domain> range_factor_domain() const = delete;
8330 inline typed::pw_multi_aff<Domain> range_factor_range() const = delete;
8331 inline typed::multi_pw_aff<Domain> range_product(const typed::multi_pw_aff<> &multi2) const = delete;
8332 inline typed::multi_union_pw_aff<Domain> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
8333 inline typed::pw_multi_aff<Domain> range_product(const typed::pw_multi_aff<> &pma2) const = delete;
8334 inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
8335 inline typed::pw_multi_aff<Domain> range_product(const typed::multi_aff<> &pma2) const = delete;
8336 inline typed::pw_multi_aff<Domain> range_product(const typed::pw_aff<> &pma2) const = delete;
8337 inline typed::id<Domain> get_range_tuple_id() const = delete;
8338 inline typed::pw_multi_aff<Domain> scale(const typed::multi_val<Domain> &mv) const;
8339 inline typed::pw_multi_aff<Domain> scale(const typed::val<Domain> &v) const;
8340 inline typed::pw_multi_aff<Domain> scale(long v) const;
8341 inline typed::pw_multi_aff<Domain> scale_down(const typed::multi_val<Domain> &mv) const;
8342 inline typed::pw_multi_aff<Domain> scale_down(const typed::val<Domain> &v) const;
8343 inline typed::pw_multi_aff<Domain> scale_down(long v) const;
8344 inline typed::multi_pw_aff<Domain> set_at(int pos, const typed::pw_aff<Anonymous> &el) const;
8345 inline typed::multi_union_pw_aff<Domain> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
8346 template <typename Domain2>
8347 inline typed::pw_multi_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
8348 template <typename Domain2>
8349 inline typed::pw_multi_aff<Domain2> set_range_tuple(const std::string &id) const;
8350 inline typed::space<Domain> space() const;
8351 inline typed::space<Domain> get_space() const = delete;
8352 inline typed::multi_pw_aff<Domain> sub(const typed::multi_pw_aff<Domain> &multi2) const;
8353 inline typed::multi_union_pw_aff<Domain> sub(const typed::multi_union_pw_aff<Domain> &multi2) const;
8354 inline typed::pw_multi_aff<Domain> sub(const typed::pw_multi_aff<Domain> &pma2) const;
8355 inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_multi_aff<Domain> &upma2) const;
8356 inline typed::pw_multi_aff<Domain> sub(const typed::multi_aff<Domain> &pma2) const;
8357 inline typed::pw_multi_aff<Domain> sub(const typed::pw_aff<Domain> &pma2) const;
8358 inline typed::pw_multi_aff<Domain> subtract_domain(const typed::set<> &set) const = delete;
8359 inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::space<> &space) const = delete;
8360 inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::union_set<> &uset) const = delete;
8361 inline typed::pw_multi_aff<Domain> subtract_domain(const typed::basic_set<> &set) const = delete;
8362 inline typed::pw_multi_aff<Domain> subtract_domain(const typed::point<> &set) const = delete;
8363 inline typed::multi_pw_aff<Domain> to_multi_pw_aff() const;
8364 inline typed::union_pw_multi_aff<Domain> to_union_pw_multi_aff() const;
8365 template <typename Arg1>
8366 inline typed::multi_pw_aff<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
8367 inline typed::multi_pw_aff<Domain> union_add(const typed::multi_pw_aff<Domain> &mpa2) const;
8368 inline typed::multi_union_pw_aff<Domain> union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const;
8369 inline typed::pw_multi_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &pma2) const;
8370 inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_multi_aff<Domain> &upma2) const;
8371 inline typed::pw_multi_aff<Domain> union_add(const typed::multi_aff<Domain> &pma2) const;
8372 inline typed::pw_multi_aff<Domain> union_add(const typed::pw_aff<Domain> &pma2) const;
8375 template <typename Domain, typename Range>
8376 struct pw_multi_aff<Domain, Range> : public isl::pw_multi_aff {
8377 template <typename...>
8378 friend struct aff;
8379 template <typename...>
8380 friend struct aff_list;
8381 template <typename...>
8382 friend struct basic_map;
8383 template <typename...>
8384 friend struct basic_set;
8385 template <typename...>
8386 friend struct fixed_box;
8387 template <typename...>
8388 friend struct id;
8389 template <typename...>
8390 friend struct id_list;
8391 template <typename...>
8392 friend struct map;
8393 template <typename...>
8394 friend struct map_list;
8395 template <typename...>
8396 friend struct multi_aff;
8397 template <typename...>
8398 friend struct multi_id;
8399 template <typename...>
8400 friend struct multi_pw_aff;
8401 template <typename...>
8402 friend struct multi_union_pw_aff;
8403 template <typename...>
8404 friend struct multi_val;
8405 template <typename...>
8406 friend struct point;
8407 template <typename...>
8408 friend struct pw_aff;
8409 template <typename...>
8410 friend struct pw_aff_list;
8411 template <typename...>
8412 friend struct pw_multi_aff;
8413 template <typename...>
8414 friend struct pw_multi_aff_list;
8415 template <typename...>
8416 friend struct set;
8417 template <typename...>
8418 friend struct set_list;
8419 template <typename...>
8420 friend struct space;
8421 template <typename...>
8422 friend struct union_map;
8423 template <typename...>
8424 friend struct union_pw_aff;
8425 template <typename...>
8426 friend struct union_pw_aff_list;
8427 template <typename...>
8428 friend struct union_pw_multi_aff;
8429 template <typename...>
8430 friend struct union_set;
8431 template <typename...>
8432 friend struct union_set_list;
8433 template <typename...>
8434 friend struct val;
8435 template <typename...>
8436 friend struct val_list;
8438 pw_multi_aff() = default;
8439 template <typename Arg1, typename Arg2,
8440 typename std::enable_if<
8441 std::is_base_of<Domain, Arg1>{} &&
8442 std::is_base_of<Range, Arg2>{},
8443 bool>::type = true>
8444 pw_multi_aff(const pw_multi_aff<Arg1, Arg2> &obj) : isl::pw_multi_aff(obj) {}
8445 private:
8446 template <typename base,
8447 typename std::enable_if<
8448 std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
8449 pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
8450 public:
8451 static pw_multi_aff from(const isl::pw_multi_aff &obj) {
8452 return pw_multi_aff(obj);
8454 inline /* implicit */ pw_multi_aff(const typed::multi_aff<Domain, Range> &ma);
8455 inline /* implicit */ pw_multi_aff(const typed::pw_aff<Domain, Range> &pa);
8456 inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
8457 inline typed::multi_pw_aff<Domain, Range> add(const typed::multi_pw_aff<Domain, Range> &multi2) const;
8458 inline typed::multi_union_pw_aff<Domain, Range> add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
8459 inline typed::pw_multi_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
8460 inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
8461 inline typed::pw_multi_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &pma2) const;
8462 inline typed::pw_multi_aff<Domain, Range> add(const typed::pw_aff<Domain, Range> &pma2) const;
8463 inline typed::pw_multi_aff<Domain, Range> add_constant(const typed::multi_val<Range> &mv) const;
8464 inline typed::pw_multi_aff<Domain, Range> add_constant(const typed::val<Range> &v) const;
8465 inline typed::pw_multi_aff<Domain, Range> add_constant(long v) const;
8466 template <typename Range2>
8467 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
8468 inline typed::map<Domain, Range> as_map() const;
8469 inline typed::multi_aff<Domain, Range> as_multi_aff() const;
8470 inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
8471 inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
8472 inline typed::set<Domain, Range> as_set() const = delete;
8473 inline typed::union_map<Domain, Range> as_union_map() const;
8474 inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
8475 inline typed::pw_aff<Domain, Range> get_at(int pos) const = delete;
8476 inline typed::set<Domain> bind(const typed::multi_id<Range> &tuple) const;
8477 inline typed::pw_multi_aff<Range> bind_domain(const typed::multi_id<Domain> &tuple) const;
8478 inline typed::pw_multi_aff<Domain, Range> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
8479 inline typed::pw_multi_aff<Domain, Range> coalesce() const;
8480 inline typed::set<Domain> domain() const;
8481 inline typed::pw_multi_aff<Domain, Range> domain_reverse() const = delete;
8482 inline typed::pw_multi_aff<Domain, Range> drop_unused_params() const;
8483 inline typed::pw_multi_aff<Domain, Range> extract_pw_multi_aff(const typed::space<Domain, Range> &space) const;
8484 inline typed::pw_multi_aff<Domain, Range> gist(const typed::set<Domain> &set) const;
8485 inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
8486 inline typed::pw_multi_aff<Domain, Range> gist(const typed::basic_set<Domain> &set) const;
8487 inline typed::pw_multi_aff<Domain, Range> gist(const typed::point<Domain> &set) const;
8488 inline typed::pw_multi_aff<Domain, Range> gist_params(const typed::set<> &set) const;
8489 inline typed::pw_multi_aff<Domain, Range> gist_params(const typed::basic_set<> &set) const;
8490 inline typed::pw_multi_aff<Domain, Range> gist_params(const typed::point<> &set) const;
8491 inline typed::multi_pw_aff<Domain, Range> identity() const;
8492 inline typed::pw_multi_aff<Domain, Range> insert_domain(const typed::space<> &domain) const = delete;
8493 inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::set<Domain> &set) const;
8494 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
8495 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
8496 inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::basic_set<Domain> &set) const;
8497 inline typed::pw_multi_aff<Domain, Range> intersect_domain(const typed::point<Domain> &set) const;
8498 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
8499 inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
8500 inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
8501 inline typed::pw_multi_aff<Domain, Range> intersect_params(const typed::point<> &set) const;
8502 inline typed::pw_aff_list<Domain, Anonymous> list() const;
8503 inline typed::multi_pw_aff<Domain, Range> max(const typed::multi_pw_aff<Domain, Range> &multi2) const;
8504 inline typed::multi_val<Range> max_multi_val() const;
8505 inline typed::multi_pw_aff<Domain, Range> min(const typed::multi_pw_aff<Domain, Range> &multi2) const;
8506 inline typed::multi_val<Range> min_multi_val() const;
8507 inline typed::multi_pw_aff<Domain, Range> neg() const;
8508 inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
8509 inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
8510 inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete;
8511 inline typed::pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete;
8512 template <typename Domain2, typename Range2>
8513 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const;
8514 template <typename Domain2, typename Range2>
8515 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const;
8516 template <typename Domain2, typename Range2>
8517 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::multi_aff<Domain2, Range2> &pma2) const;
8518 template <typename Domain2>
8519 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> product(const typed::pw_aff<Domain2, Anonymous> &pma2) const;
8520 template <typename Domain2>
8521 inline typed::multi_pw_aff<Domain2, Range> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
8522 inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
8523 template <typename Domain2>
8524 inline typed::pw_multi_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
8525 inline typed::pw_multi_aff<Range> pullback(const typed::multi_aff<Domain> &ma) const;
8526 template <typename Domain2>
8527 inline typed::pw_multi_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
8528 inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
8529 template <typename Domain2>
8530 inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
8531 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
8532 inline typed::pw_multi_aff_list<Domain, Range> pw_multi_aff_list() const;
8533 inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const = delete;
8534 inline typed::pw_multi_aff<Domain, Range> range_factor_range() const = delete;
8535 template <typename Range2>
8536 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const;
8537 template <typename Range2>
8538 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
8539 template <typename Range2>
8540 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const;
8541 template <typename Range2>
8542 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
8543 template <typename Range2>
8544 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &pma2) const;
8545 inline typed::pw_multi_aff<Domain, pair<Range, Anonymous>> range_product(const typed::pw_aff<Domain, Anonymous> &pma2) const;
8546 inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
8547 inline typed::pw_multi_aff<Domain, Range> scale(const typed::multi_val<Range> &mv) const;
8548 inline typed::pw_multi_aff<Domain, Range> scale(const typed::val<Range> &v) const;
8549 inline typed::pw_multi_aff<Domain, Range> scale(long v) const;
8550 inline typed::pw_multi_aff<Domain, Range> scale_down(const typed::multi_val<Range> &mv) const;
8551 inline typed::pw_multi_aff<Domain, Range> scale_down(const typed::val<Range> &v) const;
8552 inline typed::pw_multi_aff<Domain, Range> scale_down(long v) const;
8553 inline typed::multi_pw_aff<Domain, Range> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
8554 inline typed::multi_union_pw_aff<Domain, Range> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
8555 template <typename Range2>
8556 inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
8557 template <typename Range2>
8558 inline typed::pw_multi_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
8559 inline typed::space<Domain, Range> space() const;
8560 inline typed::space<Domain, Range> get_space() const = delete;
8561 inline typed::multi_pw_aff<Domain, Range> sub(const typed::multi_pw_aff<Domain, Range> &multi2) const;
8562 inline typed::multi_union_pw_aff<Domain, Range> sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const;
8563 inline typed::pw_multi_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &pma2) const;
8564 inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
8565 inline typed::pw_multi_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &pma2) const;
8566 inline typed::pw_multi_aff<Domain, Range> sub(const typed::pw_aff<Domain, Range> &pma2) const;
8567 inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::set<Domain> &set) const;
8568 inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::space<Domain> &space) const;
8569 inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::union_set<Domain> &uset) const;
8570 inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::basic_set<Domain> &set) const;
8571 inline typed::pw_multi_aff<Domain, Range> subtract_domain(const typed::point<Domain> &set) const;
8572 inline typed::multi_pw_aff<Domain, Range> to_multi_pw_aff() const;
8573 inline typed::union_pw_multi_aff<Domain, Range> to_union_pw_multi_aff() const;
8574 inline typed::multi_pw_aff<Domain, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
8575 inline typed::multi_pw_aff<Domain, Range> union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const;
8576 inline typed::multi_union_pw_aff<Domain, Range> union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const;
8577 inline typed::pw_multi_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const;
8578 inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
8579 inline typed::pw_multi_aff<Domain, Range> union_add(const typed::multi_aff<Domain, Range> &pma2) const;
8580 inline typed::pw_multi_aff<Domain, Range> union_add(const typed::pw_aff<Domain, Range> &pma2) const;
8583 template <typename Domain2, typename Range2, typename Range>
8584 struct pw_multi_aff<pair<Domain2, Range2>, Range> : public isl::pw_multi_aff {
8585 template <typename...>
8586 friend struct aff;
8587 template <typename...>
8588 friend struct aff_list;
8589 template <typename...>
8590 friend struct basic_map;
8591 template <typename...>
8592 friend struct basic_set;
8593 template <typename...>
8594 friend struct fixed_box;
8595 template <typename...>
8596 friend struct id;
8597 template <typename...>
8598 friend struct id_list;
8599 template <typename...>
8600 friend struct map;
8601 template <typename...>
8602 friend struct map_list;
8603 template <typename...>
8604 friend struct multi_aff;
8605 template <typename...>
8606 friend struct multi_id;
8607 template <typename...>
8608 friend struct multi_pw_aff;
8609 template <typename...>
8610 friend struct multi_union_pw_aff;
8611 template <typename...>
8612 friend struct multi_val;
8613 template <typename...>
8614 friend struct point;
8615 template <typename...>
8616 friend struct pw_aff;
8617 template <typename...>
8618 friend struct pw_aff_list;
8619 template <typename...>
8620 friend struct pw_multi_aff;
8621 template <typename...>
8622 friend struct pw_multi_aff_list;
8623 template <typename...>
8624 friend struct set;
8625 template <typename...>
8626 friend struct set_list;
8627 template <typename...>
8628 friend struct space;
8629 template <typename...>
8630 friend struct union_map;
8631 template <typename...>
8632 friend struct union_pw_aff;
8633 template <typename...>
8634 friend struct union_pw_aff_list;
8635 template <typename...>
8636 friend struct union_pw_multi_aff;
8637 template <typename...>
8638 friend struct union_set;
8639 template <typename...>
8640 friend struct union_set_list;
8641 template <typename...>
8642 friend struct val;
8643 template <typename...>
8644 friend struct val_list;
8646 pw_multi_aff() = default;
8647 template <typename Arg1, typename Arg2, typename Arg3,
8648 typename std::enable_if<
8649 std::is_base_of<Domain2, Arg1>{} &&
8650 std::is_base_of<Range2, Arg2>{} &&
8651 std::is_base_of<Range, Arg3>{},
8652 bool>::type = true>
8653 pw_multi_aff(const pw_multi_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::pw_multi_aff(obj) {}
8654 private:
8655 template <typename base,
8656 typename std::enable_if<
8657 std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
8658 pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
8659 public:
8660 static pw_multi_aff from(const isl::pw_multi_aff &obj) {
8661 return pw_multi_aff(obj);
8663 inline /* implicit */ pw_multi_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma);
8664 inline /* implicit */ pw_multi_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa);
8665 inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
8666 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
8667 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
8668 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
8669 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
8670 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
8671 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const;
8672 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::multi_val<Range> &mv) const;
8673 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add_constant(const typed::val<Range> &v) const;
8674 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> add_constant(long v) const;
8675 template <typename Arg2>
8676 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const;
8677 inline typed::map<pair<Domain2, Range2>, Range> as_map() const;
8678 inline typed::multi_aff<pair<Domain2, Range2>, Range> as_multi_aff() const;
8679 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> as_multi_union_pw_aff() const;
8680 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> as_pw_multi_aff() const;
8681 inline typed::set<pair<Domain2, Range2>, Range> as_set() const = delete;
8682 inline typed::union_map<pair<Domain2, Range2>, Range> as_union_map() const;
8683 inline typed::pw_aff<pair<Domain2, Range2>, Anonymous> at(int pos) const;
8684 inline typed::pw_aff<pair<Domain2, Range2>, Range> get_at(int pos) const = delete;
8685 inline typed::set<pair<Domain2, Range2>> bind(const typed::multi_id<Range> &tuple) const;
8686 inline typed::pw_multi_aff<Range> bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const;
8687 inline typed::pw_multi_aff<Range2, Range> bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const;
8688 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> coalesce() const;
8689 inline typed::set<pair<Domain2, Range2>> domain() const;
8690 inline typed::pw_multi_aff<pair<Range2, Domain2>, Range> domain_reverse() const;
8691 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> drop_unused_params() const;
8692 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const;
8693 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::set<pair<Domain2, Range2>> &set) const;
8694 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::union_set<pair<Domain2, Range2>> &context) const;
8695 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::basic_set<pair<Domain2, Range2>> &set) const;
8696 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist(const typed::point<pair<Domain2, Range2>> &set) const;
8697 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist_params(const typed::set<> &set) const;
8698 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist_params(const typed::basic_set<> &set) const;
8699 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> gist_params(const typed::point<> &set) const;
8700 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> identity() const;
8701 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> insert_domain(const typed::space<> &domain) const = delete;
8702 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const;
8703 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const;
8704 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
8705 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
8706 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const;
8707 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const;
8708 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::set<> &set) const;
8709 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::basic_set<> &set) const;
8710 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> intersect_params(const typed::point<> &set) const;
8711 inline typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> list() const;
8712 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
8713 inline typed::multi_val<Range> max_multi_val() const;
8714 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
8715 inline typed::multi_val<Range> min_multi_val() const;
8716 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> neg() const;
8717 template <typename Domain3>
8718 inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const;
8719 template <typename Domain3>
8720 inline typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const;
8721 template <typename Domain3>
8722 inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain2> &pma2) const;
8723 template <typename Domain3>
8724 inline typed::pw_multi_aff<pair<Domain3, Range2>, Range> preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, Domain2> &pma2) const;
8725 template <typename Arg2, typename Arg3>
8726 inline typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const;
8727 template <typename Arg2, typename Arg3>
8728 inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const;
8729 template <typename Arg2, typename Arg3>
8730 inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> product(const typed::multi_aff<Arg2, Arg3> &pma2) const;
8731 template <typename Arg2>
8732 inline typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> product(const typed::pw_aff<Arg2, Anonymous> &pma2) const;
8733 template <typename Arg2>
8734 inline typed::multi_pw_aff<Arg2, Range> pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const;
8735 inline typed::multi_pw_aff<Range> pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const;
8736 template <typename Arg2>
8737 inline typed::pw_multi_aff<Arg2, Range> pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const;
8738 inline typed::pw_multi_aff<Range> pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const;
8739 template <typename Arg2>
8740 inline typed::pw_multi_aff<Arg2, Range> pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const;
8741 inline typed::pw_multi_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const;
8742 template <typename Arg2>
8743 inline typed::union_pw_multi_aff<Arg2, Range> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const;
8744 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const;
8745 inline typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> pw_multi_aff_list() const;
8746 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_domain() const = delete;
8747 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> range_factor_range() const = delete;
8748 template <typename Arg2>
8749 inline typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
8750 template <typename Arg2>
8751 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const;
8752 template <typename Arg2>
8753 inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const;
8754 template <typename Arg2>
8755 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const;
8756 template <typename Arg2>
8757 inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const;
8758 inline typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> range_product(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pma2) const;
8759 inline typed::id<pair<Domain2, Range2>, Range> get_range_tuple_id() const = delete;
8760 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale(const typed::multi_val<Range> &mv) const;
8761 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale(const typed::val<Range> &v) const;
8762 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale(long v) const;
8763 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale_down(const typed::multi_val<Range> &mv) const;
8764 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale_down(const typed::val<Range> &v) const;
8765 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> scale_down(long v) const;
8766 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
8767 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const;
8768 template <typename Arg1>
8769 inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const typed::id<Anonymous> &id) const;
8770 template <typename Arg1>
8771 inline typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> set_range_tuple(const std::string &id) const;
8772 inline typed::space<pair<Domain2, Range2>, Range> space() const;
8773 inline typed::space<pair<Domain2, Range2>, Range> get_space() const = delete;
8774 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
8775 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const;
8776 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
8777 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
8778 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
8779 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const;
8780 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const;
8781 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const;
8782 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const;
8783 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const;
8784 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const;
8785 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> to_multi_pw_aff() const;
8786 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> to_union_pw_multi_aff() const;
8787 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
8788 inline typed::multi_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const;
8789 inline typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const;
8790 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
8791 inline typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const;
8792 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const;
8793 inline typed::pw_multi_aff<pair<Domain2, Range2>, Range> union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const;
8796 template <typename Domain, typename Range, typename Range2>
8797 struct pw_multi_aff<Domain, pair<Range, Range2>> : public isl::pw_multi_aff {
8798 template <typename...>
8799 friend struct aff;
8800 template <typename...>
8801 friend struct aff_list;
8802 template <typename...>
8803 friend struct basic_map;
8804 template <typename...>
8805 friend struct basic_set;
8806 template <typename...>
8807 friend struct fixed_box;
8808 template <typename...>
8809 friend struct id;
8810 template <typename...>
8811 friend struct id_list;
8812 template <typename...>
8813 friend struct map;
8814 template <typename...>
8815 friend struct map_list;
8816 template <typename...>
8817 friend struct multi_aff;
8818 template <typename...>
8819 friend struct multi_id;
8820 template <typename...>
8821 friend struct multi_pw_aff;
8822 template <typename...>
8823 friend struct multi_union_pw_aff;
8824 template <typename...>
8825 friend struct multi_val;
8826 template <typename...>
8827 friend struct point;
8828 template <typename...>
8829 friend struct pw_aff;
8830 template <typename...>
8831 friend struct pw_aff_list;
8832 template <typename...>
8833 friend struct pw_multi_aff;
8834 template <typename...>
8835 friend struct pw_multi_aff_list;
8836 template <typename...>
8837 friend struct set;
8838 template <typename...>
8839 friend struct set_list;
8840 template <typename...>
8841 friend struct space;
8842 template <typename...>
8843 friend struct union_map;
8844 template <typename...>
8845 friend struct union_pw_aff;
8846 template <typename...>
8847 friend struct union_pw_aff_list;
8848 template <typename...>
8849 friend struct union_pw_multi_aff;
8850 template <typename...>
8851 friend struct union_set;
8852 template <typename...>
8853 friend struct union_set_list;
8854 template <typename...>
8855 friend struct val;
8856 template <typename...>
8857 friend struct val_list;
8859 pw_multi_aff() = default;
8860 template <typename Arg1, typename Arg2, typename Arg3,
8861 typename std::enable_if<
8862 std::is_base_of<Domain, Arg1>{} &&
8863 std::is_base_of<Range, Arg2>{} &&
8864 std::is_base_of<Range2, Arg3>{},
8865 bool>::type = true>
8866 pw_multi_aff(const pw_multi_aff<Arg1, pair<Arg2, Arg3>> &obj) : isl::pw_multi_aff(obj) {}
8867 private:
8868 template <typename base,
8869 typename std::enable_if<
8870 std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
8871 pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
8872 public:
8873 static pw_multi_aff from(const isl::pw_multi_aff &obj) {
8874 return pw_multi_aff(obj);
8876 inline /* implicit */ pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma);
8877 inline /* implicit */ pw_multi_aff(const typed::pw_aff<Domain, pair<Range, Range2>> &pa);
8878 inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
8879 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
8880 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
8881 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
8882 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
8883 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const;
8884 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const;
8885 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
8886 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
8887 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> add_constant(long v) const;
8888 template <typename Arg3>
8889 inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
8890 inline typed::map<Domain, pair<Range, Range2>> as_map() const;
8891 inline typed::multi_aff<Domain, pair<Range, Range2>> as_multi_aff() const;
8892 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
8893 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
8894 inline typed::set<Domain, pair<Range, Range2>> as_set() const = delete;
8895 inline typed::union_map<Domain, pair<Range, Range2>> as_union_map() const;
8896 inline typed::pw_aff<Domain, Anonymous> at(int pos) const;
8897 inline typed::pw_aff<Domain, pair<Range, Range2>> get_at(int pos) const = delete;
8898 inline typed::set<Domain> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
8899 inline typed::pw_multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<Domain> &tuple) const;
8900 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<> &tuple) const = delete;
8901 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> coalesce() const;
8902 inline typed::set<Domain> domain() const;
8903 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> domain_reverse() const = delete;
8904 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> drop_unused_params() const;
8905 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const;
8906 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::set<Domain> &set) const;
8907 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::union_set<Domain> &context) const;
8908 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::basic_set<Domain> &set) const;
8909 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::point<Domain> &set) const;
8910 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist_params(const typed::set<> &set) const;
8911 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist_params(const typed::basic_set<> &set) const;
8912 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> gist_params(const typed::point<> &set) const;
8913 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> identity() const;
8914 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
8915 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::set<Domain> &set) const;
8916 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
8917 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
8918 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::basic_set<Domain> &set) const;
8919 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::point<Domain> &set) const;
8920 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
8921 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
8922 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
8923 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
8924 inline typed::pw_aff_list<Domain, Anonymous> list() const;
8925 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
8926 inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
8927 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
8928 inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
8929 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> neg() const;
8930 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &pma2) const = delete;
8931 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
8932 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<> &pma2) const = delete;
8933 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_aff<> &pma2) const = delete;
8934 template <typename Domain2, typename Arg3>
8935 inline typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const;
8936 template <typename Domain2, typename Arg3>
8937 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const;
8938 template <typename Domain2, typename Arg3>
8939 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::multi_aff<Domain2, Arg3> &pma2) const;
8940 template <typename Domain2>
8941 inline typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Anonymous>> product(const typed::pw_aff<Domain2, Anonymous> &pma2) const;
8942 template <typename Domain2>
8943 inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const;
8944 inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain> &mpa2) const;
8945 template <typename Domain2>
8946 inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, Domain> &ma) const;
8947 inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<Domain> &ma) const;
8948 template <typename Domain2>
8949 inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const;
8950 inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain> &pma2) const;
8951 template <typename Domain2>
8952 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
8953 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
8954 inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> pw_multi_aff_list() const;
8955 inline typed::pw_multi_aff<Domain, Range> range_factor_domain() const;
8956 inline typed::pw_multi_aff<Domain, Range2> range_factor_range() const;
8957 template <typename Arg3>
8958 inline typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const;
8959 template <typename Arg3>
8960 inline typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const;
8961 template <typename Arg3>
8962 inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const;
8963 template <typename Arg3>
8964 inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const;
8965 template <typename Arg3>
8966 inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_aff<Domain, Arg3> &pma2) const;
8967 inline typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>> range_product(const typed::pw_aff<Domain, Anonymous> &pma2) const;
8968 inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
8969 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
8970 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
8971 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale(long v) const;
8972 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
8973 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
8974 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> scale_down(long v) const;
8975 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const;
8976 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
8977 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
8978 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
8979 inline typed::space<Domain, pair<Range, Range2>> space() const;
8980 inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
8981 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
8982 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const;
8983 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
8984 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
8985 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const;
8986 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const;
8987 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::set<Domain> &set) const;
8988 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::space<Domain> &space) const;
8989 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &uset) const;
8990 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::basic_set<Domain> &set) const;
8991 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::point<Domain> &set) const;
8992 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> to_multi_pw_aff() const;
8993 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> to_union_pw_multi_aff() const;
8994 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
8995 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const;
8996 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const;
8997 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const;
8998 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
8999 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const;
9000 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const;
9003 template <typename T1, typename T2, typename Range, typename Range2>
9004 struct pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> : public isl::pw_multi_aff {
9005 template <typename...>
9006 friend struct aff;
9007 template <typename...>
9008 friend struct aff_list;
9009 template <typename...>
9010 friend struct basic_map;
9011 template <typename...>
9012 friend struct basic_set;
9013 template <typename...>
9014 friend struct fixed_box;
9015 template <typename...>
9016 friend struct id;
9017 template <typename...>
9018 friend struct id_list;
9019 template <typename...>
9020 friend struct map;
9021 template <typename...>
9022 friend struct map_list;
9023 template <typename...>
9024 friend struct multi_aff;
9025 template <typename...>
9026 friend struct multi_id;
9027 template <typename...>
9028 friend struct multi_pw_aff;
9029 template <typename...>
9030 friend struct multi_union_pw_aff;
9031 template <typename...>
9032 friend struct multi_val;
9033 template <typename...>
9034 friend struct point;
9035 template <typename...>
9036 friend struct pw_aff;
9037 template <typename...>
9038 friend struct pw_aff_list;
9039 template <typename...>
9040 friend struct pw_multi_aff;
9041 template <typename...>
9042 friend struct pw_multi_aff_list;
9043 template <typename...>
9044 friend struct set;
9045 template <typename...>
9046 friend struct set_list;
9047 template <typename...>
9048 friend struct space;
9049 template <typename...>
9050 friend struct union_map;
9051 template <typename...>
9052 friend struct union_pw_aff;
9053 template <typename...>
9054 friend struct union_pw_aff_list;
9055 template <typename...>
9056 friend struct union_pw_multi_aff;
9057 template <typename...>
9058 friend struct union_set;
9059 template <typename...>
9060 friend struct union_set_list;
9061 template <typename...>
9062 friend struct val;
9063 template <typename...>
9064 friend struct val_list;
9066 pw_multi_aff() = default;
9067 template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
9068 typename std::enable_if<
9069 std::is_base_of<T1, Arg1>{} &&
9070 std::is_base_of<T2, Arg2>{} &&
9071 std::is_base_of<Range, Arg3>{} &&
9072 std::is_base_of<Range2, Arg4>{},
9073 bool>::type = true>
9074 pw_multi_aff(const pw_multi_aff<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::pw_multi_aff(obj) {}
9075 private:
9076 template <typename base,
9077 typename std::enable_if<
9078 std::is_same<base, isl::pw_multi_aff>{}, bool>::type = true>
9079 pw_multi_aff(const base &obj) : isl::pw_multi_aff(obj) {}
9080 public:
9081 static pw_multi_aff from(const isl::pw_multi_aff &obj) {
9082 return pw_multi_aff(obj);
9084 inline /* implicit */ pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma);
9085 inline /* implicit */ pw_multi_aff(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pa);
9086 inline explicit pw_multi_aff(const isl::ctx &ctx, const std::string &str);
9087 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
9088 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
9089 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9090 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
9091 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9092 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9093 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const;
9094 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(const typed::val<pair<Range, Range2>> &v) const;
9095 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add_constant(long v) const;
9096 template <typename Arg2>
9097 inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
9098 inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
9099 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_aff() const;
9100 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
9101 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
9102 inline typed::set<pair<T1, T2>, pair<Range, Range2>> as_set() const = delete;
9103 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> as_union_map() const;
9104 inline typed::pw_aff<pair<T1, T2>, Anonymous> at(int pos) const;
9105 inline typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> get_at(int pos) const = delete;
9106 inline typed::set<pair<T1, T2>> bind(const typed::multi_id<pair<Range, Range2>> &tuple) const;
9107 inline typed::pw_multi_aff<pair<Range, Range2>> bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const;
9108 inline typed::pw_multi_aff<T2, pair<Range, Range2>> bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const;
9109 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
9110 inline typed::set<pair<T1, T2>> domain() const;
9111 inline typed::pw_multi_aff<pair<T2, T1>, pair<Range, Range2>> domain_reverse() const;
9112 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> drop_unused_params() const;
9113 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
9114 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::set<pair<T1, T2>> &set) const;
9115 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_set<pair<T1, T2>> &context) const;
9116 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_set<pair<T1, T2>> &set) const;
9117 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::point<pair<T1, T2>> &set) const;
9118 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::set<> &set) const;
9119 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::basic_set<> &set) const;
9120 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::point<> &set) const;
9121 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> identity() const;
9122 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> insert_domain(const typed::space<> &domain) const = delete;
9123 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::set<pair<T1, T2>> &set) const;
9124 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
9125 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
9126 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const;
9127 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::point<pair<T1, T2>> &set) const;
9128 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &uset) const;
9129 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
9130 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
9131 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
9132 inline typed::pw_aff_list<pair<T1, T2>, Anonymous> list() const;
9133 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
9134 inline typed::multi_val<pair<Range, Range2>> max_multi_val() const;
9135 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
9136 inline typed::multi_val<pair<Range, Range2>> min_multi_val() const;
9137 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> neg() const;
9138 template <typename Domain3>
9139 inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const;
9140 template <typename Domain3>
9141 inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const;
9142 template <typename Domain3>
9143 inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &pma2) const;
9144 template <typename Domain3>
9145 inline typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, T1> &pma2) const;
9146 template <typename Domain2, typename Arg2>
9147 inline typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const;
9148 template <typename Domain2, typename Arg2>
9149 inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const;
9150 template <typename Domain2, typename Arg2>
9151 inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::multi_aff<Domain2, Arg2> &pma2) const;
9152 template <typename Domain2>
9153 inline typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Anonymous>> product(const typed::pw_aff<Domain2, Anonymous> &pma2) const;
9154 template <typename Domain2>
9155 inline typed::multi_pw_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const;
9156 inline typed::multi_pw_aff<pair<Range, Range2>> pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const;
9157 template <typename Domain2>
9158 inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
9159 inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<pair<T1, T2>> &ma) const;
9160 template <typename Domain2>
9161 inline typed::pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const;
9162 inline typed::pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const;
9163 template <typename Domain2>
9164 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
9165 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const;
9166 inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> pw_multi_aff_list() const;
9167 inline typed::pw_multi_aff<pair<T1, T2>, Range> range_factor_domain() const;
9168 inline typed::pw_multi_aff<pair<T1, T2>, Range2> range_factor_range() const;
9169 template <typename Arg2>
9170 inline typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
9171 template <typename Arg2>
9172 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const;
9173 template <typename Arg2>
9174 inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const;
9175 template <typename Arg2>
9176 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
9177 template <typename Arg2>
9178 inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &pma2) const;
9179 inline typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>> range_product(const typed::pw_aff<pair<T1, T2>, Anonymous> &pma2) const;
9180 inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
9181 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::multi_val<pair<Range, Range2>> &mv) const;
9182 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(const typed::val<pair<Range, Range2>> &v) const;
9183 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale(long v) const;
9184 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const;
9185 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(const typed::val<pair<Range, Range2>> &v) const;
9186 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> scale_down(long v) const;
9187 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const;
9188 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const;
9189 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
9190 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
9191 inline typed::space<pair<T1, T2>, pair<Range, Range2>> space() const;
9192 inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
9193 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
9194 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const;
9195 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9196 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
9197 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9198 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9199 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::set<pair<T1, T2>> &set) const;
9200 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::space<pair<T1, T2>> &space) const;
9201 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const;
9202 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::basic_set<pair<T1, T2>> &set) const;
9203 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::point<pair<T1, T2>> &set) const;
9204 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> to_multi_pw_aff() const;
9205 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> to_union_pw_multi_aff() const;
9206 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
9207 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const;
9208 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const;
9209 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9210 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
9211 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9212 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const;
9215 template <typename Domain>
9216 struct pw_multi_aff_list<Domain> : public isl::pw_multi_aff_list {
9217 template <typename...>
9218 friend struct aff;
9219 template <typename...>
9220 friend struct aff_list;
9221 template <typename...>
9222 friend struct basic_map;
9223 template <typename...>
9224 friend struct basic_set;
9225 template <typename...>
9226 friend struct fixed_box;
9227 template <typename...>
9228 friend struct id;
9229 template <typename...>
9230 friend struct id_list;
9231 template <typename...>
9232 friend struct map;
9233 template <typename...>
9234 friend struct map_list;
9235 template <typename...>
9236 friend struct multi_aff;
9237 template <typename...>
9238 friend struct multi_id;
9239 template <typename...>
9240 friend struct multi_pw_aff;
9241 template <typename...>
9242 friend struct multi_union_pw_aff;
9243 template <typename...>
9244 friend struct multi_val;
9245 template <typename...>
9246 friend struct point;
9247 template <typename...>
9248 friend struct pw_aff;
9249 template <typename...>
9250 friend struct pw_aff_list;
9251 template <typename...>
9252 friend struct pw_multi_aff;
9253 template <typename...>
9254 friend struct pw_multi_aff_list;
9255 template <typename...>
9256 friend struct set;
9257 template <typename...>
9258 friend struct set_list;
9259 template <typename...>
9260 friend struct space;
9261 template <typename...>
9262 friend struct union_map;
9263 template <typename...>
9264 friend struct union_pw_aff;
9265 template <typename...>
9266 friend struct union_pw_aff_list;
9267 template <typename...>
9268 friend struct union_pw_multi_aff;
9269 template <typename...>
9270 friend struct union_set;
9271 template <typename...>
9272 friend struct union_set_list;
9273 template <typename...>
9274 friend struct val;
9275 template <typename...>
9276 friend struct val_list;
9278 pw_multi_aff_list() = default;
9279 template <typename Arg1,
9280 typename std::enable_if<
9281 std::is_base_of<Domain, Arg1>{},
9282 bool>::type = true>
9283 pw_multi_aff_list(const pw_multi_aff_list<Arg1> &obj) : isl::pw_multi_aff_list(obj) {}
9284 private:
9285 template <typename base,
9286 typename std::enable_if<
9287 std::is_same<base, isl::pw_multi_aff_list>{}, bool>::type = true>
9288 pw_multi_aff_list(const base &obj) : isl::pw_multi_aff_list(obj) {}
9289 public:
9290 static pw_multi_aff_list from(const isl::pw_multi_aff_list &obj) {
9291 return pw_multi_aff_list(obj);
9293 inline explicit pw_multi_aff_list(const isl::ctx &ctx, int n);
9294 inline explicit pw_multi_aff_list(const typed::pw_multi_aff<Domain> &el);
9295 inline explicit pw_multi_aff_list(const isl::ctx &ctx, const std::string &str);
9296 inline typed::pw_multi_aff_list<Domain> add(const typed::pw_multi_aff<Domain> &el) const;
9297 inline typed::pw_multi_aff_list<Domain> add(const typed::multi_aff<Domain> &el) const;
9298 inline typed::pw_multi_aff_list<Domain> add(const typed::pw_aff<Domain> &el) const;
9299 inline typed::pw_multi_aff<Domain> at(int index) const;
9300 inline typed::pw_multi_aff<Domain> get_at(int index) const = delete;
9301 inline typed::pw_multi_aff_list<Domain> drop(unsigned int first, unsigned int n) const;
9302 inline void foreach(const std::function<void(typed::pw_multi_aff<Domain>)> &fn) const;
9303 inline void foreach_scc(const std::function<bool(typed::pw_multi_aff<Domain>, typed::pw_multi_aff<Domain>)> &follows, const std::function<void(typed::pw_multi_aff_list<Domain>)> &fn) const;
9304 inline typed::pw_multi_aff_list<Domain> set_at(int index, const typed::pw_multi_aff<Anonymous> &el) const;
9307 template <typename Domain, typename Range>
9308 struct pw_multi_aff_list<Domain, Range> : public isl::pw_multi_aff_list {
9309 template <typename...>
9310 friend struct aff;
9311 template <typename...>
9312 friend struct aff_list;
9313 template <typename...>
9314 friend struct basic_map;
9315 template <typename...>
9316 friend struct basic_set;
9317 template <typename...>
9318 friend struct fixed_box;
9319 template <typename...>
9320 friend struct id;
9321 template <typename...>
9322 friend struct id_list;
9323 template <typename...>
9324 friend struct map;
9325 template <typename...>
9326 friend struct map_list;
9327 template <typename...>
9328 friend struct multi_aff;
9329 template <typename...>
9330 friend struct multi_id;
9331 template <typename...>
9332 friend struct multi_pw_aff;
9333 template <typename...>
9334 friend struct multi_union_pw_aff;
9335 template <typename...>
9336 friend struct multi_val;
9337 template <typename...>
9338 friend struct point;
9339 template <typename...>
9340 friend struct pw_aff;
9341 template <typename...>
9342 friend struct pw_aff_list;
9343 template <typename...>
9344 friend struct pw_multi_aff;
9345 template <typename...>
9346 friend struct pw_multi_aff_list;
9347 template <typename...>
9348 friend struct set;
9349 template <typename...>
9350 friend struct set_list;
9351 template <typename...>
9352 friend struct space;
9353 template <typename...>
9354 friend struct union_map;
9355 template <typename...>
9356 friend struct union_pw_aff;
9357 template <typename...>
9358 friend struct union_pw_aff_list;
9359 template <typename...>
9360 friend struct union_pw_multi_aff;
9361 template <typename...>
9362 friend struct union_set;
9363 template <typename...>
9364 friend struct union_set_list;
9365 template <typename...>
9366 friend struct val;
9367 template <typename...>
9368 friend struct val_list;
9370 pw_multi_aff_list() = default;
9371 template <typename Arg1, typename Arg2,
9372 typename std::enable_if<
9373 std::is_base_of<Domain, Arg1>{} &&
9374 std::is_base_of<Range, Arg2>{},
9375 bool>::type = true>
9376 pw_multi_aff_list(const pw_multi_aff_list<Arg1, Arg2> &obj) : isl::pw_multi_aff_list(obj) {}
9377 private:
9378 template <typename base,
9379 typename std::enable_if<
9380 std::is_same<base, isl::pw_multi_aff_list>{}, bool>::type = true>
9381 pw_multi_aff_list(const base &obj) : isl::pw_multi_aff_list(obj) {}
9382 public:
9383 static pw_multi_aff_list from(const isl::pw_multi_aff_list &obj) {
9384 return pw_multi_aff_list(obj);
9386 inline explicit pw_multi_aff_list(const isl::ctx &ctx, int n);
9387 inline explicit pw_multi_aff_list(const typed::pw_multi_aff<Domain, Range> &el);
9388 inline explicit pw_multi_aff_list(const isl::ctx &ctx, const std::string &str);
9389 inline typed::pw_multi_aff_list<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &el) const;
9390 inline typed::pw_multi_aff_list<Domain, Range> add(const typed::multi_aff<Domain, Range> &el) const;
9391 inline typed::pw_multi_aff_list<Domain, Range> add(const typed::pw_aff<Domain, Range> &el) const;
9392 inline typed::pw_multi_aff<Domain, Range> at(int index) const;
9393 inline typed::pw_multi_aff<Domain, Range> get_at(int index) const = delete;
9394 inline typed::pw_multi_aff_list<Domain, Range> drop(unsigned int first, unsigned int n) const;
9395 inline void foreach(const std::function<void(typed::pw_multi_aff<Domain, Range>)> &fn) const;
9396 inline void foreach_scc(const std::function<bool(typed::pw_multi_aff<Domain, Range>, typed::pw_multi_aff<Domain, Range>)> &follows, const std::function<void(typed::pw_multi_aff_list<Domain, Range>)> &fn) const;
9397 inline typed::pw_multi_aff_list<Domain, Range> set_at(int index, const typed::pw_multi_aff<Domain, Anonymous> &el) const;
9400 template <>
9401 struct set<> : public isl::set {
9402 template <typename...>
9403 friend struct aff;
9404 template <typename...>
9405 friend struct aff_list;
9406 template <typename...>
9407 friend struct basic_map;
9408 template <typename...>
9409 friend struct basic_set;
9410 template <typename...>
9411 friend struct fixed_box;
9412 template <typename...>
9413 friend struct id;
9414 template <typename...>
9415 friend struct id_list;
9416 template <typename...>
9417 friend struct map;
9418 template <typename...>
9419 friend struct map_list;
9420 template <typename...>
9421 friend struct multi_aff;
9422 template <typename...>
9423 friend struct multi_id;
9424 template <typename...>
9425 friend struct multi_pw_aff;
9426 template <typename...>
9427 friend struct multi_union_pw_aff;
9428 template <typename...>
9429 friend struct multi_val;
9430 template <typename...>
9431 friend struct point;
9432 template <typename...>
9433 friend struct pw_aff;
9434 template <typename...>
9435 friend struct pw_aff_list;
9436 template <typename...>
9437 friend struct pw_multi_aff;
9438 template <typename...>
9439 friend struct pw_multi_aff_list;
9440 template <typename...>
9441 friend struct set;
9442 template <typename...>
9443 friend struct set_list;
9444 template <typename...>
9445 friend struct space;
9446 template <typename...>
9447 friend struct union_map;
9448 template <typename...>
9449 friend struct union_pw_aff;
9450 template <typename...>
9451 friend struct union_pw_aff_list;
9452 template <typename...>
9453 friend struct union_pw_multi_aff;
9454 template <typename...>
9455 friend struct union_set;
9456 template <typename...>
9457 friend struct union_set_list;
9458 template <typename...>
9459 friend struct val;
9460 template <typename...>
9461 friend struct val_list;
9463 set() = default;
9464 private:
9465 template <typename base,
9466 typename std::enable_if<
9467 std::is_same<base, isl::set>{}, bool>::type = true>
9468 set(const base &obj) : isl::set(obj) {}
9469 public:
9470 static set from(const isl::set &obj) {
9471 return set(obj);
9473 inline /* implicit */ set(const typed::basic_set<> &bset);
9474 inline /* implicit */ set(const typed::point<> &pnt);
9475 inline explicit set(const isl::ctx &ctx, const std::string &str);
9476 inline typed::set<> apply(const typed::map<> &map) const = delete;
9477 inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
9478 inline typed::set<> apply(const typed::basic_map<> &map) const = delete;
9479 inline typed::pw_multi_aff<> as_pw_multi_aff() const = delete;
9480 inline typed::set<> as_set() const = delete;
9481 inline typed::set<> bind(const typed::multi_id<> &tuple) const = delete;
9482 inline typed::set<> coalesce() const;
9483 inline typed::set<> detect_equalities() const;
9484 inline typed::set<> drop_unused_params() const;
9485 inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
9486 inline typed::set<> extract_set(const typed::space<> &space) const;
9487 inline void foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const;
9488 inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
9489 inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
9490 inline typed::set<> gist(const typed::set<> &context) const;
9491 inline typed::union_set<> gist(const typed::union_set<> &context) const;
9492 inline typed::set<> gist(const typed::basic_set<> &context) const;
9493 inline typed::set<> gist(const typed::point<> &context) const;
9494 inline typed::set<> gist_params(const typed::set<> &context) const = delete;
9495 inline typed::set<> gist_params(const typed::basic_set<> &context) const = delete;
9496 inline typed::set<> gist_params(const typed::point<> &context) const = delete;
9497 inline typed::map<> identity() const = delete;
9498 inline typed::pw_aff<Anonymous> indicator_function() const;
9499 inline typed::map<> insert_domain(const typed::space<> &domain) const = delete;
9500 inline typed::set<> intersect(const typed::set<> &set2) const;
9501 inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
9502 inline typed::set<> intersect(const typed::basic_set<> &set2) const;
9503 inline typed::set<> intersect(const typed::point<> &set2) const;
9504 inline typed::set<> intersect_params(const typed::set<> &params) const = delete;
9505 inline typed::set<> intersect_params(const typed::basic_set<> &params) const = delete;
9506 inline typed::set<> intersect_params(const typed::point<> &params) const = delete;
9507 inline typed::fixed_box<> lattice_tile() const = delete;
9508 inline typed::fixed_box<> get_lattice_tile() const = delete;
9509 inline typed::set<> lexmax() const = delete;
9510 inline typed::pw_multi_aff<> lexmax_pw_multi_aff() const = delete;
9511 inline typed::set<> lexmin() const = delete;
9512 inline typed::pw_multi_aff<> lexmin_pw_multi_aff() const = delete;
9513 inline typed::set<> lower_bound(const typed::multi_pw_aff<> &lower) const = delete;
9514 inline typed::set<> lower_bound(const typed::multi_val<> &lower) const = delete;
9515 inline typed::multi_pw_aff<> max_multi_pw_aff() const = delete;
9516 inline typed::val<> max_val(const typed::aff<> &obj) const = delete;
9517 inline typed::multi_pw_aff<> min_multi_pw_aff() const = delete;
9518 inline typed::val<> min_val(const typed::aff<> &obj) const = delete;
9519 inline typed::pw_aff<Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
9520 inline typed::pw_aff<Anonymous> param_pw_aff_on_domain(const std::string &id) const;
9521 inline typed::set<> params() const = delete;
9522 inline typed::multi_val<> plain_multi_val_if_fixed() const = delete;
9523 inline typed::multi_val<> get_plain_multi_val_if_fixed() const = delete;
9524 inline typed::set<> preimage(const typed::multi_aff<> &ma) const = delete;
9525 inline typed::set<> preimage(const typed::multi_pw_aff<> &mpa) const = delete;
9526 inline typed::set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
9527 inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
9528 inline typed::set<> product(const typed::set<> &set2) const = delete;
9529 inline typed::set<> product(const typed::basic_set<> &set2) const = delete;
9530 inline typed::set<> product(const typed::point<> &set2) const = delete;
9531 inline typed::set<> project_out_all_params() const;
9532 inline typed::set<> project_out_param(const typed::id<Anonymous> &id) const;
9533 inline typed::set<> project_out_param(const std::string &id) const;
9534 inline typed::set<> project_out_param(const typed::id_list<Anonymous> &list) const;
9535 inline typed::pw_aff<Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
9536 inline typed::pw_aff<Anonymous> pw_aff_on_domain(long v) const;
9537 template <typename Domain>
9538 inline typed::pw_multi_aff<Domain> pw_multi_aff_on_domain(const typed::multi_val<Domain> &mv) const;
9539 inline typed::set_list<> set_list() const;
9540 inline typed::fixed_box<> simple_fixed_box_hull() const = delete;
9541 inline typed::fixed_box<> get_simple_fixed_box_hull() const = delete;
9542 inline typed::space<> space() const;
9543 inline typed::space<> get_space() const = delete;
9544 inline typed::val<> get_stride(int pos) const = delete;
9545 inline typed::set<> subtract(const typed::set<> &set2) const;
9546 inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
9547 inline typed::set<> subtract(const typed::basic_set<> &set2) const;
9548 inline typed::set<> subtract(const typed::point<> &set2) const;
9549 inline typed::union_set<> to_union_set() const;
9550 inline typed::map<> translation() const = delete;
9551 template <typename Domain>
9552 inline typed::set<Domain> unbind_params(const typed::multi_id<Domain> &tuple) const;
9553 inline typed::map<> unbind_params_insert_domain(const typed::multi_id<> &domain) const = delete;
9554 inline typed::set<> unite(const typed::set<> &set2) const;
9555 inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
9556 inline typed::set<> unite(const typed::basic_set<> &set2) const;
9557 inline typed::set<> unite(const typed::point<> &set2) const;
9558 static inline typed::set<> universe(const typed::space<> &space);
9559 inline typed::map<> unwrap() const = delete;
9560 inline typed::set<> upper_bound(const typed::multi_pw_aff<> &upper) const = delete;
9561 inline typed::set<> upper_bound(const typed::multi_val<> &upper) const = delete;
9562 inline typed::set<> wrapped_reverse() const = delete;
9565 template <typename Domain>
9566 struct set<Domain> : public isl::set {
9567 template <typename...>
9568 friend struct aff;
9569 template <typename...>
9570 friend struct aff_list;
9571 template <typename...>
9572 friend struct basic_map;
9573 template <typename...>
9574 friend struct basic_set;
9575 template <typename...>
9576 friend struct fixed_box;
9577 template <typename...>
9578 friend struct id;
9579 template <typename...>
9580 friend struct id_list;
9581 template <typename...>
9582 friend struct map;
9583 template <typename...>
9584 friend struct map_list;
9585 template <typename...>
9586 friend struct multi_aff;
9587 template <typename...>
9588 friend struct multi_id;
9589 template <typename...>
9590 friend struct multi_pw_aff;
9591 template <typename...>
9592 friend struct multi_union_pw_aff;
9593 template <typename...>
9594 friend struct multi_val;
9595 template <typename...>
9596 friend struct point;
9597 template <typename...>
9598 friend struct pw_aff;
9599 template <typename...>
9600 friend struct pw_aff_list;
9601 template <typename...>
9602 friend struct pw_multi_aff;
9603 template <typename...>
9604 friend struct pw_multi_aff_list;
9605 template <typename...>
9606 friend struct set;
9607 template <typename...>
9608 friend struct set_list;
9609 template <typename...>
9610 friend struct space;
9611 template <typename...>
9612 friend struct union_map;
9613 template <typename...>
9614 friend struct union_pw_aff;
9615 template <typename...>
9616 friend struct union_pw_aff_list;
9617 template <typename...>
9618 friend struct union_pw_multi_aff;
9619 template <typename...>
9620 friend struct union_set;
9621 template <typename...>
9622 friend struct union_set_list;
9623 template <typename...>
9624 friend struct val;
9625 template <typename...>
9626 friend struct val_list;
9628 set() = default;
9629 template <typename Arg1,
9630 typename std::enable_if<
9631 std::is_base_of<Domain, Arg1>{},
9632 bool>::type = true>
9633 set(const set<Arg1> &obj) : isl::set(obj) {}
9634 private:
9635 template <typename base,
9636 typename std::enable_if<
9637 std::is_same<base, isl::set>{}, bool>::type = true>
9638 set(const base &obj) : isl::set(obj) {}
9639 public:
9640 static set from(const isl::set &obj) {
9641 return set(obj);
9643 inline /* implicit */ set(const typed::basic_set<Domain> &bset);
9644 inline /* implicit */ set(const typed::point<Domain> &pnt);
9645 inline explicit set(const isl::ctx &ctx, const std::string &str);
9646 template <typename Range>
9647 inline typed::set<Range> apply(const typed::map<Domain, Range> &map) const;
9648 template <typename Range>
9649 inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
9650 template <typename Range>
9651 inline typed::set<Range> apply(const typed::basic_map<Domain, Range> &map) const;
9652 inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
9653 inline typed::set<Domain> as_set() const;
9654 inline typed::set<> bind(const typed::multi_id<Domain> &tuple) const;
9655 inline typed::set<Domain> coalesce() const;
9656 inline typed::set<Domain> detect_equalities() const;
9657 inline typed::set<Domain> drop_unused_params() const;
9658 inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
9659 inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
9660 inline void foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const;
9661 inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
9662 inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
9663 inline typed::set<Domain> gist(const typed::set<Domain> &context) const;
9664 inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
9665 inline typed::set<Domain> gist(const typed::basic_set<Domain> &context) const;
9666 inline typed::set<Domain> gist(const typed::point<Domain> &context) const;
9667 inline typed::set<Domain> gist_params(const typed::set<> &context) const;
9668 inline typed::set<Domain> gist_params(const typed::basic_set<> &context) const;
9669 inline typed::set<Domain> gist_params(const typed::point<> &context) const;
9670 inline typed::map<Domain, Domain> identity() const;
9671 inline typed::pw_aff<Domain, Anonymous> indicator_function() const;
9672 template <typename Arg1>
9673 inline typed::map<Arg1, Domain> insert_domain(const typed::space<Arg1> &domain) const;
9674 inline typed::set<Domain> intersect(const typed::set<Domain> &set2) const;
9675 inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
9676 inline typed::set<Domain> intersect(const typed::basic_set<Domain> &set2) const;
9677 inline typed::set<Domain> intersect(const typed::point<Domain> &set2) const;
9678 inline typed::set<Domain> intersect_params(const typed::set<> &params) const;
9679 inline typed::set<Domain> intersect_params(const typed::basic_set<> &params) const;
9680 inline typed::set<Domain> intersect_params(const typed::point<> &params) const;
9681 inline typed::fixed_box<Domain> lattice_tile() const;
9682 inline typed::fixed_box<Domain> get_lattice_tile() const = delete;
9683 inline typed::set<Domain> lexmax() const;
9684 inline typed::pw_multi_aff<Domain> lexmax_pw_multi_aff() const;
9685 inline typed::set<Domain> lexmin() const;
9686 inline typed::pw_multi_aff<Domain> lexmin_pw_multi_aff() const;
9687 inline typed::set<Domain> lower_bound(const typed::multi_pw_aff<Domain> &lower) const;
9688 inline typed::set<Domain> lower_bound(const typed::multi_val<Domain> &lower) const;
9689 inline typed::multi_pw_aff<Domain> max_multi_pw_aff() const;
9690 inline typed::val<Domain> max_val(const typed::aff<> &obj) const = delete;
9691 inline typed::multi_pw_aff<Domain> min_multi_pw_aff() const;
9692 inline typed::val<Domain> min_val(const typed::aff<> &obj) const = delete;
9693 inline typed::pw_aff<Domain, Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
9694 inline typed::pw_aff<Domain, Anonymous> param_pw_aff_on_domain(const std::string &id) const;
9695 inline typed::set<> params() const;
9696 inline typed::multi_val<Domain> plain_multi_val_if_fixed() const;
9697 inline typed::multi_val<Domain> get_plain_multi_val_if_fixed() const = delete;
9698 template <typename Domain2>
9699 inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
9700 template <typename Domain2>
9701 inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
9702 template <typename Domain2>
9703 inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
9704 template <typename Domain2>
9705 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
9706 template <typename Range>
9707 inline typed::set<pair<Domain, Range>> product(const typed::set<Range> &set2) const;
9708 template <typename Range>
9709 inline typed::set<pair<Domain, Range>> product(const typed::basic_set<Range> &set2) const;
9710 template <typename Range>
9711 inline typed::set<pair<Domain, Range>> product(const typed::point<Range> &set2) const;
9712 inline typed::set<Domain> project_out_all_params() const;
9713 inline typed::set<Domain> project_out_param(const typed::id<Anonymous> &id) const;
9714 inline typed::set<Domain> project_out_param(const std::string &id) const;
9715 inline typed::set<Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
9716 inline typed::pw_aff<Domain, Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
9717 inline typed::pw_aff<Domain, Anonymous> pw_aff_on_domain(long v) const;
9718 template <typename Range>
9719 inline typed::pw_multi_aff<Domain, Range> pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
9720 inline typed::set_list<Domain> set_list() const;
9721 inline typed::fixed_box<Domain> simple_fixed_box_hull() const;
9722 inline typed::fixed_box<Domain> get_simple_fixed_box_hull() const = delete;
9723 inline typed::space<Domain> space() const;
9724 inline typed::space<Domain> get_space() const = delete;
9725 inline typed::val<Domain> get_stride(int pos) const = delete;
9726 inline typed::set<Domain> subtract(const typed::set<Domain> &set2) const;
9727 inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
9728 inline typed::set<Domain> subtract(const typed::basic_set<Domain> &set2) const;
9729 inline typed::set<Domain> subtract(const typed::point<Domain> &set2) const;
9730 inline typed::union_set<Domain> to_union_set() const;
9731 inline typed::map<Domain, Domain> translation() const;
9732 inline typed::set<Domain> unbind_params(const typed::multi_id<> &tuple) const = delete;
9733 template <typename Arg1>
9734 inline typed::map<Arg1, Domain> unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const;
9735 inline typed::set<Domain> unite(const typed::set<Domain> &set2) const;
9736 inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
9737 inline typed::set<Domain> unite(const typed::basic_set<Domain> &set2) const;
9738 inline typed::set<Domain> unite(const typed::point<Domain> &set2) const;
9739 static inline typed::set<Domain> universe(const typed::space<Domain> &space);
9740 inline typed::map<Domain> unwrap() const = delete;
9741 inline typed::set<Domain> upper_bound(const typed::multi_pw_aff<Domain> &upper) const;
9742 inline typed::set<Domain> upper_bound(const typed::multi_val<Domain> &upper) const;
9743 inline typed::set<Domain> wrapped_reverse() const = delete;
9746 template <typename Domain, typename Range>
9747 struct set<pair<Domain, Range>> : public isl::set {
9748 template <typename...>
9749 friend struct aff;
9750 template <typename...>
9751 friend struct aff_list;
9752 template <typename...>
9753 friend struct basic_map;
9754 template <typename...>
9755 friend struct basic_set;
9756 template <typename...>
9757 friend struct fixed_box;
9758 template <typename...>
9759 friend struct id;
9760 template <typename...>
9761 friend struct id_list;
9762 template <typename...>
9763 friend struct map;
9764 template <typename...>
9765 friend struct map_list;
9766 template <typename...>
9767 friend struct multi_aff;
9768 template <typename...>
9769 friend struct multi_id;
9770 template <typename...>
9771 friend struct multi_pw_aff;
9772 template <typename...>
9773 friend struct multi_union_pw_aff;
9774 template <typename...>
9775 friend struct multi_val;
9776 template <typename...>
9777 friend struct point;
9778 template <typename...>
9779 friend struct pw_aff;
9780 template <typename...>
9781 friend struct pw_aff_list;
9782 template <typename...>
9783 friend struct pw_multi_aff;
9784 template <typename...>
9785 friend struct pw_multi_aff_list;
9786 template <typename...>
9787 friend struct set;
9788 template <typename...>
9789 friend struct set_list;
9790 template <typename...>
9791 friend struct space;
9792 template <typename...>
9793 friend struct union_map;
9794 template <typename...>
9795 friend struct union_pw_aff;
9796 template <typename...>
9797 friend struct union_pw_aff_list;
9798 template <typename...>
9799 friend struct union_pw_multi_aff;
9800 template <typename...>
9801 friend struct union_set;
9802 template <typename...>
9803 friend struct union_set_list;
9804 template <typename...>
9805 friend struct val;
9806 template <typename...>
9807 friend struct val_list;
9809 set() = default;
9810 template <typename Arg1, typename Arg2,
9811 typename std::enable_if<
9812 std::is_base_of<Domain, Arg1>{} &&
9813 std::is_base_of<Range, Arg2>{},
9814 bool>::type = true>
9815 set(const set<pair<Arg1, Arg2>> &obj) : isl::set(obj) {}
9816 private:
9817 template <typename base,
9818 typename std::enable_if<
9819 std::is_same<base, isl::set>{}, bool>::type = true>
9820 set(const base &obj) : isl::set(obj) {}
9821 public:
9822 static set from(const isl::set &obj) {
9823 return set(obj);
9825 inline /* implicit */ set(const typed::basic_set<pair<Domain, Range>> &bset);
9826 inline /* implicit */ set(const typed::point<pair<Domain, Range>> &pnt);
9827 inline explicit set(const isl::ctx &ctx, const std::string &str);
9828 template <typename Arg2>
9829 inline typed::set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &map) const;
9830 template <typename Arg2>
9831 inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
9832 template <typename Arg2>
9833 inline typed::set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &map) const;
9834 inline typed::pw_multi_aff<pair<Domain, Range>> as_pw_multi_aff() const;
9835 inline typed::set<pair<Domain, Range>> as_set() const;
9836 inline typed::set<> bind(const typed::multi_id<pair<Domain, Range>> &tuple) const;
9837 inline typed::set<pair<Domain, Range>> coalesce() const;
9838 inline typed::set<pair<Domain, Range>> detect_equalities() const;
9839 inline typed::set<pair<Domain, Range>> drop_unused_params() const;
9840 inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
9841 inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
9842 inline void foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const;
9843 inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
9844 inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
9845 inline typed::set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
9846 inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
9847 inline typed::set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
9848 inline typed::set<pair<Domain, Range>> gist(const typed::point<pair<Domain, Range>> &context) const;
9849 inline typed::set<pair<Domain, Range>> gist_params(const typed::set<> &context) const;
9850 inline typed::set<pair<Domain, Range>> gist_params(const typed::basic_set<> &context) const;
9851 inline typed::set<pair<Domain, Range>> gist_params(const typed::point<> &context) const;
9852 inline typed::map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
9853 inline typed::pw_aff<pair<Domain, Range>, Anonymous> indicator_function() const;
9854 template <typename Arg2>
9855 inline typed::map<Arg2, pair<Domain, Range>> insert_domain(const typed::space<Arg2> &domain) const;
9856 inline typed::set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &set2) const;
9857 inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
9858 inline typed::set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &set2) const;
9859 inline typed::set<pair<Domain, Range>> intersect(const typed::point<pair<Domain, Range>> &set2) const;
9860 inline typed::set<pair<Domain, Range>> intersect_params(const typed::set<> &params) const;
9861 inline typed::set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &params) const;
9862 inline typed::set<pair<Domain, Range>> intersect_params(const typed::point<> &params) const;
9863 inline typed::fixed_box<pair<Domain, Range>> lattice_tile() const;
9864 inline typed::fixed_box<pair<Domain, Range>> get_lattice_tile() const = delete;
9865 inline typed::set<pair<Domain, Range>> lexmax() const;
9866 inline typed::pw_multi_aff<pair<Domain, Range>> lexmax_pw_multi_aff() const;
9867 inline typed::set<pair<Domain, Range>> lexmin() const;
9868 inline typed::pw_multi_aff<pair<Domain, Range>> lexmin_pw_multi_aff() const;
9869 inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const;
9870 inline typed::set<pair<Domain, Range>> lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const;
9871 inline typed::multi_pw_aff<pair<Domain, Range>> max_multi_pw_aff() const;
9872 inline typed::val<pair<Domain, Range>> max_val(const typed::aff<> &obj) const = delete;
9873 inline typed::multi_pw_aff<pair<Domain, Range>> min_multi_pw_aff() const;
9874 inline typed::val<pair<Domain, Range>> min_val(const typed::aff<> &obj) const = delete;
9875 inline typed::pw_aff<pair<Domain, Range>, Anonymous> param_pw_aff_on_domain(const typed::id<Anonymous> &id) const;
9876 inline typed::pw_aff<pair<Domain, Range>, Anonymous> param_pw_aff_on_domain(const std::string &id) const;
9877 inline typed::set<> params() const;
9878 inline typed::multi_val<pair<Domain, Range>> plain_multi_val_if_fixed() const;
9879 inline typed::multi_val<pair<Domain, Range>> get_plain_multi_val_if_fixed() const = delete;
9880 template <typename Domain2>
9881 inline typed::set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
9882 template <typename Domain2>
9883 inline typed::set<Domain2> preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
9884 template <typename Domain2>
9885 inline typed::set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
9886 template <typename Domain2>
9887 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
9888 template <typename Arg2>
9889 inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::set<Arg2> &set2) const;
9890 template <typename Arg2>
9891 inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::basic_set<Arg2> &set2) const;
9892 template <typename Arg2>
9893 inline typed::set<pair<pair<Domain, Range>, Arg2>> product(const typed::point<Arg2> &set2) const;
9894 inline typed::set<pair<Domain, Range>> project_out_all_params() const;
9895 inline typed::set<pair<Domain, Range>> project_out_param(const typed::id<Anonymous> &id) const;
9896 inline typed::set<pair<Domain, Range>> project_out_param(const std::string &id) const;
9897 inline typed::set<pair<Domain, Range>> project_out_param(const typed::id_list<Anonymous> &list) const;
9898 inline typed::pw_aff<pair<Domain, Range>, Anonymous> pw_aff_on_domain(const typed::val<Anonymous> &v) const;
9899 inline typed::pw_aff<pair<Domain, Range>, Anonymous> pw_aff_on_domain(long v) const;
9900 template <typename Arg2>
9901 inline typed::pw_multi_aff<pair<Domain, Range>, Arg2> pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
9902 inline typed::set_list<pair<Domain, Range>> set_list() const;
9903 inline typed::fixed_box<pair<Domain, Range>> simple_fixed_box_hull() const;
9904 inline typed::fixed_box<pair<Domain, Range>> get_simple_fixed_box_hull() const = delete;
9905 inline typed::space<pair<Domain, Range>> space() const;
9906 inline typed::space<pair<Domain, Range>> get_space() const = delete;
9907 inline typed::val<pair<Domain, Range>> get_stride(int pos) const = delete;
9908 inline typed::set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &set2) const;
9909 inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
9910 inline typed::set<pair<Domain, Range>> subtract(const typed::basic_set<pair<Domain, Range>> &set2) const;
9911 inline typed::set<pair<Domain, Range>> subtract(const typed::point<pair<Domain, Range>> &set2) const;
9912 inline typed::union_set<pair<Domain, Range>> to_union_set() const;
9913 inline typed::map<pair<Domain, Range>, pair<Domain, Range>> translation() const;
9914 inline typed::set<pair<Domain, Range>> unbind_params(const typed::multi_id<> &tuple) const = delete;
9915 template <typename Arg2>
9916 inline typed::map<Arg2, pair<Domain, Range>> unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const;
9917 inline typed::set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &set2) const;
9918 inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
9919 inline typed::set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &set2) const;
9920 inline typed::set<pair<Domain, Range>> unite(const typed::point<pair<Domain, Range>> &set2) const;
9921 static inline typed::set<pair<Domain, Range>> universe(const typed::space<pair<Domain, Range>> &space);
9922 inline typed::map<Domain, Range> unwrap() const;
9923 inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const;
9924 inline typed::set<pair<Domain, Range>> upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const;
9925 inline typed::set<pair<Range, Domain>> wrapped_reverse() const;
9928 template <>
9929 struct set_list<> : public isl::set_list {
9930 template <typename...>
9931 friend struct aff;
9932 template <typename...>
9933 friend struct aff_list;
9934 template <typename...>
9935 friend struct basic_map;
9936 template <typename...>
9937 friend struct basic_set;
9938 template <typename...>
9939 friend struct fixed_box;
9940 template <typename...>
9941 friend struct id;
9942 template <typename...>
9943 friend struct id_list;
9944 template <typename...>
9945 friend struct map;
9946 template <typename...>
9947 friend struct map_list;
9948 template <typename...>
9949 friend struct multi_aff;
9950 template <typename...>
9951 friend struct multi_id;
9952 template <typename...>
9953 friend struct multi_pw_aff;
9954 template <typename...>
9955 friend struct multi_union_pw_aff;
9956 template <typename...>
9957 friend struct multi_val;
9958 template <typename...>
9959 friend struct point;
9960 template <typename...>
9961 friend struct pw_aff;
9962 template <typename...>
9963 friend struct pw_aff_list;
9964 template <typename...>
9965 friend struct pw_multi_aff;
9966 template <typename...>
9967 friend struct pw_multi_aff_list;
9968 template <typename...>
9969 friend struct set;
9970 template <typename...>
9971 friend struct set_list;
9972 template <typename...>
9973 friend struct space;
9974 template <typename...>
9975 friend struct union_map;
9976 template <typename...>
9977 friend struct union_pw_aff;
9978 template <typename...>
9979 friend struct union_pw_aff_list;
9980 template <typename...>
9981 friend struct union_pw_multi_aff;
9982 template <typename...>
9983 friend struct union_set;
9984 template <typename...>
9985 friend struct union_set_list;
9986 template <typename...>
9987 friend struct val;
9988 template <typename...>
9989 friend struct val_list;
9991 set_list() = default;
9992 private:
9993 template <typename base,
9994 typename std::enable_if<
9995 std::is_same<base, isl::set_list>{}, bool>::type = true>
9996 set_list(const base &obj) : isl::set_list(obj) {}
9997 public:
9998 static set_list from(const isl::set_list &obj) {
9999 return set_list(obj);
10001 inline explicit set_list(const isl::ctx &ctx, int n);
10002 inline explicit set_list(const typed::set<> &el);
10003 inline explicit set_list(const isl::ctx &ctx, const std::string &str);
10004 inline typed::set_list<> add(const typed::set<> &el) const;
10005 inline typed::set_list<> add(const typed::basic_set<> &el) const;
10006 inline typed::set_list<> add(const typed::point<> &el) const;
10007 inline typed::set<> at(int index) const = delete;
10008 inline typed::set<> get_at(int index) const = delete;
10009 inline typed::set_list<> drop(unsigned int first, unsigned int n) const;
10010 inline void foreach(const std::function<void(typed::set<>)> &fn) const;
10011 inline void foreach_scc(const std::function<bool(typed::set<>, typed::set<>)> &follows, const std::function<void(typed::set_list<>)> &fn) const;
10012 inline typed::set_list<> set_at(int index, const typed::set<> &el) const = delete;
10015 template <typename Domain>
10016 struct set_list<Domain> : public isl::set_list {
10017 template <typename...>
10018 friend struct aff;
10019 template <typename...>
10020 friend struct aff_list;
10021 template <typename...>
10022 friend struct basic_map;
10023 template <typename...>
10024 friend struct basic_set;
10025 template <typename...>
10026 friend struct fixed_box;
10027 template <typename...>
10028 friend struct id;
10029 template <typename...>
10030 friend struct id_list;
10031 template <typename...>
10032 friend struct map;
10033 template <typename...>
10034 friend struct map_list;
10035 template <typename...>
10036 friend struct multi_aff;
10037 template <typename...>
10038 friend struct multi_id;
10039 template <typename...>
10040 friend struct multi_pw_aff;
10041 template <typename...>
10042 friend struct multi_union_pw_aff;
10043 template <typename...>
10044 friend struct multi_val;
10045 template <typename...>
10046 friend struct point;
10047 template <typename...>
10048 friend struct pw_aff;
10049 template <typename...>
10050 friend struct pw_aff_list;
10051 template <typename...>
10052 friend struct pw_multi_aff;
10053 template <typename...>
10054 friend struct pw_multi_aff_list;
10055 template <typename...>
10056 friend struct set;
10057 template <typename...>
10058 friend struct set_list;
10059 template <typename...>
10060 friend struct space;
10061 template <typename...>
10062 friend struct union_map;
10063 template <typename...>
10064 friend struct union_pw_aff;
10065 template <typename...>
10066 friend struct union_pw_aff_list;
10067 template <typename...>
10068 friend struct union_pw_multi_aff;
10069 template <typename...>
10070 friend struct union_set;
10071 template <typename...>
10072 friend struct union_set_list;
10073 template <typename...>
10074 friend struct val;
10075 template <typename...>
10076 friend struct val_list;
10078 set_list() = default;
10079 template <typename Arg1,
10080 typename std::enable_if<
10081 std::is_base_of<Domain, Arg1>{},
10082 bool>::type = true>
10083 set_list(const set_list<Arg1> &obj) : isl::set_list(obj) {}
10084 private:
10085 template <typename base,
10086 typename std::enable_if<
10087 std::is_same<base, isl::set_list>{}, bool>::type = true>
10088 set_list(const base &obj) : isl::set_list(obj) {}
10089 public:
10090 static set_list from(const isl::set_list &obj) {
10091 return set_list(obj);
10093 inline explicit set_list(const isl::ctx &ctx, int n);
10094 inline explicit set_list(const typed::set<Domain> &el);
10095 inline explicit set_list(const isl::ctx &ctx, const std::string &str);
10096 inline typed::set_list<Domain> add(const typed::set<Domain> &el) const;
10097 inline typed::set_list<Domain> add(const typed::basic_set<Domain> &el) const;
10098 inline typed::set_list<Domain> add(const typed::point<Domain> &el) const;
10099 inline typed::set<Domain> at(int index) const;
10100 inline typed::set<Domain> get_at(int index) const = delete;
10101 inline typed::set_list<Domain> drop(unsigned int first, unsigned int n) const;
10102 inline void foreach(const std::function<void(typed::set<Domain>)> &fn) const;
10103 inline void foreach_scc(const std::function<bool(typed::set<Domain>, typed::set<Domain>)> &follows, const std::function<void(typed::set_list<Domain>)> &fn) const;
10104 inline typed::set_list<Domain> set_at(int index, const typed::set<Anonymous> &el) const;
10107 template <>
10108 struct space<> : public isl::space {
10109 template <typename...>
10110 friend struct aff;
10111 template <typename...>
10112 friend struct aff_list;
10113 template <typename...>
10114 friend struct basic_map;
10115 template <typename...>
10116 friend struct basic_set;
10117 template <typename...>
10118 friend struct fixed_box;
10119 template <typename...>
10120 friend struct id;
10121 template <typename...>
10122 friend struct id_list;
10123 template <typename...>
10124 friend struct map;
10125 template <typename...>
10126 friend struct map_list;
10127 template <typename...>
10128 friend struct multi_aff;
10129 template <typename...>
10130 friend struct multi_id;
10131 template <typename...>
10132 friend struct multi_pw_aff;
10133 template <typename...>
10134 friend struct multi_union_pw_aff;
10135 template <typename...>
10136 friend struct multi_val;
10137 template <typename...>
10138 friend struct point;
10139 template <typename...>
10140 friend struct pw_aff;
10141 template <typename...>
10142 friend struct pw_aff_list;
10143 template <typename...>
10144 friend struct pw_multi_aff;
10145 template <typename...>
10146 friend struct pw_multi_aff_list;
10147 template <typename...>
10148 friend struct set;
10149 template <typename...>
10150 friend struct set_list;
10151 template <typename...>
10152 friend struct space;
10153 template <typename...>
10154 friend struct union_map;
10155 template <typename...>
10156 friend struct union_pw_aff;
10157 template <typename...>
10158 friend struct union_pw_aff_list;
10159 template <typename...>
10160 friend struct union_pw_multi_aff;
10161 template <typename...>
10162 friend struct union_set;
10163 template <typename...>
10164 friend struct union_set_list;
10165 template <typename...>
10166 friend struct val;
10167 template <typename...>
10168 friend struct val_list;
10170 space() = default;
10171 private:
10172 template <typename base,
10173 typename std::enable_if<
10174 std::is_same<base, isl::space>{}, bool>::type = true>
10175 space(const base &obj) : isl::space(obj) {}
10176 public:
10177 static space from(const isl::space &obj) {
10178 return space(obj);
10180 inline explicit space(const isl::ctx &ctx, const std::string &str);
10181 template <typename Domain>
10182 inline typed::space<Domain> add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const;
10183 template <typename Domain>
10184 inline typed::space<Domain> add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
10185 inline typed::space<> add_param(const typed::id<Anonymous> &id) const;
10186 inline typed::space<> add_param(const std::string &id) const;
10187 template <typename Domain>
10188 inline typed::space<Domain> add_unnamed_tuple(unsigned int dim) const;
10189 inline typed::space<> curry() const = delete;
10190 inline typed::space<> domain() const = delete;
10191 inline typed::multi_aff<> domain_map_multi_aff() const = delete;
10192 inline typed::pw_multi_aff<> domain_map_pw_multi_aff() const = delete;
10193 inline typed::space<> domain_reverse() const = delete;
10194 inline typed::id<> get_domain_tuple_id() const = delete;
10195 inline typed::space<> drop_all_params() const;
10196 inline typed::space<> flatten_domain() const = delete;
10197 inline typed::space<> flatten_range() const = delete;
10198 inline typed::multi_aff<> identity_multi_aff_on_domain() const = delete;
10199 inline typed::multi_pw_aff<> identity_multi_pw_aff_on_domain() const = delete;
10200 inline typed::pw_multi_aff<> identity_pw_multi_aff_on_domain() const = delete;
10201 inline typed::space<> map_from_set() const = delete;
10202 inline typed::multi_aff<> multi_aff(const typed::aff_list<> &list) const = delete;
10203 template <typename Domain>
10204 inline typed::multi_aff<Domain> multi_aff_on_domain(const typed::multi_val<Domain> &mv) const;
10205 inline typed::multi_id<> multi_id(const typed::id_list<> &list) const = delete;
10206 inline typed::multi_pw_aff<> multi_pw_aff(const typed::pw_aff_list<> &list) const = delete;
10207 inline typed::multi_union_pw_aff<> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete;
10208 inline typed::multi_val<> multi_val(const typed::val_list<> &list) const = delete;
10209 inline typed::aff<Anonymous> param_aff_on_domain(const typed::id<Anonymous> &id) const;
10210 inline typed::aff<Anonymous> param_aff_on_domain(const std::string &id) const;
10211 inline typed::space<> params() const = delete;
10212 inline typed::space<> product(const typed::space<> &right) const = delete;
10213 inline typed::space<> range() const = delete;
10214 inline typed::multi_aff<> range_map_multi_aff() const = delete;
10215 inline typed::pw_multi_aff<> range_map_pw_multi_aff() const = delete;
10216 inline typed::space<> range_reverse() const = delete;
10217 inline typed::id<> get_range_tuple_id() const = delete;
10218 inline typed::space<> reverse() const = delete;
10219 inline typed::space<> set_domain_tuple(const typed::id<> &id) const = delete;
10220 inline typed::space<> set_domain_tuple(const std::string &id) const = delete;
10221 inline typed::space<> set_range_tuple(const typed::id<> &id) const = delete;
10222 inline typed::space<> set_range_tuple(const std::string &id) const = delete;
10223 inline typed::space<> uncurry() const = delete;
10224 static inline typed::space<> unit(const isl::ctx &ctx);
10225 inline typed::map<> universe_map() const = delete;
10226 inline typed::set<> universe_set() const;
10227 inline typed::space<> unwrap() const = delete;
10228 inline typed::space<> wrap() const = delete;
10229 inline typed::space<> wrapped_reverse() const = delete;
10230 inline typed::aff<> zero_aff_on_domain() const = delete;
10231 inline typed::multi_aff<> zero_multi_aff() const = delete;
10232 inline typed::multi_pw_aff<> zero_multi_pw_aff() const = delete;
10233 inline typed::multi_union_pw_aff<> zero_multi_union_pw_aff() const = delete;
10234 inline typed::multi_val<> zero_multi_val() const = delete;
10237 template <typename Domain>
10238 struct space<Domain> : public isl::space {
10239 template <typename...>
10240 friend struct aff;
10241 template <typename...>
10242 friend struct aff_list;
10243 template <typename...>
10244 friend struct basic_map;
10245 template <typename...>
10246 friend struct basic_set;
10247 template <typename...>
10248 friend struct fixed_box;
10249 template <typename...>
10250 friend struct id;
10251 template <typename...>
10252 friend struct id_list;
10253 template <typename...>
10254 friend struct map;
10255 template <typename...>
10256 friend struct map_list;
10257 template <typename...>
10258 friend struct multi_aff;
10259 template <typename...>
10260 friend struct multi_id;
10261 template <typename...>
10262 friend struct multi_pw_aff;
10263 template <typename...>
10264 friend struct multi_union_pw_aff;
10265 template <typename...>
10266 friend struct multi_val;
10267 template <typename...>
10268 friend struct point;
10269 template <typename...>
10270 friend struct pw_aff;
10271 template <typename...>
10272 friend struct pw_aff_list;
10273 template <typename...>
10274 friend struct pw_multi_aff;
10275 template <typename...>
10276 friend struct pw_multi_aff_list;
10277 template <typename...>
10278 friend struct set;
10279 template <typename...>
10280 friend struct set_list;
10281 template <typename...>
10282 friend struct space;
10283 template <typename...>
10284 friend struct union_map;
10285 template <typename...>
10286 friend struct union_pw_aff;
10287 template <typename...>
10288 friend struct union_pw_aff_list;
10289 template <typename...>
10290 friend struct union_pw_multi_aff;
10291 template <typename...>
10292 friend struct union_set;
10293 template <typename...>
10294 friend struct union_set_list;
10295 template <typename...>
10296 friend struct val;
10297 template <typename...>
10298 friend struct val_list;
10300 space() = default;
10301 template <typename Arg1,
10302 typename std::enable_if<
10303 std::is_base_of<Domain, Arg1>{},
10304 bool>::type = true>
10305 space(const space<Arg1> &obj) : isl::space(obj) {}
10306 private:
10307 template <typename base,
10308 typename std::enable_if<
10309 std::is_same<base, isl::space>{}, bool>::type = true>
10310 space(const base &obj) : isl::space(obj) {}
10311 public:
10312 static space from(const isl::space &obj) {
10313 return space(obj);
10315 inline explicit space(const isl::ctx &ctx, const std::string &str);
10316 template <typename Range>
10317 inline typed::space<Domain, Range> add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const;
10318 template <typename Range>
10319 inline typed::space<Domain, Range> add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
10320 inline typed::space<Domain> add_param(const typed::id<Anonymous> &id) const;
10321 inline typed::space<Domain> add_param(const std::string &id) const;
10322 template <typename Range>
10323 inline typed::space<Domain, Range> add_unnamed_tuple(unsigned int dim) const;
10324 inline typed::space<Domain> curry() const = delete;
10325 inline typed::space<> domain() const;
10326 inline typed::multi_aff<Domain> domain_map_multi_aff() const = delete;
10327 inline typed::pw_multi_aff<Domain> domain_map_pw_multi_aff() const = delete;
10328 inline typed::space<Domain> domain_reverse() const = delete;
10329 inline typed::id<Domain> get_domain_tuple_id() const = delete;
10330 inline typed::space<Domain> drop_all_params() const;
10331 inline typed::space<Domain> flatten_domain() const = delete;
10332 inline typed::space<Domain> flatten_range() const = delete;
10333 inline typed::multi_aff<Domain, Domain> identity_multi_aff_on_domain() const;
10334 inline typed::multi_pw_aff<Domain, Domain> identity_multi_pw_aff_on_domain() const;
10335 inline typed::pw_multi_aff<Domain, Domain> identity_pw_multi_aff_on_domain() const;
10336 inline typed::space<Domain, Domain> map_from_set() const;
10337 inline typed::multi_aff<Domain> multi_aff(const typed::aff_list<Anonymous> &list) const;
10338 template <typename Range>
10339 inline typed::multi_aff<Domain, Range> multi_aff_on_domain(const typed::multi_val<Range> &mv) const;
10340 inline typed::multi_id<Domain> multi_id(const typed::id_list<Anonymous> &list) const;
10341 inline typed::multi_pw_aff<Domain> multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const;
10342 inline typed::multi_union_pw_aff<Domain> multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const;
10343 template <typename Arg1>
10344 inline typed::multi_union_pw_aff<Arg1, Domain> multi_union_pw_aff(const typed::union_pw_aff_list<Arg1, Anonymous> &list) const;
10345 inline typed::multi_val<Domain> multi_val(const typed::val_list<Anonymous> &list) const;
10346 inline typed::aff<Domain, Anonymous> param_aff_on_domain(const typed::id<Anonymous> &id) const;
10347 inline typed::aff<Domain, Anonymous> param_aff_on_domain(const std::string &id) const;
10348 inline typed::space<> params() const;
10349 template <typename Range>
10350 inline typed::space<pair<Domain, Range>> product(const typed::space<Range> &right) const;
10351 inline typed::space<Domain> range() const = delete;
10352 inline typed::multi_aff<Domain> range_map_multi_aff() const = delete;
10353 inline typed::pw_multi_aff<Domain> range_map_pw_multi_aff() const = delete;
10354 inline typed::space<Domain> range_reverse() const = delete;
10355 inline typed::id<Domain> get_range_tuple_id() const = delete;
10356 inline typed::space<Domain> reverse() const = delete;
10357 inline typed::space<Domain> set_domain_tuple(const typed::id<> &id) const = delete;
10358 inline typed::space<Domain> set_domain_tuple(const std::string &id) const = delete;
10359 template <typename Domain2>
10360 inline typed::space<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
10361 template <typename Domain2>
10362 inline typed::space<Domain2> set_range_tuple(const std::string &id) const;
10363 inline typed::space<Domain> uncurry() const = delete;
10364 static inline typed::space<Domain> unit(const isl::ctx &ctx) = delete;
10365 inline typed::map<Domain> universe_map() const = delete;
10366 inline typed::set<Domain> universe_set() const;
10367 inline typed::space<Domain> unwrap() const = delete;
10368 inline typed::space<Domain> wrap() const = delete;
10369 inline typed::space<Domain> wrapped_reverse() const = delete;
10370 inline typed::aff<Domain, Anonymous> zero_aff_on_domain() const;
10371 inline typed::multi_aff<Domain> zero_multi_aff() const;
10372 inline typed::multi_pw_aff<Domain> zero_multi_pw_aff() const;
10373 inline typed::multi_union_pw_aff<Domain> zero_multi_union_pw_aff() const;
10374 inline typed::multi_val<Domain> zero_multi_val() const;
10377 template <typename Domain, typename Range>
10378 struct space<Domain, Range> : public isl::space {
10379 template <typename...>
10380 friend struct aff;
10381 template <typename...>
10382 friend struct aff_list;
10383 template <typename...>
10384 friend struct basic_map;
10385 template <typename...>
10386 friend struct basic_set;
10387 template <typename...>
10388 friend struct fixed_box;
10389 template <typename...>
10390 friend struct id;
10391 template <typename...>
10392 friend struct id_list;
10393 template <typename...>
10394 friend struct map;
10395 template <typename...>
10396 friend struct map_list;
10397 template <typename...>
10398 friend struct multi_aff;
10399 template <typename...>
10400 friend struct multi_id;
10401 template <typename...>
10402 friend struct multi_pw_aff;
10403 template <typename...>
10404 friend struct multi_union_pw_aff;
10405 template <typename...>
10406 friend struct multi_val;
10407 template <typename...>
10408 friend struct point;
10409 template <typename...>
10410 friend struct pw_aff;
10411 template <typename...>
10412 friend struct pw_aff_list;
10413 template <typename...>
10414 friend struct pw_multi_aff;
10415 template <typename...>
10416 friend struct pw_multi_aff_list;
10417 template <typename...>
10418 friend struct set;
10419 template <typename...>
10420 friend struct set_list;
10421 template <typename...>
10422 friend struct space;
10423 template <typename...>
10424 friend struct union_map;
10425 template <typename...>
10426 friend struct union_pw_aff;
10427 template <typename...>
10428 friend struct union_pw_aff_list;
10429 template <typename...>
10430 friend struct union_pw_multi_aff;
10431 template <typename...>
10432 friend struct union_set;
10433 template <typename...>
10434 friend struct union_set_list;
10435 template <typename...>
10436 friend struct val;
10437 template <typename...>
10438 friend struct val_list;
10440 space() = default;
10441 template <typename Arg1, typename Arg2,
10442 typename std::enable_if<
10443 std::is_base_of<Domain, Arg1>{} &&
10444 std::is_base_of<Range, Arg2>{},
10445 bool>::type = true>
10446 space(const space<Arg1, Arg2> &obj) : isl::space(obj) {}
10447 private:
10448 template <typename base,
10449 typename std::enable_if<
10450 std::is_same<base, isl::space>{}, bool>::type = true>
10451 space(const base &obj) : isl::space(obj) {}
10452 public:
10453 static space from(const isl::space &obj) {
10454 return space(obj);
10456 inline explicit space(const isl::ctx &ctx, const std::string &str);
10457 inline typed::space<Domain, Range> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
10458 inline typed::space<Domain, Range> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
10459 inline typed::space<Domain, Range> add_param(const typed::id<Anonymous> &id) const;
10460 inline typed::space<Domain, Range> add_param(const std::string &id) const;
10461 inline typed::space<Domain, Range> add_unnamed_tuple(unsigned int dim) const = delete;
10462 inline typed::space<Domain, Range> curry() const = delete;
10463 inline typed::space<Domain> domain() const;
10464 inline typed::multi_aff<pair<Domain, Range>, Domain> domain_map_multi_aff() const;
10465 inline typed::pw_multi_aff<pair<Domain, Range>, Domain> domain_map_pw_multi_aff() const;
10466 inline typed::space<Domain, Range> domain_reverse() const = delete;
10467 inline typed::id<Domain, Range> get_domain_tuple_id() const = delete;
10468 inline typed::space<Domain, Range> drop_all_params() const;
10469 inline typed::space<Domain, Range> flatten_domain() const = delete;
10470 inline typed::space<Domain, Range> flatten_range() const = delete;
10471 inline typed::multi_aff<Domain, Range> identity_multi_aff_on_domain() const = delete;
10472 inline typed::multi_pw_aff<Domain, Range> identity_multi_pw_aff_on_domain() const = delete;
10473 inline typed::pw_multi_aff<Domain, Range> identity_pw_multi_aff_on_domain() const = delete;
10474 inline typed::space<Domain, Range> map_from_set() const = delete;
10475 inline typed::multi_aff<Domain, Range> multi_aff(const typed::aff_list<Domain, Anonymous> &list) const;
10476 inline typed::multi_aff<Domain, Range> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
10477 inline typed::multi_id<Domain, Range> multi_id(const typed::id_list<> &list) const = delete;
10478 inline typed::multi_pw_aff<Domain, Range> multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const;
10479 inline typed::multi_union_pw_aff<Domain, Range> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete;
10480 inline typed::multi_val<Domain, Range> multi_val(const typed::val_list<> &list) const = delete;
10481 inline typed::aff<Domain, Range> param_aff_on_domain(const typed::id<> &id) const = delete;
10482 inline typed::aff<Domain, Range> param_aff_on_domain(const std::string &id) const = delete;
10483 inline typed::space<> params() const;
10484 template <typename Domain2, typename Range2>
10485 inline typed::space<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::space<Domain2, Range2> &right) const;
10486 inline typed::space<Range> range() const;
10487 inline typed::multi_aff<pair<Domain, Range>, Range> range_map_multi_aff() const;
10488 inline typed::pw_multi_aff<pair<Domain, Range>, Range> range_map_pw_multi_aff() const;
10489 inline typed::space<Domain, Range> range_reverse() const = delete;
10490 inline typed::id<Domain, Range> get_range_tuple_id() const = delete;
10491 inline typed::space<Range, Domain> reverse() const;
10492 template <typename Domain2>
10493 inline typed::space<Domain2, Range> set_domain_tuple(const typed::id<Anonymous> &id) const;
10494 template <typename Domain2>
10495 inline typed::space<Domain2, Range> set_domain_tuple(const std::string &id) const;
10496 template <typename Range2>
10497 inline typed::space<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
10498 template <typename Range2>
10499 inline typed::space<Domain, Range2> set_range_tuple(const std::string &id) const;
10500 inline typed::space<Domain, Range> uncurry() const = delete;
10501 static inline typed::space<Domain, Range> unit(const isl::ctx &ctx) = delete;
10502 inline typed::map<Domain, Range> universe_map() const;
10503 inline typed::set<Domain, Range> universe_set() const = delete;
10504 inline typed::space<Domain, Range> unwrap() const = delete;
10505 inline typed::space<pair<Domain, Range>> wrap() const;
10506 inline typed::space<Domain, Range> wrapped_reverse() const = delete;
10507 inline typed::aff<Domain, Range> zero_aff_on_domain() const = delete;
10508 inline typed::multi_aff<Domain, Range> zero_multi_aff() const;
10509 inline typed::multi_pw_aff<Domain, Range> zero_multi_pw_aff() const;
10510 inline typed::multi_union_pw_aff<Domain, Range> zero_multi_union_pw_aff() const;
10511 inline typed::multi_val<Domain, Range> zero_multi_val() const = delete;
10514 template <typename Domain, typename Range>
10515 struct space<pair<Domain, Range>> : public isl::space {
10516 template <typename...>
10517 friend struct aff;
10518 template <typename...>
10519 friend struct aff_list;
10520 template <typename...>
10521 friend struct basic_map;
10522 template <typename...>
10523 friend struct basic_set;
10524 template <typename...>
10525 friend struct fixed_box;
10526 template <typename...>
10527 friend struct id;
10528 template <typename...>
10529 friend struct id_list;
10530 template <typename...>
10531 friend struct map;
10532 template <typename...>
10533 friend struct map_list;
10534 template <typename...>
10535 friend struct multi_aff;
10536 template <typename...>
10537 friend struct multi_id;
10538 template <typename...>
10539 friend struct multi_pw_aff;
10540 template <typename...>
10541 friend struct multi_union_pw_aff;
10542 template <typename...>
10543 friend struct multi_val;
10544 template <typename...>
10545 friend struct point;
10546 template <typename...>
10547 friend struct pw_aff;
10548 template <typename...>
10549 friend struct pw_aff_list;
10550 template <typename...>
10551 friend struct pw_multi_aff;
10552 template <typename...>
10553 friend struct pw_multi_aff_list;
10554 template <typename...>
10555 friend struct set;
10556 template <typename...>
10557 friend struct set_list;
10558 template <typename...>
10559 friend struct space;
10560 template <typename...>
10561 friend struct union_map;
10562 template <typename...>
10563 friend struct union_pw_aff;
10564 template <typename...>
10565 friend struct union_pw_aff_list;
10566 template <typename...>
10567 friend struct union_pw_multi_aff;
10568 template <typename...>
10569 friend struct union_set;
10570 template <typename...>
10571 friend struct union_set_list;
10572 template <typename...>
10573 friend struct val;
10574 template <typename...>
10575 friend struct val_list;
10577 space() = default;
10578 template <typename Arg1, typename Arg2,
10579 typename std::enable_if<
10580 std::is_base_of<Domain, Arg1>{} &&
10581 std::is_base_of<Range, Arg2>{},
10582 bool>::type = true>
10583 space(const space<pair<Arg1, Arg2>> &obj) : isl::space(obj) {}
10584 private:
10585 template <typename base,
10586 typename std::enable_if<
10587 std::is_same<base, isl::space>{}, bool>::type = true>
10588 space(const base &obj) : isl::space(obj) {}
10589 public:
10590 static space from(const isl::space &obj) {
10591 return space(obj);
10593 inline explicit space(const isl::ctx &ctx, const std::string &str);
10594 template <typename Arg2>
10595 inline typed::space<pair<Domain, Range>, Arg2> add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const;
10596 template <typename Arg2>
10597 inline typed::space<pair<Domain, Range>, Arg2> add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
10598 inline typed::space<pair<Domain, Range>> add_param(const typed::id<Anonymous> &id) const;
10599 inline typed::space<pair<Domain, Range>> add_param(const std::string &id) const;
10600 template <typename Arg2>
10601 inline typed::space<pair<Domain, Range>, Arg2> add_unnamed_tuple(unsigned int dim) const;
10602 inline typed::space<pair<Domain, Range>> curry() const = delete;
10603 inline typed::space<> domain() const;
10604 inline typed::multi_aff<pair<Domain, Range>> domain_map_multi_aff() const = delete;
10605 inline typed::pw_multi_aff<pair<Domain, Range>> domain_map_pw_multi_aff() const = delete;
10606 inline typed::space<pair<Domain, Range>> domain_reverse() const = delete;
10607 inline typed::id<pair<Domain, Range>> get_domain_tuple_id() const = delete;
10608 inline typed::space<pair<Domain, Range>> drop_all_params() const;
10609 inline typed::space<pair<Domain, Range>> flatten_domain() const = delete;
10610 inline typed::space<pair<Domain, Range>> flatten_range() const = delete;
10611 inline typed::multi_aff<pair<Domain, Range>, pair<Domain, Range>> identity_multi_aff_on_domain() const;
10612 inline typed::multi_pw_aff<pair<Domain, Range>, pair<Domain, Range>> identity_multi_pw_aff_on_domain() const;
10613 inline typed::pw_multi_aff<pair<Domain, Range>, pair<Domain, Range>> identity_pw_multi_aff_on_domain() const;
10614 inline typed::space<pair<Domain, Range>, pair<Domain, Range>> map_from_set() const;
10615 inline typed::multi_aff<pair<Domain, Range>> multi_aff(const typed::aff_list<Anonymous> &list) const;
10616 template <typename Arg2>
10617 inline typed::multi_aff<pair<Domain, Range>, Arg2> multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const;
10618 inline typed::multi_id<pair<Domain, Range>> multi_id(const typed::id_list<Anonymous> &list) const;
10619 inline typed::multi_pw_aff<pair<Domain, Range>> multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const;
10620 inline typed::multi_union_pw_aff<pair<Domain, Range>> multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const;
10621 template <typename Arg2>
10622 inline typed::multi_union_pw_aff<Arg2, pair<Domain, Range>> multi_union_pw_aff(const typed::union_pw_aff_list<Arg2, Anonymous> &list) const;
10623 inline typed::multi_val<pair<Domain, Range>> multi_val(const typed::val_list<Anonymous> &list) const;
10624 inline typed::aff<pair<Domain, Range>, Anonymous> param_aff_on_domain(const typed::id<Anonymous> &id) const;
10625 inline typed::aff<pair<Domain, Range>, Anonymous> param_aff_on_domain(const std::string &id) const;
10626 inline typed::space<> params() const;
10627 template <typename Arg2>
10628 inline typed::space<pair<pair<Domain, Range>, Arg2>> product(const typed::space<Arg2> &right) const;
10629 inline typed::space<pair<Domain, Range>> range() const = delete;
10630 inline typed::multi_aff<pair<Domain, Range>> range_map_multi_aff() const = delete;
10631 inline typed::pw_multi_aff<pair<Domain, Range>> range_map_pw_multi_aff() const = delete;
10632 inline typed::space<pair<Domain, Range>> range_reverse() const = delete;
10633 inline typed::id<pair<Domain, Range>> get_range_tuple_id() const = delete;
10634 inline typed::space<pair<Domain, Range>> reverse() const = delete;
10635 inline typed::space<pair<Domain, Range>> set_domain_tuple(const typed::id<> &id) const = delete;
10636 inline typed::space<pair<Domain, Range>> set_domain_tuple(const std::string &id) const = delete;
10637 inline typed::space<pair<Domain, Range>> set_range_tuple(const typed::id<> &id) const = delete;
10638 inline typed::space<pair<Domain, Range>> set_range_tuple(const std::string &id) const = delete;
10639 inline typed::space<pair<Domain, Range>> uncurry() const = delete;
10640 static inline typed::space<pair<Domain, Range>> unit(const isl::ctx &ctx) = delete;
10641 inline typed::map<pair<Domain, Range>> universe_map() const = delete;
10642 inline typed::set<pair<Domain, Range>> universe_set() const;
10643 inline typed::space<Domain, Range> unwrap() const;
10644 inline typed::space<pair<Domain, Range>> wrap() const = delete;
10645 inline typed::space<pair<Range, Domain>> wrapped_reverse() const;
10646 inline typed::aff<pair<Domain, Range>, Anonymous> zero_aff_on_domain() const;
10647 inline typed::multi_aff<pair<Domain, Range>> zero_multi_aff() const;
10648 inline typed::multi_pw_aff<pair<Domain, Range>> zero_multi_pw_aff() const;
10649 inline typed::multi_union_pw_aff<pair<Domain, Range>> zero_multi_union_pw_aff() const;
10650 inline typed::multi_val<pair<Domain, Range>> zero_multi_val() const;
10653 template <typename Domain, typename Range, typename Range2>
10654 struct space<pair<Domain, Range>, Range2> : public isl::space {
10655 template <typename...>
10656 friend struct aff;
10657 template <typename...>
10658 friend struct aff_list;
10659 template <typename...>
10660 friend struct basic_map;
10661 template <typename...>
10662 friend struct basic_set;
10663 template <typename...>
10664 friend struct fixed_box;
10665 template <typename...>
10666 friend struct id;
10667 template <typename...>
10668 friend struct id_list;
10669 template <typename...>
10670 friend struct map;
10671 template <typename...>
10672 friend struct map_list;
10673 template <typename...>
10674 friend struct multi_aff;
10675 template <typename...>
10676 friend struct multi_id;
10677 template <typename...>
10678 friend struct multi_pw_aff;
10679 template <typename...>
10680 friend struct multi_union_pw_aff;
10681 template <typename...>
10682 friend struct multi_val;
10683 template <typename...>
10684 friend struct point;
10685 template <typename...>
10686 friend struct pw_aff;
10687 template <typename...>
10688 friend struct pw_aff_list;
10689 template <typename...>
10690 friend struct pw_multi_aff;
10691 template <typename...>
10692 friend struct pw_multi_aff_list;
10693 template <typename...>
10694 friend struct set;
10695 template <typename...>
10696 friend struct set_list;
10697 template <typename...>
10698 friend struct space;
10699 template <typename...>
10700 friend struct union_map;
10701 template <typename...>
10702 friend struct union_pw_aff;
10703 template <typename...>
10704 friend struct union_pw_aff_list;
10705 template <typename...>
10706 friend struct union_pw_multi_aff;
10707 template <typename...>
10708 friend struct union_set;
10709 template <typename...>
10710 friend struct union_set_list;
10711 template <typename...>
10712 friend struct val;
10713 template <typename...>
10714 friend struct val_list;
10716 space() = default;
10717 template <typename Arg1, typename Arg2, typename Arg3,
10718 typename std::enable_if<
10719 std::is_base_of<Domain, Arg1>{} &&
10720 std::is_base_of<Range, Arg2>{} &&
10721 std::is_base_of<Range2, Arg3>{},
10722 bool>::type = true>
10723 space(const space<pair<Arg1, Arg2>, Arg3> &obj) : isl::space(obj) {}
10724 private:
10725 template <typename base,
10726 typename std::enable_if<
10727 std::is_same<base, isl::space>{}, bool>::type = true>
10728 space(const base &obj) : isl::space(obj) {}
10729 public:
10730 static space from(const isl::space &obj) {
10731 return space(obj);
10733 inline explicit space(const isl::ctx &ctx, const std::string &str);
10734 inline typed::space<pair<Domain, Range>, Range2> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
10735 inline typed::space<pair<Domain, Range>, Range2> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
10736 inline typed::space<pair<Domain, Range>, Range2> add_param(const typed::id<Anonymous> &id) const;
10737 inline typed::space<pair<Domain, Range>, Range2> add_param(const std::string &id) const;
10738 inline typed::space<pair<Domain, Range>, Range2> add_unnamed_tuple(unsigned int dim) const = delete;
10739 inline typed::space<Domain, pair<Range, Range2>> curry() const;
10740 inline typed::space<pair<Domain, Range>> domain() const;
10741 inline typed::multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_multi_aff() const;
10742 inline typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_pw_multi_aff() const;
10743 inline typed::space<pair<Range, Domain>, Range2> domain_reverse() const;
10744 inline typed::id<pair<Domain, Range>, Range2> get_domain_tuple_id() const = delete;
10745 inline typed::space<pair<Domain, Range>, Range2> drop_all_params() const;
10746 inline typed::space<Anonymous, Range2> flatten_domain() const;
10747 inline typed::space<pair<Domain, Range>, Range2> flatten_range() const = delete;
10748 inline typed::multi_aff<pair<Domain, Range>, Range2> identity_multi_aff_on_domain() const = delete;
10749 inline typed::multi_pw_aff<pair<Domain, Range>, Range2> identity_multi_pw_aff_on_domain() const = delete;
10750 inline typed::pw_multi_aff<pair<Domain, Range>, Range2> identity_pw_multi_aff_on_domain() const = delete;
10751 inline typed::space<pair<Domain, Range>, Range2> map_from_set() const = delete;
10752 inline typed::multi_aff<pair<Domain, Range>, Range2> multi_aff(const typed::aff_list<pair<Domain, Range>, Anonymous> &list) const;
10753 inline typed::multi_aff<pair<Domain, Range>, Range2> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
10754 inline typed::multi_id<pair<Domain, Range>, Range2> multi_id(const typed::id_list<> &list) const = delete;
10755 inline typed::multi_pw_aff<pair<Domain, Range>, Range2> multi_pw_aff(const typed::pw_aff_list<pair<Domain, Range>, Anonymous> &list) const;
10756 inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete;
10757 inline typed::multi_val<pair<Domain, Range>, Range2> multi_val(const typed::val_list<> &list) const = delete;
10758 inline typed::aff<pair<Domain, Range>, Range2> param_aff_on_domain(const typed::id<> &id) const = delete;
10759 inline typed::aff<pair<Domain, Range>, Range2> param_aff_on_domain(const std::string &id) const = delete;
10760 inline typed::space<> params() const;
10761 template <typename Domain2, typename Arg3>
10762 inline typed::space<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::space<Domain2, Arg3> &right) const;
10763 inline typed::space<Range2> range() const;
10764 inline typed::multi_aff<pair<pair<Domain, Range>, Range2>, Range2> range_map_multi_aff() const;
10765 inline typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, Range2> range_map_pw_multi_aff() const;
10766 inline typed::space<pair<Domain, Range>, Range2> range_reverse() const = delete;
10767 inline typed::id<pair<Domain, Range>, Range2> get_range_tuple_id() const = delete;
10768 inline typed::space<Range2, pair<Domain, Range>> reverse() const;
10769 inline typed::space<pair<Domain, Range>, Range2> set_domain_tuple(const typed::id<> &id) const = delete;
10770 inline typed::space<pair<Domain, Range>, Range2> set_domain_tuple(const std::string &id) const = delete;
10771 template <typename Arg2>
10772 inline typed::space<pair<Domain, Range>, Arg2> set_range_tuple(const typed::id<Anonymous> &id) const;
10773 template <typename Arg2>
10774 inline typed::space<pair<Domain, Range>, Arg2> set_range_tuple(const std::string &id) const;
10775 inline typed::space<pair<Domain, Range>, Range2> uncurry() const = delete;
10776 static inline typed::space<pair<Domain, Range>, Range2> unit(const isl::ctx &ctx) = delete;
10777 inline typed::map<pair<Domain, Range>, Range2> universe_map() const;
10778 inline typed::set<pair<Domain, Range>, Range2> universe_set() const = delete;
10779 inline typed::space<pair<Domain, Range>, Range2> unwrap() const = delete;
10780 inline typed::space<pair<pair<Domain, Range>, Range2>> wrap() const;
10781 inline typed::space<pair<Domain, Range>, Range2> wrapped_reverse() const = delete;
10782 inline typed::aff<pair<Domain, Range>, Range2> zero_aff_on_domain() const = delete;
10783 inline typed::multi_aff<pair<Domain, Range>, Range2> zero_multi_aff() const;
10784 inline typed::multi_pw_aff<pair<Domain, Range>, Range2> zero_multi_pw_aff() const;
10785 inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> zero_multi_union_pw_aff() const;
10786 inline typed::multi_val<pair<Domain, Range>, Range2> zero_multi_val() const = delete;
10789 template <typename Domain, typename Range, typename Range2>
10790 struct space<Domain, pair<Range, Range2>> : public isl::space {
10791 template <typename...>
10792 friend struct aff;
10793 template <typename...>
10794 friend struct aff_list;
10795 template <typename...>
10796 friend struct basic_map;
10797 template <typename...>
10798 friend struct basic_set;
10799 template <typename...>
10800 friend struct fixed_box;
10801 template <typename...>
10802 friend struct id;
10803 template <typename...>
10804 friend struct id_list;
10805 template <typename...>
10806 friend struct map;
10807 template <typename...>
10808 friend struct map_list;
10809 template <typename...>
10810 friend struct multi_aff;
10811 template <typename...>
10812 friend struct multi_id;
10813 template <typename...>
10814 friend struct multi_pw_aff;
10815 template <typename...>
10816 friend struct multi_union_pw_aff;
10817 template <typename...>
10818 friend struct multi_val;
10819 template <typename...>
10820 friend struct point;
10821 template <typename...>
10822 friend struct pw_aff;
10823 template <typename...>
10824 friend struct pw_aff_list;
10825 template <typename...>
10826 friend struct pw_multi_aff;
10827 template <typename...>
10828 friend struct pw_multi_aff_list;
10829 template <typename...>
10830 friend struct set;
10831 template <typename...>
10832 friend struct set_list;
10833 template <typename...>
10834 friend struct space;
10835 template <typename...>
10836 friend struct union_map;
10837 template <typename...>
10838 friend struct union_pw_aff;
10839 template <typename...>
10840 friend struct union_pw_aff_list;
10841 template <typename...>
10842 friend struct union_pw_multi_aff;
10843 template <typename...>
10844 friend struct union_set;
10845 template <typename...>
10846 friend struct union_set_list;
10847 template <typename...>
10848 friend struct val;
10849 template <typename...>
10850 friend struct val_list;
10852 space() = default;
10853 template <typename Arg1, typename Arg2, typename Arg3,
10854 typename std::enable_if<
10855 std::is_base_of<Domain, Arg1>{} &&
10856 std::is_base_of<Range, Arg2>{} &&
10857 std::is_base_of<Range2, Arg3>{},
10858 bool>::type = true>
10859 space(const space<Arg1, pair<Arg2, Arg3>> &obj) : isl::space(obj) {}
10860 private:
10861 template <typename base,
10862 typename std::enable_if<
10863 std::is_same<base, isl::space>{}, bool>::type = true>
10864 space(const base &obj) : isl::space(obj) {}
10865 public:
10866 static space from(const isl::space &obj) {
10867 return space(obj);
10869 inline explicit space(const isl::ctx &ctx, const std::string &str);
10870 inline typed::space<Domain, pair<Range, Range2>> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
10871 inline typed::space<Domain, pair<Range, Range2>> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
10872 inline typed::space<Domain, pair<Range, Range2>> add_param(const typed::id<Anonymous> &id) const;
10873 inline typed::space<Domain, pair<Range, Range2>> add_param(const std::string &id) const;
10874 inline typed::space<Domain, pair<Range, Range2>> add_unnamed_tuple(unsigned int dim) const = delete;
10875 inline typed::space<Domain, pair<Range, Range2>> curry() const = delete;
10876 inline typed::space<Domain> domain() const;
10877 inline typed::multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_multi_aff() const;
10878 inline typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_pw_multi_aff() const;
10879 inline typed::space<Domain, pair<Range, Range2>> domain_reverse() const = delete;
10880 inline typed::id<Domain, pair<Range, Range2>> get_domain_tuple_id() const = delete;
10881 inline typed::space<Domain, pair<Range, Range2>> drop_all_params() const;
10882 inline typed::space<Domain, pair<Range, Range2>> flatten_domain() const = delete;
10883 inline typed::space<Domain, Anonymous> flatten_range() const;
10884 inline typed::multi_aff<Domain, pair<Range, Range2>> identity_multi_aff_on_domain() const = delete;
10885 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> identity_multi_pw_aff_on_domain() const = delete;
10886 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> identity_pw_multi_aff_on_domain() const = delete;
10887 inline typed::space<Domain, pair<Range, Range2>> map_from_set() const = delete;
10888 inline typed::multi_aff<Domain, pair<Range, Range2>> multi_aff(const typed::aff_list<Domain, Anonymous> &list) const;
10889 inline typed::multi_aff<Domain, pair<Range, Range2>> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
10890 inline typed::multi_id<Domain, pair<Range, Range2>> multi_id(const typed::id_list<> &list) const = delete;
10891 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const;
10892 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete;
10893 inline typed::multi_val<Domain, pair<Range, Range2>> multi_val(const typed::val_list<> &list) const = delete;
10894 inline typed::aff<Domain, pair<Range, Range2>> param_aff_on_domain(const typed::id<> &id) const = delete;
10895 inline typed::aff<Domain, pair<Range, Range2>> param_aff_on_domain(const std::string &id) const = delete;
10896 inline typed::space<> params() const;
10897 template <typename Domain2, typename Arg3>
10898 inline typed::space<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::space<Domain2, Arg3> &right) const;
10899 inline typed::space<pair<Range, Range2>> range() const;
10900 inline typed::multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map_multi_aff() const;
10901 inline typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map_pw_multi_aff() const;
10902 inline typed::space<Domain, pair<Range2, Range>> range_reverse() const;
10903 inline typed::id<Domain, pair<Range, Range2>> get_range_tuple_id() const = delete;
10904 inline typed::space<pair<Range, Range2>, Domain> reverse() const;
10905 template <typename Domain2>
10906 inline typed::space<Domain2, pair<Range, Range2>> set_domain_tuple(const typed::id<Anonymous> &id) const;
10907 template <typename Domain2>
10908 inline typed::space<Domain2, pair<Range, Range2>> set_domain_tuple(const std::string &id) const;
10909 inline typed::space<Domain, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
10910 inline typed::space<Domain, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
10911 inline typed::space<pair<Domain, Range>, Range2> uncurry() const;
10912 static inline typed::space<Domain, pair<Range, Range2>> unit(const isl::ctx &ctx) = delete;
10913 inline typed::map<Domain, pair<Range, Range2>> universe_map() const;
10914 inline typed::set<Domain, pair<Range, Range2>> universe_set() const = delete;
10915 inline typed::space<Domain, pair<Range, Range2>> unwrap() const = delete;
10916 inline typed::space<pair<Domain, pair<Range, Range2>>> wrap() const;
10917 inline typed::space<Domain, pair<Range, Range2>> wrapped_reverse() const = delete;
10918 inline typed::aff<Domain, pair<Range, Range2>> zero_aff_on_domain() const = delete;
10919 inline typed::multi_aff<Domain, pair<Range, Range2>> zero_multi_aff() const;
10920 inline typed::multi_pw_aff<Domain, pair<Range, Range2>> zero_multi_pw_aff() const;
10921 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> zero_multi_union_pw_aff() const;
10922 inline typed::multi_val<Domain, pair<Range, Range2>> zero_multi_val() const = delete;
10925 template <typename T1, typename T2, typename Range, typename Range2>
10926 struct space<pair<T1, T2>, pair<Range, Range2>> : public isl::space {
10927 template <typename...>
10928 friend struct aff;
10929 template <typename...>
10930 friend struct aff_list;
10931 template <typename...>
10932 friend struct basic_map;
10933 template <typename...>
10934 friend struct basic_set;
10935 template <typename...>
10936 friend struct fixed_box;
10937 template <typename...>
10938 friend struct id;
10939 template <typename...>
10940 friend struct id_list;
10941 template <typename...>
10942 friend struct map;
10943 template <typename...>
10944 friend struct map_list;
10945 template <typename...>
10946 friend struct multi_aff;
10947 template <typename...>
10948 friend struct multi_id;
10949 template <typename...>
10950 friend struct multi_pw_aff;
10951 template <typename...>
10952 friend struct multi_union_pw_aff;
10953 template <typename...>
10954 friend struct multi_val;
10955 template <typename...>
10956 friend struct point;
10957 template <typename...>
10958 friend struct pw_aff;
10959 template <typename...>
10960 friend struct pw_aff_list;
10961 template <typename...>
10962 friend struct pw_multi_aff;
10963 template <typename...>
10964 friend struct pw_multi_aff_list;
10965 template <typename...>
10966 friend struct set;
10967 template <typename...>
10968 friend struct set_list;
10969 template <typename...>
10970 friend struct space;
10971 template <typename...>
10972 friend struct union_map;
10973 template <typename...>
10974 friend struct union_pw_aff;
10975 template <typename...>
10976 friend struct union_pw_aff_list;
10977 template <typename...>
10978 friend struct union_pw_multi_aff;
10979 template <typename...>
10980 friend struct union_set;
10981 template <typename...>
10982 friend struct union_set_list;
10983 template <typename...>
10984 friend struct val;
10985 template <typename...>
10986 friend struct val_list;
10988 space() = default;
10989 template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
10990 typename std::enable_if<
10991 std::is_base_of<T1, Arg1>{} &&
10992 std::is_base_of<T2, Arg2>{} &&
10993 std::is_base_of<Range, Arg3>{} &&
10994 std::is_base_of<Range2, Arg4>{},
10995 bool>::type = true>
10996 space(const space<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::space(obj) {}
10997 private:
10998 template <typename base,
10999 typename std::enable_if<
11000 std::is_same<base, isl::space>{}, bool>::type = true>
11001 space(const base &obj) : isl::space(obj) {}
11002 public:
11003 static space from(const isl::space &obj) {
11004 return space(obj);
11006 inline explicit space(const isl::ctx &ctx, const std::string &str);
11007 inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_named_tuple(const typed::id<> &tuple_id, unsigned int dim) const = delete;
11008 inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_named_tuple(const std::string &tuple_id, unsigned int dim) const = delete;
11009 inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_param(const typed::id<Anonymous> &id) const;
11010 inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_param(const std::string &id) const;
11011 inline typed::space<pair<T1, T2>, pair<Range, Range2>> add_unnamed_tuple(unsigned int dim) const = delete;
11012 inline typed::space<T1, pair<T2, pair<Range, Range2>>> curry() const;
11013 inline typed::space<pair<T1, T2>> domain() const;
11014 inline typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_multi_aff() const;
11015 inline typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_pw_multi_aff() const;
11016 inline typed::space<pair<T2, T1>, pair<Range, Range2>> domain_reverse() const;
11017 inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_domain_tuple_id() const = delete;
11018 inline typed::space<pair<T1, T2>, pair<Range, Range2>> drop_all_params() const;
11019 inline typed::space<Anonymous, pair<Range, Range2>> flatten_domain() const;
11020 inline typed::space<pair<T1, T2>, Anonymous> flatten_range() const;
11021 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> identity_multi_aff_on_domain() const = delete;
11022 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> identity_multi_pw_aff_on_domain() const = delete;
11023 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> identity_pw_multi_aff_on_domain() const = delete;
11024 inline typed::space<pair<T1, T2>, pair<Range, Range2>> map_from_set() const = delete;
11025 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> multi_aff(const typed::aff_list<pair<T1, T2>, Anonymous> &list) const;
11026 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> multi_aff_on_domain(const typed::multi_val<> &mv) const = delete;
11027 inline typed::multi_id<pair<T1, T2>, pair<Range, Range2>> multi_id(const typed::id_list<> &list) const = delete;
11028 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> multi_pw_aff(const typed::pw_aff_list<pair<T1, T2>, Anonymous> &list) const;
11029 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> multi_union_pw_aff(const typed::union_pw_aff_list<> &list) const = delete;
11030 inline typed::multi_val<pair<T1, T2>, pair<Range, Range2>> multi_val(const typed::val_list<> &list) const = delete;
11031 inline typed::aff<pair<T1, T2>, pair<Range, Range2>> param_aff_on_domain(const typed::id<> &id) const = delete;
11032 inline typed::aff<pair<T1, T2>, pair<Range, Range2>> param_aff_on_domain(const std::string &id) const = delete;
11033 inline typed::space<> params() const;
11034 template <typename Domain2, typename Arg2>
11035 inline typed::space<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::space<Domain2, Arg2> &right) const;
11036 inline typed::space<pair<Range, Range2>> range() const;
11037 inline typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map_multi_aff() const;
11038 inline typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map_pw_multi_aff() const;
11039 inline typed::space<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
11040 inline typed::id<pair<T1, T2>, pair<Range, Range2>> get_range_tuple_id() const = delete;
11041 inline typed::space<pair<Range, Range2>, pair<T1, T2>> reverse() const;
11042 inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const typed::id<> &id) const = delete;
11043 inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_domain_tuple(const std::string &id) const = delete;
11044 inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const typed::id<> &id) const = delete;
11045 inline typed::space<pair<T1, T2>, pair<Range, Range2>> set_range_tuple(const std::string &id) const = delete;
11046 inline typed::space<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
11047 static inline typed::space<pair<T1, T2>, pair<Range, Range2>> unit(const isl::ctx &ctx) = delete;
11048 inline typed::map<pair<T1, T2>, pair<Range, Range2>> universe_map() const;
11049 inline typed::set<pair<T1, T2>, pair<Range, Range2>> universe_set() const = delete;
11050 inline typed::space<pair<T1, T2>, pair<Range, Range2>> unwrap() const = delete;
11051 inline typed::space<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
11052 inline typed::space<pair<T1, T2>, pair<Range, Range2>> wrapped_reverse() const = delete;
11053 inline typed::aff<pair<T1, T2>, pair<Range, Range2>> zero_aff_on_domain() const = delete;
11054 inline typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> zero_multi_aff() const;
11055 inline typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> zero_multi_pw_aff() const;
11056 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> zero_multi_union_pw_aff() const;
11057 inline typed::multi_val<pair<T1, T2>, pair<Range, Range2>> zero_multi_val() const = delete;
11060 template <typename Domain, typename Range>
11061 struct union_map<Domain, Range> : public isl::union_map {
11062 template <typename...>
11063 friend struct aff;
11064 template <typename...>
11065 friend struct aff_list;
11066 template <typename...>
11067 friend struct basic_map;
11068 template <typename...>
11069 friend struct basic_set;
11070 template <typename...>
11071 friend struct fixed_box;
11072 template <typename...>
11073 friend struct id;
11074 template <typename...>
11075 friend struct id_list;
11076 template <typename...>
11077 friend struct map;
11078 template <typename...>
11079 friend struct map_list;
11080 template <typename...>
11081 friend struct multi_aff;
11082 template <typename...>
11083 friend struct multi_id;
11084 template <typename...>
11085 friend struct multi_pw_aff;
11086 template <typename...>
11087 friend struct multi_union_pw_aff;
11088 template <typename...>
11089 friend struct multi_val;
11090 template <typename...>
11091 friend struct point;
11092 template <typename...>
11093 friend struct pw_aff;
11094 template <typename...>
11095 friend struct pw_aff_list;
11096 template <typename...>
11097 friend struct pw_multi_aff;
11098 template <typename...>
11099 friend struct pw_multi_aff_list;
11100 template <typename...>
11101 friend struct set;
11102 template <typename...>
11103 friend struct set_list;
11104 template <typename...>
11105 friend struct space;
11106 template <typename...>
11107 friend struct union_map;
11108 template <typename...>
11109 friend struct union_pw_aff;
11110 template <typename...>
11111 friend struct union_pw_aff_list;
11112 template <typename...>
11113 friend struct union_pw_multi_aff;
11114 template <typename...>
11115 friend struct union_set;
11116 template <typename...>
11117 friend struct union_set_list;
11118 template <typename...>
11119 friend struct val;
11120 template <typename...>
11121 friend struct val_list;
11123 union_map() = default;
11124 template <typename Arg1, typename Arg2,
11125 typename std::enable_if<
11126 std::is_base_of<Domain, Arg1>{} &&
11127 std::is_base_of<Range, Arg2>{},
11128 bool>::type = true>
11129 union_map(const union_map<Arg1, Arg2> &obj) : isl::union_map(obj) {}
11130 private:
11131 template <typename base,
11132 typename std::enable_if<
11133 std::is_same<base, isl::union_map>{}, bool>::type = true>
11134 union_map(const base &obj) : isl::union_map(obj) {}
11135 public:
11136 static union_map from(const isl::union_map &obj) {
11137 return union_map(obj);
11139 inline /* implicit */ union_map(const typed::basic_map<Domain, Range> &bmap);
11140 inline /* implicit */ union_map(const typed::map<Domain, Range> &map);
11141 inline explicit union_map(const isl::ctx &ctx, const std::string &str);
11142 template <typename Domain2>
11143 inline typed::union_map<Domain2, Range> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
11144 template <typename Domain2>
11145 inline typed::union_map<Domain2, Range> apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const;
11146 template <typename Domain2>
11147 inline typed::union_map<Domain2, Range> apply_domain(const typed::map<Domain, Domain2> &umap2) const;
11148 template <typename Range2>
11149 inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Range, Range2> &umap2) const;
11150 template <typename Range2>
11151 inline typed::union_map<Domain, Range2> apply_range(const typed::basic_map<Range, Range2> &umap2) const;
11152 template <typename Range2>
11153 inline typed::union_map<Domain, Range2> apply_range(const typed::map<Range, Range2> &umap2) const;
11154 inline typed::map<Domain, Range> as_map() const;
11155 inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
11156 inline typed::union_pw_multi_aff<Domain, Range> as_union_pw_multi_aff() const;
11157 inline typed::union_set<Domain> bind_range(const typed::multi_id<Range> &tuple) const;
11158 inline typed::union_map<Domain, Range> coalesce() const;
11159 inline typed::union_map<Domain, Range> curry() const = delete;
11160 inline typed::union_set<Domain, Range> deltas() const = delete;
11161 inline typed::union_map<Domain, Range> detect_equalities() const;
11162 inline typed::union_set<Domain> domain() const;
11163 inline typed::union_map<Domain, Range> domain_factor_domain() const = delete;
11164 inline typed::union_map<Domain, Range> domain_factor_range() const = delete;
11165 inline typed::union_map<pair<Domain, Range>, Domain> domain_map() const;
11166 inline typed::union_pw_multi_aff<pair<Domain, Range>, Domain> domain_map_union_pw_multi_aff() const;
11167 template <typename Domain2>
11168 inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::union_map<Domain2, Range> &umap2) const;
11169 template <typename Domain2>
11170 inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::basic_map<Domain2, Range> &umap2) const;
11171 template <typename Domain2>
11172 inline typed::union_map<pair<Domain, Domain2>, Range> domain_product(const typed::map<Domain2, Range> &umap2) const;
11173 inline typed::union_map<Domain, Range> domain_reverse() const = delete;
11174 inline typed::union_map<Domain, Range> drop_unused_params() const;
11175 static inline typed::union_map<Domain, Range> empty(const isl::ctx &ctx);
11176 inline typed::union_map<Domain, Range> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
11177 inline typed::union_map<Domain, Range> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
11178 inline typed::union_map<Domain, Range> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
11179 inline bool every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const;
11180 inline typed::map<Domain, Range> extract_map(const typed::space<Domain, Range> &space) const;
11181 inline void foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const;
11182 inline typed::union_map<Domain, Range> gist(const typed::union_map<Domain, Range> &context) const;
11183 inline typed::union_map<Domain, Range> gist(const typed::basic_map<Domain, Range> &context) const;
11184 inline typed::union_map<Domain, Range> gist(const typed::map<Domain, Range> &context) const;
11185 inline typed::union_map<Domain, Range> gist_domain(const typed::union_set<Domain> &uset) const;
11186 inline typed::union_map<Domain, Range> gist_domain(const typed::basic_set<Domain> &uset) const;
11187 inline typed::union_map<Domain, Range> gist_domain(const typed::point<Domain> &uset) const;
11188 inline typed::union_map<Domain, Range> gist_domain(const typed::set<Domain> &uset) const;
11189 inline typed::union_map<Domain, Range> gist_params(const typed::set<> &set) const;
11190 inline typed::union_map<Domain, Range> gist_params(const typed::basic_set<> &set) const;
11191 inline typed::union_map<Domain, Range> gist_params(const typed::point<> &set) const;
11192 inline typed::union_map<Domain, Range> intersect(const typed::union_map<Domain, Range> &umap2) const;
11193 inline typed::union_map<Domain, Range> intersect(const typed::basic_map<Domain, Range> &umap2) const;
11194 inline typed::union_map<Domain, Range> intersect(const typed::map<Domain, Range> &umap2) const;
11195 inline typed::union_map<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
11196 inline typed::union_map<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
11197 inline typed::union_map<Domain, Range> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
11198 inline typed::union_map<Domain, Range> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete;
11199 inline typed::union_map<Domain, Range> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete;
11200 inline typed::union_map<Domain, Range> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
11201 inline typed::union_map<Domain, Range> intersect_params(const typed::set<> &set) const;
11202 inline typed::union_map<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
11203 inline typed::union_map<Domain, Range> intersect_params(const typed::point<> &set) const;
11204 inline typed::union_map<Domain, Range> intersect_range(const typed::space<Range> &space) const;
11205 inline typed::union_map<Domain, Range> intersect_range(const typed::union_set<Range> &uset) const;
11206 inline typed::union_map<Domain, Range> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
11207 inline typed::union_map<Domain, Range> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete;
11208 inline typed::union_map<Domain, Range> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete;
11209 inline typed::union_map<Domain, Range> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
11210 inline typed::union_map<Domain, Range> lexmax() const;
11211 inline typed::union_map<Domain, Range> lexmin() const;
11212 inline typed::map_list<Domain, Range> map_list() const;
11213 inline typed::map_list<Domain, Range> get_map_list() const = delete;
11214 inline typed::set<> params() const;
11215 template <typename Domain2>
11216 inline typed::union_map<Domain2, Range> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
11217 template <typename Domain2>
11218 inline typed::union_map<Domain2, Range> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
11219 template <typename Domain2>
11220 inline typed::union_map<Domain2, Range> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
11221 template <typename Domain2>
11222 inline typed::union_map<Domain2, Range> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
11223 template <typename Range2>
11224 inline typed::union_map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Range> &ma) const;
11225 template <typename Range2>
11226 inline typed::union_map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const;
11227 template <typename Range2>
11228 inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const;
11229 template <typename Domain2, typename Range2>
11230 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
11231 template <typename Domain2, typename Range2>
11232 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::basic_map<Domain2, Range2> &umap2) const;
11233 template <typename Domain2, typename Range2>
11234 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> product(const typed::map<Domain2, Range2> &umap2) const;
11235 inline typed::union_map<Domain, Range> project_out_all_params() const;
11236 inline typed::union_map<Domain, Range> project_out_param(const typed::id<Anonymous> &id) const;
11237 inline typed::union_map<Domain, Range> project_out_param(const std::string &id) const;
11238 inline typed::union_map<Domain, Range> project_out_param(const typed::id_list<Anonymous> &list) const;
11239 inline typed::union_set<Range> range() const;
11240 inline typed::union_map<Domain, Range> range_factor_domain() const = delete;
11241 inline typed::union_map<Domain, Range> range_factor_range() const = delete;
11242 inline typed::union_map<pair<Domain, Range>, Range> range_map() const;
11243 template <typename Range2>
11244 inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
11245 template <typename Range2>
11246 inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::basic_map<Domain, Range2> &umap2) const;
11247 template <typename Range2>
11248 inline typed::union_map<Domain, pair<Range, Range2>> range_product(const typed::map<Domain, Range2> &umap2) const;
11249 inline typed::union_map<Domain, Range> range_reverse() const = delete;
11250 inline typed::union_map<Range, Domain> reverse() const;
11251 inline typed::space<> space() const;
11252 inline typed::space<Domain, Range> get_space() const = delete;
11253 inline typed::union_map<Domain, Range> subtract(const typed::union_map<Domain, Range> &umap2) const;
11254 inline typed::union_map<Domain, Range> subtract(const typed::basic_map<Domain, Range> &umap2) const;
11255 inline typed::union_map<Domain, Range> subtract(const typed::map<Domain, Range> &umap2) const;
11256 inline typed::union_map<Domain, Range> subtract_domain(const typed::union_set<Domain> &dom) const;
11257 inline typed::union_map<Domain, Range> subtract_domain(const typed::basic_set<Domain> &dom) const;
11258 inline typed::union_map<Domain, Range> subtract_domain(const typed::point<Domain> &dom) const;
11259 inline typed::union_map<Domain, Range> subtract_domain(const typed::set<Domain> &dom) const;
11260 inline typed::union_map<Domain, Range> subtract_range(const typed::union_set<Range> &dom) const;
11261 inline typed::union_map<Domain, Range> subtract_range(const typed::basic_set<Range> &dom) const;
11262 inline typed::union_map<Domain, Range> subtract_range(const typed::point<Range> &dom) const;
11263 inline typed::union_map<Domain, Range> subtract_range(const typed::set<Range> &dom) const;
11264 inline typed::union_map<Domain, Range> uncurry() const = delete;
11265 inline typed::union_map<Domain, Range> unite(const typed::union_map<Domain, Range> &umap2) const;
11266 inline typed::union_map<Domain, Range> unite(const typed::basic_map<Domain, Range> &umap2) const;
11267 inline typed::union_map<Domain, Range> unite(const typed::map<Domain, Range> &umap2) const;
11268 inline typed::union_map<Domain, Range> universe() const;
11269 inline typed::union_set<pair<Domain, Range>> wrap() const;
11272 template <typename Domain, typename Range, typename Range2>
11273 struct union_map<pair<Domain, Range>, Range2> : public isl::union_map {
11274 template <typename...>
11275 friend struct aff;
11276 template <typename...>
11277 friend struct aff_list;
11278 template <typename...>
11279 friend struct basic_map;
11280 template <typename...>
11281 friend struct basic_set;
11282 template <typename...>
11283 friend struct fixed_box;
11284 template <typename...>
11285 friend struct id;
11286 template <typename...>
11287 friend struct id_list;
11288 template <typename...>
11289 friend struct map;
11290 template <typename...>
11291 friend struct map_list;
11292 template <typename...>
11293 friend struct multi_aff;
11294 template <typename...>
11295 friend struct multi_id;
11296 template <typename...>
11297 friend struct multi_pw_aff;
11298 template <typename...>
11299 friend struct multi_union_pw_aff;
11300 template <typename...>
11301 friend struct multi_val;
11302 template <typename...>
11303 friend struct point;
11304 template <typename...>
11305 friend struct pw_aff;
11306 template <typename...>
11307 friend struct pw_aff_list;
11308 template <typename...>
11309 friend struct pw_multi_aff;
11310 template <typename...>
11311 friend struct pw_multi_aff_list;
11312 template <typename...>
11313 friend struct set;
11314 template <typename...>
11315 friend struct set_list;
11316 template <typename...>
11317 friend struct space;
11318 template <typename...>
11319 friend struct union_map;
11320 template <typename...>
11321 friend struct union_pw_aff;
11322 template <typename...>
11323 friend struct union_pw_aff_list;
11324 template <typename...>
11325 friend struct union_pw_multi_aff;
11326 template <typename...>
11327 friend struct union_set;
11328 template <typename...>
11329 friend struct union_set_list;
11330 template <typename...>
11331 friend struct val;
11332 template <typename...>
11333 friend struct val_list;
11335 union_map() = default;
11336 template <typename Arg1, typename Arg2, typename Arg3,
11337 typename std::enable_if<
11338 std::is_base_of<Domain, Arg1>{} &&
11339 std::is_base_of<Range, Arg2>{} &&
11340 std::is_base_of<Range2, Arg3>{},
11341 bool>::type = true>
11342 union_map(const union_map<pair<Arg1, Arg2>, Arg3> &obj) : isl::union_map(obj) {}
11343 private:
11344 template <typename base,
11345 typename std::enable_if<
11346 std::is_same<base, isl::union_map>{}, bool>::type = true>
11347 union_map(const base &obj) : isl::union_map(obj) {}
11348 public:
11349 static union_map from(const isl::union_map &obj) {
11350 return union_map(obj);
11352 inline /* implicit */ union_map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap);
11353 inline /* implicit */ union_map(const typed::map<pair<Domain, Range>, Range2> &map);
11354 inline explicit union_map(const isl::ctx &ctx, const std::string &str);
11355 template <typename Domain2>
11356 inline typed::union_map<Domain2, Range2> apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const;
11357 template <typename Domain2>
11358 inline typed::union_map<Domain2, Range2> apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &umap2) const;
11359 template <typename Domain2>
11360 inline typed::union_map<Domain2, Range2> apply_domain(const typed::map<pair<Domain, Range>, Domain2> &umap2) const;
11361 template <typename Arg3>
11362 inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::union_map<Range2, Arg3> &umap2) const;
11363 template <typename Arg3>
11364 inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::basic_map<Range2, Arg3> &umap2) const;
11365 template <typename Arg3>
11366 inline typed::union_map<pair<Domain, Range>, Arg3> apply_range(const typed::map<Range2, Arg3> &umap2) const;
11367 inline typed::map<pair<Domain, Range>, Range2> as_map() const;
11368 inline typed::multi_union_pw_aff<pair<Domain, Range>, Range2> as_multi_union_pw_aff() const;
11369 inline typed::union_pw_multi_aff<pair<Domain, Range>, Range2> as_union_pw_multi_aff() const;
11370 inline typed::union_set<pair<Domain, Range>> bind_range(const typed::multi_id<Range2> &tuple) const;
11371 inline typed::union_map<pair<Domain, Range>, Range2> coalesce() const;
11372 inline typed::union_map<Domain, pair<Range, Range2>> curry() const;
11373 inline typed::union_set<pair<Domain, Range>, Range2> deltas() const = delete;
11374 inline typed::union_map<pair<Domain, Range>, Range2> detect_equalities() const;
11375 inline typed::union_set<pair<Domain, Range>> domain() const;
11376 inline typed::union_map<Domain, Range2> domain_factor_domain() const;
11377 inline typed::union_map<Range, Range2> domain_factor_range() const;
11378 inline typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map() const;
11379 inline typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> domain_map_union_pw_multi_aff() const;
11380 template <typename Domain2>
11381 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::union_map<Domain2, Range2> &umap2) const;
11382 template <typename Domain2>
11383 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::basic_map<Domain2, Range2> &umap2) const;
11384 template <typename Domain2>
11385 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> domain_product(const typed::map<Domain2, Range2> &umap2) const;
11386 inline typed::union_map<pair<Range, Domain>, Range2> domain_reverse() const;
11387 inline typed::union_map<pair<Domain, Range>, Range2> drop_unused_params() const;
11388 static inline typed::union_map<pair<Domain, Range>, Range2> empty(const isl::ctx &ctx);
11389 inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
11390 inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
11391 inline typed::union_map<pair<Domain, Range>, Range2> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
11392 inline bool every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const;
11393 inline typed::map<pair<Domain, Range>, Range2> extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const;
11394 inline void foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const;
11395 inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const;
11396 inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const;
11397 inline typed::union_map<pair<Domain, Range>, Range2> gist(const typed::map<pair<Domain, Range>, Range2> &context) const;
11398 inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
11399 inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::basic_set<pair<Domain, Range>> &uset) const;
11400 inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::point<pair<Domain, Range>> &uset) const;
11401 inline typed::union_map<pair<Domain, Range>, Range2> gist_domain(const typed::set<pair<Domain, Range>> &uset) const;
11402 inline typed::union_map<pair<Domain, Range>, Range2> gist_params(const typed::set<> &set) const;
11403 inline typed::union_map<pair<Domain, Range>, Range2> gist_params(const typed::basic_set<> &set) const;
11404 inline typed::union_map<pair<Domain, Range>, Range2> gist_params(const typed::point<> &set) const;
11405 inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
11406 inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const;
11407 inline typed::union_map<pair<Domain, Range>, Range2> intersect(const typed::map<pair<Domain, Range>, Range2> &umap2) const;
11408 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::space<pair<Domain, Range>> &space) const;
11409 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const;
11410 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::union_set<Domain> &domain) const;
11411 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::basic_set<Domain> &domain) const;
11412 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::point<Domain> &domain) const;
11413 inline typed::union_map<pair<Domain, Range>, Range2> intersect_domain_wrapped_domain(const typed::set<Domain> &domain) const;
11414 inline typed::union_map<pair<Domain, Range>, Range2> intersect_params(const typed::set<> &set) const;
11415 inline typed::union_map<pair<Domain, Range>, Range2> intersect_params(const typed::basic_set<> &set) const;
11416 inline typed::union_map<pair<Domain, Range>, Range2> intersect_params(const typed::point<> &set) const;
11417 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::space<Range2> &space) const;
11418 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range(const typed::union_set<Range2> &uset) const;
11419 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
11420 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete;
11421 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete;
11422 inline typed::union_map<pair<Domain, Range>, Range2> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
11423 inline typed::union_map<pair<Domain, Range>, Range2> lexmax() const;
11424 inline typed::union_map<pair<Domain, Range>, Range2> lexmin() const;
11425 inline typed::map_list<pair<Domain, Range>, Range2> map_list() const;
11426 inline typed::map_list<pair<Domain, Range>, Range2> get_map_list() const = delete;
11427 inline typed::set<> params() const;
11428 template <typename Domain2>
11429 inline typed::union_map<Domain2, Range2> preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
11430 template <typename Domain2>
11431 inline typed::union_map<Domain2, Range2> preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const;
11432 template <typename Domain2>
11433 inline typed::union_map<Domain2, Range2> preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
11434 template <typename Domain2>
11435 inline typed::union_map<Domain2, Range2> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
11436 template <typename Arg3>
11437 inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const;
11438 template <typename Arg3>
11439 inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const;
11440 template <typename Arg3>
11441 inline typed::union_map<pair<Domain, Range>, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const;
11442 template <typename Domain2, typename Arg3>
11443 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
11444 template <typename Domain2, typename Arg3>
11445 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::basic_map<Domain2, Arg3> &umap2) const;
11446 template <typename Domain2, typename Arg3>
11447 inline typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> product(const typed::map<Domain2, Arg3> &umap2) const;
11448 inline typed::union_map<pair<Domain, Range>, Range2> project_out_all_params() const;
11449 inline typed::union_map<pair<Domain, Range>, Range2> project_out_param(const typed::id<Anonymous> &id) const;
11450 inline typed::union_map<pair<Domain, Range>, Range2> project_out_param(const std::string &id) const;
11451 inline typed::union_map<pair<Domain, Range>, Range2> project_out_param(const typed::id_list<Anonymous> &list) const;
11452 inline typed::union_set<Range2> range() const;
11453 inline typed::union_map<pair<Domain, Range>, Range2> range_factor_domain() const = delete;
11454 inline typed::union_map<pair<Domain, Range>, Range2> range_factor_range() const = delete;
11455 inline typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> range_map() const;
11456 template <typename Arg3>
11457 inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const;
11458 template <typename Arg3>
11459 inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &umap2) const;
11460 template <typename Arg3>
11461 inline typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> range_product(const typed::map<pair<Domain, Range>, Arg3> &umap2) const;
11462 inline typed::union_map<pair<Domain, Range>, Range2> range_reverse() const = delete;
11463 inline typed::union_map<Range2, pair<Domain, Range>> reverse() const;
11464 inline typed::space<> space() const;
11465 inline typed::space<pair<Domain, Range>, Range2> get_space() const = delete;
11466 inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
11467 inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const;
11468 inline typed::union_map<pair<Domain, Range>, Range2> subtract(const typed::map<pair<Domain, Range>, Range2> &umap2) const;
11469 inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const;
11470 inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::basic_set<pair<Domain, Range>> &dom) const;
11471 inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::point<pair<Domain, Range>> &dom) const;
11472 inline typed::union_map<pair<Domain, Range>, Range2> subtract_domain(const typed::set<pair<Domain, Range>> &dom) const;
11473 inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::union_set<Range2> &dom) const;
11474 inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::basic_set<Range2> &dom) const;
11475 inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::point<Range2> &dom) const;
11476 inline typed::union_map<pair<Domain, Range>, Range2> subtract_range(const typed::set<Range2> &dom) const;
11477 inline typed::union_map<pair<Domain, Range>, Range2> uncurry() const = delete;
11478 inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const;
11479 inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const;
11480 inline typed::union_map<pair<Domain, Range>, Range2> unite(const typed::map<pair<Domain, Range>, Range2> &umap2) const;
11481 inline typed::union_map<pair<Domain, Range>, Range2> universe() const;
11482 inline typed::union_set<pair<pair<Domain, Range>, Range2>> wrap() const;
11485 template <typename Domain>
11486 struct union_map<Domain, Domain> : public isl::union_map {
11487 template <typename...>
11488 friend struct aff;
11489 template <typename...>
11490 friend struct aff_list;
11491 template <typename...>
11492 friend struct basic_map;
11493 template <typename...>
11494 friend struct basic_set;
11495 template <typename...>
11496 friend struct fixed_box;
11497 template <typename...>
11498 friend struct id;
11499 template <typename...>
11500 friend struct id_list;
11501 template <typename...>
11502 friend struct map;
11503 template <typename...>
11504 friend struct map_list;
11505 template <typename...>
11506 friend struct multi_aff;
11507 template <typename...>
11508 friend struct multi_id;
11509 template <typename...>
11510 friend struct multi_pw_aff;
11511 template <typename...>
11512 friend struct multi_union_pw_aff;
11513 template <typename...>
11514 friend struct multi_val;
11515 template <typename...>
11516 friend struct point;
11517 template <typename...>
11518 friend struct pw_aff;
11519 template <typename...>
11520 friend struct pw_aff_list;
11521 template <typename...>
11522 friend struct pw_multi_aff;
11523 template <typename...>
11524 friend struct pw_multi_aff_list;
11525 template <typename...>
11526 friend struct set;
11527 template <typename...>
11528 friend struct set_list;
11529 template <typename...>
11530 friend struct space;
11531 template <typename...>
11532 friend struct union_map;
11533 template <typename...>
11534 friend struct union_pw_aff;
11535 template <typename...>
11536 friend struct union_pw_aff_list;
11537 template <typename...>
11538 friend struct union_pw_multi_aff;
11539 template <typename...>
11540 friend struct union_set;
11541 template <typename...>
11542 friend struct union_set_list;
11543 template <typename...>
11544 friend struct val;
11545 template <typename...>
11546 friend struct val_list;
11548 union_map() = default;
11549 template <typename Arg1,
11550 typename std::enable_if<
11551 std::is_base_of<Domain, Arg1>{},
11552 bool>::type = true>
11553 union_map(const union_map<Arg1, Arg1> &obj) : isl::union_map(obj) {}
11554 private:
11555 template <typename base,
11556 typename std::enable_if<
11557 std::is_same<base, isl::union_map>{}, bool>::type = true>
11558 union_map(const base &obj) : isl::union_map(obj) {}
11559 public:
11560 static union_map from(const isl::union_map &obj) {
11561 return union_map(obj);
11563 inline /* implicit */ union_map(const typed::basic_map<Domain, Domain> &bmap);
11564 inline /* implicit */ union_map(const typed::map<Domain, Domain> &map);
11565 inline explicit union_map(const isl::ctx &ctx, const std::string &str);
11566 template <typename Domain2>
11567 inline typed::union_map<Domain2, Domain> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
11568 template <typename Domain2>
11569 inline typed::union_map<Domain2, Domain> apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const;
11570 template <typename Domain2>
11571 inline typed::union_map<Domain2, Domain> apply_domain(const typed::map<Domain, Domain2> &umap2) const;
11572 template <typename Range2>
11573 inline typed::union_map<Domain, Range2> apply_range(const typed::union_map<Domain, Range2> &umap2) const;
11574 template <typename Range2>
11575 inline typed::union_map<Domain, Range2> apply_range(const typed::basic_map<Domain, Range2> &umap2) const;
11576 template <typename Range2>
11577 inline typed::union_map<Domain, Range2> apply_range(const typed::map<Domain, Range2> &umap2) const;
11578 inline typed::map<Domain, Domain> as_map() const;
11579 inline typed::multi_union_pw_aff<Domain, Domain> as_multi_union_pw_aff() const;
11580 inline typed::union_pw_multi_aff<Domain, Domain> as_union_pw_multi_aff() const;
11581 inline typed::union_set<Domain> bind_range(const typed::multi_id<Domain> &tuple) const;
11582 inline typed::union_map<Domain, Domain> coalesce() const;
11583 inline typed::union_map<Domain, Domain> curry() const = delete;
11584 inline typed::union_set<Domain> deltas() const;
11585 inline typed::union_map<Domain, Domain> detect_equalities() const;
11586 inline typed::union_set<Domain> domain() const;
11587 inline typed::union_map<Domain, Domain> domain_factor_domain() const = delete;
11588 inline typed::union_map<Domain, Domain> domain_factor_range() const = delete;
11589 inline typed::union_map<pair<Domain, Domain>, Domain> domain_map() const;
11590 inline typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> domain_map_union_pw_multi_aff() const;
11591 template <typename Domain2>
11592 inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::union_map<Domain2, Domain> &umap2) const;
11593 template <typename Domain2>
11594 inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::basic_map<Domain2, Domain> &umap2) const;
11595 template <typename Domain2>
11596 inline typed::union_map<pair<Domain, Domain2>, Domain> domain_product(const typed::map<Domain2, Domain> &umap2) const;
11597 inline typed::union_map<Domain, Domain> domain_reverse() const = delete;
11598 inline typed::union_map<Domain, Domain> drop_unused_params() const;
11599 static inline typed::union_map<Domain, Domain> empty(const isl::ctx &ctx);
11600 template <typename Range>
11601 inline typed::union_map<Domain, Domain> eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const;
11602 template <typename Range>
11603 inline typed::union_map<Domain, Domain> eq_at(const typed::multi_pw_aff<Domain, Range> &mupa) const;
11604 inline typed::union_map<Domain, Domain> eq_at(const typed::union_pw_aff<Domain, Anonymous> &mupa) const;
11605 inline bool every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const;
11606 inline typed::map<Domain, Domain> extract_map(const typed::space<Domain, Domain> &space) const;
11607 inline void foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const;
11608 inline typed::union_map<Domain, Domain> gist(const typed::union_map<Domain, Domain> &context) const;
11609 inline typed::union_map<Domain, Domain> gist(const typed::basic_map<Domain, Domain> &context) const;
11610 inline typed::union_map<Domain, Domain> gist(const typed::map<Domain, Domain> &context) const;
11611 inline typed::union_map<Domain, Domain> gist_domain(const typed::union_set<Domain> &uset) const;
11612 inline typed::union_map<Domain, Domain> gist_domain(const typed::basic_set<Domain> &uset) const;
11613 inline typed::union_map<Domain, Domain> gist_domain(const typed::point<Domain> &uset) const;
11614 inline typed::union_map<Domain, Domain> gist_domain(const typed::set<Domain> &uset) const;
11615 inline typed::union_map<Domain, Domain> gist_params(const typed::set<> &set) const;
11616 inline typed::union_map<Domain, Domain> gist_params(const typed::basic_set<> &set) const;
11617 inline typed::union_map<Domain, Domain> gist_params(const typed::point<> &set) const;
11618 inline typed::union_map<Domain, Domain> intersect(const typed::union_map<Domain, Domain> &umap2) const;
11619 inline typed::union_map<Domain, Domain> intersect(const typed::basic_map<Domain, Domain> &umap2) const;
11620 inline typed::union_map<Domain, Domain> intersect(const typed::map<Domain, Domain> &umap2) const;
11621 inline typed::union_map<Domain, Domain> intersect_domain(const typed::space<Domain> &space) const;
11622 inline typed::union_map<Domain, Domain> intersect_domain(const typed::union_set<Domain> &uset) const;
11623 inline typed::union_map<Domain, Domain> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
11624 inline typed::union_map<Domain, Domain> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete;
11625 inline typed::union_map<Domain, Domain> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete;
11626 inline typed::union_map<Domain, Domain> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
11627 inline typed::union_map<Domain, Domain> intersect_params(const typed::set<> &set) const;
11628 inline typed::union_map<Domain, Domain> intersect_params(const typed::basic_set<> &set) const;
11629 inline typed::union_map<Domain, Domain> intersect_params(const typed::point<> &set) const;
11630 inline typed::union_map<Domain, Domain> intersect_range(const typed::space<Domain> &space) const;
11631 inline typed::union_map<Domain, Domain> intersect_range(const typed::union_set<Domain> &uset) const;
11632 inline typed::union_map<Domain, Domain> intersect_range_wrapped_domain(const typed::union_set<> &domain) const = delete;
11633 inline typed::union_map<Domain, Domain> intersect_range_wrapped_domain(const typed::basic_set<> &domain) const = delete;
11634 inline typed::union_map<Domain, Domain> intersect_range_wrapped_domain(const typed::point<> &domain) const = delete;
11635 inline typed::union_map<Domain, Domain> intersect_range_wrapped_domain(const typed::set<> &domain) const = delete;
11636 inline typed::union_map<Domain, Domain> lexmax() const;
11637 inline typed::union_map<Domain, Domain> lexmin() const;
11638 inline typed::map_list<Domain, Domain> map_list() const;
11639 inline typed::map_list<Domain, Domain> get_map_list() const = delete;
11640 inline typed::set<> params() const;
11641 template <typename Domain2>
11642 inline typed::union_map<Domain2, Domain> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
11643 template <typename Domain2>
11644 inline typed::union_map<Domain2, Domain> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
11645 template <typename Domain2>
11646 inline typed::union_map<Domain2, Domain> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
11647 template <typename Domain2>
11648 inline typed::union_map<Domain2, Domain> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
11649 template <typename Range2>
11650 inline typed::union_map<Domain, Range2> preimage_range(const typed::multi_aff<Range2, Domain> &ma) const;
11651 template <typename Range2>
11652 inline typed::union_map<Domain, Range2> preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const;
11653 template <typename Range2>
11654 inline typed::union_map<Domain, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const;
11655 template <typename Domain2, typename Range2>
11656 inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
11657 template <typename Domain2, typename Range2>
11658 inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::basic_map<Domain2, Range2> &umap2) const;
11659 template <typename Domain2, typename Range2>
11660 inline typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> product(const typed::map<Domain2, Range2> &umap2) const;
11661 inline typed::union_map<Domain, Domain> project_out_all_params() const;
11662 inline typed::union_map<Domain, Domain> project_out_param(const typed::id<Anonymous> &id) const;
11663 inline typed::union_map<Domain, Domain> project_out_param(const std::string &id) const;
11664 inline typed::union_map<Domain, Domain> project_out_param(const typed::id_list<Anonymous> &list) const;
11665 inline typed::union_set<Domain> range() const;
11666 inline typed::union_map<Domain, Domain> range_factor_domain() const = delete;
11667 inline typed::union_map<Domain, Domain> range_factor_range() const = delete;
11668 inline typed::union_map<pair<Domain, Domain>, Domain> range_map() const;
11669 template <typename Range2>
11670 inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::union_map<Domain, Range2> &umap2) const;
11671 template <typename Range2>
11672 inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::basic_map<Domain, Range2> &umap2) const;
11673 template <typename Range2>
11674 inline typed::union_map<Domain, pair<Domain, Range2>> range_product(const typed::map<Domain, Range2> &umap2) const;
11675 inline typed::union_map<Domain, Domain> range_reverse() const = delete;
11676 inline typed::union_map<Domain, Domain> reverse() const;
11677 inline typed::space<> space() const;
11678 inline typed::space<Domain, Domain> get_space() const = delete;
11679 inline typed::union_map<Domain, Domain> subtract(const typed::union_map<Domain, Domain> &umap2) const;
11680 inline typed::union_map<Domain, Domain> subtract(const typed::basic_map<Domain, Domain> &umap2) const;
11681 inline typed::union_map<Domain, Domain> subtract(const typed::map<Domain, Domain> &umap2) const;
11682 inline typed::union_map<Domain, Domain> subtract_domain(const typed::union_set<Domain> &dom) const;
11683 inline typed::union_map<Domain, Domain> subtract_domain(const typed::basic_set<Domain> &dom) const;
11684 inline typed::union_map<Domain, Domain> subtract_domain(const typed::point<Domain> &dom) const;
11685 inline typed::union_map<Domain, Domain> subtract_domain(const typed::set<Domain> &dom) const;
11686 inline typed::union_map<Domain, Domain> subtract_range(const typed::union_set<Domain> &dom) const;
11687 inline typed::union_map<Domain, Domain> subtract_range(const typed::basic_set<Domain> &dom) const;
11688 inline typed::union_map<Domain, Domain> subtract_range(const typed::point<Domain> &dom) const;
11689 inline typed::union_map<Domain, Domain> subtract_range(const typed::set<Domain> &dom) const;
11690 inline typed::union_map<Domain, Domain> uncurry() const = delete;
11691 inline typed::union_map<Domain, Domain> unite(const typed::union_map<Domain, Domain> &umap2) const;
11692 inline typed::union_map<Domain, Domain> unite(const typed::basic_map<Domain, Domain> &umap2) const;
11693 inline typed::union_map<Domain, Domain> unite(const typed::map<Domain, Domain> &umap2) const;
11694 inline typed::union_map<Domain, Domain> universe() const;
11695 inline typed::union_set<pair<Domain, Domain>> wrap() const;
11698 template <typename Domain, typename Range, typename Range2>
11699 struct union_map<Domain, pair<Range, Range2>> : public isl::union_map {
11700 template <typename...>
11701 friend struct aff;
11702 template <typename...>
11703 friend struct aff_list;
11704 template <typename...>
11705 friend struct basic_map;
11706 template <typename...>
11707 friend struct basic_set;
11708 template <typename...>
11709 friend struct fixed_box;
11710 template <typename...>
11711 friend struct id;
11712 template <typename...>
11713 friend struct id_list;
11714 template <typename...>
11715 friend struct map;
11716 template <typename...>
11717 friend struct map_list;
11718 template <typename...>
11719 friend struct multi_aff;
11720 template <typename...>
11721 friend struct multi_id;
11722 template <typename...>
11723 friend struct multi_pw_aff;
11724 template <typename...>
11725 friend struct multi_union_pw_aff;
11726 template <typename...>
11727 friend struct multi_val;
11728 template <typename...>
11729 friend struct point;
11730 template <typename...>
11731 friend struct pw_aff;
11732 template <typename...>
11733 friend struct pw_aff_list;
11734 template <typename...>
11735 friend struct pw_multi_aff;
11736 template <typename...>
11737 friend struct pw_multi_aff_list;
11738 template <typename...>
11739 friend struct set;
11740 template <typename...>
11741 friend struct set_list;
11742 template <typename...>
11743 friend struct space;
11744 template <typename...>
11745 friend struct union_map;
11746 template <typename...>
11747 friend struct union_pw_aff;
11748 template <typename...>
11749 friend struct union_pw_aff_list;
11750 template <typename...>
11751 friend struct union_pw_multi_aff;
11752 template <typename...>
11753 friend struct union_set;
11754 template <typename...>
11755 friend struct union_set_list;
11756 template <typename...>
11757 friend struct val;
11758 template <typename...>
11759 friend struct val_list;
11761 union_map() = default;
11762 template <typename Arg1, typename Arg2, typename Arg3,
11763 typename std::enable_if<
11764 std::is_base_of<Domain, Arg1>{} &&
11765 std::is_base_of<Range, Arg2>{} &&
11766 std::is_base_of<Range2, Arg3>{},
11767 bool>::type = true>
11768 union_map(const union_map<Arg1, pair<Arg2, Arg3>> &obj) : isl::union_map(obj) {}
11769 private:
11770 template <typename base,
11771 typename std::enable_if<
11772 std::is_same<base, isl::union_map>{}, bool>::type = true>
11773 union_map(const base &obj) : isl::union_map(obj) {}
11774 public:
11775 static union_map from(const isl::union_map &obj) {
11776 return union_map(obj);
11778 inline /* implicit */ union_map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap);
11779 inline /* implicit */ union_map(const typed::map<Domain, pair<Range, Range2>> &map);
11780 inline explicit union_map(const isl::ctx &ctx, const std::string &str);
11781 template <typename Domain2>
11782 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<Domain, Domain2> &umap2) const;
11783 template <typename Domain2>
11784 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const;
11785 template <typename Domain2>
11786 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<Domain, Domain2> &umap2) const;
11787 template <typename Arg3>
11788 inline typed::union_map<Domain, Arg3> apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const;
11789 template <typename Arg3>
11790 inline typed::union_map<Domain, Arg3> apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &umap2) const;
11791 template <typename Arg3>
11792 inline typed::union_map<Domain, Arg3> apply_range(const typed::map<pair<Range, Range2>, Arg3> &umap2) const;
11793 inline typed::map<Domain, pair<Range, Range2>> as_map() const;
11794 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
11795 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> as_union_pw_multi_aff() const;
11796 inline typed::union_set<Domain> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
11797 inline typed::union_map<Domain, pair<Range, Range2>> coalesce() const;
11798 inline typed::union_map<Domain, pair<Range, Range2>> curry() const = delete;
11799 inline typed::union_set<Domain, pair<Range, Range2>> deltas() const = delete;
11800 inline typed::union_map<Domain, pair<Range, Range2>> detect_equalities() const;
11801 inline typed::union_set<Domain> domain() const;
11802 inline typed::union_map<Domain, pair<Range, Range2>> domain_factor_domain() const = delete;
11803 inline typed::union_map<Domain, pair<Range, Range2>> domain_factor_range() const = delete;
11804 inline typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> domain_map() const;
11805 inline typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> domain_map_union_pw_multi_aff() const;
11806 template <typename Domain2>
11807 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
11808 template <typename Domain2>
11809 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const;
11810 template <typename Domain2>
11811 inline typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const;
11812 inline typed::union_map<Domain, pair<Range, Range2>> domain_reverse() const = delete;
11813 inline typed::union_map<Domain, pair<Range, Range2>> drop_unused_params() const;
11814 static inline typed::union_map<Domain, pair<Range, Range2>> empty(const isl::ctx &ctx);
11815 inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
11816 inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
11817 inline typed::union_map<Domain, pair<Range, Range2>> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
11818 inline bool every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const;
11819 inline typed::map<Domain, pair<Range, Range2>> extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const;
11820 inline void foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const;
11821 inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const;
11822 inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const;
11823 inline typed::union_map<Domain, pair<Range, Range2>> gist(const typed::map<Domain, pair<Range, Range2>> &context) const;
11824 inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::union_set<Domain> &uset) const;
11825 inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::basic_set<Domain> &uset) const;
11826 inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::point<Domain> &uset) const;
11827 inline typed::union_map<Domain, pair<Range, Range2>> gist_domain(const typed::set<Domain> &uset) const;
11828 inline typed::union_map<Domain, pair<Range, Range2>> gist_params(const typed::set<> &set) const;
11829 inline typed::union_map<Domain, pair<Range, Range2>> gist_params(const typed::basic_set<> &set) const;
11830 inline typed::union_map<Domain, pair<Range, Range2>> gist_params(const typed::point<> &set) const;
11831 inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
11832 inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const;
11833 inline typed::union_map<Domain, pair<Range, Range2>> intersect(const typed::map<Domain, pair<Range, Range2>> &umap2) const;
11834 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
11835 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
11836 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<> &domain) const = delete;
11837 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::basic_set<> &domain) const = delete;
11838 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::point<> &domain) const = delete;
11839 inline typed::union_map<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<> &domain) const = delete;
11840 inline typed::union_map<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
11841 inline typed::union_map<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
11842 inline typed::union_map<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
11843 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
11844 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
11845 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const;
11846 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const;
11847 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::point<Range> &domain) const;
11848 inline typed::union_map<Domain, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::set<Range> &domain) const;
11849 inline typed::union_map<Domain, pair<Range, Range2>> lexmax() const;
11850 inline typed::union_map<Domain, pair<Range, Range2>> lexmin() const;
11851 inline typed::map_list<Domain, pair<Range, Range2>> map_list() const;
11852 inline typed::map_list<Domain, pair<Range, Range2>> get_map_list() const = delete;
11853 inline typed::set<> params() const;
11854 template <typename Domain2>
11855 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const;
11856 template <typename Domain2>
11857 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const;
11858 template <typename Domain2>
11859 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
11860 template <typename Domain2>
11861 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
11862 template <typename Arg3>
11863 inline typed::union_map<Domain, Arg3> preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const;
11864 template <typename Arg3>
11865 inline typed::union_map<Domain, Arg3> preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const;
11866 template <typename Arg3>
11867 inline typed::union_map<Domain, Arg3> preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const;
11868 template <typename Domain2, typename Arg3>
11869 inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::union_map<Domain2, Arg3> &umap2) const;
11870 template <typename Domain2, typename Arg3>
11871 inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::basic_map<Domain2, Arg3> &umap2) const;
11872 template <typename Domain2, typename Arg3>
11873 inline typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> product(const typed::map<Domain2, Arg3> &umap2) const;
11874 inline typed::union_map<Domain, pair<Range, Range2>> project_out_all_params() const;
11875 inline typed::union_map<Domain, pair<Range, Range2>> project_out_param(const typed::id<Anonymous> &id) const;
11876 inline typed::union_map<Domain, pair<Range, Range2>> project_out_param(const std::string &id) const;
11877 inline typed::union_map<Domain, pair<Range, Range2>> project_out_param(const typed::id_list<Anonymous> &list) const;
11878 inline typed::union_set<pair<Range, Range2>> range() const;
11879 inline typed::union_map<Domain, Range> range_factor_domain() const;
11880 inline typed::union_map<Domain, Range2> range_factor_range() const;
11881 inline typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
11882 template <typename Arg3>
11883 inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_map<Domain, Arg3> &umap2) const;
11884 template <typename Arg3>
11885 inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::basic_map<Domain, Arg3> &umap2) const;
11886 template <typename Arg3>
11887 inline typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::map<Domain, Arg3> &umap2) const;
11888 inline typed::union_map<Domain, pair<Range2, Range>> range_reverse() const;
11889 inline typed::union_map<pair<Range, Range2>, Domain> reverse() const;
11890 inline typed::space<> space() const;
11891 inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
11892 inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
11893 inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const;
11894 inline typed::union_map<Domain, pair<Range, Range2>> subtract(const typed::map<Domain, pair<Range, Range2>> &umap2) const;
11895 inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &dom) const;
11896 inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::basic_set<Domain> &dom) const;
11897 inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::point<Domain> &dom) const;
11898 inline typed::union_map<Domain, pair<Range, Range2>> subtract_domain(const typed::set<Domain> &dom) const;
11899 inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
11900 inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const;
11901 inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::point<pair<Range, Range2>> &dom) const;
11902 inline typed::union_map<Domain, pair<Range, Range2>> subtract_range(const typed::set<pair<Range, Range2>> &dom) const;
11903 inline typed::union_map<pair<Domain, Range>, Range2> uncurry() const;
11904 inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const;
11905 inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const;
11906 inline typed::union_map<Domain, pair<Range, Range2>> unite(const typed::map<Domain, pair<Range, Range2>> &umap2) const;
11907 inline typed::union_map<Domain, pair<Range, Range2>> universe() const;
11908 inline typed::union_set<pair<Domain, pair<Range, Range2>>> wrap() const;
11911 template <typename T1, typename T2>
11912 struct union_map<pair<T1, T2>, pair<T1, T2>> : public isl::union_map {
11913 template <typename...>
11914 friend struct aff;
11915 template <typename...>
11916 friend struct aff_list;
11917 template <typename...>
11918 friend struct basic_map;
11919 template <typename...>
11920 friend struct basic_set;
11921 template <typename...>
11922 friend struct fixed_box;
11923 template <typename...>
11924 friend struct id;
11925 template <typename...>
11926 friend struct id_list;
11927 template <typename...>
11928 friend struct map;
11929 template <typename...>
11930 friend struct map_list;
11931 template <typename...>
11932 friend struct multi_aff;
11933 template <typename...>
11934 friend struct multi_id;
11935 template <typename...>
11936 friend struct multi_pw_aff;
11937 template <typename...>
11938 friend struct multi_union_pw_aff;
11939 template <typename...>
11940 friend struct multi_val;
11941 template <typename...>
11942 friend struct point;
11943 template <typename...>
11944 friend struct pw_aff;
11945 template <typename...>
11946 friend struct pw_aff_list;
11947 template <typename...>
11948 friend struct pw_multi_aff;
11949 template <typename...>
11950 friend struct pw_multi_aff_list;
11951 template <typename...>
11952 friend struct set;
11953 template <typename...>
11954 friend struct set_list;
11955 template <typename...>
11956 friend struct space;
11957 template <typename...>
11958 friend struct union_map;
11959 template <typename...>
11960 friend struct union_pw_aff;
11961 template <typename...>
11962 friend struct union_pw_aff_list;
11963 template <typename...>
11964 friend struct union_pw_multi_aff;
11965 template <typename...>
11966 friend struct union_set;
11967 template <typename...>
11968 friend struct union_set_list;
11969 template <typename...>
11970 friend struct val;
11971 template <typename...>
11972 friend struct val_list;
11974 union_map() = default;
11975 template <typename Arg1, typename Arg2,
11976 typename std::enable_if<
11977 std::is_base_of<T1, Arg1>{} &&
11978 std::is_base_of<T2, Arg2>{},
11979 bool>::type = true>
11980 union_map(const union_map<pair<Arg1, Arg2>, pair<Arg1, Arg2>> &obj) : isl::union_map(obj) {}
11981 private:
11982 template <typename base,
11983 typename std::enable_if<
11984 std::is_same<base, isl::union_map>{}, bool>::type = true>
11985 union_map(const base &obj) : isl::union_map(obj) {}
11986 public:
11987 static union_map from(const isl::union_map &obj) {
11988 return union_map(obj);
11990 inline /* implicit */ union_map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap);
11991 inline /* implicit */ union_map(const typed::map<pair<T1, T2>, pair<T1, T2>> &map);
11992 inline explicit union_map(const isl::ctx &ctx, const std::string &str);
11993 template <typename Domain2>
11994 inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
11995 template <typename Domain2>
11996 inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const;
11997 template <typename Domain2>
11998 inline typed::union_map<Domain2, pair<T1, T2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const;
11999 template <typename Range2>
12000 inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
12001 template <typename Range2>
12002 inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const;
12003 template <typename Range2>
12004 inline typed::union_map<pair<T1, T2>, Range2> apply_range(const typed::map<pair<T1, T2>, Range2> &umap2) const;
12005 inline typed::map<pair<T1, T2>, pair<T1, T2>> as_map() const;
12006 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> as_multi_union_pw_aff() const;
12007 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> as_union_pw_multi_aff() const;
12008 inline typed::union_set<pair<T1, T2>> bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const;
12009 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> coalesce() const;
12010 inline typed::union_map<T1, pair<T2, pair<T1, T2>>> curry() const;
12011 inline typed::union_set<pair<T1, T2>> deltas() const;
12012 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> detect_equalities() const;
12013 inline typed::union_set<pair<T1, T2>> domain() const;
12014 inline typed::union_map<T1, pair<T1, T2>> domain_factor_domain() const;
12015 inline typed::union_map<T2, pair<T1, T2>> domain_factor_range() const;
12016 inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map() const;
12017 inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
12018 template <typename Domain2>
12019 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const;
12020 template <typename Domain2>
12021 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &umap2) const;
12022 template <typename Domain2>
12023 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> domain_product(const typed::map<Domain2, pair<T1, T2>> &umap2) const;
12024 inline typed::union_map<pair<T2, T1>, pair<T1, T2>> domain_reverse() const;
12025 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> drop_unused_params() const;
12026 static inline typed::union_map<pair<T1, T2>, pair<T1, T2>> empty(const isl::ctx &ctx);
12027 template <typename Range>
12028 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const;
12029 template <typename Range>
12030 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mupa) const;
12031 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> eq_at(const typed::union_pw_aff<pair<T1, T2>, Anonymous> &mupa) const;
12032 inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const;
12033 inline typed::map<pair<T1, T2>, pair<T1, T2>> extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const;
12034 inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const;
12035 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const;
12036 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const;
12037 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const;
12038 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
12039 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const;
12040 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::point<pair<T1, T2>> &uset) const;
12041 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_domain(const typed::set<pair<T1, T2>> &uset) const;
12042 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_params(const typed::set<> &set) const;
12043 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_params(const typed::basic_set<> &set) const;
12044 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> gist_params(const typed::point<> &set) const;
12045 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12046 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12047 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12048 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
12049 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
12050 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const;
12051 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const;
12052 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::point<T1> &domain) const;
12053 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_domain_wrapped_domain(const typed::set<T1> &domain) const;
12054 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::set<> &set) const;
12055 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::basic_set<> &set) const;
12056 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_params(const typed::point<> &set) const;
12057 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::space<pair<T1, T2>> &space) const;
12058 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range(const typed::union_set<pair<T1, T2>> &uset) const;
12059 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::union_set<T1> &domain) const;
12060 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::basic_set<T1> &domain) const;
12061 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::point<T1> &domain) const;
12062 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> intersect_range_wrapped_domain(const typed::set<T1> &domain) const;
12063 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> lexmax() const;
12064 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> lexmin() const;
12065 inline typed::map_list<pair<T1, T2>, pair<T1, T2>> map_list() const;
12066 inline typed::map_list<pair<T1, T2>, pair<T1, T2>> get_map_list() const = delete;
12067 inline typed::set<> params() const;
12068 template <typename Domain2>
12069 inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
12070 template <typename Domain2>
12071 inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
12072 template <typename Domain2>
12073 inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
12074 template <typename Domain2>
12075 inline typed::union_map<Domain2, pair<T1, T2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
12076 template <typename Range2>
12077 inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const;
12078 template <typename Range2>
12079 inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const;
12080 template <typename Range2>
12081 inline typed::union_map<pair<T1, T2>, Range2> preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const;
12082 template <typename Domain2, typename Range2>
12083 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::union_map<Domain2, Range2> &umap2) const;
12084 template <typename Domain2, typename Range2>
12085 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::basic_map<Domain2, Range2> &umap2) const;
12086 template <typename Domain2, typename Range2>
12087 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> product(const typed::map<Domain2, Range2> &umap2) const;
12088 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> project_out_all_params() const;
12089 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> project_out_param(const typed::id<Anonymous> &id) const;
12090 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> project_out_param(const std::string &id) const;
12091 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> project_out_param(const typed::id_list<Anonymous> &list) const;
12092 inline typed::union_set<pair<T1, T2>> range() const;
12093 inline typed::union_map<pair<T1, T2>, T1> range_factor_domain() const;
12094 inline typed::union_map<pair<T1, T2>, T2> range_factor_range() const;
12095 inline typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> range_map() const;
12096 template <typename Range2>
12097 inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const;
12098 template <typename Range2>
12099 inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const;
12100 template <typename Range2>
12101 inline typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> range_product(const typed::map<pair<T1, T2>, Range2> &umap2) const;
12102 inline typed::union_map<pair<T1, T2>, pair<T2, T1>> range_reverse() const;
12103 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> reverse() const;
12104 inline typed::space<> space() const;
12105 inline typed::space<pair<T1, T2>, pair<T1, T2>> get_space() const = delete;
12106 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12107 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12108 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12109 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
12110 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const;
12111 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::point<pair<T1, T2>> &dom) const;
12112 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_domain(const typed::set<pair<T1, T2>> &dom) const;
12113 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::union_set<pair<T1, T2>> &dom) const;
12114 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::basic_set<pair<T1, T2>> &dom) const;
12115 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::point<pair<T1, T2>> &dom) const;
12116 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> subtract_range(const typed::set<pair<T1, T2>> &dom) const;
12117 inline typed::union_map<pair<pair<T1, T2>, T1>, T2> uncurry() const;
12118 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12119 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12120 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const;
12121 inline typed::union_map<pair<T1, T2>, pair<T1, T2>> universe() const;
12122 inline typed::union_set<pair<pair<T1, T2>, pair<T1, T2>>> wrap() const;
12125 template <typename T1, typename T2, typename Range, typename Range2>
12126 struct union_map<pair<T1, T2>, pair<Range, Range2>> : public isl::union_map {
12127 template <typename...>
12128 friend struct aff;
12129 template <typename...>
12130 friend struct aff_list;
12131 template <typename...>
12132 friend struct basic_map;
12133 template <typename...>
12134 friend struct basic_set;
12135 template <typename...>
12136 friend struct fixed_box;
12137 template <typename...>
12138 friend struct id;
12139 template <typename...>
12140 friend struct id_list;
12141 template <typename...>
12142 friend struct map;
12143 template <typename...>
12144 friend struct map_list;
12145 template <typename...>
12146 friend struct multi_aff;
12147 template <typename...>
12148 friend struct multi_id;
12149 template <typename...>
12150 friend struct multi_pw_aff;
12151 template <typename...>
12152 friend struct multi_union_pw_aff;
12153 template <typename...>
12154 friend struct multi_val;
12155 template <typename...>
12156 friend struct point;
12157 template <typename...>
12158 friend struct pw_aff;
12159 template <typename...>
12160 friend struct pw_aff_list;
12161 template <typename...>
12162 friend struct pw_multi_aff;
12163 template <typename...>
12164 friend struct pw_multi_aff_list;
12165 template <typename...>
12166 friend struct set;
12167 template <typename...>
12168 friend struct set_list;
12169 template <typename...>
12170 friend struct space;
12171 template <typename...>
12172 friend struct union_map;
12173 template <typename...>
12174 friend struct union_pw_aff;
12175 template <typename...>
12176 friend struct union_pw_aff_list;
12177 template <typename...>
12178 friend struct union_pw_multi_aff;
12179 template <typename...>
12180 friend struct union_set;
12181 template <typename...>
12182 friend struct union_set_list;
12183 template <typename...>
12184 friend struct val;
12185 template <typename...>
12186 friend struct val_list;
12188 union_map() = default;
12189 template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
12190 typename std::enable_if<
12191 std::is_base_of<T1, Arg1>{} &&
12192 std::is_base_of<T2, Arg2>{} &&
12193 std::is_base_of<Range, Arg3>{} &&
12194 std::is_base_of<Range2, Arg4>{},
12195 bool>::type = true>
12196 union_map(const union_map<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::union_map(obj) {}
12197 private:
12198 template <typename base,
12199 typename std::enable_if<
12200 std::is_same<base, isl::union_map>{}, bool>::type = true>
12201 union_map(const base &obj) : isl::union_map(obj) {}
12202 public:
12203 static union_map from(const isl::union_map &obj) {
12204 return union_map(obj);
12206 inline /* implicit */ union_map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap);
12207 inline /* implicit */ union_map(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map);
12208 inline explicit union_map(const isl::ctx &ctx, const std::string &str);
12209 template <typename Domain2>
12210 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const;
12211 template <typename Domain2>
12212 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const;
12213 template <typename Domain2>
12214 inline typed::union_map<Domain2, pair<Range, Range2>> apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const;
12215 template <typename Arg2>
12216 inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const;
12217 template <typename Arg2>
12218 inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &umap2) const;
12219 template <typename Arg2>
12220 inline typed::union_map<pair<T1, T2>, Arg2> apply_range(const typed::map<pair<Range, Range2>, Arg2> &umap2) const;
12221 inline typed::map<pair<T1, T2>, pair<Range, Range2>> as_map() const;
12222 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
12223 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_union_pw_multi_aff() const;
12224 inline typed::union_set<pair<T1, T2>> bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const;
12225 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
12226 inline typed::union_map<T1, pair<T2, pair<Range, Range2>>> curry() const;
12227 inline typed::union_set<pair<T1, T2>, pair<Range, Range2>> deltas() const = delete;
12228 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> detect_equalities() const;
12229 inline typed::union_set<pair<T1, T2>> domain() const;
12230 inline typed::union_map<T1, pair<Range, Range2>> domain_factor_domain() const;
12231 inline typed::union_map<T2, pair<Range, Range2>> domain_factor_range() const;
12232 inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map() const;
12233 inline typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> domain_map_union_pw_multi_aff() const;
12234 template <typename Domain2>
12235 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const;
12236 template <typename Domain2>
12237 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const;
12238 template <typename Domain2>
12239 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const;
12240 inline typed::union_map<pair<T2, T1>, pair<Range, Range2>> domain_reverse() const;
12241 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> drop_unused_params() const;
12242 static inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> empty(const isl::ctx &ctx);
12243 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_union_pw_aff<> &mupa) const = delete;
12244 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::multi_pw_aff<> &mupa) const = delete;
12245 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> eq_at(const typed::union_pw_aff<> &mupa) const = delete;
12246 inline bool every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const;
12247 inline typed::map<pair<T1, T2>, pair<Range, Range2>> extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
12248 inline void foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const;
12249 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
12250 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const;
12251 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const;
12252 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::union_set<pair<T1, T2>> &uset) const;
12253 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const;
12254 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::point<pair<T1, T2>> &uset) const;
12255 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_domain(const typed::set<pair<T1, T2>> &uset) const;
12256 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::set<> &set) const;
12257 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::basic_set<> &set) const;
12258 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> gist_params(const typed::point<> &set) const;
12259 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12260 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12261 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12262 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
12263 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
12264 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const;
12265 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const;
12266 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::point<T1> &domain) const;
12267 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<T1> &domain) const;
12268 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
12269 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
12270 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
12271 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::space<pair<Range, Range2>> &space) const;
12272 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const;
12273 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const;
12274 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const;
12275 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::point<Range> &domain) const;
12276 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> intersect_range_wrapped_domain(const typed::set<Range> &domain) const;
12277 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> lexmax() const;
12278 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> lexmin() const;
12279 inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> map_list() const;
12280 inline typed::map_list<pair<T1, T2>, pair<Range, Range2>> get_map_list() const = delete;
12281 inline typed::set<> params() const;
12282 template <typename Domain2>
12283 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const;
12284 template <typename Domain2>
12285 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const;
12286 template <typename Domain2>
12287 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const;
12288 template <typename Domain2>
12289 inline typed::union_map<Domain2, pair<Range, Range2>> preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const;
12290 template <typename Arg2>
12291 inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const;
12292 template <typename Arg2>
12293 inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const;
12294 template <typename Arg2>
12295 inline typed::union_map<pair<T1, T2>, Arg2> preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const;
12296 template <typename Domain2, typename Arg2>
12297 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::union_map<Domain2, Arg2> &umap2) const;
12298 template <typename Domain2, typename Arg2>
12299 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::basic_map<Domain2, Arg2> &umap2) const;
12300 template <typename Domain2, typename Arg2>
12301 inline typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> product(const typed::map<Domain2, Arg2> &umap2) const;
12302 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> project_out_all_params() const;
12303 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const typed::id<Anonymous> &id) const;
12304 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const std::string &id) const;
12305 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> project_out_param(const typed::id_list<Anonymous> &list) const;
12306 inline typed::union_set<pair<Range, Range2>> range() const;
12307 inline typed::union_map<pair<T1, T2>, Range> range_factor_domain() const;
12308 inline typed::union_map<pair<T1, T2>, Range2> range_factor_range() const;
12309 inline typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> range_map() const;
12310 template <typename Arg2>
12311 inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const;
12312 template <typename Arg2>
12313 inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::basic_map<pair<T1, T2>, Arg2> &umap2) const;
12314 template <typename Arg2>
12315 inline typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::map<pair<T1, T2>, Arg2> &umap2) const;
12316 inline typed::union_map<pair<T1, T2>, pair<Range2, Range>> range_reverse() const;
12317 inline typed::union_map<pair<Range, Range2>, pair<T1, T2>> reverse() const;
12318 inline typed::space<> space() const;
12319 inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
12320 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12321 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12322 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12323 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const;
12324 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const;
12325 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::point<pair<T1, T2>> &dom) const;
12326 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::set<pair<T1, T2>> &dom) const;
12327 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const;
12328 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const;
12329 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::point<pair<Range, Range2>> &dom) const;
12330 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> subtract_range(const typed::set<pair<Range, Range2>> &dom) const;
12331 inline typed::union_map<pair<pair<T1, T2>, Range>, Range2> uncurry() const;
12332 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12333 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12334 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const;
12335 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> universe() const;
12336 inline typed::union_set<pair<pair<T1, T2>, pair<Range, Range2>>> wrap() const;
12339 template <>
12340 struct union_pw_aff<Anonymous> : public isl::union_pw_aff {
12341 template <typename...>
12342 friend struct aff;
12343 template <typename...>
12344 friend struct aff_list;
12345 template <typename...>
12346 friend struct basic_map;
12347 template <typename...>
12348 friend struct basic_set;
12349 template <typename...>
12350 friend struct fixed_box;
12351 template <typename...>
12352 friend struct id;
12353 template <typename...>
12354 friend struct id_list;
12355 template <typename...>
12356 friend struct map;
12357 template <typename...>
12358 friend struct map_list;
12359 template <typename...>
12360 friend struct multi_aff;
12361 template <typename...>
12362 friend struct multi_id;
12363 template <typename...>
12364 friend struct multi_pw_aff;
12365 template <typename...>
12366 friend struct multi_union_pw_aff;
12367 template <typename...>
12368 friend struct multi_val;
12369 template <typename...>
12370 friend struct point;
12371 template <typename...>
12372 friend struct pw_aff;
12373 template <typename...>
12374 friend struct pw_aff_list;
12375 template <typename...>
12376 friend struct pw_multi_aff;
12377 template <typename...>
12378 friend struct pw_multi_aff_list;
12379 template <typename...>
12380 friend struct set;
12381 template <typename...>
12382 friend struct set_list;
12383 template <typename...>
12384 friend struct space;
12385 template <typename...>
12386 friend struct union_map;
12387 template <typename...>
12388 friend struct union_pw_aff;
12389 template <typename...>
12390 friend struct union_pw_aff_list;
12391 template <typename...>
12392 friend struct union_pw_multi_aff;
12393 template <typename...>
12394 friend struct union_set;
12395 template <typename...>
12396 friend struct union_set_list;
12397 template <typename...>
12398 friend struct val;
12399 template <typename...>
12400 friend struct val_list;
12402 union_pw_aff() = default;
12403 union_pw_aff(const isl::union_pw_aff &obj) : isl::union_pw_aff(obj) {}
12404 static union_pw_aff from(const isl::union_pw_aff &obj) {
12405 return union_pw_aff(obj);
12407 inline /* implicit */ union_pw_aff(const typed::aff<Anonymous> &aff);
12408 inline /* implicit */ union_pw_aff(const typed::pw_aff<Anonymous> &pa);
12409 inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str);
12410 inline typed::multi_union_pw_aff<Anonymous> add(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
12411 inline typed::union_pw_aff<Anonymous> add(const typed::union_pw_aff<Anonymous> &upa2) const;
12412 inline typed::union_pw_multi_aff<Anonymous> add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
12413 inline typed::union_pw_aff<Anonymous> add(const typed::aff<Anonymous> &upa2) const;
12414 inline typed::union_pw_aff<Anonymous> add(const typed::pw_aff<Anonymous> &upa2) const;
12415 template <typename Range>
12416 inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const;
12417 inline typed::multi_union_pw_aff<Anonymous> as_multi_union_pw_aff() const;
12418 inline typed::pw_multi_aff<Anonymous> as_pw_multi_aff() const;
12419 inline typed::union_map<Anonymous> as_union_map() const = delete;
12420 inline typed::union_pw_aff<Anonymous> at(int pos) const;
12421 inline typed::union_set<> bind(const typed::multi_id<Anonymous> &tuple) const;
12422 inline typed::union_set<> bind(const typed::id<Anonymous> &id) const;
12423 inline typed::union_set<> bind(const std::string &id) const;
12424 inline typed::union_pw_aff<Anonymous> coalesce() const;
12425 inline typed::union_set<> domain() const;
12426 inline typed::union_pw_aff<Anonymous> drop_unused_params() const;
12427 inline typed::pw_multi_aff<Anonymous> extract_pw_multi_aff(const typed::space<Anonymous> &space) const;
12428 inline typed::union_pw_aff<Anonymous> gist(const typed::union_set<> &context) const;
12429 inline typed::union_pw_aff<Anonymous> gist(const typed::basic_set<> &context) const;
12430 inline typed::union_pw_aff<Anonymous> gist(const typed::point<> &context) const;
12431 inline typed::union_pw_aff<Anonymous> gist(const typed::set<> &context) const;
12432 inline typed::multi_union_pw_aff<Anonymous> gist_params(const typed::set<> &context) const;
12433 inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::space<> &space) const = delete;
12434 inline typed::union_pw_aff<Anonymous> intersect_domain(const typed::union_set<> &uset) const = delete;
12435 inline typed::union_pw_aff<Anonymous> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
12436 inline typed::union_pw_aff<Anonymous> intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete;
12437 inline typed::union_pw_aff<Anonymous> intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete;
12438 inline typed::union_pw_aff<Anonymous> intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete;
12439 inline typed::union_pw_aff<Anonymous> intersect_params(const typed::set<> &set) const;
12440 inline typed::union_pw_aff<Anonymous> intersect_params(const typed::basic_set<> &set) const;
12441 inline typed::union_pw_aff<Anonymous> intersect_params(const typed::point<> &set) const;
12442 inline typed::union_pw_aff_list<Anonymous> list() const;
12443 inline typed::multi_union_pw_aff<Anonymous> neg() const;
12444 inline typed::union_pw_multi_aff<Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
12445 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<> &upma) const = delete;
12446 inline typed::union_pw_aff<Anonymous> pullback(const typed::multi_aff<> &upma) const = delete;
12447 inline typed::union_pw_aff<Anonymous> pullback(const typed::pw_multi_aff<> &upma) const = delete;
12448 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_aff<> &upma) const = delete;
12449 inline typed::pw_multi_aff_list<Anonymous> pw_multi_aff_list() const;
12450 inline typed::union_pw_multi_aff<Anonymous> range_factor_domain() const = delete;
12451 inline typed::union_pw_multi_aff<Anonymous> range_factor_range() const = delete;
12452 inline typed::multi_union_pw_aff<Anonymous> range_product(const typed::multi_union_pw_aff<> &multi2) const = delete;
12453 inline typed::union_pw_multi_aff<Anonymous> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
12454 inline typed::multi_union_pw_aff<Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
12455 inline typed::multi_union_pw_aff<Anonymous> scale(const typed::val<Anonymous> &v) const;
12456 inline typed::multi_union_pw_aff<Anonymous> scale(long v) const;
12457 inline typed::multi_union_pw_aff<Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
12458 inline typed::multi_union_pw_aff<Anonymous> scale_down(const typed::val<Anonymous> &v) const;
12459 inline typed::multi_union_pw_aff<Anonymous> scale_down(long v) const;
12460 inline typed::multi_union_pw_aff<Anonymous> set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const;
12461 template <typename Domain2>
12462 inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const typed::id<Anonymous> &id) const;
12463 template <typename Domain2>
12464 inline typed::multi_union_pw_aff<Domain2> set_range_tuple(const std::string &id) const;
12465 inline typed::space<> space() const;
12466 inline typed::space<Anonymous> get_space() const = delete;
12467 inline typed::multi_union_pw_aff<Anonymous> sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const;
12468 inline typed::union_pw_aff<Anonymous> sub(const typed::union_pw_aff<Anonymous> &upa2) const;
12469 inline typed::union_pw_multi_aff<Anonymous> sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
12470 inline typed::union_pw_aff<Anonymous> sub(const typed::aff<Anonymous> &upa2) const;
12471 inline typed::union_pw_aff<Anonymous> sub(const typed::pw_aff<Anonymous> &upa2) const;
12472 inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::space<> &space) const = delete;
12473 inline typed::union_pw_aff<Anonymous> subtract_domain(const typed::union_set<> &uset) const = delete;
12474 inline typed::multi_union_pw_aff<Anonymous> union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const;
12475 inline typed::union_pw_aff<Anonymous> union_add(const typed::union_pw_aff<Anonymous> &upa2) const;
12476 inline typed::union_pw_multi_aff<Anonymous> union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const;
12477 inline typed::union_pw_aff<Anonymous> union_add(const typed::aff<Anonymous> &upa2) const;
12478 inline typed::union_pw_aff<Anonymous> union_add(const typed::pw_aff<Anonymous> &upa2) const;
12481 template <typename Domain>
12482 struct union_pw_aff<Domain, Anonymous> : public isl::union_pw_aff {
12483 template <typename...>
12484 friend struct aff;
12485 template <typename...>
12486 friend struct aff_list;
12487 template <typename...>
12488 friend struct basic_map;
12489 template <typename...>
12490 friend struct basic_set;
12491 template <typename...>
12492 friend struct fixed_box;
12493 template <typename...>
12494 friend struct id;
12495 template <typename...>
12496 friend struct id_list;
12497 template <typename...>
12498 friend struct map;
12499 template <typename...>
12500 friend struct map_list;
12501 template <typename...>
12502 friend struct multi_aff;
12503 template <typename...>
12504 friend struct multi_id;
12505 template <typename...>
12506 friend struct multi_pw_aff;
12507 template <typename...>
12508 friend struct multi_union_pw_aff;
12509 template <typename...>
12510 friend struct multi_val;
12511 template <typename...>
12512 friend struct point;
12513 template <typename...>
12514 friend struct pw_aff;
12515 template <typename...>
12516 friend struct pw_aff_list;
12517 template <typename...>
12518 friend struct pw_multi_aff;
12519 template <typename...>
12520 friend struct pw_multi_aff_list;
12521 template <typename...>
12522 friend struct set;
12523 template <typename...>
12524 friend struct set_list;
12525 template <typename...>
12526 friend struct space;
12527 template <typename...>
12528 friend struct union_map;
12529 template <typename...>
12530 friend struct union_pw_aff;
12531 template <typename...>
12532 friend struct union_pw_aff_list;
12533 template <typename...>
12534 friend struct union_pw_multi_aff;
12535 template <typename...>
12536 friend struct union_set;
12537 template <typename...>
12538 friend struct union_set_list;
12539 template <typename...>
12540 friend struct val;
12541 template <typename...>
12542 friend struct val_list;
12544 union_pw_aff() = default;
12545 template <typename Arg1,
12546 typename std::enable_if<
12547 std::is_base_of<Domain, Arg1>{},
12548 bool>::type = true>
12549 union_pw_aff(const union_pw_aff<Arg1, Anonymous> &obj) : isl::union_pw_aff(obj) {}
12550 private:
12551 template <typename base,
12552 typename std::enable_if<
12553 std::is_same<base, isl::union_pw_aff>{}, bool>::type = true>
12554 union_pw_aff(const base &obj) : isl::union_pw_aff(obj) {}
12555 public:
12556 static union_pw_aff from(const isl::union_pw_aff &obj) {
12557 return union_pw_aff(obj);
12559 inline /* implicit */ union_pw_aff(const typed::aff<Domain, Anonymous> &aff);
12560 inline /* implicit */ union_pw_aff(const typed::pw_aff<Domain, Anonymous> &pa);
12561 inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str);
12562 inline typed::multi_union_pw_aff<Domain, Anonymous> add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
12563 inline typed::union_pw_aff<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
12564 inline typed::union_pw_multi_aff<Domain, Anonymous> add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
12565 inline typed::union_pw_aff<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &upa2) const;
12566 inline typed::union_pw_aff<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &upa2) const;
12567 template <typename Range2>
12568 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
12569 inline typed::multi_union_pw_aff<Domain, Anonymous> as_multi_union_pw_aff() const;
12570 inline typed::pw_multi_aff<Domain, Anonymous> as_pw_multi_aff() const;
12571 inline typed::union_map<Domain, Anonymous> as_union_map() const;
12572 inline typed::union_pw_aff<Domain, Anonymous> at(int pos) const;
12573 inline typed::union_set<Domain> bind(const typed::multi_id<Anonymous> &tuple) const;
12574 inline typed::union_set<Domain> bind(const typed::id<Anonymous> &id) const;
12575 inline typed::union_set<Domain> bind(const std::string &id) const;
12576 inline typed::union_pw_aff<Domain, Anonymous> coalesce() const;
12577 inline typed::union_set<Domain> domain() const;
12578 inline typed::union_pw_aff<Domain, Anonymous> drop_unused_params() const;
12579 inline typed::pw_multi_aff<Domain, Anonymous> extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const;
12580 inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::union_set<Domain> &context) const;
12581 inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::basic_set<Domain> &context) const;
12582 inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::point<Domain> &context) const;
12583 inline typed::union_pw_aff<Domain, Anonymous> gist(const typed::set<Domain> &context) const;
12584 inline typed::multi_union_pw_aff<Domain, Anonymous> gist_params(const typed::set<> &context) const;
12585 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::space<Domain> &space) const;
12586 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain(const typed::union_set<Domain> &uset) const;
12587 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
12588 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete;
12589 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete;
12590 inline typed::union_pw_aff<Domain, Anonymous> intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete;
12591 inline typed::union_pw_aff<Domain, Anonymous> intersect_params(const typed::set<> &set) const;
12592 inline typed::union_pw_aff<Domain, Anonymous> intersect_params(const typed::basic_set<> &set) const;
12593 inline typed::union_pw_aff<Domain, Anonymous> intersect_params(const typed::point<> &set) const;
12594 inline typed::union_pw_aff_list<Domain, Anonymous> list() const;
12595 inline typed::multi_union_pw_aff<Domain, Anonymous> neg() const;
12596 inline typed::union_pw_multi_aff<Domain, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
12597 template <typename Domain2>
12598 inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
12599 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<Domain> &upma) const;
12600 template <typename Domain2>
12601 inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::multi_aff<Domain2, Domain> &upma) const;
12602 inline typed::union_pw_aff<Anonymous> pullback(const typed::multi_aff<Domain> &upma) const;
12603 template <typename Domain2>
12604 inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const;
12605 inline typed::union_pw_aff<Anonymous> pullback(const typed::pw_multi_aff<Domain> &upma) const;
12606 template <typename Domain2>
12607 inline typed::union_pw_aff<Domain2, Anonymous> pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const;
12608 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_aff<Domain> &upma) const;
12609 inline typed::pw_multi_aff_list<Domain, Anonymous> pw_multi_aff_list() const;
12610 inline typed::union_pw_multi_aff<Domain, Anonymous> range_factor_domain() const = delete;
12611 inline typed::union_pw_multi_aff<Domain, Anonymous> range_factor_range() const = delete;
12612 template <typename Range2>
12613 inline typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const;
12614 template <typename Range2>
12615 inline typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
12616 inline typed::multi_union_pw_aff<Domain, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
12617 inline typed::multi_union_pw_aff<Domain, Anonymous> scale(const typed::val<Anonymous> &v) const;
12618 inline typed::multi_union_pw_aff<Domain, Anonymous> scale(long v) const;
12619 inline typed::multi_union_pw_aff<Domain, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
12620 inline typed::multi_union_pw_aff<Domain, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
12621 inline typed::multi_union_pw_aff<Domain, Anonymous> scale_down(long v) const;
12622 inline typed::multi_union_pw_aff<Domain, Anonymous> set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const;
12623 template <typename Range2>
12624 inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
12625 template <typename Range2>
12626 inline typed::multi_union_pw_aff<Domain, Range2> set_range_tuple(const std::string &id) const;
12627 inline typed::space<> space() const;
12628 inline typed::space<Domain, Anonymous> get_space() const = delete;
12629 inline typed::multi_union_pw_aff<Domain, Anonymous> sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const;
12630 inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
12631 inline typed::union_pw_multi_aff<Domain, Anonymous> sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
12632 inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::aff<Domain, Anonymous> &upa2) const;
12633 inline typed::union_pw_aff<Domain, Anonymous> sub(const typed::pw_aff<Domain, Anonymous> &upa2) const;
12634 inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::space<Domain> &space) const;
12635 inline typed::union_pw_aff<Domain, Anonymous> subtract_domain(const typed::union_set<Domain> &uset) const;
12636 inline typed::multi_union_pw_aff<Domain, Anonymous> union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const;
12637 inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const;
12638 inline typed::union_pw_multi_aff<Domain, Anonymous> union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const;
12639 inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::aff<Domain, Anonymous> &upa2) const;
12640 inline typed::union_pw_aff<Domain, Anonymous> union_add(const typed::pw_aff<Domain, Anonymous> &upa2) const;
12643 template <typename Domain, typename Domain2>
12644 struct union_pw_aff<pair<Domain, Domain2>, Anonymous> : public isl::union_pw_aff {
12645 template <typename...>
12646 friend struct aff;
12647 template <typename...>
12648 friend struct aff_list;
12649 template <typename...>
12650 friend struct basic_map;
12651 template <typename...>
12652 friend struct basic_set;
12653 template <typename...>
12654 friend struct fixed_box;
12655 template <typename...>
12656 friend struct id;
12657 template <typename...>
12658 friend struct id_list;
12659 template <typename...>
12660 friend struct map;
12661 template <typename...>
12662 friend struct map_list;
12663 template <typename...>
12664 friend struct multi_aff;
12665 template <typename...>
12666 friend struct multi_id;
12667 template <typename...>
12668 friend struct multi_pw_aff;
12669 template <typename...>
12670 friend struct multi_union_pw_aff;
12671 template <typename...>
12672 friend struct multi_val;
12673 template <typename...>
12674 friend struct point;
12675 template <typename...>
12676 friend struct pw_aff;
12677 template <typename...>
12678 friend struct pw_aff_list;
12679 template <typename...>
12680 friend struct pw_multi_aff;
12681 template <typename...>
12682 friend struct pw_multi_aff_list;
12683 template <typename...>
12684 friend struct set;
12685 template <typename...>
12686 friend struct set_list;
12687 template <typename...>
12688 friend struct space;
12689 template <typename...>
12690 friend struct union_map;
12691 template <typename...>
12692 friend struct union_pw_aff;
12693 template <typename...>
12694 friend struct union_pw_aff_list;
12695 template <typename...>
12696 friend struct union_pw_multi_aff;
12697 template <typename...>
12698 friend struct union_set;
12699 template <typename...>
12700 friend struct union_set_list;
12701 template <typename...>
12702 friend struct val;
12703 template <typename...>
12704 friend struct val_list;
12706 union_pw_aff() = default;
12707 template <typename Arg1, typename Arg2,
12708 typename std::enable_if<
12709 std::is_base_of<Domain, Arg1>{} &&
12710 std::is_base_of<Domain2, Arg2>{},
12711 bool>::type = true>
12712 union_pw_aff(const union_pw_aff<pair<Arg1, Arg2>, Anonymous> &obj) : isl::union_pw_aff(obj) {}
12713 private:
12714 template <typename base,
12715 typename std::enable_if<
12716 std::is_same<base, isl::union_pw_aff>{}, bool>::type = true>
12717 union_pw_aff(const base &obj) : isl::union_pw_aff(obj) {}
12718 public:
12719 static union_pw_aff from(const isl::union_pw_aff &obj) {
12720 return union_pw_aff(obj);
12722 inline /* implicit */ union_pw_aff(const typed::aff<pair<Domain, Domain2>, Anonymous> &aff);
12723 inline /* implicit */ union_pw_aff(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &pa);
12724 inline explicit union_pw_aff(const isl::ctx &ctx, const std::string &str);
12725 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const;
12726 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12727 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const;
12728 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12729 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12730 template <typename Range2>
12731 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const;
12732 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> as_multi_union_pw_aff() const;
12733 inline typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> as_pw_multi_aff() const;
12734 inline typed::union_map<pair<Domain, Domain2>, Anonymous> as_union_map() const;
12735 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> at(int pos) const;
12736 inline typed::union_set<pair<Domain, Domain2>> bind(const typed::multi_id<Anonymous> &tuple) const;
12737 inline typed::union_set<pair<Domain, Domain2>> bind(const typed::id<Anonymous> &id) const;
12738 inline typed::union_set<pair<Domain, Domain2>> bind(const std::string &id) const;
12739 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> coalesce() const;
12740 inline typed::union_set<pair<Domain, Domain2>> domain() const;
12741 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> drop_unused_params() const;
12742 inline typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Anonymous> &space) const;
12743 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::union_set<pair<Domain, Domain2>> &context) const;
12744 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::basic_set<pair<Domain, Domain2>> &context) const;
12745 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::point<pair<Domain, Domain2>> &context) const;
12746 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> gist(const typed::set<pair<Domain, Domain2>> &context) const;
12747 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> gist_params(const typed::set<> &context) const;
12748 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const;
12749 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
12750 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain_wrapped_domain(const typed::union_set<Domain> &uset) const;
12751 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain_wrapped_domain(const typed::basic_set<Domain> &uset) const;
12752 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain_wrapped_domain(const typed::point<Domain> &uset) const;
12753 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_domain_wrapped_domain(const typed::set<Domain> &uset) const;
12754 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_params(const typed::set<> &set) const;
12755 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_params(const typed::basic_set<> &set) const;
12756 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> intersect_params(const typed::point<> &set) const;
12757 inline typed::union_pw_aff_list<pair<Domain, Domain2>, Anonymous> list() const;
12758 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> neg() const;
12759 template <typename Domain3>
12760 inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Anonymous> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const;
12761 template <typename Arg2>
12762 inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const;
12763 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma) const;
12764 template <typename Arg2>
12765 inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::multi_aff<Arg2, pair<Domain, Domain2>> &upma) const;
12766 inline typed::union_pw_aff<Anonymous> pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma) const;
12767 template <typename Arg2>
12768 inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const;
12769 inline typed::union_pw_aff<Anonymous> pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma) const;
12770 template <typename Arg2>
12771 inline typed::union_pw_aff<Arg2, Anonymous> pullback(const typed::union_pw_aff<Arg2, pair<Domain, Domain2>> &upma) const;
12772 inline typed::union_pw_aff<Anonymous> pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma) const;
12773 inline typed::pw_multi_aff_list<pair<Domain, Domain2>, Anonymous> pw_multi_aff_list() const;
12774 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> range_factor_domain() const = delete;
12775 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> range_factor_range() const = delete;
12776 template <typename Range2>
12777 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> range_product(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> &multi2) const;
12778 template <typename Range2>
12779 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
12780 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale(const typed::multi_val<Anonymous> &mv) const;
12781 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale(const typed::val<Anonymous> &v) const;
12782 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale(long v) const;
12783 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale_down(const typed::multi_val<Anonymous> &mv) const;
12784 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale_down(const typed::val<Anonymous> &v) const;
12785 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> scale_down(long v) const;
12786 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> set_at(int pos, const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &el) const;
12787 template <typename Range2>
12788 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> set_range_tuple(const typed::id<Anonymous> &id) const;
12789 template <typename Range2>
12790 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> set_range_tuple(const std::string &id) const;
12791 inline typed::space<> space() const;
12792 inline typed::space<pair<Domain, Domain2>, Anonymous> get_space() const = delete;
12793 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const;
12794 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12795 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const;
12796 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12797 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> sub(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12798 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const;
12799 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
12800 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &mupa2) const;
12801 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12802 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const;
12803 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12804 inline typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> union_add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const;
12807 template <>
12808 struct union_pw_aff_list<Anonymous> : public isl::union_pw_aff_list {
12809 template <typename...>
12810 friend struct aff;
12811 template <typename...>
12812 friend struct aff_list;
12813 template <typename...>
12814 friend struct basic_map;
12815 template <typename...>
12816 friend struct basic_set;
12817 template <typename...>
12818 friend struct fixed_box;
12819 template <typename...>
12820 friend struct id;
12821 template <typename...>
12822 friend struct id_list;
12823 template <typename...>
12824 friend struct map;
12825 template <typename...>
12826 friend struct map_list;
12827 template <typename...>
12828 friend struct multi_aff;
12829 template <typename...>
12830 friend struct multi_id;
12831 template <typename...>
12832 friend struct multi_pw_aff;
12833 template <typename...>
12834 friend struct multi_union_pw_aff;
12835 template <typename...>
12836 friend struct multi_val;
12837 template <typename...>
12838 friend struct point;
12839 template <typename...>
12840 friend struct pw_aff;
12841 template <typename...>
12842 friend struct pw_aff_list;
12843 template <typename...>
12844 friend struct pw_multi_aff;
12845 template <typename...>
12846 friend struct pw_multi_aff_list;
12847 template <typename...>
12848 friend struct set;
12849 template <typename...>
12850 friend struct set_list;
12851 template <typename...>
12852 friend struct space;
12853 template <typename...>
12854 friend struct union_map;
12855 template <typename...>
12856 friend struct union_pw_aff;
12857 template <typename...>
12858 friend struct union_pw_aff_list;
12859 template <typename...>
12860 friend struct union_pw_multi_aff;
12861 template <typename...>
12862 friend struct union_set;
12863 template <typename...>
12864 friend struct union_set_list;
12865 template <typename...>
12866 friend struct val;
12867 template <typename...>
12868 friend struct val_list;
12870 union_pw_aff_list() = default;
12871 union_pw_aff_list(const isl::union_pw_aff_list &obj) : isl::union_pw_aff_list(obj) {}
12872 static union_pw_aff_list from(const isl::union_pw_aff_list &obj) {
12873 return union_pw_aff_list(obj);
12875 inline explicit union_pw_aff_list(const isl::ctx &ctx, int n);
12876 inline explicit union_pw_aff_list(const typed::union_pw_aff<Anonymous> &el);
12877 inline explicit union_pw_aff_list(const isl::ctx &ctx, const std::string &str);
12878 inline typed::union_pw_aff_list<Anonymous> add(const typed::union_pw_aff<Anonymous> &el) const;
12879 inline typed::union_pw_aff_list<Anonymous> add(const typed::aff<Anonymous> &el) const;
12880 inline typed::union_pw_aff_list<Anonymous> add(const typed::pw_aff<Anonymous> &el) const;
12881 inline typed::union_pw_aff<Anonymous> at(int index) const;
12882 inline typed::union_pw_aff<Anonymous> get_at(int index) const = delete;
12883 inline typed::union_pw_aff_list<Anonymous> drop(unsigned int first, unsigned int n) const;
12884 inline void foreach(const std::function<void(typed::union_pw_aff<Anonymous>)> &fn) const;
12885 inline void foreach_scc(const std::function<bool(typed::union_pw_aff<Anonymous>, typed::union_pw_aff<Anonymous>)> &follows, const std::function<void(typed::union_pw_aff_list<Anonymous>)> &fn) const;
12886 inline typed::union_pw_aff_list<Anonymous> set_at(int index, const typed::union_pw_aff<Anonymous> &el) const;
12889 template <typename Domain>
12890 struct union_pw_aff_list<Domain, Anonymous> : public isl::union_pw_aff_list {
12891 template <typename...>
12892 friend struct aff;
12893 template <typename...>
12894 friend struct aff_list;
12895 template <typename...>
12896 friend struct basic_map;
12897 template <typename...>
12898 friend struct basic_set;
12899 template <typename...>
12900 friend struct fixed_box;
12901 template <typename...>
12902 friend struct id;
12903 template <typename...>
12904 friend struct id_list;
12905 template <typename...>
12906 friend struct map;
12907 template <typename...>
12908 friend struct map_list;
12909 template <typename...>
12910 friend struct multi_aff;
12911 template <typename...>
12912 friend struct multi_id;
12913 template <typename...>
12914 friend struct multi_pw_aff;
12915 template <typename...>
12916 friend struct multi_union_pw_aff;
12917 template <typename...>
12918 friend struct multi_val;
12919 template <typename...>
12920 friend struct point;
12921 template <typename...>
12922 friend struct pw_aff;
12923 template <typename...>
12924 friend struct pw_aff_list;
12925 template <typename...>
12926 friend struct pw_multi_aff;
12927 template <typename...>
12928 friend struct pw_multi_aff_list;
12929 template <typename...>
12930 friend struct set;
12931 template <typename...>
12932 friend struct set_list;
12933 template <typename...>
12934 friend struct space;
12935 template <typename...>
12936 friend struct union_map;
12937 template <typename...>
12938 friend struct union_pw_aff;
12939 template <typename...>
12940 friend struct union_pw_aff_list;
12941 template <typename...>
12942 friend struct union_pw_multi_aff;
12943 template <typename...>
12944 friend struct union_set;
12945 template <typename...>
12946 friend struct union_set_list;
12947 template <typename...>
12948 friend struct val;
12949 template <typename...>
12950 friend struct val_list;
12952 union_pw_aff_list() = default;
12953 template <typename Arg1,
12954 typename std::enable_if<
12955 std::is_base_of<Domain, Arg1>{},
12956 bool>::type = true>
12957 union_pw_aff_list(const union_pw_aff_list<Arg1, Anonymous> &obj) : isl::union_pw_aff_list(obj) {}
12958 private:
12959 template <typename base,
12960 typename std::enable_if<
12961 std::is_same<base, isl::union_pw_aff_list>{}, bool>::type = true>
12962 union_pw_aff_list(const base &obj) : isl::union_pw_aff_list(obj) {}
12963 public:
12964 static union_pw_aff_list from(const isl::union_pw_aff_list &obj) {
12965 return union_pw_aff_list(obj);
12967 inline explicit union_pw_aff_list(const isl::ctx &ctx, int n);
12968 inline explicit union_pw_aff_list(const typed::union_pw_aff<Domain, Anonymous> &el);
12969 inline explicit union_pw_aff_list(const isl::ctx &ctx, const std::string &str);
12970 inline typed::union_pw_aff_list<Domain, Anonymous> add(const typed::union_pw_aff<Domain, Anonymous> &el) const;
12971 inline typed::union_pw_aff_list<Domain, Anonymous> add(const typed::aff<Domain, Anonymous> &el) const;
12972 inline typed::union_pw_aff_list<Domain, Anonymous> add(const typed::pw_aff<Domain, Anonymous> &el) const;
12973 inline typed::union_pw_aff<Domain, Anonymous> at(int index) const;
12974 inline typed::union_pw_aff<Domain, Anonymous> get_at(int index) const = delete;
12975 inline typed::union_pw_aff_list<Domain, Anonymous> drop(unsigned int first, unsigned int n) const;
12976 inline void foreach(const std::function<void(typed::union_pw_aff<Domain, Anonymous>)> &fn) const;
12977 inline void foreach_scc(const std::function<bool(typed::union_pw_aff<Domain, Anonymous>, typed::union_pw_aff<Domain, Anonymous>)> &follows, const std::function<void(typed::union_pw_aff_list<Domain, Anonymous>)> &fn) const;
12978 inline typed::union_pw_aff_list<Domain, Anonymous> set_at(int index, const typed::union_pw_aff<Domain, Anonymous> &el) const;
12981 template <typename Domain>
12982 struct union_pw_multi_aff<Domain> : public isl::union_pw_multi_aff {
12983 template <typename...>
12984 friend struct aff;
12985 template <typename...>
12986 friend struct aff_list;
12987 template <typename...>
12988 friend struct basic_map;
12989 template <typename...>
12990 friend struct basic_set;
12991 template <typename...>
12992 friend struct fixed_box;
12993 template <typename...>
12994 friend struct id;
12995 template <typename...>
12996 friend struct id_list;
12997 template <typename...>
12998 friend struct map;
12999 template <typename...>
13000 friend struct map_list;
13001 template <typename...>
13002 friend struct multi_aff;
13003 template <typename...>
13004 friend struct multi_id;
13005 template <typename...>
13006 friend struct multi_pw_aff;
13007 template <typename...>
13008 friend struct multi_union_pw_aff;
13009 template <typename...>
13010 friend struct multi_val;
13011 template <typename...>
13012 friend struct point;
13013 template <typename...>
13014 friend struct pw_aff;
13015 template <typename...>
13016 friend struct pw_aff_list;
13017 template <typename...>
13018 friend struct pw_multi_aff;
13019 template <typename...>
13020 friend struct pw_multi_aff_list;
13021 template <typename...>
13022 friend struct set;
13023 template <typename...>
13024 friend struct set_list;
13025 template <typename...>
13026 friend struct space;
13027 template <typename...>
13028 friend struct union_map;
13029 template <typename...>
13030 friend struct union_pw_aff;
13031 template <typename...>
13032 friend struct union_pw_aff_list;
13033 template <typename...>
13034 friend struct union_pw_multi_aff;
13035 template <typename...>
13036 friend struct union_set;
13037 template <typename...>
13038 friend struct union_set_list;
13039 template <typename...>
13040 friend struct val;
13041 template <typename...>
13042 friend struct val_list;
13044 union_pw_multi_aff() = default;
13045 template <typename Arg1,
13046 typename std::enable_if<
13047 std::is_base_of<Domain, Arg1>{},
13048 bool>::type = true>
13049 union_pw_multi_aff(const union_pw_multi_aff<Arg1> &obj) : isl::union_pw_multi_aff(obj) {}
13050 private:
13051 template <typename base,
13052 typename std::enable_if<
13053 std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
13054 union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
13055 public:
13056 static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
13057 return union_pw_multi_aff(obj);
13059 inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<Domain> &ma);
13060 inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<Domain> &pma);
13061 inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<Domain> &upa);
13062 inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
13063 inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_multi_aff<Domain> &upma2) const;
13064 inline typed::union_pw_multi_aff<Domain> add(const typed::multi_aff<Domain> &upma2) const;
13065 inline typed::union_pw_multi_aff<Domain> add(const typed::pw_multi_aff<Domain> &upma2) const;
13066 inline typed::union_pw_multi_aff<Domain> add(const typed::union_pw_aff<Domain> &upma2) const;
13067 template <typename Range>
13068 inline typed::union_pw_multi_aff<Range> apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
13069 template <typename Range>
13070 inline typed::union_pw_multi_aff<Range> apply(const typed::multi_aff<Domain, Range> &upma2) const;
13071 template <typename Range>
13072 inline typed::union_pw_multi_aff<Range> apply(const typed::pw_multi_aff<Domain, Range> &upma2) const;
13073 inline typed::union_pw_multi_aff<Anonymous> apply(const typed::union_pw_aff<Domain, Anonymous> &upma2) const;
13074 inline typed::multi_union_pw_aff<Domain> as_multi_union_pw_aff() const;
13075 inline typed::pw_multi_aff<Domain> as_pw_multi_aff() const;
13076 inline typed::union_map<Domain> as_union_map() const = delete;
13077 inline typed::union_pw_multi_aff<Domain> coalesce() const;
13078 inline typed::union_set<> domain() const;
13079 inline typed::union_pw_multi_aff<Domain> drop_unused_params() const;
13080 static inline typed::union_pw_multi_aff<Domain> empty(const isl::ctx &ctx);
13081 inline typed::pw_multi_aff<Domain> extract_pw_multi_aff(const typed::space<Domain> &space) const;
13082 inline typed::union_pw_multi_aff<Domain> gist(const typed::union_set<> &context) const;
13083 inline typed::union_pw_multi_aff<Domain> gist(const typed::basic_set<> &context) const;
13084 inline typed::union_pw_multi_aff<Domain> gist(const typed::point<> &context) const;
13085 inline typed::union_pw_multi_aff<Domain> gist(const typed::set<> &context) const;
13086 inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::space<> &space) const = delete;
13087 inline typed::union_pw_multi_aff<Domain> intersect_domain(const typed::union_set<> &uset) const = delete;
13088 inline typed::union_pw_multi_aff<Domain> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
13089 inline typed::union_pw_multi_aff<Domain> intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete;
13090 inline typed::union_pw_multi_aff<Domain> intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete;
13091 inline typed::union_pw_multi_aff<Domain> intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete;
13092 inline typed::union_pw_multi_aff<Domain> intersect_params(const typed::set<> &set) const;
13093 inline typed::union_pw_multi_aff<Domain> intersect_params(const typed::basic_set<> &set) const;
13094 inline typed::union_pw_multi_aff<Domain> intersect_params(const typed::point<> &set) const;
13095 inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
13096 inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete;
13097 inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete;
13098 inline typed::union_pw_multi_aff<Domain> preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete;
13099 inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_multi_aff<> &upma2) const = delete;
13100 inline typed::union_pw_multi_aff<Domain> pullback(const typed::multi_aff<> &upma2) const = delete;
13101 inline typed::union_pw_multi_aff<Domain> pullback(const typed::pw_multi_aff<> &upma2) const = delete;
13102 inline typed::union_pw_multi_aff<Domain> pullback(const typed::union_pw_aff<> &upma2) const = delete;
13103 inline typed::pw_multi_aff_list<Domain> pw_multi_aff_list() const;
13104 inline typed::pw_multi_aff_list<Domain> get_pw_multi_aff_list() const = delete;
13105 inline typed::union_pw_multi_aff<Domain> range_factor_domain() const = delete;
13106 inline typed::union_pw_multi_aff<Domain> range_factor_range() const = delete;
13107 inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_multi_aff<> &upma2) const = delete;
13108 inline typed::union_pw_multi_aff<Domain> range_product(const typed::multi_aff<> &upma2) const = delete;
13109 inline typed::union_pw_multi_aff<Domain> range_product(const typed::pw_multi_aff<> &upma2) const = delete;
13110 inline typed::union_pw_multi_aff<Domain> range_product(const typed::union_pw_aff<> &upma2) const = delete;
13111 inline typed::space<> space() const;
13112 inline typed::space<Domain> get_space() const = delete;
13113 inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_multi_aff<Domain> &upma2) const;
13114 inline typed::union_pw_multi_aff<Domain> sub(const typed::multi_aff<Domain> &upma2) const;
13115 inline typed::union_pw_multi_aff<Domain> sub(const typed::pw_multi_aff<Domain> &upma2) const;
13116 inline typed::union_pw_multi_aff<Domain> sub(const typed::union_pw_aff<Domain> &upma2) const;
13117 inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::space<> &space) const = delete;
13118 inline typed::union_pw_multi_aff<Domain> subtract_domain(const typed::union_set<> &uset) const = delete;
13119 inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_multi_aff<Domain> &upma2) const;
13120 inline typed::union_pw_multi_aff<Domain> union_add(const typed::multi_aff<Domain> &upma2) const;
13121 inline typed::union_pw_multi_aff<Domain> union_add(const typed::pw_multi_aff<Domain> &upma2) const;
13122 inline typed::union_pw_multi_aff<Domain> union_add(const typed::union_pw_aff<Domain> &upma2) const;
13125 template <typename Domain, typename Range>
13126 struct union_pw_multi_aff<Domain, Range> : public isl::union_pw_multi_aff {
13127 template <typename...>
13128 friend struct aff;
13129 template <typename...>
13130 friend struct aff_list;
13131 template <typename...>
13132 friend struct basic_map;
13133 template <typename...>
13134 friend struct basic_set;
13135 template <typename...>
13136 friend struct fixed_box;
13137 template <typename...>
13138 friend struct id;
13139 template <typename...>
13140 friend struct id_list;
13141 template <typename...>
13142 friend struct map;
13143 template <typename...>
13144 friend struct map_list;
13145 template <typename...>
13146 friend struct multi_aff;
13147 template <typename...>
13148 friend struct multi_id;
13149 template <typename...>
13150 friend struct multi_pw_aff;
13151 template <typename...>
13152 friend struct multi_union_pw_aff;
13153 template <typename...>
13154 friend struct multi_val;
13155 template <typename...>
13156 friend struct point;
13157 template <typename...>
13158 friend struct pw_aff;
13159 template <typename...>
13160 friend struct pw_aff_list;
13161 template <typename...>
13162 friend struct pw_multi_aff;
13163 template <typename...>
13164 friend struct pw_multi_aff_list;
13165 template <typename...>
13166 friend struct set;
13167 template <typename...>
13168 friend struct set_list;
13169 template <typename...>
13170 friend struct space;
13171 template <typename...>
13172 friend struct union_map;
13173 template <typename...>
13174 friend struct union_pw_aff;
13175 template <typename...>
13176 friend struct union_pw_aff_list;
13177 template <typename...>
13178 friend struct union_pw_multi_aff;
13179 template <typename...>
13180 friend struct union_set;
13181 template <typename...>
13182 friend struct union_set_list;
13183 template <typename...>
13184 friend struct val;
13185 template <typename...>
13186 friend struct val_list;
13188 union_pw_multi_aff() = default;
13189 template <typename Arg1, typename Arg2,
13190 typename std::enable_if<
13191 std::is_base_of<Domain, Arg1>{} &&
13192 std::is_base_of<Range, Arg2>{},
13193 bool>::type = true>
13194 union_pw_multi_aff(const union_pw_multi_aff<Arg1, Arg2> &obj) : isl::union_pw_multi_aff(obj) {}
13195 private:
13196 template <typename base,
13197 typename std::enable_if<
13198 std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
13199 union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
13200 public:
13201 static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
13202 return union_pw_multi_aff(obj);
13204 inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<Domain, Range> &ma);
13205 inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<Domain, Range> &pma);
13206 inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<Domain, Range> &upa);
13207 inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
13208 inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
13209 inline typed::union_pw_multi_aff<Domain, Range> add(const typed::multi_aff<Domain, Range> &upma2) const;
13210 inline typed::union_pw_multi_aff<Domain, Range> add(const typed::pw_multi_aff<Domain, Range> &upma2) const;
13211 inline typed::union_pw_multi_aff<Domain, Range> add(const typed::union_pw_aff<Domain, Range> &upma2) const;
13212 template <typename Range2>
13213 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
13214 template <typename Range2>
13215 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::multi_aff<Range, Range2> &upma2) const;
13216 template <typename Range2>
13217 inline typed::union_pw_multi_aff<Domain, Range2> apply(const typed::pw_multi_aff<Range, Range2> &upma2) const;
13218 inline typed::union_pw_multi_aff<Domain, Anonymous> apply(const typed::union_pw_aff<Range, Anonymous> &upma2) const;
13219 inline typed::multi_union_pw_aff<Domain, Range> as_multi_union_pw_aff() const;
13220 inline typed::pw_multi_aff<Domain, Range> as_pw_multi_aff() const;
13221 inline typed::union_map<Domain, Range> as_union_map() const;
13222 inline typed::union_pw_multi_aff<Domain, Range> coalesce() const;
13223 inline typed::union_set<Domain> domain() const;
13224 inline typed::union_pw_multi_aff<Domain, Range> drop_unused_params() const;
13225 static inline typed::union_pw_multi_aff<Domain, Range> empty(const isl::ctx &ctx);
13226 inline typed::pw_multi_aff<Domain, Range> extract_pw_multi_aff(const typed::space<Domain, Range> &space) const;
13227 inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::union_set<Domain> &context) const;
13228 inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::basic_set<Domain> &context) const;
13229 inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::point<Domain> &context) const;
13230 inline typed::union_pw_multi_aff<Domain, Range> gist(const typed::set<Domain> &context) const;
13231 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::space<Domain> &space) const;
13232 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain(const typed::union_set<Domain> &uset) const;
13233 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
13234 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete;
13235 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete;
13236 inline typed::union_pw_multi_aff<Domain, Range> intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete;
13237 inline typed::union_pw_multi_aff<Domain, Range> intersect_params(const typed::set<> &set) const;
13238 inline typed::union_pw_multi_aff<Domain, Range> intersect_params(const typed::basic_set<> &set) const;
13239 inline typed::union_pw_multi_aff<Domain, Range> intersect_params(const typed::point<> &set) const;
13240 inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
13241 inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete;
13242 inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete;
13243 inline typed::union_pw_multi_aff<Domain, Range> preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete;
13244 template <typename Domain2>
13245 inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
13246 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
13247 template <typename Domain2>
13248 inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::multi_aff<Domain2, Domain> &upma2) const;
13249 inline typed::union_pw_multi_aff<Range> pullback(const typed::multi_aff<Domain> &upma2) const;
13250 template <typename Domain2>
13251 inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const;
13252 inline typed::union_pw_multi_aff<Range> pullback(const typed::pw_multi_aff<Domain> &upma2) const;
13253 template <typename Domain2>
13254 inline typed::union_pw_multi_aff<Domain2, Range> pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const;
13255 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_aff<Domain> &upma2) const;
13256 inline typed::pw_multi_aff_list<Domain, Range> pw_multi_aff_list() const;
13257 inline typed::pw_multi_aff_list<Domain, Range> get_pw_multi_aff_list() const = delete;
13258 inline typed::union_pw_multi_aff<Domain, Range> range_factor_domain() const = delete;
13259 inline typed::union_pw_multi_aff<Domain, Range> range_factor_range() const = delete;
13260 template <typename Range2>
13261 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const;
13262 template <typename Range2>
13263 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::multi_aff<Domain, Range2> &upma2) const;
13264 template <typename Range2>
13265 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> range_product(const typed::pw_multi_aff<Domain, Range2> &upma2) const;
13266 inline typed::union_pw_multi_aff<Domain, pair<Range, Anonymous>> range_product(const typed::union_pw_aff<Domain, Anonymous> &upma2) const;
13267 inline typed::space<> space() const;
13268 inline typed::space<Domain, Range> get_space() const = delete;
13269 inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
13270 inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::multi_aff<Domain, Range> &upma2) const;
13271 inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::pw_multi_aff<Domain, Range> &upma2) const;
13272 inline typed::union_pw_multi_aff<Domain, Range> sub(const typed::union_pw_aff<Domain, Range> &upma2) const;
13273 inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::space<Domain> &space) const;
13274 inline typed::union_pw_multi_aff<Domain, Range> subtract_domain(const typed::union_set<Domain> &uset) const;
13275 inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const;
13276 inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::multi_aff<Domain, Range> &upma2) const;
13277 inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::pw_multi_aff<Domain, Range> &upma2) const;
13278 inline typed::union_pw_multi_aff<Domain, Range> union_add(const typed::union_pw_aff<Domain, Range> &upma2) const;
13281 template <typename Domain, typename Domain2, typename Range>
13282 struct union_pw_multi_aff<pair<Domain, Domain2>, Range> : public isl::union_pw_multi_aff {
13283 template <typename...>
13284 friend struct aff;
13285 template <typename...>
13286 friend struct aff_list;
13287 template <typename...>
13288 friend struct basic_map;
13289 template <typename...>
13290 friend struct basic_set;
13291 template <typename...>
13292 friend struct fixed_box;
13293 template <typename...>
13294 friend struct id;
13295 template <typename...>
13296 friend struct id_list;
13297 template <typename...>
13298 friend struct map;
13299 template <typename...>
13300 friend struct map_list;
13301 template <typename...>
13302 friend struct multi_aff;
13303 template <typename...>
13304 friend struct multi_id;
13305 template <typename...>
13306 friend struct multi_pw_aff;
13307 template <typename...>
13308 friend struct multi_union_pw_aff;
13309 template <typename...>
13310 friend struct multi_val;
13311 template <typename...>
13312 friend struct point;
13313 template <typename...>
13314 friend struct pw_aff;
13315 template <typename...>
13316 friend struct pw_aff_list;
13317 template <typename...>
13318 friend struct pw_multi_aff;
13319 template <typename...>
13320 friend struct pw_multi_aff_list;
13321 template <typename...>
13322 friend struct set;
13323 template <typename...>
13324 friend struct set_list;
13325 template <typename...>
13326 friend struct space;
13327 template <typename...>
13328 friend struct union_map;
13329 template <typename...>
13330 friend struct union_pw_aff;
13331 template <typename...>
13332 friend struct union_pw_aff_list;
13333 template <typename...>
13334 friend struct union_pw_multi_aff;
13335 template <typename...>
13336 friend struct union_set;
13337 template <typename...>
13338 friend struct union_set_list;
13339 template <typename...>
13340 friend struct val;
13341 template <typename...>
13342 friend struct val_list;
13344 union_pw_multi_aff() = default;
13345 template <typename Arg1, typename Arg2, typename Arg3,
13346 typename std::enable_if<
13347 std::is_base_of<Domain, Arg1>{} &&
13348 std::is_base_of<Domain2, Arg2>{} &&
13349 std::is_base_of<Range, Arg3>{},
13350 bool>::type = true>
13351 union_pw_multi_aff(const union_pw_multi_aff<pair<Arg1, Arg2>, Arg3> &obj) : isl::union_pw_multi_aff(obj) {}
13352 private:
13353 template <typename base,
13354 typename std::enable_if<
13355 std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
13356 union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
13357 public:
13358 static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
13359 return union_pw_multi_aff(obj);
13361 inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<pair<Domain, Domain2>, Range> &ma);
13362 inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &pma);
13363 inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upa);
13364 inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
13365 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13366 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13367 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13368 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const;
13369 template <typename Range2>
13370 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const;
13371 template <typename Range2>
13372 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::multi_aff<Range, Range2> &upma2) const;
13373 template <typename Range2>
13374 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> apply(const typed::pw_multi_aff<Range, Range2> &upma2) const;
13375 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> apply(const typed::union_pw_aff<Range, Anonymous> &upma2) const;
13376 inline typed::multi_union_pw_aff<pair<Domain, Domain2>, Range> as_multi_union_pw_aff() const;
13377 inline typed::pw_multi_aff<pair<Domain, Domain2>, Range> as_pw_multi_aff() const;
13378 inline typed::union_map<pair<Domain, Domain2>, Range> as_union_map() const;
13379 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> coalesce() const;
13380 inline typed::union_set<pair<Domain, Domain2>> domain() const;
13381 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> drop_unused_params() const;
13382 static inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> empty(const isl::ctx &ctx);
13383 inline typed::pw_multi_aff<pair<Domain, Domain2>, Range> extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Range> &space) const;
13384 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::union_set<pair<Domain, Domain2>> &context) const;
13385 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::basic_set<pair<Domain, Domain2>> &context) const;
13386 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::point<pair<Domain, Domain2>> &context) const;
13387 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> gist(const typed::set<pair<Domain, Domain2>> &context) const;
13388 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const;
13389 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
13390 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain_wrapped_domain(const typed::union_set<Domain> &uset) const;
13391 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain_wrapped_domain(const typed::basic_set<Domain> &uset) const;
13392 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain_wrapped_domain(const typed::point<Domain> &uset) const;
13393 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_domain_wrapped_domain(const typed::set<Domain> &uset) const;
13394 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_params(const typed::set<> &set) const;
13395 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_params(const typed::basic_set<> &set) const;
13396 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> intersect_params(const typed::point<> &set) const;
13397 template <typename Domain3>
13398 inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const;
13399 template <typename Domain3>
13400 inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain> &upma2) const;
13401 template <typename Domain3>
13402 inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain> &upma2) const;
13403 template <typename Domain3>
13404 inline typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, Domain> &upma2) const;
13405 template <typename Arg3>
13406 inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::union_pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
13407 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma2) const;
13408 template <typename Arg3>
13409 inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
13410 inline typed::union_pw_multi_aff<Range> pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma2) const;
13411 template <typename Arg3>
13412 inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
13413 inline typed::union_pw_multi_aff<Range> pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma2) const;
13414 template <typename Arg3>
13415 inline typed::union_pw_multi_aff<Arg3, Range> pullback(const typed::union_pw_aff<Arg3, pair<Domain, Domain2>> &upma2) const;
13416 inline typed::union_pw_multi_aff<Range> pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma2) const;
13417 inline typed::pw_multi_aff_list<pair<Domain, Domain2>, Range> pw_multi_aff_list() const;
13418 inline typed::pw_multi_aff_list<pair<Domain, Domain2>, Range> get_pw_multi_aff_list() const = delete;
13419 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> range_factor_domain() const = delete;
13420 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> range_factor_range() const = delete;
13421 template <typename Range2>
13422 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
13423 template <typename Range2>
13424 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> range_product(const typed::multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
13425 template <typename Range2>
13426 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> range_product(const typed::pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const;
13427 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> range_product(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upma2) const;
13428 inline typed::space<> space() const;
13429 inline typed::space<pair<Domain, Domain2>, Range> get_space() const = delete;
13430 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13431 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13432 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13433 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> sub(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const;
13434 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const;
13435 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const;
13436 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13437 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13438 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const;
13439 inline typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const;
13442 template <typename Domain, typename Range, typename Range2>
13443 struct union_pw_multi_aff<Domain, pair<Range, Range2>> : public isl::union_pw_multi_aff {
13444 template <typename...>
13445 friend struct aff;
13446 template <typename...>
13447 friend struct aff_list;
13448 template <typename...>
13449 friend struct basic_map;
13450 template <typename...>
13451 friend struct basic_set;
13452 template <typename...>
13453 friend struct fixed_box;
13454 template <typename...>
13455 friend struct id;
13456 template <typename...>
13457 friend struct id_list;
13458 template <typename...>
13459 friend struct map;
13460 template <typename...>
13461 friend struct map_list;
13462 template <typename...>
13463 friend struct multi_aff;
13464 template <typename...>
13465 friend struct multi_id;
13466 template <typename...>
13467 friend struct multi_pw_aff;
13468 template <typename...>
13469 friend struct multi_union_pw_aff;
13470 template <typename...>
13471 friend struct multi_val;
13472 template <typename...>
13473 friend struct point;
13474 template <typename...>
13475 friend struct pw_aff;
13476 template <typename...>
13477 friend struct pw_aff_list;
13478 template <typename...>
13479 friend struct pw_multi_aff;
13480 template <typename...>
13481 friend struct pw_multi_aff_list;
13482 template <typename...>
13483 friend struct set;
13484 template <typename...>
13485 friend struct set_list;
13486 template <typename...>
13487 friend struct space;
13488 template <typename...>
13489 friend struct union_map;
13490 template <typename...>
13491 friend struct union_pw_aff;
13492 template <typename...>
13493 friend struct union_pw_aff_list;
13494 template <typename...>
13495 friend struct union_pw_multi_aff;
13496 template <typename...>
13497 friend struct union_set;
13498 template <typename...>
13499 friend struct union_set_list;
13500 template <typename...>
13501 friend struct val;
13502 template <typename...>
13503 friend struct val_list;
13505 union_pw_multi_aff() = default;
13506 template <typename Arg1, typename Arg2, typename Arg3,
13507 typename std::enable_if<
13508 std::is_base_of<Domain, Arg1>{} &&
13509 std::is_base_of<Range, Arg2>{} &&
13510 std::is_base_of<Range2, Arg3>{},
13511 bool>::type = true>
13512 union_pw_multi_aff(const union_pw_multi_aff<Arg1, pair<Arg2, Arg3>> &obj) : isl::union_pw_multi_aff(obj) {}
13513 private:
13514 template <typename base,
13515 typename std::enable_if<
13516 std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
13517 union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
13518 public:
13519 static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
13520 return union_pw_multi_aff(obj);
13522 inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma);
13523 inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma);
13524 inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upa);
13525 inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
13526 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13527 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13528 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13529 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const;
13530 template <typename Arg3>
13531 inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
13532 template <typename Arg3>
13533 inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
13534 template <typename Arg3>
13535 inline typed::union_pw_multi_aff<Domain, Arg3> apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const;
13536 inline typed::union_pw_multi_aff<Domain, Anonymous> apply(const typed::union_pw_aff<pair<Range, Range2>, Anonymous> &upma2) const;
13537 inline typed::multi_union_pw_aff<Domain, pair<Range, Range2>> as_multi_union_pw_aff() const;
13538 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> as_pw_multi_aff() const;
13539 inline typed::union_map<Domain, pair<Range, Range2>> as_union_map() const;
13540 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> coalesce() const;
13541 inline typed::union_set<Domain> domain() const;
13542 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> drop_unused_params() const;
13543 static inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> empty(const isl::ctx &ctx);
13544 inline typed::pw_multi_aff<Domain, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const;
13545 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::union_set<Domain> &context) const;
13546 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::basic_set<Domain> &context) const;
13547 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::point<Domain> &context) const;
13548 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> gist(const typed::set<Domain> &context) const;
13549 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::space<Domain> &space) const;
13550 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain(const typed::union_set<Domain> &uset) const;
13551 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<> &uset) const = delete;
13552 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::basic_set<> &uset) const = delete;
13553 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::point<> &uset) const = delete;
13554 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<> &uset) const = delete;
13555 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
13556 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
13557 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
13558 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<> &upma2) const = delete;
13559 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<> &upma2) const = delete;
13560 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<> &upma2) const = delete;
13561 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_aff<> &upma2) const = delete;
13562 template <typename Domain2>
13563 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const;
13564 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain> &upma2) const;
13565 template <typename Domain2>
13566 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, Domain> &upma2) const;
13567 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<Domain> &upma2) const;
13568 template <typename Domain2>
13569 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const;
13570 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain> &upma2) const;
13571 template <typename Domain2>
13572 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const;
13573 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_aff<Domain> &upma2) const;
13574 inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> pw_multi_aff_list() const;
13575 inline typed::pw_multi_aff_list<Domain, pair<Range, Range2>> get_pw_multi_aff_list() const = delete;
13576 inline typed::union_pw_multi_aff<Domain, Range> range_factor_domain() const;
13577 inline typed::union_pw_multi_aff<Domain, Range2> range_factor_range() const;
13578 template <typename Arg3>
13579 inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const;
13580 template <typename Arg3>
13581 inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::multi_aff<Domain, Arg3> &upma2) const;
13582 template <typename Arg3>
13583 inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> range_product(const typed::pw_multi_aff<Domain, Arg3> &upma2) const;
13584 inline typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>> range_product(const typed::union_pw_aff<Domain, Anonymous> &upma2) const;
13585 inline typed::space<> space() const;
13586 inline typed::space<Domain, pair<Range, Range2>> get_space() const = delete;
13587 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13588 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13589 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13590 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> sub(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const;
13591 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::space<Domain> &space) const;
13592 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> subtract_domain(const typed::union_set<Domain> &uset) const;
13593 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13594 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13595 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const;
13596 inline typed::union_pw_multi_aff<Domain, pair<Range, Range2>> union_add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const;
13599 template <typename T1, typename T2, typename Range, typename Range2>
13600 struct union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> : public isl::union_pw_multi_aff {
13601 template <typename...>
13602 friend struct aff;
13603 template <typename...>
13604 friend struct aff_list;
13605 template <typename...>
13606 friend struct basic_map;
13607 template <typename...>
13608 friend struct basic_set;
13609 template <typename...>
13610 friend struct fixed_box;
13611 template <typename...>
13612 friend struct id;
13613 template <typename...>
13614 friend struct id_list;
13615 template <typename...>
13616 friend struct map;
13617 template <typename...>
13618 friend struct map_list;
13619 template <typename...>
13620 friend struct multi_aff;
13621 template <typename...>
13622 friend struct multi_id;
13623 template <typename...>
13624 friend struct multi_pw_aff;
13625 template <typename...>
13626 friend struct multi_union_pw_aff;
13627 template <typename...>
13628 friend struct multi_val;
13629 template <typename...>
13630 friend struct point;
13631 template <typename...>
13632 friend struct pw_aff;
13633 template <typename...>
13634 friend struct pw_aff_list;
13635 template <typename...>
13636 friend struct pw_multi_aff;
13637 template <typename...>
13638 friend struct pw_multi_aff_list;
13639 template <typename...>
13640 friend struct set;
13641 template <typename...>
13642 friend struct set_list;
13643 template <typename...>
13644 friend struct space;
13645 template <typename...>
13646 friend struct union_map;
13647 template <typename...>
13648 friend struct union_pw_aff;
13649 template <typename...>
13650 friend struct union_pw_aff_list;
13651 template <typename...>
13652 friend struct union_pw_multi_aff;
13653 template <typename...>
13654 friend struct union_set;
13655 template <typename...>
13656 friend struct union_set_list;
13657 template <typename...>
13658 friend struct val;
13659 template <typename...>
13660 friend struct val_list;
13662 union_pw_multi_aff() = default;
13663 template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
13664 typename std::enable_if<
13665 std::is_base_of<T1, Arg1>{} &&
13666 std::is_base_of<T2, Arg2>{} &&
13667 std::is_base_of<Range, Arg3>{} &&
13668 std::is_base_of<Range2, Arg4>{},
13669 bool>::type = true>
13670 union_pw_multi_aff(const union_pw_multi_aff<pair<Arg1, Arg2>, pair<Arg3, Arg4>> &obj) : isl::union_pw_multi_aff(obj) {}
13671 private:
13672 template <typename base,
13673 typename std::enable_if<
13674 std::is_same<base, isl::union_pw_multi_aff>{}, bool>::type = true>
13675 union_pw_multi_aff(const base &obj) : isl::union_pw_multi_aff(obj) {}
13676 public:
13677 static union_pw_multi_aff from(const isl::union_pw_multi_aff &obj) {
13678 return union_pw_multi_aff(obj);
13680 inline /* implicit */ union_pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma);
13681 inline /* implicit */ union_pw_multi_aff(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma);
13682 inline /* implicit */ union_pw_multi_aff(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upa);
13683 inline explicit union_pw_multi_aff(const isl::ctx &ctx, const std::string &str);
13684 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13685 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13686 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13687 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13688 template <typename Arg2>
13689 inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
13690 template <typename Arg2>
13691 inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
13692 template <typename Arg2>
13693 inline typed::union_pw_multi_aff<pair<T1, T2>, Arg2> apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const;
13694 inline typed::union_pw_multi_aff<pair<T1, T2>, Anonymous> apply(const typed::union_pw_aff<pair<Range, Range2>, Anonymous> &upma2) const;
13695 inline typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> as_multi_union_pw_aff() const;
13696 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> as_pw_multi_aff() const;
13697 inline typed::union_map<pair<T1, T2>, pair<Range, Range2>> as_union_map() const;
13698 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> coalesce() const;
13699 inline typed::union_set<pair<T1, T2>> domain() const;
13700 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> drop_unused_params() const;
13701 static inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> empty(const isl::ctx &ctx);
13702 inline typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const;
13703 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::union_set<pair<T1, T2>> &context) const;
13704 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::basic_set<pair<T1, T2>> &context) const;
13705 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::point<pair<T1, T2>> &context) const;
13706 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> gist(const typed::set<pair<T1, T2>> &context) const;
13707 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::space<pair<T1, T2>> &space) const;
13708 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const;
13709 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::union_set<T1> &uset) const;
13710 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::basic_set<T1> &uset) const;
13711 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::point<T1> &uset) const;
13712 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_domain_wrapped_domain(const typed::set<T1> &uset) const;
13713 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::set<> &set) const;
13714 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::basic_set<> &set) const;
13715 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> intersect_params(const typed::point<> &set) const;
13716 template <typename Domain3>
13717 inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const;
13718 template <typename Domain3>
13719 inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &upma2) const;
13720 template <typename Domain3>
13721 inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &upma2) const;
13722 template <typename Domain3>
13723 inline typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, T1> &upma2) const;
13724 template <typename Domain2>
13725 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
13726 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const;
13727 template <typename Domain2>
13728 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &upma2) const;
13729 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::multi_aff<pair<T1, T2>> &upma2) const;
13730 template <typename Domain2>
13731 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const;
13732 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::pw_multi_aff<pair<T1, T2>> &upma2) const;
13733 template <typename Domain2>
13734 inline typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> pullback(const typed::union_pw_aff<Domain2, pair<T1, T2>> &upma2) const;
13735 inline typed::union_pw_multi_aff<pair<Range, Range2>> pullback(const typed::union_pw_aff<pair<T1, T2>> &upma2) const;
13736 inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> pw_multi_aff_list() const;
13737 inline typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> get_pw_multi_aff_list() const = delete;
13738 inline typed::union_pw_multi_aff<pair<T1, T2>, Range> range_factor_domain() const;
13739 inline typed::union_pw_multi_aff<pair<T1, T2>, Range2> range_factor_range() const;
13740 template <typename Arg2>
13741 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
13742 template <typename Arg2>
13743 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &upma2) const;
13744 template <typename Arg2>
13745 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const;
13746 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>> range_product(const typed::union_pw_aff<pair<T1, T2>, Anonymous> &upma2) const;
13747 inline typed::space<> space() const;
13748 inline typed::space<pair<T1, T2>, pair<Range, Range2>> get_space() const = delete;
13749 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13750 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13751 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13752 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> sub(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13753 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::space<pair<T1, T2>> &space) const;
13754 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const;
13755 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13756 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13757 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13758 inline typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> union_add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const;
13761 template <>
13762 struct union_set<> : public isl::union_set {
13763 template <typename...>
13764 friend struct aff;
13765 template <typename...>
13766 friend struct aff_list;
13767 template <typename...>
13768 friend struct basic_map;
13769 template <typename...>
13770 friend struct basic_set;
13771 template <typename...>
13772 friend struct fixed_box;
13773 template <typename...>
13774 friend struct id;
13775 template <typename...>
13776 friend struct id_list;
13777 template <typename...>
13778 friend struct map;
13779 template <typename...>
13780 friend struct map_list;
13781 template <typename...>
13782 friend struct multi_aff;
13783 template <typename...>
13784 friend struct multi_id;
13785 template <typename...>
13786 friend struct multi_pw_aff;
13787 template <typename...>
13788 friend struct multi_union_pw_aff;
13789 template <typename...>
13790 friend struct multi_val;
13791 template <typename...>
13792 friend struct point;
13793 template <typename...>
13794 friend struct pw_aff;
13795 template <typename...>
13796 friend struct pw_aff_list;
13797 template <typename...>
13798 friend struct pw_multi_aff;
13799 template <typename...>
13800 friend struct pw_multi_aff_list;
13801 template <typename...>
13802 friend struct set;
13803 template <typename...>
13804 friend struct set_list;
13805 template <typename...>
13806 friend struct space;
13807 template <typename...>
13808 friend struct union_map;
13809 template <typename...>
13810 friend struct union_pw_aff;
13811 template <typename...>
13812 friend struct union_pw_aff_list;
13813 template <typename...>
13814 friend struct union_pw_multi_aff;
13815 template <typename...>
13816 friend struct union_set;
13817 template <typename...>
13818 friend struct union_set_list;
13819 template <typename...>
13820 friend struct val;
13821 template <typename...>
13822 friend struct val_list;
13824 union_set() = default;
13825 private:
13826 template <typename base,
13827 typename std::enable_if<
13828 std::is_same<base, isl::union_set>{}, bool>::type = true>
13829 union_set(const base &obj) : isl::union_set(obj) {}
13830 public:
13831 static union_set from(const isl::union_set &obj) {
13832 return union_set(obj);
13834 inline /* implicit */ union_set(const typed::basic_set<> &bset);
13835 inline /* implicit */ union_set(const typed::point<> &pnt);
13836 inline /* implicit */ union_set(const typed::set<> &set);
13837 inline explicit union_set(const isl::ctx &ctx, const std::string &str);
13838 inline typed::union_set<> apply(const typed::union_map<> &umap) const = delete;
13839 inline typed::union_set<> apply(const typed::basic_map<> &umap) const = delete;
13840 inline typed::union_set<> apply(const typed::map<> &umap) const = delete;
13841 inline typed::set<> as_set() const = delete;
13842 inline typed::union_set<> coalesce() const;
13843 inline typed::union_set<> detect_equalities() const;
13844 inline typed::union_set<> drop_unused_params() const;
13845 static inline typed::union_set<> empty(const isl::ctx &ctx);
13846 inline bool every_set(const std::function<bool(typed::set<>)> &test) const;
13847 inline typed::set<> extract_set(const typed::space<> &space) const;
13848 inline void foreach_point(const std::function<void(typed::point<>)> &fn) const;
13849 inline void foreach_set(const std::function<void(typed::set<>)> &fn) const;
13850 inline typed::union_set<> gist(const typed::union_set<> &context) const;
13851 inline typed::union_set<> gist(const typed::basic_set<> &context) const;
13852 inline typed::union_set<> gist(const typed::point<> &context) const;
13853 inline typed::union_set<> gist(const typed::set<> &context) const;
13854 inline typed::union_set<> gist_params(const typed::set<> &set) const = delete;
13855 inline typed::union_set<> gist_params(const typed::basic_set<> &set) const = delete;
13856 inline typed::union_set<> gist_params(const typed::point<> &set) const = delete;
13857 inline typed::union_map<> identity() const = delete;
13858 inline typed::union_set<> intersect(const typed::union_set<> &uset2) const;
13859 inline typed::union_set<> intersect(const typed::basic_set<> &uset2) const;
13860 inline typed::union_set<> intersect(const typed::point<> &uset2) const;
13861 inline typed::union_set<> intersect(const typed::set<> &uset2) const;
13862 inline typed::union_set<> intersect_params(const typed::set<> &set) const = delete;
13863 inline typed::union_set<> intersect_params(const typed::basic_set<> &set) const = delete;
13864 inline typed::union_set<> intersect_params(const typed::point<> &set) const = delete;
13865 inline typed::union_set<> lexmax() const = delete;
13866 inline typed::union_set<> lexmin() const = delete;
13867 inline typed::set<> params() const = delete;
13868 inline typed::union_set<> preimage(const typed::multi_aff<> &ma) const = delete;
13869 inline typed::union_set<> preimage(const typed::pw_multi_aff<> &pma) const = delete;
13870 inline typed::union_set<> preimage(const typed::union_pw_multi_aff<> &upma) const = delete;
13871 inline typed::union_set<> project_out_all_params() const;
13872 inline typed::set_list<> set_list() const;
13873 inline typed::set_list<> get_set_list() const = delete;
13874 inline typed::space<> space() const;
13875 inline typed::space<> get_space() const = delete;
13876 inline typed::union_set<> subtract(const typed::union_set<> &uset2) const;
13877 inline typed::union_set<> subtract(const typed::basic_set<> &uset2) const;
13878 inline typed::union_set<> subtract(const typed::point<> &uset2) const;
13879 inline typed::union_set<> subtract(const typed::set<> &uset2) const;
13880 inline typed::union_set<> unite(const typed::union_set<> &uset2) const;
13881 inline typed::union_set<> unite(const typed::basic_set<> &uset2) const;
13882 inline typed::union_set<> unite(const typed::point<> &uset2) const;
13883 inline typed::union_set<> unite(const typed::set<> &uset2) const;
13884 inline typed::union_set<> universe() const;
13885 inline typed::union_map<> unwrap() const = delete;
13888 template <typename Domain>
13889 struct union_set<Domain> : public isl::union_set {
13890 template <typename...>
13891 friend struct aff;
13892 template <typename...>
13893 friend struct aff_list;
13894 template <typename...>
13895 friend struct basic_map;
13896 template <typename...>
13897 friend struct basic_set;
13898 template <typename...>
13899 friend struct fixed_box;
13900 template <typename...>
13901 friend struct id;
13902 template <typename...>
13903 friend struct id_list;
13904 template <typename...>
13905 friend struct map;
13906 template <typename...>
13907 friend struct map_list;
13908 template <typename...>
13909 friend struct multi_aff;
13910 template <typename...>
13911 friend struct multi_id;
13912 template <typename...>
13913 friend struct multi_pw_aff;
13914 template <typename...>
13915 friend struct multi_union_pw_aff;
13916 template <typename...>
13917 friend struct multi_val;
13918 template <typename...>
13919 friend struct point;
13920 template <typename...>
13921 friend struct pw_aff;
13922 template <typename...>
13923 friend struct pw_aff_list;
13924 template <typename...>
13925 friend struct pw_multi_aff;
13926 template <typename...>
13927 friend struct pw_multi_aff_list;
13928 template <typename...>
13929 friend struct set;
13930 template <typename...>
13931 friend struct set_list;
13932 template <typename...>
13933 friend struct space;
13934 template <typename...>
13935 friend struct union_map;
13936 template <typename...>
13937 friend struct union_pw_aff;
13938 template <typename...>
13939 friend struct union_pw_aff_list;
13940 template <typename...>
13941 friend struct union_pw_multi_aff;
13942 template <typename...>
13943 friend struct union_set;
13944 template <typename...>
13945 friend struct union_set_list;
13946 template <typename...>
13947 friend struct val;
13948 template <typename...>
13949 friend struct val_list;
13951 union_set() = default;
13952 template <typename Arg1,
13953 typename std::enable_if<
13954 std::is_base_of<Domain, Arg1>{},
13955 bool>::type = true>
13956 union_set(const union_set<Arg1> &obj) : isl::union_set(obj) {}
13957 private:
13958 template <typename base,
13959 typename std::enable_if<
13960 std::is_same<base, isl::union_set>{}, bool>::type = true>
13961 union_set(const base &obj) : isl::union_set(obj) {}
13962 public:
13963 static union_set from(const isl::union_set &obj) {
13964 return union_set(obj);
13966 inline /* implicit */ union_set(const typed::basic_set<Domain> &bset);
13967 inline /* implicit */ union_set(const typed::point<Domain> &pnt);
13968 inline /* implicit */ union_set(const typed::set<Domain> &set);
13969 inline explicit union_set(const isl::ctx &ctx, const std::string &str);
13970 template <typename Range>
13971 inline typed::union_set<Range> apply(const typed::union_map<Domain, Range> &umap) const;
13972 template <typename Range>
13973 inline typed::union_set<Range> apply(const typed::basic_map<Domain, Range> &umap) const;
13974 template <typename Range>
13975 inline typed::union_set<Range> apply(const typed::map<Domain, Range> &umap) const;
13976 inline typed::set<Domain> as_set() const;
13977 inline typed::union_set<Domain> coalesce() const;
13978 inline typed::union_set<Domain> detect_equalities() const;
13979 inline typed::union_set<Domain> drop_unused_params() const;
13980 static inline typed::union_set<Domain> empty(const isl::ctx &ctx);
13981 inline bool every_set(const std::function<bool(typed::set<Domain>)> &test) const;
13982 inline typed::set<Domain> extract_set(const typed::space<Domain> &space) const;
13983 inline void foreach_point(const std::function<void(typed::point<Domain>)> &fn) const;
13984 inline void foreach_set(const std::function<void(typed::set<Domain>)> &fn) const;
13985 inline typed::union_set<Domain> gist(const typed::union_set<Domain> &context) const;
13986 inline typed::union_set<Domain> gist(const typed::basic_set<Domain> &context) const;
13987 inline typed::union_set<Domain> gist(const typed::point<Domain> &context) const;
13988 inline typed::union_set<Domain> gist(const typed::set<Domain> &context) const;
13989 inline typed::union_set<Domain> gist_params(const typed::set<> &set) const;
13990 inline typed::union_set<Domain> gist_params(const typed::basic_set<> &set) const;
13991 inline typed::union_set<Domain> gist_params(const typed::point<> &set) const;
13992 inline typed::union_map<Domain, Domain> identity() const;
13993 inline typed::union_set<Domain> intersect(const typed::union_set<Domain> &uset2) const;
13994 inline typed::union_set<Domain> intersect(const typed::basic_set<Domain> &uset2) const;
13995 inline typed::union_set<Domain> intersect(const typed::point<Domain> &uset2) const;
13996 inline typed::union_set<Domain> intersect(const typed::set<Domain> &uset2) const;
13997 inline typed::union_set<Domain> intersect_params(const typed::set<> &set) const;
13998 inline typed::union_set<Domain> intersect_params(const typed::basic_set<> &set) const;
13999 inline typed::union_set<Domain> intersect_params(const typed::point<> &set) const;
14000 inline typed::union_set<Domain> lexmax() const;
14001 inline typed::union_set<Domain> lexmin() const;
14002 inline typed::set<> params() const;
14003 template <typename Domain2>
14004 inline typed::union_set<Domain2> preimage(const typed::multi_aff<Domain2, Domain> &ma) const;
14005 template <typename Domain2>
14006 inline typed::union_set<Domain2> preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const;
14007 template <typename Domain2>
14008 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const;
14009 inline typed::union_set<Domain> project_out_all_params() const;
14010 inline typed::set_list<Domain> set_list() const;
14011 inline typed::set_list<Domain> get_set_list() const = delete;
14012 inline typed::space<> space() const;
14013 inline typed::space<Domain> get_space() const = delete;
14014 inline typed::union_set<Domain> subtract(const typed::union_set<Domain> &uset2) const;
14015 inline typed::union_set<Domain> subtract(const typed::basic_set<Domain> &uset2) const;
14016 inline typed::union_set<Domain> subtract(const typed::point<Domain> &uset2) const;
14017 inline typed::union_set<Domain> subtract(const typed::set<Domain> &uset2) const;
14018 inline typed::union_set<Domain> unite(const typed::union_set<Domain> &uset2) const;
14019 inline typed::union_set<Domain> unite(const typed::basic_set<Domain> &uset2) const;
14020 inline typed::union_set<Domain> unite(const typed::point<Domain> &uset2) const;
14021 inline typed::union_set<Domain> unite(const typed::set<Domain> &uset2) const;
14022 inline typed::union_set<Domain> universe() const;
14023 inline typed::union_map<Domain> unwrap() const = delete;
14026 template <typename Domain, typename Range>
14027 struct union_set<pair<Domain, Range>> : public isl::union_set {
14028 template <typename...>
14029 friend struct aff;
14030 template <typename...>
14031 friend struct aff_list;
14032 template <typename...>
14033 friend struct basic_map;
14034 template <typename...>
14035 friend struct basic_set;
14036 template <typename...>
14037 friend struct fixed_box;
14038 template <typename...>
14039 friend struct id;
14040 template <typename...>
14041 friend struct id_list;
14042 template <typename...>
14043 friend struct map;
14044 template <typename...>
14045 friend struct map_list;
14046 template <typename...>
14047 friend struct multi_aff;
14048 template <typename...>
14049 friend struct multi_id;
14050 template <typename...>
14051 friend struct multi_pw_aff;
14052 template <typename...>
14053 friend struct multi_union_pw_aff;
14054 template <typename...>
14055 friend struct multi_val;
14056 template <typename...>
14057 friend struct point;
14058 template <typename...>
14059 friend struct pw_aff;
14060 template <typename...>
14061 friend struct pw_aff_list;
14062 template <typename...>
14063 friend struct pw_multi_aff;
14064 template <typename...>
14065 friend struct pw_multi_aff_list;
14066 template <typename...>
14067 friend struct set;
14068 template <typename...>
14069 friend struct set_list;
14070 template <typename...>
14071 friend struct space;
14072 template <typename...>
14073 friend struct union_map;
14074 template <typename...>
14075 friend struct union_pw_aff;
14076 template <typename...>
14077 friend struct union_pw_aff_list;
14078 template <typename...>
14079 friend struct union_pw_multi_aff;
14080 template <typename...>
14081 friend struct union_set;
14082 template <typename...>
14083 friend struct union_set_list;
14084 template <typename...>
14085 friend struct val;
14086 template <typename...>
14087 friend struct val_list;
14089 union_set() = default;
14090 template <typename Arg1, typename Arg2,
14091 typename std::enable_if<
14092 std::is_base_of<Domain, Arg1>{} &&
14093 std::is_base_of<Range, Arg2>{},
14094 bool>::type = true>
14095 union_set(const union_set<pair<Arg1, Arg2>> &obj) : isl::union_set(obj) {}
14096 private:
14097 template <typename base,
14098 typename std::enable_if<
14099 std::is_same<base, isl::union_set>{}, bool>::type = true>
14100 union_set(const base &obj) : isl::union_set(obj) {}
14101 public:
14102 static union_set from(const isl::union_set &obj) {
14103 return union_set(obj);
14105 inline /* implicit */ union_set(const typed::basic_set<pair<Domain, Range>> &bset);
14106 inline /* implicit */ union_set(const typed::point<pair<Domain, Range>> &pnt);
14107 inline /* implicit */ union_set(const typed::set<pair<Domain, Range>> &set);
14108 inline explicit union_set(const isl::ctx &ctx, const std::string &str);
14109 template <typename Arg2>
14110 inline typed::union_set<Arg2> apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const;
14111 template <typename Arg2>
14112 inline typed::union_set<Arg2> apply(const typed::basic_map<pair<Domain, Range>, Arg2> &umap) const;
14113 template <typename Arg2>
14114 inline typed::union_set<Arg2> apply(const typed::map<pair<Domain, Range>, Arg2> &umap) const;
14115 inline typed::set<pair<Domain, Range>> as_set() const;
14116 inline typed::union_set<pair<Domain, Range>> coalesce() const;
14117 inline typed::union_set<pair<Domain, Range>> detect_equalities() const;
14118 inline typed::union_set<pair<Domain, Range>> drop_unused_params() const;
14119 static inline typed::union_set<pair<Domain, Range>> empty(const isl::ctx &ctx);
14120 inline bool every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const;
14121 inline typed::set<pair<Domain, Range>> extract_set(const typed::space<pair<Domain, Range>> &space) const;
14122 inline void foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const;
14123 inline void foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const;
14124 inline typed::union_set<pair<Domain, Range>> gist(const typed::union_set<pair<Domain, Range>> &context) const;
14125 inline typed::union_set<pair<Domain, Range>> gist(const typed::basic_set<pair<Domain, Range>> &context) const;
14126 inline typed::union_set<pair<Domain, Range>> gist(const typed::point<pair<Domain, Range>> &context) const;
14127 inline typed::union_set<pair<Domain, Range>> gist(const typed::set<pair<Domain, Range>> &context) const;
14128 inline typed::union_set<pair<Domain, Range>> gist_params(const typed::set<> &set) const;
14129 inline typed::union_set<pair<Domain, Range>> gist_params(const typed::basic_set<> &set) const;
14130 inline typed::union_set<pair<Domain, Range>> gist_params(const typed::point<> &set) const;
14131 inline typed::union_map<pair<Domain, Range>, pair<Domain, Range>> identity() const;
14132 inline typed::union_set<pair<Domain, Range>> intersect(const typed::union_set<pair<Domain, Range>> &uset2) const;
14133 inline typed::union_set<pair<Domain, Range>> intersect(const typed::basic_set<pair<Domain, Range>> &uset2) const;
14134 inline typed::union_set<pair<Domain, Range>> intersect(const typed::point<pair<Domain, Range>> &uset2) const;
14135 inline typed::union_set<pair<Domain, Range>> intersect(const typed::set<pair<Domain, Range>> &uset2) const;
14136 inline typed::union_set<pair<Domain, Range>> intersect_params(const typed::set<> &set) const;
14137 inline typed::union_set<pair<Domain, Range>> intersect_params(const typed::basic_set<> &set) const;
14138 inline typed::union_set<pair<Domain, Range>> intersect_params(const typed::point<> &set) const;
14139 inline typed::union_set<pair<Domain, Range>> lexmax() const;
14140 inline typed::union_set<pair<Domain, Range>> lexmin() const;
14141 inline typed::set<> params() const;
14142 template <typename Domain2>
14143 inline typed::union_set<Domain2> preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const;
14144 template <typename Domain2>
14145 inline typed::union_set<Domain2> preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const;
14146 template <typename Domain2>
14147 inline typed::union_set<Domain2> preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const;
14148 inline typed::union_set<pair<Domain, Range>> project_out_all_params() const;
14149 inline typed::set_list<pair<Domain, Range>> set_list() const;
14150 inline typed::set_list<pair<Domain, Range>> get_set_list() const = delete;
14151 inline typed::space<> space() const;
14152 inline typed::space<pair<Domain, Range>> get_space() const = delete;
14153 inline typed::union_set<pair<Domain, Range>> subtract(const typed::union_set<pair<Domain, Range>> &uset2) const;
14154 inline typed::union_set<pair<Domain, Range>> subtract(const typed::basic_set<pair<Domain, Range>> &uset2) const;
14155 inline typed::union_set<pair<Domain, Range>> subtract(const typed::point<pair<Domain, Range>> &uset2) const;
14156 inline typed::union_set<pair<Domain, Range>> subtract(const typed::set<pair<Domain, Range>> &uset2) const;
14157 inline typed::union_set<pair<Domain, Range>> unite(const typed::union_set<pair<Domain, Range>> &uset2) const;
14158 inline typed::union_set<pair<Domain, Range>> unite(const typed::basic_set<pair<Domain, Range>> &uset2) const;
14159 inline typed::union_set<pair<Domain, Range>> unite(const typed::point<pair<Domain, Range>> &uset2) const;
14160 inline typed::union_set<pair<Domain, Range>> unite(const typed::set<pair<Domain, Range>> &uset2) const;
14161 inline typed::union_set<pair<Domain, Range>> universe() const;
14162 inline typed::union_map<Domain, Range> unwrap() const;
14165 template <>
14166 struct union_set_list<> : public isl::union_set_list {
14167 template <typename...>
14168 friend struct aff;
14169 template <typename...>
14170 friend struct aff_list;
14171 template <typename...>
14172 friend struct basic_map;
14173 template <typename...>
14174 friend struct basic_set;
14175 template <typename...>
14176 friend struct fixed_box;
14177 template <typename...>
14178 friend struct id;
14179 template <typename...>
14180 friend struct id_list;
14181 template <typename...>
14182 friend struct map;
14183 template <typename...>
14184 friend struct map_list;
14185 template <typename...>
14186 friend struct multi_aff;
14187 template <typename...>
14188 friend struct multi_id;
14189 template <typename...>
14190 friend struct multi_pw_aff;
14191 template <typename...>
14192 friend struct multi_union_pw_aff;
14193 template <typename...>
14194 friend struct multi_val;
14195 template <typename...>
14196 friend struct point;
14197 template <typename...>
14198 friend struct pw_aff;
14199 template <typename...>
14200 friend struct pw_aff_list;
14201 template <typename...>
14202 friend struct pw_multi_aff;
14203 template <typename...>
14204 friend struct pw_multi_aff_list;
14205 template <typename...>
14206 friend struct set;
14207 template <typename...>
14208 friend struct set_list;
14209 template <typename...>
14210 friend struct space;
14211 template <typename...>
14212 friend struct union_map;
14213 template <typename...>
14214 friend struct union_pw_aff;
14215 template <typename...>
14216 friend struct union_pw_aff_list;
14217 template <typename...>
14218 friend struct union_pw_multi_aff;
14219 template <typename...>
14220 friend struct union_set;
14221 template <typename...>
14222 friend struct union_set_list;
14223 template <typename...>
14224 friend struct val;
14225 template <typename...>
14226 friend struct val_list;
14228 union_set_list() = default;
14229 private:
14230 template <typename base,
14231 typename std::enable_if<
14232 std::is_same<base, isl::union_set_list>{}, bool>::type = true>
14233 union_set_list(const base &obj) : isl::union_set_list(obj) {}
14234 public:
14235 static union_set_list from(const isl::union_set_list &obj) {
14236 return union_set_list(obj);
14238 inline explicit union_set_list(const isl::ctx &ctx, int n);
14239 inline explicit union_set_list(const typed::union_set<> &el);
14240 inline explicit union_set_list(const isl::ctx &ctx, const std::string &str);
14241 inline typed::union_set_list<> add(const typed::union_set<> &el) const;
14242 inline typed::union_set_list<> add(const typed::basic_set<> &el) const;
14243 inline typed::union_set_list<> add(const typed::point<> &el) const;
14244 inline typed::union_set_list<> add(const typed::set<> &el) const;
14245 inline typed::union_set<> at(int index) const = delete;
14246 inline typed::union_set<> get_at(int index) const = delete;
14247 inline typed::union_set_list<> drop(unsigned int first, unsigned int n) const;
14248 inline void foreach(const std::function<void(typed::union_set<>)> &fn) const;
14249 inline void foreach_scc(const std::function<bool(typed::union_set<>, typed::union_set<>)> &follows, const std::function<void(typed::union_set_list<>)> &fn) const;
14250 inline typed::union_set_list<> set_at(int index, const typed::union_set<> &el) const = delete;
14253 template <typename Domain>
14254 struct union_set_list<Domain> : public isl::union_set_list {
14255 template <typename...>
14256 friend struct aff;
14257 template <typename...>
14258 friend struct aff_list;
14259 template <typename...>
14260 friend struct basic_map;
14261 template <typename...>
14262 friend struct basic_set;
14263 template <typename...>
14264 friend struct fixed_box;
14265 template <typename...>
14266 friend struct id;
14267 template <typename...>
14268 friend struct id_list;
14269 template <typename...>
14270 friend struct map;
14271 template <typename...>
14272 friend struct map_list;
14273 template <typename...>
14274 friend struct multi_aff;
14275 template <typename...>
14276 friend struct multi_id;
14277 template <typename...>
14278 friend struct multi_pw_aff;
14279 template <typename...>
14280 friend struct multi_union_pw_aff;
14281 template <typename...>
14282 friend struct multi_val;
14283 template <typename...>
14284 friend struct point;
14285 template <typename...>
14286 friend struct pw_aff;
14287 template <typename...>
14288 friend struct pw_aff_list;
14289 template <typename...>
14290 friend struct pw_multi_aff;
14291 template <typename...>
14292 friend struct pw_multi_aff_list;
14293 template <typename...>
14294 friend struct set;
14295 template <typename...>
14296 friend struct set_list;
14297 template <typename...>
14298 friend struct space;
14299 template <typename...>
14300 friend struct union_map;
14301 template <typename...>
14302 friend struct union_pw_aff;
14303 template <typename...>
14304 friend struct union_pw_aff_list;
14305 template <typename...>
14306 friend struct union_pw_multi_aff;
14307 template <typename...>
14308 friend struct union_set;
14309 template <typename...>
14310 friend struct union_set_list;
14311 template <typename...>
14312 friend struct val;
14313 template <typename...>
14314 friend struct val_list;
14316 union_set_list() = default;
14317 template <typename Arg1,
14318 typename std::enable_if<
14319 std::is_base_of<Domain, Arg1>{},
14320 bool>::type = true>
14321 union_set_list(const union_set_list<Arg1> &obj) : isl::union_set_list(obj) {}
14322 private:
14323 template <typename base,
14324 typename std::enable_if<
14325 std::is_same<base, isl::union_set_list>{}, bool>::type = true>
14326 union_set_list(const base &obj) : isl::union_set_list(obj) {}
14327 public:
14328 static union_set_list from(const isl::union_set_list &obj) {
14329 return union_set_list(obj);
14331 inline explicit union_set_list(const isl::ctx &ctx, int n);
14332 inline explicit union_set_list(const typed::union_set<Domain> &el);
14333 inline explicit union_set_list(const isl::ctx &ctx, const std::string &str);
14334 inline typed::union_set_list<Domain> add(const typed::union_set<Domain> &el) const;
14335 inline typed::union_set_list<Domain> add(const typed::basic_set<Domain> &el) const;
14336 inline typed::union_set_list<Domain> add(const typed::point<Domain> &el) const;
14337 inline typed::union_set_list<Domain> add(const typed::set<Domain> &el) const;
14338 inline typed::union_set<Domain> at(int index) const;
14339 inline typed::union_set<Domain> get_at(int index) const = delete;
14340 inline typed::union_set_list<Domain> drop(unsigned int first, unsigned int n) const;
14341 inline void foreach(const std::function<void(typed::union_set<Domain>)> &fn) const;
14342 inline void foreach_scc(const std::function<bool(typed::union_set<Domain>, typed::union_set<Domain>)> &follows, const std::function<void(typed::union_set_list<Domain>)> &fn) const;
14343 inline typed::union_set_list<Domain> set_at(int index, const typed::union_set<Anonymous> &el) const;
14346 template <>
14347 struct val<Anonymous> : public isl::val {
14348 template <typename...>
14349 friend struct aff;
14350 template <typename...>
14351 friend struct aff_list;
14352 template <typename...>
14353 friend struct basic_map;
14354 template <typename...>
14355 friend struct basic_set;
14356 template <typename...>
14357 friend struct fixed_box;
14358 template <typename...>
14359 friend struct id;
14360 template <typename...>
14361 friend struct id_list;
14362 template <typename...>
14363 friend struct map;
14364 template <typename...>
14365 friend struct map_list;
14366 template <typename...>
14367 friend struct multi_aff;
14368 template <typename...>
14369 friend struct multi_id;
14370 template <typename...>
14371 friend struct multi_pw_aff;
14372 template <typename...>
14373 friend struct multi_union_pw_aff;
14374 template <typename...>
14375 friend struct multi_val;
14376 template <typename...>
14377 friend struct point;
14378 template <typename...>
14379 friend struct pw_aff;
14380 template <typename...>
14381 friend struct pw_aff_list;
14382 template <typename...>
14383 friend struct pw_multi_aff;
14384 template <typename...>
14385 friend struct pw_multi_aff_list;
14386 template <typename...>
14387 friend struct set;
14388 template <typename...>
14389 friend struct set_list;
14390 template <typename...>
14391 friend struct space;
14392 template <typename...>
14393 friend struct union_map;
14394 template <typename...>
14395 friend struct union_pw_aff;
14396 template <typename...>
14397 friend struct union_pw_aff_list;
14398 template <typename...>
14399 friend struct union_pw_multi_aff;
14400 template <typename...>
14401 friend struct union_set;
14402 template <typename...>
14403 friend struct union_set_list;
14404 template <typename...>
14405 friend struct val;
14406 template <typename...>
14407 friend struct val_list;
14409 val() = default;
14410 val(const isl::val &obj) : isl::val(obj) {}
14411 static val from(const isl::val &obj) {
14412 return val(obj);
14414 inline explicit val(const isl::ctx &ctx, long i);
14415 inline explicit val(const isl::ctx &ctx, const std::string &str);
14416 inline typed::val<Anonymous> add(const typed::val<Anonymous> &v2) const;
14417 inline typed::val<Anonymous> add(long v2) const;
14418 inline typed::val<Anonymous> ceil() const;
14419 inline long get_den_si() const = delete;
14420 inline typed::val<Anonymous> floor() const;
14421 inline typed::val<Anonymous> max(const typed::val<Anonymous> &v2) const;
14422 inline typed::val<Anonymous> max(long v2) const;
14423 inline typed::val<Anonymous> min(const typed::val<Anonymous> &v2) const;
14424 inline typed::val<Anonymous> min(long v2) const;
14425 inline typed::val<Anonymous> mod(const typed::val<Anonymous> &v2) const;
14426 inline typed::val<Anonymous> mod(long v2) const;
14427 inline typed::val<Anonymous> neg() const;
14428 inline long get_num_si() const = delete;
14429 inline typed::val<Anonymous> sub(const typed::val<Anonymous> &v2) const;
14430 inline typed::val<Anonymous> sub(long v2) const;
14433 template <>
14434 struct val_list<Anonymous> : public isl::val_list {
14435 template <typename...>
14436 friend struct aff;
14437 template <typename...>
14438 friend struct aff_list;
14439 template <typename...>
14440 friend struct basic_map;
14441 template <typename...>
14442 friend struct basic_set;
14443 template <typename...>
14444 friend struct fixed_box;
14445 template <typename...>
14446 friend struct id;
14447 template <typename...>
14448 friend struct id_list;
14449 template <typename...>
14450 friend struct map;
14451 template <typename...>
14452 friend struct map_list;
14453 template <typename...>
14454 friend struct multi_aff;
14455 template <typename...>
14456 friend struct multi_id;
14457 template <typename...>
14458 friend struct multi_pw_aff;
14459 template <typename...>
14460 friend struct multi_union_pw_aff;
14461 template <typename...>
14462 friend struct multi_val;
14463 template <typename...>
14464 friend struct point;
14465 template <typename...>
14466 friend struct pw_aff;
14467 template <typename...>
14468 friend struct pw_aff_list;
14469 template <typename...>
14470 friend struct pw_multi_aff;
14471 template <typename...>
14472 friend struct pw_multi_aff_list;
14473 template <typename...>
14474 friend struct set;
14475 template <typename...>
14476 friend struct set_list;
14477 template <typename...>
14478 friend struct space;
14479 template <typename...>
14480 friend struct union_map;
14481 template <typename...>
14482 friend struct union_pw_aff;
14483 template <typename...>
14484 friend struct union_pw_aff_list;
14485 template <typename...>
14486 friend struct union_pw_multi_aff;
14487 template <typename...>
14488 friend struct union_set;
14489 template <typename...>
14490 friend struct union_set_list;
14491 template <typename...>
14492 friend struct val;
14493 template <typename...>
14494 friend struct val_list;
14496 val_list() = default;
14497 val_list(const isl::val_list &obj) : isl::val_list(obj) {}
14498 static val_list from(const isl::val_list &obj) {
14499 return val_list(obj);
14501 inline explicit val_list(const isl::ctx &ctx, int n);
14502 inline explicit val_list(const typed::val<Anonymous> &el);
14503 inline explicit val_list(const isl::ctx &ctx, const std::string &str);
14504 inline typed::val_list<Anonymous> add(const typed::val<Anonymous> &el) const;
14505 inline typed::val_list<Anonymous> add(long el) const;
14506 inline typed::val<Anonymous> at(int index) const;
14507 inline typed::val<Anonymous> get_at(int index) const = delete;
14508 inline typed::val_list<Anonymous> drop(unsigned int first, unsigned int n) const;
14509 inline void foreach(const std::function<void(typed::val<Anonymous>)> &fn) const;
14510 inline void foreach_scc(const std::function<bool(typed::val<Anonymous>, typed::val<Anonymous>)> &follows, const std::function<void(typed::val_list<Anonymous>)> &fn) const;
14511 inline typed::val_list<Anonymous> set_at(int index, const typed::val<Anonymous> &el) const;
14512 inline typed::val_list<Anonymous> set_at(int index, long el) const;
14515 typed::aff<Anonymous>::aff(const isl::ctx &ctx, const std::string &str)
14516 : isl::aff(ctx, str)
14520 typed::aff<Anonymous> typed::aff<Anonymous>::add(const typed::aff<Anonymous> &aff2) const
14522 auto res = isl::aff::add(aff2);
14523 return typed::aff<Anonymous>(res);
14526 typed::multi_aff<Anonymous> typed::aff<Anonymous>::add(const typed::multi_aff<Anonymous> &multi2) const
14528 auto res = isl::aff::add(multi2);
14529 return typed::multi_aff<Anonymous>(res);
14532 typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::multi_pw_aff<Anonymous> &multi2) const
14534 auto res = isl::aff::add(multi2);
14535 return typed::multi_pw_aff<Anonymous>(res);
14538 typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::multi_union_pw_aff<Anonymous> &multi2) const
14540 auto res = isl::aff::add(multi2);
14541 return typed::multi_union_pw_aff<Anonymous>(res);
14544 typed::pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::pw_aff<Anonymous> &pwaff2) const
14546 auto res = isl::aff::add(pwaff2);
14547 return typed::pw_aff<Anonymous>(res);
14550 typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::add(const typed::pw_multi_aff<Anonymous> &pma2) const
14552 auto res = isl::aff::add(pma2);
14553 return typed::pw_multi_aff<Anonymous>(res);
14556 typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::add(const typed::union_pw_aff<Anonymous> &upa2) const
14558 auto res = isl::aff::add(upa2);
14559 return typed::union_pw_aff<Anonymous>(res);
14562 typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
14564 auto res = isl::aff::add(upma2);
14565 return typed::union_pw_multi_aff<Anonymous>(res);
14568 typed::aff<Anonymous> typed::aff<Anonymous>::add_constant(const typed::val<Anonymous> &v) const
14570 auto res = isl::aff::add_constant(v);
14571 return typed::aff<Anonymous>(res);
14574 typed::aff<Anonymous> typed::aff<Anonymous>::add_constant(long v) const
14576 auto res = isl::aff::add_constant(v);
14577 return typed::aff<Anonymous>(res);
14580 typed::multi_aff<Anonymous> typed::aff<Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
14582 auto res = isl::aff::add_constant(mv);
14583 return typed::multi_aff<Anonymous>(res);
14586 template <typename Range>
14587 typed::union_pw_multi_aff<Range> typed::aff<Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const
14589 auto res = isl::aff::apply(upma2);
14590 return typed::union_pw_multi_aff<Range>(res);
14593 typed::aff<Anonymous> typed::aff<Anonymous>::as_aff() const
14595 auto res = isl::aff::as_aff();
14596 return typed::aff<Anonymous>(res);
14599 typed::multi_aff<Anonymous> typed::aff<Anonymous>::as_multi_aff() const
14601 auto res = isl::aff::as_multi_aff();
14602 return typed::multi_aff<Anonymous>(res);
14605 typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::as_multi_union_pw_aff() const
14607 auto res = isl::aff::as_multi_union_pw_aff();
14608 return typed::multi_union_pw_aff<Anonymous>(res);
14611 typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::as_pw_multi_aff() const
14613 auto res = isl::aff::as_pw_multi_aff();
14614 return typed::pw_multi_aff<Anonymous>(res);
14617 typed::set<Anonymous> typed::aff<Anonymous>::as_set() const
14619 auto res = isl::aff::as_set();
14620 return typed::set<Anonymous>(res);
14623 typed::aff<Anonymous> typed::aff<Anonymous>::at(int pos) const
14625 auto res = isl::aff::at(pos);
14626 return typed::aff<Anonymous>(res);
14629 typed::basic_set<> typed::aff<Anonymous>::bind(const typed::id<Anonymous> &id) const
14631 auto res = isl::aff::bind(id);
14632 return typed::basic_set<>(res);
14635 typed::basic_set<> typed::aff<Anonymous>::bind(const std::string &id) const
14637 auto res = isl::aff::bind(id);
14638 return typed::basic_set<>(res);
14641 typed::basic_set<> typed::aff<Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
14643 auto res = isl::aff::bind(tuple);
14644 return typed::basic_set<>(res);
14647 typed::aff<Anonymous> typed::aff<Anonymous>::ceil() const
14649 auto res = isl::aff::ceil();
14650 return typed::aff<Anonymous>(res);
14653 typed::pw_aff<Anonymous> typed::aff<Anonymous>::coalesce() const
14655 auto res = isl::aff::coalesce();
14656 return typed::pw_aff<Anonymous>(res);
14659 typed::pw_aff<Anonymous> typed::aff<Anonymous>::cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const
14661 auto res = isl::aff::cond(pwaff_true, pwaff_false);
14662 return typed::pw_aff<Anonymous>(res);
14665 typed::multi_val<Anonymous> typed::aff<Anonymous>::constant_multi_val() const
14667 auto res = isl::aff::constant_multi_val();
14668 return typed::multi_val<Anonymous>(res);
14671 typed::val<Anonymous> typed::aff<Anonymous>::constant_val() const
14673 auto res = isl::aff::constant_val();
14674 return typed::val<Anonymous>(res);
14677 typed::set<> typed::aff<Anonymous>::domain() const
14679 auto res = isl::aff::domain();
14680 return typed::set<>(res);
14683 typed::pw_aff<Anonymous> typed::aff<Anonymous>::drop_unused_params() const
14685 auto res = isl::aff::drop_unused_params();
14686 return typed::pw_aff<Anonymous>(res);
14689 typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::extract_pw_multi_aff(const typed::space<Anonymous> &space) const
14691 auto res = isl::aff::extract_pw_multi_aff(space);
14692 return typed::pw_multi_aff<Anonymous>(res);
14695 typed::aff<Anonymous> typed::aff<Anonymous>::floor() const
14697 auto res = isl::aff::floor();
14698 return typed::aff<Anonymous>(res);
14701 typed::aff<Anonymous> typed::aff<Anonymous>::gist(const typed::set<> &context) const
14703 auto res = isl::aff::gist(context);
14704 return typed::aff<Anonymous>(res);
14707 typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::gist(const typed::union_set<> &context) const
14709 auto res = isl::aff::gist(context);
14710 return typed::union_pw_aff<Anonymous>(res);
14713 typed::aff<Anonymous> typed::aff<Anonymous>::gist(const typed::basic_set<> &context) const
14715 auto res = isl::aff::gist(context);
14716 return typed::aff<Anonymous>(res);
14719 typed::aff<Anonymous> typed::aff<Anonymous>::gist(const typed::point<> &context) const
14721 auto res = isl::aff::gist(context);
14722 return typed::aff<Anonymous>(res);
14725 typed::aff<Anonymous> typed::aff<Anonymous>::gist_params(const typed::set<> &context) const
14727 auto res = isl::aff::gist_params(context);
14728 return typed::aff<Anonymous>(res);
14731 typed::aff<Anonymous> typed::aff<Anonymous>::gist_params(const typed::basic_set<> &context) const
14733 auto res = isl::aff::gist_params(context);
14734 return typed::aff<Anonymous>(res);
14737 typed::aff<Anonymous> typed::aff<Anonymous>::gist_params(const typed::point<> &context) const
14739 auto res = isl::aff::gist_params(context);
14740 return typed::aff<Anonymous>(res);
14743 typed::multi_aff<Anonymous, Anonymous> typed::aff<Anonymous>::identity() const
14745 auto res = isl::aff::identity();
14746 return typed::multi_aff<Anonymous, Anonymous>(res);
14749 template <typename Domain>
14750 typed::pw_aff<Domain, Anonymous> typed::aff<Anonymous>::insert_domain(const typed::space<Domain> &domain) const
14752 auto res = isl::aff::insert_domain(domain);
14753 return typed::pw_aff<Domain, Anonymous>(res);
14756 typed::pw_aff<Anonymous> typed::aff<Anonymous>::intersect_params(const typed::set<> &set) const
14758 auto res = isl::aff::intersect_params(set);
14759 return typed::pw_aff<Anonymous>(res);
14762 typed::aff_list<Anonymous> typed::aff<Anonymous>::list() const
14764 auto res = isl::aff::list();
14765 return typed::aff_list<Anonymous>(res);
14768 typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::max(const typed::multi_pw_aff<Anonymous> &multi2) const
14770 auto res = isl::aff::max(multi2);
14771 return typed::multi_pw_aff<Anonymous>(res);
14774 typed::pw_aff<Anonymous> typed::aff<Anonymous>::max(const typed::pw_aff<Anonymous> &pwaff2) const
14776 auto res = isl::aff::max(pwaff2);
14777 return typed::pw_aff<Anonymous>(res);
14780 typed::multi_val<Anonymous> typed::aff<Anonymous>::max_multi_val() const
14782 auto res = isl::aff::max_multi_val();
14783 return typed::multi_val<Anonymous>(res);
14786 typed::val<Anonymous> typed::aff<Anonymous>::max_val() const
14788 auto res = isl::aff::max_val();
14789 return typed::val<Anonymous>(res);
14792 typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::min(const typed::multi_pw_aff<Anonymous> &multi2) const
14794 auto res = isl::aff::min(multi2);
14795 return typed::multi_pw_aff<Anonymous>(res);
14798 typed::pw_aff<Anonymous> typed::aff<Anonymous>::min(const typed::pw_aff<Anonymous> &pwaff2) const
14800 auto res = isl::aff::min(pwaff2);
14801 return typed::pw_aff<Anonymous>(res);
14804 typed::multi_val<Anonymous> typed::aff<Anonymous>::min_multi_val() const
14806 auto res = isl::aff::min_multi_val();
14807 return typed::multi_val<Anonymous>(res);
14810 typed::val<Anonymous> typed::aff<Anonymous>::min_val() const
14812 auto res = isl::aff::min_val();
14813 return typed::val<Anonymous>(res);
14816 typed::aff<Anonymous> typed::aff<Anonymous>::mod(const typed::val<Anonymous> &mod) const
14818 auto res = isl::aff::mod(mod);
14819 return typed::aff<Anonymous>(res);
14822 typed::aff<Anonymous> typed::aff<Anonymous>::mod(long mod) const
14824 auto res = isl::aff::mod(mod);
14825 return typed::aff<Anonymous>(res);
14828 typed::aff<Anonymous> typed::aff<Anonymous>::neg() const
14830 auto res = isl::aff::neg();
14831 return typed::aff<Anonymous>(res);
14834 typed::set<> typed::aff<Anonymous>::params() const
14836 auto res = isl::aff::params();
14837 return typed::set<>(res);
14840 template <typename Range>
14841 typed::multi_aff<pair<Anonymous, Range>> typed::aff<Anonymous>::product(const typed::multi_aff<Range> &multi2) const
14843 auto res = isl::aff::product(multi2);
14844 return typed::multi_aff<pair<Anonymous, Range>>(res);
14847 template <typename Range>
14848 typed::multi_pw_aff<pair<Anonymous, Range>> typed::aff<Anonymous>::product(const typed::multi_pw_aff<Range> &multi2) const
14850 auto res = isl::aff::product(multi2);
14851 return typed::multi_pw_aff<pair<Anonymous, Range>>(res);
14854 template <typename Range>
14855 typed::pw_multi_aff<pair<Anonymous, Range>> typed::aff<Anonymous>::product(const typed::pw_multi_aff<Range> &pma2) const
14857 auto res = isl::aff::product(pma2);
14858 return typed::pw_multi_aff<pair<Anonymous, Range>>(res);
14861 typed::pw_multi_aff_list<Anonymous> typed::aff<Anonymous>::pw_multi_aff_list() const
14863 auto res = isl::aff::pw_multi_aff_list();
14864 return typed::pw_multi_aff_list<Anonymous>(res);
14867 typed::aff<Anonymous> typed::aff<Anonymous>::scale(const typed::val<Anonymous> &v) const
14869 auto res = isl::aff::scale(v);
14870 return typed::aff<Anonymous>(res);
14873 typed::aff<Anonymous> typed::aff<Anonymous>::scale(long v) const
14875 auto res = isl::aff::scale(v);
14876 return typed::aff<Anonymous>(res);
14879 typed::multi_aff<Anonymous> typed::aff<Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
14881 auto res = isl::aff::scale(mv);
14882 return typed::multi_aff<Anonymous>(res);
14885 typed::aff<Anonymous> typed::aff<Anonymous>::scale_down(const typed::val<Anonymous> &v) const
14887 auto res = isl::aff::scale_down(v);
14888 return typed::aff<Anonymous>(res);
14891 typed::aff<Anonymous> typed::aff<Anonymous>::scale_down(long v) const
14893 auto res = isl::aff::scale_down(v);
14894 return typed::aff<Anonymous>(res);
14897 typed::multi_aff<Anonymous> typed::aff<Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
14899 auto res = isl::aff::scale_down(mv);
14900 return typed::multi_aff<Anonymous>(res);
14903 typed::multi_aff<Anonymous> typed::aff<Anonymous>::set_at(int pos, const typed::aff<Anonymous> &el) const
14905 auto res = isl::aff::set_at(pos, el);
14906 return typed::multi_aff<Anonymous>(res);
14909 typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
14911 auto res = isl::aff::set_at(pos, el);
14912 return typed::multi_pw_aff<Anonymous>(res);
14915 typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
14917 auto res = isl::aff::set_at(pos, el);
14918 return typed::multi_union_pw_aff<Anonymous>(res);
14921 template <typename Domain2>
14922 typed::multi_aff<Domain2> typed::aff<Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
14924 auto res = isl::aff::set_range_tuple(id);
14925 return typed::multi_aff<Domain2>(res);
14928 template <typename Domain2>
14929 typed::multi_aff<Domain2> typed::aff<Anonymous>::set_range_tuple(const std::string &id) const
14931 auto res = isl::aff::set_range_tuple(id);
14932 return typed::multi_aff<Domain2>(res);
14935 typed::space<Anonymous> typed::aff<Anonymous>::space() const
14937 auto res = isl::aff::space();
14938 return typed::space<Anonymous>(res);
14941 typed::aff<Anonymous> typed::aff<Anonymous>::sub(const typed::aff<Anonymous> &aff2) const
14943 auto res = isl::aff::sub(aff2);
14944 return typed::aff<Anonymous>(res);
14947 typed::multi_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::multi_aff<Anonymous> &multi2) const
14949 auto res = isl::aff::sub(multi2);
14950 return typed::multi_aff<Anonymous>(res);
14953 typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::multi_pw_aff<Anonymous> &multi2) const
14955 auto res = isl::aff::sub(multi2);
14956 return typed::multi_pw_aff<Anonymous>(res);
14959 typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const
14961 auto res = isl::aff::sub(multi2);
14962 return typed::multi_union_pw_aff<Anonymous>(res);
14965 typed::pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::pw_aff<Anonymous> &pwaff2) const
14967 auto res = isl::aff::sub(pwaff2);
14968 return typed::pw_aff<Anonymous>(res);
14971 typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::pw_multi_aff<Anonymous> &pma2) const
14973 auto res = isl::aff::sub(pma2);
14974 return typed::pw_multi_aff<Anonymous>(res);
14977 typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::union_pw_aff<Anonymous> &upa2) const
14979 auto res = isl::aff::sub(upa2);
14980 return typed::union_pw_aff<Anonymous>(res);
14983 typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const
14985 auto res = isl::aff::sub(upma2);
14986 return typed::union_pw_multi_aff<Anonymous>(res);
14989 typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::to_multi_pw_aff() const
14991 auto res = isl::aff::to_multi_pw_aff();
14992 return typed::multi_pw_aff<Anonymous>(res);
14995 typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::to_multi_union_pw_aff() const
14997 auto res = isl::aff::to_multi_union_pw_aff();
14998 return typed::multi_union_pw_aff<Anonymous>(res);
15001 typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::to_pw_multi_aff() const
15003 auto res = isl::aff::to_pw_multi_aff();
15004 return typed::pw_multi_aff<Anonymous>(res);
15007 typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::to_union_pw_aff() const
15009 auto res = isl::aff::to_union_pw_aff();
15010 return typed::union_pw_aff<Anonymous>(res);
15013 typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::to_union_pw_multi_aff() const
15015 auto res = isl::aff::to_union_pw_multi_aff();
15016 return typed::union_pw_multi_aff<Anonymous>(res);
15019 template <typename Domain>
15020 typed::aff<Domain, Anonymous> typed::aff<Anonymous>::unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const
15022 auto res = isl::aff::unbind_params_insert_domain(domain);
15023 return typed::aff<Domain, Anonymous>(res);
15026 typed::multi_pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const
15028 auto res = isl::aff::union_add(mpa2);
15029 return typed::multi_pw_aff<Anonymous>(res);
15032 typed::multi_union_pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const
15034 auto res = isl::aff::union_add(mupa2);
15035 return typed::multi_union_pw_aff<Anonymous>(res);
15038 typed::pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::pw_aff<Anonymous> &pwaff2) const
15040 auto res = isl::aff::union_add(pwaff2);
15041 return typed::pw_aff<Anonymous>(res);
15044 typed::pw_multi_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::pw_multi_aff<Anonymous> &pma2) const
15046 auto res = isl::aff::union_add(pma2);
15047 return typed::pw_multi_aff<Anonymous>(res);
15050 typed::union_pw_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::union_pw_aff<Anonymous> &upa2) const
15052 auto res = isl::aff::union_add(upa2);
15053 return typed::union_pw_aff<Anonymous>(res);
15056 typed::union_pw_multi_aff<Anonymous> typed::aff<Anonymous>::union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
15058 auto res = isl::aff::union_add(upma2);
15059 return typed::union_pw_multi_aff<Anonymous>(res);
15062 template <typename Domain>
15063 typed::aff<Domain, Anonymous>::aff(const isl::ctx &ctx, const std::string &str)
15064 : isl::aff(ctx, str)
15068 template <typename Domain>
15069 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &aff2) const
15071 auto res = isl::aff::add(aff2);
15072 return typed::aff<Domain, Anonymous>(res);
15075 template <typename Domain>
15076 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::multi_aff<Domain, Anonymous> &multi2) const
15078 auto res = isl::aff::add(multi2);
15079 return typed::multi_aff<Domain, Anonymous>(res);
15082 template <typename Domain>
15083 typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
15085 auto res = isl::aff::add(multi2);
15086 return typed::multi_pw_aff<Domain, Anonymous>(res);
15089 template <typename Domain>
15090 typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
15092 auto res = isl::aff::add(multi2);
15093 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
15096 template <typename Domain>
15097 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15099 auto res = isl::aff::add(pwaff2);
15100 return typed::pw_aff<Domain, Anonymous>(res);
15103 template <typename Domain>
15104 typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
15106 auto res = isl::aff::add(pma2);
15107 return typed::pw_multi_aff<Domain, Anonymous>(res);
15110 template <typename Domain>
15111 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
15113 auto res = isl::aff::add(upa2);
15114 return typed::union_pw_aff<Domain, Anonymous>(res);
15117 template <typename Domain>
15118 typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
15120 auto res = isl::aff::add(upma2);
15121 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
15124 template <typename Domain>
15125 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
15127 auto res = isl::aff::add_constant(v);
15128 return typed::aff<Domain, Anonymous>(res);
15131 template <typename Domain>
15132 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add_constant(long v) const
15134 auto res = isl::aff::add_constant(v);
15135 return typed::aff<Domain, Anonymous>(res);
15138 template <typename Domain>
15139 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
15141 auto res = isl::aff::add_constant(mv);
15142 return typed::multi_aff<Domain, Anonymous>(res);
15145 template <typename Domain>
15146 template <typename Range2>
15147 typed::union_pw_multi_aff<Domain, Range2> typed::aff<Domain, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
15149 auto res = isl::aff::apply(upma2);
15150 return typed::union_pw_multi_aff<Domain, Range2>(res);
15153 template <typename Domain>
15154 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_aff() const
15156 auto res = isl::aff::as_aff();
15157 return typed::aff<Domain, Anonymous>(res);
15160 template <typename Domain>
15161 typed::map<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_map() const
15163 auto res = isl::aff::as_map();
15164 return typed::map<Domain, Anonymous>(res);
15167 template <typename Domain>
15168 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_multi_aff() const
15170 auto res = isl::aff::as_multi_aff();
15171 return typed::multi_aff<Domain, Anonymous>(res);
15174 template <typename Domain>
15175 typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_multi_union_pw_aff() const
15177 auto res = isl::aff::as_multi_union_pw_aff();
15178 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
15181 template <typename Domain>
15182 typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_pw_multi_aff() const
15184 auto res = isl::aff::as_pw_multi_aff();
15185 return typed::pw_multi_aff<Domain, Anonymous>(res);
15188 template <typename Domain>
15189 typed::union_map<Domain, Anonymous> typed::aff<Domain, Anonymous>::as_union_map() const
15191 auto res = isl::aff::as_union_map();
15192 return typed::union_map<Domain, Anonymous>(res);
15195 template <typename Domain>
15196 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::at(int pos) const
15198 auto res = isl::aff::at(pos);
15199 return typed::aff<Domain, Anonymous>(res);
15202 template <typename Domain>
15203 typed::basic_set<Domain> typed::aff<Domain, Anonymous>::bind(const typed::id<Anonymous> &id) const
15205 auto res = isl::aff::bind(id);
15206 return typed::basic_set<Domain>(res);
15209 template <typename Domain>
15210 typed::basic_set<Domain> typed::aff<Domain, Anonymous>::bind(const std::string &id) const
15212 auto res = isl::aff::bind(id);
15213 return typed::basic_set<Domain>(res);
15216 template <typename Domain>
15217 typed::basic_set<Domain> typed::aff<Domain, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
15219 auto res = isl::aff::bind(tuple);
15220 return typed::basic_set<Domain>(res);
15223 template <typename Domain>
15224 typed::pw_aff<Anonymous> typed::aff<Domain, Anonymous>::bind_domain(const typed::multi_id<Domain> &tuple) const
15226 auto res = isl::aff::bind_domain(tuple);
15227 return typed::pw_aff<Anonymous>(res);
15230 template <typename Domain>
15231 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::ceil() const
15233 auto res = isl::aff::ceil();
15234 return typed::aff<Domain, Anonymous>(res);
15237 template <typename Domain>
15238 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::coalesce() const
15240 auto res = isl::aff::coalesce();
15241 return typed::pw_aff<Domain, Anonymous>(res);
15244 template <typename Domain>
15245 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const
15247 auto res = isl::aff::cond(pwaff_true, pwaff_false);
15248 return typed::pw_aff<Domain, Anonymous>(res);
15251 template <typename Domain>
15252 typed::multi_val<Anonymous> typed::aff<Domain, Anonymous>::constant_multi_val() const
15254 auto res = isl::aff::constant_multi_val();
15255 return typed::multi_val<Anonymous>(res);
15258 template <typename Domain>
15259 typed::val<Anonymous> typed::aff<Domain, Anonymous>::constant_val() const
15261 auto res = isl::aff::constant_val();
15262 return typed::val<Anonymous>(res);
15265 template <typename Domain>
15266 typed::set<Domain> typed::aff<Domain, Anonymous>::domain() const
15268 auto res = isl::aff::domain();
15269 return typed::set<Domain>(res);
15272 template <typename Domain>
15273 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::drop_unused_params() const
15275 auto res = isl::aff::drop_unused_params();
15276 return typed::pw_aff<Domain, Anonymous>(res);
15279 template <typename Domain>
15280 typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const
15282 auto res = isl::aff::extract_pw_multi_aff(space);
15283 return typed::pw_multi_aff<Domain, Anonymous>(res);
15286 template <typename Domain>
15287 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::floor() const
15289 auto res = isl::aff::floor();
15290 return typed::aff<Domain, Anonymous>(res);
15293 template <typename Domain>
15294 typed::set<Domain> typed::aff<Domain, Anonymous>::ge_set(const typed::aff<Domain, Anonymous> &aff2) const
15296 auto res = isl::aff::ge_set(aff2);
15297 return typed::set<Domain>(res);
15300 template <typename Domain>
15301 typed::set<Domain> typed::aff<Domain, Anonymous>::ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15303 auto res = isl::aff::ge_set(pwaff2);
15304 return typed::set<Domain>(res);
15307 template <typename Domain>
15308 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::set<Domain> &context) const
15310 auto res = isl::aff::gist(context);
15311 return typed::aff<Domain, Anonymous>(res);
15314 template <typename Domain>
15315 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::union_set<Domain> &context) const
15317 auto res = isl::aff::gist(context);
15318 return typed::union_pw_aff<Domain, Anonymous>(res);
15321 template <typename Domain>
15322 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::basic_set<Domain> &context) const
15324 auto res = isl::aff::gist(context);
15325 return typed::aff<Domain, Anonymous>(res);
15328 template <typename Domain>
15329 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist(const typed::point<Domain> &context) const
15331 auto res = isl::aff::gist(context);
15332 return typed::aff<Domain, Anonymous>(res);
15335 template <typename Domain>
15336 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist_params(const typed::set<> &context) const
15338 auto res = isl::aff::gist_params(context);
15339 return typed::aff<Domain, Anonymous>(res);
15342 template <typename Domain>
15343 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist_params(const typed::basic_set<> &context) const
15345 auto res = isl::aff::gist_params(context);
15346 return typed::aff<Domain, Anonymous>(res);
15349 template <typename Domain>
15350 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::gist_params(const typed::point<> &context) const
15352 auto res = isl::aff::gist_params(context);
15353 return typed::aff<Domain, Anonymous>(res);
15356 template <typename Domain>
15357 typed::set<Domain> typed::aff<Domain, Anonymous>::gt_set(const typed::aff<Domain, Anonymous> &aff2) const
15359 auto res = isl::aff::gt_set(aff2);
15360 return typed::set<Domain>(res);
15363 template <typename Domain>
15364 typed::set<Domain> typed::aff<Domain, Anonymous>::gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15366 auto res = isl::aff::gt_set(pwaff2);
15367 return typed::set<Domain>(res);
15370 template <typename Domain>
15371 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::identity() const
15373 auto res = isl::aff::identity();
15374 return typed::multi_aff<Domain, Anonymous>(res);
15377 template <typename Domain>
15378 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_domain(const typed::set<Domain> &set) const
15380 auto res = isl::aff::intersect_domain(set);
15381 return typed::pw_aff<Domain, Anonymous>(res);
15384 template <typename Domain>
15385 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_domain(const typed::space<Domain> &space) const
15387 auto res = isl::aff::intersect_domain(space);
15388 return typed::union_pw_aff<Domain, Anonymous>(res);
15391 template <typename Domain>
15392 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_domain(const typed::union_set<Domain> &uset) const
15394 auto res = isl::aff::intersect_domain(uset);
15395 return typed::union_pw_aff<Domain, Anonymous>(res);
15398 template <typename Domain>
15399 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::intersect_params(const typed::set<> &set) const
15401 auto res = isl::aff::intersect_params(set);
15402 return typed::pw_aff<Domain, Anonymous>(res);
15405 template <typename Domain>
15406 typed::set<Domain> typed::aff<Domain, Anonymous>::le_set(const typed::aff<Domain, Anonymous> &aff2) const
15408 auto res = isl::aff::le_set(aff2);
15409 return typed::set<Domain>(res);
15412 template <typename Domain>
15413 typed::set<Domain> typed::aff<Domain, Anonymous>::le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15415 auto res = isl::aff::le_set(pwaff2);
15416 return typed::set<Domain>(res);
15419 template <typename Domain>
15420 typed::aff_list<Domain, Anonymous> typed::aff<Domain, Anonymous>::list() const
15422 auto res = isl::aff::list();
15423 return typed::aff_list<Domain, Anonymous>(res);
15426 template <typename Domain>
15427 typed::set<Domain> typed::aff<Domain, Anonymous>::lt_set(const typed::aff<Domain, Anonymous> &aff2) const
15429 auto res = isl::aff::lt_set(aff2);
15430 return typed::set<Domain>(res);
15433 template <typename Domain>
15434 typed::set<Domain> typed::aff<Domain, Anonymous>::lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15436 auto res = isl::aff::lt_set(pwaff2);
15437 return typed::set<Domain>(res);
15440 template <typename Domain>
15441 typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
15443 auto res = isl::aff::max(multi2);
15444 return typed::multi_pw_aff<Domain, Anonymous>(res);
15447 template <typename Domain>
15448 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15450 auto res = isl::aff::max(pwaff2);
15451 return typed::pw_aff<Domain, Anonymous>(res);
15454 template <typename Domain>
15455 typed::multi_val<Anonymous> typed::aff<Domain, Anonymous>::max_multi_val() const
15457 auto res = isl::aff::max_multi_val();
15458 return typed::multi_val<Anonymous>(res);
15461 template <typename Domain>
15462 typed::val<Anonymous> typed::aff<Domain, Anonymous>::max_val() const
15464 auto res = isl::aff::max_val();
15465 return typed::val<Anonymous>(res);
15468 template <typename Domain>
15469 typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
15471 auto res = isl::aff::min(multi2);
15472 return typed::multi_pw_aff<Domain, Anonymous>(res);
15475 template <typename Domain>
15476 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15478 auto res = isl::aff::min(pwaff2);
15479 return typed::pw_aff<Domain, Anonymous>(res);
15482 template <typename Domain>
15483 typed::multi_val<Anonymous> typed::aff<Domain, Anonymous>::min_multi_val() const
15485 auto res = isl::aff::min_multi_val();
15486 return typed::multi_val<Anonymous>(res);
15489 template <typename Domain>
15490 typed::val<Anonymous> typed::aff<Domain, Anonymous>::min_val() const
15492 auto res = isl::aff::min_val();
15493 return typed::val<Anonymous>(res);
15496 template <typename Domain>
15497 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::mod(const typed::val<Anonymous> &mod) const
15499 auto res = isl::aff::mod(mod);
15500 return typed::aff<Domain, Anonymous>(res);
15503 template <typename Domain>
15504 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::mod(long mod) const
15506 auto res = isl::aff::mod(mod);
15507 return typed::aff<Domain, Anonymous>(res);
15510 template <typename Domain>
15511 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::neg() const
15513 auto res = isl::aff::neg();
15514 return typed::aff<Domain, Anonymous>(res);
15517 template <typename Domain>
15518 typed::set<> typed::aff<Domain, Anonymous>::params() const
15520 auto res = isl::aff::params();
15521 return typed::set<>(res);
15524 template <typename Domain>
15525 template <typename Domain2, typename Range2>
15526 typed::multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::product(const typed::multi_aff<Domain2, Range2> &multi2) const
15528 auto res = isl::aff::product(multi2);
15529 return typed::multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
15532 template <typename Domain>
15533 template <typename Domain2, typename Range2>
15534 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
15536 auto res = isl::aff::product(multi2);
15537 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
15540 template <typename Domain>
15541 template <typename Domain2, typename Range2>
15542 typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
15544 auto res = isl::aff::product(pma2);
15545 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
15548 template <typename Domain>
15549 template <typename Domain2>
15550 typed::aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
15552 auto res = isl::aff::pullback(ma);
15553 return typed::aff<Domain2, Anonymous>(res);
15556 template <typename Domain>
15557 typed::aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain> &ma) const
15559 auto res = isl::aff::pullback(ma);
15560 return typed::aff<Anonymous>(res);
15563 template <typename Domain>
15564 template <typename Domain2>
15565 typed::pw_aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
15567 auto res = isl::aff::pullback(mpa);
15568 return typed::pw_aff<Domain2, Anonymous>(res);
15571 template <typename Domain>
15572 typed::pw_aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain> &mpa) const
15574 auto res = isl::aff::pullback(mpa);
15575 return typed::pw_aff<Anonymous>(res);
15578 template <typename Domain>
15579 template <typename Domain2>
15580 typed::pw_aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const
15582 auto res = isl::aff::pullback(pma);
15583 return typed::pw_aff<Domain2, Anonymous>(res);
15586 template <typename Domain>
15587 typed::pw_aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain> &pma) const
15589 auto res = isl::aff::pullback(pma);
15590 return typed::pw_aff<Anonymous>(res);
15593 template <typename Domain>
15594 template <typename Domain2>
15595 typed::union_pw_aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
15597 auto res = isl::aff::pullback(upma);
15598 return typed::union_pw_aff<Domain2, Anonymous>(res);
15601 template <typename Domain>
15602 typed::union_pw_aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
15604 auto res = isl::aff::pullback(upma);
15605 return typed::union_pw_aff<Anonymous>(res);
15608 template <typename Domain>
15609 template <typename Domain2>
15610 typed::aff<Domain2, Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::aff<Domain2, Domain> &ma) const
15612 auto res = isl::aff::pullback(ma);
15613 return typed::aff<Domain2, Anonymous>(res);
15616 template <typename Domain>
15617 typed::aff<Anonymous> typed::aff<Domain, Anonymous>::pullback(const typed::aff<Domain> &ma) const
15619 auto res = isl::aff::pullback(ma);
15620 return typed::aff<Anonymous>(res);
15623 template <typename Domain>
15624 typed::pw_multi_aff_list<Domain, Anonymous> typed::aff<Domain, Anonymous>::pw_multi_aff_list() const
15626 auto res = isl::aff::pw_multi_aff_list();
15627 return typed::pw_multi_aff_list<Domain, Anonymous>(res);
15630 template <typename Domain>
15631 template <typename Range2>
15632 typed::multi_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::multi_aff<Domain, Range2> &multi2) const
15634 auto res = isl::aff::range_product(multi2);
15635 return typed::multi_aff<Domain, pair<Anonymous, Range2>>(res);
15638 template <typename Domain>
15639 template <typename Range2>
15640 typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
15642 auto res = isl::aff::range_product(multi2);
15643 return typed::multi_pw_aff<Domain, pair<Anonymous, Range2>>(res);
15646 template <typename Domain>
15647 template <typename Range2>
15648 typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
15650 auto res = isl::aff::range_product(multi2);
15651 return typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>>(res);
15654 template <typename Domain>
15655 template <typename Range2>
15656 typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
15658 auto res = isl::aff::range_product(pma2);
15659 return typed::pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
15662 template <typename Domain>
15663 template <typename Range2>
15664 typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::aff<Domain, Anonymous>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
15666 auto res = isl::aff::range_product(upma2);
15667 return typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
15670 template <typename Domain>
15671 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale(const typed::val<Anonymous> &v) const
15673 auto res = isl::aff::scale(v);
15674 return typed::aff<Domain, Anonymous>(res);
15677 template <typename Domain>
15678 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale(long v) const
15680 auto res = isl::aff::scale(v);
15681 return typed::aff<Domain, Anonymous>(res);
15684 template <typename Domain>
15685 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
15687 auto res = isl::aff::scale(mv);
15688 return typed::multi_aff<Domain, Anonymous>(res);
15691 template <typename Domain>
15692 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
15694 auto res = isl::aff::scale_down(v);
15695 return typed::aff<Domain, Anonymous>(res);
15698 template <typename Domain>
15699 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale_down(long v) const
15701 auto res = isl::aff::scale_down(v);
15702 return typed::aff<Domain, Anonymous>(res);
15705 template <typename Domain>
15706 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
15708 auto res = isl::aff::scale_down(mv);
15709 return typed::multi_aff<Domain, Anonymous>(res);
15712 template <typename Domain>
15713 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::set_at(int pos, const typed::aff<Domain, Anonymous> &el) const
15715 auto res = isl::aff::set_at(pos, el);
15716 return typed::multi_aff<Domain, Anonymous>(res);
15719 template <typename Domain>
15720 typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
15722 auto res = isl::aff::set_at(pos, el);
15723 return typed::multi_pw_aff<Domain, Anonymous>(res);
15726 template <typename Domain>
15727 typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
15729 auto res = isl::aff::set_at(pos, el);
15730 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
15733 template <typename Domain>
15734 template <typename Range2>
15735 typed::multi_aff<Domain, Range2> typed::aff<Domain, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
15737 auto res = isl::aff::set_range_tuple(id);
15738 return typed::multi_aff<Domain, Range2>(res);
15741 template <typename Domain>
15742 template <typename Range2>
15743 typed::multi_aff<Domain, Range2> typed::aff<Domain, Anonymous>::set_range_tuple(const std::string &id) const
15745 auto res = isl::aff::set_range_tuple(id);
15746 return typed::multi_aff<Domain, Range2>(res);
15749 template <typename Domain>
15750 typed::space<Domain, Anonymous> typed::aff<Domain, Anonymous>::space() const
15752 auto res = isl::aff::space();
15753 return typed::space<Domain, Anonymous>(res);
15756 template <typename Domain>
15757 typed::aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::aff<Domain, Anonymous> &aff2) const
15759 auto res = isl::aff::sub(aff2);
15760 return typed::aff<Domain, Anonymous>(res);
15763 template <typename Domain>
15764 typed::multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::multi_aff<Domain, Anonymous> &multi2) const
15766 auto res = isl::aff::sub(multi2);
15767 return typed::multi_aff<Domain, Anonymous>(res);
15770 template <typename Domain>
15771 typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
15773 auto res = isl::aff::sub(multi2);
15774 return typed::multi_pw_aff<Domain, Anonymous>(res);
15777 template <typename Domain>
15778 typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
15780 auto res = isl::aff::sub(multi2);
15781 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
15784 template <typename Domain>
15785 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15787 auto res = isl::aff::sub(pwaff2);
15788 return typed::pw_aff<Domain, Anonymous>(res);
15791 template <typename Domain>
15792 typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
15794 auto res = isl::aff::sub(pma2);
15795 return typed::pw_multi_aff<Domain, Anonymous>(res);
15798 template <typename Domain>
15799 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
15801 auto res = isl::aff::sub(upa2);
15802 return typed::union_pw_aff<Domain, Anonymous>(res);
15805 template <typename Domain>
15806 typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
15808 auto res = isl::aff::sub(upma2);
15809 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
15812 template <typename Domain>
15813 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::subtract_domain(const typed::set<Domain> &set) const
15815 auto res = isl::aff::subtract_domain(set);
15816 return typed::pw_aff<Domain, Anonymous>(res);
15819 template <typename Domain>
15820 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::subtract_domain(const typed::space<Domain> &space) const
15822 auto res = isl::aff::subtract_domain(space);
15823 return typed::union_pw_aff<Domain, Anonymous>(res);
15826 template <typename Domain>
15827 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::subtract_domain(const typed::union_set<Domain> &uset) const
15829 auto res = isl::aff::subtract_domain(uset);
15830 return typed::union_pw_aff<Domain, Anonymous>(res);
15833 template <typename Domain>
15834 typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_multi_pw_aff() const
15836 auto res = isl::aff::to_multi_pw_aff();
15837 return typed::multi_pw_aff<Domain, Anonymous>(res);
15840 template <typename Domain>
15841 typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_multi_union_pw_aff() const
15843 auto res = isl::aff::to_multi_union_pw_aff();
15844 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
15847 template <typename Domain>
15848 typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_pw_multi_aff() const
15850 auto res = isl::aff::to_pw_multi_aff();
15851 return typed::pw_multi_aff<Domain, Anonymous>(res);
15854 template <typename Domain>
15855 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_union_pw_aff() const
15857 auto res = isl::aff::to_union_pw_aff();
15858 return typed::union_pw_aff<Domain, Anonymous>(res);
15861 template <typename Domain>
15862 typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::to_union_pw_multi_aff() const
15864 auto res = isl::aff::to_union_pw_multi_aff();
15865 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
15868 template <typename Domain>
15869 typed::multi_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const
15871 auto res = isl::aff::union_add(mpa2);
15872 return typed::multi_pw_aff<Domain, Anonymous>(res);
15875 template <typename Domain>
15876 typed::multi_union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const
15878 auto res = isl::aff::union_add(mupa2);
15879 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
15882 template <typename Domain>
15883 typed::pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
15885 auto res = isl::aff::union_add(pwaff2);
15886 return typed::pw_aff<Domain, Anonymous>(res);
15889 template <typename Domain>
15890 typed::pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
15892 auto res = isl::aff::union_add(pma2);
15893 return typed::pw_multi_aff<Domain, Anonymous>(res);
15896 template <typename Domain>
15897 typed::union_pw_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
15899 auto res = isl::aff::union_add(upa2);
15900 return typed::union_pw_aff<Domain, Anonymous>(res);
15903 template <typename Domain>
15904 typed::union_pw_multi_aff<Domain, Anonymous> typed::aff<Domain, Anonymous>::union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
15906 auto res = isl::aff::union_add(upma2);
15907 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
15910 template <typename Domain2, typename Range2>
15911 typed::aff<pair<Domain2, Range2>, Anonymous>::aff(const isl::ctx &ctx, const std::string &str)
15912 : isl::aff(ctx, str)
15916 template <typename Domain2, typename Range2>
15917 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
15919 auto res = isl::aff::add(aff2);
15920 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
15923 template <typename Domain2, typename Range2>
15924 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
15926 auto res = isl::aff::add(multi2);
15927 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
15930 template <typename Domain2, typename Range2>
15931 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
15933 auto res = isl::aff::add(multi2);
15934 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
15937 template <typename Domain2, typename Range2>
15938 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
15940 auto res = isl::aff::add(multi2);
15941 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
15944 template <typename Domain2, typename Range2>
15945 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
15947 auto res = isl::aff::add(pwaff2);
15948 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
15951 template <typename Domain2, typename Range2>
15952 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
15954 auto res = isl::aff::add(pma2);
15955 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
15958 template <typename Domain2, typename Range2>
15959 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
15961 auto res = isl::aff::add(upa2);
15962 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
15965 template <typename Domain2, typename Range2>
15966 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
15968 auto res = isl::aff::add(upma2);
15969 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
15972 template <typename Domain2, typename Range2>
15973 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
15975 auto res = isl::aff::add_constant(v);
15976 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
15979 template <typename Domain2, typename Range2>
15980 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add_constant(long v) const
15982 auto res = isl::aff::add_constant(v);
15983 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
15986 template <typename Domain2, typename Range2>
15987 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
15989 auto res = isl::aff::add_constant(mv);
15990 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
15993 template <typename Domain2, typename Range2>
15994 template <typename Arg1>
15995 typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::aff<pair<Domain2, Range2>, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const
15997 auto res = isl::aff::apply(upma2);
15998 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
16001 template <typename Domain2, typename Range2>
16002 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_aff() const
16004 auto res = isl::aff::as_aff();
16005 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16008 template <typename Domain2, typename Range2>
16009 typed::map<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_map() const
16011 auto res = isl::aff::as_map();
16012 return typed::map<pair<Domain2, Range2>, Anonymous>(res);
16015 template <typename Domain2, typename Range2>
16016 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_multi_aff() const
16018 auto res = isl::aff::as_multi_aff();
16019 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16022 template <typename Domain2, typename Range2>
16023 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_multi_union_pw_aff() const
16025 auto res = isl::aff::as_multi_union_pw_aff();
16026 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16029 template <typename Domain2, typename Range2>
16030 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_pw_multi_aff() const
16032 auto res = isl::aff::as_pw_multi_aff();
16033 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16036 template <typename Domain2, typename Range2>
16037 typed::union_map<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::as_union_map() const
16039 auto res = isl::aff::as_union_map();
16040 return typed::union_map<pair<Domain2, Range2>, Anonymous>(res);
16043 template <typename Domain2, typename Range2>
16044 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::at(int pos) const
16046 auto res = isl::aff::at(pos);
16047 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16050 template <typename Domain2, typename Range2>
16051 typed::basic_set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::id<Anonymous> &id) const
16053 auto res = isl::aff::bind(id);
16054 return typed::basic_set<pair<Domain2, Range2>>(res);
16057 template <typename Domain2, typename Range2>
16058 typed::basic_set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::bind(const std::string &id) const
16060 auto res = isl::aff::bind(id);
16061 return typed::basic_set<pair<Domain2, Range2>>(res);
16064 template <typename Domain2, typename Range2>
16065 typed::basic_set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
16067 auto res = isl::aff::bind(tuple);
16068 return typed::basic_set<pair<Domain2, Range2>>(res);
16071 template <typename Domain2, typename Range2>
16072 typed::pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
16074 auto res = isl::aff::bind_domain(tuple);
16075 return typed::pw_aff<Anonymous>(res);
16078 template <typename Domain2, typename Range2>
16079 typed::pw_aff<Range2, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
16081 auto res = isl::aff::bind_domain_wrapped_domain(tuple);
16082 return typed::pw_aff<Range2, Anonymous>(res);
16085 template <typename Domain2, typename Range2>
16086 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::ceil() const
16088 auto res = isl::aff::ceil();
16089 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16092 template <typename Domain2, typename Range2>
16093 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::coalesce() const
16095 auto res = isl::aff::coalesce();
16096 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16099 template <typename Domain2, typename Range2>
16100 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const
16102 auto res = isl::aff::cond(pwaff_true, pwaff_false);
16103 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16106 template <typename Domain2, typename Range2>
16107 typed::multi_val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::constant_multi_val() const
16109 auto res = isl::aff::constant_multi_val();
16110 return typed::multi_val<Anonymous>(res);
16113 template <typename Domain2, typename Range2>
16114 typed::val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::constant_val() const
16116 auto res = isl::aff::constant_val();
16117 return typed::val<Anonymous>(res);
16120 template <typename Domain2, typename Range2>
16121 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::domain() const
16123 auto res = isl::aff::domain();
16124 return typed::set<pair<Domain2, Range2>>(res);
16127 template <typename Domain2, typename Range2>
16128 typed::aff<pair<Range2, Domain2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::domain_reverse() const
16130 auto res = isl::aff::domain_reverse();
16131 return typed::aff<pair<Range2, Domain2>, Anonymous>(res);
16134 template <typename Domain2, typename Range2>
16135 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::drop_unused_params() const
16137 auto res = isl::aff::drop_unused_params();
16138 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16141 template <typename Domain2, typename Range2>
16142 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const
16144 auto res = isl::aff::extract_pw_multi_aff(space);
16145 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16148 template <typename Domain2, typename Range2>
16149 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::floor() const
16151 auto res = isl::aff::floor();
16152 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16155 template <typename Domain2, typename Range2>
16156 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
16158 auto res = isl::aff::ge_set(aff2);
16159 return typed::set<pair<Domain2, Range2>>(res);
16162 template <typename Domain2, typename Range2>
16163 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16165 auto res = isl::aff::ge_set(pwaff2);
16166 return typed::set<pair<Domain2, Range2>>(res);
16169 template <typename Domain2, typename Range2>
16170 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::set<pair<Domain2, Range2>> &context) const
16172 auto res = isl::aff::gist(context);
16173 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16176 template <typename Domain2, typename Range2>
16177 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
16179 auto res = isl::aff::gist(context);
16180 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16183 template <typename Domain2, typename Range2>
16184 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::basic_set<pair<Domain2, Range2>> &context) const
16186 auto res = isl::aff::gist(context);
16187 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16190 template <typename Domain2, typename Range2>
16191 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::point<pair<Domain2, Range2>> &context) const
16193 auto res = isl::aff::gist(context);
16194 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16197 template <typename Domain2, typename Range2>
16198 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist_params(const typed::set<> &context) const
16200 auto res = isl::aff::gist_params(context);
16201 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16204 template <typename Domain2, typename Range2>
16205 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist_params(const typed::basic_set<> &context) const
16207 auto res = isl::aff::gist_params(context);
16208 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16211 template <typename Domain2, typename Range2>
16212 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::gist_params(const typed::point<> &context) const
16214 auto res = isl::aff::gist_params(context);
16215 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16218 template <typename Domain2, typename Range2>
16219 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
16221 auto res = isl::aff::gt_set(aff2);
16222 return typed::set<pair<Domain2, Range2>>(res);
16225 template <typename Domain2, typename Range2>
16226 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16228 auto res = isl::aff::gt_set(pwaff2);
16229 return typed::set<pair<Domain2, Range2>>(res);
16232 template <typename Domain2, typename Range2>
16233 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::identity() const
16235 auto res = isl::aff::identity();
16236 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16239 template <typename Domain2, typename Range2>
16240 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
16242 auto res = isl::aff::intersect_domain(set);
16243 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16246 template <typename Domain2, typename Range2>
16247 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
16249 auto res = isl::aff::intersect_domain(space);
16250 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16253 template <typename Domain2, typename Range2>
16254 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
16256 auto res = isl::aff::intersect_domain(uset);
16257 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16260 template <typename Domain2, typename Range2>
16261 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const
16263 auto res = isl::aff::intersect_domain_wrapped_domain(uset);
16264 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16267 template <typename Domain2, typename Range2>
16268 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::set<> &set) const
16270 auto res = isl::aff::intersect_params(set);
16271 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16274 template <typename Domain2, typename Range2>
16275 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
16277 auto res = isl::aff::le_set(aff2);
16278 return typed::set<pair<Domain2, Range2>>(res);
16281 template <typename Domain2, typename Range2>
16282 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16284 auto res = isl::aff::le_set(pwaff2);
16285 return typed::set<pair<Domain2, Range2>>(res);
16288 template <typename Domain2, typename Range2>
16289 typed::aff_list<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::list() const
16291 auto res = isl::aff::list();
16292 return typed::aff_list<pair<Domain2, Range2>, Anonymous>(res);
16295 template <typename Domain2, typename Range2>
16296 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
16298 auto res = isl::aff::lt_set(aff2);
16299 return typed::set<pair<Domain2, Range2>>(res);
16302 template <typename Domain2, typename Range2>
16303 typed::set<pair<Domain2, Range2>> typed::aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16305 auto res = isl::aff::lt_set(pwaff2);
16306 return typed::set<pair<Domain2, Range2>>(res);
16309 template <typename Domain2, typename Range2>
16310 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
16312 auto res = isl::aff::max(multi2);
16313 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16316 template <typename Domain2, typename Range2>
16317 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16319 auto res = isl::aff::max(pwaff2);
16320 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16323 template <typename Domain2, typename Range2>
16324 typed::multi_val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::max_multi_val() const
16326 auto res = isl::aff::max_multi_val();
16327 return typed::multi_val<Anonymous>(res);
16330 template <typename Domain2, typename Range2>
16331 typed::val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::max_val() const
16333 auto res = isl::aff::max_val();
16334 return typed::val<Anonymous>(res);
16337 template <typename Domain2, typename Range2>
16338 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
16340 auto res = isl::aff::min(multi2);
16341 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16344 template <typename Domain2, typename Range2>
16345 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16347 auto res = isl::aff::min(pwaff2);
16348 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16351 template <typename Domain2, typename Range2>
16352 typed::multi_val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::min_multi_val() const
16354 auto res = isl::aff::min_multi_val();
16355 return typed::multi_val<Anonymous>(res);
16358 template <typename Domain2, typename Range2>
16359 typed::val<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::min_val() const
16361 auto res = isl::aff::min_val();
16362 return typed::val<Anonymous>(res);
16365 template <typename Domain2, typename Range2>
16366 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::mod(const typed::val<Anonymous> &mod) const
16368 auto res = isl::aff::mod(mod);
16369 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16372 template <typename Domain2, typename Range2>
16373 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::mod(long mod) const
16375 auto res = isl::aff::mod(mod);
16376 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16379 template <typename Domain2, typename Range2>
16380 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::neg() const
16382 auto res = isl::aff::neg();
16383 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16386 template <typename Domain2, typename Range2>
16387 typed::set<> typed::aff<pair<Domain2, Range2>, Anonymous>::params() const
16389 auto res = isl::aff::params();
16390 return typed::set<>(res);
16393 template <typename Domain2, typename Range2>
16394 template <typename Domain3>
16395 typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
16397 auto res = isl::aff::preimage_domain_wrapped_domain(pma2);
16398 return typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
16401 template <typename Domain2, typename Range2>
16402 template <typename Domain3>
16403 typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
16405 auto res = isl::aff::preimage_domain_wrapped_domain(upma2);
16406 return typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
16409 template <typename Domain2, typename Range2>
16410 template <typename Arg1, typename Arg2>
16411 typed::multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::aff<pair<Domain2, Range2>, Anonymous>::product(const typed::multi_aff<Arg1, Arg2> &multi2) const
16413 auto res = isl::aff::product(multi2);
16414 return typed::multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
16417 template <typename Domain2, typename Range2>
16418 template <typename Arg1, typename Arg2>
16419 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::aff<pair<Domain2, Range2>, Anonymous>::product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const
16421 auto res = isl::aff::product(multi2);
16422 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
16425 template <typename Domain2, typename Range2>
16426 template <typename Arg1, typename Arg2>
16427 typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::aff<pair<Domain2, Range2>, Anonymous>::product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const
16429 auto res = isl::aff::product(pma2);
16430 return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
16433 template <typename Domain2, typename Range2>
16434 template <typename Arg1>
16435 typed::aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const
16437 auto res = isl::aff::pullback(ma);
16438 return typed::aff<Arg1, Anonymous>(res);
16441 template <typename Domain2, typename Range2>
16442 typed::aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
16444 auto res = isl::aff::pullback(ma);
16445 return typed::aff<Anonymous>(res);
16448 template <typename Domain2, typename Range2>
16449 template <typename Arg1>
16450 typed::pw_aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const
16452 auto res = isl::aff::pullback(mpa);
16453 return typed::pw_aff<Arg1, Anonymous>(res);
16456 template <typename Domain2, typename Range2>
16457 typed::pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const
16459 auto res = isl::aff::pullback(mpa);
16460 return typed::pw_aff<Anonymous>(res);
16463 template <typename Domain2, typename Range2>
16464 template <typename Arg1>
16465 typed::pw_aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const
16467 auto res = isl::aff::pullback(pma);
16468 return typed::pw_aff<Arg1, Anonymous>(res);
16471 template <typename Domain2, typename Range2>
16472 typed::pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const
16474 auto res = isl::aff::pullback(pma);
16475 return typed::pw_aff<Anonymous>(res);
16478 template <typename Domain2, typename Range2>
16479 template <typename Arg1>
16480 typed::union_pw_aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const
16482 auto res = isl::aff::pullback(upma);
16483 return typed::union_pw_aff<Arg1, Anonymous>(res);
16486 template <typename Domain2, typename Range2>
16487 typed::union_pw_aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const
16489 auto res = isl::aff::pullback(upma);
16490 return typed::union_pw_aff<Anonymous>(res);
16493 template <typename Domain2, typename Range2>
16494 template <typename Arg1>
16495 typed::aff<Arg1, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::aff<Arg1, pair<Domain2, Range2>> &ma) const
16497 auto res = isl::aff::pullback(ma);
16498 return typed::aff<Arg1, Anonymous>(res);
16501 template <typename Domain2, typename Range2>
16502 typed::aff<Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::aff<pair<Domain2, Range2>> &ma) const
16504 auto res = isl::aff::pullback(ma);
16505 return typed::aff<Anonymous>(res);
16508 template <typename Domain2, typename Range2>
16509 typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::pw_multi_aff_list() const
16511 auto res = isl::aff::pw_multi_aff_list();
16512 return typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous>(res);
16515 template <typename Domain2, typename Range2>
16516 template <typename Arg1>
16517 typed::multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg1> &multi2) const
16519 auto res = isl::aff::range_product(multi2);
16520 return typed::multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
16523 template <typename Domain2, typename Range2>
16524 template <typename Arg1>
16525 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
16527 auto res = isl::aff::range_product(multi2);
16528 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
16531 template <typename Domain2, typename Range2>
16532 template <typename Arg1>
16533 typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
16535 auto res = isl::aff::range_product(multi2);
16536 return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
16539 template <typename Domain2, typename Range2>
16540 template <typename Arg1>
16541 typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const
16543 auto res = isl::aff::range_product(pma2);
16544 return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
16547 template <typename Domain2, typename Range2>
16548 template <typename Arg1>
16549 typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const
16551 auto res = isl::aff::range_product(upma2);
16552 return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
16555 template <typename Domain2, typename Range2>
16556 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::val<Anonymous> &v) const
16558 auto res = isl::aff::scale(v);
16559 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16562 template <typename Domain2, typename Range2>
16563 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale(long v) const
16565 auto res = isl::aff::scale(v);
16566 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16569 template <typename Domain2, typename Range2>
16570 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
16572 auto res = isl::aff::scale(mv);
16573 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16576 template <typename Domain2, typename Range2>
16577 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
16579 auto res = isl::aff::scale_down(v);
16580 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16583 template <typename Domain2, typename Range2>
16584 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale_down(long v) const
16586 auto res = isl::aff::scale_down(v);
16587 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16590 template <typename Domain2, typename Range2>
16591 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
16593 auto res = isl::aff::scale_down(mv);
16594 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16597 template <typename Domain2, typename Range2>
16598 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const
16600 auto res = isl::aff::set_at(pos, el);
16601 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16604 template <typename Domain2, typename Range2>
16605 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
16607 auto res = isl::aff::set_at(pos, el);
16608 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16611 template <typename Domain2, typename Range2>
16612 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
16614 auto res = isl::aff::set_at(pos, el);
16615 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16618 template <typename Domain2, typename Range2>
16619 template <typename Arg1>
16620 typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
16622 auto res = isl::aff::set_range_tuple(id);
16623 return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
16626 template <typename Domain2, typename Range2>
16627 template <typename Arg1>
16628 typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const std::string &id) const
16630 auto res = isl::aff::set_range_tuple(id);
16631 return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
16634 template <typename Domain2, typename Range2>
16635 typed::space<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::space() const
16637 auto res = isl::aff::space();
16638 return typed::space<pair<Domain2, Range2>, Anonymous>(res);
16641 template <typename Domain2, typename Range2>
16642 typed::aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff2) const
16644 auto res = isl::aff::sub(aff2);
16645 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
16648 template <typename Domain2, typename Range2>
16649 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
16651 auto res = isl::aff::sub(multi2);
16652 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16655 template <typename Domain2, typename Range2>
16656 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
16658 auto res = isl::aff::sub(multi2);
16659 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16662 template <typename Domain2, typename Range2>
16663 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
16665 auto res = isl::aff::sub(multi2);
16666 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16669 template <typename Domain2, typename Range2>
16670 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16672 auto res = isl::aff::sub(pwaff2);
16673 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16676 template <typename Domain2, typename Range2>
16677 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
16679 auto res = isl::aff::sub(pma2);
16680 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16683 template <typename Domain2, typename Range2>
16684 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
16686 auto res = isl::aff::sub(upa2);
16687 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16690 template <typename Domain2, typename Range2>
16691 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
16693 auto res = isl::aff::sub(upma2);
16694 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16697 template <typename Domain2, typename Range2>
16698 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
16700 auto res = isl::aff::subtract_domain(set);
16701 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16704 template <typename Domain2, typename Range2>
16705 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
16707 auto res = isl::aff::subtract_domain(space);
16708 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16711 template <typename Domain2, typename Range2>
16712 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
16714 auto res = isl::aff::subtract_domain(uset);
16715 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16718 template <typename Domain2, typename Range2>
16719 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_multi_pw_aff() const
16721 auto res = isl::aff::to_multi_pw_aff();
16722 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16725 template <typename Domain2, typename Range2>
16726 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_multi_union_pw_aff() const
16728 auto res = isl::aff::to_multi_union_pw_aff();
16729 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16732 template <typename Domain2, typename Range2>
16733 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_pw_multi_aff() const
16735 auto res = isl::aff::to_pw_multi_aff();
16736 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16739 template <typename Domain2, typename Range2>
16740 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_aff() const
16742 auto res = isl::aff::to_union_pw_aff();
16743 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16746 template <typename Domain2, typename Range2>
16747 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_multi_aff() const
16749 auto res = isl::aff::to_union_pw_multi_aff();
16750 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16753 template <typename Domain2, typename Range2>
16754 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const
16756 auto res = isl::aff::union_add(mpa2);
16757 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16760 template <typename Domain2, typename Range2>
16761 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const
16763 auto res = isl::aff::union_add(mupa2);
16764 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16767 template <typename Domain2, typename Range2>
16768 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
16770 auto res = isl::aff::union_add(pwaff2);
16771 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16774 template <typename Domain2, typename Range2>
16775 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
16777 auto res = isl::aff::union_add(pma2);
16778 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16781 template <typename Domain2, typename Range2>
16782 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
16784 auto res = isl::aff::union_add(upa2);
16785 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
16788 template <typename Domain2, typename Range2>
16789 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
16791 auto res = isl::aff::union_add(upma2);
16792 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
16795 typed::aff_list<Anonymous>::aff_list(const isl::ctx &ctx, int n)
16796 : isl::aff_list(ctx, n)
16800 typed::aff_list<Anonymous>::aff_list(const typed::aff<Anonymous> &el)
16801 : isl::aff_list(el)
16805 typed::aff_list<Anonymous>::aff_list(const isl::ctx &ctx, const std::string &str)
16806 : isl::aff_list(ctx, str)
16810 typed::aff_list<Anonymous> typed::aff_list<Anonymous>::add(const typed::aff<Anonymous> &el) const
16812 auto res = isl::aff_list::add(el);
16813 return typed::aff_list<Anonymous>(res);
16816 typed::aff<Anonymous> typed::aff_list<Anonymous>::at(int index) const
16818 auto res = isl::aff_list::at(index);
16819 return typed::aff<Anonymous>(res);
16822 typed::aff_list<Anonymous> typed::aff_list<Anonymous>::drop(unsigned int first, unsigned int n) const
16824 auto res = isl::aff_list::drop(first, n);
16825 return typed::aff_list<Anonymous>(res);
16828 void typed::aff_list<Anonymous>::foreach(const std::function<void(typed::aff<Anonymous>)> &fn) const
16830 auto lambda_fn = [&] (isl::aff arg0) {
16831 return fn(typed::aff<Anonymous>(arg0));
16833 return isl::aff_list::foreach(lambda_fn);
16836 void typed::aff_list<Anonymous>::foreach_scc(const std::function<bool(typed::aff<Anonymous>, typed::aff<Anonymous>)> &follows, const std::function<void(typed::aff_list<Anonymous>)> &fn) const
16838 auto lambda_follows = [&] (isl::aff arg0, isl::aff arg1) {
16839 return follows(typed::aff<Anonymous>(arg0), typed::aff<Anonymous>(arg1));
16841 auto lambda_fn = [&] (isl::aff_list arg0) {
16842 return fn(typed::aff_list<Anonymous>(arg0));
16844 return isl::aff_list::foreach_scc(lambda_follows, lambda_fn);
16847 typed::aff_list<Anonymous> typed::aff_list<Anonymous>::set_at(int index, const typed::aff<Anonymous> &el) const
16849 auto res = isl::aff_list::set_at(index, el);
16850 return typed::aff_list<Anonymous>(res);
16853 template <typename Domain>
16854 typed::aff_list<Domain, Anonymous>::aff_list(const isl::ctx &ctx, int n)
16855 : isl::aff_list(ctx, n)
16859 template <typename Domain>
16860 typed::aff_list<Domain, Anonymous>::aff_list(const typed::aff<Domain, Anonymous> &el)
16861 : isl::aff_list(el)
16865 template <typename Domain>
16866 typed::aff_list<Domain, Anonymous>::aff_list(const isl::ctx &ctx, const std::string &str)
16867 : isl::aff_list(ctx, str)
16871 template <typename Domain>
16872 typed::aff_list<Domain, Anonymous> typed::aff_list<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &el) const
16874 auto res = isl::aff_list::add(el);
16875 return typed::aff_list<Domain, Anonymous>(res);
16878 template <typename Domain>
16879 typed::aff<Domain, Anonymous> typed::aff_list<Domain, Anonymous>::at(int index) const
16881 auto res = isl::aff_list::at(index);
16882 return typed::aff<Domain, Anonymous>(res);
16885 template <typename Domain>
16886 typed::aff_list<Domain, Anonymous> typed::aff_list<Domain, Anonymous>::drop(unsigned int first, unsigned int n) const
16888 auto res = isl::aff_list::drop(first, n);
16889 return typed::aff_list<Domain, Anonymous>(res);
16892 template <typename Domain>
16893 void typed::aff_list<Domain, Anonymous>::foreach(const std::function<void(typed::aff<Domain, Anonymous>)> &fn) const
16895 auto lambda_fn = [&] (isl::aff arg0) {
16896 return fn(typed::aff<Domain, Anonymous>(arg0));
16898 return isl::aff_list::foreach(lambda_fn);
16901 template <typename Domain>
16902 void typed::aff_list<Domain, Anonymous>::foreach_scc(const std::function<bool(typed::aff<Domain, Anonymous>, typed::aff<Domain, Anonymous>)> &follows, const std::function<void(typed::aff_list<Domain, Anonymous>)> &fn) const
16904 auto lambda_follows = [&] (isl::aff arg0, isl::aff arg1) {
16905 return follows(typed::aff<Domain, Anonymous>(arg0), typed::aff<Domain, Anonymous>(arg1));
16907 auto lambda_fn = [&] (isl::aff_list arg0) {
16908 return fn(typed::aff_list<Domain, Anonymous>(arg0));
16910 return isl::aff_list::foreach_scc(lambda_follows, lambda_fn);
16913 template <typename Domain>
16914 typed::aff_list<Domain, Anonymous> typed::aff_list<Domain, Anonymous>::set_at(int index, const typed::aff<Domain, Anonymous> &el) const
16916 auto res = isl::aff_list::set_at(index, el);
16917 return typed::aff_list<Domain, Anonymous>(res);
16920 template <typename Domain, typename Range>
16921 typed::basic_map<Domain, Range>::basic_map(const isl::ctx &ctx, const std::string &str)
16922 : isl::basic_map(ctx, str)
16926 template <typename Domain, typename Range>
16927 template <typename Domain2>
16928 typed::basic_map<Domain2, Range> typed::basic_map<Domain, Range>::apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const
16930 auto res = isl::basic_map::apply_domain(bmap2);
16931 return typed::basic_map<Domain2, Range>(res);
16934 template <typename Domain, typename Range>
16935 template <typename Domain2>
16936 typed::map<Domain2, Range> typed::basic_map<Domain, Range>::apply_domain(const typed::map<Domain, Domain2> &map2) const
16938 auto res = isl::basic_map::apply_domain(map2);
16939 return typed::map<Domain2, Range>(res);
16942 template <typename Domain, typename Range>
16943 template <typename Domain2>
16944 typed::union_map<Domain2, Range> typed::basic_map<Domain, Range>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
16946 auto res = isl::basic_map::apply_domain(umap2);
16947 return typed::union_map<Domain2, Range>(res);
16950 template <typename Domain, typename Range>
16951 template <typename Range2>
16952 typed::basic_map<Domain, Range2> typed::basic_map<Domain, Range>::apply_range(const typed::basic_map<Range, Range2> &bmap2) const
16954 auto res = isl::basic_map::apply_range(bmap2);
16955 return typed::basic_map<Domain, Range2>(res);
16958 template <typename Domain, typename Range>
16959 template <typename Range2>
16960 typed::map<Domain, Range2> typed::basic_map<Domain, Range>::apply_range(const typed::map<Range, Range2> &map2) const
16962 auto res = isl::basic_map::apply_range(map2);
16963 return typed::map<Domain, Range2>(res);
16966 template <typename Domain, typename Range>
16967 template <typename Range2>
16968 typed::union_map<Domain, Range2> typed::basic_map<Domain, Range>::apply_range(const typed::union_map<Range, Range2> &umap2) const
16970 auto res = isl::basic_map::apply_range(umap2);
16971 return typed::union_map<Domain, Range2>(res);
16974 template <typename Domain, typename Range>
16975 typed::map<Domain, Range> typed::basic_map<Domain, Range>::as_map() const
16977 auto res = isl::basic_map::as_map();
16978 return typed::map<Domain, Range>(res);
16981 template <typename Domain, typename Range>
16982 typed::multi_union_pw_aff<Domain, Range> typed::basic_map<Domain, Range>::as_multi_union_pw_aff() const
16984 auto res = isl::basic_map::as_multi_union_pw_aff();
16985 return typed::multi_union_pw_aff<Domain, Range>(res);
16988 template <typename Domain, typename Range>
16989 typed::pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::as_pw_multi_aff() const
16991 auto res = isl::basic_map::as_pw_multi_aff();
16992 return typed::pw_multi_aff<Domain, Range>(res);
16995 template <typename Domain, typename Range>
16996 typed::union_pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::as_union_pw_multi_aff() const
16998 auto res = isl::basic_map::as_union_pw_multi_aff();
16999 return typed::union_pw_multi_aff<Domain, Range>(res);
17002 template <typename Domain, typename Range>
17003 typed::set<Range> typed::basic_map<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
17005 auto res = isl::basic_map::bind_domain(tuple);
17006 return typed::set<Range>(res);
17009 template <typename Domain, typename Range>
17010 typed::set<Domain> typed::basic_map<Domain, Range>::bind_range(const typed::multi_id<Range> &tuple) const
17012 auto res = isl::basic_map::bind_range(tuple);
17013 return typed::set<Domain>(res);
17016 template <typename Domain, typename Range>
17017 typed::map<Domain, Range> typed::basic_map<Domain, Range>::coalesce() const
17019 auto res = isl::basic_map::coalesce();
17020 return typed::map<Domain, Range>(res);
17023 template <typename Domain, typename Range>
17024 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::detect_equalities() const
17026 auto res = isl::basic_map::detect_equalities();
17027 return typed::basic_map<Domain, Range>(res);
17030 template <typename Domain, typename Range>
17031 typed::set<Domain> typed::basic_map<Domain, Range>::domain() const
17033 auto res = isl::basic_map::domain();
17034 return typed::set<Domain>(res);
17037 template <typename Domain, typename Range>
17038 typed::union_map<pair<Domain, Range>, Domain> typed::basic_map<Domain, Range>::domain_map() const
17040 auto res = isl::basic_map::domain_map();
17041 return typed::union_map<pair<Domain, Range>, Domain>(res);
17044 template <typename Domain, typename Range>
17045 typed::union_pw_multi_aff<pair<Domain, Range>, Domain> typed::basic_map<Domain, Range>::domain_map_union_pw_multi_aff() const
17047 auto res = isl::basic_map::domain_map_union_pw_multi_aff();
17048 return typed::union_pw_multi_aff<pair<Domain, Range>, Domain>(res);
17051 template <typename Domain, typename Range>
17052 template <typename Domain2>
17053 typed::map<pair<Domain, Domain2>, Range> typed::basic_map<Domain, Range>::domain_product(const typed::map<Domain2, Range> &map2) const
17055 auto res = isl::basic_map::domain_product(map2);
17056 return typed::map<pair<Domain, Domain2>, Range>(res);
17059 template <typename Domain, typename Range>
17060 template <typename Domain2>
17061 typed::union_map<pair<Domain, Domain2>, Range> typed::basic_map<Domain, Range>::domain_product(const typed::union_map<Domain2, Range> &umap2) const
17063 auto res = isl::basic_map::domain_product(umap2);
17064 return typed::union_map<pair<Domain, Domain2>, Range>(res);
17067 template <typename Domain, typename Range>
17068 typed::map<Domain, Range> typed::basic_map<Domain, Range>::drop_unused_params() const
17070 auto res = isl::basic_map::drop_unused_params();
17071 return typed::map<Domain, Range>(res);
17074 template <typename Domain, typename Range>
17075 bool typed::basic_map<Domain, Range>::every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const
17077 auto lambda_test = [&] (isl::map arg0) {
17078 return test(typed::map<Domain, Range>(arg0));
17080 return isl::basic_map::every_map(lambda_test);
17083 template <typename Domain, typename Range>
17084 typed::map<Domain, Range> typed::basic_map<Domain, Range>::extract_map(const typed::space<Domain, Range> &space) const
17086 auto res = isl::basic_map::extract_map(space);
17087 return typed::map<Domain, Range>(res);
17090 template <typename Domain, typename Range>
17091 void typed::basic_map<Domain, Range>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const
17093 auto lambda_fn = [&] (isl::basic_map arg0) {
17094 return fn(typed::basic_map<Domain, Range>(arg0));
17096 return isl::basic_map::foreach_basic_map(lambda_fn);
17099 template <typename Domain, typename Range>
17100 void typed::basic_map<Domain, Range>::foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const
17102 auto lambda_fn = [&] (isl::map arg0) {
17103 return fn(typed::map<Domain, Range>(arg0));
17105 return isl::basic_map::foreach_map(lambda_fn);
17108 template <typename Domain, typename Range>
17109 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::gist(const typed::basic_map<Domain, Range> &context) const
17111 auto res = isl::basic_map::gist(context);
17112 return typed::basic_map<Domain, Range>(res);
17115 template <typename Domain, typename Range>
17116 typed::map<Domain, Range> typed::basic_map<Domain, Range>::gist(const typed::map<Domain, Range> &context) const
17118 auto res = isl::basic_map::gist(context);
17119 return typed::map<Domain, Range>(res);
17122 template <typename Domain, typename Range>
17123 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::gist(const typed::union_map<Domain, Range> &context) const
17125 auto res = isl::basic_map::gist(context);
17126 return typed::union_map<Domain, Range>(res);
17129 template <typename Domain, typename Range>
17130 typed::map<Domain, Range> typed::basic_map<Domain, Range>::gist_domain(const typed::set<Domain> &context) const
17132 auto res = isl::basic_map::gist_domain(context);
17133 return typed::map<Domain, Range>(res);
17136 template <typename Domain, typename Range>
17137 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::gist_domain(const typed::union_set<Domain> &uset) const
17139 auto res = isl::basic_map::gist_domain(uset);
17140 return typed::union_map<Domain, Range>(res);
17143 template <typename Domain, typename Range>
17144 typed::map<Domain, Range> typed::basic_map<Domain, Range>::gist_params(const typed::set<> &context) const
17146 auto res = isl::basic_map::gist_params(context);
17147 return typed::map<Domain, Range>(res);
17150 template <typename Domain, typename Range>
17151 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect(const typed::basic_map<Domain, Range> &bmap2) const
17153 auto res = isl::basic_map::intersect(bmap2);
17154 return typed::basic_map<Domain, Range>(res);
17157 template <typename Domain, typename Range>
17158 typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect(const typed::map<Domain, Range> &map2) const
17160 auto res = isl::basic_map::intersect(map2);
17161 return typed::map<Domain, Range>(res);
17164 template <typename Domain, typename Range>
17165 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect(const typed::union_map<Domain, Range> &umap2) const
17167 auto res = isl::basic_map::intersect(umap2);
17168 return typed::union_map<Domain, Range>(res);
17171 template <typename Domain, typename Range>
17172 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &bset) const
17174 auto res = isl::basic_map::intersect_domain(bset);
17175 return typed::basic_map<Domain, Range>(res);
17178 template <typename Domain, typename Range>
17179 typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
17181 auto res = isl::basic_map::intersect_domain(set);
17182 return typed::map<Domain, Range>(res);
17185 template <typename Domain, typename Range>
17186 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
17188 auto res = isl::basic_map::intersect_domain(space);
17189 return typed::union_map<Domain, Range>(res);
17192 template <typename Domain, typename Range>
17193 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
17195 auto res = isl::basic_map::intersect_domain(uset);
17196 return typed::union_map<Domain, Range>(res);
17199 template <typename Domain, typename Range>
17200 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_domain(const typed::point<Domain> &bset) const
17202 auto res = isl::basic_map::intersect_domain(bset);
17203 return typed::basic_map<Domain, Range>(res);
17206 template <typename Domain, typename Range>
17207 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_params(const typed::basic_set<> &bset) const
17209 auto res = isl::basic_map::intersect_params(bset);
17210 return typed::basic_map<Domain, Range>(res);
17213 template <typename Domain, typename Range>
17214 typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect_params(const typed::set<> &params) const
17216 auto res = isl::basic_map::intersect_params(params);
17217 return typed::map<Domain, Range>(res);
17220 template <typename Domain, typename Range>
17221 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_params(const typed::point<> &bset) const
17223 auto res = isl::basic_map::intersect_params(bset);
17224 return typed::basic_map<Domain, Range>(res);
17227 template <typename Domain, typename Range>
17228 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::basic_set<Range> &bset) const
17230 auto res = isl::basic_map::intersect_range(bset);
17231 return typed::basic_map<Domain, Range>(res);
17234 template <typename Domain, typename Range>
17235 typed::map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::set<Range> &set) const
17237 auto res = isl::basic_map::intersect_range(set);
17238 return typed::map<Domain, Range>(res);
17241 template <typename Domain, typename Range>
17242 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::space<Range> &space) const
17244 auto res = isl::basic_map::intersect_range(space);
17245 return typed::union_map<Domain, Range>(res);
17248 template <typename Domain, typename Range>
17249 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::union_set<Range> &uset) const
17251 auto res = isl::basic_map::intersect_range(uset);
17252 return typed::union_map<Domain, Range>(res);
17255 template <typename Domain, typename Range>
17256 typed::basic_map<Domain, Range> typed::basic_map<Domain, Range>::intersect_range(const typed::point<Range> &bset) const
17258 auto res = isl::basic_map::intersect_range(bset);
17259 return typed::basic_map<Domain, Range>(res);
17262 template <typename Domain, typename Range>
17263 typed::map<Domain, Range> typed::basic_map<Domain, Range>::lexmax() const
17265 auto res = isl::basic_map::lexmax();
17266 return typed::map<Domain, Range>(res);
17269 template <typename Domain, typename Range>
17270 typed::pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::lexmax_pw_multi_aff() const
17272 auto res = isl::basic_map::lexmax_pw_multi_aff();
17273 return typed::pw_multi_aff<Domain, Range>(res);
17276 template <typename Domain, typename Range>
17277 typed::map<Domain, Range> typed::basic_map<Domain, Range>::lexmin() const
17279 auto res = isl::basic_map::lexmin();
17280 return typed::map<Domain, Range>(res);
17283 template <typename Domain, typename Range>
17284 typed::pw_multi_aff<Domain, Range> typed::basic_map<Domain, Range>::lexmin_pw_multi_aff() const
17286 auto res = isl::basic_map::lexmin_pw_multi_aff();
17287 return typed::pw_multi_aff<Domain, Range>(res);
17290 template <typename Domain, typename Range>
17291 typed::map<Domain, Range> typed::basic_map<Domain, Range>::lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const
17293 auto res = isl::basic_map::lower_bound(lower);
17294 return typed::map<Domain, Range>(res);
17297 template <typename Domain, typename Range>
17298 typed::map_list<Domain, Range> typed::basic_map<Domain, Range>::map_list() const
17300 auto res = isl::basic_map::map_list();
17301 return typed::map_list<Domain, Range>(res);
17304 template <typename Domain, typename Range>
17305 typed::multi_pw_aff<Domain, Range> typed::basic_map<Domain, Range>::max_multi_pw_aff() const
17307 auto res = isl::basic_map::max_multi_pw_aff();
17308 return typed::multi_pw_aff<Domain, Range>(res);
17311 template <typename Domain, typename Range>
17312 typed::multi_pw_aff<Domain, Range> typed::basic_map<Domain, Range>::min_multi_pw_aff() const
17314 auto res = isl::basic_map::min_multi_pw_aff();
17315 return typed::multi_pw_aff<Domain, Range>(res);
17318 template <typename Domain, typename Range>
17319 typed::set<> typed::basic_map<Domain, Range>::params() const
17321 auto res = isl::basic_map::params();
17322 return typed::set<>(res);
17325 template <typename Domain, typename Range>
17326 template <typename Domain2>
17327 typed::map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
17329 auto res = isl::basic_map::preimage_domain(ma);
17330 return typed::map<Domain2, Range>(res);
17333 template <typename Domain, typename Range>
17334 template <typename Domain2>
17335 typed::map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
17337 auto res = isl::basic_map::preimage_domain(mpa);
17338 return typed::map<Domain2, Range>(res);
17341 template <typename Domain, typename Range>
17342 template <typename Domain2>
17343 typed::map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
17345 auto res = isl::basic_map::preimage_domain(pma);
17346 return typed::map<Domain2, Range>(res);
17349 template <typename Domain, typename Range>
17350 template <typename Domain2>
17351 typed::union_map<Domain2, Range> typed::basic_map<Domain, Range>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
17353 auto res = isl::basic_map::preimage_domain(upma);
17354 return typed::union_map<Domain2, Range>(res);
17357 template <typename Domain, typename Range>
17358 template <typename Range2>
17359 typed::map<Domain, Range2> typed::basic_map<Domain, Range>::preimage_range(const typed::multi_aff<Range2, Range> &ma) const
17361 auto res = isl::basic_map::preimage_range(ma);
17362 return typed::map<Domain, Range2>(res);
17365 template <typename Domain, typename Range>
17366 template <typename Range2>
17367 typed::map<Domain, Range2> typed::basic_map<Domain, Range>::preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const
17369 auto res = isl::basic_map::preimage_range(pma);
17370 return typed::map<Domain, Range2>(res);
17373 template <typename Domain, typename Range>
17374 template <typename Range2>
17375 typed::union_map<Domain, Range2> typed::basic_map<Domain, Range>::preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const
17377 auto res = isl::basic_map::preimage_range(upma);
17378 return typed::union_map<Domain, Range2>(res);
17381 template <typename Domain, typename Range>
17382 template <typename Domain2, typename Range2>
17383 typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, Range>::product(const typed::map<Domain2, Range2> &map2) const
17385 auto res = isl::basic_map::product(map2);
17386 return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
17389 template <typename Domain, typename Range>
17390 template <typename Domain2, typename Range2>
17391 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, Range>::product(const typed::union_map<Domain2, Range2> &umap2) const
17393 auto res = isl::basic_map::product(umap2);
17394 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
17397 template <typename Domain, typename Range>
17398 typed::map<Domain, Range> typed::basic_map<Domain, Range>::project_out_all_params() const
17400 auto res = isl::basic_map::project_out_all_params();
17401 return typed::map<Domain, Range>(res);
17404 template <typename Domain, typename Range>
17405 typed::map<Domain, Range> typed::basic_map<Domain, Range>::project_out_param(const typed::id<Anonymous> &id) const
17407 auto res = isl::basic_map::project_out_param(id);
17408 return typed::map<Domain, Range>(res);
17411 template <typename Domain, typename Range>
17412 typed::map<Domain, Range> typed::basic_map<Domain, Range>::project_out_param(const std::string &id) const
17414 auto res = isl::basic_map::project_out_param(id);
17415 return typed::map<Domain, Range>(res);
17418 template <typename Domain, typename Range>
17419 typed::map<Domain, Range> typed::basic_map<Domain, Range>::project_out_param(const typed::id_list<Anonymous> &list) const
17421 auto res = isl::basic_map::project_out_param(list);
17422 return typed::map<Domain, Range>(res);
17425 template <typename Domain, typename Range>
17426 typed::set<Range> typed::basic_map<Domain, Range>::range() const
17428 auto res = isl::basic_map::range();
17429 return typed::set<Range>(res);
17432 template <typename Domain, typename Range>
17433 typed::fixed_box<Domain, Range> typed::basic_map<Domain, Range>::range_lattice_tile() const
17435 auto res = isl::basic_map::range_lattice_tile();
17436 return typed::fixed_box<Domain, Range>(res);
17439 template <typename Domain, typename Range>
17440 typed::union_map<pair<Domain, Range>, Range> typed::basic_map<Domain, Range>::range_map() const
17442 auto res = isl::basic_map::range_map();
17443 return typed::union_map<pair<Domain, Range>, Range>(res);
17446 template <typename Domain, typename Range>
17447 template <typename Range2>
17448 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, Range>::range_product(const typed::map<Domain, Range2> &map2) const
17450 auto res = isl::basic_map::range_product(map2);
17451 return typed::map<Domain, pair<Range, Range2>>(res);
17454 template <typename Domain, typename Range>
17455 template <typename Range2>
17456 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, Range>::range_product(const typed::union_map<Domain, Range2> &umap2) const
17458 auto res = isl::basic_map::range_product(umap2);
17459 return typed::union_map<Domain, pair<Range, Range2>>(res);
17462 template <typename Domain, typename Range>
17463 typed::fixed_box<Domain, Range> typed::basic_map<Domain, Range>::range_simple_fixed_box_hull() const
17465 auto res = isl::basic_map::range_simple_fixed_box_hull();
17466 return typed::fixed_box<Domain, Range>(res);
17469 template <typename Domain, typename Range>
17470 typed::basic_map<Range, Domain> typed::basic_map<Domain, Range>::reverse() const
17472 auto res = isl::basic_map::reverse();
17473 return typed::basic_map<Range, Domain>(res);
17476 template <typename Domain, typename Range>
17477 template <typename Domain2>
17478 typed::map<Domain2, Range> typed::basic_map<Domain, Range>::set_domain_tuple(const typed::id<Anonymous> &id) const
17480 auto res = isl::basic_map::set_domain_tuple(id);
17481 return typed::map<Domain2, Range>(res);
17484 template <typename Domain, typename Range>
17485 template <typename Domain2>
17486 typed::map<Domain2, Range> typed::basic_map<Domain, Range>::set_domain_tuple(const std::string &id) const
17488 auto res = isl::basic_map::set_domain_tuple(id);
17489 return typed::map<Domain2, Range>(res);
17492 template <typename Domain, typename Range>
17493 template <typename Range2>
17494 typed::map<Domain, Range2> typed::basic_map<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
17496 auto res = isl::basic_map::set_range_tuple(id);
17497 return typed::map<Domain, Range2>(res);
17500 template <typename Domain, typename Range>
17501 template <typename Range2>
17502 typed::map<Domain, Range2> typed::basic_map<Domain, Range>::set_range_tuple(const std::string &id) const
17504 auto res = isl::basic_map::set_range_tuple(id);
17505 return typed::map<Domain, Range2>(res);
17508 template <typename Domain, typename Range>
17509 typed::space<Domain, Range> typed::basic_map<Domain, Range>::space() const
17511 auto res = isl::basic_map::space();
17512 return typed::space<Domain, Range>(res);
17515 template <typename Domain, typename Range>
17516 typed::map<Domain, Range> typed::basic_map<Domain, Range>::subtract(const typed::map<Domain, Range> &map2) const
17518 auto res = isl::basic_map::subtract(map2);
17519 return typed::map<Domain, Range>(res);
17522 template <typename Domain, typename Range>
17523 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::subtract(const typed::union_map<Domain, Range> &umap2) const
17525 auto res = isl::basic_map::subtract(umap2);
17526 return typed::union_map<Domain, Range>(res);
17529 template <typename Domain, typename Range>
17530 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::subtract_domain(const typed::union_set<Domain> &dom) const
17532 auto res = isl::basic_map::subtract_domain(dom);
17533 return typed::union_map<Domain, Range>(res);
17536 template <typename Domain, typename Range>
17537 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::subtract_range(const typed::union_set<Range> &dom) const
17539 auto res = isl::basic_map::subtract_range(dom);
17540 return typed::union_map<Domain, Range>(res);
17543 template <typename Domain, typename Range>
17544 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::to_union_map() const
17546 auto res = isl::basic_map::to_union_map();
17547 return typed::union_map<Domain, Range>(res);
17550 template <typename Domain, typename Range>
17551 typed::map<Domain, Range> typed::basic_map<Domain, Range>::unite(const typed::basic_map<Domain, Range> &bmap2) const
17553 auto res = isl::basic_map::unite(bmap2);
17554 return typed::map<Domain, Range>(res);
17557 template <typename Domain, typename Range>
17558 typed::map<Domain, Range> typed::basic_map<Domain, Range>::unite(const typed::map<Domain, Range> &map2) const
17560 auto res = isl::basic_map::unite(map2);
17561 return typed::map<Domain, Range>(res);
17564 template <typename Domain, typename Range>
17565 typed::union_map<Domain, Range> typed::basic_map<Domain, Range>::unite(const typed::union_map<Domain, Range> &umap2) const
17567 auto res = isl::basic_map::unite(umap2);
17568 return typed::union_map<Domain, Range>(res);
17571 template <typename Domain, typename Range>
17572 typed::map<Domain, Range> typed::basic_map<Domain, Range>::upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const
17574 auto res = isl::basic_map::upper_bound(upper);
17575 return typed::map<Domain, Range>(res);
17578 template <typename Domain, typename Range>
17579 typed::set<pair<Domain, Range>> typed::basic_map<Domain, Range>::wrap() const
17581 auto res = isl::basic_map::wrap();
17582 return typed::set<pair<Domain, Range>>(res);
17585 template <typename Domain, typename Range, typename Range2>
17586 typed::basic_map<pair<Domain, Range>, Range2>::basic_map(const isl::ctx &ctx, const std::string &str)
17587 : isl::basic_map(ctx, str)
17591 template <typename Domain, typename Range, typename Range2>
17592 template <typename Domain2>
17593 typed::basic_map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &bmap2) const
17595 auto res = isl::basic_map::apply_domain(bmap2);
17596 return typed::basic_map<Domain2, Range2>(res);
17599 template <typename Domain, typename Range, typename Range2>
17600 template <typename Domain2>
17601 typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const
17603 auto res = isl::basic_map::apply_domain(map2);
17604 return typed::map<Domain2, Range2>(res);
17607 template <typename Domain, typename Range, typename Range2>
17608 template <typename Domain2>
17609 typed::union_map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const
17611 auto res = isl::basic_map::apply_domain(umap2);
17612 return typed::union_map<Domain2, Range2>(res);
17615 template <typename Domain, typename Range, typename Range2>
17616 template <typename Arg3>
17617 typed::basic_map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::apply_range(const typed::basic_map<Range2, Arg3> &bmap2) const
17619 auto res = isl::basic_map::apply_range(bmap2);
17620 return typed::basic_map<pair<Domain, Range>, Arg3>(res);
17623 template <typename Domain, typename Range, typename Range2>
17624 template <typename Arg3>
17625 typed::map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::apply_range(const typed::map<Range2, Arg3> &map2) const
17627 auto res = isl::basic_map::apply_range(map2);
17628 return typed::map<pair<Domain, Range>, Arg3>(res);
17631 template <typename Domain, typename Range, typename Range2>
17632 template <typename Arg3>
17633 typed::union_map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::apply_range(const typed::union_map<Range2, Arg3> &umap2) const
17635 auto res = isl::basic_map::apply_range(umap2);
17636 return typed::union_map<pair<Domain, Range>, Arg3>(res);
17639 template <typename Domain, typename Range, typename Range2>
17640 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_map() const
17642 auto res = isl::basic_map::as_map();
17643 return typed::map<pair<Domain, Range>, Range2>(res);
17646 template <typename Domain, typename Range, typename Range2>
17647 typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_multi_union_pw_aff() const
17649 auto res = isl::basic_map::as_multi_union_pw_aff();
17650 return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
17653 template <typename Domain, typename Range, typename Range2>
17654 typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_pw_multi_aff() const
17656 auto res = isl::basic_map::as_pw_multi_aff();
17657 return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
17660 template <typename Domain, typename Range, typename Range2>
17661 typed::union_pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::as_union_pw_multi_aff() const
17663 auto res = isl::basic_map::as_union_pw_multi_aff();
17664 return typed::union_pw_multi_aff<pair<Domain, Range>, Range2>(res);
17667 template <typename Domain, typename Range, typename Range2>
17668 typed::set<Range2> typed::basic_map<pair<Domain, Range>, Range2>::bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const
17670 auto res = isl::basic_map::bind_domain(tuple);
17671 return typed::set<Range2>(res);
17674 template <typename Domain, typename Range, typename Range2>
17675 typed::set<pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::bind_range(const typed::multi_id<Range2> &tuple) const
17677 auto res = isl::basic_map::bind_range(tuple);
17678 return typed::set<pair<Domain, Range>>(res);
17681 template <typename Domain, typename Range, typename Range2>
17682 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::coalesce() const
17684 auto res = isl::basic_map::coalesce();
17685 return typed::map<pair<Domain, Range>, Range2>(res);
17688 template <typename Domain, typename Range, typename Range2>
17689 typed::map<Domain, pair<Range, Range2>> typed::basic_map<pair<Domain, Range>, Range2>::curry() const
17691 auto res = isl::basic_map::curry();
17692 return typed::map<Domain, pair<Range, Range2>>(res);
17695 template <typename Domain, typename Range, typename Range2>
17696 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::detect_equalities() const
17698 auto res = isl::basic_map::detect_equalities();
17699 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17702 template <typename Domain, typename Range, typename Range2>
17703 typed::set<pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::domain() const
17705 auto res = isl::basic_map::domain();
17706 return typed::set<pair<Domain, Range>>(res);
17709 template <typename Domain, typename Range, typename Range2>
17710 typed::map<Domain, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_factor_domain() const
17712 auto res = isl::basic_map::domain_factor_domain();
17713 return typed::map<Domain, Range2>(res);
17716 template <typename Domain, typename Range, typename Range2>
17717 typed::map<Range, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_factor_range() const
17719 auto res = isl::basic_map::domain_factor_range();
17720 return typed::map<Range, Range2>(res);
17723 template <typename Domain, typename Range, typename Range2>
17724 typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::domain_map() const
17726 auto res = isl::basic_map::domain_map();
17727 return typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
17730 template <typename Domain, typename Range, typename Range2>
17731 typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::domain_map_union_pw_multi_aff() const
17733 auto res = isl::basic_map::domain_map_union_pw_multi_aff();
17734 return typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
17737 template <typename Domain, typename Range, typename Range2>
17738 template <typename Domain2>
17739 typed::map<pair<pair<Domain, Range>, Domain2>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_product(const typed::map<Domain2, Range2> &map2) const
17741 auto res = isl::basic_map::domain_product(map2);
17742 return typed::map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
17745 template <typename Domain, typename Range, typename Range2>
17746 template <typename Domain2>
17747 typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_product(const typed::union_map<Domain2, Range2> &umap2) const
17749 auto res = isl::basic_map::domain_product(umap2);
17750 return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
17753 template <typename Domain, typename Range, typename Range2>
17754 typed::map<pair<Range, Domain>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::domain_reverse() const
17756 auto res = isl::basic_map::domain_reverse();
17757 return typed::map<pair<Range, Domain>, Range2>(res);
17760 template <typename Domain, typename Range, typename Range2>
17761 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::drop_unused_params() const
17763 auto res = isl::basic_map::drop_unused_params();
17764 return typed::map<pair<Domain, Range>, Range2>(res);
17767 template <typename Domain, typename Range, typename Range2>
17768 bool typed::basic_map<pair<Domain, Range>, Range2>::every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const
17770 auto lambda_test = [&] (isl::map arg0) {
17771 return test(typed::map<pair<Domain, Range>, Range2>(arg0));
17773 return isl::basic_map::every_map(lambda_test);
17776 template <typename Domain, typename Range, typename Range2>
17777 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const
17779 auto res = isl::basic_map::extract_map(space);
17780 return typed::map<pair<Domain, Range>, Range2>(res);
17783 template <typename Domain, typename Range, typename Range2>
17784 typed::basic_map<Anonymous, Range2> typed::basic_map<pair<Domain, Range>, Range2>::flatten_domain() const
17786 auto res = isl::basic_map::flatten_domain();
17787 return typed::basic_map<Anonymous, Range2>(res);
17790 template <typename Domain, typename Range, typename Range2>
17791 void typed::basic_map<pair<Domain, Range>, Range2>::foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const
17793 auto lambda_fn = [&] (isl::basic_map arg0) {
17794 return fn(typed::basic_map<pair<Domain, Range>, Range2>(arg0));
17796 return isl::basic_map::foreach_basic_map(lambda_fn);
17799 template <typename Domain, typename Range, typename Range2>
17800 void typed::basic_map<pair<Domain, Range>, Range2>::foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const
17802 auto lambda_fn = [&] (isl::map arg0) {
17803 return fn(typed::map<pair<Domain, Range>, Range2>(arg0));
17805 return isl::basic_map::foreach_map(lambda_fn);
17808 template <typename Domain, typename Range, typename Range2>
17809 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const
17811 auto res = isl::basic_map::gist(context);
17812 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17815 template <typename Domain, typename Range, typename Range2>
17816 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist(const typed::map<pair<Domain, Range>, Range2> &context) const
17818 auto res = isl::basic_map::gist(context);
17819 return typed::map<pair<Domain, Range>, Range2>(res);
17822 template <typename Domain, typename Range, typename Range2>
17823 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const
17825 auto res = isl::basic_map::gist(context);
17826 return typed::union_map<pair<Domain, Range>, Range2>(res);
17829 template <typename Domain, typename Range, typename Range2>
17830 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist_domain(const typed::set<pair<Domain, Range>> &context) const
17832 auto res = isl::basic_map::gist_domain(context);
17833 return typed::map<pair<Domain, Range>, Range2>(res);
17836 template <typename Domain, typename Range, typename Range2>
17837 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const
17839 auto res = isl::basic_map::gist_domain(uset);
17840 return typed::union_map<pair<Domain, Range>, Range2>(res);
17843 template <typename Domain, typename Range, typename Range2>
17844 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::gist_params(const typed::set<> &context) const
17846 auto res = isl::basic_map::gist_params(context);
17847 return typed::map<pair<Domain, Range>, Range2>(res);
17850 template <typename Domain, typename Range, typename Range2>
17851 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const
17853 auto res = isl::basic_map::intersect(bmap2);
17854 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17857 template <typename Domain, typename Range, typename Range2>
17858 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const
17860 auto res = isl::basic_map::intersect(map2);
17861 return typed::map<pair<Domain, Range>, Range2>(res);
17864 template <typename Domain, typename Range, typename Range2>
17865 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
17867 auto res = isl::basic_map::intersect(umap2);
17868 return typed::union_map<pair<Domain, Range>, Range2>(res);
17871 template <typename Domain, typename Range, typename Range2>
17872 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::basic_set<pair<Domain, Range>> &bset) const
17874 auto res = isl::basic_map::intersect_domain(bset);
17875 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17878 template <typename Domain, typename Range, typename Range2>
17879 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::set<pair<Domain, Range>> &set) const
17881 auto res = isl::basic_map::intersect_domain(set);
17882 return typed::map<pair<Domain, Range>, Range2>(res);
17885 template <typename Domain, typename Range, typename Range2>
17886 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::space<pair<Domain, Range>> &space) const
17888 auto res = isl::basic_map::intersect_domain(space);
17889 return typed::union_map<pair<Domain, Range>, Range2>(res);
17892 template <typename Domain, typename Range, typename Range2>
17893 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const
17895 auto res = isl::basic_map::intersect_domain(uset);
17896 return typed::union_map<pair<Domain, Range>, Range2>(res);
17899 template <typename Domain, typename Range, typename Range2>
17900 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::point<pair<Domain, Range>> &bset) const
17902 auto res = isl::basic_map::intersect_domain(bset);
17903 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17906 template <typename Domain, typename Range, typename Range2>
17907 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::set<Domain> &domain) const
17909 auto res = isl::basic_map::intersect_domain_wrapped_domain(domain);
17910 return typed::map<pair<Domain, Range>, Range2>(res);
17913 template <typename Domain, typename Range, typename Range2>
17914 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::union_set<Domain> &domain) const
17916 auto res = isl::basic_map::intersect_domain_wrapped_domain(domain);
17917 return typed::union_map<pair<Domain, Range>, Range2>(res);
17920 template <typename Domain, typename Range, typename Range2>
17921 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_params(const typed::basic_set<> &bset) const
17923 auto res = isl::basic_map::intersect_params(bset);
17924 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17927 template <typename Domain, typename Range, typename Range2>
17928 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_params(const typed::set<> &params) const
17930 auto res = isl::basic_map::intersect_params(params);
17931 return typed::map<pair<Domain, Range>, Range2>(res);
17934 template <typename Domain, typename Range, typename Range2>
17935 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_params(const typed::point<> &bset) const
17937 auto res = isl::basic_map::intersect_params(bset);
17938 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17941 template <typename Domain, typename Range, typename Range2>
17942 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::basic_set<Range2> &bset) const
17944 auto res = isl::basic_map::intersect_range(bset);
17945 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17948 template <typename Domain, typename Range, typename Range2>
17949 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::set<Range2> &set) const
17951 auto res = isl::basic_map::intersect_range(set);
17952 return typed::map<pair<Domain, Range>, Range2>(res);
17955 template <typename Domain, typename Range, typename Range2>
17956 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::space<Range2> &space) const
17958 auto res = isl::basic_map::intersect_range(space);
17959 return typed::union_map<pair<Domain, Range>, Range2>(res);
17962 template <typename Domain, typename Range, typename Range2>
17963 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::union_set<Range2> &uset) const
17965 auto res = isl::basic_map::intersect_range(uset);
17966 return typed::union_map<pair<Domain, Range>, Range2>(res);
17969 template <typename Domain, typename Range, typename Range2>
17970 typed::basic_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::intersect_range(const typed::point<Range2> &bset) const
17972 auto res = isl::basic_map::intersect_range(bset);
17973 return typed::basic_map<pair<Domain, Range>, Range2>(res);
17976 template <typename Domain, typename Range, typename Range2>
17977 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmax() const
17979 auto res = isl::basic_map::lexmax();
17980 return typed::map<pair<Domain, Range>, Range2>(res);
17983 template <typename Domain, typename Range, typename Range2>
17984 typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmax_pw_multi_aff() const
17986 auto res = isl::basic_map::lexmax_pw_multi_aff();
17987 return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
17990 template <typename Domain, typename Range, typename Range2>
17991 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmin() const
17993 auto res = isl::basic_map::lexmin();
17994 return typed::map<pair<Domain, Range>, Range2>(res);
17997 template <typename Domain, typename Range, typename Range2>
17998 typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lexmin_pw_multi_aff() const
18000 auto res = isl::basic_map::lexmin_pw_multi_aff();
18001 return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
18004 template <typename Domain, typename Range, typename Range2>
18005 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const
18007 auto res = isl::basic_map::lower_bound(lower);
18008 return typed::map<pair<Domain, Range>, Range2>(res);
18011 template <typename Domain, typename Range, typename Range2>
18012 typed::map_list<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::map_list() const
18014 auto res = isl::basic_map::map_list();
18015 return typed::map_list<pair<Domain, Range>, Range2>(res);
18018 template <typename Domain, typename Range, typename Range2>
18019 typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::max_multi_pw_aff() const
18021 auto res = isl::basic_map::max_multi_pw_aff();
18022 return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
18025 template <typename Domain, typename Range, typename Range2>
18026 typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::min_multi_pw_aff() const
18028 auto res = isl::basic_map::min_multi_pw_aff();
18029 return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
18032 template <typename Domain, typename Range, typename Range2>
18033 typed::set<> typed::basic_map<pair<Domain, Range>, Range2>::params() const
18035 auto res = isl::basic_map::params();
18036 return typed::set<>(res);
18039 template <typename Domain, typename Range, typename Range2>
18040 template <typename Domain2>
18041 typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
18043 auto res = isl::basic_map::preimage_domain(ma);
18044 return typed::map<Domain2, Range2>(res);
18047 template <typename Domain, typename Range, typename Range2>
18048 template <typename Domain2>
18049 typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
18051 auto res = isl::basic_map::preimage_domain(mpa);
18052 return typed::map<Domain2, Range2>(res);
18055 template <typename Domain, typename Range, typename Range2>
18056 template <typename Domain2>
18057 typed::map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
18059 auto res = isl::basic_map::preimage_domain(pma);
18060 return typed::map<Domain2, Range2>(res);
18063 template <typename Domain, typename Range, typename Range2>
18064 template <typename Domain2>
18065 typed::union_map<Domain2, Range2> typed::basic_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
18067 auto res = isl::basic_map::preimage_domain(upma);
18068 return typed::union_map<Domain2, Range2>(res);
18071 template <typename Domain, typename Range, typename Range2>
18072 template <typename Arg3>
18073 typed::map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const
18075 auto res = isl::basic_map::preimage_range(ma);
18076 return typed::map<pair<Domain, Range>, Arg3>(res);
18079 template <typename Domain, typename Range, typename Range2>
18080 template <typename Arg3>
18081 typed::map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const
18083 auto res = isl::basic_map::preimage_range(pma);
18084 return typed::map<pair<Domain, Range>, Arg3>(res);
18087 template <typename Domain, typename Range, typename Range2>
18088 template <typename Arg3>
18089 typed::union_map<pair<Domain, Range>, Arg3> typed::basic_map<pair<Domain, Range>, Range2>::preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const
18091 auto res = isl::basic_map::preimage_range(upma);
18092 return typed::union_map<pair<Domain, Range>, Arg3>(res);
18095 template <typename Domain, typename Range, typename Range2>
18096 template <typename Domain2, typename Arg3>
18097 typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::product(const typed::map<Domain2, Arg3> &map2) const
18099 auto res = isl::basic_map::product(map2);
18100 return typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
18103 template <typename Domain, typename Range, typename Range2>
18104 template <typename Domain2, typename Arg3>
18105 typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::product(const typed::union_map<Domain2, Arg3> &umap2) const
18107 auto res = isl::basic_map::product(umap2);
18108 return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
18111 template <typename Domain, typename Range, typename Range2>
18112 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::project_out_all_params() const
18114 auto res = isl::basic_map::project_out_all_params();
18115 return typed::map<pair<Domain, Range>, Range2>(res);
18118 template <typename Domain, typename Range, typename Range2>
18119 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::project_out_param(const typed::id<Anonymous> &id) const
18121 auto res = isl::basic_map::project_out_param(id);
18122 return typed::map<pair<Domain, Range>, Range2>(res);
18125 template <typename Domain, typename Range, typename Range2>
18126 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::project_out_param(const std::string &id) const
18128 auto res = isl::basic_map::project_out_param(id);
18129 return typed::map<pair<Domain, Range>, Range2>(res);
18132 template <typename Domain, typename Range, typename Range2>
18133 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::project_out_param(const typed::id_list<Anonymous> &list) const
18135 auto res = isl::basic_map::project_out_param(list);
18136 return typed::map<pair<Domain, Range>, Range2>(res);
18139 template <typename Domain, typename Range, typename Range2>
18140 typed::set<Range2> typed::basic_map<pair<Domain, Range>, Range2>::range() const
18142 auto res = isl::basic_map::range();
18143 return typed::set<Range2>(res);
18146 template <typename Domain, typename Range, typename Range2>
18147 typed::fixed_box<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::range_lattice_tile() const
18149 auto res = isl::basic_map::range_lattice_tile();
18150 return typed::fixed_box<pair<Domain, Range>, Range2>(res);
18153 template <typename Domain, typename Range, typename Range2>
18154 typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::range_map() const
18156 auto res = isl::basic_map::range_map();
18157 return typed::union_map<pair<pair<Domain, Range>, Range2>, Range2>(res);
18160 template <typename Domain, typename Range, typename Range2>
18161 template <typename Arg3>
18162 typed::map<pair<Domain, Range>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const
18164 auto res = isl::basic_map::range_product(map2);
18165 return typed::map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
18168 template <typename Domain, typename Range, typename Range2>
18169 template <typename Arg3>
18170 typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::basic_map<pair<Domain, Range>, Range2>::range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const
18172 auto res = isl::basic_map::range_product(umap2);
18173 return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
18176 template <typename Domain, typename Range, typename Range2>
18177 typed::fixed_box<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::range_simple_fixed_box_hull() const
18179 auto res = isl::basic_map::range_simple_fixed_box_hull();
18180 return typed::fixed_box<pair<Domain, Range>, Range2>(res);
18183 template <typename Domain, typename Range, typename Range2>
18184 typed::basic_map<Range2, pair<Domain, Range>> typed::basic_map<pair<Domain, Range>, Range2>::reverse() const
18186 auto res = isl::basic_map::reverse();
18187 return typed::basic_map<Range2, pair<Domain, Range>>(res);
18190 template <typename Domain, typename Range, typename Range2>
18191 template <typename Arg2>
18192 typed::map<pair<Domain, Range>, Arg2> typed::basic_map<pair<Domain, Range>, Range2>::set_range_tuple(const typed::id<Anonymous> &id) const
18194 auto res = isl::basic_map::set_range_tuple(id);
18195 return typed::map<pair<Domain, Range>, Arg2>(res);
18198 template <typename Domain, typename Range, typename Range2>
18199 template <typename Arg2>
18200 typed::map<pair<Domain, Range>, Arg2> typed::basic_map<pair<Domain, Range>, Range2>::set_range_tuple(const std::string &id) const
18202 auto res = isl::basic_map::set_range_tuple(id);
18203 return typed::map<pair<Domain, Range>, Arg2>(res);
18206 template <typename Domain, typename Range, typename Range2>
18207 typed::space<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::space() const
18209 auto res = isl::basic_map::space();
18210 return typed::space<pair<Domain, Range>, Range2>(res);
18213 template <typename Domain, typename Range, typename Range2>
18214 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const
18216 auto res = isl::basic_map::subtract(map2);
18217 return typed::map<pair<Domain, Range>, Range2>(res);
18220 template <typename Domain, typename Range, typename Range2>
18221 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
18223 auto res = isl::basic_map::subtract(umap2);
18224 return typed::union_map<pair<Domain, Range>, Range2>(res);
18227 template <typename Domain, typename Range, typename Range2>
18228 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const
18230 auto res = isl::basic_map::subtract_domain(dom);
18231 return typed::union_map<pair<Domain, Range>, Range2>(res);
18234 template <typename Domain, typename Range, typename Range2>
18235 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::subtract_range(const typed::union_set<Range2> &dom) const
18237 auto res = isl::basic_map::subtract_range(dom);
18238 return typed::union_map<pair<Domain, Range>, Range2>(res);
18241 template <typename Domain, typename Range, typename Range2>
18242 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::to_union_map() const
18244 auto res = isl::basic_map::to_union_map();
18245 return typed::union_map<pair<Domain, Range>, Range2>(res);
18248 template <typename Domain, typename Range, typename Range2>
18249 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::unite(const typed::basic_map<pair<Domain, Range>, Range2> &bmap2) const
18251 auto res = isl::basic_map::unite(bmap2);
18252 return typed::map<pair<Domain, Range>, Range2>(res);
18255 template <typename Domain, typename Range, typename Range2>
18256 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::unite(const typed::map<pair<Domain, Range>, Range2> &map2) const
18258 auto res = isl::basic_map::unite(map2);
18259 return typed::map<pair<Domain, Range>, Range2>(res);
18262 template <typename Domain, typename Range, typename Range2>
18263 typed::union_map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
18265 auto res = isl::basic_map::unite(umap2);
18266 return typed::union_map<pair<Domain, Range>, Range2>(res);
18269 template <typename Domain, typename Range, typename Range2>
18270 typed::map<pair<Domain, Range>, Range2> typed::basic_map<pair<Domain, Range>, Range2>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const
18272 auto res = isl::basic_map::upper_bound(upper);
18273 return typed::map<pair<Domain, Range>, Range2>(res);
18276 template <typename Domain, typename Range, typename Range2>
18277 typed::set<pair<pair<Domain, Range>, Range2>> typed::basic_map<pair<Domain, Range>, Range2>::wrap() const
18279 auto res = isl::basic_map::wrap();
18280 return typed::set<pair<pair<Domain, Range>, Range2>>(res);
18283 template <typename Domain>
18284 typed::basic_map<Domain, Domain>::basic_map(const isl::ctx &ctx, const std::string &str)
18285 : isl::basic_map(ctx, str)
18289 template <typename Domain>
18290 template <typename Domain2>
18291 typed::basic_map<Domain2, Domain> typed::basic_map<Domain, Domain>::apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const
18293 auto res = isl::basic_map::apply_domain(bmap2);
18294 return typed::basic_map<Domain2, Domain>(res);
18297 template <typename Domain>
18298 template <typename Domain2>
18299 typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::apply_domain(const typed::map<Domain, Domain2> &map2) const
18301 auto res = isl::basic_map::apply_domain(map2);
18302 return typed::map<Domain2, Domain>(res);
18305 template <typename Domain>
18306 template <typename Domain2>
18307 typed::union_map<Domain2, Domain> typed::basic_map<Domain, Domain>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
18309 auto res = isl::basic_map::apply_domain(umap2);
18310 return typed::union_map<Domain2, Domain>(res);
18313 template <typename Domain>
18314 template <typename Range2>
18315 typed::basic_map<Domain, Range2> typed::basic_map<Domain, Domain>::apply_range(const typed::basic_map<Domain, Range2> &bmap2) const
18317 auto res = isl::basic_map::apply_range(bmap2);
18318 return typed::basic_map<Domain, Range2>(res);
18321 template <typename Domain>
18322 template <typename Range2>
18323 typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::apply_range(const typed::map<Domain, Range2> &map2) const
18325 auto res = isl::basic_map::apply_range(map2);
18326 return typed::map<Domain, Range2>(res);
18329 template <typename Domain>
18330 template <typename Range2>
18331 typed::union_map<Domain, Range2> typed::basic_map<Domain, Domain>::apply_range(const typed::union_map<Domain, Range2> &umap2) const
18333 auto res = isl::basic_map::apply_range(umap2);
18334 return typed::union_map<Domain, Range2>(res);
18337 template <typename Domain>
18338 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::as_map() const
18340 auto res = isl::basic_map::as_map();
18341 return typed::map<Domain, Domain>(res);
18344 template <typename Domain>
18345 typed::multi_union_pw_aff<Domain, Domain> typed::basic_map<Domain, Domain>::as_multi_union_pw_aff() const
18347 auto res = isl::basic_map::as_multi_union_pw_aff();
18348 return typed::multi_union_pw_aff<Domain, Domain>(res);
18351 template <typename Domain>
18352 typed::pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::as_pw_multi_aff() const
18354 auto res = isl::basic_map::as_pw_multi_aff();
18355 return typed::pw_multi_aff<Domain, Domain>(res);
18358 template <typename Domain>
18359 typed::union_pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::as_union_pw_multi_aff() const
18361 auto res = isl::basic_map::as_union_pw_multi_aff();
18362 return typed::union_pw_multi_aff<Domain, Domain>(res);
18365 template <typename Domain>
18366 typed::set<Domain> typed::basic_map<Domain, Domain>::bind_domain(const typed::multi_id<Domain> &tuple) const
18368 auto res = isl::basic_map::bind_domain(tuple);
18369 return typed::set<Domain>(res);
18372 template <typename Domain>
18373 typed::set<Domain> typed::basic_map<Domain, Domain>::bind_range(const typed::multi_id<Domain> &tuple) const
18375 auto res = isl::basic_map::bind_range(tuple);
18376 return typed::set<Domain>(res);
18379 template <typename Domain>
18380 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::coalesce() const
18382 auto res = isl::basic_map::coalesce();
18383 return typed::map<Domain, Domain>(res);
18386 template <typename Domain>
18387 typed::basic_set<Domain> typed::basic_map<Domain, Domain>::deltas() const
18389 auto res = isl::basic_map::deltas();
18390 return typed::basic_set<Domain>(res);
18393 template <typename Domain>
18394 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::detect_equalities() const
18396 auto res = isl::basic_map::detect_equalities();
18397 return typed::basic_map<Domain, Domain>(res);
18400 template <typename Domain>
18401 typed::set<Domain> typed::basic_map<Domain, Domain>::domain() const
18403 auto res = isl::basic_map::domain();
18404 return typed::set<Domain>(res);
18407 template <typename Domain>
18408 typed::union_map<pair<Domain, Domain>, Domain> typed::basic_map<Domain, Domain>::domain_map() const
18410 auto res = isl::basic_map::domain_map();
18411 return typed::union_map<pair<Domain, Domain>, Domain>(res);
18414 template <typename Domain>
18415 typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> typed::basic_map<Domain, Domain>::domain_map_union_pw_multi_aff() const
18417 auto res = isl::basic_map::domain_map_union_pw_multi_aff();
18418 return typed::union_pw_multi_aff<pair<Domain, Domain>, Domain>(res);
18421 template <typename Domain>
18422 template <typename Domain2>
18423 typed::map<pair<Domain, Domain2>, Domain> typed::basic_map<Domain, Domain>::domain_product(const typed::map<Domain2, Domain> &map2) const
18425 auto res = isl::basic_map::domain_product(map2);
18426 return typed::map<pair<Domain, Domain2>, Domain>(res);
18429 template <typename Domain>
18430 template <typename Domain2>
18431 typed::union_map<pair<Domain, Domain2>, Domain> typed::basic_map<Domain, Domain>::domain_product(const typed::union_map<Domain2, Domain> &umap2) const
18433 auto res = isl::basic_map::domain_product(umap2);
18434 return typed::union_map<pair<Domain, Domain2>, Domain>(res);
18437 template <typename Domain>
18438 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::drop_unused_params() const
18440 auto res = isl::basic_map::drop_unused_params();
18441 return typed::map<Domain, Domain>(res);
18444 template <typename Domain>
18445 template <typename Range>
18446 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
18448 auto res = isl::basic_map::eq_at(mpa);
18449 return typed::map<Domain, Domain>(res);
18452 template <typename Domain>
18453 template <typename Range>
18454 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const
18456 auto res = isl::basic_map::eq_at(mupa);
18457 return typed::union_map<Domain, Domain>(res);
18460 template <typename Domain>
18461 bool typed::basic_map<Domain, Domain>::every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const
18463 auto lambda_test = [&] (isl::map arg0) {
18464 return test(typed::map<Domain, Domain>(arg0));
18466 return isl::basic_map::every_map(lambda_test);
18469 template <typename Domain>
18470 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::extract_map(const typed::space<Domain, Domain> &space) const
18472 auto res = isl::basic_map::extract_map(space);
18473 return typed::map<Domain, Domain>(res);
18476 template <typename Domain>
18477 void typed::basic_map<Domain, Domain>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const
18479 auto lambda_fn = [&] (isl::basic_map arg0) {
18480 return fn(typed::basic_map<Domain, Domain>(arg0));
18482 return isl::basic_map::foreach_basic_map(lambda_fn);
18485 template <typename Domain>
18486 void typed::basic_map<Domain, Domain>::foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const
18488 auto lambda_fn = [&] (isl::map arg0) {
18489 return fn(typed::map<Domain, Domain>(arg0));
18491 return isl::basic_map::foreach_map(lambda_fn);
18494 template <typename Domain>
18495 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::gist(const typed::basic_map<Domain, Domain> &context) const
18497 auto res = isl::basic_map::gist(context);
18498 return typed::basic_map<Domain, Domain>(res);
18501 template <typename Domain>
18502 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::gist(const typed::map<Domain, Domain> &context) const
18504 auto res = isl::basic_map::gist(context);
18505 return typed::map<Domain, Domain>(res);
18508 template <typename Domain>
18509 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::gist(const typed::union_map<Domain, Domain> &context) const
18511 auto res = isl::basic_map::gist(context);
18512 return typed::union_map<Domain, Domain>(res);
18515 template <typename Domain>
18516 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::gist_domain(const typed::set<Domain> &context) const
18518 auto res = isl::basic_map::gist_domain(context);
18519 return typed::map<Domain, Domain>(res);
18522 template <typename Domain>
18523 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::gist_domain(const typed::union_set<Domain> &uset) const
18525 auto res = isl::basic_map::gist_domain(uset);
18526 return typed::union_map<Domain, Domain>(res);
18529 template <typename Domain>
18530 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::gist_params(const typed::set<> &context) const
18532 auto res = isl::basic_map::gist_params(context);
18533 return typed::map<Domain, Domain>(res);
18536 template <typename Domain>
18537 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect(const typed::basic_map<Domain, Domain> &bmap2) const
18539 auto res = isl::basic_map::intersect(bmap2);
18540 return typed::basic_map<Domain, Domain>(res);
18543 template <typename Domain>
18544 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect(const typed::map<Domain, Domain> &map2) const
18546 auto res = isl::basic_map::intersect(map2);
18547 return typed::map<Domain, Domain>(res);
18550 template <typename Domain>
18551 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect(const typed::union_map<Domain, Domain> &umap2) const
18553 auto res = isl::basic_map::intersect(umap2);
18554 return typed::union_map<Domain, Domain>(res);
18557 template <typename Domain>
18558 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::basic_set<Domain> &bset) const
18560 auto res = isl::basic_map::intersect_domain(bset);
18561 return typed::basic_map<Domain, Domain>(res);
18564 template <typename Domain>
18565 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::set<Domain> &set) const
18567 auto res = isl::basic_map::intersect_domain(set);
18568 return typed::map<Domain, Domain>(res);
18571 template <typename Domain>
18572 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::space<Domain> &space) const
18574 auto res = isl::basic_map::intersect_domain(space);
18575 return typed::union_map<Domain, Domain>(res);
18578 template <typename Domain>
18579 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::union_set<Domain> &uset) const
18581 auto res = isl::basic_map::intersect_domain(uset);
18582 return typed::union_map<Domain, Domain>(res);
18585 template <typename Domain>
18586 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_domain(const typed::point<Domain> &bset) const
18588 auto res = isl::basic_map::intersect_domain(bset);
18589 return typed::basic_map<Domain, Domain>(res);
18592 template <typename Domain>
18593 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_params(const typed::basic_set<> &bset) const
18595 auto res = isl::basic_map::intersect_params(bset);
18596 return typed::basic_map<Domain, Domain>(res);
18599 template <typename Domain>
18600 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_params(const typed::set<> &params) const
18602 auto res = isl::basic_map::intersect_params(params);
18603 return typed::map<Domain, Domain>(res);
18606 template <typename Domain>
18607 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_params(const typed::point<> &bset) const
18609 auto res = isl::basic_map::intersect_params(bset);
18610 return typed::basic_map<Domain, Domain>(res);
18613 template <typename Domain>
18614 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::basic_set<Domain> &bset) const
18616 auto res = isl::basic_map::intersect_range(bset);
18617 return typed::basic_map<Domain, Domain>(res);
18620 template <typename Domain>
18621 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::set<Domain> &set) const
18623 auto res = isl::basic_map::intersect_range(set);
18624 return typed::map<Domain, Domain>(res);
18627 template <typename Domain>
18628 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::space<Domain> &space) const
18630 auto res = isl::basic_map::intersect_range(space);
18631 return typed::union_map<Domain, Domain>(res);
18634 template <typename Domain>
18635 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::union_set<Domain> &uset) const
18637 auto res = isl::basic_map::intersect_range(uset);
18638 return typed::union_map<Domain, Domain>(res);
18641 template <typename Domain>
18642 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::intersect_range(const typed::point<Domain> &bset) const
18644 auto res = isl::basic_map::intersect_range(bset);
18645 return typed::basic_map<Domain, Domain>(res);
18648 template <typename Domain>
18649 template <typename Range>
18650 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
18652 auto res = isl::basic_map::lex_ge_at(mpa);
18653 return typed::map<Domain, Domain>(res);
18656 template <typename Domain>
18657 template <typename Range>
18658 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
18660 auto res = isl::basic_map::lex_gt_at(mpa);
18661 return typed::map<Domain, Domain>(res);
18664 template <typename Domain>
18665 template <typename Range>
18666 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
18668 auto res = isl::basic_map::lex_le_at(mpa);
18669 return typed::map<Domain, Domain>(res);
18672 template <typename Domain>
18673 template <typename Range>
18674 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
18676 auto res = isl::basic_map::lex_lt_at(mpa);
18677 return typed::map<Domain, Domain>(res);
18680 template <typename Domain>
18681 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lexmax() const
18683 auto res = isl::basic_map::lexmax();
18684 return typed::map<Domain, Domain>(res);
18687 template <typename Domain>
18688 typed::pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::lexmax_pw_multi_aff() const
18690 auto res = isl::basic_map::lexmax_pw_multi_aff();
18691 return typed::pw_multi_aff<Domain, Domain>(res);
18694 template <typename Domain>
18695 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lexmin() const
18697 auto res = isl::basic_map::lexmin();
18698 return typed::map<Domain, Domain>(res);
18701 template <typename Domain>
18702 typed::pw_multi_aff<Domain, Domain> typed::basic_map<Domain, Domain>::lexmin_pw_multi_aff() const
18704 auto res = isl::basic_map::lexmin_pw_multi_aff();
18705 return typed::pw_multi_aff<Domain, Domain>(res);
18708 template <typename Domain>
18709 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const
18711 auto res = isl::basic_map::lower_bound(lower);
18712 return typed::map<Domain, Domain>(res);
18715 template <typename Domain>
18716 typed::map_list<Domain, Domain> typed::basic_map<Domain, Domain>::map_list() const
18718 auto res = isl::basic_map::map_list();
18719 return typed::map_list<Domain, Domain>(res);
18722 template <typename Domain>
18723 typed::multi_pw_aff<Domain, Domain> typed::basic_map<Domain, Domain>::max_multi_pw_aff() const
18725 auto res = isl::basic_map::max_multi_pw_aff();
18726 return typed::multi_pw_aff<Domain, Domain>(res);
18729 template <typename Domain>
18730 typed::multi_pw_aff<Domain, Domain> typed::basic_map<Domain, Domain>::min_multi_pw_aff() const
18732 auto res = isl::basic_map::min_multi_pw_aff();
18733 return typed::multi_pw_aff<Domain, Domain>(res);
18736 template <typename Domain>
18737 typed::set<> typed::basic_map<Domain, Domain>::params() const
18739 auto res = isl::basic_map::params();
18740 return typed::set<>(res);
18743 template <typename Domain>
18744 template <typename Domain2>
18745 typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
18747 auto res = isl::basic_map::preimage_domain(ma);
18748 return typed::map<Domain2, Domain>(res);
18751 template <typename Domain>
18752 template <typename Domain2>
18753 typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
18755 auto res = isl::basic_map::preimage_domain(mpa);
18756 return typed::map<Domain2, Domain>(res);
18759 template <typename Domain>
18760 template <typename Domain2>
18761 typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
18763 auto res = isl::basic_map::preimage_domain(pma);
18764 return typed::map<Domain2, Domain>(res);
18767 template <typename Domain>
18768 template <typename Domain2>
18769 typed::union_map<Domain2, Domain> typed::basic_map<Domain, Domain>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
18771 auto res = isl::basic_map::preimage_domain(upma);
18772 return typed::union_map<Domain2, Domain>(res);
18775 template <typename Domain>
18776 template <typename Range2>
18777 typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::preimage_range(const typed::multi_aff<Range2, Domain> &ma) const
18779 auto res = isl::basic_map::preimage_range(ma);
18780 return typed::map<Domain, Range2>(res);
18783 template <typename Domain>
18784 template <typename Range2>
18785 typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const
18787 auto res = isl::basic_map::preimage_range(pma);
18788 return typed::map<Domain, Range2>(res);
18791 template <typename Domain>
18792 template <typename Range2>
18793 typed::union_map<Domain, Range2> typed::basic_map<Domain, Domain>::preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const
18795 auto res = isl::basic_map::preimage_range(upma);
18796 return typed::union_map<Domain, Range2>(res);
18799 template <typename Domain>
18800 template <typename Domain2, typename Range2>
18801 typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::product(const typed::map<Domain2, Range2> &map2) const
18803 auto res = isl::basic_map::product(map2);
18804 return typed::map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
18807 template <typename Domain>
18808 template <typename Domain2, typename Range2>
18809 typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::product(const typed::union_map<Domain2, Range2> &umap2) const
18811 auto res = isl::basic_map::product(umap2);
18812 return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
18815 template <typename Domain>
18816 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::project_out_all_params() const
18818 auto res = isl::basic_map::project_out_all_params();
18819 return typed::map<Domain, Domain>(res);
18822 template <typename Domain>
18823 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::project_out_param(const typed::id<Anonymous> &id) const
18825 auto res = isl::basic_map::project_out_param(id);
18826 return typed::map<Domain, Domain>(res);
18829 template <typename Domain>
18830 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::project_out_param(const std::string &id) const
18832 auto res = isl::basic_map::project_out_param(id);
18833 return typed::map<Domain, Domain>(res);
18836 template <typename Domain>
18837 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
18839 auto res = isl::basic_map::project_out_param(list);
18840 return typed::map<Domain, Domain>(res);
18843 template <typename Domain>
18844 typed::set<Domain> typed::basic_map<Domain, Domain>::range() const
18846 auto res = isl::basic_map::range();
18847 return typed::set<Domain>(res);
18850 template <typename Domain>
18851 typed::fixed_box<Domain, Domain> typed::basic_map<Domain, Domain>::range_lattice_tile() const
18853 auto res = isl::basic_map::range_lattice_tile();
18854 return typed::fixed_box<Domain, Domain>(res);
18857 template <typename Domain>
18858 typed::union_map<pair<Domain, Domain>, Domain> typed::basic_map<Domain, Domain>::range_map() const
18860 auto res = isl::basic_map::range_map();
18861 return typed::union_map<pair<Domain, Domain>, Domain>(res);
18864 template <typename Domain>
18865 template <typename Range2>
18866 typed::map<Domain, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::range_product(const typed::map<Domain, Range2> &map2) const
18868 auto res = isl::basic_map::range_product(map2);
18869 return typed::map<Domain, pair<Domain, Range2>>(res);
18872 template <typename Domain>
18873 template <typename Range2>
18874 typed::union_map<Domain, pair<Domain, Range2>> typed::basic_map<Domain, Domain>::range_product(const typed::union_map<Domain, Range2> &umap2) const
18876 auto res = isl::basic_map::range_product(umap2);
18877 return typed::union_map<Domain, pair<Domain, Range2>>(res);
18880 template <typename Domain>
18881 typed::fixed_box<Domain, Domain> typed::basic_map<Domain, Domain>::range_simple_fixed_box_hull() const
18883 auto res = isl::basic_map::range_simple_fixed_box_hull();
18884 return typed::fixed_box<Domain, Domain>(res);
18887 template <typename Domain>
18888 typed::basic_map<Domain, Domain> typed::basic_map<Domain, Domain>::reverse() const
18890 auto res = isl::basic_map::reverse();
18891 return typed::basic_map<Domain, Domain>(res);
18894 template <typename Domain>
18895 template <typename Domain2>
18896 typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::set_domain_tuple(const typed::id<Anonymous> &id) const
18898 auto res = isl::basic_map::set_domain_tuple(id);
18899 return typed::map<Domain2, Domain>(res);
18902 template <typename Domain>
18903 template <typename Domain2>
18904 typed::map<Domain2, Domain> typed::basic_map<Domain, Domain>::set_domain_tuple(const std::string &id) const
18906 auto res = isl::basic_map::set_domain_tuple(id);
18907 return typed::map<Domain2, Domain>(res);
18910 template <typename Domain>
18911 template <typename Range2>
18912 typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
18914 auto res = isl::basic_map::set_range_tuple(id);
18915 return typed::map<Domain, Range2>(res);
18918 template <typename Domain>
18919 template <typename Range2>
18920 typed::map<Domain, Range2> typed::basic_map<Domain, Domain>::set_range_tuple(const std::string &id) const
18922 auto res = isl::basic_map::set_range_tuple(id);
18923 return typed::map<Domain, Range2>(res);
18926 template <typename Domain>
18927 typed::space<Domain, Domain> typed::basic_map<Domain, Domain>::space() const
18929 auto res = isl::basic_map::space();
18930 return typed::space<Domain, Domain>(res);
18933 template <typename Domain>
18934 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract(const typed::map<Domain, Domain> &map2) const
18936 auto res = isl::basic_map::subtract(map2);
18937 return typed::map<Domain, Domain>(res);
18940 template <typename Domain>
18941 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract(const typed::union_map<Domain, Domain> &umap2) const
18943 auto res = isl::basic_map::subtract(umap2);
18944 return typed::union_map<Domain, Domain>(res);
18947 template <typename Domain>
18948 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract_domain(const typed::union_set<Domain> &dom) const
18950 auto res = isl::basic_map::subtract_domain(dom);
18951 return typed::union_map<Domain, Domain>(res);
18954 template <typename Domain>
18955 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::subtract_range(const typed::union_set<Domain> &dom) const
18957 auto res = isl::basic_map::subtract_range(dom);
18958 return typed::union_map<Domain, Domain>(res);
18961 template <typename Domain>
18962 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::to_union_map() const
18964 auto res = isl::basic_map::to_union_map();
18965 return typed::union_map<Domain, Domain>(res);
18968 template <typename Domain>
18969 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::unite(const typed::basic_map<Domain, Domain> &bmap2) const
18971 auto res = isl::basic_map::unite(bmap2);
18972 return typed::map<Domain, Domain>(res);
18975 template <typename Domain>
18976 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::unite(const typed::map<Domain, Domain> &map2) const
18978 auto res = isl::basic_map::unite(map2);
18979 return typed::map<Domain, Domain>(res);
18982 template <typename Domain>
18983 typed::union_map<Domain, Domain> typed::basic_map<Domain, Domain>::unite(const typed::union_map<Domain, Domain> &umap2) const
18985 auto res = isl::basic_map::unite(umap2);
18986 return typed::union_map<Domain, Domain>(res);
18989 template <typename Domain>
18990 typed::map<Domain, Domain> typed::basic_map<Domain, Domain>::upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const
18992 auto res = isl::basic_map::upper_bound(upper);
18993 return typed::map<Domain, Domain>(res);
18996 template <typename Domain>
18997 typed::set<pair<Domain, Domain>> typed::basic_map<Domain, Domain>::wrap() const
18999 auto res = isl::basic_map::wrap();
19000 return typed::set<pair<Domain, Domain>>(res);
19003 template <typename Domain, typename Range, typename Range2>
19004 typed::basic_map<Domain, pair<Range, Range2>>::basic_map(const isl::ctx &ctx, const std::string &str)
19005 : isl::basic_map(ctx, str)
19009 template <typename Domain, typename Range, typename Range2>
19010 template <typename Domain2>
19011 typed::basic_map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::apply_domain(const typed::basic_map<Domain, Domain2> &bmap2) const
19013 auto res = isl::basic_map::apply_domain(bmap2);
19014 return typed::basic_map<Domain2, pair<Range, Range2>>(res);
19017 template <typename Domain, typename Range, typename Range2>
19018 template <typename Domain2>
19019 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::apply_domain(const typed::map<Domain, Domain2> &map2) const
19021 auto res = isl::basic_map::apply_domain(map2);
19022 return typed::map<Domain2, pair<Range, Range2>>(res);
19025 template <typename Domain, typename Range, typename Range2>
19026 template <typename Domain2>
19027 typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
19029 auto res = isl::basic_map::apply_domain(umap2);
19030 return typed::union_map<Domain2, pair<Range, Range2>>(res);
19033 template <typename Domain, typename Range, typename Range2>
19034 template <typename Arg3>
19035 typed::basic_map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &bmap2) const
19037 auto res = isl::basic_map::apply_range(bmap2);
19038 return typed::basic_map<Domain, Arg3>(res);
19041 template <typename Domain, typename Range, typename Range2>
19042 template <typename Arg3>
19043 typed::map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const
19045 auto res = isl::basic_map::apply_range(map2);
19046 return typed::map<Domain, Arg3>(res);
19049 template <typename Domain, typename Range, typename Range2>
19050 template <typename Arg3>
19051 typed::union_map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const
19053 auto res = isl::basic_map::apply_range(umap2);
19054 return typed::union_map<Domain, Arg3>(res);
19057 template <typename Domain, typename Range, typename Range2>
19058 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_map() const
19060 auto res = isl::basic_map::as_map();
19061 return typed::map<Domain, pair<Range, Range2>>(res);
19064 template <typename Domain, typename Range, typename Range2>
19065 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
19067 auto res = isl::basic_map::as_multi_union_pw_aff();
19068 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
19071 template <typename Domain, typename Range, typename Range2>
19072 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
19074 auto res = isl::basic_map::as_pw_multi_aff();
19075 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
19078 template <typename Domain, typename Range, typename Range2>
19079 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::as_union_pw_multi_aff() const
19081 auto res = isl::basic_map::as_union_pw_multi_aff();
19082 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
19085 template <typename Domain, typename Range, typename Range2>
19086 typed::set<pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
19088 auto res = isl::basic_map::bind_domain(tuple);
19089 return typed::set<pair<Range, Range2>>(res);
19092 template <typename Domain, typename Range, typename Range2>
19093 typed::set<Domain> typed::basic_map<Domain, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
19095 auto res = isl::basic_map::bind_range(tuple);
19096 return typed::set<Domain>(res);
19099 template <typename Domain, typename Range, typename Range2>
19100 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::coalesce() const
19102 auto res = isl::basic_map::coalesce();
19103 return typed::map<Domain, pair<Range, Range2>>(res);
19106 template <typename Domain, typename Range, typename Range2>
19107 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::detect_equalities() const
19109 auto res = isl::basic_map::detect_equalities();
19110 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19113 template <typename Domain, typename Range, typename Range2>
19114 typed::set<Domain> typed::basic_map<Domain, pair<Range, Range2>>::domain() const
19116 auto res = isl::basic_map::domain();
19117 return typed::set<Domain>(res);
19120 template <typename Domain, typename Range, typename Range2>
19121 typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> typed::basic_map<Domain, pair<Range, Range2>>::domain_map() const
19123 auto res = isl::basic_map::domain_map();
19124 return typed::union_map<pair<Domain, pair<Range, Range2>>, Domain>(res);
19127 template <typename Domain, typename Range, typename Range2>
19128 typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::basic_map<Domain, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
19130 auto res = isl::basic_map::domain_map_union_pw_multi_aff();
19131 return typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
19134 template <typename Domain, typename Range, typename Range2>
19135 template <typename Domain2>
19136 typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
19138 auto res = isl::basic_map::domain_product(map2);
19139 return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
19142 template <typename Domain, typename Range, typename Range2>
19143 template <typename Domain2>
19144 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
19146 auto res = isl::basic_map::domain_product(umap2);
19147 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
19150 template <typename Domain, typename Range, typename Range2>
19151 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::drop_unused_params() const
19153 auto res = isl::basic_map::drop_unused_params();
19154 return typed::map<Domain, pair<Range, Range2>>(res);
19157 template <typename Domain, typename Range, typename Range2>
19158 bool typed::basic_map<Domain, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const
19160 auto lambda_test = [&] (isl::map arg0) {
19161 return test(typed::map<Domain, pair<Range, Range2>>(arg0));
19163 return isl::basic_map::every_map(lambda_test);
19166 template <typename Domain, typename Range, typename Range2>
19167 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const
19169 auto res = isl::basic_map::extract_map(space);
19170 return typed::map<Domain, pair<Range, Range2>>(res);
19173 template <typename Domain, typename Range, typename Range2>
19174 typed::basic_map<Domain, Anonymous> typed::basic_map<Domain, pair<Range, Range2>>::flatten_range() const
19176 auto res = isl::basic_map::flatten_range();
19177 return typed::basic_map<Domain, Anonymous>(res);
19180 template <typename Domain, typename Range, typename Range2>
19181 void typed::basic_map<Domain, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const
19183 auto lambda_fn = [&] (isl::basic_map arg0) {
19184 return fn(typed::basic_map<Domain, pair<Range, Range2>>(arg0));
19186 return isl::basic_map::foreach_basic_map(lambda_fn);
19189 template <typename Domain, typename Range, typename Range2>
19190 void typed::basic_map<Domain, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const
19192 auto lambda_fn = [&] (isl::map arg0) {
19193 return fn(typed::map<Domain, pair<Range, Range2>>(arg0));
19195 return isl::basic_map::foreach_map(lambda_fn);
19198 template <typename Domain, typename Range, typename Range2>
19199 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const
19201 auto res = isl::basic_map::gist(context);
19202 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19205 template <typename Domain, typename Range, typename Range2>
19206 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist(const typed::map<Domain, pair<Range, Range2>> &context) const
19208 auto res = isl::basic_map::gist(context);
19209 return typed::map<Domain, pair<Range, Range2>>(res);
19212 template <typename Domain, typename Range, typename Range2>
19213 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const
19215 auto res = isl::basic_map::gist(context);
19216 return typed::union_map<Domain, pair<Range, Range2>>(res);
19219 template <typename Domain, typename Range, typename Range2>
19220 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist_domain(const typed::set<Domain> &context) const
19222 auto res = isl::basic_map::gist_domain(context);
19223 return typed::map<Domain, pair<Range, Range2>>(res);
19226 template <typename Domain, typename Range, typename Range2>
19227 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist_domain(const typed::union_set<Domain> &uset) const
19229 auto res = isl::basic_map::gist_domain(uset);
19230 return typed::union_map<Domain, pair<Range, Range2>>(res);
19233 template <typename Domain, typename Range, typename Range2>
19234 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::gist_params(const typed::set<> &context) const
19236 auto res = isl::basic_map::gist_params(context);
19237 return typed::map<Domain, pair<Range, Range2>>(res);
19240 template <typename Domain, typename Range, typename Range2>
19241 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const
19243 auto res = isl::basic_map::intersect(bmap2);
19244 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19247 template <typename Domain, typename Range, typename Range2>
19248 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const
19250 auto res = isl::basic_map::intersect(map2);
19251 return typed::map<Domain, pair<Range, Range2>>(res);
19254 template <typename Domain, typename Range, typename Range2>
19255 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
19257 auto res = isl::basic_map::intersect(umap2);
19258 return typed::union_map<Domain, pair<Range, Range2>>(res);
19261 template <typename Domain, typename Range, typename Range2>
19262 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::basic_set<Domain> &bset) const
19264 auto res = isl::basic_map::intersect_domain(bset);
19265 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19268 template <typename Domain, typename Range, typename Range2>
19269 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
19271 auto res = isl::basic_map::intersect_domain(set);
19272 return typed::map<Domain, pair<Range, Range2>>(res);
19275 template <typename Domain, typename Range, typename Range2>
19276 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
19278 auto res = isl::basic_map::intersect_domain(space);
19279 return typed::union_map<Domain, pair<Range, Range2>>(res);
19282 template <typename Domain, typename Range, typename Range2>
19283 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
19285 auto res = isl::basic_map::intersect_domain(uset);
19286 return typed::union_map<Domain, pair<Range, Range2>>(res);
19289 template <typename Domain, typename Range, typename Range2>
19290 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::point<Domain> &bset) const
19292 auto res = isl::basic_map::intersect_domain(bset);
19293 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19296 template <typename Domain, typename Range, typename Range2>
19297 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &bset) const
19299 auto res = isl::basic_map::intersect_params(bset);
19300 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19303 template <typename Domain, typename Range, typename Range2>
19304 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
19306 auto res = isl::basic_map::intersect_params(params);
19307 return typed::map<Domain, pair<Range, Range2>>(res);
19310 template <typename Domain, typename Range, typename Range2>
19311 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &bset) const
19313 auto res = isl::basic_map::intersect_params(bset);
19314 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19317 template <typename Domain, typename Range, typename Range2>
19318 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const
19320 auto res = isl::basic_map::intersect_range(bset);
19321 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19324 template <typename Domain, typename Range, typename Range2>
19325 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
19327 auto res = isl::basic_map::intersect_range(set);
19328 return typed::map<Domain, pair<Range, Range2>>(res);
19331 template <typename Domain, typename Range, typename Range2>
19332 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
19334 auto res = isl::basic_map::intersect_range(space);
19335 return typed::union_map<Domain, pair<Range, Range2>>(res);
19338 template <typename Domain, typename Range, typename Range2>
19339 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
19341 auto res = isl::basic_map::intersect_range(uset);
19342 return typed::union_map<Domain, pair<Range, Range2>>(res);
19345 template <typename Domain, typename Range, typename Range2>
19346 typed::basic_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &bset) const
19348 auto res = isl::basic_map::intersect_range(bset);
19349 return typed::basic_map<Domain, pair<Range, Range2>>(res);
19352 template <typename Domain, typename Range, typename Range2>
19353 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::set<Range> &domain) const
19355 auto res = isl::basic_map::intersect_range_wrapped_domain(domain);
19356 return typed::map<Domain, pair<Range, Range2>>(res);
19359 template <typename Domain, typename Range, typename Range2>
19360 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const
19362 auto res = isl::basic_map::intersect_range_wrapped_domain(domain);
19363 return typed::union_map<Domain, pair<Range, Range2>>(res);
19366 template <typename Domain, typename Range, typename Range2>
19367 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmax() const
19369 auto res = isl::basic_map::lexmax();
19370 return typed::map<Domain, pair<Range, Range2>>(res);
19373 template <typename Domain, typename Range, typename Range2>
19374 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmax_pw_multi_aff() const
19376 auto res = isl::basic_map::lexmax_pw_multi_aff();
19377 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
19380 template <typename Domain, typename Range, typename Range2>
19381 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmin() const
19383 auto res = isl::basic_map::lexmin();
19384 return typed::map<Domain, pair<Range, Range2>>(res);
19387 template <typename Domain, typename Range, typename Range2>
19388 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lexmin_pw_multi_aff() const
19390 auto res = isl::basic_map::lexmin_pw_multi_aff();
19391 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
19394 template <typename Domain, typename Range, typename Range2>
19395 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const
19397 auto res = isl::basic_map::lower_bound(lower);
19398 return typed::map<Domain, pair<Range, Range2>>(res);
19401 template <typename Domain, typename Range, typename Range2>
19402 typed::map_list<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::map_list() const
19404 auto res = isl::basic_map::map_list();
19405 return typed::map_list<Domain, pair<Range, Range2>>(res);
19408 template <typename Domain, typename Range, typename Range2>
19409 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::max_multi_pw_aff() const
19411 auto res = isl::basic_map::max_multi_pw_aff();
19412 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
19415 template <typename Domain, typename Range, typename Range2>
19416 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::min_multi_pw_aff() const
19418 auto res = isl::basic_map::min_multi_pw_aff();
19419 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
19422 template <typename Domain, typename Range, typename Range2>
19423 typed::set<> typed::basic_map<Domain, pair<Range, Range2>>::params() const
19425 auto res = isl::basic_map::params();
19426 return typed::set<>(res);
19429 template <typename Domain, typename Range, typename Range2>
19430 template <typename Domain2>
19431 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
19433 auto res = isl::basic_map::preimage_domain(ma);
19434 return typed::map<Domain2, pair<Range, Range2>>(res);
19437 template <typename Domain, typename Range, typename Range2>
19438 template <typename Domain2>
19439 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
19441 auto res = isl::basic_map::preimage_domain(mpa);
19442 return typed::map<Domain2, pair<Range, Range2>>(res);
19445 template <typename Domain, typename Range, typename Range2>
19446 template <typename Domain2>
19447 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
19449 auto res = isl::basic_map::preimage_domain(pma);
19450 return typed::map<Domain2, pair<Range, Range2>>(res);
19453 template <typename Domain, typename Range, typename Range2>
19454 template <typename Domain2>
19455 typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
19457 auto res = isl::basic_map::preimage_domain(upma);
19458 return typed::union_map<Domain2, pair<Range, Range2>>(res);
19461 template <typename Domain, typename Range, typename Range2>
19462 template <typename Arg3>
19463 typed::map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const
19465 auto res = isl::basic_map::preimage_range(ma);
19466 return typed::map<Domain, Arg3>(res);
19469 template <typename Domain, typename Range, typename Range2>
19470 template <typename Arg3>
19471 typed::map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const
19473 auto res = isl::basic_map::preimage_range(pma);
19474 return typed::map<Domain, Arg3>(res);
19477 template <typename Domain, typename Range, typename Range2>
19478 template <typename Arg3>
19479 typed::union_map<Domain, Arg3> typed::basic_map<Domain, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const
19481 auto res = isl::basic_map::preimage_range(upma);
19482 return typed::union_map<Domain, Arg3>(res);
19485 template <typename Domain, typename Range, typename Range2>
19486 template <typename Domain2, typename Arg3>
19487 typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::product(const typed::map<Domain2, Arg3> &map2) const
19489 auto res = isl::basic_map::product(map2);
19490 return typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
19493 template <typename Domain, typename Range, typename Range2>
19494 template <typename Domain2, typename Arg3>
19495 typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg3> &umap2) const
19497 auto res = isl::basic_map::product(umap2);
19498 return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
19501 template <typename Domain, typename Range, typename Range2>
19502 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::project_out_all_params() const
19504 auto res = isl::basic_map::project_out_all_params();
19505 return typed::map<Domain, pair<Range, Range2>>(res);
19508 template <typename Domain, typename Range, typename Range2>
19509 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::project_out_param(const typed::id<Anonymous> &id) const
19511 auto res = isl::basic_map::project_out_param(id);
19512 return typed::map<Domain, pair<Range, Range2>>(res);
19515 template <typename Domain, typename Range, typename Range2>
19516 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::project_out_param(const std::string &id) const
19518 auto res = isl::basic_map::project_out_param(id);
19519 return typed::map<Domain, pair<Range, Range2>>(res);
19522 template <typename Domain, typename Range, typename Range2>
19523 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::project_out_param(const typed::id_list<Anonymous> &list) const
19525 auto res = isl::basic_map::project_out_param(list);
19526 return typed::map<Domain, pair<Range, Range2>>(res);
19529 template <typename Domain, typename Range, typename Range2>
19530 typed::set<pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range() const
19532 auto res = isl::basic_map::range();
19533 return typed::set<pair<Range, Range2>>(res);
19536 template <typename Domain, typename Range, typename Range2>
19537 typed::map<Domain, Range> typed::basic_map<Domain, pair<Range, Range2>>::range_factor_domain() const
19539 auto res = isl::basic_map::range_factor_domain();
19540 return typed::map<Domain, Range>(res);
19543 template <typename Domain, typename Range, typename Range2>
19544 typed::map<Domain, Range2> typed::basic_map<Domain, pair<Range, Range2>>::range_factor_range() const
19546 auto res = isl::basic_map::range_factor_range();
19547 return typed::map<Domain, Range2>(res);
19550 template <typename Domain, typename Range, typename Range2>
19551 typed::fixed_box<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range_lattice_tile() const
19553 auto res = isl::basic_map::range_lattice_tile();
19554 return typed::fixed_box<Domain, pair<Range, Range2>>(res);
19557 template <typename Domain, typename Range, typename Range2>
19558 typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range_map() const
19560 auto res = isl::basic_map::range_map();
19561 return typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
19564 template <typename Domain, typename Range, typename Range2>
19565 template <typename Arg3>
19566 typed::map<Domain, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::range_product(const typed::map<Domain, Arg3> &map2) const
19568 auto res = isl::basic_map::range_product(map2);
19569 return typed::map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
19572 template <typename Domain, typename Range, typename Range2>
19573 template <typename Arg3>
19574 typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::basic_map<Domain, pair<Range, Range2>>::range_product(const typed::union_map<Domain, Arg3> &umap2) const
19576 auto res = isl::basic_map::range_product(umap2);
19577 return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
19580 template <typename Domain, typename Range, typename Range2>
19581 typed::map<Domain, pair<Range2, Range>> typed::basic_map<Domain, pair<Range, Range2>>::range_reverse() const
19583 auto res = isl::basic_map::range_reverse();
19584 return typed::map<Domain, pair<Range2, Range>>(res);
19587 template <typename Domain, typename Range, typename Range2>
19588 typed::fixed_box<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::range_simple_fixed_box_hull() const
19590 auto res = isl::basic_map::range_simple_fixed_box_hull();
19591 return typed::fixed_box<Domain, pair<Range, Range2>>(res);
19594 template <typename Domain, typename Range, typename Range2>
19595 typed::basic_map<pair<Range, Range2>, Domain> typed::basic_map<Domain, pair<Range, Range2>>::reverse() const
19597 auto res = isl::basic_map::reverse();
19598 return typed::basic_map<pair<Range, Range2>, Domain>(res);
19601 template <typename Domain, typename Range, typename Range2>
19602 template <typename Domain2>
19603 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::set_domain_tuple(const typed::id<Anonymous> &id) const
19605 auto res = isl::basic_map::set_domain_tuple(id);
19606 return typed::map<Domain2, pair<Range, Range2>>(res);
19609 template <typename Domain, typename Range, typename Range2>
19610 template <typename Domain2>
19611 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::set_domain_tuple(const std::string &id) const
19613 auto res = isl::basic_map::set_domain_tuple(id);
19614 return typed::map<Domain2, pair<Range, Range2>>(res);
19617 template <typename Domain, typename Range, typename Range2>
19618 typed::space<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::space() const
19620 auto res = isl::basic_map::space();
19621 return typed::space<Domain, pair<Range, Range2>>(res);
19624 template <typename Domain, typename Range, typename Range2>
19625 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const
19627 auto res = isl::basic_map::subtract(map2);
19628 return typed::map<Domain, pair<Range, Range2>>(res);
19631 template <typename Domain, typename Range, typename Range2>
19632 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
19634 auto res = isl::basic_map::subtract(umap2);
19635 return typed::union_map<Domain, pair<Range, Range2>>(res);
19638 template <typename Domain, typename Range, typename Range2>
19639 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &dom) const
19641 auto res = isl::basic_map::subtract_domain(dom);
19642 return typed::union_map<Domain, pair<Range, Range2>>(res);
19645 template <typename Domain, typename Range, typename Range2>
19646 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
19648 auto res = isl::basic_map::subtract_range(dom);
19649 return typed::union_map<Domain, pair<Range, Range2>>(res);
19652 template <typename Domain, typename Range, typename Range2>
19653 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::to_union_map() const
19655 auto res = isl::basic_map::to_union_map();
19656 return typed::union_map<Domain, pair<Range, Range2>>(res);
19659 template <typename Domain, typename Range, typename Range2>
19660 typed::map<pair<Domain, Range>, Range2> typed::basic_map<Domain, pair<Range, Range2>>::uncurry() const
19662 auto res = isl::basic_map::uncurry();
19663 return typed::map<pair<Domain, Range>, Range2>(res);
19666 template <typename Domain, typename Range, typename Range2>
19667 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::unite(const typed::basic_map<Domain, pair<Range, Range2>> &bmap2) const
19669 auto res = isl::basic_map::unite(bmap2);
19670 return typed::map<Domain, pair<Range, Range2>>(res);
19673 template <typename Domain, typename Range, typename Range2>
19674 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::unite(const typed::map<Domain, pair<Range, Range2>> &map2) const
19676 auto res = isl::basic_map::unite(map2);
19677 return typed::map<Domain, pair<Range, Range2>>(res);
19680 template <typename Domain, typename Range, typename Range2>
19681 typed::union_map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
19683 auto res = isl::basic_map::unite(umap2);
19684 return typed::union_map<Domain, pair<Range, Range2>>(res);
19687 template <typename Domain, typename Range, typename Range2>
19688 typed::map<Domain, pair<Range, Range2>> typed::basic_map<Domain, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const
19690 auto res = isl::basic_map::upper_bound(upper);
19691 return typed::map<Domain, pair<Range, Range2>>(res);
19694 template <typename Domain, typename Range, typename Range2>
19695 typed::set<pair<Domain, pair<Range, Range2>>> typed::basic_map<Domain, pair<Range, Range2>>::wrap() const
19697 auto res = isl::basic_map::wrap();
19698 return typed::set<pair<Domain, pair<Range, Range2>>>(res);
19701 template <typename T1, typename T2>
19702 typed::basic_map<pair<T1, T2>, pair<T1, T2>>::basic_map(const isl::ctx &ctx, const std::string &str)
19703 : isl::basic_map(ctx, str)
19707 template <typename T1, typename T2>
19708 template <typename Domain2>
19709 typed::basic_map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const
19711 auto res = isl::basic_map::apply_domain(bmap2);
19712 return typed::basic_map<Domain2, pair<T1, T2>>(res);
19715 template <typename T1, typename T2>
19716 template <typename Domain2>
19717 typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
19719 auto res = isl::basic_map::apply_domain(map2);
19720 return typed::map<Domain2, pair<T1, T2>>(res);
19723 template <typename T1, typename T2>
19724 template <typename Domain2>
19725 typed::union_map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
19727 auto res = isl::basic_map::apply_domain(umap2);
19728 return typed::union_map<Domain2, pair<T1, T2>>(res);
19731 template <typename T1, typename T2>
19732 template <typename Range2>
19733 typed::basic_map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::basic_map<pair<T1, T2>, Range2> &bmap2) const
19735 auto res = isl::basic_map::apply_range(bmap2);
19736 return typed::basic_map<pair<T1, T2>, Range2>(res);
19739 template <typename T1, typename T2>
19740 template <typename Range2>
19741 typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const
19743 auto res = isl::basic_map::apply_range(map2);
19744 return typed::map<pair<T1, T2>, Range2>(res);
19747 template <typename T1, typename T2>
19748 template <typename Range2>
19749 typed::union_map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
19751 auto res = isl::basic_map::apply_range(umap2);
19752 return typed::union_map<pair<T1, T2>, Range2>(res);
19755 template <typename T1, typename T2>
19756 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_map() const
19758 auto res = isl::basic_map::as_map();
19759 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19762 template <typename T1, typename T2>
19763 typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_multi_union_pw_aff() const
19765 auto res = isl::basic_map::as_multi_union_pw_aff();
19766 return typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
19769 template <typename T1, typename T2>
19770 typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_pw_multi_aff() const
19772 auto res = isl::basic_map::as_pw_multi_aff();
19773 return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
19776 template <typename T1, typename T2>
19777 typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::as_union_pw_multi_aff() const
19779 auto res = isl::basic_map::as_union_pw_multi_aff();
19780 return typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
19783 template <typename T1, typename T2>
19784 typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
19786 auto res = isl::basic_map::bind_domain(tuple);
19787 return typed::set<pair<T1, T2>>(res);
19790 template <typename T1, typename T2>
19791 typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const
19793 auto res = isl::basic_map::bind_range(tuple);
19794 return typed::set<pair<T1, T2>>(res);
19797 template <typename T1, typename T2>
19798 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::coalesce() const
19800 auto res = isl::basic_map::coalesce();
19801 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19804 template <typename T1, typename T2>
19805 typed::map<T1, pair<T2, pair<T1, T2>>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::curry() const
19807 auto res = isl::basic_map::curry();
19808 return typed::map<T1, pair<T2, pair<T1, T2>>>(res);
19811 template <typename T1, typename T2>
19812 typed::basic_set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::deltas() const
19814 auto res = isl::basic_map::deltas();
19815 return typed::basic_set<pair<T1, T2>>(res);
19818 template <typename T1, typename T2>
19819 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::detect_equalities() const
19821 auto res = isl::basic_map::detect_equalities();
19822 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
19825 template <typename T1, typename T2>
19826 typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain() const
19828 auto res = isl::basic_map::domain();
19829 return typed::set<pair<T1, T2>>(res);
19832 template <typename T1, typename T2>
19833 typed::map<T1, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_domain() const
19835 auto res = isl::basic_map::domain_factor_domain();
19836 return typed::map<T1, pair<T1, T2>>(res);
19839 template <typename T1, typename T2>
19840 typed::map<T2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_range() const
19842 auto res = isl::basic_map::domain_factor_range();
19843 return typed::map<T2, pair<T1, T2>>(res);
19846 template <typename T1, typename T2>
19847 typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_map() const
19849 auto res = isl::basic_map::domain_map();
19850 return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
19853 template <typename T1, typename T2>
19854 typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_map_union_pw_multi_aff() const
19856 auto res = isl::basic_map::domain_map_union_pw_multi_aff();
19857 return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
19860 template <typename T1, typename T2>
19861 template <typename Domain2>
19862 typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const
19864 auto res = isl::basic_map::domain_product(map2);
19865 return typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
19868 template <typename T1, typename T2>
19869 template <typename Domain2>
19870 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const
19872 auto res = isl::basic_map::domain_product(umap2);
19873 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
19876 template <typename T1, typename T2>
19877 typed::map<pair<T2, T1>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::domain_reverse() const
19879 auto res = isl::basic_map::domain_reverse();
19880 return typed::map<pair<T2, T1>, pair<T1, T2>>(res);
19883 template <typename T1, typename T2>
19884 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::drop_unused_params() const
19886 auto res = isl::basic_map::drop_unused_params();
19887 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19890 template <typename T1, typename T2>
19891 template <typename Range>
19892 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
19894 auto res = isl::basic_map::eq_at(mpa);
19895 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19898 template <typename T1, typename T2>
19899 template <typename Range>
19900 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const
19902 auto res = isl::basic_map::eq_at(mupa);
19903 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
19906 template <typename T1, typename T2>
19907 bool typed::basic_map<pair<T1, T2>, pair<T1, T2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const
19909 auto lambda_test = [&] (isl::map arg0) {
19910 return test(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
19912 return isl::basic_map::every_map(lambda_test);
19915 template <typename T1, typename T2>
19916 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const
19918 auto res = isl::basic_map::extract_map(space);
19919 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19922 template <typename T1, typename T2>
19923 typed::basic_map<Anonymous, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::flatten_domain() const
19925 auto res = isl::basic_map::flatten_domain();
19926 return typed::basic_map<Anonymous, pair<T1, T2>>(res);
19929 template <typename T1, typename T2>
19930 typed::basic_map<pair<T1, T2>, Anonymous> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::flatten_range() const
19932 auto res = isl::basic_map::flatten_range();
19933 return typed::basic_map<pair<T1, T2>, Anonymous>(res);
19936 template <typename T1, typename T2>
19937 void typed::basic_map<pair<T1, T2>, pair<T1, T2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
19939 auto lambda_fn = [&] (isl::basic_map arg0) {
19940 return fn(typed::basic_map<pair<T1, T2>, pair<T1, T2>>(arg0));
19942 return isl::basic_map::foreach_basic_map(lambda_fn);
19945 template <typename T1, typename T2>
19946 void typed::basic_map<pair<T1, T2>, pair<T1, T2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
19948 auto lambda_fn = [&] (isl::map arg0) {
19949 return fn(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
19951 return isl::basic_map::foreach_map(lambda_fn);
19954 template <typename T1, typename T2>
19955 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const
19957 auto res = isl::basic_map::gist(context);
19958 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
19961 template <typename T1, typename T2>
19962 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const
19964 auto res = isl::basic_map::gist(context);
19965 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19968 template <typename T1, typename T2>
19969 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const
19971 auto res = isl::basic_map::gist(context);
19972 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
19975 template <typename T1, typename T2>
19976 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
19978 auto res = isl::basic_map::gist_domain(context);
19979 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19982 template <typename T1, typename T2>
19983 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
19985 auto res = isl::basic_map::gist_domain(uset);
19986 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
19989 template <typename T1, typename T2>
19990 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::gist_params(const typed::set<> &context) const
19992 auto res = isl::basic_map::gist_params(context);
19993 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
19996 template <typename T1, typename T2>
19997 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const
19999 auto res = isl::basic_map::intersect(bmap2);
20000 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20003 template <typename T1, typename T2>
20004 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
20006 auto res = isl::basic_map::intersect(map2);
20007 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20010 template <typename T1, typename T2>
20011 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
20013 auto res = isl::basic_map::intersect(umap2);
20014 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20017 template <typename T1, typename T2>
20018 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const
20020 auto res = isl::basic_map::intersect_domain(bset);
20021 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20024 template <typename T1, typename T2>
20025 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
20027 auto res = isl::basic_map::intersect_domain(set);
20028 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20031 template <typename T1, typename T2>
20032 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
20034 auto res = isl::basic_map::intersect_domain(space);
20035 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20038 template <typename T1, typename T2>
20039 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
20041 auto res = isl::basic_map::intersect_domain(uset);
20042 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20045 template <typename T1, typename T2>
20046 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::point<pair<T1, T2>> &bset) const
20048 auto res = isl::basic_map::intersect_domain(bset);
20049 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20052 template <typename T1, typename T2>
20053 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::set<T1> &domain) const
20055 auto res = isl::basic_map::intersect_domain_wrapped_domain(domain);
20056 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20059 template <typename T1, typename T2>
20060 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const
20062 auto res = isl::basic_map::intersect_domain_wrapped_domain(domain);
20063 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20066 template <typename T1, typename T2>
20067 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::basic_set<> &bset) const
20069 auto res = isl::basic_map::intersect_params(bset);
20070 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20073 template <typename T1, typename T2>
20074 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::set<> &params) const
20076 auto res = isl::basic_map::intersect_params(params);
20077 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20080 template <typename T1, typename T2>
20081 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::point<> &bset) const
20083 auto res = isl::basic_map::intersect_params(bset);
20084 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20087 template <typename T1, typename T2>
20088 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::basic_set<pair<T1, T2>> &bset) const
20090 auto res = isl::basic_map::intersect_range(bset);
20091 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20094 template <typename T1, typename T2>
20095 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::set<pair<T1, T2>> &set) const
20097 auto res = isl::basic_map::intersect_range(set);
20098 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20101 template <typename T1, typename T2>
20102 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::space<pair<T1, T2>> &space) const
20104 auto res = isl::basic_map::intersect_range(space);
20105 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20108 template <typename T1, typename T2>
20109 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::union_set<pair<T1, T2>> &uset) const
20111 auto res = isl::basic_map::intersect_range(uset);
20112 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20115 template <typename T1, typename T2>
20116 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::point<pair<T1, T2>> &bset) const
20118 auto res = isl::basic_map::intersect_range(bset);
20119 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20122 template <typename T1, typename T2>
20123 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::set<T1> &domain) const
20125 auto res = isl::basic_map::intersect_range_wrapped_domain(domain);
20126 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20129 template <typename T1, typename T2>
20130 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::union_set<T1> &domain) const
20132 auto res = isl::basic_map::intersect_range_wrapped_domain(domain);
20133 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20136 template <typename T1, typename T2>
20137 template <typename Range>
20138 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
20140 auto res = isl::basic_map::lex_ge_at(mpa);
20141 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20144 template <typename T1, typename T2>
20145 template <typename Range>
20146 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
20148 auto res = isl::basic_map::lex_gt_at(mpa);
20149 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20152 template <typename T1, typename T2>
20153 template <typename Range>
20154 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
20156 auto res = isl::basic_map::lex_le_at(mpa);
20157 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20160 template <typename T1, typename T2>
20161 template <typename Range>
20162 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
20164 auto res = isl::basic_map::lex_lt_at(mpa);
20165 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20168 template <typename T1, typename T2>
20169 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmax() const
20171 auto res = isl::basic_map::lexmax();
20172 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20175 template <typename T1, typename T2>
20176 typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmax_pw_multi_aff() const
20178 auto res = isl::basic_map::lexmax_pw_multi_aff();
20179 return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
20182 template <typename T1, typename T2>
20183 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmin() const
20185 auto res = isl::basic_map::lexmin();
20186 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20189 template <typename T1, typename T2>
20190 typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lexmin_pw_multi_aff() const
20192 auto res = isl::basic_map::lexmin_pw_multi_aff();
20193 return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
20196 template <typename T1, typename T2>
20197 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
20199 auto res = isl::basic_map::lower_bound(lower);
20200 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20203 template <typename T1, typename T2>
20204 typed::map_list<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::map_list() const
20206 auto res = isl::basic_map::map_list();
20207 return typed::map_list<pair<T1, T2>, pair<T1, T2>>(res);
20210 template <typename T1, typename T2>
20211 typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::max_multi_pw_aff() const
20213 auto res = isl::basic_map::max_multi_pw_aff();
20214 return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
20217 template <typename T1, typename T2>
20218 typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::min_multi_pw_aff() const
20220 auto res = isl::basic_map::min_multi_pw_aff();
20221 return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
20224 template <typename T1, typename T2>
20225 typed::set<> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::params() const
20227 auto res = isl::basic_map::params();
20228 return typed::set<>(res);
20231 template <typename T1, typename T2>
20232 template <typename Domain2>
20233 typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
20235 auto res = isl::basic_map::preimage_domain(ma);
20236 return typed::map<Domain2, pair<T1, T2>>(res);
20239 template <typename T1, typename T2>
20240 template <typename Domain2>
20241 typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
20243 auto res = isl::basic_map::preimage_domain(mpa);
20244 return typed::map<Domain2, pair<T1, T2>>(res);
20247 template <typename T1, typename T2>
20248 template <typename Domain2>
20249 typed::map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
20251 auto res = isl::basic_map::preimage_domain(pma);
20252 return typed::map<Domain2, pair<T1, T2>>(res);
20255 template <typename T1, typename T2>
20256 template <typename Domain2>
20257 typed::union_map<Domain2, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
20259 auto res = isl::basic_map::preimage_domain(upma);
20260 return typed::union_map<Domain2, pair<T1, T2>>(res);
20263 template <typename T1, typename T2>
20264 template <typename Range2>
20265 typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const
20267 auto res = isl::basic_map::preimage_range(ma);
20268 return typed::map<pair<T1, T2>, Range2>(res);
20271 template <typename T1, typename T2>
20272 template <typename Range2>
20273 typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const
20275 auto res = isl::basic_map::preimage_range(pma);
20276 return typed::map<pair<T1, T2>, Range2>(res);
20279 template <typename T1, typename T2>
20280 template <typename Range2>
20281 typed::union_map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const
20283 auto res = isl::basic_map::preimage_range(upma);
20284 return typed::union_map<pair<T1, T2>, Range2>(res);
20287 template <typename T1, typename T2>
20288 template <typename Domain2, typename Range2>
20289 typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::map<Domain2, Range2> &map2) const
20291 auto res = isl::basic_map::product(map2);
20292 return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
20295 template <typename T1, typename T2>
20296 template <typename Domain2, typename Range2>
20297 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::union_map<Domain2, Range2> &umap2) const
20299 auto res = isl::basic_map::product(umap2);
20300 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
20303 template <typename T1, typename T2>
20304 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::project_out_all_params() const
20306 auto res = isl::basic_map::project_out_all_params();
20307 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20310 template <typename T1, typename T2>
20311 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const typed::id<Anonymous> &id) const
20313 auto res = isl::basic_map::project_out_param(id);
20314 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20317 template <typename T1, typename T2>
20318 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const std::string &id) const
20320 auto res = isl::basic_map::project_out_param(id);
20321 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20324 template <typename T1, typename T2>
20325 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const typed::id_list<Anonymous> &list) const
20327 auto res = isl::basic_map::project_out_param(list);
20328 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20331 template <typename T1, typename T2>
20332 typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range() const
20334 auto res = isl::basic_map::range();
20335 return typed::set<pair<T1, T2>>(res);
20338 template <typename T1, typename T2>
20339 typed::map<pair<T1, T2>, T1> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_factor_domain() const
20341 auto res = isl::basic_map::range_factor_domain();
20342 return typed::map<pair<T1, T2>, T1>(res);
20345 template <typename T1, typename T2>
20346 typed::map<pair<T1, T2>, T2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_factor_range() const
20348 auto res = isl::basic_map::range_factor_range();
20349 return typed::map<pair<T1, T2>, T2>(res);
20352 template <typename T1, typename T2>
20353 typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_lattice_tile() const
20355 auto res = isl::basic_map::range_lattice_tile();
20356 return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
20359 template <typename T1, typename T2>
20360 typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_map() const
20362 auto res = isl::basic_map::range_map();
20363 return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
20366 template <typename T1, typename T2>
20367 template <typename Range2>
20368 typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::map<pair<T1, T2>, Range2> &map2) const
20370 auto res = isl::basic_map::range_product(map2);
20371 return typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
20374 template <typename T1, typename T2>
20375 template <typename Range2>
20376 typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
20378 auto res = isl::basic_map::range_product(umap2);
20379 return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
20382 template <typename T1, typename T2>
20383 typed::map<pair<T1, T2>, pair<T2, T1>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_reverse() const
20385 auto res = isl::basic_map::range_reverse();
20386 return typed::map<pair<T1, T2>, pair<T2, T1>>(res);
20389 template <typename T1, typename T2>
20390 typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::range_simple_fixed_box_hull() const
20392 auto res = isl::basic_map::range_simple_fixed_box_hull();
20393 return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
20396 template <typename T1, typename T2>
20397 typed::basic_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::reverse() const
20399 auto res = isl::basic_map::reverse();
20400 return typed::basic_map<pair<T1, T2>, pair<T1, T2>>(res);
20403 template <typename T1, typename T2>
20404 typed::space<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::space() const
20406 auto res = isl::basic_map::space();
20407 return typed::space<pair<T1, T2>, pair<T1, T2>>(res);
20410 template <typename T1, typename T2>
20411 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
20413 auto res = isl::basic_map::subtract(map2);
20414 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20417 template <typename T1, typename T2>
20418 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
20420 auto res = isl::basic_map::subtract(umap2);
20421 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20424 template <typename T1, typename T2>
20425 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
20427 auto res = isl::basic_map::subtract_domain(dom);
20428 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20431 template <typename T1, typename T2>
20432 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::union_set<pair<T1, T2>> &dom) const
20434 auto res = isl::basic_map::subtract_range(dom);
20435 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20438 template <typename T1, typename T2>
20439 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::to_union_map() const
20441 auto res = isl::basic_map::to_union_map();
20442 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20445 template <typename T1, typename T2>
20446 typed::map<pair<pair<T1, T2>, T1>, T2> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::uncurry() const
20448 auto res = isl::basic_map::uncurry();
20449 return typed::map<pair<pair<T1, T2>, T1>, T2>(res);
20452 template <typename T1, typename T2>
20453 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap2) const
20455 auto res = isl::basic_map::unite(bmap2);
20456 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20459 template <typename T1, typename T2>
20460 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
20462 auto res = isl::basic_map::unite(map2);
20463 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20466 template <typename T1, typename T2>
20467 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
20469 auto res = isl::basic_map::unite(umap2);
20470 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
20473 template <typename T1, typename T2>
20474 typed::map<pair<T1, T2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
20476 auto res = isl::basic_map::upper_bound(upper);
20477 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
20480 template <typename T1, typename T2>
20481 typed::set<pair<pair<T1, T2>, pair<T1, T2>>> typed::basic_map<pair<T1, T2>, pair<T1, T2>>::wrap() const
20483 auto res = isl::basic_map::wrap();
20484 return typed::set<pair<pair<T1, T2>, pair<T1, T2>>>(res);
20487 template <typename T1, typename T2, typename Range, typename Range2>
20488 typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::basic_map(const isl::ctx &ctx, const std::string &str)
20489 : isl::basic_map(ctx, str)
20493 template <typename T1, typename T2, typename Range, typename Range2>
20494 template <typename Domain2>
20495 typed::basic_map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &bmap2) const
20497 auto res = isl::basic_map::apply_domain(bmap2);
20498 return typed::basic_map<Domain2, pair<Range, Range2>>(res);
20501 template <typename T1, typename T2, typename Range, typename Range2>
20502 template <typename Domain2>
20503 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
20505 auto res = isl::basic_map::apply_domain(map2);
20506 return typed::map<Domain2, pair<Range, Range2>>(res);
20509 template <typename T1, typename T2, typename Range, typename Range2>
20510 template <typename Domain2>
20511 typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
20513 auto res = isl::basic_map::apply_domain(umap2);
20514 return typed::union_map<Domain2, pair<Range, Range2>>(res);
20517 template <typename T1, typename T2, typename Range, typename Range2>
20518 template <typename Arg2>
20519 typed::basic_map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &bmap2) const
20521 auto res = isl::basic_map::apply_range(bmap2);
20522 return typed::basic_map<pair<T1, T2>, Arg2>(res);
20525 template <typename T1, typename T2, typename Range, typename Range2>
20526 template <typename Arg2>
20527 typed::map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const
20529 auto res = isl::basic_map::apply_range(map2);
20530 return typed::map<pair<T1, T2>, Arg2>(res);
20533 template <typename T1, typename T2, typename Range, typename Range2>
20534 template <typename Arg2>
20535 typed::union_map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const
20537 auto res = isl::basic_map::apply_range(umap2);
20538 return typed::union_map<pair<T1, T2>, Arg2>(res);
20541 template <typename T1, typename T2, typename Range, typename Range2>
20542 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_map() const
20544 auto res = isl::basic_map::as_map();
20545 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20548 template <typename T1, typename T2, typename Range, typename Range2>
20549 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
20551 auto res = isl::basic_map::as_multi_union_pw_aff();
20552 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
20555 template <typename T1, typename T2, typename Range, typename Range2>
20556 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
20558 auto res = isl::basic_map::as_pw_multi_aff();
20559 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
20562 template <typename T1, typename T2, typename Range, typename Range2>
20563 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::as_union_pw_multi_aff() const
20565 auto res = isl::basic_map::as_union_pw_multi_aff();
20566 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
20569 template <typename T1, typename T2, typename Range, typename Range2>
20570 typed::set<pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
20572 auto res = isl::basic_map::bind_domain(tuple);
20573 return typed::set<pair<Range, Range2>>(res);
20576 template <typename T1, typename T2, typename Range, typename Range2>
20577 typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
20579 auto res = isl::basic_map::bind_range(tuple);
20580 return typed::set<pair<T1, T2>>(res);
20583 template <typename T1, typename T2, typename Range, typename Range2>
20584 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
20586 auto res = isl::basic_map::coalesce();
20587 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20590 template <typename T1, typename T2, typename Range, typename Range2>
20591 typed::map<T1, pair<T2, pair<Range, Range2>>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::curry() const
20593 auto res = isl::basic_map::curry();
20594 return typed::map<T1, pair<T2, pair<Range, Range2>>>(res);
20597 template <typename T1, typename T2, typename Range, typename Range2>
20598 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::detect_equalities() const
20600 auto res = isl::basic_map::detect_equalities();
20601 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20604 template <typename T1, typename T2, typename Range, typename Range2>
20605 typed::set<pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain() const
20607 auto res = isl::basic_map::domain();
20608 return typed::set<pair<T1, T2>>(res);
20611 template <typename T1, typename T2, typename Range, typename Range2>
20612 typed::map<T1, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_domain() const
20614 auto res = isl::basic_map::domain_factor_domain();
20615 return typed::map<T1, pair<Range, Range2>>(res);
20618 template <typename T1, typename T2, typename Range, typename Range2>
20619 typed::map<T2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_range() const
20621 auto res = isl::basic_map::domain_factor_range();
20622 return typed::map<T2, pair<Range, Range2>>(res);
20625 template <typename T1, typename T2, typename Range, typename Range2>
20626 typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_map() const
20628 auto res = isl::basic_map::domain_map();
20629 return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
20632 template <typename T1, typename T2, typename Range, typename Range2>
20633 typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
20635 auto res = isl::basic_map::domain_map_union_pw_multi_aff();
20636 return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
20639 template <typename T1, typename T2, typename Range, typename Range2>
20640 template <typename Domain2>
20641 typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
20643 auto res = isl::basic_map::domain_product(map2);
20644 return typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
20647 template <typename T1, typename T2, typename Range, typename Range2>
20648 template <typename Domain2>
20649 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
20651 auto res = isl::basic_map::domain_product(umap2);
20652 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
20655 template <typename T1, typename T2, typename Range, typename Range2>
20656 typed::map<pair<T2, T1>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::domain_reverse() const
20658 auto res = isl::basic_map::domain_reverse();
20659 return typed::map<pair<T2, T1>, pair<Range, Range2>>(res);
20662 template <typename T1, typename T2, typename Range, typename Range2>
20663 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::drop_unused_params() const
20665 auto res = isl::basic_map::drop_unused_params();
20666 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20669 template <typename T1, typename T2, typename Range, typename Range2>
20670 bool typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const
20672 auto lambda_test = [&] (isl::map arg0) {
20673 return test(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
20675 return isl::basic_map::every_map(lambda_test);
20678 template <typename T1, typename T2, typename Range, typename Range2>
20679 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
20681 auto res = isl::basic_map::extract_map(space);
20682 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20685 template <typename T1, typename T2, typename Range, typename Range2>
20686 typed::basic_map<Anonymous, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::flatten_domain() const
20688 auto res = isl::basic_map::flatten_domain();
20689 return typed::basic_map<Anonymous, pair<Range, Range2>>(res);
20692 template <typename T1, typename T2, typename Range, typename Range2>
20693 typed::basic_map<pair<T1, T2>, Anonymous> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::flatten_range() const
20695 auto res = isl::basic_map::flatten_range();
20696 return typed::basic_map<pair<T1, T2>, Anonymous>(res);
20699 template <typename T1, typename T2, typename Range, typename Range2>
20700 void typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
20702 auto lambda_fn = [&] (isl::basic_map arg0) {
20703 return fn(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(arg0));
20705 return isl::basic_map::foreach_basic_map(lambda_fn);
20708 template <typename T1, typename T2, typename Range, typename Range2>
20709 void typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
20711 auto lambda_fn = [&] (isl::map arg0) {
20712 return fn(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
20714 return isl::basic_map::foreach_map(lambda_fn);
20717 template <typename T1, typename T2, typename Range, typename Range2>
20718 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const
20720 auto res = isl::basic_map::gist(context);
20721 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20724 template <typename T1, typename T2, typename Range, typename Range2>
20725 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const
20727 auto res = isl::basic_map::gist(context);
20728 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20731 template <typename T1, typename T2, typename Range, typename Range2>
20732 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const
20734 auto res = isl::basic_map::gist(context);
20735 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20738 template <typename T1, typename T2, typename Range, typename Range2>
20739 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
20741 auto res = isl::basic_map::gist_domain(context);
20742 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20745 template <typename T1, typename T2, typename Range, typename Range2>
20746 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
20748 auto res = isl::basic_map::gist_domain(uset);
20749 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20752 template <typename T1, typename T2, typename Range, typename Range2>
20753 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::set<> &context) const
20755 auto res = isl::basic_map::gist_params(context);
20756 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20759 template <typename T1, typename T2, typename Range, typename Range2>
20760 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const
20762 auto res = isl::basic_map::intersect(bmap2);
20763 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20766 template <typename T1, typename T2, typename Range, typename Range2>
20767 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
20769 auto res = isl::basic_map::intersect(map2);
20770 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20773 template <typename T1, typename T2, typename Range, typename Range2>
20774 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
20776 auto res = isl::basic_map::intersect(umap2);
20777 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20780 template <typename T1, typename T2, typename Range, typename Range2>
20781 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &bset) const
20783 auto res = isl::basic_map::intersect_domain(bset);
20784 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20787 template <typename T1, typename T2, typename Range, typename Range2>
20788 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
20790 auto res = isl::basic_map::intersect_domain(set);
20791 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20794 template <typename T1, typename T2, typename Range, typename Range2>
20795 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
20797 auto res = isl::basic_map::intersect_domain(space);
20798 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20801 template <typename T1, typename T2, typename Range, typename Range2>
20802 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
20804 auto res = isl::basic_map::intersect_domain(uset);
20805 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20808 template <typename T1, typename T2, typename Range, typename Range2>
20809 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::point<pair<T1, T2>> &bset) const
20811 auto res = isl::basic_map::intersect_domain(bset);
20812 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20815 template <typename T1, typename T2, typename Range, typename Range2>
20816 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::set<T1> &domain) const
20818 auto res = isl::basic_map::intersect_domain_wrapped_domain(domain);
20819 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20822 template <typename T1, typename T2, typename Range, typename Range2>
20823 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const
20825 auto res = isl::basic_map::intersect_domain_wrapped_domain(domain);
20826 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20829 template <typename T1, typename T2, typename Range, typename Range2>
20830 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &bset) const
20832 auto res = isl::basic_map::intersect_params(bset);
20833 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20836 template <typename T1, typename T2, typename Range, typename Range2>
20837 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
20839 auto res = isl::basic_map::intersect_params(params);
20840 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20843 template <typename T1, typename T2, typename Range, typename Range2>
20844 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &bset) const
20846 auto res = isl::basic_map::intersect_params(bset);
20847 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20850 template <typename T1, typename T2, typename Range, typename Range2>
20851 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &bset) const
20853 auto res = isl::basic_map::intersect_range(bset);
20854 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20857 template <typename T1, typename T2, typename Range, typename Range2>
20858 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
20860 auto res = isl::basic_map::intersect_range(set);
20861 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20864 template <typename T1, typename T2, typename Range, typename Range2>
20865 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
20867 auto res = isl::basic_map::intersect_range(space);
20868 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20871 template <typename T1, typename T2, typename Range, typename Range2>
20872 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
20874 auto res = isl::basic_map::intersect_range(uset);
20875 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20878 template <typename T1, typename T2, typename Range, typename Range2>
20879 typed::basic_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &bset) const
20881 auto res = isl::basic_map::intersect_range(bset);
20882 return typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(res);
20885 template <typename T1, typename T2, typename Range, typename Range2>
20886 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::set<Range> &domain) const
20888 auto res = isl::basic_map::intersect_range_wrapped_domain(domain);
20889 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20892 template <typename T1, typename T2, typename Range, typename Range2>
20893 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const
20895 auto res = isl::basic_map::intersect_range_wrapped_domain(domain);
20896 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
20899 template <typename T1, typename T2, typename Range, typename Range2>
20900 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmax() const
20902 auto res = isl::basic_map::lexmax();
20903 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20906 template <typename T1, typename T2, typename Range, typename Range2>
20907 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmax_pw_multi_aff() const
20909 auto res = isl::basic_map::lexmax_pw_multi_aff();
20910 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
20913 template <typename T1, typename T2, typename Range, typename Range2>
20914 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmin() const
20916 auto res = isl::basic_map::lexmin();
20917 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20920 template <typename T1, typename T2, typename Range, typename Range2>
20921 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lexmin_pw_multi_aff() const
20923 auto res = isl::basic_map::lexmin_pw_multi_aff();
20924 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
20927 template <typename T1, typename T2, typename Range, typename Range2>
20928 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
20930 auto res = isl::basic_map::lower_bound(lower);
20931 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
20934 template <typename T1, typename T2, typename Range, typename Range2>
20935 typed::map_list<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::map_list() const
20937 auto res = isl::basic_map::map_list();
20938 return typed::map_list<pair<T1, T2>, pair<Range, Range2>>(res);
20941 template <typename T1, typename T2, typename Range, typename Range2>
20942 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::max_multi_pw_aff() const
20944 auto res = isl::basic_map::max_multi_pw_aff();
20945 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
20948 template <typename T1, typename T2, typename Range, typename Range2>
20949 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::min_multi_pw_aff() const
20951 auto res = isl::basic_map::min_multi_pw_aff();
20952 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
20955 template <typename T1, typename T2, typename Range, typename Range2>
20956 typed::set<> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::params() const
20958 auto res = isl::basic_map::params();
20959 return typed::set<>(res);
20962 template <typename T1, typename T2, typename Range, typename Range2>
20963 template <typename Domain2>
20964 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
20966 auto res = isl::basic_map::preimage_domain(ma);
20967 return typed::map<Domain2, pair<Range, Range2>>(res);
20970 template <typename T1, typename T2, typename Range, typename Range2>
20971 template <typename Domain2>
20972 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
20974 auto res = isl::basic_map::preimage_domain(mpa);
20975 return typed::map<Domain2, pair<Range, Range2>>(res);
20978 template <typename T1, typename T2, typename Range, typename Range2>
20979 template <typename Domain2>
20980 typed::map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
20982 auto res = isl::basic_map::preimage_domain(pma);
20983 return typed::map<Domain2, pair<Range, Range2>>(res);
20986 template <typename T1, typename T2, typename Range, typename Range2>
20987 template <typename Domain2>
20988 typed::union_map<Domain2, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
20990 auto res = isl::basic_map::preimage_domain(upma);
20991 return typed::union_map<Domain2, pair<Range, Range2>>(res);
20994 template <typename T1, typename T2, typename Range, typename Range2>
20995 template <typename Arg2>
20996 typed::map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const
20998 auto res = isl::basic_map::preimage_range(ma);
20999 return typed::map<pair<T1, T2>, Arg2>(res);
21002 template <typename T1, typename T2, typename Range, typename Range2>
21003 template <typename Arg2>
21004 typed::map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const
21006 auto res = isl::basic_map::preimage_range(pma);
21007 return typed::map<pair<T1, T2>, Arg2>(res);
21010 template <typename T1, typename T2, typename Range, typename Range2>
21011 template <typename Arg2>
21012 typed::union_map<pair<T1, T2>, Arg2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const
21014 auto res = isl::basic_map::preimage_range(upma);
21015 return typed::union_map<pair<T1, T2>, Arg2>(res);
21018 template <typename T1, typename T2, typename Range, typename Range2>
21019 template <typename Domain2, typename Arg2>
21020 typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::map<Domain2, Arg2> &map2) const
21022 auto res = isl::basic_map::product(map2);
21023 return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
21026 template <typename T1, typename T2, typename Range, typename Range2>
21027 template <typename Domain2, typename Arg2>
21028 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg2> &umap2) const
21030 auto res = isl::basic_map::product(umap2);
21031 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
21034 template <typename T1, typename T2, typename Range, typename Range2>
21035 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::project_out_all_params() const
21037 auto res = isl::basic_map::project_out_all_params();
21038 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21041 template <typename T1, typename T2, typename Range, typename Range2>
21042 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const typed::id<Anonymous> &id) const
21044 auto res = isl::basic_map::project_out_param(id);
21045 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21048 template <typename T1, typename T2, typename Range, typename Range2>
21049 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const std::string &id) const
21051 auto res = isl::basic_map::project_out_param(id);
21052 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21055 template <typename T1, typename T2, typename Range, typename Range2>
21056 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const typed::id_list<Anonymous> &list) const
21058 auto res = isl::basic_map::project_out_param(list);
21059 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21062 template <typename T1, typename T2, typename Range, typename Range2>
21063 typed::set<pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range() const
21065 auto res = isl::basic_map::range();
21066 return typed::set<pair<Range, Range2>>(res);
21069 template <typename T1, typename T2, typename Range, typename Range2>
21070 typed::map<pair<T1, T2>, Range> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
21072 auto res = isl::basic_map::range_factor_domain();
21073 return typed::map<pair<T1, T2>, Range>(res);
21076 template <typename T1, typename T2, typename Range, typename Range2>
21077 typed::map<pair<T1, T2>, Range2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
21079 auto res = isl::basic_map::range_factor_range();
21080 return typed::map<pair<T1, T2>, Range2>(res);
21083 template <typename T1, typename T2, typename Range, typename Range2>
21084 typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_lattice_tile() const
21086 auto res = isl::basic_map::range_lattice_tile();
21087 return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
21090 template <typename T1, typename T2, typename Range, typename Range2>
21091 typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_map() const
21093 auto res = isl::basic_map::range_map();
21094 return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
21097 template <typename T1, typename T2, typename Range, typename Range2>
21098 template <typename Arg2>
21099 typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const
21101 auto res = isl::basic_map::range_product(map2);
21102 return typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
21105 template <typename T1, typename T2, typename Range, typename Range2>
21106 template <typename Arg2>
21107 typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const
21109 auto res = isl::basic_map::range_product(umap2);
21110 return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
21113 template <typename T1, typename T2, typename Range, typename Range2>
21114 typed::map<pair<T1, T2>, pair<Range2, Range>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
21116 auto res = isl::basic_map::range_reverse();
21117 return typed::map<pair<T1, T2>, pair<Range2, Range>>(res);
21120 template <typename T1, typename T2, typename Range, typename Range2>
21121 typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::range_simple_fixed_box_hull() const
21123 auto res = isl::basic_map::range_simple_fixed_box_hull();
21124 return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
21127 template <typename T1, typename T2, typename Range, typename Range2>
21128 typed::basic_map<pair<Range, Range2>, pair<T1, T2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::reverse() const
21130 auto res = isl::basic_map::reverse();
21131 return typed::basic_map<pair<Range, Range2>, pair<T1, T2>>(res);
21134 template <typename T1, typename T2, typename Range, typename Range2>
21135 typed::space<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::space() const
21137 auto res = isl::basic_map::space();
21138 return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
21141 template <typename T1, typename T2, typename Range, typename Range2>
21142 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
21144 auto res = isl::basic_map::subtract(map2);
21145 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21148 template <typename T1, typename T2, typename Range, typename Range2>
21149 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
21151 auto res = isl::basic_map::subtract(umap2);
21152 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
21155 template <typename T1, typename T2, typename Range, typename Range2>
21156 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
21158 auto res = isl::basic_map::subtract_domain(dom);
21159 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
21162 template <typename T1, typename T2, typename Range, typename Range2>
21163 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
21165 auto res = isl::basic_map::subtract_range(dom);
21166 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
21169 template <typename T1, typename T2, typename Range, typename Range2>
21170 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::to_union_map() const
21172 auto res = isl::basic_map::to_union_map();
21173 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
21176 template <typename T1, typename T2, typename Range, typename Range2>
21177 typed::map<pair<pair<T1, T2>, Range>, Range2> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
21179 auto res = isl::basic_map::uncurry();
21180 return typed::map<pair<pair<T1, T2>, Range>, Range2>(res);
21183 template <typename T1, typename T2, typename Range, typename Range2>
21184 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap2) const
21186 auto res = isl::basic_map::unite(bmap2);
21187 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21190 template <typename T1, typename T2, typename Range, typename Range2>
21191 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
21193 auto res = isl::basic_map::unite(map2);
21194 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21197 template <typename T1, typename T2, typename Range, typename Range2>
21198 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
21200 auto res = isl::basic_map::unite(umap2);
21201 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
21204 template <typename T1, typename T2, typename Range, typename Range2>
21205 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
21207 auto res = isl::basic_map::upper_bound(upper);
21208 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
21211 template <typename T1, typename T2, typename Range, typename Range2>
21212 typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> typed::basic_map<pair<T1, T2>, pair<Range, Range2>>::wrap() const
21214 auto res = isl::basic_map::wrap();
21215 return typed::set<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
21218 typed::basic_set<>::basic_set(const typed::point<> &pnt)
21219 : isl::basic_set(pnt)
21223 typed::basic_set<>::basic_set(const isl::ctx &ctx, const std::string &str)
21224 : isl::basic_set(ctx, str)
21228 typed::set<> typed::basic_set<>::coalesce() const
21230 auto res = isl::basic_set::coalesce();
21231 return typed::set<>(res);
21234 typed::basic_set<> typed::basic_set<>::detect_equalities() const
21236 auto res = isl::basic_set::detect_equalities();
21237 return typed::basic_set<>(res);
21240 typed::set<> typed::basic_set<>::drop_unused_params() const
21242 auto res = isl::basic_set::drop_unused_params();
21243 return typed::set<>(res);
21246 bool typed::basic_set<>::every_set(const std::function<bool(typed::set<>)> &test) const
21248 auto lambda_test = [&] (isl::set arg0) {
21249 return test(typed::set<>(arg0));
21251 return isl::basic_set::every_set(lambda_test);
21254 typed::set<> typed::basic_set<>::extract_set(const typed::space<> &space) const
21256 auto res = isl::basic_set::extract_set(space);
21257 return typed::set<>(res);
21260 void typed::basic_set<>::foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const
21262 auto lambda_fn = [&] (isl::basic_set arg0) {
21263 return fn(typed::basic_set<>(arg0));
21265 return isl::basic_set::foreach_basic_set(lambda_fn);
21268 void typed::basic_set<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
21270 auto lambda_fn = [&] (isl::point arg0) {
21271 return fn(typed::point<>(arg0));
21273 return isl::basic_set::foreach_point(lambda_fn);
21276 void typed::basic_set<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
21278 auto lambda_fn = [&] (isl::set arg0) {
21279 return fn(typed::set<>(arg0));
21281 return isl::basic_set::foreach_set(lambda_fn);
21284 typed::basic_set<> typed::basic_set<>::gist(const typed::basic_set<> &context) const
21286 auto res = isl::basic_set::gist(context);
21287 return typed::basic_set<>(res);
21290 typed::set<> typed::basic_set<>::gist(const typed::set<> &context) const
21292 auto res = isl::basic_set::gist(context);
21293 return typed::set<>(res);
21296 typed::union_set<> typed::basic_set<>::gist(const typed::union_set<> &context) const
21298 auto res = isl::basic_set::gist(context);
21299 return typed::union_set<>(res);
21302 typed::basic_set<> typed::basic_set<>::gist(const typed::point<> &context) const
21304 auto res = isl::basic_set::gist(context);
21305 return typed::basic_set<>(res);
21308 typed::pw_aff<Anonymous> typed::basic_set<>::indicator_function() const
21310 auto res = isl::basic_set::indicator_function();
21311 return typed::pw_aff<Anonymous>(res);
21314 typed::basic_set<> typed::basic_set<>::intersect(const typed::basic_set<> &bset2) const
21316 auto res = isl::basic_set::intersect(bset2);
21317 return typed::basic_set<>(res);
21320 typed::set<> typed::basic_set<>::intersect(const typed::set<> &set2) const
21322 auto res = isl::basic_set::intersect(set2);
21323 return typed::set<>(res);
21326 typed::union_set<> typed::basic_set<>::intersect(const typed::union_set<> &uset2) const
21328 auto res = isl::basic_set::intersect(uset2);
21329 return typed::union_set<>(res);
21332 typed::basic_set<> typed::basic_set<>::intersect(const typed::point<> &bset2) const
21334 auto res = isl::basic_set::intersect(bset2);
21335 return typed::basic_set<>(res);
21338 typed::pw_aff<Anonymous> typed::basic_set<>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
21340 auto res = isl::basic_set::param_pw_aff_on_domain(id);
21341 return typed::pw_aff<Anonymous>(res);
21344 typed::pw_aff<Anonymous> typed::basic_set<>::param_pw_aff_on_domain(const std::string &id) const
21346 auto res = isl::basic_set::param_pw_aff_on_domain(id);
21347 return typed::pw_aff<Anonymous>(res);
21350 typed::set<> typed::basic_set<>::project_out_all_params() const
21352 auto res = isl::basic_set::project_out_all_params();
21353 return typed::set<>(res);
21356 typed::set<> typed::basic_set<>::project_out_param(const typed::id<Anonymous> &id) const
21358 auto res = isl::basic_set::project_out_param(id);
21359 return typed::set<>(res);
21362 typed::set<> typed::basic_set<>::project_out_param(const std::string &id) const
21364 auto res = isl::basic_set::project_out_param(id);
21365 return typed::set<>(res);
21368 typed::set<> typed::basic_set<>::project_out_param(const typed::id_list<Anonymous> &list) const
21370 auto res = isl::basic_set::project_out_param(list);
21371 return typed::set<>(res);
21374 typed::pw_aff<Anonymous> typed::basic_set<>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
21376 auto res = isl::basic_set::pw_aff_on_domain(v);
21377 return typed::pw_aff<Anonymous>(res);
21380 typed::pw_aff<Anonymous> typed::basic_set<>::pw_aff_on_domain(long v) const
21382 auto res = isl::basic_set::pw_aff_on_domain(v);
21383 return typed::pw_aff<Anonymous>(res);
21386 template <typename Domain>
21387 typed::pw_multi_aff<Domain> typed::basic_set<>::pw_multi_aff_on_domain(const typed::multi_val<Domain> &mv) const
21389 auto res = isl::basic_set::pw_multi_aff_on_domain(mv);
21390 return typed::pw_multi_aff<Domain>(res);
21393 typed::set_list<> typed::basic_set<>::set_list() const
21395 auto res = isl::basic_set::set_list();
21396 return typed::set_list<>(res);
21399 typed::space<> typed::basic_set<>::space() const
21401 auto res = isl::basic_set::space();
21402 return typed::space<>(res);
21405 typed::set<> typed::basic_set<>::subtract(const typed::set<> &set2) const
21407 auto res = isl::basic_set::subtract(set2);
21408 return typed::set<>(res);
21411 typed::union_set<> typed::basic_set<>::subtract(const typed::union_set<> &uset2) const
21413 auto res = isl::basic_set::subtract(uset2);
21414 return typed::union_set<>(res);
21417 typed::set<> typed::basic_set<>::to_set() const
21419 auto res = isl::basic_set::to_set();
21420 return typed::set<>(res);
21423 typed::union_set<> typed::basic_set<>::to_union_set() const
21425 auto res = isl::basic_set::to_union_set();
21426 return typed::union_set<>(res);
21429 template <typename Domain>
21430 typed::set<Domain> typed::basic_set<>::unbind_params(const typed::multi_id<Domain> &tuple) const
21432 auto res = isl::basic_set::unbind_params(tuple);
21433 return typed::set<Domain>(res);
21436 typed::set<> typed::basic_set<>::unite(const typed::basic_set<> &bset2) const
21438 auto res = isl::basic_set::unite(bset2);
21439 return typed::set<>(res);
21442 typed::set<> typed::basic_set<>::unite(const typed::set<> &set2) const
21444 auto res = isl::basic_set::unite(set2);
21445 return typed::set<>(res);
21448 typed::union_set<> typed::basic_set<>::unite(const typed::union_set<> &uset2) const
21450 auto res = isl::basic_set::unite(uset2);
21451 return typed::union_set<>(res);
21454 typed::set<> typed::basic_set<>::unite(const typed::point<> &bset2) const
21456 auto res = isl::basic_set::unite(bset2);
21457 return typed::set<>(res);
21460 template <typename Domain>
21461 typed::basic_set<Domain>::basic_set(const typed::point<Domain> &pnt)
21462 : isl::basic_set(pnt)
21466 template <typename Domain>
21467 typed::basic_set<Domain>::basic_set(const isl::ctx &ctx, const std::string &str)
21468 : isl::basic_set(ctx, str)
21472 template <typename Domain>
21473 template <typename Range>
21474 typed::basic_set<Range> typed::basic_set<Domain>::apply(const typed::basic_map<Domain, Range> &bmap) const
21476 auto res = isl::basic_set::apply(bmap);
21477 return typed::basic_set<Range>(res);
21480 template <typename Domain>
21481 template <typename Range>
21482 typed::set<Range> typed::basic_set<Domain>::apply(const typed::map<Domain, Range> &map) const
21484 auto res = isl::basic_set::apply(map);
21485 return typed::set<Range>(res);
21488 template <typename Domain>
21489 template <typename Range>
21490 typed::union_set<Range> typed::basic_set<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
21492 auto res = isl::basic_set::apply(umap);
21493 return typed::union_set<Range>(res);
21496 template <typename Domain>
21497 typed::pw_multi_aff<Domain> typed::basic_set<Domain>::as_pw_multi_aff() const
21499 auto res = isl::basic_set::as_pw_multi_aff();
21500 return typed::pw_multi_aff<Domain>(res);
21503 template <typename Domain>
21504 typed::set<Domain> typed::basic_set<Domain>::as_set() const
21506 auto res = isl::basic_set::as_set();
21507 return typed::set<Domain>(res);
21510 template <typename Domain>
21511 typed::set<> typed::basic_set<Domain>::bind(const typed::multi_id<Domain> &tuple) const
21513 auto res = isl::basic_set::bind(tuple);
21514 return typed::set<>(res);
21517 template <typename Domain>
21518 typed::set<Domain> typed::basic_set<Domain>::coalesce() const
21520 auto res = isl::basic_set::coalesce();
21521 return typed::set<Domain>(res);
21524 template <typename Domain>
21525 typed::basic_set<Domain> typed::basic_set<Domain>::detect_equalities() const
21527 auto res = isl::basic_set::detect_equalities();
21528 return typed::basic_set<Domain>(res);
21531 template <typename Domain>
21532 typed::set<Domain> typed::basic_set<Domain>::drop_unused_params() const
21534 auto res = isl::basic_set::drop_unused_params();
21535 return typed::set<Domain>(res);
21538 template <typename Domain>
21539 bool typed::basic_set<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
21541 auto lambda_test = [&] (isl::set arg0) {
21542 return test(typed::set<Domain>(arg0));
21544 return isl::basic_set::every_set(lambda_test);
21547 template <typename Domain>
21548 typed::set<Domain> typed::basic_set<Domain>::extract_set(const typed::space<Domain> &space) const
21550 auto res = isl::basic_set::extract_set(space);
21551 return typed::set<Domain>(res);
21554 template <typename Domain>
21555 void typed::basic_set<Domain>::foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const
21557 auto lambda_fn = [&] (isl::basic_set arg0) {
21558 return fn(typed::basic_set<Domain>(arg0));
21560 return isl::basic_set::foreach_basic_set(lambda_fn);
21563 template <typename Domain>
21564 void typed::basic_set<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
21566 auto lambda_fn = [&] (isl::point arg0) {
21567 return fn(typed::point<Domain>(arg0));
21569 return isl::basic_set::foreach_point(lambda_fn);
21572 template <typename Domain>
21573 void typed::basic_set<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
21575 auto lambda_fn = [&] (isl::set arg0) {
21576 return fn(typed::set<Domain>(arg0));
21578 return isl::basic_set::foreach_set(lambda_fn);
21581 template <typename Domain>
21582 typed::basic_set<Domain> typed::basic_set<Domain>::gist(const typed::basic_set<Domain> &context) const
21584 auto res = isl::basic_set::gist(context);
21585 return typed::basic_set<Domain>(res);
21588 template <typename Domain>
21589 typed::set<Domain> typed::basic_set<Domain>::gist(const typed::set<Domain> &context) const
21591 auto res = isl::basic_set::gist(context);
21592 return typed::set<Domain>(res);
21595 template <typename Domain>
21596 typed::union_set<Domain> typed::basic_set<Domain>::gist(const typed::union_set<Domain> &context) const
21598 auto res = isl::basic_set::gist(context);
21599 return typed::union_set<Domain>(res);
21602 template <typename Domain>
21603 typed::basic_set<Domain> typed::basic_set<Domain>::gist(const typed::point<Domain> &context) const
21605 auto res = isl::basic_set::gist(context);
21606 return typed::basic_set<Domain>(res);
21609 template <typename Domain>
21610 typed::set<Domain> typed::basic_set<Domain>::gist_params(const typed::set<> &context) const
21612 auto res = isl::basic_set::gist_params(context);
21613 return typed::set<Domain>(res);
21616 template <typename Domain>
21617 typed::map<Domain, Domain> typed::basic_set<Domain>::identity() const
21619 auto res = isl::basic_set::identity();
21620 return typed::map<Domain, Domain>(res);
21623 template <typename Domain>
21624 typed::pw_aff<Domain, Anonymous> typed::basic_set<Domain>::indicator_function() const
21626 auto res = isl::basic_set::indicator_function();
21627 return typed::pw_aff<Domain, Anonymous>(res);
21630 template <typename Domain>
21631 template <typename Arg1>
21632 typed::map<Arg1, Domain> typed::basic_set<Domain>::insert_domain(const typed::space<Arg1> &domain) const
21634 auto res = isl::basic_set::insert_domain(domain);
21635 return typed::map<Arg1, Domain>(res);
21638 template <typename Domain>
21639 typed::basic_set<Domain> typed::basic_set<Domain>::intersect(const typed::basic_set<Domain> &bset2) const
21641 auto res = isl::basic_set::intersect(bset2);
21642 return typed::basic_set<Domain>(res);
21645 template <typename Domain>
21646 typed::set<Domain> typed::basic_set<Domain>::intersect(const typed::set<Domain> &set2) const
21648 auto res = isl::basic_set::intersect(set2);
21649 return typed::set<Domain>(res);
21652 template <typename Domain>
21653 typed::union_set<Domain> typed::basic_set<Domain>::intersect(const typed::union_set<Domain> &uset2) const
21655 auto res = isl::basic_set::intersect(uset2);
21656 return typed::union_set<Domain>(res);
21659 template <typename Domain>
21660 typed::basic_set<Domain> typed::basic_set<Domain>::intersect(const typed::point<Domain> &bset2) const
21662 auto res = isl::basic_set::intersect(bset2);
21663 return typed::basic_set<Domain>(res);
21666 template <typename Domain>
21667 typed::basic_set<Domain> typed::basic_set<Domain>::intersect_params(const typed::basic_set<> &bset2) const
21669 auto res = isl::basic_set::intersect_params(bset2);
21670 return typed::basic_set<Domain>(res);
21673 template <typename Domain>
21674 typed::set<Domain> typed::basic_set<Domain>::intersect_params(const typed::set<> &params) const
21676 auto res = isl::basic_set::intersect_params(params);
21677 return typed::set<Domain>(res);
21680 template <typename Domain>
21681 typed::basic_set<Domain> typed::basic_set<Domain>::intersect_params(const typed::point<> &bset2) const
21683 auto res = isl::basic_set::intersect_params(bset2);
21684 return typed::basic_set<Domain>(res);
21687 template <typename Domain>
21688 typed::fixed_box<Domain> typed::basic_set<Domain>::lattice_tile() const
21690 auto res = isl::basic_set::lattice_tile();
21691 return typed::fixed_box<Domain>(res);
21694 template <typename Domain>
21695 typed::set<Domain> typed::basic_set<Domain>::lexmax() const
21697 auto res = isl::basic_set::lexmax();
21698 return typed::set<Domain>(res);
21701 template <typename Domain>
21702 typed::pw_multi_aff<Domain> typed::basic_set<Domain>::lexmax_pw_multi_aff() const
21704 auto res = isl::basic_set::lexmax_pw_multi_aff();
21705 return typed::pw_multi_aff<Domain>(res);
21708 template <typename Domain>
21709 typed::set<Domain> typed::basic_set<Domain>::lexmin() const
21711 auto res = isl::basic_set::lexmin();
21712 return typed::set<Domain>(res);
21715 template <typename Domain>
21716 typed::pw_multi_aff<Domain> typed::basic_set<Domain>::lexmin_pw_multi_aff() const
21718 auto res = isl::basic_set::lexmin_pw_multi_aff();
21719 return typed::pw_multi_aff<Domain>(res);
21722 template <typename Domain>
21723 typed::set<Domain> typed::basic_set<Domain>::lower_bound(const typed::multi_pw_aff<Domain> &lower) const
21725 auto res = isl::basic_set::lower_bound(lower);
21726 return typed::set<Domain>(res);
21729 template <typename Domain>
21730 typed::set<Domain> typed::basic_set<Domain>::lower_bound(const typed::multi_val<Domain> &lower) const
21732 auto res = isl::basic_set::lower_bound(lower);
21733 return typed::set<Domain>(res);
21736 template <typename Domain>
21737 typed::multi_pw_aff<Domain> typed::basic_set<Domain>::max_multi_pw_aff() const
21739 auto res = isl::basic_set::max_multi_pw_aff();
21740 return typed::multi_pw_aff<Domain>(res);
21743 template <typename Domain>
21744 typed::multi_pw_aff<Domain> typed::basic_set<Domain>::min_multi_pw_aff() const
21746 auto res = isl::basic_set::min_multi_pw_aff();
21747 return typed::multi_pw_aff<Domain>(res);
21750 template <typename Domain>
21751 typed::pw_aff<Domain, Anonymous> typed::basic_set<Domain>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
21753 auto res = isl::basic_set::param_pw_aff_on_domain(id);
21754 return typed::pw_aff<Domain, Anonymous>(res);
21757 template <typename Domain>
21758 typed::pw_aff<Domain, Anonymous> typed::basic_set<Domain>::param_pw_aff_on_domain(const std::string &id) const
21760 auto res = isl::basic_set::param_pw_aff_on_domain(id);
21761 return typed::pw_aff<Domain, Anonymous>(res);
21764 template <typename Domain>
21765 typed::basic_set<> typed::basic_set<Domain>::params() const
21767 auto res = isl::basic_set::params();
21768 return typed::basic_set<>(res);
21771 template <typename Domain>
21772 typed::multi_val<Domain> typed::basic_set<Domain>::plain_multi_val_if_fixed() const
21774 auto res = isl::basic_set::plain_multi_val_if_fixed();
21775 return typed::multi_val<Domain>(res);
21778 template <typename Domain>
21779 template <typename Domain2>
21780 typed::set<Domain2> typed::basic_set<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
21782 auto res = isl::basic_set::preimage(ma);
21783 return typed::set<Domain2>(res);
21786 template <typename Domain>
21787 template <typename Domain2>
21788 typed::set<Domain2> typed::basic_set<Domain>::preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
21790 auto res = isl::basic_set::preimage(mpa);
21791 return typed::set<Domain2>(res);
21794 template <typename Domain>
21795 template <typename Domain2>
21796 typed::set<Domain2> typed::basic_set<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
21798 auto res = isl::basic_set::preimage(pma);
21799 return typed::set<Domain2>(res);
21802 template <typename Domain>
21803 template <typename Domain2>
21804 typed::union_set<Domain2> typed::basic_set<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
21806 auto res = isl::basic_set::preimage(upma);
21807 return typed::union_set<Domain2>(res);
21810 template <typename Domain>
21811 template <typename Range>
21812 typed::set<pair<Domain, Range>> typed::basic_set<Domain>::product(const typed::set<Range> &set2) const
21814 auto res = isl::basic_set::product(set2);
21815 return typed::set<pair<Domain, Range>>(res);
21818 template <typename Domain>
21819 typed::set<Domain> typed::basic_set<Domain>::project_out_all_params() const
21821 auto res = isl::basic_set::project_out_all_params();
21822 return typed::set<Domain>(res);
21825 template <typename Domain>
21826 typed::set<Domain> typed::basic_set<Domain>::project_out_param(const typed::id<Anonymous> &id) const
21828 auto res = isl::basic_set::project_out_param(id);
21829 return typed::set<Domain>(res);
21832 template <typename Domain>
21833 typed::set<Domain> typed::basic_set<Domain>::project_out_param(const std::string &id) const
21835 auto res = isl::basic_set::project_out_param(id);
21836 return typed::set<Domain>(res);
21839 template <typename Domain>
21840 typed::set<Domain> typed::basic_set<Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
21842 auto res = isl::basic_set::project_out_param(list);
21843 return typed::set<Domain>(res);
21846 template <typename Domain>
21847 typed::pw_aff<Domain, Anonymous> typed::basic_set<Domain>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
21849 auto res = isl::basic_set::pw_aff_on_domain(v);
21850 return typed::pw_aff<Domain, Anonymous>(res);
21853 template <typename Domain>
21854 typed::pw_aff<Domain, Anonymous> typed::basic_set<Domain>::pw_aff_on_domain(long v) const
21856 auto res = isl::basic_set::pw_aff_on_domain(v);
21857 return typed::pw_aff<Domain, Anonymous>(res);
21860 template <typename Domain>
21861 template <typename Range>
21862 typed::pw_multi_aff<Domain, Range> typed::basic_set<Domain>::pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const
21864 auto res = isl::basic_set::pw_multi_aff_on_domain(mv);
21865 return typed::pw_multi_aff<Domain, Range>(res);
21868 template <typename Domain>
21869 typed::set_list<Domain> typed::basic_set<Domain>::set_list() const
21871 auto res = isl::basic_set::set_list();
21872 return typed::set_list<Domain>(res);
21875 template <typename Domain>
21876 typed::fixed_box<Domain> typed::basic_set<Domain>::simple_fixed_box_hull() const
21878 auto res = isl::basic_set::simple_fixed_box_hull();
21879 return typed::fixed_box<Domain>(res);
21882 template <typename Domain>
21883 typed::space<Domain> typed::basic_set<Domain>::space() const
21885 auto res = isl::basic_set::space();
21886 return typed::space<Domain>(res);
21889 template <typename Domain>
21890 typed::set<Domain> typed::basic_set<Domain>::subtract(const typed::set<Domain> &set2) const
21892 auto res = isl::basic_set::subtract(set2);
21893 return typed::set<Domain>(res);
21896 template <typename Domain>
21897 typed::union_set<Domain> typed::basic_set<Domain>::subtract(const typed::union_set<Domain> &uset2) const
21899 auto res = isl::basic_set::subtract(uset2);
21900 return typed::union_set<Domain>(res);
21903 template <typename Domain>
21904 typed::set<Domain> typed::basic_set<Domain>::to_set() const
21906 auto res = isl::basic_set::to_set();
21907 return typed::set<Domain>(res);
21910 template <typename Domain>
21911 typed::union_set<Domain> typed::basic_set<Domain>::to_union_set() const
21913 auto res = isl::basic_set::to_union_set();
21914 return typed::union_set<Domain>(res);
21917 template <typename Domain>
21918 typed::map<Domain, Domain> typed::basic_set<Domain>::translation() const
21920 auto res = isl::basic_set::translation();
21921 return typed::map<Domain, Domain>(res);
21924 template <typename Domain>
21925 template <typename Arg1>
21926 typed::map<Arg1, Domain> typed::basic_set<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
21928 auto res = isl::basic_set::unbind_params_insert_domain(domain);
21929 return typed::map<Arg1, Domain>(res);
21932 template <typename Domain>
21933 typed::set<Domain> typed::basic_set<Domain>::unite(const typed::basic_set<Domain> &bset2) const
21935 auto res = isl::basic_set::unite(bset2);
21936 return typed::set<Domain>(res);
21939 template <typename Domain>
21940 typed::set<Domain> typed::basic_set<Domain>::unite(const typed::set<Domain> &set2) const
21942 auto res = isl::basic_set::unite(set2);
21943 return typed::set<Domain>(res);
21946 template <typename Domain>
21947 typed::union_set<Domain> typed::basic_set<Domain>::unite(const typed::union_set<Domain> &uset2) const
21949 auto res = isl::basic_set::unite(uset2);
21950 return typed::union_set<Domain>(res);
21953 template <typename Domain>
21954 typed::set<Domain> typed::basic_set<Domain>::unite(const typed::point<Domain> &bset2) const
21956 auto res = isl::basic_set::unite(bset2);
21957 return typed::set<Domain>(res);
21960 template <typename Domain>
21961 typed::set<Domain> typed::basic_set<Domain>::upper_bound(const typed::multi_pw_aff<Domain> &upper) const
21963 auto res = isl::basic_set::upper_bound(upper);
21964 return typed::set<Domain>(res);
21967 template <typename Domain>
21968 typed::set<Domain> typed::basic_set<Domain>::upper_bound(const typed::multi_val<Domain> &upper) const
21970 auto res = isl::basic_set::upper_bound(upper);
21971 return typed::set<Domain>(res);
21974 template <typename Domain, typename Range>
21975 typed::basic_set<pair<Domain, Range>>::basic_set(const typed::point<pair<Domain, Range>> &pnt)
21976 : isl::basic_set(pnt)
21980 template <typename Domain, typename Range>
21981 typed::basic_set<pair<Domain, Range>>::basic_set(const isl::ctx &ctx, const std::string &str)
21982 : isl::basic_set(ctx, str)
21986 template <typename Domain, typename Range>
21987 template <typename Arg2>
21988 typed::basic_set<Arg2> typed::basic_set<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const
21990 auto res = isl::basic_set::apply(bmap);
21991 return typed::basic_set<Arg2>(res);
21994 template <typename Domain, typename Range>
21995 template <typename Arg2>
21996 typed::set<Arg2> typed::basic_set<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &map) const
21998 auto res = isl::basic_set::apply(map);
21999 return typed::set<Arg2>(res);
22002 template <typename Domain, typename Range>
22003 template <typename Arg2>
22004 typed::union_set<Arg2> typed::basic_set<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
22006 auto res = isl::basic_set::apply(umap);
22007 return typed::union_set<Arg2>(res);
22010 template <typename Domain, typename Range>
22011 typed::pw_multi_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::as_pw_multi_aff() const
22013 auto res = isl::basic_set::as_pw_multi_aff();
22014 return typed::pw_multi_aff<pair<Domain, Range>>(res);
22017 template <typename Domain, typename Range>
22018 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::as_set() const
22020 auto res = isl::basic_set::as_set();
22021 return typed::set<pair<Domain, Range>>(res);
22024 template <typename Domain, typename Range>
22025 typed::set<> typed::basic_set<pair<Domain, Range>>::bind(const typed::multi_id<pair<Domain, Range>> &tuple) const
22027 auto res = isl::basic_set::bind(tuple);
22028 return typed::set<>(res);
22031 template <typename Domain, typename Range>
22032 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::coalesce() const
22034 auto res = isl::basic_set::coalesce();
22035 return typed::set<pair<Domain, Range>>(res);
22038 template <typename Domain, typename Range>
22039 typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::detect_equalities() const
22041 auto res = isl::basic_set::detect_equalities();
22042 return typed::basic_set<pair<Domain, Range>>(res);
22045 template <typename Domain, typename Range>
22046 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::drop_unused_params() const
22048 auto res = isl::basic_set::drop_unused_params();
22049 return typed::set<pair<Domain, Range>>(res);
22052 template <typename Domain, typename Range>
22053 bool typed::basic_set<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
22055 auto lambda_test = [&] (isl::set arg0) {
22056 return test(typed::set<pair<Domain, Range>>(arg0));
22058 return isl::basic_set::every_set(lambda_test);
22061 template <typename Domain, typename Range>
22062 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
22064 auto res = isl::basic_set::extract_set(space);
22065 return typed::set<pair<Domain, Range>>(res);
22068 template <typename Domain, typename Range>
22069 void typed::basic_set<pair<Domain, Range>>::foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const
22071 auto lambda_fn = [&] (isl::basic_set arg0) {
22072 return fn(typed::basic_set<pair<Domain, Range>>(arg0));
22074 return isl::basic_set::foreach_basic_set(lambda_fn);
22077 template <typename Domain, typename Range>
22078 void typed::basic_set<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
22080 auto lambda_fn = [&] (isl::point arg0) {
22081 return fn(typed::point<pair<Domain, Range>>(arg0));
22083 return isl::basic_set::foreach_point(lambda_fn);
22086 template <typename Domain, typename Range>
22087 void typed::basic_set<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
22089 auto lambda_fn = [&] (isl::set arg0) {
22090 return fn(typed::set<pair<Domain, Range>>(arg0));
22092 return isl::basic_set::foreach_set(lambda_fn);
22095 template <typename Domain, typename Range>
22096 typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
22098 auto res = isl::basic_set::gist(context);
22099 return typed::basic_set<pair<Domain, Range>>(res);
22102 template <typename Domain, typename Range>
22103 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
22105 auto res = isl::basic_set::gist(context);
22106 return typed::set<pair<Domain, Range>>(res);
22109 template <typename Domain, typename Range>
22110 typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
22112 auto res = isl::basic_set::gist(context);
22113 return typed::union_set<pair<Domain, Range>>(res);
22116 template <typename Domain, typename Range>
22117 typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist(const typed::point<pair<Domain, Range>> &context) const
22119 auto res = isl::basic_set::gist(context);
22120 return typed::basic_set<pair<Domain, Range>>(res);
22123 template <typename Domain, typename Range>
22124 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::gist_params(const typed::set<> &context) const
22126 auto res = isl::basic_set::gist_params(context);
22127 return typed::set<pair<Domain, Range>>(res);
22130 template <typename Domain, typename Range>
22131 typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::identity() const
22133 auto res = isl::basic_set::identity();
22134 return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
22137 template <typename Domain, typename Range>
22138 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::basic_set<pair<Domain, Range>>::indicator_function() const
22140 auto res = isl::basic_set::indicator_function();
22141 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
22144 template <typename Domain, typename Range>
22145 template <typename Arg2>
22146 typed::map<Arg2, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::insert_domain(const typed::space<Arg2> &domain) const
22148 auto res = isl::basic_set::insert_domain(domain);
22149 return typed::map<Arg2, pair<Domain, Range>>(res);
22152 template <typename Domain, typename Range>
22153 typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const
22155 auto res = isl::basic_set::intersect(bset2);
22156 return typed::basic_set<pair<Domain, Range>>(res);
22159 template <typename Domain, typename Range>
22160 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &set2) const
22162 auto res = isl::basic_set::intersect(set2);
22163 return typed::set<pair<Domain, Range>>(res);
22166 template <typename Domain, typename Range>
22167 typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
22169 auto res = isl::basic_set::intersect(uset2);
22170 return typed::union_set<pair<Domain, Range>>(res);
22173 template <typename Domain, typename Range>
22174 typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect(const typed::point<pair<Domain, Range>> &bset2) const
22176 auto res = isl::basic_set::intersect(bset2);
22177 return typed::basic_set<pair<Domain, Range>>(res);
22180 template <typename Domain, typename Range>
22181 typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &bset2) const
22183 auto res = isl::basic_set::intersect_params(bset2);
22184 return typed::basic_set<pair<Domain, Range>>(res);
22187 template <typename Domain, typename Range>
22188 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect_params(const typed::set<> &params) const
22190 auto res = isl::basic_set::intersect_params(params);
22191 return typed::set<pair<Domain, Range>>(res);
22194 template <typename Domain, typename Range>
22195 typed::basic_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::intersect_params(const typed::point<> &bset2) const
22197 auto res = isl::basic_set::intersect_params(bset2);
22198 return typed::basic_set<pair<Domain, Range>>(res);
22201 template <typename Domain, typename Range>
22202 typed::fixed_box<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lattice_tile() const
22204 auto res = isl::basic_set::lattice_tile();
22205 return typed::fixed_box<pair<Domain, Range>>(res);
22208 template <typename Domain, typename Range>
22209 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmax() const
22211 auto res = isl::basic_set::lexmax();
22212 return typed::set<pair<Domain, Range>>(res);
22215 template <typename Domain, typename Range>
22216 typed::pw_multi_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmax_pw_multi_aff() const
22218 auto res = isl::basic_set::lexmax_pw_multi_aff();
22219 return typed::pw_multi_aff<pair<Domain, Range>>(res);
22222 template <typename Domain, typename Range>
22223 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmin() const
22225 auto res = isl::basic_set::lexmin();
22226 return typed::set<pair<Domain, Range>>(res);
22229 template <typename Domain, typename Range>
22230 typed::pw_multi_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lexmin_pw_multi_aff() const
22232 auto res = isl::basic_set::lexmin_pw_multi_aff();
22233 return typed::pw_multi_aff<pair<Domain, Range>>(res);
22236 template <typename Domain, typename Range>
22237 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const
22239 auto res = isl::basic_set::lower_bound(lower);
22240 return typed::set<pair<Domain, Range>>(res);
22243 template <typename Domain, typename Range>
22244 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const
22246 auto res = isl::basic_set::lower_bound(lower);
22247 return typed::set<pair<Domain, Range>>(res);
22250 template <typename Domain, typename Range>
22251 typed::multi_pw_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::max_multi_pw_aff() const
22253 auto res = isl::basic_set::max_multi_pw_aff();
22254 return typed::multi_pw_aff<pair<Domain, Range>>(res);
22257 template <typename Domain, typename Range>
22258 typed::multi_pw_aff<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::min_multi_pw_aff() const
22260 auto res = isl::basic_set::min_multi_pw_aff();
22261 return typed::multi_pw_aff<pair<Domain, Range>>(res);
22264 template <typename Domain, typename Range>
22265 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::basic_set<pair<Domain, Range>>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
22267 auto res = isl::basic_set::param_pw_aff_on_domain(id);
22268 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
22271 template <typename Domain, typename Range>
22272 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::basic_set<pair<Domain, Range>>::param_pw_aff_on_domain(const std::string &id) const
22274 auto res = isl::basic_set::param_pw_aff_on_domain(id);
22275 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
22278 template <typename Domain, typename Range>
22279 typed::basic_set<> typed::basic_set<pair<Domain, Range>>::params() const
22281 auto res = isl::basic_set::params();
22282 return typed::basic_set<>(res);
22285 template <typename Domain, typename Range>
22286 typed::multi_val<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::plain_multi_val_if_fixed() const
22288 auto res = isl::basic_set::plain_multi_val_if_fixed();
22289 return typed::multi_val<pair<Domain, Range>>(res);
22292 template <typename Domain, typename Range>
22293 template <typename Domain2>
22294 typed::set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
22296 auto res = isl::basic_set::preimage(ma);
22297 return typed::set<Domain2>(res);
22300 template <typename Domain, typename Range>
22301 template <typename Domain2>
22302 typed::set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
22304 auto res = isl::basic_set::preimage(mpa);
22305 return typed::set<Domain2>(res);
22308 template <typename Domain, typename Range>
22309 template <typename Domain2>
22310 typed::set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
22312 auto res = isl::basic_set::preimage(pma);
22313 return typed::set<Domain2>(res);
22316 template <typename Domain, typename Range>
22317 template <typename Domain2>
22318 typed::union_set<Domain2> typed::basic_set<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
22320 auto res = isl::basic_set::preimage(upma);
22321 return typed::union_set<Domain2>(res);
22324 template <typename Domain, typename Range>
22325 template <typename Arg2>
22326 typed::set<pair<pair<Domain, Range>, Arg2>> typed::basic_set<pair<Domain, Range>>::product(const typed::set<Arg2> &set2) const
22328 auto res = isl::basic_set::product(set2);
22329 return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
22332 template <typename Domain, typename Range>
22333 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_all_params() const
22335 auto res = isl::basic_set::project_out_all_params();
22336 return typed::set<pair<Domain, Range>>(res);
22339 template <typename Domain, typename Range>
22340 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_param(const typed::id<Anonymous> &id) const
22342 auto res = isl::basic_set::project_out_param(id);
22343 return typed::set<pair<Domain, Range>>(res);
22346 template <typename Domain, typename Range>
22347 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_param(const std::string &id) const
22349 auto res = isl::basic_set::project_out_param(id);
22350 return typed::set<pair<Domain, Range>>(res);
22353 template <typename Domain, typename Range>
22354 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::project_out_param(const typed::id_list<Anonymous> &list) const
22356 auto res = isl::basic_set::project_out_param(list);
22357 return typed::set<pair<Domain, Range>>(res);
22360 template <typename Domain, typename Range>
22361 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::basic_set<pair<Domain, Range>>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
22363 auto res = isl::basic_set::pw_aff_on_domain(v);
22364 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
22367 template <typename Domain, typename Range>
22368 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::basic_set<pair<Domain, Range>>::pw_aff_on_domain(long v) const
22370 auto res = isl::basic_set::pw_aff_on_domain(v);
22371 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
22374 template <typename Domain, typename Range>
22375 template <typename Arg2>
22376 typed::pw_multi_aff<pair<Domain, Range>, Arg2> typed::basic_set<pair<Domain, Range>>::pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
22378 auto res = isl::basic_set::pw_multi_aff_on_domain(mv);
22379 return typed::pw_multi_aff<pair<Domain, Range>, Arg2>(res);
22382 template <typename Domain, typename Range>
22383 typed::set_list<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::set_list() const
22385 auto res = isl::basic_set::set_list();
22386 return typed::set_list<pair<Domain, Range>>(res);
22389 template <typename Domain, typename Range>
22390 typed::fixed_box<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::simple_fixed_box_hull() const
22392 auto res = isl::basic_set::simple_fixed_box_hull();
22393 return typed::fixed_box<pair<Domain, Range>>(res);
22396 template <typename Domain, typename Range>
22397 typed::space<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::space() const
22399 auto res = isl::basic_set::space();
22400 return typed::space<pair<Domain, Range>>(res);
22403 template <typename Domain, typename Range>
22404 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &set2) const
22406 auto res = isl::basic_set::subtract(set2);
22407 return typed::set<pair<Domain, Range>>(res);
22410 template <typename Domain, typename Range>
22411 typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
22413 auto res = isl::basic_set::subtract(uset2);
22414 return typed::union_set<pair<Domain, Range>>(res);
22417 template <typename Domain, typename Range>
22418 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::to_set() const
22420 auto res = isl::basic_set::to_set();
22421 return typed::set<pair<Domain, Range>>(res);
22424 template <typename Domain, typename Range>
22425 typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::to_union_set() const
22427 auto res = isl::basic_set::to_union_set();
22428 return typed::union_set<pair<Domain, Range>>(res);
22431 template <typename Domain, typename Range>
22432 typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::translation() const
22434 auto res = isl::basic_set::translation();
22435 return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
22438 template <typename Domain, typename Range>
22439 template <typename Arg2>
22440 typed::map<Arg2, pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const
22442 auto res = isl::basic_set::unbind_params_insert_domain(domain);
22443 return typed::map<Arg2, pair<Domain, Range>>(res);
22446 template <typename Domain, typename Range>
22447 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &bset2) const
22449 auto res = isl::basic_set::unite(bset2);
22450 return typed::set<pair<Domain, Range>>(res);
22453 template <typename Domain, typename Range>
22454 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &set2) const
22456 auto res = isl::basic_set::unite(set2);
22457 return typed::set<pair<Domain, Range>>(res);
22460 template <typename Domain, typename Range>
22461 typed::union_set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
22463 auto res = isl::basic_set::unite(uset2);
22464 return typed::union_set<pair<Domain, Range>>(res);
22467 template <typename Domain, typename Range>
22468 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::unite(const typed::point<pair<Domain, Range>> &bset2) const
22470 auto res = isl::basic_set::unite(bset2);
22471 return typed::set<pair<Domain, Range>>(res);
22474 template <typename Domain, typename Range>
22475 typed::map<Domain, Range> typed::basic_set<pair<Domain, Range>>::unwrap() const
22477 auto res = isl::basic_set::unwrap();
22478 return typed::map<Domain, Range>(res);
22481 template <typename Domain, typename Range>
22482 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const
22484 auto res = isl::basic_set::upper_bound(upper);
22485 return typed::set<pair<Domain, Range>>(res);
22488 template <typename Domain, typename Range>
22489 typed::set<pair<Domain, Range>> typed::basic_set<pair<Domain, Range>>::upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const
22491 auto res = isl::basic_set::upper_bound(upper);
22492 return typed::set<pair<Domain, Range>>(res);
22495 template <typename Domain, typename Range>
22496 typed::set<pair<Range, Domain>> typed::basic_set<pair<Domain, Range>>::wrapped_reverse() const
22498 auto res = isl::basic_set::wrapped_reverse();
22499 return typed::set<pair<Range, Domain>>(res);
22502 template <typename Domain>
22503 typed::fixed_box<Domain>::fixed_box(const isl::ctx &ctx, const std::string &str)
22504 : isl::fixed_box(ctx, str)
22508 template <typename Domain>
22509 typed::multi_aff<Domain> typed::fixed_box<Domain>::offset() const
22511 auto res = isl::fixed_box::offset();
22512 return typed::multi_aff<Domain>(res);
22515 template <typename Domain>
22516 typed::multi_val<Domain> typed::fixed_box<Domain>::size() const
22518 auto res = isl::fixed_box::size();
22519 return typed::multi_val<Domain>(res);
22522 template <typename Domain>
22523 typed::space<Domain> typed::fixed_box<Domain>::space() const
22525 auto res = isl::fixed_box::space();
22526 return typed::space<Domain>(res);
22529 template <typename Domain, typename Range>
22530 typed::fixed_box<Domain, Range>::fixed_box(const isl::ctx &ctx, const std::string &str)
22531 : isl::fixed_box(ctx, str)
22535 template <typename Domain, typename Range>
22536 typed::multi_aff<Domain, Range> typed::fixed_box<Domain, Range>::offset() const
22538 auto res = isl::fixed_box::offset();
22539 return typed::multi_aff<Domain, Range>(res);
22542 template <typename Domain, typename Range>
22543 typed::multi_val<Range> typed::fixed_box<Domain, Range>::size() const
22545 auto res = isl::fixed_box::size();
22546 return typed::multi_val<Range>(res);
22549 template <typename Domain, typename Range>
22550 typed::space<Domain, Range> typed::fixed_box<Domain, Range>::space() const
22552 auto res = isl::fixed_box::space();
22553 return typed::space<Domain, Range>(res);
22556 typed::id<Anonymous>::id(const isl::ctx &ctx, const std::string &str)
22557 : isl::id(ctx, str)
22561 typed::id_list<Anonymous>::id_list(const isl::ctx &ctx, int n)
22562 : isl::id_list(ctx, n)
22566 typed::id_list<Anonymous>::id_list(const typed::id<Anonymous> &el)
22567 : isl::id_list(el)
22571 typed::id_list<Anonymous>::id_list(const isl::ctx &ctx, const std::string &str)
22572 : isl::id_list(ctx, str)
22576 typed::id_list<Anonymous> typed::id_list<Anonymous>::add(const typed::id<Anonymous> &el) const
22578 auto res = isl::id_list::add(el);
22579 return typed::id_list<Anonymous>(res);
22582 typed::id_list<Anonymous> typed::id_list<Anonymous>::add(const std::string &el) const
22584 auto res = isl::id_list::add(el);
22585 return typed::id_list<Anonymous>(res);
22588 typed::id<Anonymous> typed::id_list<Anonymous>::at(int index) const
22590 auto res = isl::id_list::at(index);
22591 return typed::id<Anonymous>(res);
22594 typed::id_list<Anonymous> typed::id_list<Anonymous>::drop(unsigned int first, unsigned int n) const
22596 auto res = isl::id_list::drop(first, n);
22597 return typed::id_list<Anonymous>(res);
22600 void typed::id_list<Anonymous>::foreach(const std::function<void(typed::id<Anonymous>)> &fn) const
22602 auto lambda_fn = [&] (isl::id arg0) {
22603 return fn(typed::id<Anonymous>(arg0));
22605 return isl::id_list::foreach(lambda_fn);
22608 void typed::id_list<Anonymous>::foreach_scc(const std::function<bool(typed::id<Anonymous>, typed::id<Anonymous>)> &follows, const std::function<void(typed::id_list<Anonymous>)> &fn) const
22610 auto lambda_follows = [&] (isl::id arg0, isl::id arg1) {
22611 return follows(typed::id<Anonymous>(arg0), typed::id<Anonymous>(arg1));
22613 auto lambda_fn = [&] (isl::id_list arg0) {
22614 return fn(typed::id_list<Anonymous>(arg0));
22616 return isl::id_list::foreach_scc(lambda_follows, lambda_fn);
22619 typed::id_list<Anonymous> typed::id_list<Anonymous>::set_at(int index, const typed::id<Anonymous> &el) const
22621 auto res = isl::id_list::set_at(index, el);
22622 return typed::id_list<Anonymous>(res);
22625 typed::id_list<Anonymous> typed::id_list<Anonymous>::set_at(int index, const std::string &el) const
22627 auto res = isl::id_list::set_at(index, el);
22628 return typed::id_list<Anonymous>(res);
22631 template <typename Domain, typename Range>
22632 typed::map<Domain, Range>::map(const typed::basic_map<Domain, Range> &bmap)
22633 : isl::map(bmap)
22637 template <typename Domain, typename Range>
22638 typed::map<Domain, Range>::map(const isl::ctx &ctx, const std::string &str)
22639 : isl::map(ctx, str)
22643 template <typename Domain, typename Range>
22644 template <typename Domain2>
22645 typed::map<Domain2, Range> typed::map<Domain, Range>::apply_domain(const typed::map<Domain, Domain2> &map2) const
22647 auto res = isl::map::apply_domain(map2);
22648 return typed::map<Domain2, Range>(res);
22651 template <typename Domain, typename Range>
22652 template <typename Domain2>
22653 typed::union_map<Domain2, Range> typed::map<Domain, Range>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
22655 auto res = isl::map::apply_domain(umap2);
22656 return typed::union_map<Domain2, Range>(res);
22659 template <typename Domain, typename Range>
22660 template <typename Domain2>
22661 typed::map<Domain2, Range> typed::map<Domain, Range>::apply_domain(const typed::basic_map<Domain, Domain2> &map2) const
22663 auto res = isl::map::apply_domain(map2);
22664 return typed::map<Domain2, Range>(res);
22667 template <typename Domain, typename Range>
22668 template <typename Range2>
22669 typed::map<Domain, Range2> typed::map<Domain, Range>::apply_range(const typed::map<Range, Range2> &map2) const
22671 auto res = isl::map::apply_range(map2);
22672 return typed::map<Domain, Range2>(res);
22675 template <typename Domain, typename Range>
22676 template <typename Range2>
22677 typed::union_map<Domain, Range2> typed::map<Domain, Range>::apply_range(const typed::union_map<Range, Range2> &umap2) const
22679 auto res = isl::map::apply_range(umap2);
22680 return typed::union_map<Domain, Range2>(res);
22683 template <typename Domain, typename Range>
22684 template <typename Range2>
22685 typed::map<Domain, Range2> typed::map<Domain, Range>::apply_range(const typed::basic_map<Range, Range2> &map2) const
22687 auto res = isl::map::apply_range(map2);
22688 return typed::map<Domain, Range2>(res);
22691 template <typename Domain, typename Range>
22692 typed::map<Domain, Range> typed::map<Domain, Range>::as_map() const
22694 auto res = isl::map::as_map();
22695 return typed::map<Domain, Range>(res);
22698 template <typename Domain, typename Range>
22699 typed::multi_union_pw_aff<Domain, Range> typed::map<Domain, Range>::as_multi_union_pw_aff() const
22701 auto res = isl::map::as_multi_union_pw_aff();
22702 return typed::multi_union_pw_aff<Domain, Range>(res);
22705 template <typename Domain, typename Range>
22706 typed::pw_multi_aff<Domain, Range> typed::map<Domain, Range>::as_pw_multi_aff() const
22708 auto res = isl::map::as_pw_multi_aff();
22709 return typed::pw_multi_aff<Domain, Range>(res);
22712 template <typename Domain, typename Range>
22713 typed::union_pw_multi_aff<Domain, Range> typed::map<Domain, Range>::as_union_pw_multi_aff() const
22715 auto res = isl::map::as_union_pw_multi_aff();
22716 return typed::union_pw_multi_aff<Domain, Range>(res);
22719 template <typename Domain, typename Range>
22720 typed::set<Range> typed::map<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
22722 auto res = isl::map::bind_domain(tuple);
22723 return typed::set<Range>(res);
22726 template <typename Domain, typename Range>
22727 typed::set<Domain> typed::map<Domain, Range>::bind_range(const typed::multi_id<Range> &tuple) const
22729 auto res = isl::map::bind_range(tuple);
22730 return typed::set<Domain>(res);
22733 template <typename Domain, typename Range>
22734 typed::map<Domain, Range> typed::map<Domain, Range>::coalesce() const
22736 auto res = isl::map::coalesce();
22737 return typed::map<Domain, Range>(res);
22740 template <typename Domain, typename Range>
22741 typed::map<Domain, Range> typed::map<Domain, Range>::detect_equalities() const
22743 auto res = isl::map::detect_equalities();
22744 return typed::map<Domain, Range>(res);
22747 template <typename Domain, typename Range>
22748 typed::set<Domain> typed::map<Domain, Range>::domain() const
22750 auto res = isl::map::domain();
22751 return typed::set<Domain>(res);
22754 template <typename Domain, typename Range>
22755 typed::union_map<pair<Domain, Range>, Domain> typed::map<Domain, Range>::domain_map() const
22757 auto res = isl::map::domain_map();
22758 return typed::union_map<pair<Domain, Range>, Domain>(res);
22761 template <typename Domain, typename Range>
22762 typed::union_pw_multi_aff<pair<Domain, Range>, Domain> typed::map<Domain, Range>::domain_map_union_pw_multi_aff() const
22764 auto res = isl::map::domain_map_union_pw_multi_aff();
22765 return typed::union_pw_multi_aff<pair<Domain, Range>, Domain>(res);
22768 template <typename Domain, typename Range>
22769 template <typename Domain2>
22770 typed::map<pair<Domain, Domain2>, Range> typed::map<Domain, Range>::domain_product(const typed::map<Domain2, Range> &map2) const
22772 auto res = isl::map::domain_product(map2);
22773 return typed::map<pair<Domain, Domain2>, Range>(res);
22776 template <typename Domain, typename Range>
22777 template <typename Domain2>
22778 typed::union_map<pair<Domain, Domain2>, Range> typed::map<Domain, Range>::domain_product(const typed::union_map<Domain2, Range> &umap2) const
22780 auto res = isl::map::domain_product(umap2);
22781 return typed::union_map<pair<Domain, Domain2>, Range>(res);
22784 template <typename Domain, typename Range>
22785 template <typename Domain2>
22786 typed::map<pair<Domain, Domain2>, Range> typed::map<Domain, Range>::domain_product(const typed::basic_map<Domain2, Range> &map2) const
22788 auto res = isl::map::domain_product(map2);
22789 return typed::map<pair<Domain, Domain2>, Range>(res);
22792 template <typename Domain, typename Range>
22793 typed::map<Domain, Range> typed::map<Domain, Range>::drop_unused_params() const
22795 auto res = isl::map::drop_unused_params();
22796 return typed::map<Domain, Range>(res);
22799 template <typename Domain, typename Range>
22800 bool typed::map<Domain, Range>::every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const
22802 auto lambda_test = [&] (isl::map arg0) {
22803 return test(typed::map<Domain, Range>(arg0));
22805 return isl::map::every_map(lambda_test);
22808 template <typename Domain, typename Range>
22809 typed::map<Domain, Range> typed::map<Domain, Range>::extract_map(const typed::space<Domain, Range> &space) const
22811 auto res = isl::map::extract_map(space);
22812 return typed::map<Domain, Range>(res);
22815 template <typename Domain, typename Range>
22816 void typed::map<Domain, Range>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Range>)> &fn) const
22818 auto lambda_fn = [&] (isl::basic_map arg0) {
22819 return fn(typed::basic_map<Domain, Range>(arg0));
22821 return isl::map::foreach_basic_map(lambda_fn);
22824 template <typename Domain, typename Range>
22825 void typed::map<Domain, Range>::foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const
22827 auto lambda_fn = [&] (isl::map arg0) {
22828 return fn(typed::map<Domain, Range>(arg0));
22830 return isl::map::foreach_map(lambda_fn);
22833 template <typename Domain, typename Range>
22834 typed::map<Domain, Range> typed::map<Domain, Range>::gist(const typed::map<Domain, Range> &context) const
22836 auto res = isl::map::gist(context);
22837 return typed::map<Domain, Range>(res);
22840 template <typename Domain, typename Range>
22841 typed::union_map<Domain, Range> typed::map<Domain, Range>::gist(const typed::union_map<Domain, Range> &context) const
22843 auto res = isl::map::gist(context);
22844 return typed::union_map<Domain, Range>(res);
22847 template <typename Domain, typename Range>
22848 typed::map<Domain, Range> typed::map<Domain, Range>::gist(const typed::basic_map<Domain, Range> &context) const
22850 auto res = isl::map::gist(context);
22851 return typed::map<Domain, Range>(res);
22854 template <typename Domain, typename Range>
22855 typed::map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::set<Domain> &context) const
22857 auto res = isl::map::gist_domain(context);
22858 return typed::map<Domain, Range>(res);
22861 template <typename Domain, typename Range>
22862 typed::union_map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::union_set<Domain> &uset) const
22864 auto res = isl::map::gist_domain(uset);
22865 return typed::union_map<Domain, Range>(res);
22868 template <typename Domain, typename Range>
22869 typed::map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::basic_set<Domain> &context) const
22871 auto res = isl::map::gist_domain(context);
22872 return typed::map<Domain, Range>(res);
22875 template <typename Domain, typename Range>
22876 typed::map<Domain, Range> typed::map<Domain, Range>::gist_domain(const typed::point<Domain> &context) const
22878 auto res = isl::map::gist_domain(context);
22879 return typed::map<Domain, Range>(res);
22882 template <typename Domain, typename Range>
22883 typed::map<Domain, Range> typed::map<Domain, Range>::gist_params(const typed::set<> &context) const
22885 auto res = isl::map::gist_params(context);
22886 return typed::map<Domain, Range>(res);
22889 template <typename Domain, typename Range>
22890 typed::map<Domain, Range> typed::map<Domain, Range>::gist_params(const typed::basic_set<> &context) const
22892 auto res = isl::map::gist_params(context);
22893 return typed::map<Domain, Range>(res);
22896 template <typename Domain, typename Range>
22897 typed::map<Domain, Range> typed::map<Domain, Range>::gist_params(const typed::point<> &context) const
22899 auto res = isl::map::gist_params(context);
22900 return typed::map<Domain, Range>(res);
22903 template <typename Domain, typename Range>
22904 typed::map<Domain, Range> typed::map<Domain, Range>::intersect(const typed::map<Domain, Range> &map2) const
22906 auto res = isl::map::intersect(map2);
22907 return typed::map<Domain, Range>(res);
22910 template <typename Domain, typename Range>
22911 typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect(const typed::union_map<Domain, Range> &umap2) const
22913 auto res = isl::map::intersect(umap2);
22914 return typed::union_map<Domain, Range>(res);
22917 template <typename Domain, typename Range>
22918 typed::map<Domain, Range> typed::map<Domain, Range>::intersect(const typed::basic_map<Domain, Range> &map2) const
22920 auto res = isl::map::intersect(map2);
22921 return typed::map<Domain, Range>(res);
22924 template <typename Domain, typename Range>
22925 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
22927 auto res = isl::map::intersect_domain(set);
22928 return typed::map<Domain, Range>(res);
22931 template <typename Domain, typename Range>
22932 typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
22934 auto res = isl::map::intersect_domain(space);
22935 return typed::union_map<Domain, Range>(res);
22938 template <typename Domain, typename Range>
22939 typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
22941 auto res = isl::map::intersect_domain(uset);
22942 return typed::union_map<Domain, Range>(res);
22945 template <typename Domain, typename Range>
22946 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &set) const
22948 auto res = isl::map::intersect_domain(set);
22949 return typed::map<Domain, Range>(res);
22952 template <typename Domain, typename Range>
22953 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_domain(const typed::point<Domain> &set) const
22955 auto res = isl::map::intersect_domain(set);
22956 return typed::map<Domain, Range>(res);
22959 template <typename Domain, typename Range>
22960 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_params(const typed::set<> &params) const
22962 auto res = isl::map::intersect_params(params);
22963 return typed::map<Domain, Range>(res);
22966 template <typename Domain, typename Range>
22967 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_params(const typed::basic_set<> &params) const
22969 auto res = isl::map::intersect_params(params);
22970 return typed::map<Domain, Range>(res);
22973 template <typename Domain, typename Range>
22974 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_params(const typed::point<> &params) const
22976 auto res = isl::map::intersect_params(params);
22977 return typed::map<Domain, Range>(res);
22980 template <typename Domain, typename Range>
22981 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::set<Range> &set) const
22983 auto res = isl::map::intersect_range(set);
22984 return typed::map<Domain, Range>(res);
22987 template <typename Domain, typename Range>
22988 typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::space<Range> &space) const
22990 auto res = isl::map::intersect_range(space);
22991 return typed::union_map<Domain, Range>(res);
22994 template <typename Domain, typename Range>
22995 typed::union_map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::union_set<Range> &uset) const
22997 auto res = isl::map::intersect_range(uset);
22998 return typed::union_map<Domain, Range>(res);
23001 template <typename Domain, typename Range>
23002 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::basic_set<Range> &set) const
23004 auto res = isl::map::intersect_range(set);
23005 return typed::map<Domain, Range>(res);
23008 template <typename Domain, typename Range>
23009 typed::map<Domain, Range> typed::map<Domain, Range>::intersect_range(const typed::point<Range> &set) const
23011 auto res = isl::map::intersect_range(set);
23012 return typed::map<Domain, Range>(res);
23015 template <typename Domain, typename Range>
23016 typed::map<Domain, Range> typed::map<Domain, Range>::lexmax() const
23018 auto res = isl::map::lexmax();
23019 return typed::map<Domain, Range>(res);
23022 template <typename Domain, typename Range>
23023 typed::pw_multi_aff<Domain, Range> typed::map<Domain, Range>::lexmax_pw_multi_aff() const
23025 auto res = isl::map::lexmax_pw_multi_aff();
23026 return typed::pw_multi_aff<Domain, Range>(res);
23029 template <typename Domain, typename Range>
23030 typed::map<Domain, Range> typed::map<Domain, Range>::lexmin() const
23032 auto res = isl::map::lexmin();
23033 return typed::map<Domain, Range>(res);
23036 template <typename Domain, typename Range>
23037 typed::pw_multi_aff<Domain, Range> typed::map<Domain, Range>::lexmin_pw_multi_aff() const
23039 auto res = isl::map::lexmin_pw_multi_aff();
23040 return typed::pw_multi_aff<Domain, Range>(res);
23043 template <typename Domain, typename Range>
23044 typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::multi_pw_aff<Domain, Range> &lower) const
23046 auto res = isl::map::lower_bound(lower);
23047 return typed::map<Domain, Range>(res);
23050 template <typename Domain, typename Range>
23051 typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::aff<Domain, Range> &lower) const
23053 auto res = isl::map::lower_bound(lower);
23054 return typed::map<Domain, Range>(res);
23057 template <typename Domain, typename Range>
23058 typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::multi_aff<Domain, Range> &lower) const
23060 auto res = isl::map::lower_bound(lower);
23061 return typed::map<Domain, Range>(res);
23064 template <typename Domain, typename Range>
23065 typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::pw_aff<Domain, Range> &lower) const
23067 auto res = isl::map::lower_bound(lower);
23068 return typed::map<Domain, Range>(res);
23071 template <typename Domain, typename Range>
23072 typed::map<Domain, Range> typed::map<Domain, Range>::lower_bound(const typed::pw_multi_aff<Domain, Range> &lower) const
23074 auto res = isl::map::lower_bound(lower);
23075 return typed::map<Domain, Range>(res);
23078 template <typename Domain, typename Range>
23079 typed::map_list<Domain, Range> typed::map<Domain, Range>::map_list() const
23081 auto res = isl::map::map_list();
23082 return typed::map_list<Domain, Range>(res);
23085 template <typename Domain, typename Range>
23086 typed::multi_pw_aff<Domain, Range> typed::map<Domain, Range>::max_multi_pw_aff() const
23088 auto res = isl::map::max_multi_pw_aff();
23089 return typed::multi_pw_aff<Domain, Range>(res);
23092 template <typename Domain, typename Range>
23093 typed::multi_pw_aff<Domain, Range> typed::map<Domain, Range>::min_multi_pw_aff() const
23095 auto res = isl::map::min_multi_pw_aff();
23096 return typed::multi_pw_aff<Domain, Range>(res);
23099 template <typename Domain, typename Range>
23100 typed::set<> typed::map<Domain, Range>::params() const
23102 auto res = isl::map::params();
23103 return typed::set<>(res);
23106 template <typename Domain, typename Range>
23107 template <typename Domain2>
23108 typed::map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
23110 auto res = isl::map::preimage_domain(ma);
23111 return typed::map<Domain2, Range>(res);
23114 template <typename Domain, typename Range>
23115 template <typename Domain2>
23116 typed::map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
23118 auto res = isl::map::preimage_domain(mpa);
23119 return typed::map<Domain2, Range>(res);
23122 template <typename Domain, typename Range>
23123 template <typename Domain2>
23124 typed::map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
23126 auto res = isl::map::preimage_domain(pma);
23127 return typed::map<Domain2, Range>(res);
23130 template <typename Domain, typename Range>
23131 template <typename Domain2>
23132 typed::union_map<Domain2, Range> typed::map<Domain, Range>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
23134 auto res = isl::map::preimage_domain(upma);
23135 return typed::union_map<Domain2, Range>(res);
23138 template <typename Domain, typename Range>
23139 template <typename Range2>
23140 typed::map<Domain, Range2> typed::map<Domain, Range>::preimage_range(const typed::multi_aff<Range2, Range> &ma) const
23142 auto res = isl::map::preimage_range(ma);
23143 return typed::map<Domain, Range2>(res);
23146 template <typename Domain, typename Range>
23147 template <typename Range2>
23148 typed::map<Domain, Range2> typed::map<Domain, Range>::preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const
23150 auto res = isl::map::preimage_range(pma);
23151 return typed::map<Domain, Range2>(res);
23154 template <typename Domain, typename Range>
23155 template <typename Range2>
23156 typed::union_map<Domain, Range2> typed::map<Domain, Range>::preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const
23158 auto res = isl::map::preimage_range(upma);
23159 return typed::union_map<Domain, Range2>(res);
23162 template <typename Domain, typename Range>
23163 template <typename Domain2, typename Range2>
23164 typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, Range>::product(const typed::map<Domain2, Range2> &map2) const
23166 auto res = isl::map::product(map2);
23167 return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
23170 template <typename Domain, typename Range>
23171 template <typename Domain2, typename Range2>
23172 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, Range>::product(const typed::union_map<Domain2, Range2> &umap2) const
23174 auto res = isl::map::product(umap2);
23175 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
23178 template <typename Domain, typename Range>
23179 template <typename Domain2, typename Range2>
23180 typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, Range>::product(const typed::basic_map<Domain2, Range2> &map2) const
23182 auto res = isl::map::product(map2);
23183 return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
23186 template <typename Domain, typename Range>
23187 typed::map<Domain, Range> typed::map<Domain, Range>::project_out_all_params() const
23189 auto res = isl::map::project_out_all_params();
23190 return typed::map<Domain, Range>(res);
23193 template <typename Domain, typename Range>
23194 typed::map<Domain, Range> typed::map<Domain, Range>::project_out_param(const typed::id<Anonymous> &id) const
23196 auto res = isl::map::project_out_param(id);
23197 return typed::map<Domain, Range>(res);
23200 template <typename Domain, typename Range>
23201 typed::map<Domain, Range> typed::map<Domain, Range>::project_out_param(const std::string &id) const
23203 auto res = isl::map::project_out_param(id);
23204 return typed::map<Domain, Range>(res);
23207 template <typename Domain, typename Range>
23208 typed::map<Domain, Range> typed::map<Domain, Range>::project_out_param(const typed::id_list<Anonymous> &list) const
23210 auto res = isl::map::project_out_param(list);
23211 return typed::map<Domain, Range>(res);
23214 template <typename Domain, typename Range>
23215 typed::set<Range> typed::map<Domain, Range>::range() const
23217 auto res = isl::map::range();
23218 return typed::set<Range>(res);
23221 template <typename Domain, typename Range>
23222 typed::fixed_box<Domain, Range> typed::map<Domain, Range>::range_lattice_tile() const
23224 auto res = isl::map::range_lattice_tile();
23225 return typed::fixed_box<Domain, Range>(res);
23228 template <typename Domain, typename Range>
23229 typed::union_map<pair<Domain, Range>, Range> typed::map<Domain, Range>::range_map() const
23231 auto res = isl::map::range_map();
23232 return typed::union_map<pair<Domain, Range>, Range>(res);
23235 template <typename Domain, typename Range>
23236 template <typename Range2>
23237 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, Range>::range_product(const typed::map<Domain, Range2> &map2) const
23239 auto res = isl::map::range_product(map2);
23240 return typed::map<Domain, pair<Range, Range2>>(res);
23243 template <typename Domain, typename Range>
23244 template <typename Range2>
23245 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, Range>::range_product(const typed::union_map<Domain, Range2> &umap2) const
23247 auto res = isl::map::range_product(umap2);
23248 return typed::union_map<Domain, pair<Range, Range2>>(res);
23251 template <typename Domain, typename Range>
23252 template <typename Range2>
23253 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, Range>::range_product(const typed::basic_map<Domain, Range2> &map2) const
23255 auto res = isl::map::range_product(map2);
23256 return typed::map<Domain, pair<Range, Range2>>(res);
23259 template <typename Domain, typename Range>
23260 typed::fixed_box<Domain, Range> typed::map<Domain, Range>::range_simple_fixed_box_hull() const
23262 auto res = isl::map::range_simple_fixed_box_hull();
23263 return typed::fixed_box<Domain, Range>(res);
23266 template <typename Domain, typename Range>
23267 typed::map<Range, Domain> typed::map<Domain, Range>::reverse() const
23269 auto res = isl::map::reverse();
23270 return typed::map<Range, Domain>(res);
23273 template <typename Domain, typename Range>
23274 template <typename Domain2>
23275 typed::map<Domain2, Range> typed::map<Domain, Range>::set_domain_tuple(const typed::id<Anonymous> &id) const
23277 auto res = isl::map::set_domain_tuple(id);
23278 return typed::map<Domain2, Range>(res);
23281 template <typename Domain, typename Range>
23282 template <typename Domain2>
23283 typed::map<Domain2, Range> typed::map<Domain, Range>::set_domain_tuple(const std::string &id) const
23285 auto res = isl::map::set_domain_tuple(id);
23286 return typed::map<Domain2, Range>(res);
23289 template <typename Domain, typename Range>
23290 template <typename Range2>
23291 typed::map<Domain, Range2> typed::map<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
23293 auto res = isl::map::set_range_tuple(id);
23294 return typed::map<Domain, Range2>(res);
23297 template <typename Domain, typename Range>
23298 template <typename Range2>
23299 typed::map<Domain, Range2> typed::map<Domain, Range>::set_range_tuple(const std::string &id) const
23301 auto res = isl::map::set_range_tuple(id);
23302 return typed::map<Domain, Range2>(res);
23305 template <typename Domain, typename Range>
23306 typed::space<Domain, Range> typed::map<Domain, Range>::space() const
23308 auto res = isl::map::space();
23309 return typed::space<Domain, Range>(res);
23312 template <typename Domain, typename Range>
23313 typed::map<Domain, Range> typed::map<Domain, Range>::subtract(const typed::map<Domain, Range> &map2) const
23315 auto res = isl::map::subtract(map2);
23316 return typed::map<Domain, Range>(res);
23319 template <typename Domain, typename Range>
23320 typed::union_map<Domain, Range> typed::map<Domain, Range>::subtract(const typed::union_map<Domain, Range> &umap2) const
23322 auto res = isl::map::subtract(umap2);
23323 return typed::union_map<Domain, Range>(res);
23326 template <typename Domain, typename Range>
23327 typed::map<Domain, Range> typed::map<Domain, Range>::subtract(const typed::basic_map<Domain, Range> &map2) const
23329 auto res = isl::map::subtract(map2);
23330 return typed::map<Domain, Range>(res);
23333 template <typename Domain, typename Range>
23334 typed::union_map<Domain, Range> typed::map<Domain, Range>::subtract_domain(const typed::union_set<Domain> &dom) const
23336 auto res = isl::map::subtract_domain(dom);
23337 return typed::union_map<Domain, Range>(res);
23340 template <typename Domain, typename Range>
23341 typed::union_map<Domain, Range> typed::map<Domain, Range>::subtract_range(const typed::union_set<Range> &dom) const
23343 auto res = isl::map::subtract_range(dom);
23344 return typed::union_map<Domain, Range>(res);
23347 template <typename Domain, typename Range>
23348 typed::union_map<Domain, Range> typed::map<Domain, Range>::to_union_map() const
23350 auto res = isl::map::to_union_map();
23351 return typed::union_map<Domain, Range>(res);
23354 template <typename Domain, typename Range>
23355 typed::map<Domain, Range> typed::map<Domain, Range>::unite(const typed::map<Domain, Range> &map2) const
23357 auto res = isl::map::unite(map2);
23358 return typed::map<Domain, Range>(res);
23361 template <typename Domain, typename Range>
23362 typed::union_map<Domain, Range> typed::map<Domain, Range>::unite(const typed::union_map<Domain, Range> &umap2) const
23364 auto res = isl::map::unite(umap2);
23365 return typed::union_map<Domain, Range>(res);
23368 template <typename Domain, typename Range>
23369 typed::map<Domain, Range> typed::map<Domain, Range>::unite(const typed::basic_map<Domain, Range> &map2) const
23371 auto res = isl::map::unite(map2);
23372 return typed::map<Domain, Range>(res);
23375 template <typename Domain, typename Range>
23376 typed::map<Domain, Range> typed::map<Domain, Range>::universe(const typed::space<Domain, Range> &space)
23378 auto res = isl::map::universe(space);
23379 return typed::map<Domain, Range>(res);
23382 template <typename Domain, typename Range>
23383 typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::multi_pw_aff<Domain, Range> &upper) const
23385 auto res = isl::map::upper_bound(upper);
23386 return typed::map<Domain, Range>(res);
23389 template <typename Domain, typename Range>
23390 typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::aff<Domain, Range> &upper) const
23392 auto res = isl::map::upper_bound(upper);
23393 return typed::map<Domain, Range>(res);
23396 template <typename Domain, typename Range>
23397 typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::multi_aff<Domain, Range> &upper) const
23399 auto res = isl::map::upper_bound(upper);
23400 return typed::map<Domain, Range>(res);
23403 template <typename Domain, typename Range>
23404 typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::pw_aff<Domain, Range> &upper) const
23406 auto res = isl::map::upper_bound(upper);
23407 return typed::map<Domain, Range>(res);
23410 template <typename Domain, typename Range>
23411 typed::map<Domain, Range> typed::map<Domain, Range>::upper_bound(const typed::pw_multi_aff<Domain, Range> &upper) const
23413 auto res = isl::map::upper_bound(upper);
23414 return typed::map<Domain, Range>(res);
23417 template <typename Domain, typename Range>
23418 typed::set<pair<Domain, Range>> typed::map<Domain, Range>::wrap() const
23420 auto res = isl::map::wrap();
23421 return typed::set<pair<Domain, Range>>(res);
23424 template <typename Domain, typename Range, typename Range2>
23425 typed::map<pair<Domain, Range>, Range2>::map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap)
23426 : isl::map(bmap)
23430 template <typename Domain, typename Range, typename Range2>
23431 typed::map<pair<Domain, Range>, Range2>::map(const isl::ctx &ctx, const std::string &str)
23432 : isl::map(ctx, str)
23436 template <typename Domain, typename Range, typename Range2>
23437 template <typename Domain2>
23438 typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::apply_domain(const typed::map<pair<Domain, Range>, Domain2> &map2) const
23440 auto res = isl::map::apply_domain(map2);
23441 return typed::map<Domain2, Range2>(res);
23444 template <typename Domain, typename Range, typename Range2>
23445 template <typename Domain2>
23446 typed::union_map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const
23448 auto res = isl::map::apply_domain(umap2);
23449 return typed::union_map<Domain2, Range2>(res);
23452 template <typename Domain, typename Range, typename Range2>
23453 template <typename Domain2>
23454 typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &map2) const
23456 auto res = isl::map::apply_domain(map2);
23457 return typed::map<Domain2, Range2>(res);
23460 template <typename Domain, typename Range, typename Range2>
23461 template <typename Arg3>
23462 typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::apply_range(const typed::map<Range2, Arg3> &map2) const
23464 auto res = isl::map::apply_range(map2);
23465 return typed::map<pair<Domain, Range>, Arg3>(res);
23468 template <typename Domain, typename Range, typename Range2>
23469 template <typename Arg3>
23470 typed::union_map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::apply_range(const typed::union_map<Range2, Arg3> &umap2) const
23472 auto res = isl::map::apply_range(umap2);
23473 return typed::union_map<pair<Domain, Range>, Arg3>(res);
23476 template <typename Domain, typename Range, typename Range2>
23477 template <typename Arg3>
23478 typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::apply_range(const typed::basic_map<Range2, Arg3> &map2) const
23480 auto res = isl::map::apply_range(map2);
23481 return typed::map<pair<Domain, Range>, Arg3>(res);
23484 template <typename Domain, typename Range, typename Range2>
23485 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_map() const
23487 auto res = isl::map::as_map();
23488 return typed::map<pair<Domain, Range>, Range2>(res);
23491 template <typename Domain, typename Range, typename Range2>
23492 typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_multi_union_pw_aff() const
23494 auto res = isl::map::as_multi_union_pw_aff();
23495 return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
23498 template <typename Domain, typename Range, typename Range2>
23499 typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_pw_multi_aff() const
23501 auto res = isl::map::as_pw_multi_aff();
23502 return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
23505 template <typename Domain, typename Range, typename Range2>
23506 typed::union_pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::as_union_pw_multi_aff() const
23508 auto res = isl::map::as_union_pw_multi_aff();
23509 return typed::union_pw_multi_aff<pair<Domain, Range>, Range2>(res);
23512 template <typename Domain, typename Range, typename Range2>
23513 typed::set<Range2> typed::map<pair<Domain, Range>, Range2>::bind_domain(const typed::multi_id<pair<Domain, Range>> &tuple) const
23515 auto res = isl::map::bind_domain(tuple);
23516 return typed::set<Range2>(res);
23519 template <typename Domain, typename Range, typename Range2>
23520 typed::set<pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::bind_range(const typed::multi_id<Range2> &tuple) const
23522 auto res = isl::map::bind_range(tuple);
23523 return typed::set<pair<Domain, Range>>(res);
23526 template <typename Domain, typename Range, typename Range2>
23527 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::coalesce() const
23529 auto res = isl::map::coalesce();
23530 return typed::map<pair<Domain, Range>, Range2>(res);
23533 template <typename Domain, typename Range, typename Range2>
23534 typed::map<Domain, pair<Range, Range2>> typed::map<pair<Domain, Range>, Range2>::curry() const
23536 auto res = isl::map::curry();
23537 return typed::map<Domain, pair<Range, Range2>>(res);
23540 template <typename Domain, typename Range, typename Range2>
23541 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::detect_equalities() const
23543 auto res = isl::map::detect_equalities();
23544 return typed::map<pair<Domain, Range>, Range2>(res);
23547 template <typename Domain, typename Range, typename Range2>
23548 typed::set<pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::domain() const
23550 auto res = isl::map::domain();
23551 return typed::set<pair<Domain, Range>>(res);
23554 template <typename Domain, typename Range, typename Range2>
23555 typed::map<Domain, Range2> typed::map<pair<Domain, Range>, Range2>::domain_factor_domain() const
23557 auto res = isl::map::domain_factor_domain();
23558 return typed::map<Domain, Range2>(res);
23561 template <typename Domain, typename Range, typename Range2>
23562 typed::map<Range, Range2> typed::map<pair<Domain, Range>, Range2>::domain_factor_range() const
23564 auto res = isl::map::domain_factor_range();
23565 return typed::map<Range, Range2>(res);
23568 template <typename Domain, typename Range, typename Range2>
23569 typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::domain_map() const
23571 auto res = isl::map::domain_map();
23572 return typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
23575 template <typename Domain, typename Range, typename Range2>
23576 typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::domain_map_union_pw_multi_aff() const
23578 auto res = isl::map::domain_map_union_pw_multi_aff();
23579 return typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
23582 template <typename Domain, typename Range, typename Range2>
23583 template <typename Domain2>
23584 typed::map<pair<pair<Domain, Range>, Domain2>, Range2> typed::map<pair<Domain, Range>, Range2>::domain_product(const typed::map<Domain2, Range2> &map2) const
23586 auto res = isl::map::domain_product(map2);
23587 return typed::map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
23590 template <typename Domain, typename Range, typename Range2>
23591 template <typename Domain2>
23592 typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::map<pair<Domain, Range>, Range2>::domain_product(const typed::union_map<Domain2, Range2> &umap2) const
23594 auto res = isl::map::domain_product(umap2);
23595 return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
23598 template <typename Domain, typename Range, typename Range2>
23599 template <typename Domain2>
23600 typed::map<pair<pair<Domain, Range>, Domain2>, Range2> typed::map<pair<Domain, Range>, Range2>::domain_product(const typed::basic_map<Domain2, Range2> &map2) const
23602 auto res = isl::map::domain_product(map2);
23603 return typed::map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
23606 template <typename Domain, typename Range, typename Range2>
23607 typed::map<pair<Range, Domain>, Range2> typed::map<pair<Domain, Range>, Range2>::domain_reverse() const
23609 auto res = isl::map::domain_reverse();
23610 return typed::map<pair<Range, Domain>, Range2>(res);
23613 template <typename Domain, typename Range, typename Range2>
23614 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::drop_unused_params() const
23616 auto res = isl::map::drop_unused_params();
23617 return typed::map<pair<Domain, Range>, Range2>(res);
23620 template <typename Domain, typename Range, typename Range2>
23621 bool typed::map<pair<Domain, Range>, Range2>::every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const
23623 auto lambda_test = [&] (isl::map arg0) {
23624 return test(typed::map<pair<Domain, Range>, Range2>(arg0));
23626 return isl::map::every_map(lambda_test);
23629 template <typename Domain, typename Range, typename Range2>
23630 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const
23632 auto res = isl::map::extract_map(space);
23633 return typed::map<pair<Domain, Range>, Range2>(res);
23636 template <typename Domain, typename Range, typename Range2>
23637 typed::map<Anonymous, Range2> typed::map<pair<Domain, Range>, Range2>::flatten_domain() const
23639 auto res = isl::map::flatten_domain();
23640 return typed::map<Anonymous, Range2>(res);
23643 template <typename Domain, typename Range, typename Range2>
23644 void typed::map<pair<Domain, Range>, Range2>::foreach_basic_map(const std::function<void(typed::basic_map<pair<Domain, Range>, Range2>)> &fn) const
23646 auto lambda_fn = [&] (isl::basic_map arg0) {
23647 return fn(typed::basic_map<pair<Domain, Range>, Range2>(arg0));
23649 return isl::map::foreach_basic_map(lambda_fn);
23652 template <typename Domain, typename Range, typename Range2>
23653 void typed::map<pair<Domain, Range>, Range2>::foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const
23655 auto lambda_fn = [&] (isl::map arg0) {
23656 return fn(typed::map<pair<Domain, Range>, Range2>(arg0));
23658 return isl::map::foreach_map(lambda_fn);
23661 template <typename Domain, typename Range, typename Range2>
23662 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist(const typed::map<pair<Domain, Range>, Range2> &context) const
23664 auto res = isl::map::gist(context);
23665 return typed::map<pair<Domain, Range>, Range2>(res);
23668 template <typename Domain, typename Range, typename Range2>
23669 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const
23671 auto res = isl::map::gist(context);
23672 return typed::union_map<pair<Domain, Range>, Range2>(res);
23675 template <typename Domain, typename Range, typename Range2>
23676 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const
23678 auto res = isl::map::gist(context);
23679 return typed::map<pair<Domain, Range>, Range2>(res);
23682 template <typename Domain, typename Range, typename Range2>
23683 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::set<pair<Domain, Range>> &context) const
23685 auto res = isl::map::gist_domain(context);
23686 return typed::map<pair<Domain, Range>, Range2>(res);
23689 template <typename Domain, typename Range, typename Range2>
23690 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const
23692 auto res = isl::map::gist_domain(uset);
23693 return typed::union_map<pair<Domain, Range>, Range2>(res);
23696 template <typename Domain, typename Range, typename Range2>
23697 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::basic_set<pair<Domain, Range>> &context) const
23699 auto res = isl::map::gist_domain(context);
23700 return typed::map<pair<Domain, Range>, Range2>(res);
23703 template <typename Domain, typename Range, typename Range2>
23704 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_domain(const typed::point<pair<Domain, Range>> &context) const
23706 auto res = isl::map::gist_domain(context);
23707 return typed::map<pair<Domain, Range>, Range2>(res);
23710 template <typename Domain, typename Range, typename Range2>
23711 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_params(const typed::set<> &context) const
23713 auto res = isl::map::gist_params(context);
23714 return typed::map<pair<Domain, Range>, Range2>(res);
23717 template <typename Domain, typename Range, typename Range2>
23718 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_params(const typed::basic_set<> &context) const
23720 auto res = isl::map::gist_params(context);
23721 return typed::map<pair<Domain, Range>, Range2>(res);
23724 template <typename Domain, typename Range, typename Range2>
23725 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::gist_params(const typed::point<> &context) const
23727 auto res = isl::map::gist_params(context);
23728 return typed::map<pair<Domain, Range>, Range2>(res);
23731 template <typename Domain, typename Range, typename Range2>
23732 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect(const typed::map<pair<Domain, Range>, Range2> &map2) const
23734 auto res = isl::map::intersect(map2);
23735 return typed::map<pair<Domain, Range>, Range2>(res);
23738 template <typename Domain, typename Range, typename Range2>
23739 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
23741 auto res = isl::map::intersect(umap2);
23742 return typed::union_map<pair<Domain, Range>, Range2>(res);
23745 template <typename Domain, typename Range, typename Range2>
23746 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const
23748 auto res = isl::map::intersect(map2);
23749 return typed::map<pair<Domain, Range>, Range2>(res);
23752 template <typename Domain, typename Range, typename Range2>
23753 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::set<pair<Domain, Range>> &set) const
23755 auto res = isl::map::intersect_domain(set);
23756 return typed::map<pair<Domain, Range>, Range2>(res);
23759 template <typename Domain, typename Range, typename Range2>
23760 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::space<pair<Domain, Range>> &space) const
23762 auto res = isl::map::intersect_domain(space);
23763 return typed::union_map<pair<Domain, Range>, Range2>(res);
23766 template <typename Domain, typename Range, typename Range2>
23767 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const
23769 auto res = isl::map::intersect_domain(uset);
23770 return typed::union_map<pair<Domain, Range>, Range2>(res);
23773 template <typename Domain, typename Range, typename Range2>
23774 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::basic_set<pair<Domain, Range>> &set) const
23776 auto res = isl::map::intersect_domain(set);
23777 return typed::map<pair<Domain, Range>, Range2>(res);
23780 template <typename Domain, typename Range, typename Range2>
23781 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain(const typed::point<pair<Domain, Range>> &set) const
23783 auto res = isl::map::intersect_domain(set);
23784 return typed::map<pair<Domain, Range>, Range2>(res);
23787 template <typename Domain, typename Range, typename Range2>
23788 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::set<Domain> &domain) const
23790 auto res = isl::map::intersect_domain_wrapped_domain(domain);
23791 return typed::map<pair<Domain, Range>, Range2>(res);
23794 template <typename Domain, typename Range, typename Range2>
23795 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::union_set<Domain> &domain) const
23797 auto res = isl::map::intersect_domain_wrapped_domain(domain);
23798 return typed::union_map<pair<Domain, Range>, Range2>(res);
23801 template <typename Domain, typename Range, typename Range2>
23802 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::basic_set<Domain> &domain) const
23804 auto res = isl::map::intersect_domain_wrapped_domain(domain);
23805 return typed::map<pair<Domain, Range>, Range2>(res);
23808 template <typename Domain, typename Range, typename Range2>
23809 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::point<Domain> &domain) const
23811 auto res = isl::map::intersect_domain_wrapped_domain(domain);
23812 return typed::map<pair<Domain, Range>, Range2>(res);
23815 template <typename Domain, typename Range, typename Range2>
23816 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_params(const typed::set<> &params) const
23818 auto res = isl::map::intersect_params(params);
23819 return typed::map<pair<Domain, Range>, Range2>(res);
23822 template <typename Domain, typename Range, typename Range2>
23823 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_params(const typed::basic_set<> &params) const
23825 auto res = isl::map::intersect_params(params);
23826 return typed::map<pair<Domain, Range>, Range2>(res);
23829 template <typename Domain, typename Range, typename Range2>
23830 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_params(const typed::point<> &params) const
23832 auto res = isl::map::intersect_params(params);
23833 return typed::map<pair<Domain, Range>, Range2>(res);
23836 template <typename Domain, typename Range, typename Range2>
23837 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::set<Range2> &set) const
23839 auto res = isl::map::intersect_range(set);
23840 return typed::map<pair<Domain, Range>, Range2>(res);
23843 template <typename Domain, typename Range, typename Range2>
23844 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::space<Range2> &space) const
23846 auto res = isl::map::intersect_range(space);
23847 return typed::union_map<pair<Domain, Range>, Range2>(res);
23850 template <typename Domain, typename Range, typename Range2>
23851 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::union_set<Range2> &uset) const
23853 auto res = isl::map::intersect_range(uset);
23854 return typed::union_map<pair<Domain, Range>, Range2>(res);
23857 template <typename Domain, typename Range, typename Range2>
23858 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::basic_set<Range2> &set) const
23860 auto res = isl::map::intersect_range(set);
23861 return typed::map<pair<Domain, Range>, Range2>(res);
23864 template <typename Domain, typename Range, typename Range2>
23865 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::intersect_range(const typed::point<Range2> &set) const
23867 auto res = isl::map::intersect_range(set);
23868 return typed::map<pair<Domain, Range>, Range2>(res);
23871 template <typename Domain, typename Range, typename Range2>
23872 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmax() const
23874 auto res = isl::map::lexmax();
23875 return typed::map<pair<Domain, Range>, Range2>(res);
23878 template <typename Domain, typename Range, typename Range2>
23879 typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmax_pw_multi_aff() const
23881 auto res = isl::map::lexmax_pw_multi_aff();
23882 return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
23885 template <typename Domain, typename Range, typename Range2>
23886 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmin() const
23888 auto res = isl::map::lexmin();
23889 return typed::map<pair<Domain, Range>, Range2>(res);
23892 template <typename Domain, typename Range, typename Range2>
23893 typed::pw_multi_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lexmin_pw_multi_aff() const
23895 auto res = isl::map::lexmin_pw_multi_aff();
23896 return typed::pw_multi_aff<pair<Domain, Range>, Range2>(res);
23899 template <typename Domain, typename Range, typename Range2>
23900 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &lower) const
23902 auto res = isl::map::lower_bound(lower);
23903 return typed::map<pair<Domain, Range>, Range2>(res);
23906 template <typename Domain, typename Range, typename Range2>
23907 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::aff<pair<Domain, Range>, Range2> &lower) const
23909 auto res = isl::map::lower_bound(lower);
23910 return typed::map<pair<Domain, Range>, Range2>(res);
23913 template <typename Domain, typename Range, typename Range2>
23914 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &lower) const
23916 auto res = isl::map::lower_bound(lower);
23917 return typed::map<pair<Domain, Range>, Range2>(res);
23920 template <typename Domain, typename Range, typename Range2>
23921 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &lower) const
23923 auto res = isl::map::lower_bound(lower);
23924 return typed::map<pair<Domain, Range>, Range2>(res);
23927 template <typename Domain, typename Range, typename Range2>
23928 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::lower_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &lower) const
23930 auto res = isl::map::lower_bound(lower);
23931 return typed::map<pair<Domain, Range>, Range2>(res);
23934 template <typename Domain, typename Range, typename Range2>
23935 typed::map_list<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::map_list() const
23937 auto res = isl::map::map_list();
23938 return typed::map_list<pair<Domain, Range>, Range2>(res);
23941 template <typename Domain, typename Range, typename Range2>
23942 typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::max_multi_pw_aff() const
23944 auto res = isl::map::max_multi_pw_aff();
23945 return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
23948 template <typename Domain, typename Range, typename Range2>
23949 typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::min_multi_pw_aff() const
23951 auto res = isl::map::min_multi_pw_aff();
23952 return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
23955 template <typename Domain, typename Range, typename Range2>
23956 typed::set<> typed::map<pair<Domain, Range>, Range2>::params() const
23958 auto res = isl::map::params();
23959 return typed::set<>(res);
23962 template <typename Domain, typename Range, typename Range2>
23963 template <typename Domain2>
23964 typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
23966 auto res = isl::map::preimage_domain(ma);
23967 return typed::map<Domain2, Range2>(res);
23970 template <typename Domain, typename Range, typename Range2>
23971 template <typename Domain2>
23972 typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
23974 auto res = isl::map::preimage_domain(mpa);
23975 return typed::map<Domain2, Range2>(res);
23978 template <typename Domain, typename Range, typename Range2>
23979 template <typename Domain2>
23980 typed::map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
23982 auto res = isl::map::preimage_domain(pma);
23983 return typed::map<Domain2, Range2>(res);
23986 template <typename Domain, typename Range, typename Range2>
23987 template <typename Domain2>
23988 typed::union_map<Domain2, Range2> typed::map<pair<Domain, Range>, Range2>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
23990 auto res = isl::map::preimage_domain(upma);
23991 return typed::union_map<Domain2, Range2>(res);
23994 template <typename Domain, typename Range, typename Range2>
23995 template <typename Arg3>
23996 typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const
23998 auto res = isl::map::preimage_range(ma);
23999 return typed::map<pair<Domain, Range>, Arg3>(res);
24002 template <typename Domain, typename Range, typename Range2>
24003 template <typename Arg3>
24004 typed::map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const
24006 auto res = isl::map::preimage_range(pma);
24007 return typed::map<pair<Domain, Range>, Arg3>(res);
24010 template <typename Domain, typename Range, typename Range2>
24011 template <typename Arg3>
24012 typed::union_map<pair<Domain, Range>, Arg3> typed::map<pair<Domain, Range>, Range2>::preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const
24014 auto res = isl::map::preimage_range(upma);
24015 return typed::union_map<pair<Domain, Range>, Arg3>(res);
24018 template <typename Domain, typename Range, typename Range2>
24019 template <typename Domain2, typename Arg3>
24020 typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::product(const typed::map<Domain2, Arg3> &map2) const
24022 auto res = isl::map::product(map2);
24023 return typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
24026 template <typename Domain, typename Range, typename Range2>
24027 template <typename Domain2, typename Arg3>
24028 typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::product(const typed::union_map<Domain2, Arg3> &umap2) const
24030 auto res = isl::map::product(umap2);
24031 return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
24034 template <typename Domain, typename Range, typename Range2>
24035 template <typename Domain2, typename Arg3>
24036 typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::product(const typed::basic_map<Domain2, Arg3> &map2) const
24038 auto res = isl::map::product(map2);
24039 return typed::map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
24042 template <typename Domain, typename Range, typename Range2>
24043 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::project_out_all_params() const
24045 auto res = isl::map::project_out_all_params();
24046 return typed::map<pair<Domain, Range>, Range2>(res);
24049 template <typename Domain, typename Range, typename Range2>
24050 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::project_out_param(const typed::id<Anonymous> &id) const
24052 auto res = isl::map::project_out_param(id);
24053 return typed::map<pair<Domain, Range>, Range2>(res);
24056 template <typename Domain, typename Range, typename Range2>
24057 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::project_out_param(const std::string &id) const
24059 auto res = isl::map::project_out_param(id);
24060 return typed::map<pair<Domain, Range>, Range2>(res);
24063 template <typename Domain, typename Range, typename Range2>
24064 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::project_out_param(const typed::id_list<Anonymous> &list) const
24066 auto res = isl::map::project_out_param(list);
24067 return typed::map<pair<Domain, Range>, Range2>(res);
24070 template <typename Domain, typename Range, typename Range2>
24071 typed::set<Range2> typed::map<pair<Domain, Range>, Range2>::range() const
24073 auto res = isl::map::range();
24074 return typed::set<Range2>(res);
24077 template <typename Domain, typename Range, typename Range2>
24078 typed::fixed_box<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::range_lattice_tile() const
24080 auto res = isl::map::range_lattice_tile();
24081 return typed::fixed_box<pair<Domain, Range>, Range2>(res);
24084 template <typename Domain, typename Range, typename Range2>
24085 typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> typed::map<pair<Domain, Range>, Range2>::range_map() const
24087 auto res = isl::map::range_map();
24088 return typed::union_map<pair<pair<Domain, Range>, Range2>, Range2>(res);
24091 template <typename Domain, typename Range, typename Range2>
24092 template <typename Arg3>
24093 typed::map<pair<Domain, Range>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::range_product(const typed::map<pair<Domain, Range>, Arg3> &map2) const
24095 auto res = isl::map::range_product(map2);
24096 return typed::map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
24099 template <typename Domain, typename Range, typename Range2>
24100 template <typename Arg3>
24101 typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const
24103 auto res = isl::map::range_product(umap2);
24104 return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
24107 template <typename Domain, typename Range, typename Range2>
24108 template <typename Arg3>
24109 typed::map<pair<Domain, Range>, pair<Range2, Arg3>> typed::map<pair<Domain, Range>, Range2>::range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &map2) const
24111 auto res = isl::map::range_product(map2);
24112 return typed::map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
24115 template <typename Domain, typename Range, typename Range2>
24116 typed::fixed_box<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::range_simple_fixed_box_hull() const
24118 auto res = isl::map::range_simple_fixed_box_hull();
24119 return typed::fixed_box<pair<Domain, Range>, Range2>(res);
24122 template <typename Domain, typename Range, typename Range2>
24123 typed::map<Range2, pair<Domain, Range>> typed::map<pair<Domain, Range>, Range2>::reverse() const
24125 auto res = isl::map::reverse();
24126 return typed::map<Range2, pair<Domain, Range>>(res);
24129 template <typename Domain, typename Range, typename Range2>
24130 template <typename Arg2>
24131 typed::map<pair<Domain, Range>, Arg2> typed::map<pair<Domain, Range>, Range2>::set_range_tuple(const typed::id<Anonymous> &id) const
24133 auto res = isl::map::set_range_tuple(id);
24134 return typed::map<pair<Domain, Range>, Arg2>(res);
24137 template <typename Domain, typename Range, typename Range2>
24138 template <typename Arg2>
24139 typed::map<pair<Domain, Range>, Arg2> typed::map<pair<Domain, Range>, Range2>::set_range_tuple(const std::string &id) const
24141 auto res = isl::map::set_range_tuple(id);
24142 return typed::map<pair<Domain, Range>, Arg2>(res);
24145 template <typename Domain, typename Range, typename Range2>
24146 typed::space<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::space() const
24148 auto res = isl::map::space();
24149 return typed::space<pair<Domain, Range>, Range2>(res);
24152 template <typename Domain, typename Range, typename Range2>
24153 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract(const typed::map<pair<Domain, Range>, Range2> &map2) const
24155 auto res = isl::map::subtract(map2);
24156 return typed::map<pair<Domain, Range>, Range2>(res);
24159 template <typename Domain, typename Range, typename Range2>
24160 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
24162 auto res = isl::map::subtract(umap2);
24163 return typed::union_map<pair<Domain, Range>, Range2>(res);
24166 template <typename Domain, typename Range, typename Range2>
24167 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const
24169 auto res = isl::map::subtract(map2);
24170 return typed::map<pair<Domain, Range>, Range2>(res);
24173 template <typename Domain, typename Range, typename Range2>
24174 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const
24176 auto res = isl::map::subtract_domain(dom);
24177 return typed::union_map<pair<Domain, Range>, Range2>(res);
24180 template <typename Domain, typename Range, typename Range2>
24181 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::subtract_range(const typed::union_set<Range2> &dom) const
24183 auto res = isl::map::subtract_range(dom);
24184 return typed::union_map<pair<Domain, Range>, Range2>(res);
24187 template <typename Domain, typename Range, typename Range2>
24188 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::to_union_map() const
24190 auto res = isl::map::to_union_map();
24191 return typed::union_map<pair<Domain, Range>, Range2>(res);
24194 template <typename Domain, typename Range, typename Range2>
24195 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::unite(const typed::map<pair<Domain, Range>, Range2> &map2) const
24197 auto res = isl::map::unite(map2);
24198 return typed::map<pair<Domain, Range>, Range2>(res);
24201 template <typename Domain, typename Range, typename Range2>
24202 typed::union_map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
24204 auto res = isl::map::unite(umap2);
24205 return typed::union_map<pair<Domain, Range>, Range2>(res);
24208 template <typename Domain, typename Range, typename Range2>
24209 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::unite(const typed::basic_map<pair<Domain, Range>, Range2> &map2) const
24211 auto res = isl::map::unite(map2);
24212 return typed::map<pair<Domain, Range>, Range2>(res);
24215 template <typename Domain, typename Range, typename Range2>
24216 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::universe(const typed::space<pair<Domain, Range>, Range2> &space)
24218 auto res = isl::map::universe(space);
24219 return typed::map<pair<Domain, Range>, Range2>(res);
24222 template <typename Domain, typename Range, typename Range2>
24223 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>, Range2> &upper) const
24225 auto res = isl::map::upper_bound(upper);
24226 return typed::map<pair<Domain, Range>, Range2>(res);
24229 template <typename Domain, typename Range, typename Range2>
24230 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::aff<pair<Domain, Range>, Range2> &upper) const
24232 auto res = isl::map::upper_bound(upper);
24233 return typed::map<pair<Domain, Range>, Range2>(res);
24236 template <typename Domain, typename Range, typename Range2>
24237 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::multi_aff<pair<Domain, Range>, Range2> &upper) const
24239 auto res = isl::map::upper_bound(upper);
24240 return typed::map<pair<Domain, Range>, Range2>(res);
24243 template <typename Domain, typename Range, typename Range2>
24244 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::pw_aff<pair<Domain, Range>, Range2> &upper) const
24246 auto res = isl::map::upper_bound(upper);
24247 return typed::map<pair<Domain, Range>, Range2>(res);
24250 template <typename Domain, typename Range, typename Range2>
24251 typed::map<pair<Domain, Range>, Range2> typed::map<pair<Domain, Range>, Range2>::upper_bound(const typed::pw_multi_aff<pair<Domain, Range>, Range2> &upper) const
24253 auto res = isl::map::upper_bound(upper);
24254 return typed::map<pair<Domain, Range>, Range2>(res);
24257 template <typename Domain, typename Range, typename Range2>
24258 typed::set<pair<pair<Domain, Range>, Range2>> typed::map<pair<Domain, Range>, Range2>::wrap() const
24260 auto res = isl::map::wrap();
24261 return typed::set<pair<pair<Domain, Range>, Range2>>(res);
24264 template <typename Domain>
24265 typed::map<Domain, Domain>::map(const typed::basic_map<Domain, Domain> &bmap)
24266 : isl::map(bmap)
24270 template <typename Domain>
24271 typed::map<Domain, Domain>::map(const isl::ctx &ctx, const std::string &str)
24272 : isl::map(ctx, str)
24276 template <typename Domain>
24277 template <typename Domain2>
24278 typed::map<Domain2, Domain> typed::map<Domain, Domain>::apply_domain(const typed::map<Domain, Domain2> &map2) const
24280 auto res = isl::map::apply_domain(map2);
24281 return typed::map<Domain2, Domain>(res);
24284 template <typename Domain>
24285 template <typename Domain2>
24286 typed::union_map<Domain2, Domain> typed::map<Domain, Domain>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
24288 auto res = isl::map::apply_domain(umap2);
24289 return typed::union_map<Domain2, Domain>(res);
24292 template <typename Domain>
24293 template <typename Domain2>
24294 typed::map<Domain2, Domain> typed::map<Domain, Domain>::apply_domain(const typed::basic_map<Domain, Domain2> &map2) const
24296 auto res = isl::map::apply_domain(map2);
24297 return typed::map<Domain2, Domain>(res);
24300 template <typename Domain>
24301 template <typename Range2>
24302 typed::map<Domain, Range2> typed::map<Domain, Domain>::apply_range(const typed::map<Domain, Range2> &map2) const
24304 auto res = isl::map::apply_range(map2);
24305 return typed::map<Domain, Range2>(res);
24308 template <typename Domain>
24309 template <typename Range2>
24310 typed::union_map<Domain, Range2> typed::map<Domain, Domain>::apply_range(const typed::union_map<Domain, Range2> &umap2) const
24312 auto res = isl::map::apply_range(umap2);
24313 return typed::union_map<Domain, Range2>(res);
24316 template <typename Domain>
24317 template <typename Range2>
24318 typed::map<Domain, Range2> typed::map<Domain, Domain>::apply_range(const typed::basic_map<Domain, Range2> &map2) const
24320 auto res = isl::map::apply_range(map2);
24321 return typed::map<Domain, Range2>(res);
24324 template <typename Domain>
24325 typed::map<Domain, Domain> typed::map<Domain, Domain>::as_map() const
24327 auto res = isl::map::as_map();
24328 return typed::map<Domain, Domain>(res);
24331 template <typename Domain>
24332 typed::multi_union_pw_aff<Domain, Domain> typed::map<Domain, Domain>::as_multi_union_pw_aff() const
24334 auto res = isl::map::as_multi_union_pw_aff();
24335 return typed::multi_union_pw_aff<Domain, Domain>(res);
24338 template <typename Domain>
24339 typed::pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::as_pw_multi_aff() const
24341 auto res = isl::map::as_pw_multi_aff();
24342 return typed::pw_multi_aff<Domain, Domain>(res);
24345 template <typename Domain>
24346 typed::union_pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::as_union_pw_multi_aff() const
24348 auto res = isl::map::as_union_pw_multi_aff();
24349 return typed::union_pw_multi_aff<Domain, Domain>(res);
24352 template <typename Domain>
24353 typed::set<Domain> typed::map<Domain, Domain>::bind_domain(const typed::multi_id<Domain> &tuple) const
24355 auto res = isl::map::bind_domain(tuple);
24356 return typed::set<Domain>(res);
24359 template <typename Domain>
24360 typed::set<Domain> typed::map<Domain, Domain>::bind_range(const typed::multi_id<Domain> &tuple) const
24362 auto res = isl::map::bind_range(tuple);
24363 return typed::set<Domain>(res);
24366 template <typename Domain>
24367 typed::map<Domain, Domain> typed::map<Domain, Domain>::coalesce() const
24369 auto res = isl::map::coalesce();
24370 return typed::map<Domain, Domain>(res);
24373 template <typename Domain>
24374 typed::set<Domain> typed::map<Domain, Domain>::deltas() const
24376 auto res = isl::map::deltas();
24377 return typed::set<Domain>(res);
24380 template <typename Domain>
24381 typed::map<Domain, Domain> typed::map<Domain, Domain>::detect_equalities() const
24383 auto res = isl::map::detect_equalities();
24384 return typed::map<Domain, Domain>(res);
24387 template <typename Domain>
24388 typed::set<Domain> typed::map<Domain, Domain>::domain() const
24390 auto res = isl::map::domain();
24391 return typed::set<Domain>(res);
24394 template <typename Domain>
24395 typed::union_map<pair<Domain, Domain>, Domain> typed::map<Domain, Domain>::domain_map() const
24397 auto res = isl::map::domain_map();
24398 return typed::union_map<pair<Domain, Domain>, Domain>(res);
24401 template <typename Domain>
24402 typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> typed::map<Domain, Domain>::domain_map_union_pw_multi_aff() const
24404 auto res = isl::map::domain_map_union_pw_multi_aff();
24405 return typed::union_pw_multi_aff<pair<Domain, Domain>, Domain>(res);
24408 template <typename Domain>
24409 template <typename Domain2>
24410 typed::map<pair<Domain, Domain2>, Domain> typed::map<Domain, Domain>::domain_product(const typed::map<Domain2, Domain> &map2) const
24412 auto res = isl::map::domain_product(map2);
24413 return typed::map<pair<Domain, Domain2>, Domain>(res);
24416 template <typename Domain>
24417 template <typename Domain2>
24418 typed::union_map<pair<Domain, Domain2>, Domain> typed::map<Domain, Domain>::domain_product(const typed::union_map<Domain2, Domain> &umap2) const
24420 auto res = isl::map::domain_product(umap2);
24421 return typed::union_map<pair<Domain, Domain2>, Domain>(res);
24424 template <typename Domain>
24425 template <typename Domain2>
24426 typed::map<pair<Domain, Domain2>, Domain> typed::map<Domain, Domain>::domain_product(const typed::basic_map<Domain2, Domain> &map2) const
24428 auto res = isl::map::domain_product(map2);
24429 return typed::map<pair<Domain, Domain2>, Domain>(res);
24432 template <typename Domain>
24433 typed::map<Domain, Domain> typed::map<Domain, Domain>::drop_unused_params() const
24435 auto res = isl::map::drop_unused_params();
24436 return typed::map<Domain, Domain>(res);
24439 template <typename Domain>
24440 template <typename Range>
24441 typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
24443 auto res = isl::map::eq_at(mpa);
24444 return typed::map<Domain, Domain>(res);
24447 template <typename Domain>
24448 template <typename Range>
24449 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const
24451 auto res = isl::map::eq_at(mupa);
24452 return typed::union_map<Domain, Domain>(res);
24455 template <typename Domain>
24456 typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::aff<Domain, Anonymous> &mpa) const
24458 auto res = isl::map::eq_at(mpa);
24459 return typed::map<Domain, Domain>(res);
24462 template <typename Domain>
24463 template <typename Range>
24464 typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::multi_aff<Domain, Range> &mpa) const
24466 auto res = isl::map::eq_at(mpa);
24467 return typed::map<Domain, Domain>(res);
24470 template <typename Domain>
24471 typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::pw_aff<Domain, Anonymous> &mpa) const
24473 auto res = isl::map::eq_at(mpa);
24474 return typed::map<Domain, Domain>(res);
24477 template <typename Domain>
24478 template <typename Range>
24479 typed::map<Domain, Domain> typed::map<Domain, Domain>::eq_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
24481 auto res = isl::map::eq_at(mpa);
24482 return typed::map<Domain, Domain>(res);
24485 template <typename Domain>
24486 bool typed::map<Domain, Domain>::every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const
24488 auto lambda_test = [&] (isl::map arg0) {
24489 return test(typed::map<Domain, Domain>(arg0));
24491 return isl::map::every_map(lambda_test);
24494 template <typename Domain>
24495 typed::map<Domain, Domain> typed::map<Domain, Domain>::extract_map(const typed::space<Domain, Domain> &space) const
24497 auto res = isl::map::extract_map(space);
24498 return typed::map<Domain, Domain>(res);
24501 template <typename Domain>
24502 void typed::map<Domain, Domain>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, Domain>)> &fn) const
24504 auto lambda_fn = [&] (isl::basic_map arg0) {
24505 return fn(typed::basic_map<Domain, Domain>(arg0));
24507 return isl::map::foreach_basic_map(lambda_fn);
24510 template <typename Domain>
24511 void typed::map<Domain, Domain>::foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const
24513 auto lambda_fn = [&] (isl::map arg0) {
24514 return fn(typed::map<Domain, Domain>(arg0));
24516 return isl::map::foreach_map(lambda_fn);
24519 template <typename Domain>
24520 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist(const typed::map<Domain, Domain> &context) const
24522 auto res = isl::map::gist(context);
24523 return typed::map<Domain, Domain>(res);
24526 template <typename Domain>
24527 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::gist(const typed::union_map<Domain, Domain> &context) const
24529 auto res = isl::map::gist(context);
24530 return typed::union_map<Domain, Domain>(res);
24533 template <typename Domain>
24534 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist(const typed::basic_map<Domain, Domain> &context) const
24536 auto res = isl::map::gist(context);
24537 return typed::map<Domain, Domain>(res);
24540 template <typename Domain>
24541 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::set<Domain> &context) const
24543 auto res = isl::map::gist_domain(context);
24544 return typed::map<Domain, Domain>(res);
24547 template <typename Domain>
24548 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::union_set<Domain> &uset) const
24550 auto res = isl::map::gist_domain(uset);
24551 return typed::union_map<Domain, Domain>(res);
24554 template <typename Domain>
24555 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::basic_set<Domain> &context) const
24557 auto res = isl::map::gist_domain(context);
24558 return typed::map<Domain, Domain>(res);
24561 template <typename Domain>
24562 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_domain(const typed::point<Domain> &context) const
24564 auto res = isl::map::gist_domain(context);
24565 return typed::map<Domain, Domain>(res);
24568 template <typename Domain>
24569 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_params(const typed::set<> &context) const
24571 auto res = isl::map::gist_params(context);
24572 return typed::map<Domain, Domain>(res);
24575 template <typename Domain>
24576 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_params(const typed::basic_set<> &context) const
24578 auto res = isl::map::gist_params(context);
24579 return typed::map<Domain, Domain>(res);
24582 template <typename Domain>
24583 typed::map<Domain, Domain> typed::map<Domain, Domain>::gist_params(const typed::point<> &context) const
24585 auto res = isl::map::gist_params(context);
24586 return typed::map<Domain, Domain>(res);
24589 template <typename Domain>
24590 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect(const typed::map<Domain, Domain> &map2) const
24592 auto res = isl::map::intersect(map2);
24593 return typed::map<Domain, Domain>(res);
24596 template <typename Domain>
24597 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect(const typed::union_map<Domain, Domain> &umap2) const
24599 auto res = isl::map::intersect(umap2);
24600 return typed::union_map<Domain, Domain>(res);
24603 template <typename Domain>
24604 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect(const typed::basic_map<Domain, Domain> &map2) const
24606 auto res = isl::map::intersect(map2);
24607 return typed::map<Domain, Domain>(res);
24610 template <typename Domain>
24611 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::set<Domain> &set) const
24613 auto res = isl::map::intersect_domain(set);
24614 return typed::map<Domain, Domain>(res);
24617 template <typename Domain>
24618 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::space<Domain> &space) const
24620 auto res = isl::map::intersect_domain(space);
24621 return typed::union_map<Domain, Domain>(res);
24624 template <typename Domain>
24625 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::union_set<Domain> &uset) const
24627 auto res = isl::map::intersect_domain(uset);
24628 return typed::union_map<Domain, Domain>(res);
24631 template <typename Domain>
24632 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::basic_set<Domain> &set) const
24634 auto res = isl::map::intersect_domain(set);
24635 return typed::map<Domain, Domain>(res);
24638 template <typename Domain>
24639 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_domain(const typed::point<Domain> &set) const
24641 auto res = isl::map::intersect_domain(set);
24642 return typed::map<Domain, Domain>(res);
24645 template <typename Domain>
24646 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_params(const typed::set<> &params) const
24648 auto res = isl::map::intersect_params(params);
24649 return typed::map<Domain, Domain>(res);
24652 template <typename Domain>
24653 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_params(const typed::basic_set<> &params) const
24655 auto res = isl::map::intersect_params(params);
24656 return typed::map<Domain, Domain>(res);
24659 template <typename Domain>
24660 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_params(const typed::point<> &params) const
24662 auto res = isl::map::intersect_params(params);
24663 return typed::map<Domain, Domain>(res);
24666 template <typename Domain>
24667 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::set<Domain> &set) const
24669 auto res = isl::map::intersect_range(set);
24670 return typed::map<Domain, Domain>(res);
24673 template <typename Domain>
24674 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::space<Domain> &space) const
24676 auto res = isl::map::intersect_range(space);
24677 return typed::union_map<Domain, Domain>(res);
24680 template <typename Domain>
24681 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::union_set<Domain> &uset) const
24683 auto res = isl::map::intersect_range(uset);
24684 return typed::union_map<Domain, Domain>(res);
24687 template <typename Domain>
24688 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::basic_set<Domain> &set) const
24690 auto res = isl::map::intersect_range(set);
24691 return typed::map<Domain, Domain>(res);
24694 template <typename Domain>
24695 typed::map<Domain, Domain> typed::map<Domain, Domain>::intersect_range(const typed::point<Domain> &set) const
24697 auto res = isl::map::intersect_range(set);
24698 return typed::map<Domain, Domain>(res);
24701 template <typename Domain>
24702 template <typename Range>
24703 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
24705 auto res = isl::map::lex_ge_at(mpa);
24706 return typed::map<Domain, Domain>(res);
24709 template <typename Domain>
24710 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::aff<Domain, Anonymous> &mpa) const
24712 auto res = isl::map::lex_ge_at(mpa);
24713 return typed::map<Domain, Domain>(res);
24716 template <typename Domain>
24717 template <typename Range>
24718 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::multi_aff<Domain, Range> &mpa) const
24720 auto res = isl::map::lex_ge_at(mpa);
24721 return typed::map<Domain, Domain>(res);
24724 template <typename Domain>
24725 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::pw_aff<Domain, Anonymous> &mpa) const
24727 auto res = isl::map::lex_ge_at(mpa);
24728 return typed::map<Domain, Domain>(res);
24731 template <typename Domain>
24732 template <typename Range>
24733 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_ge_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
24735 auto res = isl::map::lex_ge_at(mpa);
24736 return typed::map<Domain, Domain>(res);
24739 template <typename Domain>
24740 template <typename Range>
24741 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
24743 auto res = isl::map::lex_gt_at(mpa);
24744 return typed::map<Domain, Domain>(res);
24747 template <typename Domain>
24748 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::aff<Domain, Anonymous> &mpa) const
24750 auto res = isl::map::lex_gt_at(mpa);
24751 return typed::map<Domain, Domain>(res);
24754 template <typename Domain>
24755 template <typename Range>
24756 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::multi_aff<Domain, Range> &mpa) const
24758 auto res = isl::map::lex_gt_at(mpa);
24759 return typed::map<Domain, Domain>(res);
24762 template <typename Domain>
24763 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::pw_aff<Domain, Anonymous> &mpa) const
24765 auto res = isl::map::lex_gt_at(mpa);
24766 return typed::map<Domain, Domain>(res);
24769 template <typename Domain>
24770 template <typename Range>
24771 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_gt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
24773 auto res = isl::map::lex_gt_at(mpa);
24774 return typed::map<Domain, Domain>(res);
24777 template <typename Domain>
24778 template <typename Range>
24779 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
24781 auto res = isl::map::lex_le_at(mpa);
24782 return typed::map<Domain, Domain>(res);
24785 template <typename Domain>
24786 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::aff<Domain, Anonymous> &mpa) const
24788 auto res = isl::map::lex_le_at(mpa);
24789 return typed::map<Domain, Domain>(res);
24792 template <typename Domain>
24793 template <typename Range>
24794 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::multi_aff<Domain, Range> &mpa) const
24796 auto res = isl::map::lex_le_at(mpa);
24797 return typed::map<Domain, Domain>(res);
24800 template <typename Domain>
24801 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::pw_aff<Domain, Anonymous> &mpa) const
24803 auto res = isl::map::lex_le_at(mpa);
24804 return typed::map<Domain, Domain>(res);
24807 template <typename Domain>
24808 template <typename Range>
24809 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_le_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
24811 auto res = isl::map::lex_le_at(mpa);
24812 return typed::map<Domain, Domain>(res);
24815 template <typename Domain>
24816 template <typename Range>
24817 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::multi_pw_aff<Domain, Range> &mpa) const
24819 auto res = isl::map::lex_lt_at(mpa);
24820 return typed::map<Domain, Domain>(res);
24823 template <typename Domain>
24824 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::aff<Domain, Anonymous> &mpa) const
24826 auto res = isl::map::lex_lt_at(mpa);
24827 return typed::map<Domain, Domain>(res);
24830 template <typename Domain>
24831 template <typename Range>
24832 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::multi_aff<Domain, Range> &mpa) const
24834 auto res = isl::map::lex_lt_at(mpa);
24835 return typed::map<Domain, Domain>(res);
24838 template <typename Domain>
24839 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::pw_aff<Domain, Anonymous> &mpa) const
24841 auto res = isl::map::lex_lt_at(mpa);
24842 return typed::map<Domain, Domain>(res);
24845 template <typename Domain>
24846 template <typename Range>
24847 typed::map<Domain, Domain> typed::map<Domain, Domain>::lex_lt_at(const typed::pw_multi_aff<Domain, Range> &mpa) const
24849 auto res = isl::map::lex_lt_at(mpa);
24850 return typed::map<Domain, Domain>(res);
24853 template <typename Domain>
24854 typed::map<Domain, Domain> typed::map<Domain, Domain>::lexmax() const
24856 auto res = isl::map::lexmax();
24857 return typed::map<Domain, Domain>(res);
24860 template <typename Domain>
24861 typed::pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::lexmax_pw_multi_aff() const
24863 auto res = isl::map::lexmax_pw_multi_aff();
24864 return typed::pw_multi_aff<Domain, Domain>(res);
24867 template <typename Domain>
24868 typed::map<Domain, Domain> typed::map<Domain, Domain>::lexmin() const
24870 auto res = isl::map::lexmin();
24871 return typed::map<Domain, Domain>(res);
24874 template <typename Domain>
24875 typed::pw_multi_aff<Domain, Domain> typed::map<Domain, Domain>::lexmin_pw_multi_aff() const
24877 auto res = isl::map::lexmin_pw_multi_aff();
24878 return typed::pw_multi_aff<Domain, Domain>(res);
24881 template <typename Domain>
24882 typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::multi_pw_aff<Domain, Domain> &lower) const
24884 auto res = isl::map::lower_bound(lower);
24885 return typed::map<Domain, Domain>(res);
24888 template <typename Domain>
24889 typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::aff<Domain, Domain> &lower) const
24891 auto res = isl::map::lower_bound(lower);
24892 return typed::map<Domain, Domain>(res);
24895 template <typename Domain>
24896 typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::multi_aff<Domain, Domain> &lower) const
24898 auto res = isl::map::lower_bound(lower);
24899 return typed::map<Domain, Domain>(res);
24902 template <typename Domain>
24903 typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::pw_aff<Domain, Domain> &lower) const
24905 auto res = isl::map::lower_bound(lower);
24906 return typed::map<Domain, Domain>(res);
24909 template <typename Domain>
24910 typed::map<Domain, Domain> typed::map<Domain, Domain>::lower_bound(const typed::pw_multi_aff<Domain, Domain> &lower) const
24912 auto res = isl::map::lower_bound(lower);
24913 return typed::map<Domain, Domain>(res);
24916 template <typename Domain>
24917 typed::map_list<Domain, Domain> typed::map<Domain, Domain>::map_list() const
24919 auto res = isl::map::map_list();
24920 return typed::map_list<Domain, Domain>(res);
24923 template <typename Domain>
24924 typed::multi_pw_aff<Domain, Domain> typed::map<Domain, Domain>::max_multi_pw_aff() const
24926 auto res = isl::map::max_multi_pw_aff();
24927 return typed::multi_pw_aff<Domain, Domain>(res);
24930 template <typename Domain>
24931 typed::multi_pw_aff<Domain, Domain> typed::map<Domain, Domain>::min_multi_pw_aff() const
24933 auto res = isl::map::min_multi_pw_aff();
24934 return typed::multi_pw_aff<Domain, Domain>(res);
24937 template <typename Domain>
24938 typed::set<> typed::map<Domain, Domain>::params() const
24940 auto res = isl::map::params();
24941 return typed::set<>(res);
24944 template <typename Domain>
24945 template <typename Domain2>
24946 typed::map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
24948 auto res = isl::map::preimage_domain(ma);
24949 return typed::map<Domain2, Domain>(res);
24952 template <typename Domain>
24953 template <typename Domain2>
24954 typed::map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
24956 auto res = isl::map::preimage_domain(mpa);
24957 return typed::map<Domain2, Domain>(res);
24960 template <typename Domain>
24961 template <typename Domain2>
24962 typed::map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
24964 auto res = isl::map::preimage_domain(pma);
24965 return typed::map<Domain2, Domain>(res);
24968 template <typename Domain>
24969 template <typename Domain2>
24970 typed::union_map<Domain2, Domain> typed::map<Domain, Domain>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
24972 auto res = isl::map::preimage_domain(upma);
24973 return typed::union_map<Domain2, Domain>(res);
24976 template <typename Domain>
24977 template <typename Range2>
24978 typed::map<Domain, Range2> typed::map<Domain, Domain>::preimage_range(const typed::multi_aff<Range2, Domain> &ma) const
24980 auto res = isl::map::preimage_range(ma);
24981 return typed::map<Domain, Range2>(res);
24984 template <typename Domain>
24985 template <typename Range2>
24986 typed::map<Domain, Range2> typed::map<Domain, Domain>::preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const
24988 auto res = isl::map::preimage_range(pma);
24989 return typed::map<Domain, Range2>(res);
24992 template <typename Domain>
24993 template <typename Range2>
24994 typed::union_map<Domain, Range2> typed::map<Domain, Domain>::preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const
24996 auto res = isl::map::preimage_range(upma);
24997 return typed::union_map<Domain, Range2>(res);
25000 template <typename Domain>
25001 template <typename Domain2, typename Range2>
25002 typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::map<Domain, Domain>::product(const typed::map<Domain2, Range2> &map2) const
25004 auto res = isl::map::product(map2);
25005 return typed::map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
25008 template <typename Domain>
25009 template <typename Domain2, typename Range2>
25010 typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::map<Domain, Domain>::product(const typed::union_map<Domain2, Range2> &umap2) const
25012 auto res = isl::map::product(umap2);
25013 return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
25016 template <typename Domain>
25017 template <typename Domain2, typename Range2>
25018 typed::map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::map<Domain, Domain>::product(const typed::basic_map<Domain2, Range2> &map2) const
25020 auto res = isl::map::product(map2);
25021 return typed::map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
25024 template <typename Domain>
25025 typed::map<Domain, Domain> typed::map<Domain, Domain>::project_out_all_params() const
25027 auto res = isl::map::project_out_all_params();
25028 return typed::map<Domain, Domain>(res);
25031 template <typename Domain>
25032 typed::map<Domain, Domain> typed::map<Domain, Domain>::project_out_param(const typed::id<Anonymous> &id) const
25034 auto res = isl::map::project_out_param(id);
25035 return typed::map<Domain, Domain>(res);
25038 template <typename Domain>
25039 typed::map<Domain, Domain> typed::map<Domain, Domain>::project_out_param(const std::string &id) const
25041 auto res = isl::map::project_out_param(id);
25042 return typed::map<Domain, Domain>(res);
25045 template <typename Domain>
25046 typed::map<Domain, Domain> typed::map<Domain, Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
25048 auto res = isl::map::project_out_param(list);
25049 return typed::map<Domain, Domain>(res);
25052 template <typename Domain>
25053 typed::set<Domain> typed::map<Domain, Domain>::range() const
25055 auto res = isl::map::range();
25056 return typed::set<Domain>(res);
25059 template <typename Domain>
25060 typed::fixed_box<Domain, Domain> typed::map<Domain, Domain>::range_lattice_tile() const
25062 auto res = isl::map::range_lattice_tile();
25063 return typed::fixed_box<Domain, Domain>(res);
25066 template <typename Domain>
25067 typed::union_map<pair<Domain, Domain>, Domain> typed::map<Domain, Domain>::range_map() const
25069 auto res = isl::map::range_map();
25070 return typed::union_map<pair<Domain, Domain>, Domain>(res);
25073 template <typename Domain>
25074 template <typename Range2>
25075 typed::map<Domain, pair<Domain, Range2>> typed::map<Domain, Domain>::range_product(const typed::map<Domain, Range2> &map2) const
25077 auto res = isl::map::range_product(map2);
25078 return typed::map<Domain, pair<Domain, Range2>>(res);
25081 template <typename Domain>
25082 template <typename Range2>
25083 typed::union_map<Domain, pair<Domain, Range2>> typed::map<Domain, Domain>::range_product(const typed::union_map<Domain, Range2> &umap2) const
25085 auto res = isl::map::range_product(umap2);
25086 return typed::union_map<Domain, pair<Domain, Range2>>(res);
25089 template <typename Domain>
25090 template <typename Range2>
25091 typed::map<Domain, pair<Domain, Range2>> typed::map<Domain, Domain>::range_product(const typed::basic_map<Domain, Range2> &map2) const
25093 auto res = isl::map::range_product(map2);
25094 return typed::map<Domain, pair<Domain, Range2>>(res);
25097 template <typename Domain>
25098 typed::fixed_box<Domain, Domain> typed::map<Domain, Domain>::range_simple_fixed_box_hull() const
25100 auto res = isl::map::range_simple_fixed_box_hull();
25101 return typed::fixed_box<Domain, Domain>(res);
25104 template <typename Domain>
25105 typed::map<Domain, Domain> typed::map<Domain, Domain>::reverse() const
25107 auto res = isl::map::reverse();
25108 return typed::map<Domain, Domain>(res);
25111 template <typename Domain>
25112 template <typename Domain2>
25113 typed::map<Domain2, Domain> typed::map<Domain, Domain>::set_domain_tuple(const typed::id<Anonymous> &id) const
25115 auto res = isl::map::set_domain_tuple(id);
25116 return typed::map<Domain2, Domain>(res);
25119 template <typename Domain>
25120 template <typename Domain2>
25121 typed::map<Domain2, Domain> typed::map<Domain, Domain>::set_domain_tuple(const std::string &id) const
25123 auto res = isl::map::set_domain_tuple(id);
25124 return typed::map<Domain2, Domain>(res);
25127 template <typename Domain>
25128 template <typename Range2>
25129 typed::map<Domain, Range2> typed::map<Domain, Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
25131 auto res = isl::map::set_range_tuple(id);
25132 return typed::map<Domain, Range2>(res);
25135 template <typename Domain>
25136 template <typename Range2>
25137 typed::map<Domain, Range2> typed::map<Domain, Domain>::set_range_tuple(const std::string &id) const
25139 auto res = isl::map::set_range_tuple(id);
25140 return typed::map<Domain, Range2>(res);
25143 template <typename Domain>
25144 typed::space<Domain, Domain> typed::map<Domain, Domain>::space() const
25146 auto res = isl::map::space();
25147 return typed::space<Domain, Domain>(res);
25150 template <typename Domain>
25151 typed::map<Domain, Domain> typed::map<Domain, Domain>::subtract(const typed::map<Domain, Domain> &map2) const
25153 auto res = isl::map::subtract(map2);
25154 return typed::map<Domain, Domain>(res);
25157 template <typename Domain>
25158 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::subtract(const typed::union_map<Domain, Domain> &umap2) const
25160 auto res = isl::map::subtract(umap2);
25161 return typed::union_map<Domain, Domain>(res);
25164 template <typename Domain>
25165 typed::map<Domain, Domain> typed::map<Domain, Domain>::subtract(const typed::basic_map<Domain, Domain> &map2) const
25167 auto res = isl::map::subtract(map2);
25168 return typed::map<Domain, Domain>(res);
25171 template <typename Domain>
25172 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::subtract_domain(const typed::union_set<Domain> &dom) const
25174 auto res = isl::map::subtract_domain(dom);
25175 return typed::union_map<Domain, Domain>(res);
25178 template <typename Domain>
25179 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::subtract_range(const typed::union_set<Domain> &dom) const
25181 auto res = isl::map::subtract_range(dom);
25182 return typed::union_map<Domain, Domain>(res);
25185 template <typename Domain>
25186 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::to_union_map() const
25188 auto res = isl::map::to_union_map();
25189 return typed::union_map<Domain, Domain>(res);
25192 template <typename Domain>
25193 typed::map<Domain, Domain> typed::map<Domain, Domain>::unite(const typed::map<Domain, Domain> &map2) const
25195 auto res = isl::map::unite(map2);
25196 return typed::map<Domain, Domain>(res);
25199 template <typename Domain>
25200 typed::union_map<Domain, Domain> typed::map<Domain, Domain>::unite(const typed::union_map<Domain, Domain> &umap2) const
25202 auto res = isl::map::unite(umap2);
25203 return typed::union_map<Domain, Domain>(res);
25206 template <typename Domain>
25207 typed::map<Domain, Domain> typed::map<Domain, Domain>::unite(const typed::basic_map<Domain, Domain> &map2) const
25209 auto res = isl::map::unite(map2);
25210 return typed::map<Domain, Domain>(res);
25213 template <typename Domain>
25214 typed::map<Domain, Domain> typed::map<Domain, Domain>::universe(const typed::space<Domain, Domain> &space)
25216 auto res = isl::map::universe(space);
25217 return typed::map<Domain, Domain>(res);
25220 template <typename Domain>
25221 typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::multi_pw_aff<Domain, Domain> &upper) const
25223 auto res = isl::map::upper_bound(upper);
25224 return typed::map<Domain, Domain>(res);
25227 template <typename Domain>
25228 typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::aff<Domain, Domain> &upper) const
25230 auto res = isl::map::upper_bound(upper);
25231 return typed::map<Domain, Domain>(res);
25234 template <typename Domain>
25235 typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::multi_aff<Domain, Domain> &upper) const
25237 auto res = isl::map::upper_bound(upper);
25238 return typed::map<Domain, Domain>(res);
25241 template <typename Domain>
25242 typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::pw_aff<Domain, Domain> &upper) const
25244 auto res = isl::map::upper_bound(upper);
25245 return typed::map<Domain, Domain>(res);
25248 template <typename Domain>
25249 typed::map<Domain, Domain> typed::map<Domain, Domain>::upper_bound(const typed::pw_multi_aff<Domain, Domain> &upper) const
25251 auto res = isl::map::upper_bound(upper);
25252 return typed::map<Domain, Domain>(res);
25255 template <typename Domain>
25256 typed::set<pair<Domain, Domain>> typed::map<Domain, Domain>::wrap() const
25258 auto res = isl::map::wrap();
25259 return typed::set<pair<Domain, Domain>>(res);
25262 template <typename Domain, typename Range, typename Range2>
25263 typed::map<Domain, pair<Range, Range2>>::map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap)
25264 : isl::map(bmap)
25268 template <typename Domain, typename Range, typename Range2>
25269 typed::map<Domain, pair<Range, Range2>>::map(const isl::ctx &ctx, const std::string &str)
25270 : isl::map(ctx, str)
25274 template <typename Domain, typename Range, typename Range2>
25275 template <typename Domain2>
25276 typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::apply_domain(const typed::map<Domain, Domain2> &map2) const
25278 auto res = isl::map::apply_domain(map2);
25279 return typed::map<Domain2, pair<Range, Range2>>(res);
25282 template <typename Domain, typename Range, typename Range2>
25283 template <typename Domain2>
25284 typed::union_map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
25286 auto res = isl::map::apply_domain(umap2);
25287 return typed::union_map<Domain2, pair<Range, Range2>>(res);
25290 template <typename Domain, typename Range, typename Range2>
25291 template <typename Domain2>
25292 typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::apply_domain(const typed::basic_map<Domain, Domain2> &map2) const
25294 auto res = isl::map::apply_domain(map2);
25295 return typed::map<Domain2, pair<Range, Range2>>(res);
25298 template <typename Domain, typename Range, typename Range2>
25299 template <typename Arg3>
25300 typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg3> &map2) const
25302 auto res = isl::map::apply_range(map2);
25303 return typed::map<Domain, Arg3>(res);
25306 template <typename Domain, typename Range, typename Range2>
25307 template <typename Arg3>
25308 typed::union_map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const
25310 auto res = isl::map::apply_range(umap2);
25311 return typed::union_map<Domain, Arg3>(res);
25314 template <typename Domain, typename Range, typename Range2>
25315 template <typename Arg3>
25316 typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &map2) const
25318 auto res = isl::map::apply_range(map2);
25319 return typed::map<Domain, Arg3>(res);
25322 template <typename Domain, typename Range, typename Range2>
25323 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_map() const
25325 auto res = isl::map::as_map();
25326 return typed::map<Domain, pair<Range, Range2>>(res);
25329 template <typename Domain, typename Range, typename Range2>
25330 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
25332 auto res = isl::map::as_multi_union_pw_aff();
25333 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
25336 template <typename Domain, typename Range, typename Range2>
25337 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
25339 auto res = isl::map::as_pw_multi_aff();
25340 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
25343 template <typename Domain, typename Range, typename Range2>
25344 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::as_union_pw_multi_aff() const
25346 auto res = isl::map::as_union_pw_multi_aff();
25347 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
25350 template <typename Domain, typename Range, typename Range2>
25351 typed::set<pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
25353 auto res = isl::map::bind_domain(tuple);
25354 return typed::set<pair<Range, Range2>>(res);
25357 template <typename Domain, typename Range, typename Range2>
25358 typed::set<Domain> typed::map<Domain, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
25360 auto res = isl::map::bind_range(tuple);
25361 return typed::set<Domain>(res);
25364 template <typename Domain, typename Range, typename Range2>
25365 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::coalesce() const
25367 auto res = isl::map::coalesce();
25368 return typed::map<Domain, pair<Range, Range2>>(res);
25371 template <typename Domain, typename Range, typename Range2>
25372 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::detect_equalities() const
25374 auto res = isl::map::detect_equalities();
25375 return typed::map<Domain, pair<Range, Range2>>(res);
25378 template <typename Domain, typename Range, typename Range2>
25379 typed::set<Domain> typed::map<Domain, pair<Range, Range2>>::domain() const
25381 auto res = isl::map::domain();
25382 return typed::set<Domain>(res);
25385 template <typename Domain, typename Range, typename Range2>
25386 typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> typed::map<Domain, pair<Range, Range2>>::domain_map() const
25388 auto res = isl::map::domain_map();
25389 return typed::union_map<pair<Domain, pair<Range, Range2>>, Domain>(res);
25392 template <typename Domain, typename Range, typename Range2>
25393 typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::map<Domain, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
25395 auto res = isl::map::domain_map_union_pw_multi_aff();
25396 return typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
25399 template <typename Domain, typename Range, typename Range2>
25400 template <typename Domain2>
25401 typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
25403 auto res = isl::map::domain_product(map2);
25404 return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
25407 template <typename Domain, typename Range, typename Range2>
25408 template <typename Domain2>
25409 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
25411 auto res = isl::map::domain_product(umap2);
25412 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
25415 template <typename Domain, typename Range, typename Range2>
25416 template <typename Domain2>
25417 typed::map<pair<Domain, Domain2>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const
25419 auto res = isl::map::domain_product(map2);
25420 return typed::map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
25423 template <typename Domain, typename Range, typename Range2>
25424 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::drop_unused_params() const
25426 auto res = isl::map::drop_unused_params();
25427 return typed::map<Domain, pair<Range, Range2>>(res);
25430 template <typename Domain, typename Range, typename Range2>
25431 bool typed::map<Domain, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const
25433 auto lambda_test = [&] (isl::map arg0) {
25434 return test(typed::map<Domain, pair<Range, Range2>>(arg0));
25436 return isl::map::every_map(lambda_test);
25439 template <typename Domain, typename Range, typename Range2>
25440 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const
25442 auto res = isl::map::extract_map(space);
25443 return typed::map<Domain, pair<Range, Range2>>(res);
25446 template <typename Domain, typename Range, typename Range2>
25447 typed::map<Domain, Anonymous> typed::map<Domain, pair<Range, Range2>>::flatten_range() const
25449 auto res = isl::map::flatten_range();
25450 return typed::map<Domain, Anonymous>(res);
25453 template <typename Domain, typename Range, typename Range2>
25454 void typed::map<Domain, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<Domain, pair<Range, Range2>>)> &fn) const
25456 auto lambda_fn = [&] (isl::basic_map arg0) {
25457 return fn(typed::basic_map<Domain, pair<Range, Range2>>(arg0));
25459 return isl::map::foreach_basic_map(lambda_fn);
25462 template <typename Domain, typename Range, typename Range2>
25463 void typed::map<Domain, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const
25465 auto lambda_fn = [&] (isl::map arg0) {
25466 return fn(typed::map<Domain, pair<Range, Range2>>(arg0));
25468 return isl::map::foreach_map(lambda_fn);
25471 template <typename Domain, typename Range, typename Range2>
25472 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist(const typed::map<Domain, pair<Range, Range2>> &context) const
25474 auto res = isl::map::gist(context);
25475 return typed::map<Domain, pair<Range, Range2>>(res);
25478 template <typename Domain, typename Range, typename Range2>
25479 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const
25481 auto res = isl::map::gist(context);
25482 return typed::union_map<Domain, pair<Range, Range2>>(res);
25485 template <typename Domain, typename Range, typename Range2>
25486 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const
25488 auto res = isl::map::gist(context);
25489 return typed::map<Domain, pair<Range, Range2>>(res);
25492 template <typename Domain, typename Range, typename Range2>
25493 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::set<Domain> &context) const
25495 auto res = isl::map::gist_domain(context);
25496 return typed::map<Domain, pair<Range, Range2>>(res);
25499 template <typename Domain, typename Range, typename Range2>
25500 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::union_set<Domain> &uset) const
25502 auto res = isl::map::gist_domain(uset);
25503 return typed::union_map<Domain, pair<Range, Range2>>(res);
25506 template <typename Domain, typename Range, typename Range2>
25507 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::basic_set<Domain> &context) const
25509 auto res = isl::map::gist_domain(context);
25510 return typed::map<Domain, pair<Range, Range2>>(res);
25513 template <typename Domain, typename Range, typename Range2>
25514 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_domain(const typed::point<Domain> &context) const
25516 auto res = isl::map::gist_domain(context);
25517 return typed::map<Domain, pair<Range, Range2>>(res);
25520 template <typename Domain, typename Range, typename Range2>
25521 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_params(const typed::set<> &context) const
25523 auto res = isl::map::gist_params(context);
25524 return typed::map<Domain, pair<Range, Range2>>(res);
25527 template <typename Domain, typename Range, typename Range2>
25528 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_params(const typed::basic_set<> &context) const
25530 auto res = isl::map::gist_params(context);
25531 return typed::map<Domain, pair<Range, Range2>>(res);
25534 template <typename Domain, typename Range, typename Range2>
25535 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::gist_params(const typed::point<> &context) const
25537 auto res = isl::map::gist_params(context);
25538 return typed::map<Domain, pair<Range, Range2>>(res);
25541 template <typename Domain, typename Range, typename Range2>
25542 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect(const typed::map<Domain, pair<Range, Range2>> &map2) const
25544 auto res = isl::map::intersect(map2);
25545 return typed::map<Domain, pair<Range, Range2>>(res);
25548 template <typename Domain, typename Range, typename Range2>
25549 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
25551 auto res = isl::map::intersect(umap2);
25552 return typed::union_map<Domain, pair<Range, Range2>>(res);
25555 template <typename Domain, typename Range, typename Range2>
25556 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const
25558 auto res = isl::map::intersect(map2);
25559 return typed::map<Domain, pair<Range, Range2>>(res);
25562 template <typename Domain, typename Range, typename Range2>
25563 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
25565 auto res = isl::map::intersect_domain(set);
25566 return typed::map<Domain, pair<Range, Range2>>(res);
25569 template <typename Domain, typename Range, typename Range2>
25570 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
25572 auto res = isl::map::intersect_domain(space);
25573 return typed::union_map<Domain, pair<Range, Range2>>(res);
25576 template <typename Domain, typename Range, typename Range2>
25577 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
25579 auto res = isl::map::intersect_domain(uset);
25580 return typed::union_map<Domain, pair<Range, Range2>>(res);
25583 template <typename Domain, typename Range, typename Range2>
25584 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::basic_set<Domain> &set) const
25586 auto res = isl::map::intersect_domain(set);
25587 return typed::map<Domain, pair<Range, Range2>>(res);
25590 template <typename Domain, typename Range, typename Range2>
25591 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_domain(const typed::point<Domain> &set) const
25593 auto res = isl::map::intersect_domain(set);
25594 return typed::map<Domain, pair<Range, Range2>>(res);
25597 template <typename Domain, typename Range, typename Range2>
25598 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
25600 auto res = isl::map::intersect_params(params);
25601 return typed::map<Domain, pair<Range, Range2>>(res);
25604 template <typename Domain, typename Range, typename Range2>
25605 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &params) const
25607 auto res = isl::map::intersect_params(params);
25608 return typed::map<Domain, pair<Range, Range2>>(res);
25611 template <typename Domain, typename Range, typename Range2>
25612 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &params) const
25614 auto res = isl::map::intersect_params(params);
25615 return typed::map<Domain, pair<Range, Range2>>(res);
25618 template <typename Domain, typename Range, typename Range2>
25619 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
25621 auto res = isl::map::intersect_range(set);
25622 return typed::map<Domain, pair<Range, Range2>>(res);
25625 template <typename Domain, typename Range, typename Range2>
25626 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
25628 auto res = isl::map::intersect_range(space);
25629 return typed::union_map<Domain, pair<Range, Range2>>(res);
25632 template <typename Domain, typename Range, typename Range2>
25633 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
25635 auto res = isl::map::intersect_range(uset);
25636 return typed::union_map<Domain, pair<Range, Range2>>(res);
25639 template <typename Domain, typename Range, typename Range2>
25640 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const
25642 auto res = isl::map::intersect_range(set);
25643 return typed::map<Domain, pair<Range, Range2>>(res);
25646 template <typename Domain, typename Range, typename Range2>
25647 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &set) const
25649 auto res = isl::map::intersect_range(set);
25650 return typed::map<Domain, pair<Range, Range2>>(res);
25653 template <typename Domain, typename Range, typename Range2>
25654 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::set<Range> &domain) const
25656 auto res = isl::map::intersect_range_wrapped_domain(domain);
25657 return typed::map<Domain, pair<Range, Range2>>(res);
25660 template <typename Domain, typename Range, typename Range2>
25661 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const
25663 auto res = isl::map::intersect_range_wrapped_domain(domain);
25664 return typed::union_map<Domain, pair<Range, Range2>>(res);
25667 template <typename Domain, typename Range, typename Range2>
25668 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const
25670 auto res = isl::map::intersect_range_wrapped_domain(domain);
25671 return typed::map<Domain, pair<Range, Range2>>(res);
25674 template <typename Domain, typename Range, typename Range2>
25675 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::point<Range> &domain) const
25677 auto res = isl::map::intersect_range_wrapped_domain(domain);
25678 return typed::map<Domain, pair<Range, Range2>>(res);
25681 template <typename Domain, typename Range, typename Range2>
25682 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmax() const
25684 auto res = isl::map::lexmax();
25685 return typed::map<Domain, pair<Range, Range2>>(res);
25688 template <typename Domain, typename Range, typename Range2>
25689 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmax_pw_multi_aff() const
25691 auto res = isl::map::lexmax_pw_multi_aff();
25692 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
25695 template <typename Domain, typename Range, typename Range2>
25696 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmin() const
25698 auto res = isl::map::lexmin();
25699 return typed::map<Domain, pair<Range, Range2>>(res);
25702 template <typename Domain, typename Range, typename Range2>
25703 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lexmin_pw_multi_aff() const
25705 auto res = isl::map::lexmin_pw_multi_aff();
25706 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
25709 template <typename Domain, typename Range, typename Range2>
25710 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &lower) const
25712 auto res = isl::map::lower_bound(lower);
25713 return typed::map<Domain, pair<Range, Range2>>(res);
25716 template <typename Domain, typename Range, typename Range2>
25717 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::aff<Domain, pair<Range, Range2>> &lower) const
25719 auto res = isl::map::lower_bound(lower);
25720 return typed::map<Domain, pair<Range, Range2>>(res);
25723 template <typename Domain, typename Range, typename Range2>
25724 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &lower) const
25726 auto res = isl::map::lower_bound(lower);
25727 return typed::map<Domain, pair<Range, Range2>>(res);
25730 template <typename Domain, typename Range, typename Range2>
25731 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &lower) const
25733 auto res = isl::map::lower_bound(lower);
25734 return typed::map<Domain, pair<Range, Range2>>(res);
25737 template <typename Domain, typename Range, typename Range2>
25738 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::lower_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &lower) const
25740 auto res = isl::map::lower_bound(lower);
25741 return typed::map<Domain, pair<Range, Range2>>(res);
25744 template <typename Domain, typename Range, typename Range2>
25745 typed::map_list<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::map_list() const
25747 auto res = isl::map::map_list();
25748 return typed::map_list<Domain, pair<Range, Range2>>(res);
25751 template <typename Domain, typename Range, typename Range2>
25752 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::max_multi_pw_aff() const
25754 auto res = isl::map::max_multi_pw_aff();
25755 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
25758 template <typename Domain, typename Range, typename Range2>
25759 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::min_multi_pw_aff() const
25761 auto res = isl::map::min_multi_pw_aff();
25762 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
25765 template <typename Domain, typename Range, typename Range2>
25766 typed::set<> typed::map<Domain, pair<Range, Range2>>::params() const
25768 auto res = isl::map::params();
25769 return typed::set<>(res);
25772 template <typename Domain, typename Range, typename Range2>
25773 template <typename Domain2>
25774 typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
25776 auto res = isl::map::preimage_domain(ma);
25777 return typed::map<Domain2, pair<Range, Range2>>(res);
25780 template <typename Domain, typename Range, typename Range2>
25781 template <typename Domain2>
25782 typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
25784 auto res = isl::map::preimage_domain(mpa);
25785 return typed::map<Domain2, pair<Range, Range2>>(res);
25788 template <typename Domain, typename Range, typename Range2>
25789 template <typename Domain2>
25790 typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
25792 auto res = isl::map::preimage_domain(pma);
25793 return typed::map<Domain2, pair<Range, Range2>>(res);
25796 template <typename Domain, typename Range, typename Range2>
25797 template <typename Domain2>
25798 typed::union_map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
25800 auto res = isl::map::preimage_domain(upma);
25801 return typed::union_map<Domain2, pair<Range, Range2>>(res);
25804 template <typename Domain, typename Range, typename Range2>
25805 template <typename Arg3>
25806 typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const
25808 auto res = isl::map::preimage_range(ma);
25809 return typed::map<Domain, Arg3>(res);
25812 template <typename Domain, typename Range, typename Range2>
25813 template <typename Arg3>
25814 typed::map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const
25816 auto res = isl::map::preimage_range(pma);
25817 return typed::map<Domain, Arg3>(res);
25820 template <typename Domain, typename Range, typename Range2>
25821 template <typename Arg3>
25822 typed::union_map<Domain, Arg3> typed::map<Domain, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const
25824 auto res = isl::map::preimage_range(upma);
25825 return typed::union_map<Domain, Arg3>(res);
25828 template <typename Domain, typename Range, typename Range2>
25829 template <typename Domain2, typename Arg3>
25830 typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::product(const typed::map<Domain2, Arg3> &map2) const
25832 auto res = isl::map::product(map2);
25833 return typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
25836 template <typename Domain, typename Range, typename Range2>
25837 template <typename Domain2, typename Arg3>
25838 typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg3> &umap2) const
25840 auto res = isl::map::product(umap2);
25841 return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
25844 template <typename Domain, typename Range, typename Range2>
25845 template <typename Domain2, typename Arg3>
25846 typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg3> &map2) const
25848 auto res = isl::map::product(map2);
25849 return typed::map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
25852 template <typename Domain, typename Range, typename Range2>
25853 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::project_out_all_params() const
25855 auto res = isl::map::project_out_all_params();
25856 return typed::map<Domain, pair<Range, Range2>>(res);
25859 template <typename Domain, typename Range, typename Range2>
25860 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::project_out_param(const typed::id<Anonymous> &id) const
25862 auto res = isl::map::project_out_param(id);
25863 return typed::map<Domain, pair<Range, Range2>>(res);
25866 template <typename Domain, typename Range, typename Range2>
25867 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::project_out_param(const std::string &id) const
25869 auto res = isl::map::project_out_param(id);
25870 return typed::map<Domain, pair<Range, Range2>>(res);
25873 template <typename Domain, typename Range, typename Range2>
25874 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::project_out_param(const typed::id_list<Anonymous> &list) const
25876 auto res = isl::map::project_out_param(list);
25877 return typed::map<Domain, pair<Range, Range2>>(res);
25880 template <typename Domain, typename Range, typename Range2>
25881 typed::set<pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range() const
25883 auto res = isl::map::range();
25884 return typed::set<pair<Range, Range2>>(res);
25887 template <typename Domain, typename Range, typename Range2>
25888 typed::map<Domain, Range> typed::map<Domain, pair<Range, Range2>>::range_factor_domain() const
25890 auto res = isl::map::range_factor_domain();
25891 return typed::map<Domain, Range>(res);
25894 template <typename Domain, typename Range, typename Range2>
25895 typed::map<Domain, Range2> typed::map<Domain, pair<Range, Range2>>::range_factor_range() const
25897 auto res = isl::map::range_factor_range();
25898 return typed::map<Domain, Range2>(res);
25901 template <typename Domain, typename Range, typename Range2>
25902 typed::fixed_box<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range_lattice_tile() const
25904 auto res = isl::map::range_lattice_tile();
25905 return typed::fixed_box<Domain, pair<Range, Range2>>(res);
25908 template <typename Domain, typename Range, typename Range2>
25909 typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range_map() const
25911 auto res = isl::map::range_map();
25912 return typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
25915 template <typename Domain, typename Range, typename Range2>
25916 template <typename Arg3>
25917 typed::map<Domain, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::range_product(const typed::map<Domain, Arg3> &map2) const
25919 auto res = isl::map::range_product(map2);
25920 return typed::map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
25923 template <typename Domain, typename Range, typename Range2>
25924 template <typename Arg3>
25925 typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::range_product(const typed::union_map<Domain, Arg3> &umap2) const
25927 auto res = isl::map::range_product(umap2);
25928 return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
25931 template <typename Domain, typename Range, typename Range2>
25932 template <typename Arg3>
25933 typed::map<Domain, pair<pair<Range, Range2>, Arg3>> typed::map<Domain, pair<Range, Range2>>::range_product(const typed::basic_map<Domain, Arg3> &map2) const
25935 auto res = isl::map::range_product(map2);
25936 return typed::map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
25939 template <typename Domain, typename Range, typename Range2>
25940 typed::map<Domain, pair<Range2, Range>> typed::map<Domain, pair<Range, Range2>>::range_reverse() const
25942 auto res = isl::map::range_reverse();
25943 return typed::map<Domain, pair<Range2, Range>>(res);
25946 template <typename Domain, typename Range, typename Range2>
25947 typed::fixed_box<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::range_simple_fixed_box_hull() const
25949 auto res = isl::map::range_simple_fixed_box_hull();
25950 return typed::fixed_box<Domain, pair<Range, Range2>>(res);
25953 template <typename Domain, typename Range, typename Range2>
25954 typed::map<pair<Range, Range2>, Domain> typed::map<Domain, pair<Range, Range2>>::reverse() const
25956 auto res = isl::map::reverse();
25957 return typed::map<pair<Range, Range2>, Domain>(res);
25960 template <typename Domain, typename Range, typename Range2>
25961 template <typename Domain2>
25962 typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::set_domain_tuple(const typed::id<Anonymous> &id) const
25964 auto res = isl::map::set_domain_tuple(id);
25965 return typed::map<Domain2, pair<Range, Range2>>(res);
25968 template <typename Domain, typename Range, typename Range2>
25969 template <typename Domain2>
25970 typed::map<Domain2, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::set_domain_tuple(const std::string &id) const
25972 auto res = isl::map::set_domain_tuple(id);
25973 return typed::map<Domain2, pair<Range, Range2>>(res);
25976 template <typename Domain, typename Range, typename Range2>
25977 typed::space<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::space() const
25979 auto res = isl::map::space();
25980 return typed::space<Domain, pair<Range, Range2>>(res);
25983 template <typename Domain, typename Range, typename Range2>
25984 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract(const typed::map<Domain, pair<Range, Range2>> &map2) const
25986 auto res = isl::map::subtract(map2);
25987 return typed::map<Domain, pair<Range, Range2>>(res);
25990 template <typename Domain, typename Range, typename Range2>
25991 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
25993 auto res = isl::map::subtract(umap2);
25994 return typed::union_map<Domain, pair<Range, Range2>>(res);
25997 template <typename Domain, typename Range, typename Range2>
25998 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const
26000 auto res = isl::map::subtract(map2);
26001 return typed::map<Domain, pair<Range, Range2>>(res);
26004 template <typename Domain, typename Range, typename Range2>
26005 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &dom) const
26007 auto res = isl::map::subtract_domain(dom);
26008 return typed::union_map<Domain, pair<Range, Range2>>(res);
26011 template <typename Domain, typename Range, typename Range2>
26012 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
26014 auto res = isl::map::subtract_range(dom);
26015 return typed::union_map<Domain, pair<Range, Range2>>(res);
26018 template <typename Domain, typename Range, typename Range2>
26019 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::to_union_map() const
26021 auto res = isl::map::to_union_map();
26022 return typed::union_map<Domain, pair<Range, Range2>>(res);
26025 template <typename Domain, typename Range, typename Range2>
26026 typed::map<pair<Domain, Range>, Range2> typed::map<Domain, pair<Range, Range2>>::uncurry() const
26028 auto res = isl::map::uncurry();
26029 return typed::map<pair<Domain, Range>, Range2>(res);
26032 template <typename Domain, typename Range, typename Range2>
26033 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::unite(const typed::map<Domain, pair<Range, Range2>> &map2) const
26035 auto res = isl::map::unite(map2);
26036 return typed::map<Domain, pair<Range, Range2>>(res);
26039 template <typename Domain, typename Range, typename Range2>
26040 typed::union_map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
26042 auto res = isl::map::unite(umap2);
26043 return typed::union_map<Domain, pair<Range, Range2>>(res);
26046 template <typename Domain, typename Range, typename Range2>
26047 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::unite(const typed::basic_map<Domain, pair<Range, Range2>> &map2) const
26049 auto res = isl::map::unite(map2);
26050 return typed::map<Domain, pair<Range, Range2>>(res);
26053 template <typename Domain, typename Range, typename Range2>
26054 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::universe(const typed::space<Domain, pair<Range, Range2>> &space)
26056 auto res = isl::map::universe(space);
26057 return typed::map<Domain, pair<Range, Range2>>(res);
26060 template <typename Domain, typename Range, typename Range2>
26061 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &upper) const
26063 auto res = isl::map::upper_bound(upper);
26064 return typed::map<Domain, pair<Range, Range2>>(res);
26067 template <typename Domain, typename Range, typename Range2>
26068 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::aff<Domain, pair<Range, Range2>> &upper) const
26070 auto res = isl::map::upper_bound(upper);
26071 return typed::map<Domain, pair<Range, Range2>>(res);
26074 template <typename Domain, typename Range, typename Range2>
26075 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::multi_aff<Domain, pair<Range, Range2>> &upper) const
26077 auto res = isl::map::upper_bound(upper);
26078 return typed::map<Domain, pair<Range, Range2>>(res);
26081 template <typename Domain, typename Range, typename Range2>
26082 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::pw_aff<Domain, pair<Range, Range2>> &upper) const
26084 auto res = isl::map::upper_bound(upper);
26085 return typed::map<Domain, pair<Range, Range2>>(res);
26088 template <typename Domain, typename Range, typename Range2>
26089 typed::map<Domain, pair<Range, Range2>> typed::map<Domain, pair<Range, Range2>>::upper_bound(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upper) const
26091 auto res = isl::map::upper_bound(upper);
26092 return typed::map<Domain, pair<Range, Range2>>(res);
26095 template <typename Domain, typename Range, typename Range2>
26096 typed::set<pair<Domain, pair<Range, Range2>>> typed::map<Domain, pair<Range, Range2>>::wrap() const
26098 auto res = isl::map::wrap();
26099 return typed::set<pair<Domain, pair<Range, Range2>>>(res);
26102 template <typename T1, typename T2>
26103 typed::map<pair<T1, T2>, pair<T1, T2>>::map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap)
26104 : isl::map(bmap)
26108 template <typename T1, typename T2>
26109 typed::map<pair<T1, T2>, pair<T1, T2>>::map(const isl::ctx &ctx, const std::string &str)
26110 : isl::map(ctx, str)
26114 template <typename T1, typename T2>
26115 template <typename Domain2>
26116 typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
26118 auto res = isl::map::apply_domain(map2);
26119 return typed::map<Domain2, pair<T1, T2>>(res);
26122 template <typename T1, typename T2>
26123 template <typename Domain2>
26124 typed::union_map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
26126 auto res = isl::map::apply_domain(umap2);
26127 return typed::union_map<Domain2, pair<T1, T2>>(res);
26130 template <typename T1, typename T2>
26131 template <typename Domain2>
26132 typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const
26134 auto res = isl::map::apply_domain(map2);
26135 return typed::map<Domain2, pair<T1, T2>>(res);
26138 template <typename T1, typename T2>
26139 template <typename Range2>
26140 typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::map<pair<T1, T2>, Range2> &map2) const
26142 auto res = isl::map::apply_range(map2);
26143 return typed::map<pair<T1, T2>, Range2>(res);
26146 template <typename T1, typename T2>
26147 template <typename Range2>
26148 typed::union_map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
26150 auto res = isl::map::apply_range(umap2);
26151 return typed::union_map<pair<T1, T2>, Range2>(res);
26154 template <typename T1, typename T2>
26155 template <typename Range2>
26156 typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::basic_map<pair<T1, T2>, Range2> &map2) const
26158 auto res = isl::map::apply_range(map2);
26159 return typed::map<pair<T1, T2>, Range2>(res);
26162 template <typename T1, typename T2>
26163 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_map() const
26165 auto res = isl::map::as_map();
26166 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26169 template <typename T1, typename T2>
26170 typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_multi_union_pw_aff() const
26172 auto res = isl::map::as_multi_union_pw_aff();
26173 return typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
26176 template <typename T1, typename T2>
26177 typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_pw_multi_aff() const
26179 auto res = isl::map::as_pw_multi_aff();
26180 return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
26183 template <typename T1, typename T2>
26184 typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::as_union_pw_multi_aff() const
26186 auto res = isl::map::as_union_pw_multi_aff();
26187 return typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
26190 template <typename T1, typename T2>
26191 typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
26193 auto res = isl::map::bind_domain(tuple);
26194 return typed::set<pair<T1, T2>>(res);
26197 template <typename T1, typename T2>
26198 typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const
26200 auto res = isl::map::bind_range(tuple);
26201 return typed::set<pair<T1, T2>>(res);
26204 template <typename T1, typename T2>
26205 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::coalesce() const
26207 auto res = isl::map::coalesce();
26208 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26211 template <typename T1, typename T2>
26212 typed::map<T1, pair<T2, pair<T1, T2>>> typed::map<pair<T1, T2>, pair<T1, T2>>::curry() const
26214 auto res = isl::map::curry();
26215 return typed::map<T1, pair<T2, pair<T1, T2>>>(res);
26218 template <typename T1, typename T2>
26219 typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::deltas() const
26221 auto res = isl::map::deltas();
26222 return typed::set<pair<T1, T2>>(res);
26225 template <typename T1, typename T2>
26226 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::detect_equalities() const
26228 auto res = isl::map::detect_equalities();
26229 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26232 template <typename T1, typename T2>
26233 typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain() const
26235 auto res = isl::map::domain();
26236 return typed::set<pair<T1, T2>>(res);
26239 template <typename T1, typename T2>
26240 typed::map<T1, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_factor_domain() const
26242 auto res = isl::map::domain_factor_domain();
26243 return typed::map<T1, pair<T1, T2>>(res);
26246 template <typename T1, typename T2>
26247 typed::map<T2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_factor_range() const
26249 auto res = isl::map::domain_factor_range();
26250 return typed::map<T2, pair<T1, T2>>(res);
26253 template <typename T1, typename T2>
26254 typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_map() const
26256 auto res = isl::map::domain_map();
26257 return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
26260 template <typename T1, typename T2>
26261 typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_map_union_pw_multi_aff() const
26263 auto res = isl::map::domain_map_union_pw_multi_aff();
26264 return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
26267 template <typename T1, typename T2>
26268 template <typename Domain2>
26269 typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::map<Domain2, pair<T1, T2>> &map2) const
26271 auto res = isl::map::domain_product(map2);
26272 return typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
26275 template <typename T1, typename T2>
26276 template <typename Domain2>
26277 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const
26279 auto res = isl::map::domain_product(umap2);
26280 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
26283 template <typename T1, typename T2>
26284 template <typename Domain2>
26285 typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &map2) const
26287 auto res = isl::map::domain_product(map2);
26288 return typed::map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
26291 template <typename T1, typename T2>
26292 typed::map<pair<T2, T1>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::domain_reverse() const
26294 auto res = isl::map::domain_reverse();
26295 return typed::map<pair<T2, T1>, pair<T1, T2>>(res);
26298 template <typename T1, typename T2>
26299 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::drop_unused_params() const
26301 auto res = isl::map::drop_unused_params();
26302 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26305 template <typename T1, typename T2>
26306 template <typename Range>
26307 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
26309 auto res = isl::map::eq_at(mpa);
26310 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26313 template <typename T1, typename T2>
26314 template <typename Range>
26315 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const
26317 auto res = isl::map::eq_at(mupa);
26318 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26321 template <typename T1, typename T2>
26322 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const
26324 auto res = isl::map::eq_at(mpa);
26325 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26328 template <typename T1, typename T2>
26329 template <typename Range>
26330 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
26332 auto res = isl::map::eq_at(mpa);
26333 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26336 template <typename T1, typename T2>
26337 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const
26339 auto res = isl::map::eq_at(mpa);
26340 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26343 template <typename T1, typename T2>
26344 template <typename Range>
26345 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
26347 auto res = isl::map::eq_at(mpa);
26348 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26351 template <typename T1, typename T2>
26352 bool typed::map<pair<T1, T2>, pair<T1, T2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const
26354 auto lambda_test = [&] (isl::map arg0) {
26355 return test(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
26357 return isl::map::every_map(lambda_test);
26360 template <typename T1, typename T2>
26361 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const
26363 auto res = isl::map::extract_map(space);
26364 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26367 template <typename T1, typename T2>
26368 typed::map<Anonymous, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::flatten_domain() const
26370 auto res = isl::map::flatten_domain();
26371 return typed::map<Anonymous, pair<T1, T2>>(res);
26374 template <typename T1, typename T2>
26375 typed::map<pair<T1, T2>, Anonymous> typed::map<pair<T1, T2>, pair<T1, T2>>::flatten_range() const
26377 auto res = isl::map::flatten_range();
26378 return typed::map<pair<T1, T2>, Anonymous>(res);
26381 template <typename T1, typename T2>
26382 void typed::map<pair<T1, T2>, pair<T1, T2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
26384 auto lambda_fn = [&] (isl::basic_map arg0) {
26385 return fn(typed::basic_map<pair<T1, T2>, pair<T1, T2>>(arg0));
26387 return isl::map::foreach_basic_map(lambda_fn);
26390 template <typename T1, typename T2>
26391 void typed::map<pair<T1, T2>, pair<T1, T2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
26393 auto lambda_fn = [&] (isl::map arg0) {
26394 return fn(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
26396 return isl::map::foreach_map(lambda_fn);
26399 template <typename T1, typename T2>
26400 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const
26402 auto res = isl::map::gist(context);
26403 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26406 template <typename T1, typename T2>
26407 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const
26409 auto res = isl::map::gist(context);
26410 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26413 template <typename T1, typename T2>
26414 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const
26416 auto res = isl::map::gist(context);
26417 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26420 template <typename T1, typename T2>
26421 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
26423 auto res = isl::map::gist_domain(context);
26424 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26427 template <typename T1, typename T2>
26428 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
26430 auto res = isl::map::gist_domain(uset);
26431 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26434 template <typename T1, typename T2>
26435 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &context) const
26437 auto res = isl::map::gist_domain(context);
26438 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26441 template <typename T1, typename T2>
26442 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::point<pair<T1, T2>> &context) const
26444 auto res = isl::map::gist_domain(context);
26445 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26448 template <typename T1, typename T2>
26449 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_params(const typed::set<> &context) const
26451 auto res = isl::map::gist_params(context);
26452 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26455 template <typename T1, typename T2>
26456 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_params(const typed::basic_set<> &context) const
26458 auto res = isl::map::gist_params(context);
26459 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26462 template <typename T1, typename T2>
26463 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::gist_params(const typed::point<> &context) const
26465 auto res = isl::map::gist_params(context);
26466 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26469 template <typename T1, typename T2>
26470 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
26472 auto res = isl::map::intersect(map2);
26473 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26476 template <typename T1, typename T2>
26477 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
26479 auto res = isl::map::intersect(umap2);
26480 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26483 template <typename T1, typename T2>
26484 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const
26486 auto res = isl::map::intersect(map2);
26487 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26490 template <typename T1, typename T2>
26491 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
26493 auto res = isl::map::intersect_domain(set);
26494 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26497 template <typename T1, typename T2>
26498 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
26500 auto res = isl::map::intersect_domain(space);
26501 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26504 template <typename T1, typename T2>
26505 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
26507 auto res = isl::map::intersect_domain(uset);
26508 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26511 template <typename T1, typename T2>
26512 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const
26514 auto res = isl::map::intersect_domain(set);
26515 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26518 template <typename T1, typename T2>
26519 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::point<pair<T1, T2>> &set) const
26521 auto res = isl::map::intersect_domain(set);
26522 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26525 template <typename T1, typename T2>
26526 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::set<T1> &domain) const
26528 auto res = isl::map::intersect_domain_wrapped_domain(domain);
26529 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26532 template <typename T1, typename T2>
26533 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const
26535 auto res = isl::map::intersect_domain_wrapped_domain(domain);
26536 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26539 template <typename T1, typename T2>
26540 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const
26542 auto res = isl::map::intersect_domain_wrapped_domain(domain);
26543 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26546 template <typename T1, typename T2>
26547 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::point<T1> &domain) const
26549 auto res = isl::map::intersect_domain_wrapped_domain(domain);
26550 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26553 template <typename T1, typename T2>
26554 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::set<> &params) const
26556 auto res = isl::map::intersect_params(params);
26557 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26560 template <typename T1, typename T2>
26561 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::basic_set<> &params) const
26563 auto res = isl::map::intersect_params(params);
26564 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26567 template <typename T1, typename T2>
26568 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::point<> &params) const
26570 auto res = isl::map::intersect_params(params);
26571 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26574 template <typename T1, typename T2>
26575 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::set<pair<T1, T2>> &set) const
26577 auto res = isl::map::intersect_range(set);
26578 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26581 template <typename T1, typename T2>
26582 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::space<pair<T1, T2>> &space) const
26584 auto res = isl::map::intersect_range(space);
26585 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26588 template <typename T1, typename T2>
26589 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::union_set<pair<T1, T2>> &uset) const
26591 auto res = isl::map::intersect_range(uset);
26592 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26595 template <typename T1, typename T2>
26596 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::basic_set<pair<T1, T2>> &set) const
26598 auto res = isl::map::intersect_range(set);
26599 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26602 template <typename T1, typename T2>
26603 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::point<pair<T1, T2>> &set) const
26605 auto res = isl::map::intersect_range(set);
26606 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26609 template <typename T1, typename T2>
26610 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::set<T1> &domain) const
26612 auto res = isl::map::intersect_range_wrapped_domain(domain);
26613 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26616 template <typename T1, typename T2>
26617 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::union_set<T1> &domain) const
26619 auto res = isl::map::intersect_range_wrapped_domain(domain);
26620 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
26623 template <typename T1, typename T2>
26624 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::basic_set<T1> &domain) const
26626 auto res = isl::map::intersect_range_wrapped_domain(domain);
26627 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26630 template <typename T1, typename T2>
26631 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::point<T1> &domain) const
26633 auto res = isl::map::intersect_range_wrapped_domain(domain);
26634 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26637 template <typename T1, typename T2>
26638 template <typename Range>
26639 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
26641 auto res = isl::map::lex_ge_at(mpa);
26642 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26645 template <typename T1, typename T2>
26646 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const
26648 auto res = isl::map::lex_ge_at(mpa);
26649 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26652 template <typename T1, typename T2>
26653 template <typename Range>
26654 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
26656 auto res = isl::map::lex_ge_at(mpa);
26657 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26660 template <typename T1, typename T2>
26661 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const
26663 auto res = isl::map::lex_ge_at(mpa);
26664 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26667 template <typename T1, typename T2>
26668 template <typename Range>
26669 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_ge_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
26671 auto res = isl::map::lex_ge_at(mpa);
26672 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26675 template <typename T1, typename T2>
26676 template <typename Range>
26677 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
26679 auto res = isl::map::lex_gt_at(mpa);
26680 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26683 template <typename T1, typename T2>
26684 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const
26686 auto res = isl::map::lex_gt_at(mpa);
26687 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26690 template <typename T1, typename T2>
26691 template <typename Range>
26692 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
26694 auto res = isl::map::lex_gt_at(mpa);
26695 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26698 template <typename T1, typename T2>
26699 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const
26701 auto res = isl::map::lex_gt_at(mpa);
26702 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26705 template <typename T1, typename T2>
26706 template <typename Range>
26707 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_gt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
26709 auto res = isl::map::lex_gt_at(mpa);
26710 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26713 template <typename T1, typename T2>
26714 template <typename Range>
26715 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
26717 auto res = isl::map::lex_le_at(mpa);
26718 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26721 template <typename T1, typename T2>
26722 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const
26724 auto res = isl::map::lex_le_at(mpa);
26725 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26728 template <typename T1, typename T2>
26729 template <typename Range>
26730 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
26732 auto res = isl::map::lex_le_at(mpa);
26733 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26736 template <typename T1, typename T2>
26737 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const
26739 auto res = isl::map::lex_le_at(mpa);
26740 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26743 template <typename T1, typename T2>
26744 template <typename Range>
26745 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_le_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
26747 auto res = isl::map::lex_le_at(mpa);
26748 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26751 template <typename T1, typename T2>
26752 template <typename Range>
26753 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mpa) const
26755 auto res = isl::map::lex_lt_at(mpa);
26756 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26759 template <typename T1, typename T2>
26760 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::aff<pair<T1, T2>, Anonymous> &mpa) const
26762 auto res = isl::map::lex_lt_at(mpa);
26763 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26766 template <typename T1, typename T2>
26767 template <typename Range>
26768 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::multi_aff<pair<T1, T2>, Range> &mpa) const
26770 auto res = isl::map::lex_lt_at(mpa);
26771 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26774 template <typename T1, typename T2>
26775 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::pw_aff<pair<T1, T2>, Anonymous> &mpa) const
26777 auto res = isl::map::lex_lt_at(mpa);
26778 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26781 template <typename T1, typename T2>
26782 template <typename Range>
26783 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lex_lt_at(const typed::pw_multi_aff<pair<T1, T2>, Range> &mpa) const
26785 auto res = isl::map::lex_lt_at(mpa);
26786 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26789 template <typename T1, typename T2>
26790 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmax() const
26792 auto res = isl::map::lexmax();
26793 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26796 template <typename T1, typename T2>
26797 typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmax_pw_multi_aff() const
26799 auto res = isl::map::lexmax_pw_multi_aff();
26800 return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
26803 template <typename T1, typename T2>
26804 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmin() const
26806 auto res = isl::map::lexmin();
26807 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26810 template <typename T1, typename T2>
26811 typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lexmin_pw_multi_aff() const
26813 auto res = isl::map::lexmin_pw_multi_aff();
26814 return typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
26817 template <typename T1, typename T2>
26818 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
26820 auto res = isl::map::lower_bound(lower);
26821 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26824 template <typename T1, typename T2>
26825 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &lower) const
26827 auto res = isl::map::lower_bound(lower);
26828 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26831 template <typename T1, typename T2>
26832 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
26834 auto res = isl::map::lower_bound(lower);
26835 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26838 template <typename T1, typename T2>
26839 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
26841 auto res = isl::map::lower_bound(lower);
26842 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26845 template <typename T1, typename T2>
26846 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &lower) const
26848 auto res = isl::map::lower_bound(lower);
26849 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26852 template <typename T1, typename T2>
26853 typed::map_list<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::map_list() const
26855 auto res = isl::map::map_list();
26856 return typed::map_list<pair<T1, T2>, pair<T1, T2>>(res);
26859 template <typename T1, typename T2>
26860 typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::max_multi_pw_aff() const
26862 auto res = isl::map::max_multi_pw_aff();
26863 return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
26866 template <typename T1, typename T2>
26867 typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::min_multi_pw_aff() const
26869 auto res = isl::map::min_multi_pw_aff();
26870 return typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
26873 template <typename T1, typename T2>
26874 typed::set<> typed::map<pair<T1, T2>, pair<T1, T2>>::params() const
26876 auto res = isl::map::params();
26877 return typed::set<>(res);
26880 template <typename T1, typename T2>
26881 template <typename Domain2>
26882 typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
26884 auto res = isl::map::preimage_domain(ma);
26885 return typed::map<Domain2, pair<T1, T2>>(res);
26888 template <typename T1, typename T2>
26889 template <typename Domain2>
26890 typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
26892 auto res = isl::map::preimage_domain(mpa);
26893 return typed::map<Domain2, pair<T1, T2>>(res);
26896 template <typename T1, typename T2>
26897 template <typename Domain2>
26898 typed::map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
26900 auto res = isl::map::preimage_domain(pma);
26901 return typed::map<Domain2, pair<T1, T2>>(res);
26904 template <typename T1, typename T2>
26905 template <typename Domain2>
26906 typed::union_map<Domain2, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
26908 auto res = isl::map::preimage_domain(upma);
26909 return typed::union_map<Domain2, pair<T1, T2>>(res);
26912 template <typename T1, typename T2>
26913 template <typename Range2>
26914 typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const
26916 auto res = isl::map::preimage_range(ma);
26917 return typed::map<pair<T1, T2>, Range2>(res);
26920 template <typename T1, typename T2>
26921 template <typename Range2>
26922 typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const
26924 auto res = isl::map::preimage_range(pma);
26925 return typed::map<pair<T1, T2>, Range2>(res);
26928 template <typename T1, typename T2>
26929 template <typename Range2>
26930 typed::union_map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const
26932 auto res = isl::map::preimage_range(upma);
26933 return typed::union_map<pair<T1, T2>, Range2>(res);
26936 template <typename T1, typename T2>
26937 template <typename Domain2, typename Range2>
26938 typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::product(const typed::map<Domain2, Range2> &map2) const
26940 auto res = isl::map::product(map2);
26941 return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
26944 template <typename T1, typename T2>
26945 template <typename Domain2, typename Range2>
26946 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::product(const typed::union_map<Domain2, Range2> &umap2) const
26948 auto res = isl::map::product(umap2);
26949 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
26952 template <typename T1, typename T2>
26953 template <typename Domain2, typename Range2>
26954 typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::product(const typed::basic_map<Domain2, Range2> &map2) const
26956 auto res = isl::map::product(map2);
26957 return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
26960 template <typename T1, typename T2>
26961 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::project_out_all_params() const
26963 auto res = isl::map::project_out_all_params();
26964 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26967 template <typename T1, typename T2>
26968 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const typed::id<Anonymous> &id) const
26970 auto res = isl::map::project_out_param(id);
26971 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26974 template <typename T1, typename T2>
26975 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const std::string &id) const
26977 auto res = isl::map::project_out_param(id);
26978 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26981 template <typename T1, typename T2>
26982 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const typed::id_list<Anonymous> &list) const
26984 auto res = isl::map::project_out_param(list);
26985 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
26988 template <typename T1, typename T2>
26989 typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range() const
26991 auto res = isl::map::range();
26992 return typed::set<pair<T1, T2>>(res);
26995 template <typename T1, typename T2>
26996 typed::map<pair<T1, T2>, T1> typed::map<pair<T1, T2>, pair<T1, T2>>::range_factor_domain() const
26998 auto res = isl::map::range_factor_domain();
26999 return typed::map<pair<T1, T2>, T1>(res);
27002 template <typename T1, typename T2>
27003 typed::map<pair<T1, T2>, T2> typed::map<pair<T1, T2>, pair<T1, T2>>::range_factor_range() const
27005 auto res = isl::map::range_factor_range();
27006 return typed::map<pair<T1, T2>, T2>(res);
27009 template <typename T1, typename T2>
27010 typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_lattice_tile() const
27012 auto res = isl::map::range_lattice_tile();
27013 return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
27016 template <typename T1, typename T2>
27017 typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_map() const
27019 auto res = isl::map::range_map();
27020 return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
27023 template <typename T1, typename T2>
27024 template <typename Range2>
27025 typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::map<pair<T1, T2>, Range2> &map2) const
27027 auto res = isl::map::range_product(map2);
27028 return typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
27031 template <typename T1, typename T2>
27032 template <typename Range2>
27033 typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
27035 auto res = isl::map::range_product(umap2);
27036 return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
27039 template <typename T1, typename T2>
27040 template <typename Range2>
27041 typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::basic_map<pair<T1, T2>, Range2> &map2) const
27043 auto res = isl::map::range_product(map2);
27044 return typed::map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
27047 template <typename T1, typename T2>
27048 typed::map<pair<T1, T2>, pair<T2, T1>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_reverse() const
27050 auto res = isl::map::range_reverse();
27051 return typed::map<pair<T1, T2>, pair<T2, T1>>(res);
27054 template <typename T1, typename T2>
27055 typed::fixed_box<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::range_simple_fixed_box_hull() const
27057 auto res = isl::map::range_simple_fixed_box_hull();
27058 return typed::fixed_box<pair<T1, T2>, pair<T1, T2>>(res);
27061 template <typename T1, typename T2>
27062 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::reverse() const
27064 auto res = isl::map::reverse();
27065 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27068 template <typename T1, typename T2>
27069 typed::space<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::space() const
27071 auto res = isl::map::space();
27072 return typed::space<pair<T1, T2>, pair<T1, T2>>(res);
27075 template <typename T1, typename T2>
27076 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
27078 auto res = isl::map::subtract(map2);
27079 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27082 template <typename T1, typename T2>
27083 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
27085 auto res = isl::map::subtract(umap2);
27086 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
27089 template <typename T1, typename T2>
27090 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const
27092 auto res = isl::map::subtract(map2);
27093 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27096 template <typename T1, typename T2>
27097 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
27099 auto res = isl::map::subtract_domain(dom);
27100 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
27103 template <typename T1, typename T2>
27104 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::union_set<pair<T1, T2>> &dom) const
27106 auto res = isl::map::subtract_range(dom);
27107 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
27110 template <typename T1, typename T2>
27111 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::to_union_map() const
27113 auto res = isl::map::to_union_map();
27114 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
27117 template <typename T1, typename T2>
27118 typed::map<pair<pair<T1, T2>, T1>, T2> typed::map<pair<T1, T2>, pair<T1, T2>>::uncurry() const
27120 auto res = isl::map::uncurry();
27121 return typed::map<pair<pair<T1, T2>, T1>, T2>(res);
27124 template <typename T1, typename T2>
27125 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &map2) const
27127 auto res = isl::map::unite(map2);
27128 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27131 template <typename T1, typename T2>
27132 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
27134 auto res = isl::map::unite(umap2);
27135 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
27138 template <typename T1, typename T2>
27139 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &map2) const
27141 auto res = isl::map::unite(map2);
27142 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27145 template <typename T1, typename T2>
27146 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::universe(const typed::space<pair<T1, T2>, pair<T1, T2>> &space)
27148 auto res = isl::map::universe(space);
27149 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27152 template <typename T1, typename T2>
27153 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
27155 auto res = isl::map::upper_bound(upper);
27156 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27159 template <typename T1, typename T2>
27160 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::aff<pair<T1, T2>, pair<T1, T2>> &upper) const
27162 auto res = isl::map::upper_bound(upper);
27163 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27166 template <typename T1, typename T2>
27167 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
27169 auto res = isl::map::upper_bound(upper);
27170 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27173 template <typename T1, typename T2>
27174 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::pw_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
27176 auto res = isl::map::upper_bound(upper);
27177 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27180 template <typename T1, typename T2>
27181 typed::map<pair<T1, T2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<T1, T2>>::upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<T1, T2>> &upper) const
27183 auto res = isl::map::upper_bound(upper);
27184 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
27187 template <typename T1, typename T2>
27188 typed::set<pair<pair<T1, T2>, pair<T1, T2>>> typed::map<pair<T1, T2>, pair<T1, T2>>::wrap() const
27190 auto res = isl::map::wrap();
27191 return typed::set<pair<pair<T1, T2>, pair<T1, T2>>>(res);
27194 template <typename T1, typename T2, typename Range, typename Range2>
27195 typed::map<pair<T1, T2>, pair<Range, Range2>>::map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap)
27196 : isl::map(bmap)
27200 template <typename T1, typename T2, typename Range, typename Range2>
27201 typed::map<pair<T1, T2>, pair<Range, Range2>>::map(const isl::ctx &ctx, const std::string &str)
27202 : isl::map(ctx, str)
27206 template <typename T1, typename T2, typename Range, typename Range2>
27207 template <typename Domain2>
27208 typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &map2) const
27210 auto res = isl::map::apply_domain(map2);
27211 return typed::map<Domain2, pair<Range, Range2>>(res);
27214 template <typename T1, typename T2, typename Range, typename Range2>
27215 template <typename Domain2>
27216 typed::union_map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
27218 auto res = isl::map::apply_domain(umap2);
27219 return typed::union_map<Domain2, pair<Range, Range2>>(res);
27222 template <typename T1, typename T2, typename Range, typename Range2>
27223 template <typename Domain2>
27224 typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &map2) const
27226 auto res = isl::map::apply_domain(map2);
27227 return typed::map<Domain2, pair<Range, Range2>>(res);
27230 template <typename T1, typename T2, typename Range, typename Range2>
27231 template <typename Arg2>
27232 typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg2> &map2) const
27234 auto res = isl::map::apply_range(map2);
27235 return typed::map<pair<T1, T2>, Arg2>(res);
27238 template <typename T1, typename T2, typename Range, typename Range2>
27239 template <typename Arg2>
27240 typed::union_map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const
27242 auto res = isl::map::apply_range(umap2);
27243 return typed::union_map<pair<T1, T2>, Arg2>(res);
27246 template <typename T1, typename T2, typename Range, typename Range2>
27247 template <typename Arg2>
27248 typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &map2) const
27250 auto res = isl::map::apply_range(map2);
27251 return typed::map<pair<T1, T2>, Arg2>(res);
27254 template <typename T1, typename T2, typename Range, typename Range2>
27255 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_map() const
27257 auto res = isl::map::as_map();
27258 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27261 template <typename T1, typename T2, typename Range, typename Range2>
27262 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
27264 auto res = isl::map::as_multi_union_pw_aff();
27265 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
27268 template <typename T1, typename T2, typename Range, typename Range2>
27269 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
27271 auto res = isl::map::as_pw_multi_aff();
27272 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
27275 template <typename T1, typename T2, typename Range, typename Range2>
27276 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::as_union_pw_multi_aff() const
27278 auto res = isl::map::as_union_pw_multi_aff();
27279 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
27282 template <typename T1, typename T2, typename Range, typename Range2>
27283 typed::set<pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
27285 auto res = isl::map::bind_domain(tuple);
27286 return typed::set<pair<Range, Range2>>(res);
27289 template <typename T1, typename T2, typename Range, typename Range2>
27290 typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
27292 auto res = isl::map::bind_range(tuple);
27293 return typed::set<pair<T1, T2>>(res);
27296 template <typename T1, typename T2, typename Range, typename Range2>
27297 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
27299 auto res = isl::map::coalesce();
27300 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27303 template <typename T1, typename T2, typename Range, typename Range2>
27304 typed::map<T1, pair<T2, pair<Range, Range2>>> typed::map<pair<T1, T2>, pair<Range, Range2>>::curry() const
27306 auto res = isl::map::curry();
27307 return typed::map<T1, pair<T2, pair<Range, Range2>>>(res);
27310 template <typename T1, typename T2, typename Range, typename Range2>
27311 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::detect_equalities() const
27313 auto res = isl::map::detect_equalities();
27314 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27317 template <typename T1, typename T2, typename Range, typename Range2>
27318 typed::set<pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain() const
27320 auto res = isl::map::domain();
27321 return typed::set<pair<T1, T2>>(res);
27324 template <typename T1, typename T2, typename Range, typename Range2>
27325 typed::map<T1, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_domain() const
27327 auto res = isl::map::domain_factor_domain();
27328 return typed::map<T1, pair<Range, Range2>>(res);
27331 template <typename T1, typename T2, typename Range, typename Range2>
27332 typed::map<T2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_range() const
27334 auto res = isl::map::domain_factor_range();
27335 return typed::map<T2, pair<Range, Range2>>(res);
27338 template <typename T1, typename T2, typename Range, typename Range2>
27339 typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_map() const
27341 auto res = isl::map::domain_map();
27342 return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
27345 template <typename T1, typename T2, typename Range, typename Range2>
27346 typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
27348 auto res = isl::map::domain_map_union_pw_multi_aff();
27349 return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
27352 template <typename T1, typename T2, typename Range, typename Range2>
27353 template <typename Domain2>
27354 typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &map2) const
27356 auto res = isl::map::domain_product(map2);
27357 return typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
27360 template <typename T1, typename T2, typename Range, typename Range2>
27361 template <typename Domain2>
27362 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
27364 auto res = isl::map::domain_product(umap2);
27365 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
27368 template <typename T1, typename T2, typename Range, typename Range2>
27369 template <typename Domain2>
27370 typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &map2) const
27372 auto res = isl::map::domain_product(map2);
27373 return typed::map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
27376 template <typename T1, typename T2, typename Range, typename Range2>
27377 typed::map<pair<T2, T1>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::domain_reverse() const
27379 auto res = isl::map::domain_reverse();
27380 return typed::map<pair<T2, T1>, pair<Range, Range2>>(res);
27383 template <typename T1, typename T2, typename Range, typename Range2>
27384 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::drop_unused_params() const
27386 auto res = isl::map::drop_unused_params();
27387 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27390 template <typename T1, typename T2, typename Range, typename Range2>
27391 bool typed::map<pair<T1, T2>, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const
27393 auto lambda_test = [&] (isl::map arg0) {
27394 return test(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
27396 return isl::map::every_map(lambda_test);
27399 template <typename T1, typename T2, typename Range, typename Range2>
27400 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
27402 auto res = isl::map::extract_map(space);
27403 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27406 template <typename T1, typename T2, typename Range, typename Range2>
27407 typed::map<Anonymous, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::flatten_domain() const
27409 auto res = isl::map::flatten_domain();
27410 return typed::map<Anonymous, pair<Range, Range2>>(res);
27413 template <typename T1, typename T2, typename Range, typename Range2>
27414 typed::map<pair<T1, T2>, Anonymous> typed::map<pair<T1, T2>, pair<Range, Range2>>::flatten_range() const
27416 auto res = isl::map::flatten_range();
27417 return typed::map<pair<T1, T2>, Anonymous>(res);
27420 template <typename T1, typename T2, typename Range, typename Range2>
27421 void typed::map<pair<T1, T2>, pair<Range, Range2>>::foreach_basic_map(const std::function<void(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
27423 auto lambda_fn = [&] (isl::basic_map arg0) {
27424 return fn(typed::basic_map<pair<T1, T2>, pair<Range, Range2>>(arg0));
27426 return isl::map::foreach_basic_map(lambda_fn);
27429 template <typename T1, typename T2, typename Range, typename Range2>
27430 void typed::map<pair<T1, T2>, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
27432 auto lambda_fn = [&] (isl::map arg0) {
27433 return fn(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
27435 return isl::map::foreach_map(lambda_fn);
27438 template <typename T1, typename T2, typename Range, typename Range2>
27439 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const
27441 auto res = isl::map::gist(context);
27442 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27445 template <typename T1, typename T2, typename Range, typename Range2>
27446 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const
27448 auto res = isl::map::gist(context);
27449 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27452 template <typename T1, typename T2, typename Range, typename Range2>
27453 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const
27455 auto res = isl::map::gist(context);
27456 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27459 template <typename T1, typename T2, typename Range, typename Range2>
27460 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::set<pair<T1, T2>> &context) const
27462 auto res = isl::map::gist_domain(context);
27463 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27466 template <typename T1, typename T2, typename Range, typename Range2>
27467 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
27469 auto res = isl::map::gist_domain(uset);
27470 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27473 template <typename T1, typename T2, typename Range, typename Range2>
27474 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &context) const
27476 auto res = isl::map::gist_domain(context);
27477 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27480 template <typename T1, typename T2, typename Range, typename Range2>
27481 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::point<pair<T1, T2>> &context) const
27483 auto res = isl::map::gist_domain(context);
27484 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27487 template <typename T1, typename T2, typename Range, typename Range2>
27488 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::set<> &context) const
27490 auto res = isl::map::gist_params(context);
27491 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27494 template <typename T1, typename T2, typename Range, typename Range2>
27495 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::basic_set<> &context) const
27497 auto res = isl::map::gist_params(context);
27498 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27501 template <typename T1, typename T2, typename Range, typename Range2>
27502 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::point<> &context) const
27504 auto res = isl::map::gist_params(context);
27505 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27508 template <typename T1, typename T2, typename Range, typename Range2>
27509 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
27511 auto res = isl::map::intersect(map2);
27512 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27515 template <typename T1, typename T2, typename Range, typename Range2>
27516 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
27518 auto res = isl::map::intersect(umap2);
27519 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27522 template <typename T1, typename T2, typename Range, typename Range2>
27523 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const
27525 auto res = isl::map::intersect(map2);
27526 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27529 template <typename T1, typename T2, typename Range, typename Range2>
27530 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
27532 auto res = isl::map::intersect_domain(set);
27533 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27536 template <typename T1, typename T2, typename Range, typename Range2>
27537 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
27539 auto res = isl::map::intersect_domain(space);
27540 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27543 template <typename T1, typename T2, typename Range, typename Range2>
27544 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
27546 auto res = isl::map::intersect_domain(uset);
27547 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27550 template <typename T1, typename T2, typename Range, typename Range2>
27551 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const
27553 auto res = isl::map::intersect_domain(set);
27554 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27557 template <typename T1, typename T2, typename Range, typename Range2>
27558 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::point<pair<T1, T2>> &set) const
27560 auto res = isl::map::intersect_domain(set);
27561 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27564 template <typename T1, typename T2, typename Range, typename Range2>
27565 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::set<T1> &domain) const
27567 auto res = isl::map::intersect_domain_wrapped_domain(domain);
27568 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27571 template <typename T1, typename T2, typename Range, typename Range2>
27572 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const
27574 auto res = isl::map::intersect_domain_wrapped_domain(domain);
27575 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27578 template <typename T1, typename T2, typename Range, typename Range2>
27579 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const
27581 auto res = isl::map::intersect_domain_wrapped_domain(domain);
27582 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27585 template <typename T1, typename T2, typename Range, typename Range2>
27586 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::point<T1> &domain) const
27588 auto res = isl::map::intersect_domain_wrapped_domain(domain);
27589 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27592 template <typename T1, typename T2, typename Range, typename Range2>
27593 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &params) const
27595 auto res = isl::map::intersect_params(params);
27596 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27599 template <typename T1, typename T2, typename Range, typename Range2>
27600 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &params) const
27602 auto res = isl::map::intersect_params(params);
27603 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27606 template <typename T1, typename T2, typename Range, typename Range2>
27607 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &params) const
27609 auto res = isl::map::intersect_params(params);
27610 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27613 template <typename T1, typename T2, typename Range, typename Range2>
27614 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::set<pair<Range, Range2>> &set) const
27616 auto res = isl::map::intersect_range(set);
27617 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27620 template <typename T1, typename T2, typename Range, typename Range2>
27621 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
27623 auto res = isl::map::intersect_range(space);
27624 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27627 template <typename T1, typename T2, typename Range, typename Range2>
27628 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
27630 auto res = isl::map::intersect_range(uset);
27631 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27634 template <typename T1, typename T2, typename Range, typename Range2>
27635 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::basic_set<pair<Range, Range2>> &set) const
27637 auto res = isl::map::intersect_range(set);
27638 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27641 template <typename T1, typename T2, typename Range, typename Range2>
27642 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::point<pair<Range, Range2>> &set) const
27644 auto res = isl::map::intersect_range(set);
27645 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27648 template <typename T1, typename T2, typename Range, typename Range2>
27649 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::set<Range> &domain) const
27651 auto res = isl::map::intersect_range_wrapped_domain(domain);
27652 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27655 template <typename T1, typename T2, typename Range, typename Range2>
27656 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const
27658 auto res = isl::map::intersect_range_wrapped_domain(domain);
27659 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27662 template <typename T1, typename T2, typename Range, typename Range2>
27663 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const
27665 auto res = isl::map::intersect_range_wrapped_domain(domain);
27666 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27669 template <typename T1, typename T2, typename Range, typename Range2>
27670 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::point<Range> &domain) const
27672 auto res = isl::map::intersect_range_wrapped_domain(domain);
27673 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27676 template <typename T1, typename T2, typename Range, typename Range2>
27677 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmax() const
27679 auto res = isl::map::lexmax();
27680 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27683 template <typename T1, typename T2, typename Range, typename Range2>
27684 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmax_pw_multi_aff() const
27686 auto res = isl::map::lexmax_pw_multi_aff();
27687 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
27690 template <typename T1, typename T2, typename Range, typename Range2>
27691 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmin() const
27693 auto res = isl::map::lexmin();
27694 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27697 template <typename T1, typename T2, typename Range, typename Range2>
27698 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lexmin_pw_multi_aff() const
27700 auto res = isl::map::lexmin_pw_multi_aff();
27701 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
27704 template <typename T1, typename T2, typename Range, typename Range2>
27705 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
27707 auto res = isl::map::lower_bound(lower);
27708 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27711 template <typename T1, typename T2, typename Range, typename Range2>
27712 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
27714 auto res = isl::map::lower_bound(lower);
27715 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27718 template <typename T1, typename T2, typename Range, typename Range2>
27719 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
27721 auto res = isl::map::lower_bound(lower);
27722 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27725 template <typename T1, typename T2, typename Range, typename Range2>
27726 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
27728 auto res = isl::map::lower_bound(lower);
27729 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27732 template <typename T1, typename T2, typename Range, typename Range2>
27733 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::lower_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &lower) const
27735 auto res = isl::map::lower_bound(lower);
27736 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27739 template <typename T1, typename T2, typename Range, typename Range2>
27740 typed::map_list<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::map_list() const
27742 auto res = isl::map::map_list();
27743 return typed::map_list<pair<T1, T2>, pair<Range, Range2>>(res);
27746 template <typename T1, typename T2, typename Range, typename Range2>
27747 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::max_multi_pw_aff() const
27749 auto res = isl::map::max_multi_pw_aff();
27750 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
27753 template <typename T1, typename T2, typename Range, typename Range2>
27754 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::min_multi_pw_aff() const
27756 auto res = isl::map::min_multi_pw_aff();
27757 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
27760 template <typename T1, typename T2, typename Range, typename Range2>
27761 typed::set<> typed::map<pair<T1, T2>, pair<Range, Range2>>::params() const
27763 auto res = isl::map::params();
27764 return typed::set<>(res);
27767 template <typename T1, typename T2, typename Range, typename Range2>
27768 template <typename Domain2>
27769 typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
27771 auto res = isl::map::preimage_domain(ma);
27772 return typed::map<Domain2, pair<Range, Range2>>(res);
27775 template <typename T1, typename T2, typename Range, typename Range2>
27776 template <typename Domain2>
27777 typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
27779 auto res = isl::map::preimage_domain(mpa);
27780 return typed::map<Domain2, pair<Range, Range2>>(res);
27783 template <typename T1, typename T2, typename Range, typename Range2>
27784 template <typename Domain2>
27785 typed::map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
27787 auto res = isl::map::preimage_domain(pma);
27788 return typed::map<Domain2, pair<Range, Range2>>(res);
27791 template <typename T1, typename T2, typename Range, typename Range2>
27792 template <typename Domain2>
27793 typed::union_map<Domain2, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
27795 auto res = isl::map::preimage_domain(upma);
27796 return typed::union_map<Domain2, pair<Range, Range2>>(res);
27799 template <typename T1, typename T2, typename Range, typename Range2>
27800 template <typename Arg2>
27801 typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const
27803 auto res = isl::map::preimage_range(ma);
27804 return typed::map<pair<T1, T2>, Arg2>(res);
27807 template <typename T1, typename T2, typename Range, typename Range2>
27808 template <typename Arg2>
27809 typed::map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const
27811 auto res = isl::map::preimage_range(pma);
27812 return typed::map<pair<T1, T2>, Arg2>(res);
27815 template <typename T1, typename T2, typename Range, typename Range2>
27816 template <typename Arg2>
27817 typed::union_map<pair<T1, T2>, Arg2> typed::map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const
27819 auto res = isl::map::preimage_range(upma);
27820 return typed::union_map<pair<T1, T2>, Arg2>(res);
27823 template <typename T1, typename T2, typename Range, typename Range2>
27824 template <typename Domain2, typename Arg2>
27825 typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::map<Domain2, Arg2> &map2) const
27827 auto res = isl::map::product(map2);
27828 return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
27831 template <typename T1, typename T2, typename Range, typename Range2>
27832 template <typename Domain2, typename Arg2>
27833 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg2> &umap2) const
27835 auto res = isl::map::product(umap2);
27836 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
27839 template <typename T1, typename T2, typename Range, typename Range2>
27840 template <typename Domain2, typename Arg2>
27841 typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg2> &map2) const
27843 auto res = isl::map::product(map2);
27844 return typed::map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
27847 template <typename T1, typename T2, typename Range, typename Range2>
27848 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::project_out_all_params() const
27850 auto res = isl::map::project_out_all_params();
27851 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27854 template <typename T1, typename T2, typename Range, typename Range2>
27855 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const typed::id<Anonymous> &id) const
27857 auto res = isl::map::project_out_param(id);
27858 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27861 template <typename T1, typename T2, typename Range, typename Range2>
27862 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const std::string &id) const
27864 auto res = isl::map::project_out_param(id);
27865 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27868 template <typename T1, typename T2, typename Range, typename Range2>
27869 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const typed::id_list<Anonymous> &list) const
27871 auto res = isl::map::project_out_param(list);
27872 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27875 template <typename T1, typename T2, typename Range, typename Range2>
27876 typed::set<pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range() const
27878 auto res = isl::map::range();
27879 return typed::set<pair<Range, Range2>>(res);
27882 template <typename T1, typename T2, typename Range, typename Range2>
27883 typed::map<pair<T1, T2>, Range> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
27885 auto res = isl::map::range_factor_domain();
27886 return typed::map<pair<T1, T2>, Range>(res);
27889 template <typename T1, typename T2, typename Range, typename Range2>
27890 typed::map<pair<T1, T2>, Range2> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
27892 auto res = isl::map::range_factor_range();
27893 return typed::map<pair<T1, T2>, Range2>(res);
27896 template <typename T1, typename T2, typename Range, typename Range2>
27897 typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_lattice_tile() const
27899 auto res = isl::map::range_lattice_tile();
27900 return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
27903 template <typename T1, typename T2, typename Range, typename Range2>
27904 typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_map() const
27906 auto res = isl::map::range_map();
27907 return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
27910 template <typename T1, typename T2, typename Range, typename Range2>
27911 template <typename Arg2>
27912 typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::map<pair<T1, T2>, Arg2> &map2) const
27914 auto res = isl::map::range_product(map2);
27915 return typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
27918 template <typename T1, typename T2, typename Range, typename Range2>
27919 template <typename Arg2>
27920 typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const
27922 auto res = isl::map::range_product(umap2);
27923 return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
27926 template <typename T1, typename T2, typename Range, typename Range2>
27927 template <typename Arg2>
27928 typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::basic_map<pair<T1, T2>, Arg2> &map2) const
27930 auto res = isl::map::range_product(map2);
27931 return typed::map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
27934 template <typename T1, typename T2, typename Range, typename Range2>
27935 typed::map<pair<T1, T2>, pair<Range2, Range>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
27937 auto res = isl::map::range_reverse();
27938 return typed::map<pair<T1, T2>, pair<Range2, Range>>(res);
27941 template <typename T1, typename T2, typename Range, typename Range2>
27942 typed::fixed_box<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::range_simple_fixed_box_hull() const
27944 auto res = isl::map::range_simple_fixed_box_hull();
27945 return typed::fixed_box<pair<T1, T2>, pair<Range, Range2>>(res);
27948 template <typename T1, typename T2, typename Range, typename Range2>
27949 typed::map<pair<Range, Range2>, pair<T1, T2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::reverse() const
27951 auto res = isl::map::reverse();
27952 return typed::map<pair<Range, Range2>, pair<T1, T2>>(res);
27955 template <typename T1, typename T2, typename Range, typename Range2>
27956 typed::space<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::space() const
27958 auto res = isl::map::space();
27959 return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
27962 template <typename T1, typename T2, typename Range, typename Range2>
27963 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
27965 auto res = isl::map::subtract(map2);
27966 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27969 template <typename T1, typename T2, typename Range, typename Range2>
27970 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
27972 auto res = isl::map::subtract(umap2);
27973 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27976 template <typename T1, typename T2, typename Range, typename Range2>
27977 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const
27979 auto res = isl::map::subtract(map2);
27980 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
27983 template <typename T1, typename T2, typename Range, typename Range2>
27984 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
27986 auto res = isl::map::subtract_domain(dom);
27987 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27990 template <typename T1, typename T2, typename Range, typename Range2>
27991 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
27993 auto res = isl::map::subtract_range(dom);
27994 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
27997 template <typename T1, typename T2, typename Range, typename Range2>
27998 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::to_union_map() const
28000 auto res = isl::map::to_union_map();
28001 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
28004 template <typename T1, typename T2, typename Range, typename Range2>
28005 typed::map<pair<pair<T1, T2>, Range>, Range2> typed::map<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
28007 auto res = isl::map::uncurry();
28008 return typed::map<pair<pair<T1, T2>, Range>, Range2>(res);
28011 template <typename T1, typename T2, typename Range, typename Range2>
28012 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map2) const
28014 auto res = isl::map::unite(map2);
28015 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28018 template <typename T1, typename T2, typename Range, typename Range2>
28019 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
28021 auto res = isl::map::unite(umap2);
28022 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
28025 template <typename T1, typename T2, typename Range, typename Range2>
28026 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &map2) const
28028 auto res = isl::map::unite(map2);
28029 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28032 template <typename T1, typename T2, typename Range, typename Range2>
28033 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::universe(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space)
28035 auto res = isl::map::universe(space);
28036 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28039 template <typename T1, typename T2, typename Range, typename Range2>
28040 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
28042 auto res = isl::map::upper_bound(upper);
28043 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28046 template <typename T1, typename T2, typename Range, typename Range2>
28047 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
28049 auto res = isl::map::upper_bound(upper);
28050 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28053 template <typename T1, typename T2, typename Range, typename Range2>
28054 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
28056 auto res = isl::map::upper_bound(upper);
28057 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28060 template <typename T1, typename T2, typename Range, typename Range2>
28061 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
28063 auto res = isl::map::upper_bound(upper);
28064 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28067 template <typename T1, typename T2, typename Range, typename Range2>
28068 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::map<pair<T1, T2>, pair<Range, Range2>>::upper_bound(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upper) const
28070 auto res = isl::map::upper_bound(upper);
28071 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
28074 template <typename T1, typename T2, typename Range, typename Range2>
28075 typed::set<pair<pair<T1, T2>, pair<Range, Range2>>> typed::map<pair<T1, T2>, pair<Range, Range2>>::wrap() const
28077 auto res = isl::map::wrap();
28078 return typed::set<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
28081 template <typename Domain, typename Range>
28082 typed::map_list<Domain, Range>::map_list(const isl::ctx &ctx, int n)
28083 : isl::map_list(ctx, n)
28087 template <typename Domain, typename Range>
28088 typed::map_list<Domain, Range>::map_list(const typed::map<Domain, Range> &el)
28089 : isl::map_list(el)
28093 template <typename Domain, typename Range>
28094 typed::map_list<Domain, Range>::map_list(const isl::ctx &ctx, const std::string &str)
28095 : isl::map_list(ctx, str)
28099 template <typename Domain, typename Range>
28100 typed::map_list<Domain, Range> typed::map_list<Domain, Range>::add(const typed::map<Domain, Range> &el) const
28102 auto res = isl::map_list::add(el);
28103 return typed::map_list<Domain, Range>(res);
28106 template <typename Domain, typename Range>
28107 typed::map_list<Domain, Range> typed::map_list<Domain, Range>::add(const typed::basic_map<Domain, Range> &el) const
28109 auto res = isl::map_list::add(el);
28110 return typed::map_list<Domain, Range>(res);
28113 template <typename Domain, typename Range>
28114 typed::map<Domain, Range> typed::map_list<Domain, Range>::at(int index) const
28116 auto res = isl::map_list::at(index);
28117 return typed::map<Domain, Range>(res);
28120 template <typename Domain, typename Range>
28121 typed::map_list<Domain, Range> typed::map_list<Domain, Range>::drop(unsigned int first, unsigned int n) const
28123 auto res = isl::map_list::drop(first, n);
28124 return typed::map_list<Domain, Range>(res);
28127 template <typename Domain, typename Range>
28128 void typed::map_list<Domain, Range>::foreach(const std::function<void(typed::map<Domain, Range>)> &fn) const
28130 auto lambda_fn = [&] (isl::map arg0) {
28131 return fn(typed::map<Domain, Range>(arg0));
28133 return isl::map_list::foreach(lambda_fn);
28136 template <typename Domain, typename Range>
28137 void typed::map_list<Domain, Range>::foreach_scc(const std::function<bool(typed::map<Domain, Range>, typed::map<Domain, Range>)> &follows, const std::function<void(typed::map_list<Domain, Range>)> &fn) const
28139 auto lambda_follows = [&] (isl::map arg0, isl::map arg1) {
28140 return follows(typed::map<Domain, Range>(arg0), typed::map<Domain, Range>(arg1));
28142 auto lambda_fn = [&] (isl::map_list arg0) {
28143 return fn(typed::map_list<Domain, Range>(arg0));
28145 return isl::map_list::foreach_scc(lambda_follows, lambda_fn);
28148 template <typename Domain, typename Range>
28149 typed::map_list<Domain, Range> typed::map_list<Domain, Range>::set_at(int index, const typed::map<Domain, Anonymous> &el) const
28151 auto res = isl::map_list::set_at(index, el);
28152 return typed::map_list<Domain, Range>(res);
28155 template <typename Domain>
28156 typed::multi_aff<Domain>::multi_aff(const typed::aff<Domain> &aff)
28157 : isl::multi_aff(aff)
28161 template <typename Domain>
28162 typed::multi_aff<Domain>::multi_aff(const typed::space<Domain> &space, const typed::aff_list<Anonymous> &list)
28163 : isl::multi_aff(space, list)
28167 template <typename Domain>
28168 typed::multi_aff<Domain>::multi_aff(const isl::ctx &ctx, const std::string &str)
28169 : isl::multi_aff(ctx, str)
28173 template <typename Domain>
28174 typed::multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::multi_aff<Domain> &multi2) const
28176 auto res = isl::multi_aff::add(multi2);
28177 return typed::multi_aff<Domain>(res);
28180 template <typename Domain>
28181 typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
28183 auto res = isl::multi_aff::add(multi2);
28184 return typed::multi_pw_aff<Domain>(res);
28187 template <typename Domain>
28188 typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
28190 auto res = isl::multi_aff::add(multi2);
28191 return typed::multi_union_pw_aff<Domain>(res);
28194 template <typename Domain>
28195 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::pw_multi_aff<Domain> &pma2) const
28197 auto res = isl::multi_aff::add(pma2);
28198 return typed::pw_multi_aff<Domain>(res);
28201 template <typename Domain>
28202 typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::union_pw_multi_aff<Domain> &upma2) const
28204 auto res = isl::multi_aff::add(upma2);
28205 return typed::union_pw_multi_aff<Domain>(res);
28208 template <typename Domain>
28209 typed::multi_aff<Domain> typed::multi_aff<Domain>::add(const typed::aff<Domain> &multi2) const
28211 auto res = isl::multi_aff::add(multi2);
28212 return typed::multi_aff<Domain>(res);
28215 template <typename Domain>
28216 typed::multi_aff<Domain> typed::multi_aff<Domain>::add_constant(const typed::multi_val<Domain> &mv) const
28218 auto res = isl::multi_aff::add_constant(mv);
28219 return typed::multi_aff<Domain>(res);
28222 template <typename Domain>
28223 typed::multi_aff<Domain> typed::multi_aff<Domain>::add_constant(const typed::val<Domain> &v) const
28225 auto res = isl::multi_aff::add_constant(v);
28226 return typed::multi_aff<Domain>(res);
28229 template <typename Domain>
28230 typed::multi_aff<Domain> typed::multi_aff<Domain>::add_constant(long v) const
28232 auto res = isl::multi_aff::add_constant(v);
28233 return typed::multi_aff<Domain>(res);
28236 template <typename Domain>
28237 template <typename Range>
28238 typed::union_pw_multi_aff<Range> typed::multi_aff<Domain>::apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
28240 auto res = isl::multi_aff::apply(upma2);
28241 return typed::union_pw_multi_aff<Range>(res);
28244 template <typename Domain>
28245 typed::multi_aff<Domain> typed::multi_aff<Domain>::as_multi_aff() const
28247 auto res = isl::multi_aff::as_multi_aff();
28248 return typed::multi_aff<Domain>(res);
28251 template <typename Domain>
28252 typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::as_multi_union_pw_aff() const
28254 auto res = isl::multi_aff::as_multi_union_pw_aff();
28255 return typed::multi_union_pw_aff<Domain>(res);
28258 template <typename Domain>
28259 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::as_pw_multi_aff() const
28261 auto res = isl::multi_aff::as_pw_multi_aff();
28262 return typed::pw_multi_aff<Domain>(res);
28265 template <typename Domain>
28266 typed::set<Domain> typed::multi_aff<Domain>::as_set() const
28268 auto res = isl::multi_aff::as_set();
28269 return typed::set<Domain>(res);
28272 template <typename Domain>
28273 typed::aff<Anonymous> typed::multi_aff<Domain>::at(int pos) const
28275 auto res = isl::multi_aff::at(pos);
28276 return typed::aff<Anonymous>(res);
28279 template <typename Domain>
28280 typed::basic_set<> typed::multi_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
28282 auto res = isl::multi_aff::bind(tuple);
28283 return typed::basic_set<>(res);
28286 template <typename Domain>
28287 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::coalesce() const
28289 auto res = isl::multi_aff::coalesce();
28290 return typed::pw_multi_aff<Domain>(res);
28293 template <typename Domain>
28294 typed::multi_val<Domain> typed::multi_aff<Domain>::constant_multi_val() const
28296 auto res = isl::multi_aff::constant_multi_val();
28297 return typed::multi_val<Domain>(res);
28300 template <typename Domain>
28301 typed::set<> typed::multi_aff<Domain>::domain() const
28303 auto res = isl::multi_aff::domain();
28304 return typed::set<>(res);
28307 template <typename Domain>
28308 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::drop_unused_params() const
28310 auto res = isl::multi_aff::drop_unused_params();
28311 return typed::pw_multi_aff<Domain>(res);
28314 template <typename Domain>
28315 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::extract_pw_multi_aff(const typed::space<Domain> &space) const
28317 auto res = isl::multi_aff::extract_pw_multi_aff(space);
28318 return typed::pw_multi_aff<Domain>(res);
28321 template <typename Domain>
28322 typed::multi_aff<Domain> typed::multi_aff<Domain>::floor() const
28324 auto res = isl::multi_aff::floor();
28325 return typed::multi_aff<Domain>(res);
28328 template <typename Domain>
28329 typed::multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::set<> &context) const
28331 auto res = isl::multi_aff::gist(context);
28332 return typed::multi_aff<Domain>(res);
28335 template <typename Domain>
28336 typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::union_set<> &context) const
28338 auto res = isl::multi_aff::gist(context);
28339 return typed::union_pw_multi_aff<Domain>(res);
28342 template <typename Domain>
28343 typed::multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::basic_set<> &context) const
28345 auto res = isl::multi_aff::gist(context);
28346 return typed::multi_aff<Domain>(res);
28349 template <typename Domain>
28350 typed::multi_aff<Domain> typed::multi_aff<Domain>::gist(const typed::point<> &context) const
28352 auto res = isl::multi_aff::gist(context);
28353 return typed::multi_aff<Domain>(res);
28356 template <typename Domain>
28357 typed::multi_aff<Domain> typed::multi_aff<Domain>::gist_params(const typed::set<> &context) const
28359 auto res = isl::multi_aff::gist_params(context);
28360 return typed::multi_aff<Domain>(res);
28363 template <typename Domain>
28364 typed::multi_aff<Domain> typed::multi_aff<Domain>::gist_params(const typed::basic_set<> &context) const
28366 auto res = isl::multi_aff::gist_params(context);
28367 return typed::multi_aff<Domain>(res);
28370 template <typename Domain>
28371 typed::multi_aff<Domain> typed::multi_aff<Domain>::gist_params(const typed::point<> &context) const
28373 auto res = isl::multi_aff::gist_params(context);
28374 return typed::multi_aff<Domain>(res);
28377 template <typename Domain>
28378 typed::multi_aff<Domain, Domain> typed::multi_aff<Domain>::identity() const
28380 auto res = isl::multi_aff::identity();
28381 return typed::multi_aff<Domain, Domain>(res);
28384 template <typename Domain>
28385 template <typename Arg1>
28386 typed::multi_aff<Arg1, Domain> typed::multi_aff<Domain>::insert_domain(const typed::space<Arg1> &domain) const
28388 auto res = isl::multi_aff::insert_domain(domain);
28389 return typed::multi_aff<Arg1, Domain>(res);
28392 template <typename Domain>
28393 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::intersect_params(const typed::set<> &set) const
28395 auto res = isl::multi_aff::intersect_params(set);
28396 return typed::pw_multi_aff<Domain>(res);
28399 template <typename Domain>
28400 typed::aff_list<Anonymous> typed::multi_aff<Domain>::list() const
28402 auto res = isl::multi_aff::list();
28403 return typed::aff_list<Anonymous>(res);
28406 template <typename Domain>
28407 typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::max(const typed::multi_pw_aff<Domain> &multi2) const
28409 auto res = isl::multi_aff::max(multi2);
28410 return typed::multi_pw_aff<Domain>(res);
28413 template <typename Domain>
28414 typed::multi_val<Domain> typed::multi_aff<Domain>::max_multi_val() const
28416 auto res = isl::multi_aff::max_multi_val();
28417 return typed::multi_val<Domain>(res);
28420 template <typename Domain>
28421 typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::min(const typed::multi_pw_aff<Domain> &multi2) const
28423 auto res = isl::multi_aff::min(multi2);
28424 return typed::multi_pw_aff<Domain>(res);
28427 template <typename Domain>
28428 typed::multi_val<Domain> typed::multi_aff<Domain>::min_multi_val() const
28430 auto res = isl::multi_aff::min_multi_val();
28431 return typed::multi_val<Domain>(res);
28434 template <typename Domain>
28435 typed::multi_aff<Domain> typed::multi_aff<Domain>::neg() const
28437 auto res = isl::multi_aff::neg();
28438 return typed::multi_aff<Domain>(res);
28441 template <typename Domain>
28442 template <typename Range>
28443 typed::multi_aff<pair<Domain, Range>> typed::multi_aff<Domain>::product(const typed::multi_aff<Range> &multi2) const
28445 auto res = isl::multi_aff::product(multi2);
28446 return typed::multi_aff<pair<Domain, Range>>(res);
28449 template <typename Domain>
28450 template <typename Range>
28451 typed::multi_pw_aff<pair<Domain, Range>> typed::multi_aff<Domain>::product(const typed::multi_pw_aff<Range> &multi2) const
28453 auto res = isl::multi_aff::product(multi2);
28454 return typed::multi_pw_aff<pair<Domain, Range>>(res);
28457 template <typename Domain>
28458 template <typename Range>
28459 typed::pw_multi_aff<pair<Domain, Range>> typed::multi_aff<Domain>::product(const typed::pw_multi_aff<Range> &pma2) const
28461 auto res = isl::multi_aff::product(pma2);
28462 return typed::pw_multi_aff<pair<Domain, Range>>(res);
28465 template <typename Domain>
28466 typed::multi_aff<pair<Domain, Anonymous>> typed::multi_aff<Domain>::product(const typed::aff<Anonymous> &multi2) const
28468 auto res = isl::multi_aff::product(multi2);
28469 return typed::multi_aff<pair<Domain, Anonymous>>(res);
28472 template <typename Domain>
28473 typed::pw_multi_aff_list<Domain> typed::multi_aff<Domain>::pw_multi_aff_list() const
28475 auto res = isl::multi_aff::pw_multi_aff_list();
28476 return typed::pw_multi_aff_list<Domain>(res);
28479 template <typename Domain>
28480 typed::multi_aff<Domain> typed::multi_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
28482 auto res = isl::multi_aff::scale(mv);
28483 return typed::multi_aff<Domain>(res);
28486 template <typename Domain>
28487 typed::multi_aff<Domain> typed::multi_aff<Domain>::scale(const typed::val<Domain> &v) const
28489 auto res = isl::multi_aff::scale(v);
28490 return typed::multi_aff<Domain>(res);
28493 template <typename Domain>
28494 typed::multi_aff<Domain> typed::multi_aff<Domain>::scale(long v) const
28496 auto res = isl::multi_aff::scale(v);
28497 return typed::multi_aff<Domain>(res);
28500 template <typename Domain>
28501 typed::multi_aff<Domain> typed::multi_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
28503 auto res = isl::multi_aff::scale_down(mv);
28504 return typed::multi_aff<Domain>(res);
28507 template <typename Domain>
28508 typed::multi_aff<Domain> typed::multi_aff<Domain>::scale_down(const typed::val<Domain> &v) const
28510 auto res = isl::multi_aff::scale_down(v);
28511 return typed::multi_aff<Domain>(res);
28514 template <typename Domain>
28515 typed::multi_aff<Domain> typed::multi_aff<Domain>::scale_down(long v) const
28517 auto res = isl::multi_aff::scale_down(v);
28518 return typed::multi_aff<Domain>(res);
28521 template <typename Domain>
28522 typed::multi_aff<Domain> typed::multi_aff<Domain>::set_at(int pos, const typed::aff<Anonymous> &el) const
28524 auto res = isl::multi_aff::set_at(pos, el);
28525 return typed::multi_aff<Domain>(res);
28528 template <typename Domain>
28529 typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
28531 auto res = isl::multi_aff::set_at(pos, el);
28532 return typed::multi_pw_aff<Domain>(res);
28535 template <typename Domain>
28536 typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
28538 auto res = isl::multi_aff::set_at(pos, el);
28539 return typed::multi_union_pw_aff<Domain>(res);
28542 template <typename Domain>
28543 template <typename Domain2>
28544 typed::multi_aff<Domain2> typed::multi_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
28546 auto res = isl::multi_aff::set_range_tuple(id);
28547 return typed::multi_aff<Domain2>(res);
28550 template <typename Domain>
28551 template <typename Domain2>
28552 typed::multi_aff<Domain2> typed::multi_aff<Domain>::set_range_tuple(const std::string &id) const
28554 auto res = isl::multi_aff::set_range_tuple(id);
28555 return typed::multi_aff<Domain2>(res);
28558 template <typename Domain>
28559 typed::space<Domain> typed::multi_aff<Domain>::space() const
28561 auto res = isl::multi_aff::space();
28562 return typed::space<Domain>(res);
28565 template <typename Domain>
28566 typed::multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::multi_aff<Domain> &multi2) const
28568 auto res = isl::multi_aff::sub(multi2);
28569 return typed::multi_aff<Domain>(res);
28572 template <typename Domain>
28573 typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
28575 auto res = isl::multi_aff::sub(multi2);
28576 return typed::multi_pw_aff<Domain>(res);
28579 template <typename Domain>
28580 typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
28582 auto res = isl::multi_aff::sub(multi2);
28583 return typed::multi_union_pw_aff<Domain>(res);
28586 template <typename Domain>
28587 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &pma2) const
28589 auto res = isl::multi_aff::sub(pma2);
28590 return typed::pw_multi_aff<Domain>(res);
28593 template <typename Domain>
28594 typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::union_pw_multi_aff<Domain> &upma2) const
28596 auto res = isl::multi_aff::sub(upma2);
28597 return typed::union_pw_multi_aff<Domain>(res);
28600 template <typename Domain>
28601 typed::multi_aff<Domain> typed::multi_aff<Domain>::sub(const typed::aff<Domain> &multi2) const
28603 auto res = isl::multi_aff::sub(multi2);
28604 return typed::multi_aff<Domain>(res);
28607 template <typename Domain>
28608 typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::to_multi_pw_aff() const
28610 auto res = isl::multi_aff::to_multi_pw_aff();
28611 return typed::multi_pw_aff<Domain>(res);
28614 template <typename Domain>
28615 typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::to_multi_union_pw_aff() const
28617 auto res = isl::multi_aff::to_multi_union_pw_aff();
28618 return typed::multi_union_pw_aff<Domain>(res);
28621 template <typename Domain>
28622 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::to_pw_multi_aff() const
28624 auto res = isl::multi_aff::to_pw_multi_aff();
28625 return typed::pw_multi_aff<Domain>(res);
28628 template <typename Domain>
28629 typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::to_union_pw_multi_aff() const
28631 auto res = isl::multi_aff::to_union_pw_multi_aff();
28632 return typed::union_pw_multi_aff<Domain>(res);
28635 template <typename Domain>
28636 template <typename Arg1>
28637 typed::multi_aff<Arg1, Domain> typed::multi_aff<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
28639 auto res = isl::multi_aff::unbind_params_insert_domain(domain);
28640 return typed::multi_aff<Arg1, Domain>(res);
28643 template <typename Domain>
28644 typed::multi_pw_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mpa2) const
28646 auto res = isl::multi_aff::union_add(mpa2);
28647 return typed::multi_pw_aff<Domain>(res);
28650 template <typename Domain>
28651 typed::multi_union_pw_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
28653 auto res = isl::multi_aff::union_add(mupa2);
28654 return typed::multi_union_pw_aff<Domain>(res);
28657 template <typename Domain>
28658 typed::pw_multi_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &pma2) const
28660 auto res = isl::multi_aff::union_add(pma2);
28661 return typed::pw_multi_aff<Domain>(res);
28664 template <typename Domain>
28665 typed::union_pw_multi_aff<Domain> typed::multi_aff<Domain>::union_add(const typed::union_pw_multi_aff<Domain> &upma2) const
28667 auto res = isl::multi_aff::union_add(upma2);
28668 return typed::union_pw_multi_aff<Domain>(res);
28671 template <typename Domain, typename Range>
28672 typed::multi_aff<Domain, Range>::multi_aff(const typed::aff<Domain, Range> &aff)
28673 : isl::multi_aff(aff)
28677 template <typename Domain, typename Range>
28678 typed::multi_aff<Domain, Range>::multi_aff(const typed::space<Domain, Range> &space, const typed::aff_list<Domain, Anonymous> &list)
28679 : isl::multi_aff(space, list)
28683 template <typename Domain, typename Range>
28684 typed::multi_aff<Domain, Range>::multi_aff(const isl::ctx &ctx, const std::string &str)
28685 : isl::multi_aff(ctx, str)
28689 template <typename Domain, typename Range>
28690 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &multi2) const
28692 auto res = isl::multi_aff::add(multi2);
28693 return typed::multi_aff<Domain, Range>(res);
28696 template <typename Domain, typename Range>
28697 typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
28699 auto res = isl::multi_aff::add(multi2);
28700 return typed::multi_pw_aff<Domain, Range>(res);
28703 template <typename Domain, typename Range>
28704 typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
28706 auto res = isl::multi_aff::add(multi2);
28707 return typed::multi_union_pw_aff<Domain, Range>(res);
28710 template <typename Domain, typename Range>
28711 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &pma2) const
28713 auto res = isl::multi_aff::add(pma2);
28714 return typed::pw_multi_aff<Domain, Range>(res);
28717 template <typename Domain, typename Range>
28718 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
28720 auto res = isl::multi_aff::add(upma2);
28721 return typed::union_pw_multi_aff<Domain, Range>(res);
28724 template <typename Domain, typename Range>
28725 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add(const typed::aff<Domain, Range> &multi2) const
28727 auto res = isl::multi_aff::add(multi2);
28728 return typed::multi_aff<Domain, Range>(res);
28731 template <typename Domain, typename Range>
28732 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add_constant(const typed::multi_val<Range> &mv) const
28734 auto res = isl::multi_aff::add_constant(mv);
28735 return typed::multi_aff<Domain, Range>(res);
28738 template <typename Domain, typename Range>
28739 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add_constant(const typed::val<Range> &v) const
28741 auto res = isl::multi_aff::add_constant(v);
28742 return typed::multi_aff<Domain, Range>(res);
28745 template <typename Domain, typename Range>
28746 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::add_constant(long v) const
28748 auto res = isl::multi_aff::add_constant(v);
28749 return typed::multi_aff<Domain, Range>(res);
28752 template <typename Domain, typename Range>
28753 template <typename Range2>
28754 typed::union_pw_multi_aff<Domain, Range2> typed::multi_aff<Domain, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
28756 auto res = isl::multi_aff::apply(upma2);
28757 return typed::union_pw_multi_aff<Domain, Range2>(res);
28760 template <typename Domain, typename Range>
28761 typed::map<Domain, Range> typed::multi_aff<Domain, Range>::as_map() const
28763 auto res = isl::multi_aff::as_map();
28764 return typed::map<Domain, Range>(res);
28767 template <typename Domain, typename Range>
28768 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::as_multi_aff() const
28770 auto res = isl::multi_aff::as_multi_aff();
28771 return typed::multi_aff<Domain, Range>(res);
28774 template <typename Domain, typename Range>
28775 typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::as_multi_union_pw_aff() const
28777 auto res = isl::multi_aff::as_multi_union_pw_aff();
28778 return typed::multi_union_pw_aff<Domain, Range>(res);
28781 template <typename Domain, typename Range>
28782 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::as_pw_multi_aff() const
28784 auto res = isl::multi_aff::as_pw_multi_aff();
28785 return typed::pw_multi_aff<Domain, Range>(res);
28788 template <typename Domain, typename Range>
28789 typed::union_map<Domain, Range> typed::multi_aff<Domain, Range>::as_union_map() const
28791 auto res = isl::multi_aff::as_union_map();
28792 return typed::union_map<Domain, Range>(res);
28795 template <typename Domain, typename Range>
28796 typed::aff<Domain, Anonymous> typed::multi_aff<Domain, Range>::at(int pos) const
28798 auto res = isl::multi_aff::at(pos);
28799 return typed::aff<Domain, Anonymous>(res);
28802 template <typename Domain, typename Range>
28803 typed::basic_set<Domain> typed::multi_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
28805 auto res = isl::multi_aff::bind(tuple);
28806 return typed::basic_set<Domain>(res);
28809 template <typename Domain, typename Range>
28810 typed::multi_aff<Range> typed::multi_aff<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
28812 auto res = isl::multi_aff::bind_domain(tuple);
28813 return typed::multi_aff<Range>(res);
28816 template <typename Domain, typename Range>
28817 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::coalesce() const
28819 auto res = isl::multi_aff::coalesce();
28820 return typed::pw_multi_aff<Domain, Range>(res);
28823 template <typename Domain, typename Range>
28824 typed::multi_val<Range> typed::multi_aff<Domain, Range>::constant_multi_val() const
28826 auto res = isl::multi_aff::constant_multi_val();
28827 return typed::multi_val<Range>(res);
28830 template <typename Domain, typename Range>
28831 typed::set<Domain> typed::multi_aff<Domain, Range>::domain() const
28833 auto res = isl::multi_aff::domain();
28834 return typed::set<Domain>(res);
28837 template <typename Domain, typename Range>
28838 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::drop_unused_params() const
28840 auto res = isl::multi_aff::drop_unused_params();
28841 return typed::pw_multi_aff<Domain, Range>(res);
28844 template <typename Domain, typename Range>
28845 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::extract_pw_multi_aff(const typed::space<Domain, Range> &space) const
28847 auto res = isl::multi_aff::extract_pw_multi_aff(space);
28848 return typed::pw_multi_aff<Domain, Range>(res);
28851 template <typename Domain, typename Range>
28852 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::floor() const
28854 auto res = isl::multi_aff::floor();
28855 return typed::multi_aff<Domain, Range>(res);
28858 template <typename Domain, typename Range>
28859 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::set<Domain> &context) const
28861 auto res = isl::multi_aff::gist(context);
28862 return typed::multi_aff<Domain, Range>(res);
28865 template <typename Domain, typename Range>
28866 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
28868 auto res = isl::multi_aff::gist(context);
28869 return typed::union_pw_multi_aff<Domain, Range>(res);
28872 template <typename Domain, typename Range>
28873 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::basic_set<Domain> &context) const
28875 auto res = isl::multi_aff::gist(context);
28876 return typed::multi_aff<Domain, Range>(res);
28879 template <typename Domain, typename Range>
28880 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist(const typed::point<Domain> &context) const
28882 auto res = isl::multi_aff::gist(context);
28883 return typed::multi_aff<Domain, Range>(res);
28886 template <typename Domain, typename Range>
28887 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist_params(const typed::set<> &context) const
28889 auto res = isl::multi_aff::gist_params(context);
28890 return typed::multi_aff<Domain, Range>(res);
28893 template <typename Domain, typename Range>
28894 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist_params(const typed::basic_set<> &context) const
28896 auto res = isl::multi_aff::gist_params(context);
28897 return typed::multi_aff<Domain, Range>(res);
28900 template <typename Domain, typename Range>
28901 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::gist_params(const typed::point<> &context) const
28903 auto res = isl::multi_aff::gist_params(context);
28904 return typed::multi_aff<Domain, Range>(res);
28907 template <typename Domain, typename Range>
28908 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::identity() const
28910 auto res = isl::multi_aff::identity();
28911 return typed::multi_aff<Domain, Range>(res);
28914 template <typename Domain, typename Range>
28915 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
28917 auto res = isl::multi_aff::intersect_domain(set);
28918 return typed::pw_multi_aff<Domain, Range>(res);
28921 template <typename Domain, typename Range>
28922 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
28924 auto res = isl::multi_aff::intersect_domain(space);
28925 return typed::union_pw_multi_aff<Domain, Range>(res);
28928 template <typename Domain, typename Range>
28929 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
28931 auto res = isl::multi_aff::intersect_domain(uset);
28932 return typed::union_pw_multi_aff<Domain, Range>(res);
28935 template <typename Domain, typename Range>
28936 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
28938 auto res = isl::multi_aff::intersect_params(set);
28939 return typed::pw_multi_aff<Domain, Range>(res);
28942 template <typename Domain, typename Range>
28943 typed::aff_list<Domain, Anonymous> typed::multi_aff<Domain, Range>::list() const
28945 auto res = isl::multi_aff::list();
28946 return typed::aff_list<Domain, Anonymous>(res);
28949 template <typename Domain, typename Range>
28950 typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::max(const typed::multi_pw_aff<Domain, Range> &multi2) const
28952 auto res = isl::multi_aff::max(multi2);
28953 return typed::multi_pw_aff<Domain, Range>(res);
28956 template <typename Domain, typename Range>
28957 typed::multi_val<Range> typed::multi_aff<Domain, Range>::max_multi_val() const
28959 auto res = isl::multi_aff::max_multi_val();
28960 return typed::multi_val<Range>(res);
28963 template <typename Domain, typename Range>
28964 typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::min(const typed::multi_pw_aff<Domain, Range> &multi2) const
28966 auto res = isl::multi_aff::min(multi2);
28967 return typed::multi_pw_aff<Domain, Range>(res);
28970 template <typename Domain, typename Range>
28971 typed::multi_val<Range> typed::multi_aff<Domain, Range>::min_multi_val() const
28973 auto res = isl::multi_aff::min_multi_val();
28974 return typed::multi_val<Range>(res);
28977 template <typename Domain, typename Range>
28978 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::neg() const
28980 auto res = isl::multi_aff::neg();
28981 return typed::multi_aff<Domain, Range>(res);
28984 template <typename Domain, typename Range>
28985 template <typename Domain2, typename Range2>
28986 typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_aff<Domain, Range>::product(const typed::multi_aff<Domain2, Range2> &multi2) const
28988 auto res = isl::multi_aff::product(multi2);
28989 return typed::multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
28992 template <typename Domain, typename Range>
28993 template <typename Domain2, typename Range2>
28994 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_aff<Domain, Range>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
28996 auto res = isl::multi_aff::product(multi2);
28997 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
29000 template <typename Domain, typename Range>
29001 template <typename Domain2, typename Range2>
29002 typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_aff<Domain, Range>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
29004 auto res = isl::multi_aff::product(pma2);
29005 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
29008 template <typename Domain, typename Range>
29009 template <typename Domain2>
29010 typed::multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> typed::multi_aff<Domain, Range>::product(const typed::aff<Domain2, Anonymous> &multi2) const
29012 auto res = isl::multi_aff::product(multi2);
29013 return typed::multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>>(res);
29016 template <typename Domain, typename Range>
29017 template <typename Domain2>
29018 typed::multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &ma2) const
29020 auto res = isl::multi_aff::pullback(ma2);
29021 return typed::multi_aff<Domain2, Range>(res);
29024 template <typename Domain, typename Range>
29025 typed::multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &ma2) const
29027 auto res = isl::multi_aff::pullback(ma2);
29028 return typed::multi_aff<Range>(res);
29031 template <typename Domain, typename Range>
29032 template <typename Domain2>
29033 typed::multi_pw_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
29035 auto res = isl::multi_aff::pullback(mpa2);
29036 return typed::multi_pw_aff<Domain2, Range>(res);
29039 template <typename Domain, typename Range>
29040 typed::multi_pw_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
29042 auto res = isl::multi_aff::pullback(mpa2);
29043 return typed::multi_pw_aff<Range>(res);
29046 template <typename Domain, typename Range>
29047 template <typename Domain2>
29048 typed::pw_multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
29050 auto res = isl::multi_aff::pullback(pma2);
29051 return typed::pw_multi_aff<Domain2, Range>(res);
29054 template <typename Domain, typename Range>
29055 typed::pw_multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
29057 auto res = isl::multi_aff::pullback(pma2);
29058 return typed::pw_multi_aff<Range>(res);
29061 template <typename Domain, typename Range>
29062 template <typename Domain2>
29063 typed::union_pw_multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
29065 auto res = isl::multi_aff::pullback(upma2);
29066 return typed::union_pw_multi_aff<Domain2, Range>(res);
29069 template <typename Domain, typename Range>
29070 typed::union_pw_multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
29072 auto res = isl::multi_aff::pullback(upma2);
29073 return typed::union_pw_multi_aff<Range>(res);
29076 template <typename Domain, typename Range>
29077 template <typename Domain2>
29078 typed::multi_aff<Domain2, Range> typed::multi_aff<Domain, Range>::pullback(const typed::aff<Domain2, Domain> &ma2) const
29080 auto res = isl::multi_aff::pullback(ma2);
29081 return typed::multi_aff<Domain2, Range>(res);
29084 template <typename Domain, typename Range>
29085 typed::multi_aff<Range> typed::multi_aff<Domain, Range>::pullback(const typed::aff<Domain> &ma2) const
29087 auto res = isl::multi_aff::pullback(ma2);
29088 return typed::multi_aff<Range>(res);
29091 template <typename Domain, typename Range>
29092 typed::pw_multi_aff_list<Domain, Range> typed::multi_aff<Domain, Range>::pw_multi_aff_list() const
29094 auto res = isl::multi_aff::pw_multi_aff_list();
29095 return typed::pw_multi_aff_list<Domain, Range>(res);
29098 template <typename Domain, typename Range>
29099 template <typename Range2>
29100 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &multi2) const
29102 auto res = isl::multi_aff::range_product(multi2);
29103 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
29106 template <typename Domain, typename Range>
29107 template <typename Range2>
29108 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
29110 auto res = isl::multi_aff::range_product(multi2);
29111 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
29114 template <typename Domain, typename Range>
29115 template <typename Range2>
29116 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
29118 auto res = isl::multi_aff::range_product(multi2);
29119 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
29122 template <typename Domain, typename Range>
29123 template <typename Range2>
29124 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
29126 auto res = isl::multi_aff::range_product(pma2);
29127 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
29130 template <typename Domain, typename Range>
29131 template <typename Range2>
29132 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, Range>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
29134 auto res = isl::multi_aff::range_product(upma2);
29135 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
29138 template <typename Domain, typename Range>
29139 typed::multi_aff<Domain, pair<Range, Anonymous>> typed::multi_aff<Domain, Range>::range_product(const typed::aff<Domain, Anonymous> &multi2) const
29141 auto res = isl::multi_aff::range_product(multi2);
29142 return typed::multi_aff<Domain, pair<Range, Anonymous>>(res);
29145 template <typename Domain, typename Range>
29146 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
29148 auto res = isl::multi_aff::scale(mv);
29149 return typed::multi_aff<Domain, Range>(res);
29152 template <typename Domain, typename Range>
29153 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale(const typed::val<Range> &v) const
29155 auto res = isl::multi_aff::scale(v);
29156 return typed::multi_aff<Domain, Range>(res);
29159 template <typename Domain, typename Range>
29160 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale(long v) const
29162 auto res = isl::multi_aff::scale(v);
29163 return typed::multi_aff<Domain, Range>(res);
29166 template <typename Domain, typename Range>
29167 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
29169 auto res = isl::multi_aff::scale_down(mv);
29170 return typed::multi_aff<Domain, Range>(res);
29173 template <typename Domain, typename Range>
29174 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
29176 auto res = isl::multi_aff::scale_down(v);
29177 return typed::multi_aff<Domain, Range>(res);
29180 template <typename Domain, typename Range>
29181 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::scale_down(long v) const
29183 auto res = isl::multi_aff::scale_down(v);
29184 return typed::multi_aff<Domain, Range>(res);
29187 template <typename Domain, typename Range>
29188 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::set_at(int pos, const typed::aff<Domain, Anonymous> &el) const
29190 auto res = isl::multi_aff::set_at(pos, el);
29191 return typed::multi_aff<Domain, Range>(res);
29194 template <typename Domain, typename Range>
29195 typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
29197 auto res = isl::multi_aff::set_at(pos, el);
29198 return typed::multi_pw_aff<Domain, Range>(res);
29201 template <typename Domain, typename Range>
29202 typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
29204 auto res = isl::multi_aff::set_at(pos, el);
29205 return typed::multi_union_pw_aff<Domain, Range>(res);
29208 template <typename Domain, typename Range>
29209 template <typename Range2>
29210 typed::multi_aff<Domain, Range2> typed::multi_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
29212 auto res = isl::multi_aff::set_range_tuple(id);
29213 return typed::multi_aff<Domain, Range2>(res);
29216 template <typename Domain, typename Range>
29217 template <typename Range2>
29218 typed::multi_aff<Domain, Range2> typed::multi_aff<Domain, Range>::set_range_tuple(const std::string &id) const
29220 auto res = isl::multi_aff::set_range_tuple(id);
29221 return typed::multi_aff<Domain, Range2>(res);
29224 template <typename Domain, typename Range>
29225 typed::space<Domain, Range> typed::multi_aff<Domain, Range>::space() const
29227 auto res = isl::multi_aff::space();
29228 return typed::space<Domain, Range>(res);
29231 template <typename Domain, typename Range>
29232 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &multi2) const
29234 auto res = isl::multi_aff::sub(multi2);
29235 return typed::multi_aff<Domain, Range>(res);
29238 template <typename Domain, typename Range>
29239 typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
29241 auto res = isl::multi_aff::sub(multi2);
29242 return typed::multi_pw_aff<Domain, Range>(res);
29245 template <typename Domain, typename Range>
29246 typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
29248 auto res = isl::multi_aff::sub(multi2);
29249 return typed::multi_union_pw_aff<Domain, Range>(res);
29252 template <typename Domain, typename Range>
29253 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &pma2) const
29255 auto res = isl::multi_aff::sub(pma2);
29256 return typed::pw_multi_aff<Domain, Range>(res);
29259 template <typename Domain, typename Range>
29260 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
29262 auto res = isl::multi_aff::sub(upma2);
29263 return typed::union_pw_multi_aff<Domain, Range>(res);
29266 template <typename Domain, typename Range>
29267 typed::multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::sub(const typed::aff<Domain, Range> &multi2) const
29269 auto res = isl::multi_aff::sub(multi2);
29270 return typed::multi_aff<Domain, Range>(res);
29273 template <typename Domain, typename Range>
29274 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::subtract_domain(const typed::set<Domain> &set) const
29276 auto res = isl::multi_aff::subtract_domain(set);
29277 return typed::pw_multi_aff<Domain, Range>(res);
29280 template <typename Domain, typename Range>
29281 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::subtract_domain(const typed::space<Domain> &space) const
29283 auto res = isl::multi_aff::subtract_domain(space);
29284 return typed::union_pw_multi_aff<Domain, Range>(res);
29287 template <typename Domain, typename Range>
29288 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::subtract_domain(const typed::union_set<Domain> &uset) const
29290 auto res = isl::multi_aff::subtract_domain(uset);
29291 return typed::union_pw_multi_aff<Domain, Range>(res);
29294 template <typename Domain, typename Range>
29295 typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_multi_pw_aff() const
29297 auto res = isl::multi_aff::to_multi_pw_aff();
29298 return typed::multi_pw_aff<Domain, Range>(res);
29301 template <typename Domain, typename Range>
29302 typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_multi_union_pw_aff() const
29304 auto res = isl::multi_aff::to_multi_union_pw_aff();
29305 return typed::multi_union_pw_aff<Domain, Range>(res);
29308 template <typename Domain, typename Range>
29309 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_pw_multi_aff() const
29311 auto res = isl::multi_aff::to_pw_multi_aff();
29312 return typed::pw_multi_aff<Domain, Range>(res);
29315 template <typename Domain, typename Range>
29316 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::to_union_pw_multi_aff() const
29318 auto res = isl::multi_aff::to_union_pw_multi_aff();
29319 return typed::union_pw_multi_aff<Domain, Range>(res);
29322 template <typename Domain, typename Range>
29323 typed::multi_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const
29325 auto res = isl::multi_aff::union_add(mpa2);
29326 return typed::multi_pw_aff<Domain, Range>(res);
29329 template <typename Domain, typename Range>
29330 typed::multi_union_pw_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
29332 auto res = isl::multi_aff::union_add(mupa2);
29333 return typed::multi_union_pw_aff<Domain, Range>(res);
29336 template <typename Domain, typename Range>
29337 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const
29339 auto res = isl::multi_aff::union_add(pma2);
29340 return typed::pw_multi_aff<Domain, Range>(res);
29343 template <typename Domain, typename Range>
29344 typed::union_pw_multi_aff<Domain, Range> typed::multi_aff<Domain, Range>::union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
29346 auto res = isl::multi_aff::union_add(upma2);
29347 return typed::union_pw_multi_aff<Domain, Range>(res);
29350 template <typename Domain2, typename Range2, typename Range>
29351 typed::multi_aff<pair<Domain2, Range2>, Range>::multi_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff)
29352 : isl::multi_aff(aff)
29356 template <typename Domain2, typename Range2, typename Range>
29357 typed::multi_aff<pair<Domain2, Range2>, Range>::multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::aff_list<pair<Domain2, Range2>, Anonymous> &list)
29358 : isl::multi_aff(space, list)
29362 template <typename Domain2, typename Range2, typename Range>
29363 typed::multi_aff<pair<Domain2, Range2>, Range>::multi_aff(const isl::ctx &ctx, const std::string &str)
29364 : isl::multi_aff(ctx, str)
29368 template <typename Domain2, typename Range2, typename Range>
29369 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
29371 auto res = isl::multi_aff::add(multi2);
29372 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29375 template <typename Domain2, typename Range2, typename Range>
29376 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
29378 auto res = isl::multi_aff::add(multi2);
29379 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
29382 template <typename Domain2, typename Range2, typename Range>
29383 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
29385 auto res = isl::multi_aff::add(multi2);
29386 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
29389 template <typename Domain2, typename Range2, typename Range>
29390 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
29392 auto res = isl::multi_aff::add(pma2);
29393 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29396 template <typename Domain2, typename Range2, typename Range>
29397 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
29399 auto res = isl::multi_aff::add(upma2);
29400 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29403 template <typename Domain2, typename Range2, typename Range>
29404 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
29406 auto res = isl::multi_aff::add(multi2);
29407 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29410 template <typename Domain2, typename Range2, typename Range>
29411 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::multi_val<Range> &mv) const
29413 auto res = isl::multi_aff::add_constant(mv);
29414 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29417 template <typename Domain2, typename Range2, typename Range>
29418 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::val<Range> &v) const
29420 auto res = isl::multi_aff::add_constant(v);
29421 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29424 template <typename Domain2, typename Range2, typename Range>
29425 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::add_constant(long v) const
29427 auto res = isl::multi_aff::add_constant(v);
29428 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29431 template <typename Domain2, typename Range2, typename Range>
29432 template <typename Arg2>
29433 typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> typed::multi_aff<pair<Domain2, Range2>, Range>::apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const
29435 auto res = isl::multi_aff::apply(upma2);
29436 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2>(res);
29439 template <typename Domain2, typename Range2, typename Range>
29440 typed::map<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_map() const
29442 auto res = isl::multi_aff::as_map();
29443 return typed::map<pair<Domain2, Range2>, Range>(res);
29446 template <typename Domain2, typename Range2, typename Range>
29447 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_multi_aff() const
29449 auto res = isl::multi_aff::as_multi_aff();
29450 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29453 template <typename Domain2, typename Range2, typename Range>
29454 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_multi_union_pw_aff() const
29456 auto res = isl::multi_aff::as_multi_union_pw_aff();
29457 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
29460 template <typename Domain2, typename Range2, typename Range>
29461 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_pw_multi_aff() const
29463 auto res = isl::multi_aff::as_pw_multi_aff();
29464 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29467 template <typename Domain2, typename Range2, typename Range>
29468 typed::union_map<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::as_union_map() const
29470 auto res = isl::multi_aff::as_union_map();
29471 return typed::union_map<pair<Domain2, Range2>, Range>(res);
29474 template <typename Domain2, typename Range2, typename Range>
29475 typed::aff<pair<Domain2, Range2>, Anonymous> typed::multi_aff<pair<Domain2, Range2>, Range>::at(int pos) const
29477 auto res = isl::multi_aff::at(pos);
29478 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
29481 template <typename Domain2, typename Range2, typename Range>
29482 typed::basic_set<pair<Domain2, Range2>> typed::multi_aff<pair<Domain2, Range2>, Range>::bind(const typed::multi_id<Range> &tuple) const
29484 auto res = isl::multi_aff::bind(tuple);
29485 return typed::basic_set<pair<Domain2, Range2>>(res);
29488 template <typename Domain2, typename Range2, typename Range>
29489 typed::multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
29491 auto res = isl::multi_aff::bind_domain(tuple);
29492 return typed::multi_aff<Range>(res);
29495 template <typename Domain2, typename Range2, typename Range>
29496 typed::multi_aff<Range2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
29498 auto res = isl::multi_aff::bind_domain_wrapped_domain(tuple);
29499 return typed::multi_aff<Range2, Range>(res);
29502 template <typename Domain2, typename Range2, typename Range>
29503 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::coalesce() const
29505 auto res = isl::multi_aff::coalesce();
29506 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29509 template <typename Domain2, typename Range2, typename Range>
29510 typed::multi_val<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::constant_multi_val() const
29512 auto res = isl::multi_aff::constant_multi_val();
29513 return typed::multi_val<Range>(res);
29516 template <typename Domain2, typename Range2, typename Range>
29517 typed::set<pair<Domain2, Range2>> typed::multi_aff<pair<Domain2, Range2>, Range>::domain() const
29519 auto res = isl::multi_aff::domain();
29520 return typed::set<pair<Domain2, Range2>>(res);
29523 template <typename Domain2, typename Range2, typename Range>
29524 typed::multi_aff<pair<Range2, Domain2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::domain_reverse() const
29526 auto res = isl::multi_aff::domain_reverse();
29527 return typed::multi_aff<pair<Range2, Domain2>, Range>(res);
29530 template <typename Domain2, typename Range2, typename Range>
29531 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::drop_unused_params() const
29533 auto res = isl::multi_aff::drop_unused_params();
29534 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29537 template <typename Domain2, typename Range2, typename Range>
29538 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const
29540 auto res = isl::multi_aff::extract_pw_multi_aff(space);
29541 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29544 template <typename Domain2, typename Range2, typename Range>
29545 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::floor() const
29547 auto res = isl::multi_aff::floor();
29548 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29551 template <typename Domain2, typename Range2, typename Range>
29552 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::set<pair<Domain2, Range2>> &context) const
29554 auto res = isl::multi_aff::gist(context);
29555 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29558 template <typename Domain2, typename Range2, typename Range>
29559 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
29561 auto res = isl::multi_aff::gist(context);
29562 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29565 template <typename Domain2, typename Range2, typename Range>
29566 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::basic_set<pair<Domain2, Range2>> &context) const
29568 auto res = isl::multi_aff::gist(context);
29569 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29572 template <typename Domain2, typename Range2, typename Range>
29573 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::point<pair<Domain2, Range2>> &context) const
29575 auto res = isl::multi_aff::gist(context);
29576 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29579 template <typename Domain2, typename Range2, typename Range>
29580 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::set<> &context) const
29582 auto res = isl::multi_aff::gist_params(context);
29583 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29586 template <typename Domain2, typename Range2, typename Range>
29587 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::basic_set<> &context) const
29589 auto res = isl::multi_aff::gist_params(context);
29590 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29593 template <typename Domain2, typename Range2, typename Range>
29594 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::point<> &context) const
29596 auto res = isl::multi_aff::gist_params(context);
29597 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29600 template <typename Domain2, typename Range2, typename Range>
29601 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::identity() const
29603 auto res = isl::multi_aff::identity();
29604 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29607 template <typename Domain2, typename Range2, typename Range>
29608 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
29610 auto res = isl::multi_aff::intersect_domain(set);
29611 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29614 template <typename Domain2, typename Range2, typename Range>
29615 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
29617 auto res = isl::multi_aff::intersect_domain(space);
29618 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29621 template <typename Domain2, typename Range2, typename Range>
29622 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
29624 auto res = isl::multi_aff::intersect_domain(uset);
29625 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29628 template <typename Domain2, typename Range2, typename Range>
29629 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const
29631 auto res = isl::multi_aff::intersect_domain_wrapped_domain(uset);
29632 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29635 template <typename Domain2, typename Range2, typename Range>
29636 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::set<> &set) const
29638 auto res = isl::multi_aff::intersect_params(set);
29639 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29642 template <typename Domain2, typename Range2, typename Range>
29643 typed::aff_list<pair<Domain2, Range2>, Anonymous> typed::multi_aff<pair<Domain2, Range2>, Range>::list() const
29645 auto res = isl::multi_aff::list();
29646 return typed::aff_list<pair<Domain2, Range2>, Anonymous>(res);
29649 template <typename Domain2, typename Range2, typename Range>
29650 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
29652 auto res = isl::multi_aff::max(multi2);
29653 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
29656 template <typename Domain2, typename Range2, typename Range>
29657 typed::multi_val<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::max_multi_val() const
29659 auto res = isl::multi_aff::max_multi_val();
29660 return typed::multi_val<Range>(res);
29663 template <typename Domain2, typename Range2, typename Range>
29664 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
29666 auto res = isl::multi_aff::min(multi2);
29667 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
29670 template <typename Domain2, typename Range2, typename Range>
29671 typed::multi_val<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::min_multi_val() const
29673 auto res = isl::multi_aff::min_multi_val();
29674 return typed::multi_val<Range>(res);
29677 template <typename Domain2, typename Range2, typename Range>
29678 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::neg() const
29680 auto res = isl::multi_aff::neg();
29681 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29684 template <typename Domain2, typename Range2, typename Range>
29685 template <typename Domain3>
29686 typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
29688 auto res = isl::multi_aff::preimage_domain_wrapped_domain(pma2);
29689 return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
29692 template <typename Domain2, typename Range2, typename Range>
29693 template <typename Domain3>
29694 typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
29696 auto res = isl::multi_aff::preimage_domain_wrapped_domain(upma2);
29697 return typed::union_pw_multi_aff<pair<Domain3, Range2>, Range>(res);
29700 template <typename Domain2, typename Range2, typename Range>
29701 template <typename Arg2, typename Arg3>
29702 typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_aff<Arg2, Arg3> &multi2) const
29704 auto res = isl::multi_aff::product(multi2);
29705 return typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
29708 template <typename Domain2, typename Range2, typename Range>
29709 template <typename Arg2, typename Arg3>
29710 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const
29712 auto res = isl::multi_aff::product(multi2);
29713 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
29716 template <typename Domain2, typename Range2, typename Range>
29717 template <typename Arg2, typename Arg3>
29718 typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const
29720 auto res = isl::multi_aff::product(pma2);
29721 return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
29724 template <typename Domain2, typename Range2, typename Range>
29725 template <typename Arg2>
29726 typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> typed::multi_aff<pair<Domain2, Range2>, Range>::product(const typed::aff<Arg2, Anonymous> &multi2) const
29728 auto res = isl::multi_aff::product(multi2);
29729 return typed::multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>>(res);
29732 template <typename Domain2, typename Range2, typename Range>
29733 template <typename Arg2>
29734 typed::multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma2) const
29736 auto res = isl::multi_aff::pullback(ma2);
29737 return typed::multi_aff<Arg2, Range>(res);
29740 template <typename Domain2, typename Range2, typename Range>
29741 typed::multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma2) const
29743 auto res = isl::multi_aff::pullback(ma2);
29744 return typed::multi_aff<Range>(res);
29747 template <typename Domain2, typename Range2, typename Range>
29748 template <typename Arg2>
29749 typed::multi_pw_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const
29751 auto res = isl::multi_aff::pullback(mpa2);
29752 return typed::multi_pw_aff<Arg2, Range>(res);
29755 template <typename Domain2, typename Range2, typename Range>
29756 typed::multi_pw_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const
29758 auto res = isl::multi_aff::pullback(mpa2);
29759 return typed::multi_pw_aff<Range>(res);
29762 template <typename Domain2, typename Range2, typename Range>
29763 template <typename Arg2>
29764 typed::pw_multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const
29766 auto res = isl::multi_aff::pullback(pma2);
29767 return typed::pw_multi_aff<Arg2, Range>(res);
29770 template <typename Domain2, typename Range2, typename Range>
29771 typed::pw_multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const
29773 auto res = isl::multi_aff::pullback(pma2);
29774 return typed::pw_multi_aff<Range>(res);
29777 template <typename Domain2, typename Range2, typename Range>
29778 template <typename Arg2>
29779 typed::union_pw_multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const
29781 auto res = isl::multi_aff::pullback(upma2);
29782 return typed::union_pw_multi_aff<Arg2, Range>(res);
29785 template <typename Domain2, typename Range2, typename Range>
29786 typed::union_pw_multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const
29788 auto res = isl::multi_aff::pullback(upma2);
29789 return typed::union_pw_multi_aff<Range>(res);
29792 template <typename Domain2, typename Range2, typename Range>
29793 template <typename Arg2>
29794 typed::multi_aff<Arg2, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::aff<Arg2, pair<Domain2, Range2>> &ma2) const
29796 auto res = isl::multi_aff::pullback(ma2);
29797 return typed::multi_aff<Arg2, Range>(res);
29800 template <typename Domain2, typename Range2, typename Range>
29801 typed::multi_aff<Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::aff<pair<Domain2, Range2>> &ma2) const
29803 auto res = isl::multi_aff::pullback(ma2);
29804 return typed::multi_aff<Range>(res);
29807 template <typename Domain2, typename Range2, typename Range>
29808 typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff_list() const
29810 auto res = isl::multi_aff::pw_multi_aff_list();
29811 return typed::pw_multi_aff_list<pair<Domain2, Range2>, Range>(res);
29814 template <typename Domain2, typename Range2, typename Range>
29815 template <typename Arg2>
29816 typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const
29818 auto res = isl::multi_aff::range_product(multi2);
29819 return typed::multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
29822 template <typename Domain2, typename Range2, typename Range>
29823 template <typename Arg2>
29824 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
29826 auto res = isl::multi_aff::range_product(multi2);
29827 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
29830 template <typename Domain2, typename Range2, typename Range>
29831 template <typename Arg2>
29832 typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
29834 auto res = isl::multi_aff::range_product(multi2);
29835 return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
29838 template <typename Domain2, typename Range2, typename Range>
29839 template <typename Arg2>
29840 typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const
29842 auto res = isl::multi_aff::range_product(pma2);
29843 return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
29846 template <typename Domain2, typename Range2, typename Range>
29847 template <typename Arg2>
29848 typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const
29850 auto res = isl::multi_aff::range_product(upma2);
29851 return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
29854 template <typename Domain2, typename Range2, typename Range>
29855 typed::multi_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> typed::multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::aff<pair<Domain2, Range2>, Anonymous> &multi2) const
29857 auto res = isl::multi_aff::range_product(multi2);
29858 return typed::multi_aff<pair<Domain2, Range2>, pair<Range, Anonymous>>(res);
29861 template <typename Domain2, typename Range2, typename Range>
29862 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::multi_val<Range> &mv) const
29864 auto res = isl::multi_aff::scale(mv);
29865 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29868 template <typename Domain2, typename Range2, typename Range>
29869 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::val<Range> &v) const
29871 auto res = isl::multi_aff::scale(v);
29872 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29875 template <typename Domain2, typename Range2, typename Range>
29876 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale(long v) const
29878 auto res = isl::multi_aff::scale(v);
29879 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29882 template <typename Domain2, typename Range2, typename Range>
29883 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::multi_val<Range> &mv) const
29885 auto res = isl::multi_aff::scale_down(mv);
29886 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29889 template <typename Domain2, typename Range2, typename Range>
29890 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::val<Range> &v) const
29892 auto res = isl::multi_aff::scale_down(v);
29893 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29896 template <typename Domain2, typename Range2, typename Range>
29897 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::scale_down(long v) const
29899 auto res = isl::multi_aff::scale_down(v);
29900 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29903 template <typename Domain2, typename Range2, typename Range>
29904 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::aff<pair<Domain2, Range2>, Anonymous> &el) const
29906 auto res = isl::multi_aff::set_at(pos, el);
29907 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29910 template <typename Domain2, typename Range2, typename Range>
29911 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
29913 auto res = isl::multi_aff::set_at(pos, el);
29914 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
29917 template <typename Domain2, typename Range2, typename Range>
29918 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
29920 auto res = isl::multi_aff::set_at(pos, el);
29921 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
29924 template <typename Domain2, typename Range2, typename Range>
29925 template <typename Arg1>
29926 typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
29928 auto res = isl::multi_aff::set_range_tuple(id);
29929 return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
29932 template <typename Domain2, typename Range2, typename Range>
29933 template <typename Arg1>
29934 typed::multi_aff<pair<Domain2, Range2>, Arg1> typed::multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const std::string &id) const
29936 auto res = isl::multi_aff::set_range_tuple(id);
29937 return typed::multi_aff<pair<Domain2, Range2>, Arg1>(res);
29940 template <typename Domain2, typename Range2, typename Range>
29941 typed::space<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::space() const
29943 auto res = isl::multi_aff::space();
29944 return typed::space<pair<Domain2, Range2>, Range>(res);
29947 template <typename Domain2, typename Range2, typename Range>
29948 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
29950 auto res = isl::multi_aff::sub(multi2);
29951 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29954 template <typename Domain2, typename Range2, typename Range>
29955 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
29957 auto res = isl::multi_aff::sub(multi2);
29958 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
29961 template <typename Domain2, typename Range2, typename Range>
29962 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
29964 auto res = isl::multi_aff::sub(multi2);
29965 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
29968 template <typename Domain2, typename Range2, typename Range>
29969 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
29971 auto res = isl::multi_aff::sub(pma2);
29972 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29975 template <typename Domain2, typename Range2, typename Range>
29976 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
29978 auto res = isl::multi_aff::sub(upma2);
29979 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29982 template <typename Domain2, typename Range2, typename Range>
29983 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
29985 auto res = isl::multi_aff::sub(multi2);
29986 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
29989 template <typename Domain2, typename Range2, typename Range>
29990 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
29992 auto res = isl::multi_aff::subtract_domain(set);
29993 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
29996 template <typename Domain2, typename Range2, typename Range>
29997 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
29999 auto res = isl::multi_aff::subtract_domain(space);
30000 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
30003 template <typename Domain2, typename Range2, typename Range>
30004 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
30006 auto res = isl::multi_aff::subtract_domain(uset);
30007 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
30010 template <typename Domain2, typename Range2, typename Range>
30011 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_multi_pw_aff() const
30013 auto res = isl::multi_aff::to_multi_pw_aff();
30014 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
30017 template <typename Domain2, typename Range2, typename Range>
30018 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_multi_union_pw_aff() const
30020 auto res = isl::multi_aff::to_multi_union_pw_aff();
30021 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
30024 template <typename Domain2, typename Range2, typename Range>
30025 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_pw_multi_aff() const
30027 auto res = isl::multi_aff::to_pw_multi_aff();
30028 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
30031 template <typename Domain2, typename Range2, typename Range>
30032 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::to_union_pw_multi_aff() const
30034 auto res = isl::multi_aff::to_union_pw_multi_aff();
30035 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
30038 template <typename Domain2, typename Range2, typename Range>
30039 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
30041 auto res = isl::multi_aff::union_add(mpa2);
30042 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
30045 template <typename Domain2, typename Range2, typename Range>
30046 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const
30048 auto res = isl::multi_aff::union_add(mupa2);
30049 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
30052 template <typename Domain2, typename Range2, typename Range>
30053 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
30055 auto res = isl::multi_aff::union_add(pma2);
30056 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
30059 template <typename Domain2, typename Range2, typename Range>
30060 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
30062 auto res = isl::multi_aff::union_add(upma2);
30063 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
30066 template <typename Domain, typename Range, typename Range2>
30067 typed::multi_aff<Domain, pair<Range, Range2>>::multi_aff(const typed::aff<Domain, pair<Range, Range2>> &aff)
30068 : isl::multi_aff(aff)
30072 template <typename Domain, typename Range, typename Range2>
30073 typed::multi_aff<Domain, pair<Range, Range2>>::multi_aff(const typed::space<Domain, pair<Range, Range2>> &space, const typed::aff_list<Domain, Anonymous> &list)
30074 : isl::multi_aff(space, list)
30078 template <typename Domain, typename Range, typename Range2>
30079 typed::multi_aff<Domain, pair<Range, Range2>>::multi_aff(const isl::ctx &ctx, const std::string &str)
30080 : isl::multi_aff(ctx, str)
30084 template <typename Domain, typename Range, typename Range2>
30085 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const
30087 auto res = isl::multi_aff::add(multi2);
30088 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30091 template <typename Domain, typename Range, typename Range2>
30092 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
30094 auto res = isl::multi_aff::add(multi2);
30095 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
30098 template <typename Domain, typename Range, typename Range2>
30099 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
30101 auto res = isl::multi_aff::add(multi2);
30102 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
30105 template <typename Domain, typename Range, typename Range2>
30106 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
30108 auto res = isl::multi_aff::add(pma2);
30109 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30112 template <typename Domain, typename Range, typename Range2>
30113 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
30115 auto res = isl::multi_aff::add(upma2);
30116 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30119 template <typename Domain, typename Range, typename Range2>
30120 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add(const typed::aff<Domain, pair<Range, Range2>> &multi2) const
30122 auto res = isl::multi_aff::add(multi2);
30123 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30126 template <typename Domain, typename Range, typename Range2>
30127 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
30129 auto res = isl::multi_aff::add_constant(mv);
30130 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30133 template <typename Domain, typename Range, typename Range2>
30134 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
30136 auto res = isl::multi_aff::add_constant(v);
30137 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30140 template <typename Domain, typename Range, typename Range2>
30141 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::add_constant(long v) const
30143 auto res = isl::multi_aff::add_constant(v);
30144 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30147 template <typename Domain, typename Range, typename Range2>
30148 template <typename Arg3>
30149 typed::union_pw_multi_aff<Domain, Arg3> typed::multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
30151 auto res = isl::multi_aff::apply(upma2);
30152 return typed::union_pw_multi_aff<Domain, Arg3>(res);
30155 template <typename Domain, typename Range, typename Range2>
30156 typed::map<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_map() const
30158 auto res = isl::multi_aff::as_map();
30159 return typed::map<Domain, pair<Range, Range2>>(res);
30162 template <typename Domain, typename Range, typename Range2>
30163 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_multi_aff() const
30165 auto res = isl::multi_aff::as_multi_aff();
30166 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30169 template <typename Domain, typename Range, typename Range2>
30170 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
30172 auto res = isl::multi_aff::as_multi_union_pw_aff();
30173 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
30176 template <typename Domain, typename Range, typename Range2>
30177 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
30179 auto res = isl::multi_aff::as_pw_multi_aff();
30180 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30183 template <typename Domain, typename Range, typename Range2>
30184 typed::union_map<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::as_union_map() const
30186 auto res = isl::multi_aff::as_union_map();
30187 return typed::union_map<Domain, pair<Range, Range2>>(res);
30190 template <typename Domain, typename Range, typename Range2>
30191 typed::aff<Domain, Anonymous> typed::multi_aff<Domain, pair<Range, Range2>>::at(int pos) const
30193 auto res = isl::multi_aff::at(pos);
30194 return typed::aff<Domain, Anonymous>(res);
30197 template <typename Domain, typename Range, typename Range2>
30198 typed::basic_set<Domain> typed::multi_aff<Domain, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
30200 auto res = isl::multi_aff::bind(tuple);
30201 return typed::basic_set<Domain>(res);
30204 template <typename Domain, typename Range, typename Range2>
30205 typed::multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
30207 auto res = isl::multi_aff::bind_domain(tuple);
30208 return typed::multi_aff<pair<Range, Range2>>(res);
30211 template <typename Domain, typename Range, typename Range2>
30212 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::coalesce() const
30214 auto res = isl::multi_aff::coalesce();
30215 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30218 template <typename Domain, typename Range, typename Range2>
30219 typed::multi_val<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::constant_multi_val() const
30221 auto res = isl::multi_aff::constant_multi_val();
30222 return typed::multi_val<pair<Range, Range2>>(res);
30225 template <typename Domain, typename Range, typename Range2>
30226 typed::set<Domain> typed::multi_aff<Domain, pair<Range, Range2>>::domain() const
30228 auto res = isl::multi_aff::domain();
30229 return typed::set<Domain>(res);
30232 template <typename Domain, typename Range, typename Range2>
30233 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::drop_unused_params() const
30235 auto res = isl::multi_aff::drop_unused_params();
30236 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30239 template <typename Domain, typename Range, typename Range2>
30240 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const
30242 auto res = isl::multi_aff::extract_pw_multi_aff(space);
30243 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30246 template <typename Domain, typename Range, typename Range2>
30247 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::floor() const
30249 auto res = isl::multi_aff::floor();
30250 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30253 template <typename Domain, typename Range, typename Range2>
30254 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::set<Domain> &context) const
30256 auto res = isl::multi_aff::gist(context);
30257 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30260 template <typename Domain, typename Range, typename Range2>
30261 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::union_set<Domain> &context) const
30263 auto res = isl::multi_aff::gist(context);
30264 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30267 template <typename Domain, typename Range, typename Range2>
30268 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::basic_set<Domain> &context) const
30270 auto res = isl::multi_aff::gist(context);
30271 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30274 template <typename Domain, typename Range, typename Range2>
30275 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist(const typed::point<Domain> &context) const
30277 auto res = isl::multi_aff::gist(context);
30278 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30281 template <typename Domain, typename Range, typename Range2>
30282 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist_params(const typed::set<> &context) const
30284 auto res = isl::multi_aff::gist_params(context);
30285 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30288 template <typename Domain, typename Range, typename Range2>
30289 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist_params(const typed::basic_set<> &context) const
30291 auto res = isl::multi_aff::gist_params(context);
30292 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30295 template <typename Domain, typename Range, typename Range2>
30296 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::gist_params(const typed::point<> &context) const
30298 auto res = isl::multi_aff::gist_params(context);
30299 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30302 template <typename Domain, typename Range, typename Range2>
30303 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::identity() const
30305 auto res = isl::multi_aff::identity();
30306 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30309 template <typename Domain, typename Range, typename Range2>
30310 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
30312 auto res = isl::multi_aff::intersect_domain(set);
30313 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30316 template <typename Domain, typename Range, typename Range2>
30317 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
30319 auto res = isl::multi_aff::intersect_domain(space);
30320 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30323 template <typename Domain, typename Range, typename Range2>
30324 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
30326 auto res = isl::multi_aff::intersect_domain(uset);
30327 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30330 template <typename Domain, typename Range, typename Range2>
30331 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
30333 auto res = isl::multi_aff::intersect_params(set);
30334 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30337 template <typename Domain, typename Range, typename Range2>
30338 typed::aff_list<Domain, Anonymous> typed::multi_aff<Domain, pair<Range, Range2>>::list() const
30340 auto res = isl::multi_aff::list();
30341 return typed::aff_list<Domain, Anonymous>(res);
30344 template <typename Domain, typename Range, typename Range2>
30345 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
30347 auto res = isl::multi_aff::max(multi2);
30348 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
30351 template <typename Domain, typename Range, typename Range2>
30352 typed::multi_val<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::max_multi_val() const
30354 auto res = isl::multi_aff::max_multi_val();
30355 return typed::multi_val<pair<Range, Range2>>(res);
30358 template <typename Domain, typename Range, typename Range2>
30359 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
30361 auto res = isl::multi_aff::min(multi2);
30362 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
30365 template <typename Domain, typename Range, typename Range2>
30366 typed::multi_val<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::min_multi_val() const
30368 auto res = isl::multi_aff::min_multi_val();
30369 return typed::multi_val<pair<Range, Range2>>(res);
30372 template <typename Domain, typename Range, typename Range2>
30373 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::neg() const
30375 auto res = isl::multi_aff::neg();
30376 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30379 template <typename Domain, typename Range, typename Range2>
30380 template <typename Domain2, typename Arg3>
30381 typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg3> &multi2) const
30383 auto res = isl::multi_aff::product(multi2);
30384 return typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
30387 template <typename Domain, typename Range, typename Range2>
30388 template <typename Domain2, typename Arg3>
30389 typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const
30391 auto res = isl::multi_aff::product(multi2);
30392 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
30395 template <typename Domain, typename Range, typename Range2>
30396 template <typename Domain2, typename Arg3>
30397 typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const
30399 auto res = isl::multi_aff::product(pma2);
30400 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
30403 template <typename Domain, typename Range, typename Range2>
30404 template <typename Domain2>
30405 typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Anonymous>> typed::multi_aff<Domain, pair<Range, Range2>>::product(const typed::aff<Domain2, Anonymous> &multi2) const
30407 auto res = isl::multi_aff::product(multi2);
30408 return typed::multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Anonymous>>(res);
30411 template <typename Domain, typename Range, typename Range2>
30412 template <typename Domain2>
30413 typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, Domain> &ma2) const
30415 auto res = isl::multi_aff::pullback(ma2);
30416 return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
30419 template <typename Domain, typename Range, typename Range2>
30420 typed::multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain> &ma2) const
30422 auto res = isl::multi_aff::pullback(ma2);
30423 return typed::multi_aff<pair<Range, Range2>>(res);
30426 template <typename Domain, typename Range, typename Range2>
30427 template <typename Domain2>
30428 typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
30430 auto res = isl::multi_aff::pullback(mpa2);
30431 return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
30434 template <typename Domain, typename Range, typename Range2>
30435 typed::multi_pw_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
30437 auto res = isl::multi_aff::pullback(mpa2);
30438 return typed::multi_pw_aff<pair<Range, Range2>>(res);
30441 template <typename Domain, typename Range, typename Range2>
30442 template <typename Domain2>
30443 typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
30445 auto res = isl::multi_aff::pullback(pma2);
30446 return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
30449 template <typename Domain, typename Range, typename Range2>
30450 typed::pw_multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
30452 auto res = isl::multi_aff::pullback(pma2);
30453 return typed::pw_multi_aff<pair<Range, Range2>>(res);
30456 template <typename Domain, typename Range, typename Range2>
30457 template <typename Domain2>
30458 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
30460 auto res = isl::multi_aff::pullback(upma2);
30461 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
30464 template <typename Domain, typename Range, typename Range2>
30465 typed::union_pw_multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
30467 auto res = isl::multi_aff::pullback(upma2);
30468 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
30471 template <typename Domain, typename Range, typename Range2>
30472 template <typename Domain2>
30473 typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::aff<Domain2, Domain> &ma2) const
30475 auto res = isl::multi_aff::pullback(ma2);
30476 return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
30479 template <typename Domain, typename Range, typename Range2>
30480 typed::multi_aff<pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::aff<Domain> &ma2) const
30482 auto res = isl::multi_aff::pullback(ma2);
30483 return typed::multi_aff<pair<Range, Range2>>(res);
30486 template <typename Domain, typename Range, typename Range2>
30487 typed::pw_multi_aff_list<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff_list() const
30489 auto res = isl::multi_aff::pw_multi_aff_list();
30490 return typed::pw_multi_aff_list<Domain, pair<Range, Range2>>(res);
30493 template <typename Domain, typename Range, typename Range2>
30494 typed::pw_multi_aff<Domain, Range> typed::multi_aff<Domain, pair<Range, Range2>>::range_factor_domain() const
30496 auto res = isl::multi_aff::range_factor_domain();
30497 return typed::pw_multi_aff<Domain, Range>(res);
30500 template <typename Domain, typename Range, typename Range2>
30501 typed::pw_multi_aff<Domain, Range2> typed::multi_aff<Domain, pair<Range, Range2>>::range_factor_range() const
30503 auto res = isl::multi_aff::range_factor_range();
30504 return typed::pw_multi_aff<Domain, Range2>(res);
30507 template <typename Domain, typename Range, typename Range2>
30508 template <typename Arg3>
30509 typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_aff<Domain, Arg3> &multi2) const
30511 auto res = isl::multi_aff::range_product(multi2);
30512 return typed::multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
30515 template <typename Domain, typename Range, typename Range2>
30516 template <typename Arg3>
30517 typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const
30519 auto res = isl::multi_aff::range_product(multi2);
30520 return typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
30523 template <typename Domain, typename Range, typename Range2>
30524 template <typename Arg3>
30525 typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const
30527 auto res = isl::multi_aff::range_product(multi2);
30528 return typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
30531 template <typename Domain, typename Range, typename Range2>
30532 template <typename Arg3>
30533 typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const
30535 auto res = isl::multi_aff::range_product(pma2);
30536 return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
30539 template <typename Domain, typename Range, typename Range2>
30540 template <typename Arg3>
30541 typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const
30543 auto res = isl::multi_aff::range_product(upma2);
30544 return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
30547 template <typename Domain, typename Range, typename Range2>
30548 typed::multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>> typed::multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::aff<Domain, Anonymous> &multi2) const
30550 auto res = isl::multi_aff::range_product(multi2);
30551 return typed::multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>>(res);
30554 template <typename Domain, typename Range, typename Range2>
30555 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
30557 auto res = isl::multi_aff::scale(mv);
30558 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30561 template <typename Domain, typename Range, typename Range2>
30562 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
30564 auto res = isl::multi_aff::scale(v);
30565 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30568 template <typename Domain, typename Range, typename Range2>
30569 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale(long v) const
30571 auto res = isl::multi_aff::scale(v);
30572 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30575 template <typename Domain, typename Range, typename Range2>
30576 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
30578 auto res = isl::multi_aff::scale_down(mv);
30579 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30582 template <typename Domain, typename Range, typename Range2>
30583 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
30585 auto res = isl::multi_aff::scale_down(v);
30586 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30589 template <typename Domain, typename Range, typename Range2>
30590 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::scale_down(long v) const
30592 auto res = isl::multi_aff::scale_down(v);
30593 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30596 template <typename Domain, typename Range, typename Range2>
30597 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::aff<Domain, Anonymous> &el) const
30599 auto res = isl::multi_aff::set_at(pos, el);
30600 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30603 template <typename Domain, typename Range, typename Range2>
30604 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
30606 auto res = isl::multi_aff::set_at(pos, el);
30607 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
30610 template <typename Domain, typename Range, typename Range2>
30611 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
30613 auto res = isl::multi_aff::set_at(pos, el);
30614 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
30617 template <typename Domain, typename Range, typename Range2>
30618 typed::space<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::space() const
30620 auto res = isl::multi_aff::space();
30621 return typed::space<Domain, pair<Range, Range2>>(res);
30624 template <typename Domain, typename Range, typename Range2>
30625 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_aff<Domain, pair<Range, Range2>> &multi2) const
30627 auto res = isl::multi_aff::sub(multi2);
30628 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30631 template <typename Domain, typename Range, typename Range2>
30632 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
30634 auto res = isl::multi_aff::sub(multi2);
30635 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
30638 template <typename Domain, typename Range, typename Range2>
30639 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
30641 auto res = isl::multi_aff::sub(multi2);
30642 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
30645 template <typename Domain, typename Range, typename Range2>
30646 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
30648 auto res = isl::multi_aff::sub(pma2);
30649 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30652 template <typename Domain, typename Range, typename Range2>
30653 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
30655 auto res = isl::multi_aff::sub(upma2);
30656 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30659 template <typename Domain, typename Range, typename Range2>
30660 typed::multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::sub(const typed::aff<Domain, pair<Range, Range2>> &multi2) const
30662 auto res = isl::multi_aff::sub(multi2);
30663 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
30666 template <typename Domain, typename Range, typename Range2>
30667 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::set<Domain> &set) const
30669 auto res = isl::multi_aff::subtract_domain(set);
30670 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30673 template <typename Domain, typename Range, typename Range2>
30674 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::space<Domain> &space) const
30676 auto res = isl::multi_aff::subtract_domain(space);
30677 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30680 template <typename Domain, typename Range, typename Range2>
30681 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &uset) const
30683 auto res = isl::multi_aff::subtract_domain(uset);
30684 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30687 template <typename Domain, typename Range, typename Range2>
30688 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_multi_pw_aff() const
30690 auto res = isl::multi_aff::to_multi_pw_aff();
30691 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
30694 template <typename Domain, typename Range, typename Range2>
30695 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_multi_union_pw_aff() const
30697 auto res = isl::multi_aff::to_multi_union_pw_aff();
30698 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
30701 template <typename Domain, typename Range, typename Range2>
30702 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_pw_multi_aff() const
30704 auto res = isl::multi_aff::to_pw_multi_aff();
30705 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30708 template <typename Domain, typename Range, typename Range2>
30709 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::to_union_pw_multi_aff() const
30711 auto res = isl::multi_aff::to_union_pw_multi_aff();
30712 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30715 template <typename Domain, typename Range, typename Range2>
30716 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const
30718 auto res = isl::multi_aff::union_add(mpa2);
30719 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
30722 template <typename Domain, typename Range, typename Range2>
30723 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const
30725 auto res = isl::multi_aff::union_add(mupa2);
30726 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
30729 template <typename Domain, typename Range, typename Range2>
30730 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
30732 auto res = isl::multi_aff::union_add(pma2);
30733 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
30736 template <typename Domain, typename Range, typename Range2>
30737 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
30739 auto res = isl::multi_aff::union_add(upma2);
30740 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
30743 template <typename T1, typename T2, typename Range, typename Range2>
30744 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &aff)
30745 : isl::multi_aff(aff)
30749 template <typename T1, typename T2, typename Range, typename Range2>
30750 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space, const typed::aff_list<pair<T1, T2>, Anonymous> &list)
30751 : isl::multi_aff(space, list)
30755 template <typename T1, typename T2, typename Range, typename Range2>
30756 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const isl::ctx &ctx, const std::string &str)
30757 : isl::multi_aff(ctx, str)
30761 template <typename T1, typename T2, typename Range, typename Range2>
30762 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
30764 auto res = isl::multi_aff::add(multi2);
30765 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30768 template <typename T1, typename T2, typename Range, typename Range2>
30769 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
30771 auto res = isl::multi_aff::add(multi2);
30772 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30775 template <typename T1, typename T2, typename Range, typename Range2>
30776 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
30778 auto res = isl::multi_aff::add(multi2);
30779 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30782 template <typename T1, typename T2, typename Range, typename Range2>
30783 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
30785 auto res = isl::multi_aff::add(pma2);
30786 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30789 template <typename T1, typename T2, typename Range, typename Range2>
30790 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
30792 auto res = isl::multi_aff::add(upma2);
30793 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30796 template <typename T1, typename T2, typename Range, typename Range2>
30797 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
30799 auto res = isl::multi_aff::add(multi2);
30800 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30803 template <typename T1, typename T2, typename Range, typename Range2>
30804 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
30806 auto res = isl::multi_aff::add_constant(mv);
30807 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30810 template <typename T1, typename T2, typename Range, typename Range2>
30811 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
30813 auto res = isl::multi_aff::add_constant(v);
30814 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30817 template <typename T1, typename T2, typename Range, typename Range2>
30818 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(long v) const
30820 auto res = isl::multi_aff::add_constant(v);
30821 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30824 template <typename T1, typename T2, typename Range, typename Range2>
30825 template <typename Arg2>
30826 typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
30828 auto res = isl::multi_aff::apply(upma2);
30829 return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
30832 template <typename T1, typename T2, typename Range, typename Range2>
30833 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_map() const
30835 auto res = isl::multi_aff::as_map();
30836 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
30839 template <typename T1, typename T2, typename Range, typename Range2>
30840 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_aff() const
30842 auto res = isl::multi_aff::as_multi_aff();
30843 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30846 template <typename T1, typename T2, typename Range, typename Range2>
30847 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
30849 auto res = isl::multi_aff::as_multi_union_pw_aff();
30850 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30853 template <typename T1, typename T2, typename Range, typename Range2>
30854 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
30856 auto res = isl::multi_aff::as_pw_multi_aff();
30857 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30860 template <typename T1, typename T2, typename Range, typename Range2>
30861 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_union_map() const
30863 auto res = isl::multi_aff::as_union_map();
30864 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
30867 template <typename T1, typename T2, typename Range, typename Range2>
30868 typed::aff<pair<T1, T2>, Anonymous> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::at(int pos) const
30870 auto res = isl::multi_aff::at(pos);
30871 return typed::aff<pair<T1, T2>, Anonymous>(res);
30874 template <typename T1, typename T2, typename Range, typename Range2>
30875 typed::basic_set<pair<T1, T2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
30877 auto res = isl::multi_aff::bind(tuple);
30878 return typed::basic_set<pair<T1, T2>>(res);
30881 template <typename T1, typename T2, typename Range, typename Range2>
30882 typed::multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
30884 auto res = isl::multi_aff::bind_domain(tuple);
30885 return typed::multi_aff<pair<Range, Range2>>(res);
30888 template <typename T1, typename T2, typename Range, typename Range2>
30889 typed::multi_aff<T2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const
30891 auto res = isl::multi_aff::bind_domain_wrapped_domain(tuple);
30892 return typed::multi_aff<T2, pair<Range, Range2>>(res);
30895 template <typename T1, typename T2, typename Range, typename Range2>
30896 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
30898 auto res = isl::multi_aff::coalesce();
30899 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30902 template <typename T1, typename T2, typename Range, typename Range2>
30903 typed::multi_val<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::constant_multi_val() const
30905 auto res = isl::multi_aff::constant_multi_val();
30906 return typed::multi_val<pair<Range, Range2>>(res);
30909 template <typename T1, typename T2, typename Range, typename Range2>
30910 typed::set<pair<T1, T2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain() const
30912 auto res = isl::multi_aff::domain();
30913 return typed::set<pair<T1, T2>>(res);
30916 template <typename T1, typename T2, typename Range, typename Range2>
30917 typed::multi_aff<pair<T2, T1>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain_reverse() const
30919 auto res = isl::multi_aff::domain_reverse();
30920 return typed::multi_aff<pair<T2, T1>, pair<Range, Range2>>(res);
30923 template <typename T1, typename T2, typename Range, typename Range2>
30924 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::drop_unused_params() const
30926 auto res = isl::multi_aff::drop_unused_params();
30927 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30930 template <typename T1, typename T2, typename Range, typename Range2>
30931 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
30933 auto res = isl::multi_aff::extract_pw_multi_aff(space);
30934 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30937 template <typename T1, typename T2, typename Range, typename Range2>
30938 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::floor() const
30940 auto res = isl::multi_aff::floor();
30941 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30944 template <typename T1, typename T2, typename Range, typename Range2>
30945 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::set<pair<T1, T2>> &context) const
30947 auto res = isl::multi_aff::gist(context);
30948 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30951 template <typename T1, typename T2, typename Range, typename Range2>
30952 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_set<pair<T1, T2>> &context) const
30954 auto res = isl::multi_aff::gist(context);
30955 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30958 template <typename T1, typename T2, typename Range, typename Range2>
30959 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_set<pair<T1, T2>> &context) const
30961 auto res = isl::multi_aff::gist(context);
30962 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30965 template <typename T1, typename T2, typename Range, typename Range2>
30966 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::point<pair<T1, T2>> &context) const
30968 auto res = isl::multi_aff::gist(context);
30969 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30972 template <typename T1, typename T2, typename Range, typename Range2>
30973 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::set<> &context) const
30975 auto res = isl::multi_aff::gist_params(context);
30976 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30979 template <typename T1, typename T2, typename Range, typename Range2>
30980 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::basic_set<> &context) const
30982 auto res = isl::multi_aff::gist_params(context);
30983 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30986 template <typename T1, typename T2, typename Range, typename Range2>
30987 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::point<> &context) const
30989 auto res = isl::multi_aff::gist_params(context);
30990 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
30993 template <typename T1, typename T2, typename Range, typename Range2>
30994 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::identity() const
30996 auto res = isl::multi_aff::identity();
30997 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31000 template <typename T1, typename T2, typename Range, typename Range2>
31001 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
31003 auto res = isl::multi_aff::intersect_domain(set);
31004 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31007 template <typename T1, typename T2, typename Range, typename Range2>
31008 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
31010 auto res = isl::multi_aff::intersect_domain(space);
31011 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31014 template <typename T1, typename T2, typename Range, typename Range2>
31015 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
31017 auto res = isl::multi_aff::intersect_domain(uset);
31018 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31021 template <typename T1, typename T2, typename Range, typename Range2>
31022 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &uset) const
31024 auto res = isl::multi_aff::intersect_domain_wrapped_domain(uset);
31025 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31028 template <typename T1, typename T2, typename Range, typename Range2>
31029 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
31031 auto res = isl::multi_aff::intersect_params(set);
31032 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31035 template <typename T1, typename T2, typename Range, typename Range2>
31036 typed::aff_list<pair<T1, T2>, Anonymous> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::list() const
31038 auto res = isl::multi_aff::list();
31039 return typed::aff_list<pair<T1, T2>, Anonymous>(res);
31042 template <typename T1, typename T2, typename Range, typename Range2>
31043 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
31045 auto res = isl::multi_aff::max(multi2);
31046 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31049 template <typename T1, typename T2, typename Range, typename Range2>
31050 typed::multi_val<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::max_multi_val() const
31052 auto res = isl::multi_aff::max_multi_val();
31053 return typed::multi_val<pair<Range, Range2>>(res);
31056 template <typename T1, typename T2, typename Range, typename Range2>
31057 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
31059 auto res = isl::multi_aff::min(multi2);
31060 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31063 template <typename T1, typename T2, typename Range, typename Range2>
31064 typed::multi_val<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::min_multi_val() const
31066 auto res = isl::multi_aff::min_multi_val();
31067 return typed::multi_val<pair<Range, Range2>>(res);
31070 template <typename T1, typename T2, typename Range, typename Range2>
31071 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::neg() const
31073 auto res = isl::multi_aff::neg();
31074 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31077 template <typename T1, typename T2, typename Range, typename Range2>
31078 template <typename Domain3>
31079 typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const
31081 auto res = isl::multi_aff::preimage_domain_wrapped_domain(pma2);
31082 return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
31085 template <typename T1, typename T2, typename Range, typename Range2>
31086 template <typename Domain3>
31087 typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const
31089 auto res = isl::multi_aff::preimage_domain_wrapped_domain(upma2);
31090 return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
31093 template <typename T1, typename T2, typename Range, typename Range2>
31094 template <typename Domain2, typename Arg2>
31095 typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg2> &multi2) const
31097 auto res = isl::multi_aff::product(multi2);
31098 return typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
31101 template <typename T1, typename T2, typename Range, typename Range2>
31102 template <typename Domain2, typename Arg2>
31103 typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const
31105 auto res = isl::multi_aff::product(multi2);
31106 return typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
31109 template <typename T1, typename T2, typename Range, typename Range2>
31110 template <typename Domain2, typename Arg2>
31111 typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const
31113 auto res = isl::multi_aff::product(pma2);
31114 return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
31117 template <typename T1, typename T2, typename Range, typename Range2>
31118 template <typename Domain2>
31119 typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Anonymous>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::aff<Domain2, Anonymous> &multi2) const
31121 auto res = isl::multi_aff::product(multi2);
31122 return typed::multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Anonymous>>(res);
31125 template <typename T1, typename T2, typename Range, typename Range2>
31126 template <typename Domain2>
31127 typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma2) const
31129 auto res = isl::multi_aff::pullback(ma2);
31130 return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
31133 template <typename T1, typename T2, typename Range, typename Range2>
31134 typed::multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<pair<T1, T2>> &ma2) const
31136 auto res = isl::multi_aff::pullback(ma2);
31137 return typed::multi_aff<pair<Range, Range2>>(res);
31140 template <typename T1, typename T2, typename Range, typename Range2>
31141 template <typename Domain2>
31142 typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const
31144 auto res = isl::multi_aff::pullback(mpa2);
31145 return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
31148 template <typename T1, typename T2, typename Range, typename Range2>
31149 typed::multi_pw_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const
31151 auto res = isl::multi_aff::pullback(mpa2);
31152 return typed::multi_pw_aff<pair<Range, Range2>>(res);
31155 template <typename T1, typename T2, typename Range, typename Range2>
31156 template <typename Domain2>
31157 typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const
31159 auto res = isl::multi_aff::pullback(pma2);
31160 return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
31163 template <typename T1, typename T2, typename Range, typename Range2>
31164 typed::pw_multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const
31166 auto res = isl::multi_aff::pullback(pma2);
31167 return typed::pw_multi_aff<pair<Range, Range2>>(res);
31170 template <typename T1, typename T2, typename Range, typename Range2>
31171 template <typename Domain2>
31172 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
31174 auto res = isl::multi_aff::pullback(upma2);
31175 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
31178 template <typename T1, typename T2, typename Range, typename Range2>
31179 typed::union_pw_multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const
31181 auto res = isl::multi_aff::pullback(upma2);
31182 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
31185 template <typename T1, typename T2, typename Range, typename Range2>
31186 template <typename Domain2>
31187 typed::multi_aff<Domain2, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::aff<Domain2, pair<T1, T2>> &ma2) const
31189 auto res = isl::multi_aff::pullback(ma2);
31190 return typed::multi_aff<Domain2, pair<Range, Range2>>(res);
31193 template <typename T1, typename T2, typename Range, typename Range2>
31194 typed::multi_aff<pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::aff<pair<T1, T2>> &ma2) const
31196 auto res = isl::multi_aff::pullback(ma2);
31197 return typed::multi_aff<pair<Range, Range2>>(res);
31200 template <typename T1, typename T2, typename Range, typename Range2>
31201 typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff_list() const
31203 auto res = isl::multi_aff::pw_multi_aff_list();
31204 return typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>>(res);
31207 template <typename T1, typename T2, typename Range, typename Range2>
31208 typed::pw_multi_aff<pair<T1, T2>, Range> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
31210 auto res = isl::multi_aff::range_factor_domain();
31211 return typed::pw_multi_aff<pair<T1, T2>, Range>(res);
31214 template <typename T1, typename T2, typename Range, typename Range2>
31215 typed::pw_multi_aff<pair<T1, T2>, Range2> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
31217 auto res = isl::multi_aff::range_factor_range();
31218 return typed::pw_multi_aff<pair<T1, T2>, Range2>(res);
31221 template <typename T1, typename T2, typename Range, typename Range2>
31222 template <typename Arg2>
31223 typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &multi2) const
31225 auto res = isl::multi_aff::range_product(multi2);
31226 return typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
31229 template <typename T1, typename T2, typename Range, typename Range2>
31230 template <typename Arg2>
31231 typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const
31233 auto res = isl::multi_aff::range_product(multi2);
31234 return typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
31237 template <typename T1, typename T2, typename Range, typename Range2>
31238 template <typename Arg2>
31239 typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const
31241 auto res = isl::multi_aff::range_product(multi2);
31242 return typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
31245 template <typename T1, typename T2, typename Range, typename Range2>
31246 template <typename Arg2>
31247 typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const
31249 auto res = isl::multi_aff::range_product(pma2);
31250 return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
31253 template <typename T1, typename T2, typename Range, typename Range2>
31254 template <typename Arg2>
31255 typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
31257 auto res = isl::multi_aff::range_product(upma2);
31258 return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
31261 template <typename T1, typename T2, typename Range, typename Range2>
31262 typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::aff<pair<T1, T2>, Anonymous> &multi2) const
31264 auto res = isl::multi_aff::range_product(multi2);
31265 return typed::multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>>(res);
31268 template <typename T1, typename T2, typename Range, typename Range2>
31269 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
31271 auto res = isl::multi_aff::scale(mv);
31272 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31275 template <typename T1, typename T2, typename Range, typename Range2>
31276 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
31278 auto res = isl::multi_aff::scale(v);
31279 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31282 template <typename T1, typename T2, typename Range, typename Range2>
31283 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(long v) const
31285 auto res = isl::multi_aff::scale(v);
31286 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31289 template <typename T1, typename T2, typename Range, typename Range2>
31290 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
31292 auto res = isl::multi_aff::scale_down(mv);
31293 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31296 template <typename T1, typename T2, typename Range, typename Range2>
31297 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
31299 auto res = isl::multi_aff::scale_down(v);
31300 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31303 template <typename T1, typename T2, typename Range, typename Range2>
31304 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(long v) const
31306 auto res = isl::multi_aff::scale_down(v);
31307 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31310 template <typename T1, typename T2, typename Range, typename Range2>
31311 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::aff<pair<T1, T2>, Anonymous> &el) const
31313 auto res = isl::multi_aff::set_at(pos, el);
31314 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31317 template <typename T1, typename T2, typename Range, typename Range2>
31318 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const
31320 auto res = isl::multi_aff::set_at(pos, el);
31321 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31324 template <typename T1, typename T2, typename Range, typename Range2>
31325 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const
31327 auto res = isl::multi_aff::set_at(pos, el);
31328 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31331 template <typename T1, typename T2, typename Range, typename Range2>
31332 typed::space<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::space() const
31334 auto res = isl::multi_aff::space();
31335 return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
31338 template <typename T1, typename T2, typename Range, typename Range2>
31339 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
31341 auto res = isl::multi_aff::sub(multi2);
31342 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31345 template <typename T1, typename T2, typename Range, typename Range2>
31346 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
31348 auto res = isl::multi_aff::sub(multi2);
31349 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31352 template <typename T1, typename T2, typename Range, typename Range2>
31353 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
31355 auto res = isl::multi_aff::sub(multi2);
31356 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31359 template <typename T1, typename T2, typename Range, typename Range2>
31360 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
31362 auto res = isl::multi_aff::sub(pma2);
31363 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31366 template <typename T1, typename T2, typename Range, typename Range2>
31367 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
31369 auto res = isl::multi_aff::sub(upma2);
31370 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31373 template <typename T1, typename T2, typename Range, typename Range2>
31374 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
31376 auto res = isl::multi_aff::sub(multi2);
31377 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31380 template <typename T1, typename T2, typename Range, typename Range2>
31381 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::set<pair<T1, T2>> &set) const
31383 auto res = isl::multi_aff::subtract_domain(set);
31384 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31387 template <typename T1, typename T2, typename Range, typename Range2>
31388 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::space<pair<T1, T2>> &space) const
31390 auto res = isl::multi_aff::subtract_domain(space);
31391 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31394 template <typename T1, typename T2, typename Range, typename Range2>
31395 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const
31397 auto res = isl::multi_aff::subtract_domain(uset);
31398 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31401 template <typename T1, typename T2, typename Range, typename Range2>
31402 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_multi_pw_aff() const
31404 auto res = isl::multi_aff::to_multi_pw_aff();
31405 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31408 template <typename T1, typename T2, typename Range, typename Range2>
31409 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_multi_union_pw_aff() const
31411 auto res = isl::multi_aff::to_multi_union_pw_aff();
31412 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31415 template <typename T1, typename T2, typename Range, typename Range2>
31416 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_pw_multi_aff() const
31418 auto res = isl::multi_aff::to_pw_multi_aff();
31419 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31422 template <typename T1, typename T2, typename Range, typename Range2>
31423 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_union_pw_multi_aff() const
31425 auto res = isl::multi_aff::to_union_pw_multi_aff();
31426 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31429 template <typename T1, typename T2, typename Range, typename Range2>
31430 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const
31432 auto res = isl::multi_aff::union_add(mpa2);
31433 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31436 template <typename T1, typename T2, typename Range, typename Range2>
31437 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const
31439 auto res = isl::multi_aff::union_add(mupa2);
31440 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31443 template <typename T1, typename T2, typename Range, typename Range2>
31444 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
31446 auto res = isl::multi_aff::union_add(pma2);
31447 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31450 template <typename T1, typename T2, typename Range, typename Range2>
31451 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
31453 auto res = isl::multi_aff::union_add(upma2);
31454 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
31457 template <typename Domain>
31458 typed::multi_id<Domain>::multi_id(const typed::space<Domain> &space, const typed::id_list<Anonymous> &list)
31459 : isl::multi_id(space, list)
31463 template <typename Domain>
31464 typed::multi_id<Domain>::multi_id(const isl::ctx &ctx, const std::string &str)
31465 : isl::multi_id(ctx, str)
31469 template <typename Domain>
31470 typed::id<Anonymous> typed::multi_id<Domain>::at(int pos) const
31472 auto res = isl::multi_id::at(pos);
31473 return typed::id<Anonymous>(res);
31476 template <typename Domain>
31477 typed::id_list<Anonymous> typed::multi_id<Domain>::list() const
31479 auto res = isl::multi_id::list();
31480 return typed::id_list<Anonymous>(res);
31483 template <typename Domain>
31484 typed::multi_id<Domain> typed::multi_id<Domain>::set_at(int pos, const typed::id<Anonymous> &el) const
31486 auto res = isl::multi_id::set_at(pos, el);
31487 return typed::multi_id<Domain>(res);
31490 template <typename Domain>
31491 typed::multi_id<Domain> typed::multi_id<Domain>::set_at(int pos, const std::string &el) const
31493 auto res = isl::multi_id::set_at(pos, el);
31494 return typed::multi_id<Domain>(res);
31497 template <typename Domain>
31498 typed::space<Domain> typed::multi_id<Domain>::space() const
31500 auto res = isl::multi_id::space();
31501 return typed::space<Domain>(res);
31504 template <typename Domain>
31505 typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::aff<Domain> &aff)
31506 : isl::multi_pw_aff(aff)
31510 template <typename Domain>
31511 typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::multi_aff<Domain> &ma)
31512 : isl::multi_pw_aff(ma)
31516 template <typename Domain>
31517 typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::pw_aff<Domain> &pa)
31518 : isl::multi_pw_aff(pa)
31522 template <typename Domain>
31523 typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::space<Domain> &space, const typed::pw_aff_list<Anonymous> &list)
31524 : isl::multi_pw_aff(space, list)
31528 template <typename Domain>
31529 typed::multi_pw_aff<Domain>::multi_pw_aff(const typed::pw_multi_aff<Domain> &pma)
31530 : isl::multi_pw_aff(pma)
31534 template <typename Domain>
31535 typed::multi_pw_aff<Domain>::multi_pw_aff(const isl::ctx &ctx, const std::string &str)
31536 : isl::multi_pw_aff(ctx, str)
31540 template <typename Domain>
31541 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
31543 auto res = isl::multi_pw_aff::add(multi2);
31544 return typed::multi_pw_aff<Domain>(res);
31547 template <typename Domain>
31548 typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
31550 auto res = isl::multi_pw_aff::add(multi2);
31551 return typed::multi_union_pw_aff<Domain>(res);
31554 template <typename Domain>
31555 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::aff<Domain> &multi2) const
31557 auto res = isl::multi_pw_aff::add(multi2);
31558 return typed::multi_pw_aff<Domain>(res);
31561 template <typename Domain>
31562 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::multi_aff<Domain> &multi2) const
31564 auto res = isl::multi_pw_aff::add(multi2);
31565 return typed::multi_pw_aff<Domain>(res);
31568 template <typename Domain>
31569 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::pw_aff<Domain> &multi2) const
31571 auto res = isl::multi_pw_aff::add(multi2);
31572 return typed::multi_pw_aff<Domain>(res);
31575 template <typename Domain>
31576 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add(const typed::pw_multi_aff<Domain> &multi2) const
31578 auto res = isl::multi_pw_aff::add(multi2);
31579 return typed::multi_pw_aff<Domain>(res);
31582 template <typename Domain>
31583 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add_constant(const typed::multi_val<Domain> &mv) const
31585 auto res = isl::multi_pw_aff::add_constant(mv);
31586 return typed::multi_pw_aff<Domain>(res);
31589 template <typename Domain>
31590 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add_constant(const typed::val<Domain> &v) const
31592 auto res = isl::multi_pw_aff::add_constant(v);
31593 return typed::multi_pw_aff<Domain>(res);
31596 template <typename Domain>
31597 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::add_constant(long v) const
31599 auto res = isl::multi_pw_aff::add_constant(v);
31600 return typed::multi_pw_aff<Domain>(res);
31603 template <typename Domain>
31604 typed::multi_aff<Domain> typed::multi_pw_aff<Domain>::as_multi_aff() const
31606 auto res = isl::multi_pw_aff::as_multi_aff();
31607 return typed::multi_aff<Domain>(res);
31610 template <typename Domain>
31611 typed::set<Domain> typed::multi_pw_aff<Domain>::as_set() const
31613 auto res = isl::multi_pw_aff::as_set();
31614 return typed::set<Domain>(res);
31617 template <typename Domain>
31618 typed::pw_aff<Anonymous> typed::multi_pw_aff<Domain>::at(int pos) const
31620 auto res = isl::multi_pw_aff::at(pos);
31621 return typed::pw_aff<Anonymous>(res);
31624 template <typename Domain>
31625 typed::set<> typed::multi_pw_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
31627 auto res = isl::multi_pw_aff::bind(tuple);
31628 return typed::set<>(res);
31631 template <typename Domain>
31632 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::coalesce() const
31634 auto res = isl::multi_pw_aff::coalesce();
31635 return typed::multi_pw_aff<Domain>(res);
31638 template <typename Domain>
31639 typed::set<> typed::multi_pw_aff<Domain>::domain() const
31641 auto res = isl::multi_pw_aff::domain();
31642 return typed::set<>(res);
31645 template <typename Domain>
31646 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::set<> &set) const
31648 auto res = isl::multi_pw_aff::gist(set);
31649 return typed::multi_pw_aff<Domain>(res);
31652 template <typename Domain>
31653 typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::union_set<> &context) const
31655 auto res = isl::multi_pw_aff::gist(context);
31656 return typed::multi_union_pw_aff<Domain>(res);
31659 template <typename Domain>
31660 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::basic_set<> &set) const
31662 auto res = isl::multi_pw_aff::gist(set);
31663 return typed::multi_pw_aff<Domain>(res);
31666 template <typename Domain>
31667 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist(const typed::point<> &set) const
31669 auto res = isl::multi_pw_aff::gist(set);
31670 return typed::multi_pw_aff<Domain>(res);
31673 template <typename Domain>
31674 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist_params(const typed::set<> &set) const
31676 auto res = isl::multi_pw_aff::gist_params(set);
31677 return typed::multi_pw_aff<Domain>(res);
31680 template <typename Domain>
31681 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist_params(const typed::basic_set<> &set) const
31683 auto res = isl::multi_pw_aff::gist_params(set);
31684 return typed::multi_pw_aff<Domain>(res);
31687 template <typename Domain>
31688 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::gist_params(const typed::point<> &set) const
31690 auto res = isl::multi_pw_aff::gist_params(set);
31691 return typed::multi_pw_aff<Domain>(res);
31694 template <typename Domain>
31695 typed::multi_pw_aff<Domain, Domain> typed::multi_pw_aff<Domain>::identity() const
31697 auto res = isl::multi_pw_aff::identity();
31698 return typed::multi_pw_aff<Domain, Domain>(res);
31701 template <typename Domain>
31702 template <typename Arg1>
31703 typed::multi_pw_aff<Arg1, Domain> typed::multi_pw_aff<Domain>::insert_domain(const typed::space<Arg1> &domain) const
31705 auto res = isl::multi_pw_aff::insert_domain(domain);
31706 return typed::multi_pw_aff<Arg1, Domain>(res);
31709 template <typename Domain>
31710 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::intersect_params(const typed::set<> &set) const
31712 auto res = isl::multi_pw_aff::intersect_params(set);
31713 return typed::multi_pw_aff<Domain>(res);
31716 template <typename Domain>
31717 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::intersect_params(const typed::basic_set<> &set) const
31719 auto res = isl::multi_pw_aff::intersect_params(set);
31720 return typed::multi_pw_aff<Domain>(res);
31723 template <typename Domain>
31724 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::intersect_params(const typed::point<> &set) const
31726 auto res = isl::multi_pw_aff::intersect_params(set);
31727 return typed::multi_pw_aff<Domain>(res);
31730 template <typename Domain>
31731 typed::pw_aff_list<Anonymous> typed::multi_pw_aff<Domain>::list() const
31733 auto res = isl::multi_pw_aff::list();
31734 return typed::pw_aff_list<Anonymous>(res);
31737 template <typename Domain>
31738 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::multi_pw_aff<Domain> &multi2) const
31740 auto res = isl::multi_pw_aff::max(multi2);
31741 return typed::multi_pw_aff<Domain>(res);
31744 template <typename Domain>
31745 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::aff<Domain> &multi2) const
31747 auto res = isl::multi_pw_aff::max(multi2);
31748 return typed::multi_pw_aff<Domain>(res);
31751 template <typename Domain>
31752 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::multi_aff<Domain> &multi2) const
31754 auto res = isl::multi_pw_aff::max(multi2);
31755 return typed::multi_pw_aff<Domain>(res);
31758 template <typename Domain>
31759 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::pw_aff<Domain> &multi2) const
31761 auto res = isl::multi_pw_aff::max(multi2);
31762 return typed::multi_pw_aff<Domain>(res);
31765 template <typename Domain>
31766 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::max(const typed::pw_multi_aff<Domain> &multi2) const
31768 auto res = isl::multi_pw_aff::max(multi2);
31769 return typed::multi_pw_aff<Domain>(res);
31772 template <typename Domain>
31773 typed::multi_val<Domain> typed::multi_pw_aff<Domain>::max_multi_val() const
31775 auto res = isl::multi_pw_aff::max_multi_val();
31776 return typed::multi_val<Domain>(res);
31779 template <typename Domain>
31780 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::multi_pw_aff<Domain> &multi2) const
31782 auto res = isl::multi_pw_aff::min(multi2);
31783 return typed::multi_pw_aff<Domain>(res);
31786 template <typename Domain>
31787 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::aff<Domain> &multi2) const
31789 auto res = isl::multi_pw_aff::min(multi2);
31790 return typed::multi_pw_aff<Domain>(res);
31793 template <typename Domain>
31794 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::multi_aff<Domain> &multi2) const
31796 auto res = isl::multi_pw_aff::min(multi2);
31797 return typed::multi_pw_aff<Domain>(res);
31800 template <typename Domain>
31801 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::pw_aff<Domain> &multi2) const
31803 auto res = isl::multi_pw_aff::min(multi2);
31804 return typed::multi_pw_aff<Domain>(res);
31807 template <typename Domain>
31808 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::min(const typed::pw_multi_aff<Domain> &multi2) const
31810 auto res = isl::multi_pw_aff::min(multi2);
31811 return typed::multi_pw_aff<Domain>(res);
31814 template <typename Domain>
31815 typed::multi_val<Domain> typed::multi_pw_aff<Domain>::min_multi_val() const
31817 auto res = isl::multi_pw_aff::min_multi_val();
31818 return typed::multi_val<Domain>(res);
31821 template <typename Domain>
31822 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::neg() const
31824 auto res = isl::multi_pw_aff::neg();
31825 return typed::multi_pw_aff<Domain>(res);
31828 template <typename Domain>
31829 template <typename Range>
31830 typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::multi_pw_aff<Range> &multi2) const
31832 auto res = isl::multi_pw_aff::product(multi2);
31833 return typed::multi_pw_aff<pair<Domain, Range>>(res);
31836 template <typename Domain>
31837 typed::multi_pw_aff<pair<Domain, Anonymous>> typed::multi_pw_aff<Domain>::product(const typed::aff<Anonymous> &multi2) const
31839 auto res = isl::multi_pw_aff::product(multi2);
31840 return typed::multi_pw_aff<pair<Domain, Anonymous>>(res);
31843 template <typename Domain>
31844 template <typename Range>
31845 typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::multi_aff<Range> &multi2) const
31847 auto res = isl::multi_pw_aff::product(multi2);
31848 return typed::multi_pw_aff<pair<Domain, Range>>(res);
31851 template <typename Domain>
31852 typed::multi_pw_aff<pair<Domain, Anonymous>> typed::multi_pw_aff<Domain>::product(const typed::pw_aff<Anonymous> &multi2) const
31854 auto res = isl::multi_pw_aff::product(multi2);
31855 return typed::multi_pw_aff<pair<Domain, Anonymous>>(res);
31858 template <typename Domain>
31859 template <typename Range>
31860 typed::multi_pw_aff<pair<Domain, Range>> typed::multi_pw_aff<Domain>::product(const typed::pw_multi_aff<Range> &multi2) const
31862 auto res = isl::multi_pw_aff::product(multi2);
31863 return typed::multi_pw_aff<pair<Domain, Range>>(res);
31866 template <typename Domain>
31867 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
31869 auto res = isl::multi_pw_aff::scale(mv);
31870 return typed::multi_pw_aff<Domain>(res);
31873 template <typename Domain>
31874 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale(const typed::val<Domain> &v) const
31876 auto res = isl::multi_pw_aff::scale(v);
31877 return typed::multi_pw_aff<Domain>(res);
31880 template <typename Domain>
31881 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale(long v) const
31883 auto res = isl::multi_pw_aff::scale(v);
31884 return typed::multi_pw_aff<Domain>(res);
31887 template <typename Domain>
31888 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
31890 auto res = isl::multi_pw_aff::scale_down(mv);
31891 return typed::multi_pw_aff<Domain>(res);
31894 template <typename Domain>
31895 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale_down(const typed::val<Domain> &v) const
31897 auto res = isl::multi_pw_aff::scale_down(v);
31898 return typed::multi_pw_aff<Domain>(res);
31901 template <typename Domain>
31902 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::scale_down(long v) const
31904 auto res = isl::multi_pw_aff::scale_down(v);
31905 return typed::multi_pw_aff<Domain>(res);
31908 template <typename Domain>
31909 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
31911 auto res = isl::multi_pw_aff::set_at(pos, el);
31912 return typed::multi_pw_aff<Domain>(res);
31915 template <typename Domain>
31916 typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
31918 auto res = isl::multi_pw_aff::set_at(pos, el);
31919 return typed::multi_union_pw_aff<Domain>(res);
31922 template <typename Domain>
31923 template <typename Domain2>
31924 typed::multi_pw_aff<Domain2> typed::multi_pw_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
31926 auto res = isl::multi_pw_aff::set_range_tuple(id);
31927 return typed::multi_pw_aff<Domain2>(res);
31930 template <typename Domain>
31931 template <typename Domain2>
31932 typed::multi_pw_aff<Domain2> typed::multi_pw_aff<Domain>::set_range_tuple(const std::string &id) const
31934 auto res = isl::multi_pw_aff::set_range_tuple(id);
31935 return typed::multi_pw_aff<Domain2>(res);
31938 template <typename Domain>
31939 typed::space<Domain> typed::multi_pw_aff<Domain>::space() const
31941 auto res = isl::multi_pw_aff::space();
31942 return typed::space<Domain>(res);
31945 template <typename Domain>
31946 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
31948 auto res = isl::multi_pw_aff::sub(multi2);
31949 return typed::multi_pw_aff<Domain>(res);
31952 template <typename Domain>
31953 typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
31955 auto res = isl::multi_pw_aff::sub(multi2);
31956 return typed::multi_union_pw_aff<Domain>(res);
31959 template <typename Domain>
31960 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::aff<Domain> &multi2) const
31962 auto res = isl::multi_pw_aff::sub(multi2);
31963 return typed::multi_pw_aff<Domain>(res);
31966 template <typename Domain>
31967 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::multi_aff<Domain> &multi2) const
31969 auto res = isl::multi_pw_aff::sub(multi2);
31970 return typed::multi_pw_aff<Domain>(res);
31973 template <typename Domain>
31974 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::pw_aff<Domain> &multi2) const
31976 auto res = isl::multi_pw_aff::sub(multi2);
31977 return typed::multi_pw_aff<Domain>(res);
31980 template <typename Domain>
31981 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &multi2) const
31983 auto res = isl::multi_pw_aff::sub(multi2);
31984 return typed::multi_pw_aff<Domain>(res);
31987 template <typename Domain>
31988 template <typename Arg1>
31989 typed::multi_pw_aff<Arg1, Domain> typed::multi_pw_aff<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
31991 auto res = isl::multi_pw_aff::unbind_params_insert_domain(domain);
31992 return typed::multi_pw_aff<Arg1, Domain>(res);
31995 template <typename Domain>
31996 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mpa2) const
31998 auto res = isl::multi_pw_aff::union_add(mpa2);
31999 return typed::multi_pw_aff<Domain>(res);
32002 template <typename Domain>
32003 typed::multi_union_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
32005 auto res = isl::multi_pw_aff::union_add(mupa2);
32006 return typed::multi_union_pw_aff<Domain>(res);
32009 template <typename Domain>
32010 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::aff<Domain> &mpa2) const
32012 auto res = isl::multi_pw_aff::union_add(mpa2);
32013 return typed::multi_pw_aff<Domain>(res);
32016 template <typename Domain>
32017 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::multi_aff<Domain> &mpa2) const
32019 auto res = isl::multi_pw_aff::union_add(mpa2);
32020 return typed::multi_pw_aff<Domain>(res);
32023 template <typename Domain>
32024 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::pw_aff<Domain> &mpa2) const
32026 auto res = isl::multi_pw_aff::union_add(mpa2);
32027 return typed::multi_pw_aff<Domain>(res);
32030 template <typename Domain>
32031 typed::multi_pw_aff<Domain> typed::multi_pw_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &mpa2) const
32033 auto res = isl::multi_pw_aff::union_add(mpa2);
32034 return typed::multi_pw_aff<Domain>(res);
32037 template <typename Domain, typename Range>
32038 typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::aff<Domain, Range> &aff)
32039 : isl::multi_pw_aff(aff)
32043 template <typename Domain, typename Range>
32044 typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::multi_aff<Domain, Range> &ma)
32045 : isl::multi_pw_aff(ma)
32049 template <typename Domain, typename Range>
32050 typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::pw_aff<Domain, Range> &pa)
32051 : isl::multi_pw_aff(pa)
32055 template <typename Domain, typename Range>
32056 typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::space<Domain, Range> &space, const typed::pw_aff_list<Domain, Anonymous> &list)
32057 : isl::multi_pw_aff(space, list)
32061 template <typename Domain, typename Range>
32062 typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const typed::pw_multi_aff<Domain, Range> &pma)
32063 : isl::multi_pw_aff(pma)
32067 template <typename Domain, typename Range>
32068 typed::multi_pw_aff<Domain, Range>::multi_pw_aff(const isl::ctx &ctx, const std::string &str)
32069 : isl::multi_pw_aff(ctx, str)
32073 template <typename Domain, typename Range>
32074 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
32076 auto res = isl::multi_pw_aff::add(multi2);
32077 return typed::multi_pw_aff<Domain, Range>(res);
32080 template <typename Domain, typename Range>
32081 typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
32083 auto res = isl::multi_pw_aff::add(multi2);
32084 return typed::multi_union_pw_aff<Domain, Range>(res);
32087 template <typename Domain, typename Range>
32088 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::aff<Domain, Range> &multi2) const
32090 auto res = isl::multi_pw_aff::add(multi2);
32091 return typed::multi_pw_aff<Domain, Range>(res);
32094 template <typename Domain, typename Range>
32095 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &multi2) const
32097 auto res = isl::multi_pw_aff::add(multi2);
32098 return typed::multi_pw_aff<Domain, Range>(res);
32101 template <typename Domain, typename Range>
32102 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::pw_aff<Domain, Range> &multi2) const
32104 auto res = isl::multi_pw_aff::add(multi2);
32105 return typed::multi_pw_aff<Domain, Range>(res);
32108 template <typename Domain, typename Range>
32109 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &multi2) const
32111 auto res = isl::multi_pw_aff::add(multi2);
32112 return typed::multi_pw_aff<Domain, Range>(res);
32115 template <typename Domain, typename Range>
32116 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add_constant(const typed::multi_val<Range> &mv) const
32118 auto res = isl::multi_pw_aff::add_constant(mv);
32119 return typed::multi_pw_aff<Domain, Range>(res);
32122 template <typename Domain, typename Range>
32123 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add_constant(const typed::val<Range> &v) const
32125 auto res = isl::multi_pw_aff::add_constant(v);
32126 return typed::multi_pw_aff<Domain, Range>(res);
32129 template <typename Domain, typename Range>
32130 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::add_constant(long v) const
32132 auto res = isl::multi_pw_aff::add_constant(v);
32133 return typed::multi_pw_aff<Domain, Range>(res);
32136 template <typename Domain, typename Range>
32137 typed::map<Domain, Range> typed::multi_pw_aff<Domain, Range>::as_map() const
32139 auto res = isl::multi_pw_aff::as_map();
32140 return typed::map<Domain, Range>(res);
32143 template <typename Domain, typename Range>
32144 typed::multi_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::as_multi_aff() const
32146 auto res = isl::multi_pw_aff::as_multi_aff();
32147 return typed::multi_aff<Domain, Range>(res);
32150 template <typename Domain, typename Range>
32151 typed::pw_aff<Domain, Anonymous> typed::multi_pw_aff<Domain, Range>::at(int pos) const
32153 auto res = isl::multi_pw_aff::at(pos);
32154 return typed::pw_aff<Domain, Anonymous>(res);
32157 template <typename Domain, typename Range>
32158 typed::set<Domain> typed::multi_pw_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
32160 auto res = isl::multi_pw_aff::bind(tuple);
32161 return typed::set<Domain>(res);
32164 template <typename Domain, typename Range>
32165 typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
32167 auto res = isl::multi_pw_aff::bind_domain(tuple);
32168 return typed::multi_pw_aff<Range>(res);
32171 template <typename Domain, typename Range>
32172 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::coalesce() const
32174 auto res = isl::multi_pw_aff::coalesce();
32175 return typed::multi_pw_aff<Domain, Range>(res);
32178 template <typename Domain, typename Range>
32179 typed::set<Domain> typed::multi_pw_aff<Domain, Range>::domain() const
32181 auto res = isl::multi_pw_aff::domain();
32182 return typed::set<Domain>(res);
32185 template <typename Domain, typename Range>
32186 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::set<Domain> &set) const
32188 auto res = isl::multi_pw_aff::gist(set);
32189 return typed::multi_pw_aff<Domain, Range>(res);
32192 template <typename Domain, typename Range>
32193 typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
32195 auto res = isl::multi_pw_aff::gist(context);
32196 return typed::multi_union_pw_aff<Domain, Range>(res);
32199 template <typename Domain, typename Range>
32200 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::basic_set<Domain> &set) const
32202 auto res = isl::multi_pw_aff::gist(set);
32203 return typed::multi_pw_aff<Domain, Range>(res);
32206 template <typename Domain, typename Range>
32207 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist(const typed::point<Domain> &set) const
32209 auto res = isl::multi_pw_aff::gist(set);
32210 return typed::multi_pw_aff<Domain, Range>(res);
32213 template <typename Domain, typename Range>
32214 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist_params(const typed::set<> &set) const
32216 auto res = isl::multi_pw_aff::gist_params(set);
32217 return typed::multi_pw_aff<Domain, Range>(res);
32220 template <typename Domain, typename Range>
32221 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist_params(const typed::basic_set<> &set) const
32223 auto res = isl::multi_pw_aff::gist_params(set);
32224 return typed::multi_pw_aff<Domain, Range>(res);
32227 template <typename Domain, typename Range>
32228 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::gist_params(const typed::point<> &set) const
32230 auto res = isl::multi_pw_aff::gist_params(set);
32231 return typed::multi_pw_aff<Domain, Range>(res);
32234 template <typename Domain, typename Range>
32235 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::identity() const
32237 auto res = isl::multi_pw_aff::identity();
32238 return typed::multi_pw_aff<Domain, Range>(res);
32241 template <typename Domain, typename Range>
32242 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &domain) const
32244 auto res = isl::multi_pw_aff::intersect_domain(domain);
32245 return typed::multi_pw_aff<Domain, Range>(res);
32248 template <typename Domain, typename Range>
32249 typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
32251 auto res = isl::multi_pw_aff::intersect_domain(uset);
32252 return typed::multi_union_pw_aff<Domain, Range>(res);
32255 template <typename Domain, typename Range>
32256 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &domain) const
32258 auto res = isl::multi_pw_aff::intersect_domain(domain);
32259 return typed::multi_pw_aff<Domain, Range>(res);
32262 template <typename Domain, typename Range>
32263 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_domain(const typed::point<Domain> &domain) const
32265 auto res = isl::multi_pw_aff::intersect_domain(domain);
32266 return typed::multi_pw_aff<Domain, Range>(res);
32269 template <typename Domain, typename Range>
32270 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
32272 auto res = isl::multi_pw_aff::intersect_params(set);
32273 return typed::multi_pw_aff<Domain, Range>(res);
32276 template <typename Domain, typename Range>
32277 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
32279 auto res = isl::multi_pw_aff::intersect_params(set);
32280 return typed::multi_pw_aff<Domain, Range>(res);
32283 template <typename Domain, typename Range>
32284 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::intersect_params(const typed::point<> &set) const
32286 auto res = isl::multi_pw_aff::intersect_params(set);
32287 return typed::multi_pw_aff<Domain, Range>(res);
32290 template <typename Domain, typename Range>
32291 typed::pw_aff_list<Domain, Anonymous> typed::multi_pw_aff<Domain, Range>::list() const
32293 auto res = isl::multi_pw_aff::list();
32294 return typed::pw_aff_list<Domain, Anonymous>(res);
32297 template <typename Domain, typename Range>
32298 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::multi_pw_aff<Domain, Range> &multi2) const
32300 auto res = isl::multi_pw_aff::max(multi2);
32301 return typed::multi_pw_aff<Domain, Range>(res);
32304 template <typename Domain, typename Range>
32305 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::aff<Domain, Range> &multi2) const
32307 auto res = isl::multi_pw_aff::max(multi2);
32308 return typed::multi_pw_aff<Domain, Range>(res);
32311 template <typename Domain, typename Range>
32312 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::multi_aff<Domain, Range> &multi2) const
32314 auto res = isl::multi_pw_aff::max(multi2);
32315 return typed::multi_pw_aff<Domain, Range>(res);
32318 template <typename Domain, typename Range>
32319 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::pw_aff<Domain, Range> &multi2) const
32321 auto res = isl::multi_pw_aff::max(multi2);
32322 return typed::multi_pw_aff<Domain, Range>(res);
32325 template <typename Domain, typename Range>
32326 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::max(const typed::pw_multi_aff<Domain, Range> &multi2) const
32328 auto res = isl::multi_pw_aff::max(multi2);
32329 return typed::multi_pw_aff<Domain, Range>(res);
32332 template <typename Domain, typename Range>
32333 typed::multi_val<Range> typed::multi_pw_aff<Domain, Range>::max_multi_val() const
32335 auto res = isl::multi_pw_aff::max_multi_val();
32336 return typed::multi_val<Range>(res);
32339 template <typename Domain, typename Range>
32340 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::multi_pw_aff<Domain, Range> &multi2) const
32342 auto res = isl::multi_pw_aff::min(multi2);
32343 return typed::multi_pw_aff<Domain, Range>(res);
32346 template <typename Domain, typename Range>
32347 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::aff<Domain, Range> &multi2) const
32349 auto res = isl::multi_pw_aff::min(multi2);
32350 return typed::multi_pw_aff<Domain, Range>(res);
32353 template <typename Domain, typename Range>
32354 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::multi_aff<Domain, Range> &multi2) const
32356 auto res = isl::multi_pw_aff::min(multi2);
32357 return typed::multi_pw_aff<Domain, Range>(res);
32360 template <typename Domain, typename Range>
32361 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::pw_aff<Domain, Range> &multi2) const
32363 auto res = isl::multi_pw_aff::min(multi2);
32364 return typed::multi_pw_aff<Domain, Range>(res);
32367 template <typename Domain, typename Range>
32368 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::min(const typed::pw_multi_aff<Domain, Range> &multi2) const
32370 auto res = isl::multi_pw_aff::min(multi2);
32371 return typed::multi_pw_aff<Domain, Range>(res);
32374 template <typename Domain, typename Range>
32375 typed::multi_val<Range> typed::multi_pw_aff<Domain, Range>::min_multi_val() const
32377 auto res = isl::multi_pw_aff::min_multi_val();
32378 return typed::multi_val<Range>(res);
32381 template <typename Domain, typename Range>
32382 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::neg() const
32384 auto res = isl::multi_pw_aff::neg();
32385 return typed::multi_pw_aff<Domain, Range>(res);
32388 template <typename Domain, typename Range>
32389 template <typename Domain2, typename Range2>
32390 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
32392 auto res = isl::multi_pw_aff::product(multi2);
32393 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
32396 template <typename Domain, typename Range>
32397 template <typename Domain2>
32398 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> typed::multi_pw_aff<Domain, Range>::product(const typed::aff<Domain2, Anonymous> &multi2) const
32400 auto res = isl::multi_pw_aff::product(multi2);
32401 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Anonymous>>(res);
32404 template <typename Domain, typename Range>
32405 template <typename Domain2, typename Range2>
32406 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::multi_aff<Domain2, Range2> &multi2) const
32408 auto res = isl::multi_pw_aff::product(multi2);
32409 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
32412 template <typename Domain, typename Range>
32413 template <typename Domain2>
32414 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> typed::multi_pw_aff<Domain, Range>::product(const typed::pw_aff<Domain2, Anonymous> &multi2) const
32416 auto res = isl::multi_pw_aff::product(multi2);
32417 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Anonymous>>(res);
32420 template <typename Domain, typename Range>
32421 template <typename Domain2, typename Range2>
32422 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::product(const typed::pw_multi_aff<Domain2, Range2> &multi2) const
32424 auto res = isl::multi_pw_aff::product(multi2);
32425 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
32428 template <typename Domain, typename Range>
32429 template <typename Domain2>
32430 typed::multi_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
32432 auto res = isl::multi_pw_aff::pullback(ma);
32433 return typed::multi_pw_aff<Domain2, Range>(res);
32436 template <typename Domain, typename Range>
32437 typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &ma) const
32439 auto res = isl::multi_pw_aff::pullback(ma);
32440 return typed::multi_pw_aff<Range>(res);
32443 template <typename Domain, typename Range>
32444 template <typename Domain2>
32445 typed::multi_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
32447 auto res = isl::multi_pw_aff::pullback(mpa2);
32448 return typed::multi_pw_aff<Domain2, Range>(res);
32451 template <typename Domain, typename Range>
32452 typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
32454 auto res = isl::multi_pw_aff::pullback(mpa2);
32455 return typed::multi_pw_aff<Range>(res);
32458 template <typename Domain, typename Range>
32459 template <typename Domain2>
32460 typed::multi_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const
32462 auto res = isl::multi_pw_aff::pullback(pma);
32463 return typed::multi_pw_aff<Domain2, Range>(res);
32466 template <typename Domain, typename Range>
32467 typed::multi_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &pma) const
32469 auto res = isl::multi_pw_aff::pullback(pma);
32470 return typed::multi_pw_aff<Range>(res);
32473 template <typename Domain, typename Range>
32474 template <typename Domain2>
32475 typed::multi_union_pw_aff<Domain2, Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
32477 auto res = isl::multi_pw_aff::pullback(upma);
32478 return typed::multi_union_pw_aff<Domain2, Range>(res);
32481 template <typename Domain, typename Range>
32482 typed::multi_union_pw_aff<Range> typed::multi_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
32484 auto res = isl::multi_pw_aff::pullback(upma);
32485 return typed::multi_union_pw_aff<Range>(res);
32488 template <typename Domain, typename Range>
32489 template <typename Range2>
32490 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
32492 auto res = isl::multi_pw_aff::range_product(multi2);
32493 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
32496 template <typename Domain, typename Range>
32497 template <typename Range2>
32498 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
32500 auto res = isl::multi_pw_aff::range_product(multi2);
32501 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
32504 template <typename Domain, typename Range>
32505 typed::multi_pw_aff<Domain, pair<Range, Anonymous>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::aff<Domain, Anonymous> &multi2) const
32507 auto res = isl::multi_pw_aff::range_product(multi2);
32508 return typed::multi_pw_aff<Domain, pair<Range, Anonymous>>(res);
32511 template <typename Domain, typename Range>
32512 template <typename Range2>
32513 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &multi2) const
32515 auto res = isl::multi_pw_aff::range_product(multi2);
32516 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
32519 template <typename Domain, typename Range>
32520 typed::multi_pw_aff<Domain, pair<Range, Anonymous>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::pw_aff<Domain, Anonymous> &multi2) const
32522 auto res = isl::multi_pw_aff::range_product(multi2);
32523 return typed::multi_pw_aff<Domain, pair<Range, Anonymous>>(res);
32526 template <typename Domain, typename Range>
32527 template <typename Range2>
32528 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::multi_pw_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &multi2) const
32530 auto res = isl::multi_pw_aff::range_product(multi2);
32531 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
32534 template <typename Domain, typename Range>
32535 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
32537 auto res = isl::multi_pw_aff::scale(mv);
32538 return typed::multi_pw_aff<Domain, Range>(res);
32541 template <typename Domain, typename Range>
32542 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale(const typed::val<Range> &v) const
32544 auto res = isl::multi_pw_aff::scale(v);
32545 return typed::multi_pw_aff<Domain, Range>(res);
32548 template <typename Domain, typename Range>
32549 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale(long v) const
32551 auto res = isl::multi_pw_aff::scale(v);
32552 return typed::multi_pw_aff<Domain, Range>(res);
32555 template <typename Domain, typename Range>
32556 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
32558 auto res = isl::multi_pw_aff::scale_down(mv);
32559 return typed::multi_pw_aff<Domain, Range>(res);
32562 template <typename Domain, typename Range>
32563 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
32565 auto res = isl::multi_pw_aff::scale_down(v);
32566 return typed::multi_pw_aff<Domain, Range>(res);
32569 template <typename Domain, typename Range>
32570 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::scale_down(long v) const
32572 auto res = isl::multi_pw_aff::scale_down(v);
32573 return typed::multi_pw_aff<Domain, Range>(res);
32576 template <typename Domain, typename Range>
32577 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
32579 auto res = isl::multi_pw_aff::set_at(pos, el);
32580 return typed::multi_pw_aff<Domain, Range>(res);
32583 template <typename Domain, typename Range>
32584 typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
32586 auto res = isl::multi_pw_aff::set_at(pos, el);
32587 return typed::multi_union_pw_aff<Domain, Range>(res);
32590 template <typename Domain, typename Range>
32591 template <typename Range2>
32592 typed::multi_pw_aff<Domain, Range2> typed::multi_pw_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
32594 auto res = isl::multi_pw_aff::set_range_tuple(id);
32595 return typed::multi_pw_aff<Domain, Range2>(res);
32598 template <typename Domain, typename Range>
32599 template <typename Range2>
32600 typed::multi_pw_aff<Domain, Range2> typed::multi_pw_aff<Domain, Range>::set_range_tuple(const std::string &id) const
32602 auto res = isl::multi_pw_aff::set_range_tuple(id);
32603 return typed::multi_pw_aff<Domain, Range2>(res);
32606 template <typename Domain, typename Range>
32607 typed::space<Domain, Range> typed::multi_pw_aff<Domain, Range>::space() const
32609 auto res = isl::multi_pw_aff::space();
32610 return typed::space<Domain, Range>(res);
32613 template <typename Domain, typename Range>
32614 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
32616 auto res = isl::multi_pw_aff::sub(multi2);
32617 return typed::multi_pw_aff<Domain, Range>(res);
32620 template <typename Domain, typename Range>
32621 typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
32623 auto res = isl::multi_pw_aff::sub(multi2);
32624 return typed::multi_union_pw_aff<Domain, Range>(res);
32627 template <typename Domain, typename Range>
32628 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::aff<Domain, Range> &multi2) const
32630 auto res = isl::multi_pw_aff::sub(multi2);
32631 return typed::multi_pw_aff<Domain, Range>(res);
32634 template <typename Domain, typename Range>
32635 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &multi2) const
32637 auto res = isl::multi_pw_aff::sub(multi2);
32638 return typed::multi_pw_aff<Domain, Range>(res);
32641 template <typename Domain, typename Range>
32642 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::pw_aff<Domain, Range> &multi2) const
32644 auto res = isl::multi_pw_aff::sub(multi2);
32645 return typed::multi_pw_aff<Domain, Range>(res);
32648 template <typename Domain, typename Range>
32649 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &multi2) const
32651 auto res = isl::multi_pw_aff::sub(multi2);
32652 return typed::multi_pw_aff<Domain, Range>(res);
32655 template <typename Domain, typename Range>
32656 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const
32658 auto res = isl::multi_pw_aff::union_add(mpa2);
32659 return typed::multi_pw_aff<Domain, Range>(res);
32662 template <typename Domain, typename Range>
32663 typed::multi_union_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
32665 auto res = isl::multi_pw_aff::union_add(mupa2);
32666 return typed::multi_union_pw_aff<Domain, Range>(res);
32669 template <typename Domain, typename Range>
32670 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::aff<Domain, Range> &mpa2) const
32672 auto res = isl::multi_pw_aff::union_add(mpa2);
32673 return typed::multi_pw_aff<Domain, Range>(res);
32676 template <typename Domain, typename Range>
32677 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::multi_aff<Domain, Range> &mpa2) const
32679 auto res = isl::multi_pw_aff::union_add(mpa2);
32680 return typed::multi_pw_aff<Domain, Range>(res);
32683 template <typename Domain, typename Range>
32684 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::pw_aff<Domain, Range> &mpa2) const
32686 auto res = isl::multi_pw_aff::union_add(mpa2);
32687 return typed::multi_pw_aff<Domain, Range>(res);
32690 template <typename Domain, typename Range>
32691 typed::multi_pw_aff<Domain, Range> typed::multi_pw_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &mpa2) const
32693 auto res = isl::multi_pw_aff::union_add(mpa2);
32694 return typed::multi_pw_aff<Domain, Range>(res);
32697 template <typename Domain2, typename Range2, typename Range>
32698 typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::aff<pair<Domain2, Range2>, Range> &aff)
32699 : isl::multi_pw_aff(aff)
32703 template <typename Domain2, typename Range2, typename Range>
32704 typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma)
32705 : isl::multi_pw_aff(ma)
32709 template <typename Domain2, typename Range2, typename Range>
32710 typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa)
32711 : isl::multi_pw_aff(pa)
32715 template <typename Domain2, typename Range2, typename Range>
32716 typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::space<pair<Domain2, Range2>, Range> &space, const typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> &list)
32717 : isl::multi_pw_aff(space, list)
32721 template <typename Domain2, typename Range2, typename Range>
32722 typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma)
32723 : isl::multi_pw_aff(pma)
32727 template <typename Domain2, typename Range2, typename Range>
32728 typed::multi_pw_aff<pair<Domain2, Range2>, Range>::multi_pw_aff(const isl::ctx &ctx, const std::string &str)
32729 : isl::multi_pw_aff(ctx, str)
32733 template <typename Domain2, typename Range2, typename Range>
32734 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
32736 auto res = isl::multi_pw_aff::add(multi2);
32737 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32740 template <typename Domain2, typename Range2, typename Range>
32741 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
32743 auto res = isl::multi_pw_aff::add(multi2);
32744 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
32747 template <typename Domain2, typename Range2, typename Range>
32748 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
32750 auto res = isl::multi_pw_aff::add(multi2);
32751 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32754 template <typename Domain2, typename Range2, typename Range>
32755 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
32757 auto res = isl::multi_pw_aff::add(multi2);
32758 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32761 template <typename Domain2, typename Range2, typename Range>
32762 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
32764 auto res = isl::multi_pw_aff::add(multi2);
32765 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32768 template <typename Domain2, typename Range2, typename Range>
32769 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
32771 auto res = isl::multi_pw_aff::add(multi2);
32772 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32775 template <typename Domain2, typename Range2, typename Range>
32776 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::multi_val<Range> &mv) const
32778 auto res = isl::multi_pw_aff::add_constant(mv);
32779 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32782 template <typename Domain2, typename Range2, typename Range>
32783 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::val<Range> &v) const
32785 auto res = isl::multi_pw_aff::add_constant(v);
32786 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32789 template <typename Domain2, typename Range2, typename Range>
32790 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::add_constant(long v) const
32792 auto res = isl::multi_pw_aff::add_constant(v);
32793 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32796 template <typename Domain2, typename Range2, typename Range>
32797 typed::map<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::as_map() const
32799 auto res = isl::multi_pw_aff::as_map();
32800 return typed::map<pair<Domain2, Range2>, Range>(res);
32803 template <typename Domain2, typename Range2, typename Range>
32804 typed::multi_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::as_multi_aff() const
32806 auto res = isl::multi_pw_aff::as_multi_aff();
32807 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
32810 template <typename Domain2, typename Range2, typename Range>
32811 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::at(int pos) const
32813 auto res = isl::multi_pw_aff::at(pos);
32814 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
32817 template <typename Domain2, typename Range2, typename Range>
32818 typed::set<pair<Domain2, Range2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::bind(const typed::multi_id<Range> &tuple) const
32820 auto res = isl::multi_pw_aff::bind(tuple);
32821 return typed::set<pair<Domain2, Range2>>(res);
32824 template <typename Domain2, typename Range2, typename Range>
32825 typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
32827 auto res = isl::multi_pw_aff::bind_domain(tuple);
32828 return typed::multi_pw_aff<Range>(res);
32831 template <typename Domain2, typename Range2, typename Range>
32832 typed::multi_pw_aff<Range2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
32834 auto res = isl::multi_pw_aff::bind_domain_wrapped_domain(tuple);
32835 return typed::multi_pw_aff<Range2, Range>(res);
32838 template <typename Domain2, typename Range2, typename Range>
32839 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::coalesce() const
32841 auto res = isl::multi_pw_aff::coalesce();
32842 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32845 template <typename Domain2, typename Range2, typename Range>
32846 typed::set<pair<Domain2, Range2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::domain() const
32848 auto res = isl::multi_pw_aff::domain();
32849 return typed::set<pair<Domain2, Range2>>(res);
32852 template <typename Domain2, typename Range2, typename Range>
32853 typed::multi_pw_aff<pair<Range2, Domain2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::domain_reverse() const
32855 auto res = isl::multi_pw_aff::domain_reverse();
32856 return typed::multi_pw_aff<pair<Range2, Domain2>, Range>(res);
32859 template <typename Domain2, typename Range2, typename Range>
32860 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::set<pair<Domain2, Range2>> &set) const
32862 auto res = isl::multi_pw_aff::gist(set);
32863 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32866 template <typename Domain2, typename Range2, typename Range>
32867 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
32869 auto res = isl::multi_pw_aff::gist(context);
32870 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
32873 template <typename Domain2, typename Range2, typename Range>
32874 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::basic_set<pair<Domain2, Range2>> &set) const
32876 auto res = isl::multi_pw_aff::gist(set);
32877 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32880 template <typename Domain2, typename Range2, typename Range>
32881 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist(const typed::point<pair<Domain2, Range2>> &set) const
32883 auto res = isl::multi_pw_aff::gist(set);
32884 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32887 template <typename Domain2, typename Range2, typename Range>
32888 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::set<> &set) const
32890 auto res = isl::multi_pw_aff::gist_params(set);
32891 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32894 template <typename Domain2, typename Range2, typename Range>
32895 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::basic_set<> &set) const
32897 auto res = isl::multi_pw_aff::gist_params(set);
32898 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32901 template <typename Domain2, typename Range2, typename Range>
32902 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::point<> &set) const
32904 auto res = isl::multi_pw_aff::gist_params(set);
32905 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32908 template <typename Domain2, typename Range2, typename Range>
32909 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::identity() const
32911 auto res = isl::multi_pw_aff::identity();
32912 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32915 template <typename Domain2, typename Range2, typename Range>
32916 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::set<pair<Domain2, Range2>> &domain) const
32918 auto res = isl::multi_pw_aff::intersect_domain(domain);
32919 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32922 template <typename Domain2, typename Range2, typename Range>
32923 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
32925 auto res = isl::multi_pw_aff::intersect_domain(uset);
32926 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
32929 template <typename Domain2, typename Range2, typename Range>
32930 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &domain) const
32932 auto res = isl::multi_pw_aff::intersect_domain(domain);
32933 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32936 template <typename Domain2, typename Range2, typename Range>
32937 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::point<pair<Domain2, Range2>> &domain) const
32939 auto res = isl::multi_pw_aff::intersect_domain(domain);
32940 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32943 template <typename Domain2, typename Range2, typename Range>
32944 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::set<> &set) const
32946 auto res = isl::multi_pw_aff::intersect_params(set);
32947 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32950 template <typename Domain2, typename Range2, typename Range>
32951 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::basic_set<> &set) const
32953 auto res = isl::multi_pw_aff::intersect_params(set);
32954 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32957 template <typename Domain2, typename Range2, typename Range>
32958 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::point<> &set) const
32960 auto res = isl::multi_pw_aff::intersect_params(set);
32961 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32964 template <typename Domain2, typename Range2, typename Range>
32965 typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::list() const
32967 auto res = isl::multi_pw_aff::list();
32968 return typed::pw_aff_list<pair<Domain2, Range2>, Anonymous>(res);
32971 template <typename Domain2, typename Range2, typename Range>
32972 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
32974 auto res = isl::multi_pw_aff::max(multi2);
32975 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32978 template <typename Domain2, typename Range2, typename Range>
32979 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
32981 auto res = isl::multi_pw_aff::max(multi2);
32982 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32985 template <typename Domain2, typename Range2, typename Range>
32986 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
32988 auto res = isl::multi_pw_aff::max(multi2);
32989 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32992 template <typename Domain2, typename Range2, typename Range>
32993 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
32995 auto res = isl::multi_pw_aff::max(multi2);
32996 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
32999 template <typename Domain2, typename Range2, typename Range>
33000 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
33002 auto res = isl::multi_pw_aff::max(multi2);
33003 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33006 template <typename Domain2, typename Range2, typename Range>
33007 typed::multi_val<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::max_multi_val() const
33009 auto res = isl::multi_pw_aff::max_multi_val();
33010 return typed::multi_val<Range>(res);
33013 template <typename Domain2, typename Range2, typename Range>
33014 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
33016 auto res = isl::multi_pw_aff::min(multi2);
33017 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33020 template <typename Domain2, typename Range2, typename Range>
33021 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
33023 auto res = isl::multi_pw_aff::min(multi2);
33024 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33027 template <typename Domain2, typename Range2, typename Range>
33028 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
33030 auto res = isl::multi_pw_aff::min(multi2);
33031 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33034 template <typename Domain2, typename Range2, typename Range>
33035 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
33037 auto res = isl::multi_pw_aff::min(multi2);
33038 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33041 template <typename Domain2, typename Range2, typename Range>
33042 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
33044 auto res = isl::multi_pw_aff::min(multi2);
33045 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33048 template <typename Domain2, typename Range2, typename Range>
33049 typed::multi_val<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::min_multi_val() const
33051 auto res = isl::multi_pw_aff::min_multi_val();
33052 return typed::multi_val<Range>(res);
33055 template <typename Domain2, typename Range2, typename Range>
33056 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::neg() const
33058 auto res = isl::multi_pw_aff::neg();
33059 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33062 template <typename Domain2, typename Range2, typename Range>
33063 template <typename Arg2, typename Arg3>
33064 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const
33066 auto res = isl::multi_pw_aff::product(multi2);
33067 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
33070 template <typename Domain2, typename Range2, typename Range>
33071 template <typename Arg2>
33072 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::aff<Arg2, Anonymous> &multi2) const
33074 auto res = isl::multi_pw_aff::product(multi2);
33075 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>>(res);
33078 template <typename Domain2, typename Range2, typename Range>
33079 template <typename Arg2, typename Arg3>
33080 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_aff<Arg2, Arg3> &multi2) const
33082 auto res = isl::multi_pw_aff::product(multi2);
33083 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
33086 template <typename Domain2, typename Range2, typename Range>
33087 template <typename Arg2>
33088 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_aff<Arg2, Anonymous> &multi2) const
33090 auto res = isl::multi_pw_aff::product(multi2);
33091 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>>(res);
33094 template <typename Domain2, typename Range2, typename Range>
33095 template <typename Arg2, typename Arg3>
33096 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_multi_aff<Arg2, Arg3> &multi2) const
33098 auto res = isl::multi_pw_aff::product(multi2);
33099 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
33102 template <typename Domain2, typename Range2, typename Range>
33103 template <typename Arg2>
33104 typed::multi_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const
33106 auto res = isl::multi_pw_aff::pullback(ma);
33107 return typed::multi_pw_aff<Arg2, Range>(res);
33110 template <typename Domain2, typename Range2, typename Range>
33111 typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
33113 auto res = isl::multi_pw_aff::pullback(ma);
33114 return typed::multi_pw_aff<Range>(res);
33117 template <typename Domain2, typename Range2, typename Range>
33118 template <typename Arg2>
33119 typed::multi_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const
33121 auto res = isl::multi_pw_aff::pullback(mpa2);
33122 return typed::multi_pw_aff<Arg2, Range>(res);
33125 template <typename Domain2, typename Range2, typename Range>
33126 typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const
33128 auto res = isl::multi_pw_aff::pullback(mpa2);
33129 return typed::multi_pw_aff<Range>(res);
33132 template <typename Domain2, typename Range2, typename Range>
33133 template <typename Arg2>
33134 typed::multi_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma) const
33136 auto res = isl::multi_pw_aff::pullback(pma);
33137 return typed::multi_pw_aff<Arg2, Range>(res);
33140 template <typename Domain2, typename Range2, typename Range>
33141 typed::multi_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const
33143 auto res = isl::multi_pw_aff::pullback(pma);
33144 return typed::multi_pw_aff<Range>(res);
33147 template <typename Domain2, typename Range2, typename Range>
33148 template <typename Arg2>
33149 typed::multi_union_pw_aff<Arg2, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma) const
33151 auto res = isl::multi_pw_aff::pullback(upma);
33152 return typed::multi_union_pw_aff<Arg2, Range>(res);
33155 template <typename Domain2, typename Range2, typename Range>
33156 typed::multi_union_pw_aff<Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const
33158 auto res = isl::multi_pw_aff::pullback(upma);
33159 return typed::multi_union_pw_aff<Range>(res);
33162 template <typename Domain2, typename Range2, typename Range>
33163 template <typename Arg2>
33164 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
33166 auto res = isl::multi_pw_aff::range_product(multi2);
33167 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
33170 template <typename Domain2, typename Range2, typename Range>
33171 template <typename Arg2>
33172 typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
33174 auto res = isl::multi_pw_aff::range_product(multi2);
33175 return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
33178 template <typename Domain2, typename Range2, typename Range>
33179 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::aff<pair<Domain2, Range2>, Anonymous> &multi2) const
33181 auto res = isl::multi_pw_aff::range_product(multi2);
33182 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Anonymous>>(res);
33185 template <typename Domain2, typename Range2, typename Range>
33186 template <typename Arg2>
33187 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const
33189 auto res = isl::multi_pw_aff::range_product(multi2);
33190 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
33193 template <typename Domain2, typename Range2, typename Range>
33194 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
33196 auto res = isl::multi_pw_aff::range_product(multi2);
33197 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Anonymous>>(res);
33200 template <typename Domain2, typename Range2, typename Range>
33201 template <typename Arg2>
33202 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &multi2) const
33204 auto res = isl::multi_pw_aff::range_product(multi2);
33205 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
33208 template <typename Domain2, typename Range2, typename Range>
33209 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale(const typed::multi_val<Range> &mv) const
33211 auto res = isl::multi_pw_aff::scale(mv);
33212 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33215 template <typename Domain2, typename Range2, typename Range>
33216 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale(const typed::val<Range> &v) const
33218 auto res = isl::multi_pw_aff::scale(v);
33219 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33222 template <typename Domain2, typename Range2, typename Range>
33223 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale(long v) const
33225 auto res = isl::multi_pw_aff::scale(v);
33226 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33229 template <typename Domain2, typename Range2, typename Range>
33230 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::multi_val<Range> &mv) const
33232 auto res = isl::multi_pw_aff::scale_down(mv);
33233 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33236 template <typename Domain2, typename Range2, typename Range>
33237 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::val<Range> &v) const
33239 auto res = isl::multi_pw_aff::scale_down(v);
33240 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33243 template <typename Domain2, typename Range2, typename Range>
33244 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::scale_down(long v) const
33246 auto res = isl::multi_pw_aff::scale_down(v);
33247 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33250 template <typename Domain2, typename Range2, typename Range>
33251 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
33253 auto res = isl::multi_pw_aff::set_at(pos, el);
33254 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33257 template <typename Domain2, typename Range2, typename Range>
33258 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
33260 auto res = isl::multi_pw_aff::set_at(pos, el);
33261 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
33264 template <typename Domain2, typename Range2, typename Range>
33265 template <typename Arg1>
33266 typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
33268 auto res = isl::multi_pw_aff::set_range_tuple(id);
33269 return typed::multi_pw_aff<pair<Domain2, Range2>, Arg1>(res);
33272 template <typename Domain2, typename Range2, typename Range>
33273 template <typename Arg1>
33274 typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const std::string &id) const
33276 auto res = isl::multi_pw_aff::set_range_tuple(id);
33277 return typed::multi_pw_aff<pair<Domain2, Range2>, Arg1>(res);
33280 template <typename Domain2, typename Range2, typename Range>
33281 typed::space<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::space() const
33283 auto res = isl::multi_pw_aff::space();
33284 return typed::space<pair<Domain2, Range2>, Range>(res);
33287 template <typename Domain2, typename Range2, typename Range>
33288 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
33290 auto res = isl::multi_pw_aff::sub(multi2);
33291 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33294 template <typename Domain2, typename Range2, typename Range>
33295 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
33297 auto res = isl::multi_pw_aff::sub(multi2);
33298 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
33301 template <typename Domain2, typename Range2, typename Range>
33302 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::aff<pair<Domain2, Range2>, Range> &multi2) const
33304 auto res = isl::multi_pw_aff::sub(multi2);
33305 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33308 template <typename Domain2, typename Range2, typename Range>
33309 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &multi2) const
33311 auto res = isl::multi_pw_aff::sub(multi2);
33312 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33315 template <typename Domain2, typename Range2, typename Range>
33316 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &multi2) const
33318 auto res = isl::multi_pw_aff::sub(multi2);
33319 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33322 template <typename Domain2, typename Range2, typename Range>
33323 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &multi2) const
33325 auto res = isl::multi_pw_aff::sub(multi2);
33326 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33329 template <typename Domain2, typename Range2, typename Range>
33330 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
33332 auto res = isl::multi_pw_aff::union_add(mpa2);
33333 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33336 template <typename Domain2, typename Range2, typename Range>
33337 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const
33339 auto res = isl::multi_pw_aff::union_add(mupa2);
33340 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
33343 template <typename Domain2, typename Range2, typename Range>
33344 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::aff<pair<Domain2, Range2>, Range> &mpa2) const
33346 auto res = isl::multi_pw_aff::union_add(mpa2);
33347 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33350 template <typename Domain2, typename Range2, typename Range>
33351 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &mpa2) const
33353 auto res = isl::multi_pw_aff::union_add(mpa2);
33354 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33357 template <typename Domain2, typename Range2, typename Range>
33358 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
33360 auto res = isl::multi_pw_aff::union_add(mpa2);
33361 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33364 template <typename Domain2, typename Range2, typename Range>
33365 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::multi_pw_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &mpa2) const
33367 auto res = isl::multi_pw_aff::union_add(mpa2);
33368 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
33371 template <typename Domain>
33372 typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const typed::multi_pw_aff<Domain> &mpa)
33373 : isl::multi_union_pw_aff(mpa)
33377 template <typename Domain>
33378 typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const typed::union_pw_aff<Domain> &upa)
33379 : isl::multi_union_pw_aff(upa)
33383 template <typename Domain>
33384 typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const typed::space<Domain> &space, const typed::union_pw_aff_list<Anonymous> &list)
33385 : isl::multi_union_pw_aff(space, list)
33389 template <typename Domain>
33390 typed::multi_union_pw_aff<Domain>::multi_union_pw_aff(const isl::ctx &ctx, const std::string &str)
33391 : isl::multi_union_pw_aff(ctx, str)
33395 template <typename Domain>
33396 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
33398 auto res = isl::multi_union_pw_aff::add(multi2);
33399 return typed::multi_union_pw_aff<Domain>(res);
33402 template <typename Domain>
33403 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
33405 auto res = isl::multi_union_pw_aff::add(multi2);
33406 return typed::multi_union_pw_aff<Domain>(res);
33409 template <typename Domain>
33410 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::add(const typed::union_pw_aff<Domain> &multi2) const
33412 auto res = isl::multi_union_pw_aff::add(multi2);
33413 return typed::multi_union_pw_aff<Domain>(res);
33416 template <typename Domain>
33417 typed::union_pw_aff<Anonymous> typed::multi_union_pw_aff<Domain>::at(int pos) const
33419 auto res = isl::multi_union_pw_aff::at(pos);
33420 return typed::union_pw_aff<Anonymous>(res);
33423 template <typename Domain>
33424 typed::union_set<> typed::multi_union_pw_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
33426 auto res = isl::multi_union_pw_aff::bind(tuple);
33427 return typed::union_set<>(res);
33430 template <typename Domain>
33431 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::coalesce() const
33433 auto res = isl::multi_union_pw_aff::coalesce();
33434 return typed::multi_union_pw_aff<Domain>(res);
33437 template <typename Domain>
33438 typed::union_set<> typed::multi_union_pw_aff<Domain>::domain() const
33440 auto res = isl::multi_union_pw_aff::domain();
33441 return typed::union_set<>(res);
33444 template <typename Domain>
33445 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::union_set<> &context) const
33447 auto res = isl::multi_union_pw_aff::gist(context);
33448 return typed::multi_union_pw_aff<Domain>(res);
33451 template <typename Domain>
33452 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::basic_set<> &context) const
33454 auto res = isl::multi_union_pw_aff::gist(context);
33455 return typed::multi_union_pw_aff<Domain>(res);
33458 template <typename Domain>
33459 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::point<> &context) const
33461 auto res = isl::multi_union_pw_aff::gist(context);
33462 return typed::multi_union_pw_aff<Domain>(res);
33465 template <typename Domain>
33466 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist(const typed::set<> &context) const
33468 auto res = isl::multi_union_pw_aff::gist(context);
33469 return typed::multi_union_pw_aff<Domain>(res);
33472 template <typename Domain>
33473 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist_params(const typed::set<> &context) const
33475 auto res = isl::multi_union_pw_aff::gist_params(context);
33476 return typed::multi_union_pw_aff<Domain>(res);
33479 template <typename Domain>
33480 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist_params(const typed::basic_set<> &context) const
33482 auto res = isl::multi_union_pw_aff::gist_params(context);
33483 return typed::multi_union_pw_aff<Domain>(res);
33486 template <typename Domain>
33487 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::gist_params(const typed::point<> &context) const
33489 auto res = isl::multi_union_pw_aff::gist_params(context);
33490 return typed::multi_union_pw_aff<Domain>(res);
33493 template <typename Domain>
33494 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::intersect_params(const typed::set<> &params) const
33496 auto res = isl::multi_union_pw_aff::intersect_params(params);
33497 return typed::multi_union_pw_aff<Domain>(res);
33500 template <typename Domain>
33501 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::intersect_params(const typed::basic_set<> &params) const
33503 auto res = isl::multi_union_pw_aff::intersect_params(params);
33504 return typed::multi_union_pw_aff<Domain>(res);
33507 template <typename Domain>
33508 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::intersect_params(const typed::point<> &params) const
33510 auto res = isl::multi_union_pw_aff::intersect_params(params);
33511 return typed::multi_union_pw_aff<Domain>(res);
33514 template <typename Domain>
33515 typed::union_pw_aff_list<Anonymous> typed::multi_union_pw_aff<Domain>::list() const
33517 auto res = isl::multi_union_pw_aff::list();
33518 return typed::union_pw_aff_list<Anonymous>(res);
33521 template <typename Domain>
33522 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::neg() const
33524 auto res = isl::multi_union_pw_aff::neg();
33525 return typed::multi_union_pw_aff<Domain>(res);
33528 template <typename Domain>
33529 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
33531 auto res = isl::multi_union_pw_aff::scale(mv);
33532 return typed::multi_union_pw_aff<Domain>(res);
33535 template <typename Domain>
33536 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale(const typed::val<Domain> &v) const
33538 auto res = isl::multi_union_pw_aff::scale(v);
33539 return typed::multi_union_pw_aff<Domain>(res);
33542 template <typename Domain>
33543 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale(long v) const
33545 auto res = isl::multi_union_pw_aff::scale(v);
33546 return typed::multi_union_pw_aff<Domain>(res);
33549 template <typename Domain>
33550 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
33552 auto res = isl::multi_union_pw_aff::scale_down(mv);
33553 return typed::multi_union_pw_aff<Domain>(res);
33556 template <typename Domain>
33557 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale_down(const typed::val<Domain> &v) const
33559 auto res = isl::multi_union_pw_aff::scale_down(v);
33560 return typed::multi_union_pw_aff<Domain>(res);
33563 template <typename Domain>
33564 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::scale_down(long v) const
33566 auto res = isl::multi_union_pw_aff::scale_down(v);
33567 return typed::multi_union_pw_aff<Domain>(res);
33570 template <typename Domain>
33571 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
33573 auto res = isl::multi_union_pw_aff::set_at(pos, el);
33574 return typed::multi_union_pw_aff<Domain>(res);
33577 template <typename Domain>
33578 template <typename Domain2>
33579 typed::multi_union_pw_aff<Domain2> typed::multi_union_pw_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
33581 auto res = isl::multi_union_pw_aff::set_range_tuple(id);
33582 return typed::multi_union_pw_aff<Domain2>(res);
33585 template <typename Domain>
33586 template <typename Domain2>
33587 typed::multi_union_pw_aff<Domain2> typed::multi_union_pw_aff<Domain>::set_range_tuple(const std::string &id) const
33589 auto res = isl::multi_union_pw_aff::set_range_tuple(id);
33590 return typed::multi_union_pw_aff<Domain2>(res);
33593 template <typename Domain>
33594 typed::space<Domain> typed::multi_union_pw_aff<Domain>::space() const
33596 auto res = isl::multi_union_pw_aff::space();
33597 return typed::space<Domain>(res);
33600 template <typename Domain>
33601 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
33603 auto res = isl::multi_union_pw_aff::sub(multi2);
33604 return typed::multi_union_pw_aff<Domain>(res);
33607 template <typename Domain>
33608 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
33610 auto res = isl::multi_union_pw_aff::sub(multi2);
33611 return typed::multi_union_pw_aff<Domain>(res);
33614 template <typename Domain>
33615 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::sub(const typed::union_pw_aff<Domain> &multi2) const
33617 auto res = isl::multi_union_pw_aff::sub(multi2);
33618 return typed::multi_union_pw_aff<Domain>(res);
33621 template <typename Domain>
33622 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
33624 auto res = isl::multi_union_pw_aff::union_add(mupa2);
33625 return typed::multi_union_pw_aff<Domain>(res);
33628 template <typename Domain>
33629 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mupa2) const
33631 auto res = isl::multi_union_pw_aff::union_add(mupa2);
33632 return typed::multi_union_pw_aff<Domain>(res);
33635 template <typename Domain>
33636 typed::multi_union_pw_aff<Domain> typed::multi_union_pw_aff<Domain>::union_add(const typed::union_pw_aff<Domain> &mupa2) const
33638 auto res = isl::multi_union_pw_aff::union_add(mupa2);
33639 return typed::multi_union_pw_aff<Domain>(res);
33642 template <typename Domain, typename Range>
33643 typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const typed::multi_pw_aff<Domain, Range> &mpa)
33644 : isl::multi_union_pw_aff(mpa)
33648 template <typename Domain, typename Range>
33649 typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const typed::union_pw_aff<Domain, Range> &upa)
33650 : isl::multi_union_pw_aff(upa)
33654 template <typename Domain, typename Range>
33655 typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const typed::space<Domain, Range> &space, const typed::union_pw_aff_list<Domain, Anonymous> &list)
33656 : isl::multi_union_pw_aff(space, list)
33660 template <typename Domain, typename Range>
33661 typed::multi_union_pw_aff<Domain, Range>::multi_union_pw_aff(const isl::ctx &ctx, const std::string &str)
33662 : isl::multi_union_pw_aff(ctx, str)
33666 template <typename Domain, typename Range>
33667 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
33669 auto res = isl::multi_union_pw_aff::add(multi2);
33670 return typed::multi_union_pw_aff<Domain, Range>(res);
33673 template <typename Domain, typename Range>
33674 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
33676 auto res = isl::multi_union_pw_aff::add(multi2);
33677 return typed::multi_union_pw_aff<Domain, Range>(res);
33680 template <typename Domain, typename Range>
33681 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::add(const typed::union_pw_aff<Domain, Range> &multi2) const
33683 auto res = isl::multi_union_pw_aff::add(multi2);
33684 return typed::multi_union_pw_aff<Domain, Range>(res);
33687 template <typename Domain, typename Range>
33688 typed::union_pw_aff<Domain, Anonymous> typed::multi_union_pw_aff<Domain, Range>::at(int pos) const
33690 auto res = isl::multi_union_pw_aff::at(pos);
33691 return typed::union_pw_aff<Domain, Anonymous>(res);
33694 template <typename Domain, typename Range>
33695 typed::union_set<Domain> typed::multi_union_pw_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
33697 auto res = isl::multi_union_pw_aff::bind(tuple);
33698 return typed::union_set<Domain>(res);
33701 template <typename Domain, typename Range>
33702 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::coalesce() const
33704 auto res = isl::multi_union_pw_aff::coalesce();
33705 return typed::multi_union_pw_aff<Domain, Range>(res);
33708 template <typename Domain, typename Range>
33709 typed::union_set<Domain> typed::multi_union_pw_aff<Domain, Range>::domain() const
33711 auto res = isl::multi_union_pw_aff::domain();
33712 return typed::union_set<Domain>(res);
33715 template <typename Domain, typename Range>
33716 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
33718 auto res = isl::multi_union_pw_aff::gist(context);
33719 return typed::multi_union_pw_aff<Domain, Range>(res);
33722 template <typename Domain, typename Range>
33723 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::basic_set<Domain> &context) const
33725 auto res = isl::multi_union_pw_aff::gist(context);
33726 return typed::multi_union_pw_aff<Domain, Range>(res);
33729 template <typename Domain, typename Range>
33730 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::point<Domain> &context) const
33732 auto res = isl::multi_union_pw_aff::gist(context);
33733 return typed::multi_union_pw_aff<Domain, Range>(res);
33736 template <typename Domain, typename Range>
33737 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist(const typed::set<Domain> &context) const
33739 auto res = isl::multi_union_pw_aff::gist(context);
33740 return typed::multi_union_pw_aff<Domain, Range>(res);
33743 template <typename Domain, typename Range>
33744 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist_params(const typed::set<> &context) const
33746 auto res = isl::multi_union_pw_aff::gist_params(context);
33747 return typed::multi_union_pw_aff<Domain, Range>(res);
33750 template <typename Domain, typename Range>
33751 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist_params(const typed::basic_set<> &context) const
33753 auto res = isl::multi_union_pw_aff::gist_params(context);
33754 return typed::multi_union_pw_aff<Domain, Range>(res);
33757 template <typename Domain, typename Range>
33758 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::gist_params(const typed::point<> &context) const
33760 auto res = isl::multi_union_pw_aff::gist_params(context);
33761 return typed::multi_union_pw_aff<Domain, Range>(res);
33764 template <typename Domain, typename Range>
33765 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
33767 auto res = isl::multi_union_pw_aff::intersect_domain(uset);
33768 return typed::multi_union_pw_aff<Domain, Range>(res);
33771 template <typename Domain, typename Range>
33772 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &uset) const
33774 auto res = isl::multi_union_pw_aff::intersect_domain(uset);
33775 return typed::multi_union_pw_aff<Domain, Range>(res);
33778 template <typename Domain, typename Range>
33779 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::point<Domain> &uset) const
33781 auto res = isl::multi_union_pw_aff::intersect_domain(uset);
33782 return typed::multi_union_pw_aff<Domain, Range>(res);
33785 template <typename Domain, typename Range>
33786 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &uset) const
33788 auto res = isl::multi_union_pw_aff::intersect_domain(uset);
33789 return typed::multi_union_pw_aff<Domain, Range>(res);
33792 template <typename Domain, typename Range>
33793 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_params(const typed::set<> &params) const
33795 auto res = isl::multi_union_pw_aff::intersect_params(params);
33796 return typed::multi_union_pw_aff<Domain, Range>(res);
33799 template <typename Domain, typename Range>
33800 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_params(const typed::basic_set<> &params) const
33802 auto res = isl::multi_union_pw_aff::intersect_params(params);
33803 return typed::multi_union_pw_aff<Domain, Range>(res);
33806 template <typename Domain, typename Range>
33807 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::intersect_params(const typed::point<> &params) const
33809 auto res = isl::multi_union_pw_aff::intersect_params(params);
33810 return typed::multi_union_pw_aff<Domain, Range>(res);
33813 template <typename Domain, typename Range>
33814 typed::union_pw_aff_list<Domain, Anonymous> typed::multi_union_pw_aff<Domain, Range>::list() const
33816 auto res = isl::multi_union_pw_aff::list();
33817 return typed::union_pw_aff_list<Domain, Anonymous>(res);
33820 template <typename Domain, typename Range>
33821 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::neg() const
33823 auto res = isl::multi_union_pw_aff::neg();
33824 return typed::multi_union_pw_aff<Domain, Range>(res);
33827 template <typename Domain, typename Range>
33828 template <typename Domain2>
33829 typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
33831 auto res = isl::multi_union_pw_aff::pullback(upma);
33832 return typed::multi_union_pw_aff<Domain2, Range>(res);
33835 template <typename Domain, typename Range>
33836 typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
33838 auto res = isl::multi_union_pw_aff::pullback(upma);
33839 return typed::multi_union_pw_aff<Range>(res);
33842 template <typename Domain, typename Range>
33843 template <typename Domain2>
33844 typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &upma) const
33846 auto res = isl::multi_union_pw_aff::pullback(upma);
33847 return typed::multi_union_pw_aff<Domain2, Range>(res);
33850 template <typename Domain, typename Range>
33851 typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &upma) const
33853 auto res = isl::multi_union_pw_aff::pullback(upma);
33854 return typed::multi_union_pw_aff<Range>(res);
33857 template <typename Domain, typename Range>
33858 template <typename Domain2>
33859 typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const
33861 auto res = isl::multi_union_pw_aff::pullback(upma);
33862 return typed::multi_union_pw_aff<Domain2, Range>(res);
33865 template <typename Domain, typename Range>
33866 typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &upma) const
33868 auto res = isl::multi_union_pw_aff::pullback(upma);
33869 return typed::multi_union_pw_aff<Range>(res);
33872 template <typename Domain, typename Range>
33873 template <typename Domain2>
33874 typed::multi_union_pw_aff<Domain2, Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const
33876 auto res = isl::multi_union_pw_aff::pullback(upma);
33877 return typed::multi_union_pw_aff<Domain2, Range>(res);
33880 template <typename Domain, typename Range>
33881 typed::multi_union_pw_aff<Range> typed::multi_union_pw_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain> &upma) const
33883 auto res = isl::multi_union_pw_aff::pullback(upma);
33884 return typed::multi_union_pw_aff<Range>(res);
33887 template <typename Domain, typename Range>
33888 template <typename Range2>
33889 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_union_pw_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
33891 auto res = isl::multi_union_pw_aff::range_product(multi2);
33892 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
33895 template <typename Domain, typename Range>
33896 template <typename Range2>
33897 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::multi_union_pw_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
33899 auto res = isl::multi_union_pw_aff::range_product(multi2);
33900 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
33903 template <typename Domain, typename Range>
33904 typed::multi_union_pw_aff<Domain, pair<Range, Anonymous>> typed::multi_union_pw_aff<Domain, Range>::range_product(const typed::union_pw_aff<Domain, Anonymous> &multi2) const
33906 auto res = isl::multi_union_pw_aff::range_product(multi2);
33907 return typed::multi_union_pw_aff<Domain, pair<Range, Anonymous>>(res);
33910 template <typename Domain, typename Range>
33911 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
33913 auto res = isl::multi_union_pw_aff::scale(mv);
33914 return typed::multi_union_pw_aff<Domain, Range>(res);
33917 template <typename Domain, typename Range>
33918 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale(const typed::val<Range> &v) const
33920 auto res = isl::multi_union_pw_aff::scale(v);
33921 return typed::multi_union_pw_aff<Domain, Range>(res);
33924 template <typename Domain, typename Range>
33925 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale(long v) const
33927 auto res = isl::multi_union_pw_aff::scale(v);
33928 return typed::multi_union_pw_aff<Domain, Range>(res);
33931 template <typename Domain, typename Range>
33932 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
33934 auto res = isl::multi_union_pw_aff::scale_down(mv);
33935 return typed::multi_union_pw_aff<Domain, Range>(res);
33938 template <typename Domain, typename Range>
33939 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
33941 auto res = isl::multi_union_pw_aff::scale_down(v);
33942 return typed::multi_union_pw_aff<Domain, Range>(res);
33945 template <typename Domain, typename Range>
33946 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::scale_down(long v) const
33948 auto res = isl::multi_union_pw_aff::scale_down(v);
33949 return typed::multi_union_pw_aff<Domain, Range>(res);
33952 template <typename Domain, typename Range>
33953 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
33955 auto res = isl::multi_union_pw_aff::set_at(pos, el);
33956 return typed::multi_union_pw_aff<Domain, Range>(res);
33959 template <typename Domain, typename Range>
33960 template <typename Range2>
33961 typed::multi_union_pw_aff<Domain, Range2> typed::multi_union_pw_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
33963 auto res = isl::multi_union_pw_aff::set_range_tuple(id);
33964 return typed::multi_union_pw_aff<Domain, Range2>(res);
33967 template <typename Domain, typename Range>
33968 template <typename Range2>
33969 typed::multi_union_pw_aff<Domain, Range2> typed::multi_union_pw_aff<Domain, Range>::set_range_tuple(const std::string &id) const
33971 auto res = isl::multi_union_pw_aff::set_range_tuple(id);
33972 return typed::multi_union_pw_aff<Domain, Range2>(res);
33975 template <typename Domain, typename Range>
33976 typed::space<Range> typed::multi_union_pw_aff<Domain, Range>::space() const
33978 auto res = isl::multi_union_pw_aff::space();
33979 return typed::space<Range>(res);
33982 template <typename Domain, typename Range>
33983 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
33985 auto res = isl::multi_union_pw_aff::sub(multi2);
33986 return typed::multi_union_pw_aff<Domain, Range>(res);
33989 template <typename Domain, typename Range>
33990 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
33992 auto res = isl::multi_union_pw_aff::sub(multi2);
33993 return typed::multi_union_pw_aff<Domain, Range>(res);
33996 template <typename Domain, typename Range>
33997 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::sub(const typed::union_pw_aff<Domain, Range> &multi2) const
33999 auto res = isl::multi_union_pw_aff::sub(multi2);
34000 return typed::multi_union_pw_aff<Domain, Range>(res);
34003 template <typename Domain, typename Range>
34004 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
34006 auto res = isl::multi_union_pw_aff::union_add(mupa2);
34007 return typed::multi_union_pw_aff<Domain, Range>(res);
34010 template <typename Domain, typename Range>
34011 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mupa2) const
34013 auto res = isl::multi_union_pw_aff::union_add(mupa2);
34014 return typed::multi_union_pw_aff<Domain, Range>(res);
34017 template <typename Domain, typename Range>
34018 typed::multi_union_pw_aff<Domain, Range> typed::multi_union_pw_aff<Domain, Range>::union_add(const typed::union_pw_aff<Domain, Range> &mupa2) const
34020 auto res = isl::multi_union_pw_aff::union_add(mupa2);
34021 return typed::multi_union_pw_aff<Domain, Range>(res);
34024 template <typename Domain>
34025 typed::multi_val<Domain>::multi_val(const typed::space<Domain> &space, const typed::val_list<Anonymous> &list)
34026 : isl::multi_val(space, list)
34030 template <typename Domain>
34031 typed::multi_val<Domain>::multi_val(const isl::ctx &ctx, const std::string &str)
34032 : isl::multi_val(ctx, str)
34036 template <typename Domain>
34037 typed::multi_val<Domain> typed::multi_val<Domain>::add(const typed::multi_val<Domain> &multi2) const
34039 auto res = isl::multi_val::add(multi2);
34040 return typed::multi_val<Domain>(res);
34043 template <typename Domain>
34044 typed::multi_val<Domain> typed::multi_val<Domain>::add(const typed::val<Domain> &v) const
34046 auto res = isl::multi_val::add(v);
34047 return typed::multi_val<Domain>(res);
34050 template <typename Domain>
34051 typed::multi_val<Domain> typed::multi_val<Domain>::add(long v) const
34053 auto res = isl::multi_val::add(v);
34054 return typed::multi_val<Domain>(res);
34057 template <typename Domain>
34058 typed::val<Anonymous> typed::multi_val<Domain>::at(int pos) const
34060 auto res = isl::multi_val::at(pos);
34061 return typed::val<Anonymous>(res);
34064 template <typename Domain>
34065 typed::val_list<Anonymous> typed::multi_val<Domain>::list() const
34067 auto res = isl::multi_val::list();
34068 return typed::val_list<Anonymous>(res);
34071 template <typename Domain>
34072 typed::multi_val<Domain> typed::multi_val<Domain>::max(const typed::multi_val<Domain> &multi2) const
34074 auto res = isl::multi_val::max(multi2);
34075 return typed::multi_val<Domain>(res);
34078 template <typename Domain>
34079 typed::multi_val<Domain> typed::multi_val<Domain>::min(const typed::multi_val<Domain> &multi2) const
34081 auto res = isl::multi_val::min(multi2);
34082 return typed::multi_val<Domain>(res);
34085 template <typename Domain>
34086 typed::multi_val<Domain> typed::multi_val<Domain>::neg() const
34088 auto res = isl::multi_val::neg();
34089 return typed::multi_val<Domain>(res);
34092 template <typename Domain>
34093 template <typename Range>
34094 typed::multi_val<pair<Domain, Range>> typed::multi_val<Domain>::product(const typed::multi_val<Range> &multi2) const
34096 auto res = isl::multi_val::product(multi2);
34097 return typed::multi_val<pair<Domain, Range>>(res);
34100 template <typename Domain>
34101 typed::multi_val<Domain> typed::multi_val<Domain>::scale(const typed::multi_val<Domain> &mv) const
34103 auto res = isl::multi_val::scale(mv);
34104 return typed::multi_val<Domain>(res);
34107 template <typename Domain>
34108 typed::multi_val<Domain> typed::multi_val<Domain>::scale(const typed::val<Domain> &v) const
34110 auto res = isl::multi_val::scale(v);
34111 return typed::multi_val<Domain>(res);
34114 template <typename Domain>
34115 typed::multi_val<Domain> typed::multi_val<Domain>::scale(long v) const
34117 auto res = isl::multi_val::scale(v);
34118 return typed::multi_val<Domain>(res);
34121 template <typename Domain>
34122 typed::multi_val<Domain> typed::multi_val<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
34124 auto res = isl::multi_val::scale_down(mv);
34125 return typed::multi_val<Domain>(res);
34128 template <typename Domain>
34129 typed::multi_val<Domain> typed::multi_val<Domain>::scale_down(const typed::val<Domain> &v) const
34131 auto res = isl::multi_val::scale_down(v);
34132 return typed::multi_val<Domain>(res);
34135 template <typename Domain>
34136 typed::multi_val<Domain> typed::multi_val<Domain>::scale_down(long v) const
34138 auto res = isl::multi_val::scale_down(v);
34139 return typed::multi_val<Domain>(res);
34142 template <typename Domain>
34143 typed::multi_val<Domain> typed::multi_val<Domain>::set_at(int pos, const typed::val<Anonymous> &el) const
34145 auto res = isl::multi_val::set_at(pos, el);
34146 return typed::multi_val<Domain>(res);
34149 template <typename Domain>
34150 typed::multi_val<Domain> typed::multi_val<Domain>::set_at(int pos, long el) const
34152 auto res = isl::multi_val::set_at(pos, el);
34153 return typed::multi_val<Domain>(res);
34156 template <typename Domain>
34157 template <typename Domain2>
34158 typed::multi_val<Domain2> typed::multi_val<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
34160 auto res = isl::multi_val::set_range_tuple(id);
34161 return typed::multi_val<Domain2>(res);
34164 template <typename Domain>
34165 template <typename Domain2>
34166 typed::multi_val<Domain2> typed::multi_val<Domain>::set_range_tuple(const std::string &id) const
34168 auto res = isl::multi_val::set_range_tuple(id);
34169 return typed::multi_val<Domain2>(res);
34172 template <typename Domain>
34173 typed::space<Domain> typed::multi_val<Domain>::space() const
34175 auto res = isl::multi_val::space();
34176 return typed::space<Domain>(res);
34179 template <typename Domain>
34180 typed::multi_val<Domain> typed::multi_val<Domain>::sub(const typed::multi_val<Domain> &multi2) const
34182 auto res = isl::multi_val::sub(multi2);
34183 return typed::multi_val<Domain>(res);
34186 typed::set<> typed::point<>::coalesce() const
34188 auto res = isl::point::coalesce();
34189 return typed::set<>(res);
34192 typed::basic_set<> typed::point<>::detect_equalities() const
34194 auto res = isl::point::detect_equalities();
34195 return typed::basic_set<>(res);
34198 typed::set<> typed::point<>::drop_unused_params() const
34200 auto res = isl::point::drop_unused_params();
34201 return typed::set<>(res);
34204 bool typed::point<>::every_set(const std::function<bool(typed::set<>)> &test) const
34206 auto lambda_test = [&] (isl::set arg0) {
34207 return test(typed::set<>(arg0));
34209 return isl::point::every_set(lambda_test);
34212 typed::set<> typed::point<>::extract_set(const typed::space<> &space) const
34214 auto res = isl::point::extract_set(space);
34215 return typed::set<>(res);
34218 void typed::point<>::foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const
34220 auto lambda_fn = [&] (isl::basic_set arg0) {
34221 return fn(typed::basic_set<>(arg0));
34223 return isl::point::foreach_basic_set(lambda_fn);
34226 void typed::point<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
34228 auto lambda_fn = [&] (isl::point arg0) {
34229 return fn(typed::point<>(arg0));
34231 return isl::point::foreach_point(lambda_fn);
34234 void typed::point<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
34236 auto lambda_fn = [&] (isl::set arg0) {
34237 return fn(typed::set<>(arg0));
34239 return isl::point::foreach_set(lambda_fn);
34242 typed::basic_set<> typed::point<>::gist(const typed::basic_set<> &context) const
34244 auto res = isl::point::gist(context);
34245 return typed::basic_set<>(res);
34248 typed::set<> typed::point<>::gist(const typed::set<> &context) const
34250 auto res = isl::point::gist(context);
34251 return typed::set<>(res);
34254 typed::union_set<> typed::point<>::gist(const typed::union_set<> &context) const
34256 auto res = isl::point::gist(context);
34257 return typed::union_set<>(res);
34260 typed::pw_aff<Anonymous> typed::point<>::indicator_function() const
34262 auto res = isl::point::indicator_function();
34263 return typed::pw_aff<Anonymous>(res);
34266 typed::basic_set<> typed::point<>::intersect(const typed::basic_set<> &bset2) const
34268 auto res = isl::point::intersect(bset2);
34269 return typed::basic_set<>(res);
34272 typed::set<> typed::point<>::intersect(const typed::set<> &set2) const
34274 auto res = isl::point::intersect(set2);
34275 return typed::set<>(res);
34278 typed::union_set<> typed::point<>::intersect(const typed::union_set<> &uset2) const
34280 auto res = isl::point::intersect(uset2);
34281 return typed::union_set<>(res);
34284 typed::pw_aff<Anonymous> typed::point<>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
34286 auto res = isl::point::param_pw_aff_on_domain(id);
34287 return typed::pw_aff<Anonymous>(res);
34290 typed::pw_aff<Anonymous> typed::point<>::param_pw_aff_on_domain(const std::string &id) const
34292 auto res = isl::point::param_pw_aff_on_domain(id);
34293 return typed::pw_aff<Anonymous>(res);
34296 typed::set<> typed::point<>::project_out_all_params() const
34298 auto res = isl::point::project_out_all_params();
34299 return typed::set<>(res);
34302 typed::set<> typed::point<>::project_out_param(const typed::id<Anonymous> &id) const
34304 auto res = isl::point::project_out_param(id);
34305 return typed::set<>(res);
34308 typed::set<> typed::point<>::project_out_param(const std::string &id) const
34310 auto res = isl::point::project_out_param(id);
34311 return typed::set<>(res);
34314 typed::set<> typed::point<>::project_out_param(const typed::id_list<Anonymous> &list) const
34316 auto res = isl::point::project_out_param(list);
34317 return typed::set<>(res);
34320 typed::pw_aff<Anonymous> typed::point<>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
34322 auto res = isl::point::pw_aff_on_domain(v);
34323 return typed::pw_aff<Anonymous>(res);
34326 typed::pw_aff<Anonymous> typed::point<>::pw_aff_on_domain(long v) const
34328 auto res = isl::point::pw_aff_on_domain(v);
34329 return typed::pw_aff<Anonymous>(res);
34332 template <typename Domain>
34333 typed::pw_multi_aff<Domain> typed::point<>::pw_multi_aff_on_domain(const typed::multi_val<Domain> &mv) const
34335 auto res = isl::point::pw_multi_aff_on_domain(mv);
34336 return typed::pw_multi_aff<Domain>(res);
34339 typed::set_list<> typed::point<>::set_list() const
34341 auto res = isl::point::set_list();
34342 return typed::set_list<>(res);
34345 typed::space<> typed::point<>::space() const
34347 auto res = isl::point::space();
34348 return typed::space<>(res);
34351 typed::set<> typed::point<>::subtract(const typed::set<> &set2) const
34353 auto res = isl::point::subtract(set2);
34354 return typed::set<>(res);
34357 typed::union_set<> typed::point<>::subtract(const typed::union_set<> &uset2) const
34359 auto res = isl::point::subtract(uset2);
34360 return typed::union_set<>(res);
34363 typed::set<> typed::point<>::to_set() const
34365 auto res = isl::point::to_set();
34366 return typed::set<>(res);
34369 typed::union_set<> typed::point<>::to_union_set() const
34371 auto res = isl::point::to_union_set();
34372 return typed::union_set<>(res);
34375 template <typename Domain>
34376 typed::set<Domain> typed::point<>::unbind_params(const typed::multi_id<Domain> &tuple) const
34378 auto res = isl::point::unbind_params(tuple);
34379 return typed::set<Domain>(res);
34382 typed::set<> typed::point<>::unite(const typed::basic_set<> &bset2) const
34384 auto res = isl::point::unite(bset2);
34385 return typed::set<>(res);
34388 typed::set<> typed::point<>::unite(const typed::set<> &set2) const
34390 auto res = isl::point::unite(set2);
34391 return typed::set<>(res);
34394 typed::union_set<> typed::point<>::unite(const typed::union_set<> &uset2) const
34396 auto res = isl::point::unite(uset2);
34397 return typed::union_set<>(res);
34400 template <typename Domain>
34401 template <typename Range>
34402 typed::basic_set<Range> typed::point<Domain>::apply(const typed::basic_map<Domain, Range> &bmap) const
34404 auto res = isl::point::apply(bmap);
34405 return typed::basic_set<Range>(res);
34408 template <typename Domain>
34409 template <typename Range>
34410 typed::set<Range> typed::point<Domain>::apply(const typed::map<Domain, Range> &map) const
34412 auto res = isl::point::apply(map);
34413 return typed::set<Range>(res);
34416 template <typename Domain>
34417 template <typename Range>
34418 typed::union_set<Range> typed::point<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
34420 auto res = isl::point::apply(umap);
34421 return typed::union_set<Range>(res);
34424 template <typename Domain>
34425 typed::pw_multi_aff<Domain> typed::point<Domain>::as_pw_multi_aff() const
34427 auto res = isl::point::as_pw_multi_aff();
34428 return typed::pw_multi_aff<Domain>(res);
34431 template <typename Domain>
34432 typed::set<Domain> typed::point<Domain>::as_set() const
34434 auto res = isl::point::as_set();
34435 return typed::set<Domain>(res);
34438 template <typename Domain>
34439 typed::set<> typed::point<Domain>::bind(const typed::multi_id<Domain> &tuple) const
34441 auto res = isl::point::bind(tuple);
34442 return typed::set<>(res);
34445 template <typename Domain>
34446 typed::set<Domain> typed::point<Domain>::coalesce() const
34448 auto res = isl::point::coalesce();
34449 return typed::set<Domain>(res);
34452 template <typename Domain>
34453 typed::basic_set<Domain> typed::point<Domain>::detect_equalities() const
34455 auto res = isl::point::detect_equalities();
34456 return typed::basic_set<Domain>(res);
34459 template <typename Domain>
34460 typed::set<Domain> typed::point<Domain>::drop_unused_params() const
34462 auto res = isl::point::drop_unused_params();
34463 return typed::set<Domain>(res);
34466 template <typename Domain>
34467 bool typed::point<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
34469 auto lambda_test = [&] (isl::set arg0) {
34470 return test(typed::set<Domain>(arg0));
34472 return isl::point::every_set(lambda_test);
34475 template <typename Domain>
34476 typed::set<Domain> typed::point<Domain>::extract_set(const typed::space<Domain> &space) const
34478 auto res = isl::point::extract_set(space);
34479 return typed::set<Domain>(res);
34482 template <typename Domain>
34483 void typed::point<Domain>::foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const
34485 auto lambda_fn = [&] (isl::basic_set arg0) {
34486 return fn(typed::basic_set<Domain>(arg0));
34488 return isl::point::foreach_basic_set(lambda_fn);
34491 template <typename Domain>
34492 void typed::point<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
34494 auto lambda_fn = [&] (isl::point arg0) {
34495 return fn(typed::point<Domain>(arg0));
34497 return isl::point::foreach_point(lambda_fn);
34500 template <typename Domain>
34501 void typed::point<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
34503 auto lambda_fn = [&] (isl::set arg0) {
34504 return fn(typed::set<Domain>(arg0));
34506 return isl::point::foreach_set(lambda_fn);
34509 template <typename Domain>
34510 typed::basic_set<Domain> typed::point<Domain>::gist(const typed::basic_set<Domain> &context) const
34512 auto res = isl::point::gist(context);
34513 return typed::basic_set<Domain>(res);
34516 template <typename Domain>
34517 typed::set<Domain> typed::point<Domain>::gist(const typed::set<Domain> &context) const
34519 auto res = isl::point::gist(context);
34520 return typed::set<Domain>(res);
34523 template <typename Domain>
34524 typed::union_set<Domain> typed::point<Domain>::gist(const typed::union_set<Domain> &context) const
34526 auto res = isl::point::gist(context);
34527 return typed::union_set<Domain>(res);
34530 template <typename Domain>
34531 typed::set<Domain> typed::point<Domain>::gist_params(const typed::set<> &context) const
34533 auto res = isl::point::gist_params(context);
34534 return typed::set<Domain>(res);
34537 template <typename Domain>
34538 typed::map<Domain, Domain> typed::point<Domain>::identity() const
34540 auto res = isl::point::identity();
34541 return typed::map<Domain, Domain>(res);
34544 template <typename Domain>
34545 typed::pw_aff<Domain, Anonymous> typed::point<Domain>::indicator_function() const
34547 auto res = isl::point::indicator_function();
34548 return typed::pw_aff<Domain, Anonymous>(res);
34551 template <typename Domain>
34552 template <typename Arg1>
34553 typed::map<Arg1, Domain> typed::point<Domain>::insert_domain(const typed::space<Arg1> &domain) const
34555 auto res = isl::point::insert_domain(domain);
34556 return typed::map<Arg1, Domain>(res);
34559 template <typename Domain>
34560 typed::basic_set<Domain> typed::point<Domain>::intersect(const typed::basic_set<Domain> &bset2) const
34562 auto res = isl::point::intersect(bset2);
34563 return typed::basic_set<Domain>(res);
34566 template <typename Domain>
34567 typed::set<Domain> typed::point<Domain>::intersect(const typed::set<Domain> &set2) const
34569 auto res = isl::point::intersect(set2);
34570 return typed::set<Domain>(res);
34573 template <typename Domain>
34574 typed::union_set<Domain> typed::point<Domain>::intersect(const typed::union_set<Domain> &uset2) const
34576 auto res = isl::point::intersect(uset2);
34577 return typed::union_set<Domain>(res);
34580 template <typename Domain>
34581 typed::basic_set<Domain> typed::point<Domain>::intersect_params(const typed::basic_set<> &bset2) const
34583 auto res = isl::point::intersect_params(bset2);
34584 return typed::basic_set<Domain>(res);
34587 template <typename Domain>
34588 typed::set<Domain> typed::point<Domain>::intersect_params(const typed::set<> &params) const
34590 auto res = isl::point::intersect_params(params);
34591 return typed::set<Domain>(res);
34594 template <typename Domain>
34595 typed::fixed_box<Domain> typed::point<Domain>::lattice_tile() const
34597 auto res = isl::point::lattice_tile();
34598 return typed::fixed_box<Domain>(res);
34601 template <typename Domain>
34602 typed::set<Domain> typed::point<Domain>::lexmax() const
34604 auto res = isl::point::lexmax();
34605 return typed::set<Domain>(res);
34608 template <typename Domain>
34609 typed::pw_multi_aff<Domain> typed::point<Domain>::lexmax_pw_multi_aff() const
34611 auto res = isl::point::lexmax_pw_multi_aff();
34612 return typed::pw_multi_aff<Domain>(res);
34615 template <typename Domain>
34616 typed::set<Domain> typed::point<Domain>::lexmin() const
34618 auto res = isl::point::lexmin();
34619 return typed::set<Domain>(res);
34622 template <typename Domain>
34623 typed::pw_multi_aff<Domain> typed::point<Domain>::lexmin_pw_multi_aff() const
34625 auto res = isl::point::lexmin_pw_multi_aff();
34626 return typed::pw_multi_aff<Domain>(res);
34629 template <typename Domain>
34630 typed::set<Domain> typed::point<Domain>::lower_bound(const typed::multi_pw_aff<Domain> &lower) const
34632 auto res = isl::point::lower_bound(lower);
34633 return typed::set<Domain>(res);
34636 template <typename Domain>
34637 typed::set<Domain> typed::point<Domain>::lower_bound(const typed::multi_val<Domain> &lower) const
34639 auto res = isl::point::lower_bound(lower);
34640 return typed::set<Domain>(res);
34643 template <typename Domain>
34644 typed::multi_pw_aff<Domain> typed::point<Domain>::max_multi_pw_aff() const
34646 auto res = isl::point::max_multi_pw_aff();
34647 return typed::multi_pw_aff<Domain>(res);
34650 template <typename Domain>
34651 typed::multi_pw_aff<Domain> typed::point<Domain>::min_multi_pw_aff() const
34653 auto res = isl::point::min_multi_pw_aff();
34654 return typed::multi_pw_aff<Domain>(res);
34657 template <typename Domain>
34658 typed::multi_val<Domain> typed::point<Domain>::multi_val() const
34660 auto res = isl::point::multi_val();
34661 return typed::multi_val<Domain>(res);
34664 template <typename Domain>
34665 typed::pw_aff<Domain, Anonymous> typed::point<Domain>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
34667 auto res = isl::point::param_pw_aff_on_domain(id);
34668 return typed::pw_aff<Domain, Anonymous>(res);
34671 template <typename Domain>
34672 typed::pw_aff<Domain, Anonymous> typed::point<Domain>::param_pw_aff_on_domain(const std::string &id) const
34674 auto res = isl::point::param_pw_aff_on_domain(id);
34675 return typed::pw_aff<Domain, Anonymous>(res);
34678 template <typename Domain>
34679 typed::basic_set<> typed::point<Domain>::params() const
34681 auto res = isl::point::params();
34682 return typed::basic_set<>(res);
34685 template <typename Domain>
34686 typed::multi_val<Domain> typed::point<Domain>::plain_multi_val_if_fixed() const
34688 auto res = isl::point::plain_multi_val_if_fixed();
34689 return typed::multi_val<Domain>(res);
34692 template <typename Domain>
34693 template <typename Domain2>
34694 typed::set<Domain2> typed::point<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
34696 auto res = isl::point::preimage(ma);
34697 return typed::set<Domain2>(res);
34700 template <typename Domain>
34701 template <typename Domain2>
34702 typed::set<Domain2> typed::point<Domain>::preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
34704 auto res = isl::point::preimage(mpa);
34705 return typed::set<Domain2>(res);
34708 template <typename Domain>
34709 template <typename Domain2>
34710 typed::set<Domain2> typed::point<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
34712 auto res = isl::point::preimage(pma);
34713 return typed::set<Domain2>(res);
34716 template <typename Domain>
34717 template <typename Domain2>
34718 typed::union_set<Domain2> typed::point<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
34720 auto res = isl::point::preimage(upma);
34721 return typed::union_set<Domain2>(res);
34724 template <typename Domain>
34725 template <typename Range>
34726 typed::set<pair<Domain, Range>> typed::point<Domain>::product(const typed::set<Range> &set2) const
34728 auto res = isl::point::product(set2);
34729 return typed::set<pair<Domain, Range>>(res);
34732 template <typename Domain>
34733 typed::set<Domain> typed::point<Domain>::project_out_all_params() const
34735 auto res = isl::point::project_out_all_params();
34736 return typed::set<Domain>(res);
34739 template <typename Domain>
34740 typed::set<Domain> typed::point<Domain>::project_out_param(const typed::id<Anonymous> &id) const
34742 auto res = isl::point::project_out_param(id);
34743 return typed::set<Domain>(res);
34746 template <typename Domain>
34747 typed::set<Domain> typed::point<Domain>::project_out_param(const std::string &id) const
34749 auto res = isl::point::project_out_param(id);
34750 return typed::set<Domain>(res);
34753 template <typename Domain>
34754 typed::set<Domain> typed::point<Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
34756 auto res = isl::point::project_out_param(list);
34757 return typed::set<Domain>(res);
34760 template <typename Domain>
34761 typed::pw_aff<Domain, Anonymous> typed::point<Domain>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
34763 auto res = isl::point::pw_aff_on_domain(v);
34764 return typed::pw_aff<Domain, Anonymous>(res);
34767 template <typename Domain>
34768 typed::pw_aff<Domain, Anonymous> typed::point<Domain>::pw_aff_on_domain(long v) const
34770 auto res = isl::point::pw_aff_on_domain(v);
34771 return typed::pw_aff<Domain, Anonymous>(res);
34774 template <typename Domain>
34775 template <typename Range>
34776 typed::pw_multi_aff<Domain, Range> typed::point<Domain>::pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const
34778 auto res = isl::point::pw_multi_aff_on_domain(mv);
34779 return typed::pw_multi_aff<Domain, Range>(res);
34782 template <typename Domain>
34783 typed::set_list<Domain> typed::point<Domain>::set_list() const
34785 auto res = isl::point::set_list();
34786 return typed::set_list<Domain>(res);
34789 template <typename Domain>
34790 typed::fixed_box<Domain> typed::point<Domain>::simple_fixed_box_hull() const
34792 auto res = isl::point::simple_fixed_box_hull();
34793 return typed::fixed_box<Domain>(res);
34796 template <typename Domain>
34797 typed::space<Domain> typed::point<Domain>::space() const
34799 auto res = isl::point::space();
34800 return typed::space<Domain>(res);
34803 template <typename Domain>
34804 typed::set<Domain> typed::point<Domain>::subtract(const typed::set<Domain> &set2) const
34806 auto res = isl::point::subtract(set2);
34807 return typed::set<Domain>(res);
34810 template <typename Domain>
34811 typed::union_set<Domain> typed::point<Domain>::subtract(const typed::union_set<Domain> &uset2) const
34813 auto res = isl::point::subtract(uset2);
34814 return typed::union_set<Domain>(res);
34817 template <typename Domain>
34818 typed::set<Domain> typed::point<Domain>::to_set() const
34820 auto res = isl::point::to_set();
34821 return typed::set<Domain>(res);
34824 template <typename Domain>
34825 typed::union_set<Domain> typed::point<Domain>::to_union_set() const
34827 auto res = isl::point::to_union_set();
34828 return typed::union_set<Domain>(res);
34831 template <typename Domain>
34832 typed::map<Domain, Domain> typed::point<Domain>::translation() const
34834 auto res = isl::point::translation();
34835 return typed::map<Domain, Domain>(res);
34838 template <typename Domain>
34839 template <typename Arg1>
34840 typed::map<Arg1, Domain> typed::point<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
34842 auto res = isl::point::unbind_params_insert_domain(domain);
34843 return typed::map<Arg1, Domain>(res);
34846 template <typename Domain>
34847 typed::set<Domain> typed::point<Domain>::unite(const typed::basic_set<Domain> &bset2) const
34849 auto res = isl::point::unite(bset2);
34850 return typed::set<Domain>(res);
34853 template <typename Domain>
34854 typed::set<Domain> typed::point<Domain>::unite(const typed::set<Domain> &set2) const
34856 auto res = isl::point::unite(set2);
34857 return typed::set<Domain>(res);
34860 template <typename Domain>
34861 typed::union_set<Domain> typed::point<Domain>::unite(const typed::union_set<Domain> &uset2) const
34863 auto res = isl::point::unite(uset2);
34864 return typed::union_set<Domain>(res);
34867 template <typename Domain>
34868 typed::set<Domain> typed::point<Domain>::upper_bound(const typed::multi_pw_aff<Domain> &upper) const
34870 auto res = isl::point::upper_bound(upper);
34871 return typed::set<Domain>(res);
34874 template <typename Domain>
34875 typed::set<Domain> typed::point<Domain>::upper_bound(const typed::multi_val<Domain> &upper) const
34877 auto res = isl::point::upper_bound(upper);
34878 return typed::set<Domain>(res);
34881 template <typename Domain, typename Range>
34882 template <typename Arg2>
34883 typed::basic_set<Arg2> typed::point<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &bmap) const
34885 auto res = isl::point::apply(bmap);
34886 return typed::basic_set<Arg2>(res);
34889 template <typename Domain, typename Range>
34890 template <typename Arg2>
34891 typed::set<Arg2> typed::point<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &map) const
34893 auto res = isl::point::apply(map);
34894 return typed::set<Arg2>(res);
34897 template <typename Domain, typename Range>
34898 template <typename Arg2>
34899 typed::union_set<Arg2> typed::point<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
34901 auto res = isl::point::apply(umap);
34902 return typed::union_set<Arg2>(res);
34905 template <typename Domain, typename Range>
34906 typed::pw_multi_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::as_pw_multi_aff() const
34908 auto res = isl::point::as_pw_multi_aff();
34909 return typed::pw_multi_aff<pair<Domain, Range>>(res);
34912 template <typename Domain, typename Range>
34913 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::as_set() const
34915 auto res = isl::point::as_set();
34916 return typed::set<pair<Domain, Range>>(res);
34919 template <typename Domain, typename Range>
34920 typed::set<> typed::point<pair<Domain, Range>>::bind(const typed::multi_id<pair<Domain, Range>> &tuple) const
34922 auto res = isl::point::bind(tuple);
34923 return typed::set<>(res);
34926 template <typename Domain, typename Range>
34927 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::coalesce() const
34929 auto res = isl::point::coalesce();
34930 return typed::set<pair<Domain, Range>>(res);
34933 template <typename Domain, typename Range>
34934 typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::detect_equalities() const
34936 auto res = isl::point::detect_equalities();
34937 return typed::basic_set<pair<Domain, Range>>(res);
34940 template <typename Domain, typename Range>
34941 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::drop_unused_params() const
34943 auto res = isl::point::drop_unused_params();
34944 return typed::set<pair<Domain, Range>>(res);
34947 template <typename Domain, typename Range>
34948 bool typed::point<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
34950 auto lambda_test = [&] (isl::set arg0) {
34951 return test(typed::set<pair<Domain, Range>>(arg0));
34953 return isl::point::every_set(lambda_test);
34956 template <typename Domain, typename Range>
34957 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
34959 auto res = isl::point::extract_set(space);
34960 return typed::set<pair<Domain, Range>>(res);
34963 template <typename Domain, typename Range>
34964 void typed::point<pair<Domain, Range>>::foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const
34966 auto lambda_fn = [&] (isl::basic_set arg0) {
34967 return fn(typed::basic_set<pair<Domain, Range>>(arg0));
34969 return isl::point::foreach_basic_set(lambda_fn);
34972 template <typename Domain, typename Range>
34973 void typed::point<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
34975 auto lambda_fn = [&] (isl::point arg0) {
34976 return fn(typed::point<pair<Domain, Range>>(arg0));
34978 return isl::point::foreach_point(lambda_fn);
34981 template <typename Domain, typename Range>
34982 void typed::point<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
34984 auto lambda_fn = [&] (isl::set arg0) {
34985 return fn(typed::set<pair<Domain, Range>>(arg0));
34987 return isl::point::foreach_set(lambda_fn);
34990 template <typename Domain, typename Range>
34991 typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
34993 auto res = isl::point::gist(context);
34994 return typed::basic_set<pair<Domain, Range>>(res);
34997 template <typename Domain, typename Range>
34998 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
35000 auto res = isl::point::gist(context);
35001 return typed::set<pair<Domain, Range>>(res);
35004 template <typename Domain, typename Range>
35005 typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
35007 auto res = isl::point::gist(context);
35008 return typed::union_set<pair<Domain, Range>>(res);
35011 template <typename Domain, typename Range>
35012 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::gist_params(const typed::set<> &context) const
35014 auto res = isl::point::gist_params(context);
35015 return typed::set<pair<Domain, Range>>(res);
35018 template <typename Domain, typename Range>
35019 typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::point<pair<Domain, Range>>::identity() const
35021 auto res = isl::point::identity();
35022 return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
35025 template <typename Domain, typename Range>
35026 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::point<pair<Domain, Range>>::indicator_function() const
35028 auto res = isl::point::indicator_function();
35029 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
35032 template <typename Domain, typename Range>
35033 template <typename Arg2>
35034 typed::map<Arg2, pair<Domain, Range>> typed::point<pair<Domain, Range>>::insert_domain(const typed::space<Arg2> &domain) const
35036 auto res = isl::point::insert_domain(domain);
35037 return typed::map<Arg2, pair<Domain, Range>>(res);
35040 template <typename Domain, typename Range>
35041 typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &bset2) const
35043 auto res = isl::point::intersect(bset2);
35044 return typed::basic_set<pair<Domain, Range>>(res);
35047 template <typename Domain, typename Range>
35048 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &set2) const
35050 auto res = isl::point::intersect(set2);
35051 return typed::set<pair<Domain, Range>>(res);
35054 template <typename Domain, typename Range>
35055 typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
35057 auto res = isl::point::intersect(uset2);
35058 return typed::union_set<pair<Domain, Range>>(res);
35061 template <typename Domain, typename Range>
35062 typed::basic_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &bset2) const
35064 auto res = isl::point::intersect_params(bset2);
35065 return typed::basic_set<pair<Domain, Range>>(res);
35068 template <typename Domain, typename Range>
35069 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::intersect_params(const typed::set<> &params) const
35071 auto res = isl::point::intersect_params(params);
35072 return typed::set<pair<Domain, Range>>(res);
35075 template <typename Domain, typename Range>
35076 typed::fixed_box<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lattice_tile() const
35078 auto res = isl::point::lattice_tile();
35079 return typed::fixed_box<pair<Domain, Range>>(res);
35082 template <typename Domain, typename Range>
35083 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmax() const
35085 auto res = isl::point::lexmax();
35086 return typed::set<pair<Domain, Range>>(res);
35089 template <typename Domain, typename Range>
35090 typed::pw_multi_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmax_pw_multi_aff() const
35092 auto res = isl::point::lexmax_pw_multi_aff();
35093 return typed::pw_multi_aff<pair<Domain, Range>>(res);
35096 template <typename Domain, typename Range>
35097 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmin() const
35099 auto res = isl::point::lexmin();
35100 return typed::set<pair<Domain, Range>>(res);
35103 template <typename Domain, typename Range>
35104 typed::pw_multi_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lexmin_pw_multi_aff() const
35106 auto res = isl::point::lexmin_pw_multi_aff();
35107 return typed::pw_multi_aff<pair<Domain, Range>>(res);
35110 template <typename Domain, typename Range>
35111 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const
35113 auto res = isl::point::lower_bound(lower);
35114 return typed::set<pair<Domain, Range>>(res);
35117 template <typename Domain, typename Range>
35118 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const
35120 auto res = isl::point::lower_bound(lower);
35121 return typed::set<pair<Domain, Range>>(res);
35124 template <typename Domain, typename Range>
35125 typed::multi_pw_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::max_multi_pw_aff() const
35127 auto res = isl::point::max_multi_pw_aff();
35128 return typed::multi_pw_aff<pair<Domain, Range>>(res);
35131 template <typename Domain, typename Range>
35132 typed::multi_pw_aff<pair<Domain, Range>> typed::point<pair<Domain, Range>>::min_multi_pw_aff() const
35134 auto res = isl::point::min_multi_pw_aff();
35135 return typed::multi_pw_aff<pair<Domain, Range>>(res);
35138 template <typename Domain, typename Range>
35139 typed::multi_val<pair<Domain, Range>> typed::point<pair<Domain, Range>>::multi_val() const
35141 auto res = isl::point::multi_val();
35142 return typed::multi_val<pair<Domain, Range>>(res);
35145 template <typename Domain, typename Range>
35146 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::point<pair<Domain, Range>>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
35148 auto res = isl::point::param_pw_aff_on_domain(id);
35149 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
35152 template <typename Domain, typename Range>
35153 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::point<pair<Domain, Range>>::param_pw_aff_on_domain(const std::string &id) const
35155 auto res = isl::point::param_pw_aff_on_domain(id);
35156 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
35159 template <typename Domain, typename Range>
35160 typed::basic_set<> typed::point<pair<Domain, Range>>::params() const
35162 auto res = isl::point::params();
35163 return typed::basic_set<>(res);
35166 template <typename Domain, typename Range>
35167 typed::multi_val<pair<Domain, Range>> typed::point<pair<Domain, Range>>::plain_multi_val_if_fixed() const
35169 auto res = isl::point::plain_multi_val_if_fixed();
35170 return typed::multi_val<pair<Domain, Range>>(res);
35173 template <typename Domain, typename Range>
35174 template <typename Domain2>
35175 typed::set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
35177 auto res = isl::point::preimage(ma);
35178 return typed::set<Domain2>(res);
35181 template <typename Domain, typename Range>
35182 template <typename Domain2>
35183 typed::set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
35185 auto res = isl::point::preimage(mpa);
35186 return typed::set<Domain2>(res);
35189 template <typename Domain, typename Range>
35190 template <typename Domain2>
35191 typed::set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
35193 auto res = isl::point::preimage(pma);
35194 return typed::set<Domain2>(res);
35197 template <typename Domain, typename Range>
35198 template <typename Domain2>
35199 typed::union_set<Domain2> typed::point<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
35201 auto res = isl::point::preimage(upma);
35202 return typed::union_set<Domain2>(res);
35205 template <typename Domain, typename Range>
35206 template <typename Arg2>
35207 typed::set<pair<pair<Domain, Range>, Arg2>> typed::point<pair<Domain, Range>>::product(const typed::set<Arg2> &set2) const
35209 auto res = isl::point::product(set2);
35210 return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
35213 template <typename Domain, typename Range>
35214 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_all_params() const
35216 auto res = isl::point::project_out_all_params();
35217 return typed::set<pair<Domain, Range>>(res);
35220 template <typename Domain, typename Range>
35221 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_param(const typed::id<Anonymous> &id) const
35223 auto res = isl::point::project_out_param(id);
35224 return typed::set<pair<Domain, Range>>(res);
35227 template <typename Domain, typename Range>
35228 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_param(const std::string &id) const
35230 auto res = isl::point::project_out_param(id);
35231 return typed::set<pair<Domain, Range>>(res);
35234 template <typename Domain, typename Range>
35235 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::project_out_param(const typed::id_list<Anonymous> &list) const
35237 auto res = isl::point::project_out_param(list);
35238 return typed::set<pair<Domain, Range>>(res);
35241 template <typename Domain, typename Range>
35242 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::point<pair<Domain, Range>>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
35244 auto res = isl::point::pw_aff_on_domain(v);
35245 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
35248 template <typename Domain, typename Range>
35249 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::point<pair<Domain, Range>>::pw_aff_on_domain(long v) const
35251 auto res = isl::point::pw_aff_on_domain(v);
35252 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
35255 template <typename Domain, typename Range>
35256 template <typename Arg2>
35257 typed::pw_multi_aff<pair<Domain, Range>, Arg2> typed::point<pair<Domain, Range>>::pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
35259 auto res = isl::point::pw_multi_aff_on_domain(mv);
35260 return typed::pw_multi_aff<pair<Domain, Range>, Arg2>(res);
35263 template <typename Domain, typename Range>
35264 typed::set_list<pair<Domain, Range>> typed::point<pair<Domain, Range>>::set_list() const
35266 auto res = isl::point::set_list();
35267 return typed::set_list<pair<Domain, Range>>(res);
35270 template <typename Domain, typename Range>
35271 typed::fixed_box<pair<Domain, Range>> typed::point<pair<Domain, Range>>::simple_fixed_box_hull() const
35273 auto res = isl::point::simple_fixed_box_hull();
35274 return typed::fixed_box<pair<Domain, Range>>(res);
35277 template <typename Domain, typename Range>
35278 typed::space<pair<Domain, Range>> typed::point<pair<Domain, Range>>::space() const
35280 auto res = isl::point::space();
35281 return typed::space<pair<Domain, Range>>(res);
35284 template <typename Domain, typename Range>
35285 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &set2) const
35287 auto res = isl::point::subtract(set2);
35288 return typed::set<pair<Domain, Range>>(res);
35291 template <typename Domain, typename Range>
35292 typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
35294 auto res = isl::point::subtract(uset2);
35295 return typed::union_set<pair<Domain, Range>>(res);
35298 template <typename Domain, typename Range>
35299 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::to_set() const
35301 auto res = isl::point::to_set();
35302 return typed::set<pair<Domain, Range>>(res);
35305 template <typename Domain, typename Range>
35306 typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::to_union_set() const
35308 auto res = isl::point::to_union_set();
35309 return typed::union_set<pair<Domain, Range>>(res);
35312 template <typename Domain, typename Range>
35313 typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::point<pair<Domain, Range>>::translation() const
35315 auto res = isl::point::translation();
35316 return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
35319 template <typename Domain, typename Range>
35320 template <typename Arg2>
35321 typed::map<Arg2, pair<Domain, Range>> typed::point<pair<Domain, Range>>::unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const
35323 auto res = isl::point::unbind_params_insert_domain(domain);
35324 return typed::map<Arg2, pair<Domain, Range>>(res);
35327 template <typename Domain, typename Range>
35328 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &bset2) const
35330 auto res = isl::point::unite(bset2);
35331 return typed::set<pair<Domain, Range>>(res);
35334 template <typename Domain, typename Range>
35335 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &set2) const
35337 auto res = isl::point::unite(set2);
35338 return typed::set<pair<Domain, Range>>(res);
35341 template <typename Domain, typename Range>
35342 typed::union_set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
35344 auto res = isl::point::unite(uset2);
35345 return typed::union_set<pair<Domain, Range>>(res);
35348 template <typename Domain, typename Range>
35349 typed::map<Domain, Range> typed::point<pair<Domain, Range>>::unwrap() const
35351 auto res = isl::point::unwrap();
35352 return typed::map<Domain, Range>(res);
35355 template <typename Domain, typename Range>
35356 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const
35358 auto res = isl::point::upper_bound(upper);
35359 return typed::set<pair<Domain, Range>>(res);
35362 template <typename Domain, typename Range>
35363 typed::set<pair<Domain, Range>> typed::point<pair<Domain, Range>>::upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const
35365 auto res = isl::point::upper_bound(upper);
35366 return typed::set<pair<Domain, Range>>(res);
35369 template <typename Domain, typename Range>
35370 typed::set<pair<Range, Domain>> typed::point<pair<Domain, Range>>::wrapped_reverse() const
35372 auto res = isl::point::wrapped_reverse();
35373 return typed::set<pair<Range, Domain>>(res);
35376 typed::pw_aff<Anonymous>::pw_aff(const typed::aff<Anonymous> &aff)
35377 : isl::pw_aff(aff)
35381 typed::pw_aff<Anonymous>::pw_aff(const isl::ctx &ctx, const std::string &str)
35382 : isl::pw_aff(ctx, str)
35386 typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::multi_pw_aff<Anonymous> &multi2) const
35388 auto res = isl::pw_aff::add(multi2);
35389 return typed::multi_pw_aff<Anonymous>(res);
35392 typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::multi_union_pw_aff<Anonymous> &multi2) const
35394 auto res = isl::pw_aff::add(multi2);
35395 return typed::multi_union_pw_aff<Anonymous>(res);
35398 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::pw_aff<Anonymous> &pwaff2) const
35400 auto res = isl::pw_aff::add(pwaff2);
35401 return typed::pw_aff<Anonymous>(res);
35404 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::pw_multi_aff<Anonymous> &pma2) const
35406 auto res = isl::pw_aff::add(pma2);
35407 return typed::pw_multi_aff<Anonymous>(res);
35410 typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::union_pw_aff<Anonymous> &upa2) const
35412 auto res = isl::pw_aff::add(upa2);
35413 return typed::union_pw_aff<Anonymous>(res);
35416 typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
35418 auto res = isl::pw_aff::add(upma2);
35419 return typed::union_pw_multi_aff<Anonymous>(res);
35422 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add(const typed::aff<Anonymous> &pwaff2) const
35424 auto res = isl::pw_aff::add(pwaff2);
35425 return typed::pw_aff<Anonymous>(res);
35428 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add_constant(const typed::val<Anonymous> &v) const
35430 auto res = isl::pw_aff::add_constant(v);
35431 return typed::pw_aff<Anonymous>(res);
35434 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::add_constant(long v) const
35436 auto res = isl::pw_aff::add_constant(v);
35437 return typed::pw_aff<Anonymous>(res);
35440 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
35442 auto res = isl::pw_aff::add_constant(mv);
35443 return typed::pw_multi_aff<Anonymous>(res);
35446 template <typename Range>
35447 typed::union_pw_multi_aff<Range> typed::pw_aff<Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const
35449 auto res = isl::pw_aff::apply(upma2);
35450 return typed::union_pw_multi_aff<Range>(res);
35453 typed::aff<Anonymous> typed::pw_aff<Anonymous>::as_aff() const
35455 auto res = isl::pw_aff::as_aff();
35456 return typed::aff<Anonymous>(res);
35459 typed::multi_aff<Anonymous> typed::pw_aff<Anonymous>::as_multi_aff() const
35461 auto res = isl::pw_aff::as_multi_aff();
35462 return typed::multi_aff<Anonymous>(res);
35465 typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::as_multi_union_pw_aff() const
35467 auto res = isl::pw_aff::as_multi_union_pw_aff();
35468 return typed::multi_union_pw_aff<Anonymous>(res);
35471 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::as_pw_multi_aff() const
35473 auto res = isl::pw_aff::as_pw_multi_aff();
35474 return typed::pw_multi_aff<Anonymous>(res);
35477 typed::set<Anonymous> typed::pw_aff<Anonymous>::as_set() const
35479 auto res = isl::pw_aff::as_set();
35480 return typed::set<Anonymous>(res);
35483 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::at(int pos) const
35485 auto res = isl::pw_aff::at(pos);
35486 return typed::pw_aff<Anonymous>(res);
35489 typed::set<> typed::pw_aff<Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
35491 auto res = isl::pw_aff::bind(tuple);
35492 return typed::set<>(res);
35495 typed::set<> typed::pw_aff<Anonymous>::bind(const typed::id<Anonymous> &id) const
35497 auto res = isl::pw_aff::bind(id);
35498 return typed::set<>(res);
35501 typed::set<> typed::pw_aff<Anonymous>::bind(const std::string &id) const
35503 auto res = isl::pw_aff::bind(id);
35504 return typed::set<>(res);
35507 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::ceil() const
35509 auto res = isl::pw_aff::ceil();
35510 return typed::pw_aff<Anonymous>(res);
35513 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::coalesce() const
35515 auto res = isl::pw_aff::coalesce();
35516 return typed::pw_aff<Anonymous>(res);
35519 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::cond(const typed::pw_aff<Anonymous> &pwaff_true, const typed::pw_aff<Anonymous> &pwaff_false) const
35521 auto res = isl::pw_aff::cond(pwaff_true, pwaff_false);
35522 return typed::pw_aff<Anonymous>(res);
35525 typed::set<> typed::pw_aff<Anonymous>::domain() const
35527 auto res = isl::pw_aff::domain();
35528 return typed::set<>(res);
35531 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::drop_unused_params() const
35533 auto res = isl::pw_aff::drop_unused_params();
35534 return typed::pw_aff<Anonymous>(res);
35537 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::extract_pw_multi_aff(const typed::space<Anonymous> &space) const
35539 auto res = isl::pw_aff::extract_pw_multi_aff(space);
35540 return typed::pw_multi_aff<Anonymous>(res);
35543 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::floor() const
35545 auto res = isl::pw_aff::floor();
35546 return typed::pw_aff<Anonymous>(res);
35549 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::set<> &context) const
35551 auto res = isl::pw_aff::gist(context);
35552 return typed::pw_aff<Anonymous>(res);
35555 typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::union_set<> &context) const
35557 auto res = isl::pw_aff::gist(context);
35558 return typed::union_pw_aff<Anonymous>(res);
35561 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::basic_set<> &context) const
35563 auto res = isl::pw_aff::gist(context);
35564 return typed::pw_aff<Anonymous>(res);
35567 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist(const typed::point<> &context) const
35569 auto res = isl::pw_aff::gist(context);
35570 return typed::pw_aff<Anonymous>(res);
35573 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist_params(const typed::set<> &context) const
35575 auto res = isl::pw_aff::gist_params(context);
35576 return typed::pw_aff<Anonymous>(res);
35579 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist_params(const typed::basic_set<> &context) const
35581 auto res = isl::pw_aff::gist_params(context);
35582 return typed::pw_aff<Anonymous>(res);
35585 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::gist_params(const typed::point<> &context) const
35587 auto res = isl::pw_aff::gist_params(context);
35588 return typed::pw_aff<Anonymous>(res);
35591 typed::multi_pw_aff<Anonymous, Anonymous> typed::pw_aff<Anonymous>::identity() const
35593 auto res = isl::pw_aff::identity();
35594 return typed::multi_pw_aff<Anonymous, Anonymous>(res);
35597 template <typename Domain>
35598 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Anonymous>::insert_domain(const typed::space<Domain> &domain) const
35600 auto res = isl::pw_aff::insert_domain(domain);
35601 return typed::pw_aff<Domain, Anonymous>(res);
35604 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::intersect_params(const typed::set<> &set) const
35606 auto res = isl::pw_aff::intersect_params(set);
35607 return typed::pw_aff<Anonymous>(res);
35610 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::intersect_params(const typed::basic_set<> &set) const
35612 auto res = isl::pw_aff::intersect_params(set);
35613 return typed::pw_aff<Anonymous>(res);
35616 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::intersect_params(const typed::point<> &set) const
35618 auto res = isl::pw_aff::intersect_params(set);
35619 return typed::pw_aff<Anonymous>(res);
35622 typed::pw_aff_list<Anonymous> typed::pw_aff<Anonymous>::list() const
35624 auto res = isl::pw_aff::list();
35625 return typed::pw_aff_list<Anonymous>(res);
35628 typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::max(const typed::multi_pw_aff<Anonymous> &multi2) const
35630 auto res = isl::pw_aff::max(multi2);
35631 return typed::multi_pw_aff<Anonymous>(res);
35634 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::max(const typed::pw_aff<Anonymous> &pwaff2) const
35636 auto res = isl::pw_aff::max(pwaff2);
35637 return typed::pw_aff<Anonymous>(res);
35640 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::max(const typed::aff<Anonymous> &pwaff2) const
35642 auto res = isl::pw_aff::max(pwaff2);
35643 return typed::pw_aff<Anonymous>(res);
35646 typed::multi_val<Anonymous> typed::pw_aff<Anonymous>::max_multi_val() const
35648 auto res = isl::pw_aff::max_multi_val();
35649 return typed::multi_val<Anonymous>(res);
35652 typed::val<Anonymous> typed::pw_aff<Anonymous>::max_val() const
35654 auto res = isl::pw_aff::max_val();
35655 return typed::val<Anonymous>(res);
35658 typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::min(const typed::multi_pw_aff<Anonymous> &multi2) const
35660 auto res = isl::pw_aff::min(multi2);
35661 return typed::multi_pw_aff<Anonymous>(res);
35664 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::min(const typed::pw_aff<Anonymous> &pwaff2) const
35666 auto res = isl::pw_aff::min(pwaff2);
35667 return typed::pw_aff<Anonymous>(res);
35670 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::min(const typed::aff<Anonymous> &pwaff2) const
35672 auto res = isl::pw_aff::min(pwaff2);
35673 return typed::pw_aff<Anonymous>(res);
35676 typed::multi_val<Anonymous> typed::pw_aff<Anonymous>::min_multi_val() const
35678 auto res = isl::pw_aff::min_multi_val();
35679 return typed::multi_val<Anonymous>(res);
35682 typed::val<Anonymous> typed::pw_aff<Anonymous>::min_val() const
35684 auto res = isl::pw_aff::min_val();
35685 return typed::val<Anonymous>(res);
35688 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::mod(const typed::val<Anonymous> &mod) const
35690 auto res = isl::pw_aff::mod(mod);
35691 return typed::pw_aff<Anonymous>(res);
35694 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::mod(long mod) const
35696 auto res = isl::pw_aff::mod(mod);
35697 return typed::pw_aff<Anonymous>(res);
35700 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::neg() const
35702 auto res = isl::pw_aff::neg();
35703 return typed::pw_aff<Anonymous>(res);
35706 typed::set<> typed::pw_aff<Anonymous>::params() const
35708 auto res = isl::pw_aff::params();
35709 return typed::set<>(res);
35712 template <typename Range>
35713 typed::multi_pw_aff<pair<Anonymous, Range>> typed::pw_aff<Anonymous>::product(const typed::multi_pw_aff<Range> &multi2) const
35715 auto res = isl::pw_aff::product(multi2);
35716 return typed::multi_pw_aff<pair<Anonymous, Range>>(res);
35719 template <typename Range>
35720 typed::pw_multi_aff<pair<Anonymous, Range>> typed::pw_aff<Anonymous>::product(const typed::pw_multi_aff<Range> &pma2) const
35722 auto res = isl::pw_aff::product(pma2);
35723 return typed::pw_multi_aff<pair<Anonymous, Range>>(res);
35726 typed::pw_multi_aff_list<Anonymous> typed::pw_aff<Anonymous>::pw_multi_aff_list() const
35728 auto res = isl::pw_aff::pw_multi_aff_list();
35729 return typed::pw_multi_aff_list<Anonymous>(res);
35732 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale(const typed::val<Anonymous> &v) const
35734 auto res = isl::pw_aff::scale(v);
35735 return typed::pw_aff<Anonymous>(res);
35738 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale(long v) const
35740 auto res = isl::pw_aff::scale(v);
35741 return typed::pw_aff<Anonymous>(res);
35744 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
35746 auto res = isl::pw_aff::scale(mv);
35747 return typed::pw_multi_aff<Anonymous>(res);
35750 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale_down(const typed::val<Anonymous> &f) const
35752 auto res = isl::pw_aff::scale_down(f);
35753 return typed::pw_aff<Anonymous>(res);
35756 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::scale_down(long f) const
35758 auto res = isl::pw_aff::scale_down(f);
35759 return typed::pw_aff<Anonymous>(res);
35762 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
35764 auto res = isl::pw_aff::scale_down(mv);
35765 return typed::pw_multi_aff<Anonymous>(res);
35768 typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
35770 auto res = isl::pw_aff::set_at(pos, el);
35771 return typed::multi_pw_aff<Anonymous>(res);
35774 typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
35776 auto res = isl::pw_aff::set_at(pos, el);
35777 return typed::multi_union_pw_aff<Anonymous>(res);
35780 template <typename Domain2>
35781 typed::pw_multi_aff<Domain2> typed::pw_aff<Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
35783 auto res = isl::pw_aff::set_range_tuple(id);
35784 return typed::pw_multi_aff<Domain2>(res);
35787 template <typename Domain2>
35788 typed::pw_multi_aff<Domain2> typed::pw_aff<Anonymous>::set_range_tuple(const std::string &id) const
35790 auto res = isl::pw_aff::set_range_tuple(id);
35791 return typed::pw_multi_aff<Domain2>(res);
35794 typed::space<Anonymous> typed::pw_aff<Anonymous>::space() const
35796 auto res = isl::pw_aff::space();
35797 return typed::space<Anonymous>(res);
35800 typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::multi_pw_aff<Anonymous> &multi2) const
35802 auto res = isl::pw_aff::sub(multi2);
35803 return typed::multi_pw_aff<Anonymous>(res);
35806 typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const
35808 auto res = isl::pw_aff::sub(multi2);
35809 return typed::multi_union_pw_aff<Anonymous>(res);
35812 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::pw_aff<Anonymous> &pwaff2) const
35814 auto res = isl::pw_aff::sub(pwaff2);
35815 return typed::pw_aff<Anonymous>(res);
35818 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::pw_multi_aff<Anonymous> &pma2) const
35820 auto res = isl::pw_aff::sub(pma2);
35821 return typed::pw_multi_aff<Anonymous>(res);
35824 typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::union_pw_aff<Anonymous> &upa2) const
35826 auto res = isl::pw_aff::sub(upa2);
35827 return typed::union_pw_aff<Anonymous>(res);
35830 typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const
35832 auto res = isl::pw_aff::sub(upma2);
35833 return typed::union_pw_multi_aff<Anonymous>(res);
35836 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::sub(const typed::aff<Anonymous> &pwaff2) const
35838 auto res = isl::pw_aff::sub(pwaff2);
35839 return typed::pw_aff<Anonymous>(res);
35842 typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::to_multi_pw_aff() const
35844 auto res = isl::pw_aff::to_multi_pw_aff();
35845 return typed::multi_pw_aff<Anonymous>(res);
35848 typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::to_union_pw_aff() const
35850 auto res = isl::pw_aff::to_union_pw_aff();
35851 return typed::union_pw_aff<Anonymous>(res);
35854 typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::to_union_pw_multi_aff() const
35856 auto res = isl::pw_aff::to_union_pw_multi_aff();
35857 return typed::union_pw_multi_aff<Anonymous>(res);
35860 template <typename Domain>
35861 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Anonymous>::unbind_params_insert_domain(const typed::multi_id<Domain> &domain) const
35863 auto res = isl::pw_aff::unbind_params_insert_domain(domain);
35864 return typed::multi_pw_aff<Domain, Anonymous>(res);
35867 typed::multi_pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::multi_pw_aff<Anonymous> &mpa2) const
35869 auto res = isl::pw_aff::union_add(mpa2);
35870 return typed::multi_pw_aff<Anonymous>(res);
35873 typed::multi_union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const
35875 auto res = isl::pw_aff::union_add(mupa2);
35876 return typed::multi_union_pw_aff<Anonymous>(res);
35879 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::pw_aff<Anonymous> &pwaff2) const
35881 auto res = isl::pw_aff::union_add(pwaff2);
35882 return typed::pw_aff<Anonymous>(res);
35885 typed::pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::pw_multi_aff<Anonymous> &pma2) const
35887 auto res = isl::pw_aff::union_add(pma2);
35888 return typed::pw_multi_aff<Anonymous>(res);
35891 typed::union_pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::union_pw_aff<Anonymous> &upa2) const
35893 auto res = isl::pw_aff::union_add(upa2);
35894 return typed::union_pw_aff<Anonymous>(res);
35897 typed::union_pw_multi_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
35899 auto res = isl::pw_aff::union_add(upma2);
35900 return typed::union_pw_multi_aff<Anonymous>(res);
35903 typed::pw_aff<Anonymous> typed::pw_aff<Anonymous>::union_add(const typed::aff<Anonymous> &pwaff2) const
35905 auto res = isl::pw_aff::union_add(pwaff2);
35906 return typed::pw_aff<Anonymous>(res);
35909 template <typename Domain>
35910 typed::pw_aff<Domain, Anonymous>::pw_aff(const typed::aff<Domain, Anonymous> &aff)
35911 : isl::pw_aff(aff)
35915 template <typename Domain>
35916 typed::pw_aff<Domain, Anonymous>::pw_aff(const isl::ctx &ctx, const std::string &str)
35917 : isl::pw_aff(ctx, str)
35921 template <typename Domain>
35922 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
35924 auto res = isl::pw_aff::add(multi2);
35925 return typed::multi_pw_aff<Domain, Anonymous>(res);
35928 template <typename Domain>
35929 typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
35931 auto res = isl::pw_aff::add(multi2);
35932 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
35935 template <typename Domain>
35936 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
35938 auto res = isl::pw_aff::add(pwaff2);
35939 return typed::pw_aff<Domain, Anonymous>(res);
35942 template <typename Domain>
35943 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
35945 auto res = isl::pw_aff::add(pma2);
35946 return typed::pw_multi_aff<Domain, Anonymous>(res);
35949 template <typename Domain>
35950 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
35952 auto res = isl::pw_aff::add(upa2);
35953 return typed::union_pw_aff<Domain, Anonymous>(res);
35956 template <typename Domain>
35957 typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
35959 auto res = isl::pw_aff::add(upma2);
35960 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
35963 template <typename Domain>
35964 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &pwaff2) const
35966 auto res = isl::pw_aff::add(pwaff2);
35967 return typed::pw_aff<Domain, Anonymous>(res);
35970 template <typename Domain>
35971 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
35973 auto res = isl::pw_aff::add_constant(v);
35974 return typed::pw_aff<Domain, Anonymous>(res);
35977 template <typename Domain>
35978 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add_constant(long v) const
35980 auto res = isl::pw_aff::add_constant(v);
35981 return typed::pw_aff<Domain, Anonymous>(res);
35984 template <typename Domain>
35985 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
35987 auto res = isl::pw_aff::add_constant(mv);
35988 return typed::pw_multi_aff<Domain, Anonymous>(res);
35991 template <typename Domain>
35992 template <typename Range2>
35993 typed::union_pw_multi_aff<Domain, Range2> typed::pw_aff<Domain, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
35995 auto res = isl::pw_aff::apply(upma2);
35996 return typed::union_pw_multi_aff<Domain, Range2>(res);
35999 template <typename Domain>
36000 typed::aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_aff() const
36002 auto res = isl::pw_aff::as_aff();
36003 return typed::aff<Domain, Anonymous>(res);
36006 template <typename Domain>
36007 typed::map<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_map() const
36009 auto res = isl::pw_aff::as_map();
36010 return typed::map<Domain, Anonymous>(res);
36013 template <typename Domain>
36014 typed::multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_multi_aff() const
36016 auto res = isl::pw_aff::as_multi_aff();
36017 return typed::multi_aff<Domain, Anonymous>(res);
36020 template <typename Domain>
36021 typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_multi_union_pw_aff() const
36023 auto res = isl::pw_aff::as_multi_union_pw_aff();
36024 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
36027 template <typename Domain>
36028 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_pw_multi_aff() const
36030 auto res = isl::pw_aff::as_pw_multi_aff();
36031 return typed::pw_multi_aff<Domain, Anonymous>(res);
36034 template <typename Domain>
36035 typed::union_map<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::as_union_map() const
36037 auto res = isl::pw_aff::as_union_map();
36038 return typed::union_map<Domain, Anonymous>(res);
36041 template <typename Domain>
36042 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::at(int pos) const
36044 auto res = isl::pw_aff::at(pos);
36045 return typed::pw_aff<Domain, Anonymous>(res);
36048 template <typename Domain>
36049 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
36051 auto res = isl::pw_aff::bind(tuple);
36052 return typed::set<Domain>(res);
36055 template <typename Domain>
36056 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::bind(const typed::id<Anonymous> &id) const
36058 auto res = isl::pw_aff::bind(id);
36059 return typed::set<Domain>(res);
36062 template <typename Domain>
36063 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::bind(const std::string &id) const
36065 auto res = isl::pw_aff::bind(id);
36066 return typed::set<Domain>(res);
36069 template <typename Domain>
36070 typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::bind_domain(const typed::multi_id<Domain> &tuple) const
36072 auto res = isl::pw_aff::bind_domain(tuple);
36073 return typed::pw_aff<Anonymous>(res);
36076 template <typename Domain>
36077 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::ceil() const
36079 auto res = isl::pw_aff::ceil();
36080 return typed::pw_aff<Domain, Anonymous>(res);
36083 template <typename Domain>
36084 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::coalesce() const
36086 auto res = isl::pw_aff::coalesce();
36087 return typed::pw_aff<Domain, Anonymous>(res);
36090 template <typename Domain>
36091 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::cond(const typed::pw_aff<Domain, Anonymous> &pwaff_true, const typed::pw_aff<Domain, Anonymous> &pwaff_false) const
36093 auto res = isl::pw_aff::cond(pwaff_true, pwaff_false);
36094 return typed::pw_aff<Domain, Anonymous>(res);
36097 template <typename Domain>
36098 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::domain() const
36100 auto res = isl::pw_aff::domain();
36101 return typed::set<Domain>(res);
36104 template <typename Domain>
36105 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::drop_unused_params() const
36107 auto res = isl::pw_aff::drop_unused_params();
36108 return typed::pw_aff<Domain, Anonymous>(res);
36111 template <typename Domain>
36112 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const
36114 auto res = isl::pw_aff::extract_pw_multi_aff(space);
36115 return typed::pw_multi_aff<Domain, Anonymous>(res);
36118 template <typename Domain>
36119 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::floor() const
36121 auto res = isl::pw_aff::floor();
36122 return typed::pw_aff<Domain, Anonymous>(res);
36125 template <typename Domain>
36126 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::ge_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36128 auto res = isl::pw_aff::ge_set(pwaff2);
36129 return typed::set<Domain>(res);
36132 template <typename Domain>
36133 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::ge_set(const typed::aff<Domain, Anonymous> &pwaff2) const
36135 auto res = isl::pw_aff::ge_set(pwaff2);
36136 return typed::set<Domain>(res);
36139 template <typename Domain>
36140 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::set<Domain> &context) const
36142 auto res = isl::pw_aff::gist(context);
36143 return typed::pw_aff<Domain, Anonymous>(res);
36146 template <typename Domain>
36147 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::union_set<Domain> &context) const
36149 auto res = isl::pw_aff::gist(context);
36150 return typed::union_pw_aff<Domain, Anonymous>(res);
36153 template <typename Domain>
36154 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::basic_set<Domain> &context) const
36156 auto res = isl::pw_aff::gist(context);
36157 return typed::pw_aff<Domain, Anonymous>(res);
36160 template <typename Domain>
36161 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist(const typed::point<Domain> &context) const
36163 auto res = isl::pw_aff::gist(context);
36164 return typed::pw_aff<Domain, Anonymous>(res);
36167 template <typename Domain>
36168 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist_params(const typed::set<> &context) const
36170 auto res = isl::pw_aff::gist_params(context);
36171 return typed::pw_aff<Domain, Anonymous>(res);
36174 template <typename Domain>
36175 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist_params(const typed::basic_set<> &context) const
36177 auto res = isl::pw_aff::gist_params(context);
36178 return typed::pw_aff<Domain, Anonymous>(res);
36181 template <typename Domain>
36182 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::gist_params(const typed::point<> &context) const
36184 auto res = isl::pw_aff::gist_params(context);
36185 return typed::pw_aff<Domain, Anonymous>(res);
36188 template <typename Domain>
36189 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::gt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36191 auto res = isl::pw_aff::gt_set(pwaff2);
36192 return typed::set<Domain>(res);
36195 template <typename Domain>
36196 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::gt_set(const typed::aff<Domain, Anonymous> &pwaff2) const
36198 auto res = isl::pw_aff::gt_set(pwaff2);
36199 return typed::set<Domain>(res);
36202 template <typename Domain>
36203 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::identity() const
36205 auto res = isl::pw_aff::identity();
36206 return typed::multi_pw_aff<Domain, Anonymous>(res);
36209 template <typename Domain>
36210 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::set<Domain> &set) const
36212 auto res = isl::pw_aff::intersect_domain(set);
36213 return typed::pw_aff<Domain, Anonymous>(res);
36216 template <typename Domain>
36217 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::space<Domain> &space) const
36219 auto res = isl::pw_aff::intersect_domain(space);
36220 return typed::union_pw_aff<Domain, Anonymous>(res);
36223 template <typename Domain>
36224 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::union_set<Domain> &uset) const
36226 auto res = isl::pw_aff::intersect_domain(uset);
36227 return typed::union_pw_aff<Domain, Anonymous>(res);
36230 template <typename Domain>
36231 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::basic_set<Domain> &set) const
36233 auto res = isl::pw_aff::intersect_domain(set);
36234 return typed::pw_aff<Domain, Anonymous>(res);
36237 template <typename Domain>
36238 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_domain(const typed::point<Domain> &set) const
36240 auto res = isl::pw_aff::intersect_domain(set);
36241 return typed::pw_aff<Domain, Anonymous>(res);
36244 template <typename Domain>
36245 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_params(const typed::set<> &set) const
36247 auto res = isl::pw_aff::intersect_params(set);
36248 return typed::pw_aff<Domain, Anonymous>(res);
36251 template <typename Domain>
36252 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_params(const typed::basic_set<> &set) const
36254 auto res = isl::pw_aff::intersect_params(set);
36255 return typed::pw_aff<Domain, Anonymous>(res);
36258 template <typename Domain>
36259 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::intersect_params(const typed::point<> &set) const
36261 auto res = isl::pw_aff::intersect_params(set);
36262 return typed::pw_aff<Domain, Anonymous>(res);
36265 template <typename Domain>
36266 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::le_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36268 auto res = isl::pw_aff::le_set(pwaff2);
36269 return typed::set<Domain>(res);
36272 template <typename Domain>
36273 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::le_set(const typed::aff<Domain, Anonymous> &pwaff2) const
36275 auto res = isl::pw_aff::le_set(pwaff2);
36276 return typed::set<Domain>(res);
36279 template <typename Domain>
36280 typed::pw_aff_list<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::list() const
36282 auto res = isl::pw_aff::list();
36283 return typed::pw_aff_list<Domain, Anonymous>(res);
36286 template <typename Domain>
36287 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::lt_set(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36289 auto res = isl::pw_aff::lt_set(pwaff2);
36290 return typed::set<Domain>(res);
36293 template <typename Domain>
36294 typed::set<Domain> typed::pw_aff<Domain, Anonymous>::lt_set(const typed::aff<Domain, Anonymous> &pwaff2) const
36296 auto res = isl::pw_aff::lt_set(pwaff2);
36297 return typed::set<Domain>(res);
36300 template <typename Domain>
36301 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::max(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
36303 auto res = isl::pw_aff::max(multi2);
36304 return typed::multi_pw_aff<Domain, Anonymous>(res);
36307 template <typename Domain>
36308 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::max(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36310 auto res = isl::pw_aff::max(pwaff2);
36311 return typed::pw_aff<Domain, Anonymous>(res);
36314 template <typename Domain>
36315 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::max(const typed::aff<Domain, Anonymous> &pwaff2) const
36317 auto res = isl::pw_aff::max(pwaff2);
36318 return typed::pw_aff<Domain, Anonymous>(res);
36321 template <typename Domain>
36322 typed::multi_val<Anonymous> typed::pw_aff<Domain, Anonymous>::max_multi_val() const
36324 auto res = isl::pw_aff::max_multi_val();
36325 return typed::multi_val<Anonymous>(res);
36328 template <typename Domain>
36329 typed::val<Anonymous> typed::pw_aff<Domain, Anonymous>::max_val() const
36331 auto res = isl::pw_aff::max_val();
36332 return typed::val<Anonymous>(res);
36335 template <typename Domain>
36336 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::min(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
36338 auto res = isl::pw_aff::min(multi2);
36339 return typed::multi_pw_aff<Domain, Anonymous>(res);
36342 template <typename Domain>
36343 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::min(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36345 auto res = isl::pw_aff::min(pwaff2);
36346 return typed::pw_aff<Domain, Anonymous>(res);
36349 template <typename Domain>
36350 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::min(const typed::aff<Domain, Anonymous> &pwaff2) const
36352 auto res = isl::pw_aff::min(pwaff2);
36353 return typed::pw_aff<Domain, Anonymous>(res);
36356 template <typename Domain>
36357 typed::multi_val<Anonymous> typed::pw_aff<Domain, Anonymous>::min_multi_val() const
36359 auto res = isl::pw_aff::min_multi_val();
36360 return typed::multi_val<Anonymous>(res);
36363 template <typename Domain>
36364 typed::val<Anonymous> typed::pw_aff<Domain, Anonymous>::min_val() const
36366 auto res = isl::pw_aff::min_val();
36367 return typed::val<Anonymous>(res);
36370 template <typename Domain>
36371 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::mod(const typed::val<Anonymous> &mod) const
36373 auto res = isl::pw_aff::mod(mod);
36374 return typed::pw_aff<Domain, Anonymous>(res);
36377 template <typename Domain>
36378 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::mod(long mod) const
36380 auto res = isl::pw_aff::mod(mod);
36381 return typed::pw_aff<Domain, Anonymous>(res);
36384 template <typename Domain>
36385 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::neg() const
36387 auto res = isl::pw_aff::neg();
36388 return typed::pw_aff<Domain, Anonymous>(res);
36391 template <typename Domain>
36392 typed::set<> typed::pw_aff<Domain, Anonymous>::params() const
36394 auto res = isl::pw_aff::params();
36395 return typed::set<>(res);
36398 template <typename Domain>
36399 template <typename Domain2, typename Range2>
36400 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
36402 auto res = isl::pw_aff::product(multi2);
36403 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
36406 template <typename Domain>
36407 template <typename Domain2, typename Range2>
36408 typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
36410 auto res = isl::pw_aff::product(pma2);
36411 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
36414 template <typename Domain>
36415 template <typename Domain2>
36416 typed::pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
36418 auto res = isl::pw_aff::pullback(ma);
36419 return typed::pw_aff<Domain2, Anonymous>(res);
36422 template <typename Domain>
36423 typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain> &ma) const
36425 auto res = isl::pw_aff::pullback(ma);
36426 return typed::pw_aff<Anonymous>(res);
36429 template <typename Domain>
36430 template <typename Domain2>
36431 typed::pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
36433 auto res = isl::pw_aff::pullback(mpa);
36434 return typed::pw_aff<Domain2, Anonymous>(res);
36437 template <typename Domain>
36438 typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::multi_pw_aff<Domain> &mpa) const
36440 auto res = isl::pw_aff::pullback(mpa);
36441 return typed::pw_aff<Anonymous>(res);
36444 template <typename Domain>
36445 template <typename Domain2>
36446 typed::pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma) const
36448 auto res = isl::pw_aff::pullback(pma);
36449 return typed::pw_aff<Domain2, Anonymous>(res);
36452 template <typename Domain>
36453 typed::pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain> &pma) const
36455 auto res = isl::pw_aff::pullback(pma);
36456 return typed::pw_aff<Anonymous>(res);
36459 template <typename Domain>
36460 template <typename Domain2>
36461 typed::union_pw_aff<Domain2, Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
36463 auto res = isl::pw_aff::pullback(upma);
36464 return typed::union_pw_aff<Domain2, Anonymous>(res);
36467 template <typename Domain>
36468 typed::union_pw_aff<Anonymous> typed::pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
36470 auto res = isl::pw_aff::pullback(upma);
36471 return typed::union_pw_aff<Anonymous>(res);
36474 template <typename Domain>
36475 typed::pw_multi_aff_list<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::pw_multi_aff_list() const
36477 auto res = isl::pw_aff::pw_multi_aff_list();
36478 return typed::pw_multi_aff_list<Domain, Anonymous>(res);
36481 template <typename Domain>
36482 template <typename Range2>
36483 typed::multi_pw_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
36485 auto res = isl::pw_aff::range_product(multi2);
36486 return typed::multi_pw_aff<Domain, pair<Anonymous, Range2>>(res);
36489 template <typename Domain>
36490 template <typename Range2>
36491 typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
36493 auto res = isl::pw_aff::range_product(multi2);
36494 return typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>>(res);
36497 template <typename Domain>
36498 template <typename Range2>
36499 typed::pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
36501 auto res = isl::pw_aff::range_product(pma2);
36502 return typed::pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
36505 template <typename Domain>
36506 template <typename Range2>
36507 typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::pw_aff<Domain, Anonymous>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
36509 auto res = isl::pw_aff::range_product(upma2);
36510 return typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
36513 template <typename Domain>
36514 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale(const typed::val<Anonymous> &v) const
36516 auto res = isl::pw_aff::scale(v);
36517 return typed::pw_aff<Domain, Anonymous>(res);
36520 template <typename Domain>
36521 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale(long v) const
36523 auto res = isl::pw_aff::scale(v);
36524 return typed::pw_aff<Domain, Anonymous>(res);
36527 template <typename Domain>
36528 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
36530 auto res = isl::pw_aff::scale(mv);
36531 return typed::pw_multi_aff<Domain, Anonymous>(res);
36534 template <typename Domain>
36535 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale_down(const typed::val<Anonymous> &f) const
36537 auto res = isl::pw_aff::scale_down(f);
36538 return typed::pw_aff<Domain, Anonymous>(res);
36541 template <typename Domain>
36542 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale_down(long f) const
36544 auto res = isl::pw_aff::scale_down(f);
36545 return typed::pw_aff<Domain, Anonymous>(res);
36548 template <typename Domain>
36549 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
36551 auto res = isl::pw_aff::scale_down(mv);
36552 return typed::pw_multi_aff<Domain, Anonymous>(res);
36555 template <typename Domain>
36556 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
36558 auto res = isl::pw_aff::set_at(pos, el);
36559 return typed::multi_pw_aff<Domain, Anonymous>(res);
36562 template <typename Domain>
36563 typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
36565 auto res = isl::pw_aff::set_at(pos, el);
36566 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
36569 template <typename Domain>
36570 template <typename Range2>
36571 typed::pw_multi_aff<Domain, Range2> typed::pw_aff<Domain, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
36573 auto res = isl::pw_aff::set_range_tuple(id);
36574 return typed::pw_multi_aff<Domain, Range2>(res);
36577 template <typename Domain>
36578 template <typename Range2>
36579 typed::pw_multi_aff<Domain, Range2> typed::pw_aff<Domain, Anonymous>::set_range_tuple(const std::string &id) const
36581 auto res = isl::pw_aff::set_range_tuple(id);
36582 return typed::pw_multi_aff<Domain, Range2>(res);
36585 template <typename Domain>
36586 typed::space<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::space() const
36588 auto res = isl::pw_aff::space();
36589 return typed::space<Domain, Anonymous>(res);
36592 template <typename Domain>
36593 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::multi_pw_aff<Domain, Anonymous> &multi2) const
36595 auto res = isl::pw_aff::sub(multi2);
36596 return typed::multi_pw_aff<Domain, Anonymous>(res);
36599 template <typename Domain>
36600 typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
36602 auto res = isl::pw_aff::sub(multi2);
36603 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
36606 template <typename Domain>
36607 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36609 auto res = isl::pw_aff::sub(pwaff2);
36610 return typed::pw_aff<Domain, Anonymous>(res);
36613 template <typename Domain>
36614 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
36616 auto res = isl::pw_aff::sub(pma2);
36617 return typed::pw_multi_aff<Domain, Anonymous>(res);
36620 template <typename Domain>
36621 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
36623 auto res = isl::pw_aff::sub(upa2);
36624 return typed::union_pw_aff<Domain, Anonymous>(res);
36627 template <typename Domain>
36628 typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
36630 auto res = isl::pw_aff::sub(upma2);
36631 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
36634 template <typename Domain>
36635 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::sub(const typed::aff<Domain, Anonymous> &pwaff2) const
36637 auto res = isl::pw_aff::sub(pwaff2);
36638 return typed::pw_aff<Domain, Anonymous>(res);
36641 template <typename Domain>
36642 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::set<Domain> &set) const
36644 auto res = isl::pw_aff::subtract_domain(set);
36645 return typed::pw_aff<Domain, Anonymous>(res);
36648 template <typename Domain>
36649 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::space<Domain> &space) const
36651 auto res = isl::pw_aff::subtract_domain(space);
36652 return typed::union_pw_aff<Domain, Anonymous>(res);
36655 template <typename Domain>
36656 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::union_set<Domain> &uset) const
36658 auto res = isl::pw_aff::subtract_domain(uset);
36659 return typed::union_pw_aff<Domain, Anonymous>(res);
36662 template <typename Domain>
36663 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::basic_set<Domain> &set) const
36665 auto res = isl::pw_aff::subtract_domain(set);
36666 return typed::pw_aff<Domain, Anonymous>(res);
36669 template <typename Domain>
36670 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::subtract_domain(const typed::point<Domain> &set) const
36672 auto res = isl::pw_aff::subtract_domain(set);
36673 return typed::pw_aff<Domain, Anonymous>(res);
36676 template <typename Domain>
36677 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::to_multi_pw_aff() const
36679 auto res = isl::pw_aff::to_multi_pw_aff();
36680 return typed::multi_pw_aff<Domain, Anonymous>(res);
36683 template <typename Domain>
36684 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::to_union_pw_aff() const
36686 auto res = isl::pw_aff::to_union_pw_aff();
36687 return typed::union_pw_aff<Domain, Anonymous>(res);
36690 template <typename Domain>
36691 typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::to_union_pw_multi_aff() const
36693 auto res = isl::pw_aff::to_union_pw_multi_aff();
36694 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
36697 template <typename Domain>
36698 typed::multi_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::multi_pw_aff<Domain, Anonymous> &mpa2) const
36700 auto res = isl::pw_aff::union_add(mpa2);
36701 return typed::multi_pw_aff<Domain, Anonymous>(res);
36704 template <typename Domain>
36705 typed::multi_union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const
36707 auto res = isl::pw_aff::union_add(mupa2);
36708 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
36711 template <typename Domain>
36712 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::pw_aff<Domain, Anonymous> &pwaff2) const
36714 auto res = isl::pw_aff::union_add(pwaff2);
36715 return typed::pw_aff<Domain, Anonymous>(res);
36718 template <typename Domain>
36719 typed::pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::pw_multi_aff<Domain, Anonymous> &pma2) const
36721 auto res = isl::pw_aff::union_add(pma2);
36722 return typed::pw_multi_aff<Domain, Anonymous>(res);
36725 template <typename Domain>
36726 typed::union_pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
36728 auto res = isl::pw_aff::union_add(upa2);
36729 return typed::union_pw_aff<Domain, Anonymous>(res);
36732 template <typename Domain>
36733 typed::union_pw_multi_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
36735 auto res = isl::pw_aff::union_add(upma2);
36736 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
36739 template <typename Domain>
36740 typed::pw_aff<Domain, Anonymous> typed::pw_aff<Domain, Anonymous>::union_add(const typed::aff<Domain, Anonymous> &pwaff2) const
36742 auto res = isl::pw_aff::union_add(pwaff2);
36743 return typed::pw_aff<Domain, Anonymous>(res);
36746 template <typename Domain2, typename Range2>
36747 typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pw_aff(const typed::aff<pair<Domain2, Range2>, Anonymous> &aff)
36748 : isl::pw_aff(aff)
36752 template <typename Domain2, typename Range2>
36753 typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pw_aff(const isl::ctx &ctx, const std::string &str)
36754 : isl::pw_aff(ctx, str)
36758 template <typename Domain2, typename Range2>
36759 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
36761 auto res = isl::pw_aff::add(multi2);
36762 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36765 template <typename Domain2, typename Range2>
36766 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
36768 auto res = isl::pw_aff::add(multi2);
36769 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36772 template <typename Domain2, typename Range2>
36773 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
36775 auto res = isl::pw_aff::add(pwaff2);
36776 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36779 template <typename Domain2, typename Range2>
36780 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
36782 auto res = isl::pw_aff::add(pma2);
36783 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
36786 template <typename Domain2, typename Range2>
36787 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
36789 auto res = isl::pw_aff::add(upa2);
36790 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36793 template <typename Domain2, typename Range2>
36794 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
36796 auto res = isl::pw_aff::add(upma2);
36797 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
36800 template <typename Domain2, typename Range2>
36801 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
36803 auto res = isl::pw_aff::add(pwaff2);
36804 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36807 template <typename Domain2, typename Range2>
36808 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::val<Anonymous> &v) const
36810 auto res = isl::pw_aff::add_constant(v);
36811 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36814 template <typename Domain2, typename Range2>
36815 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add_constant(long v) const
36817 auto res = isl::pw_aff::add_constant(v);
36818 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36821 template <typename Domain2, typename Range2>
36822 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::add_constant(const typed::multi_val<Anonymous> &mv) const
36824 auto res = isl::pw_aff::add_constant(mv);
36825 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
36828 template <typename Domain2, typename Range2>
36829 template <typename Arg1>
36830 typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Arg1> &upma2) const
36832 auto res = isl::pw_aff::apply(upma2);
36833 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
36836 template <typename Domain2, typename Range2>
36837 typed::aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_aff() const
36839 auto res = isl::pw_aff::as_aff();
36840 return typed::aff<pair<Domain2, Range2>, Anonymous>(res);
36843 template <typename Domain2, typename Range2>
36844 typed::map<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_map() const
36846 auto res = isl::pw_aff::as_map();
36847 return typed::map<pair<Domain2, Range2>, Anonymous>(res);
36850 template <typename Domain2, typename Range2>
36851 typed::multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_multi_aff() const
36853 auto res = isl::pw_aff::as_multi_aff();
36854 return typed::multi_aff<pair<Domain2, Range2>, Anonymous>(res);
36857 template <typename Domain2, typename Range2>
36858 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_multi_union_pw_aff() const
36860 auto res = isl::pw_aff::as_multi_union_pw_aff();
36861 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36864 template <typename Domain2, typename Range2>
36865 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_pw_multi_aff() const
36867 auto res = isl::pw_aff::as_pw_multi_aff();
36868 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
36871 template <typename Domain2, typename Range2>
36872 typed::union_map<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::as_union_map() const
36874 auto res = isl::pw_aff::as_union_map();
36875 return typed::union_map<pair<Domain2, Range2>, Anonymous>(res);
36878 template <typename Domain2, typename Range2>
36879 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::at(int pos) const
36881 auto res = isl::pw_aff::at(pos);
36882 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36885 template <typename Domain2, typename Range2>
36886 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
36888 auto res = isl::pw_aff::bind(tuple);
36889 return typed::set<pair<Domain2, Range2>>(res);
36892 template <typename Domain2, typename Range2>
36893 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind(const typed::id<Anonymous> &id) const
36895 auto res = isl::pw_aff::bind(id);
36896 return typed::set<pair<Domain2, Range2>>(res);
36899 template <typename Domain2, typename Range2>
36900 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind(const std::string &id) const
36902 auto res = isl::pw_aff::bind(id);
36903 return typed::set<pair<Domain2, Range2>>(res);
36906 template <typename Domain2, typename Range2>
36907 typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
36909 auto res = isl::pw_aff::bind_domain(tuple);
36910 return typed::pw_aff<Anonymous>(res);
36913 template <typename Domain2, typename Range2>
36914 typed::pw_aff<Range2, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
36916 auto res = isl::pw_aff::bind_domain_wrapped_domain(tuple);
36917 return typed::pw_aff<Range2, Anonymous>(res);
36920 template <typename Domain2, typename Range2>
36921 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::ceil() const
36923 auto res = isl::pw_aff::ceil();
36924 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36927 template <typename Domain2, typename Range2>
36928 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::coalesce() const
36930 auto res = isl::pw_aff::coalesce();
36931 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36934 template <typename Domain2, typename Range2>
36935 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::cond(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_true, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff_false) const
36937 auto res = isl::pw_aff::cond(pwaff_true, pwaff_false);
36938 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36941 template <typename Domain2, typename Range2>
36942 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::domain() const
36944 auto res = isl::pw_aff::domain();
36945 return typed::set<pair<Domain2, Range2>>(res);
36948 template <typename Domain2, typename Range2>
36949 typed::pw_aff<pair<Range2, Domain2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::domain_reverse() const
36951 auto res = isl::pw_aff::domain_reverse();
36952 return typed::pw_aff<pair<Range2, Domain2>, Anonymous>(res);
36955 template <typename Domain2, typename Range2>
36956 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::drop_unused_params() const
36958 auto res = isl::pw_aff::drop_unused_params();
36959 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36962 template <typename Domain2, typename Range2>
36963 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Anonymous> &space) const
36965 auto res = isl::pw_aff::extract_pw_multi_aff(space);
36966 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
36969 template <typename Domain2, typename Range2>
36970 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::floor() const
36972 auto res = isl::pw_aff::floor();
36973 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36976 template <typename Domain2, typename Range2>
36977 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
36979 auto res = isl::pw_aff::ge_set(pwaff2);
36980 return typed::set<pair<Domain2, Range2>>(res);
36983 template <typename Domain2, typename Range2>
36984 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::ge_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
36986 auto res = isl::pw_aff::ge_set(pwaff2);
36987 return typed::set<pair<Domain2, Range2>>(res);
36990 template <typename Domain2, typename Range2>
36991 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::set<pair<Domain2, Range2>> &context) const
36993 auto res = isl::pw_aff::gist(context);
36994 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
36997 template <typename Domain2, typename Range2>
36998 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
37000 auto res = isl::pw_aff::gist(context);
37001 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37004 template <typename Domain2, typename Range2>
37005 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::basic_set<pair<Domain2, Range2>> &context) const
37007 auto res = isl::pw_aff::gist(context);
37008 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37011 template <typename Domain2, typename Range2>
37012 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist(const typed::point<pair<Domain2, Range2>> &context) const
37014 auto res = isl::pw_aff::gist(context);
37015 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37018 template <typename Domain2, typename Range2>
37019 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist_params(const typed::set<> &context) const
37021 auto res = isl::pw_aff::gist_params(context);
37022 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37025 template <typename Domain2, typename Range2>
37026 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist_params(const typed::basic_set<> &context) const
37028 auto res = isl::pw_aff::gist_params(context);
37029 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37032 template <typename Domain2, typename Range2>
37033 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gist_params(const typed::point<> &context) const
37035 auto res = isl::pw_aff::gist_params(context);
37036 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37039 template <typename Domain2, typename Range2>
37040 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37042 auto res = isl::pw_aff::gt_set(pwaff2);
37043 return typed::set<pair<Domain2, Range2>>(res);
37046 template <typename Domain2, typename Range2>
37047 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::gt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37049 auto res = isl::pw_aff::gt_set(pwaff2);
37050 return typed::set<pair<Domain2, Range2>>(res);
37053 template <typename Domain2, typename Range2>
37054 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::identity() const
37056 auto res = isl::pw_aff::identity();
37057 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37060 template <typename Domain2, typename Range2>
37061 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
37063 auto res = isl::pw_aff::intersect_domain(set);
37064 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37067 template <typename Domain2, typename Range2>
37068 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
37070 auto res = isl::pw_aff::intersect_domain(space);
37071 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37074 template <typename Domain2, typename Range2>
37075 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
37077 auto res = isl::pw_aff::intersect_domain(uset);
37078 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37081 template <typename Domain2, typename Range2>
37082 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
37084 auto res = isl::pw_aff::intersect_domain(set);
37085 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37088 template <typename Domain2, typename Range2>
37089 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const
37091 auto res = isl::pw_aff::intersect_domain(set);
37092 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37095 template <typename Domain2, typename Range2>
37096 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const
37098 auto res = isl::pw_aff::intersect_domain_wrapped_domain(uset);
37099 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37102 template <typename Domain2, typename Range2>
37103 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::set<> &set) const
37105 auto res = isl::pw_aff::intersect_params(set);
37106 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37109 template <typename Domain2, typename Range2>
37110 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::basic_set<> &set) const
37112 auto res = isl::pw_aff::intersect_params(set);
37113 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37116 template <typename Domain2, typename Range2>
37117 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::intersect_params(const typed::point<> &set) const
37119 auto res = isl::pw_aff::intersect_params(set);
37120 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37123 template <typename Domain2, typename Range2>
37124 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37126 auto res = isl::pw_aff::le_set(pwaff2);
37127 return typed::set<pair<Domain2, Range2>>(res);
37130 template <typename Domain2, typename Range2>
37131 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::le_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37133 auto res = isl::pw_aff::le_set(pwaff2);
37134 return typed::set<pair<Domain2, Range2>>(res);
37137 template <typename Domain2, typename Range2>
37138 typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::list() const
37140 auto res = isl::pw_aff::list();
37141 return typed::pw_aff_list<pair<Domain2, Range2>, Anonymous>(res);
37144 template <typename Domain2, typename Range2>
37145 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37147 auto res = isl::pw_aff::lt_set(pwaff2);
37148 return typed::set<pair<Domain2, Range2>>(res);
37151 template <typename Domain2, typename Range2>
37152 typed::set<pair<Domain2, Range2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::lt_set(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37154 auto res = isl::pw_aff::lt_set(pwaff2);
37155 return typed::set<pair<Domain2, Range2>>(res);
37158 template <typename Domain2, typename Range2>
37159 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
37161 auto res = isl::pw_aff::max(multi2);
37162 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37165 template <typename Domain2, typename Range2>
37166 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37168 auto res = isl::pw_aff::max(pwaff2);
37169 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37172 template <typename Domain2, typename Range2>
37173 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37175 auto res = isl::pw_aff::max(pwaff2);
37176 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37179 template <typename Domain2, typename Range2>
37180 typed::multi_val<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max_multi_val() const
37182 auto res = isl::pw_aff::max_multi_val();
37183 return typed::multi_val<Anonymous>(res);
37186 template <typename Domain2, typename Range2>
37187 typed::val<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::max_val() const
37189 auto res = isl::pw_aff::max_val();
37190 return typed::val<Anonymous>(res);
37193 template <typename Domain2, typename Range2>
37194 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
37196 auto res = isl::pw_aff::min(multi2);
37197 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37200 template <typename Domain2, typename Range2>
37201 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37203 auto res = isl::pw_aff::min(pwaff2);
37204 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37207 template <typename Domain2, typename Range2>
37208 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37210 auto res = isl::pw_aff::min(pwaff2);
37211 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37214 template <typename Domain2, typename Range2>
37215 typed::multi_val<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min_multi_val() const
37217 auto res = isl::pw_aff::min_multi_val();
37218 return typed::multi_val<Anonymous>(res);
37221 template <typename Domain2, typename Range2>
37222 typed::val<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::min_val() const
37224 auto res = isl::pw_aff::min_val();
37225 return typed::val<Anonymous>(res);
37228 template <typename Domain2, typename Range2>
37229 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::mod(const typed::val<Anonymous> &mod) const
37231 auto res = isl::pw_aff::mod(mod);
37232 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37235 template <typename Domain2, typename Range2>
37236 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::mod(long mod) const
37238 auto res = isl::pw_aff::mod(mod);
37239 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37242 template <typename Domain2, typename Range2>
37243 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::neg() const
37245 auto res = isl::pw_aff::neg();
37246 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37249 template <typename Domain2, typename Range2>
37250 typed::set<> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::params() const
37252 auto res = isl::pw_aff::params();
37253 return typed::set<>(res);
37256 template <typename Domain2, typename Range2>
37257 template <typename Domain3>
37258 typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
37260 auto res = isl::pw_aff::preimage_domain_wrapped_domain(pma2);
37261 return typed::pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
37264 template <typename Domain2, typename Range2>
37265 template <typename Domain3>
37266 typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
37268 auto res = isl::pw_aff::preimage_domain_wrapped_domain(upma2);
37269 return typed::union_pw_multi_aff<pair<Domain3, Range2>, Anonymous>(res);
37272 template <typename Domain2, typename Range2>
37273 template <typename Arg1, typename Arg2>
37274 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::product(const typed::multi_pw_aff<Arg1, Arg2> &multi2) const
37276 auto res = isl::pw_aff::product(multi2);
37277 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
37280 template <typename Domain2, typename Range2>
37281 template <typename Arg1, typename Arg2>
37282 typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::product(const typed::pw_multi_aff<Arg1, Arg2> &pma2) const
37284 auto res = isl::pw_aff::product(pma2);
37285 return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg1>, pair<Anonymous, Arg2>>(res);
37288 template <typename Domain2, typename Range2>
37289 template <typename Arg1>
37290 typed::pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<Arg1, pair<Domain2, Range2>> &ma) const
37292 auto res = isl::pw_aff::pullback(ma);
37293 return typed::pw_aff<Arg1, Anonymous>(res);
37296 template <typename Domain2, typename Range2>
37297 typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
37299 auto res = isl::pw_aff::pullback(ma);
37300 return typed::pw_aff<Anonymous>(res);
37303 template <typename Domain2, typename Range2>
37304 template <typename Arg1>
37305 typed::pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<Arg1, pair<Domain2, Range2>> &mpa) const
37307 auto res = isl::pw_aff::pullback(mpa);
37308 return typed::pw_aff<Arg1, Anonymous>(res);
37311 template <typename Domain2, typename Range2>
37312 typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa) const
37314 auto res = isl::pw_aff::pullback(mpa);
37315 return typed::pw_aff<Anonymous>(res);
37318 template <typename Domain2, typename Range2>
37319 template <typename Arg1>
37320 typed::pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<Arg1, pair<Domain2, Range2>> &pma) const
37322 auto res = isl::pw_aff::pullback(pma);
37323 return typed::pw_aff<Arg1, Anonymous>(res);
37326 template <typename Domain2, typename Range2>
37327 typed::pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma) const
37329 auto res = isl::pw_aff::pullback(pma);
37330 return typed::pw_aff<Anonymous>(res);
37333 template <typename Domain2, typename Range2>
37334 template <typename Arg1>
37335 typed::union_pw_aff<Arg1, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<Arg1, pair<Domain2, Range2>> &upma) const
37337 auto res = isl::pw_aff::pullback(upma);
37338 return typed::union_pw_aff<Arg1, Anonymous>(res);
37341 template <typename Domain2, typename Range2>
37342 typed::union_pw_aff<Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma) const
37344 auto res = isl::pw_aff::pullback(upma);
37345 return typed::union_pw_aff<Anonymous>(res);
37348 template <typename Domain2, typename Range2>
37349 typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::pw_multi_aff_list() const
37351 auto res = isl::pw_aff::pw_multi_aff_list();
37352 return typed::pw_multi_aff_list<pair<Domain2, Range2>, Anonymous>(res);
37355 template <typename Domain2, typename Range2>
37356 template <typename Arg1>
37357 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
37359 auto res = isl::pw_aff::range_product(multi2);
37360 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
37363 template <typename Domain2, typename Range2>
37364 template <typename Arg1>
37365 typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg1> &multi2) const
37367 auto res = isl::pw_aff::range_product(multi2);
37368 return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
37371 template <typename Domain2, typename Range2>
37372 template <typename Arg1>
37373 typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> &pma2) const
37375 auto res = isl::pw_aff::range_product(pma2);
37376 return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
37379 template <typename Domain2, typename Range2>
37380 template <typename Arg1>
37381 typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg1> &upma2) const
37383 auto res = isl::pw_aff::range_product(upma2);
37384 return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Anonymous, Arg1>>(res);
37387 template <typename Domain2, typename Range2>
37388 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::val<Anonymous> &v) const
37390 auto res = isl::pw_aff::scale(v);
37391 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37394 template <typename Domain2, typename Range2>
37395 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale(long v) const
37397 auto res = isl::pw_aff::scale(v);
37398 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37401 template <typename Domain2, typename Range2>
37402 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
37404 auto res = isl::pw_aff::scale(mv);
37405 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
37408 template <typename Domain2, typename Range2>
37409 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::val<Anonymous> &f) const
37411 auto res = isl::pw_aff::scale_down(f);
37412 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37415 template <typename Domain2, typename Range2>
37416 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale_down(long f) const
37418 auto res = isl::pw_aff::scale_down(f);
37419 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37422 template <typename Domain2, typename Range2>
37423 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
37425 auto res = isl::pw_aff::scale_down(mv);
37426 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
37429 template <typename Domain2, typename Range2>
37430 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
37432 auto res = isl::pw_aff::set_at(pos, el);
37433 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37436 template <typename Domain2, typename Range2>
37437 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
37439 auto res = isl::pw_aff::set_at(pos, el);
37440 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37443 template <typename Domain2, typename Range2>
37444 template <typename Arg1>
37445 typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
37447 auto res = isl::pw_aff::set_range_tuple(id);
37448 return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
37451 template <typename Domain2, typename Range2>
37452 template <typename Arg1>
37453 typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::set_range_tuple(const std::string &id) const
37455 auto res = isl::pw_aff::set_range_tuple(id);
37456 return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
37459 template <typename Domain2, typename Range2>
37460 typed::space<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::space() const
37462 auto res = isl::pw_aff::space();
37463 return typed::space<pair<Domain2, Range2>, Anonymous>(res);
37466 template <typename Domain2, typename Range2>
37467 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
37469 auto res = isl::pw_aff::sub(multi2);
37470 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37473 template <typename Domain2, typename Range2>
37474 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &multi2) const
37476 auto res = isl::pw_aff::sub(multi2);
37477 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37480 template <typename Domain2, typename Range2>
37481 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37483 auto res = isl::pw_aff::sub(pwaff2);
37484 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37487 template <typename Domain2, typename Range2>
37488 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
37490 auto res = isl::pw_aff::sub(pma2);
37491 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
37494 template <typename Domain2, typename Range2>
37495 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
37497 auto res = isl::pw_aff::sub(upa2);
37498 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37501 template <typename Domain2, typename Range2>
37502 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
37504 auto res = isl::pw_aff::sub(upma2);
37505 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
37508 template <typename Domain2, typename Range2>
37509 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::sub(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37511 auto res = isl::pw_aff::sub(pwaff2);
37512 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37515 template <typename Domain2, typename Range2>
37516 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
37518 auto res = isl::pw_aff::subtract_domain(set);
37519 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37522 template <typename Domain2, typename Range2>
37523 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
37525 auto res = isl::pw_aff::subtract_domain(space);
37526 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37529 template <typename Domain2, typename Range2>
37530 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
37532 auto res = isl::pw_aff::subtract_domain(uset);
37533 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37536 template <typename Domain2, typename Range2>
37537 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
37539 auto res = isl::pw_aff::subtract_domain(set);
37540 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37543 template <typename Domain2, typename Range2>
37544 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const
37546 auto res = isl::pw_aff::subtract_domain(set);
37547 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37550 template <typename Domain2, typename Range2>
37551 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::to_multi_pw_aff() const
37553 auto res = isl::pw_aff::to_multi_pw_aff();
37554 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37557 template <typename Domain2, typename Range2>
37558 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_aff() const
37560 auto res = isl::pw_aff::to_union_pw_aff();
37561 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37564 template <typename Domain2, typename Range2>
37565 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::to_union_pw_multi_aff() const
37567 auto res = isl::pw_aff::to_union_pw_multi_aff();
37568 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
37571 template <typename Domain2, typename Range2>
37572 typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous> &mpa2) const
37574 auto res = isl::pw_aff::union_add(mpa2);
37575 return typed::multi_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37578 template <typename Domain2, typename Range2>
37579 typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous> &mupa2) const
37581 auto res = isl::pw_aff::union_add(mupa2);
37582 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37585 template <typename Domain2, typename Range2>
37586 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37588 auto res = isl::pw_aff::union_add(pwaff2);
37589 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37592 template <typename Domain2, typename Range2>
37593 typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
37595 auto res = isl::pw_aff::union_add(pma2);
37596 return typed::pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
37599 template <typename Domain2, typename Range2>
37600 typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &upa2) const
37602 auto res = isl::pw_aff::union_add(upa2);
37603 return typed::union_pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37606 template <typename Domain2, typename Range2>
37607 typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous> &upma2) const
37609 auto res = isl::pw_aff::union_add(upma2);
37610 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Anonymous>(res);
37613 template <typename Domain2, typename Range2>
37614 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_aff<pair<Domain2, Range2>, Anonymous>::union_add(const typed::aff<pair<Domain2, Range2>, Anonymous> &pwaff2) const
37616 auto res = isl::pw_aff::union_add(pwaff2);
37617 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
37620 typed::pw_aff_list<Anonymous>::pw_aff_list(const isl::ctx &ctx, int n)
37621 : isl::pw_aff_list(ctx, n)
37625 typed::pw_aff_list<Anonymous>::pw_aff_list(const typed::pw_aff<Anonymous> &el)
37626 : isl::pw_aff_list(el)
37630 typed::pw_aff_list<Anonymous>::pw_aff_list(const isl::ctx &ctx, const std::string &str)
37631 : isl::pw_aff_list(ctx, str)
37635 typed::pw_aff_list<Anonymous> typed::pw_aff_list<Anonymous>::add(const typed::pw_aff<Anonymous> &el) const
37637 auto res = isl::pw_aff_list::add(el);
37638 return typed::pw_aff_list<Anonymous>(res);
37641 typed::pw_aff_list<Anonymous> typed::pw_aff_list<Anonymous>::add(const typed::aff<Anonymous> &el) const
37643 auto res = isl::pw_aff_list::add(el);
37644 return typed::pw_aff_list<Anonymous>(res);
37647 typed::pw_aff<Anonymous> typed::pw_aff_list<Anonymous>::at(int index) const
37649 auto res = isl::pw_aff_list::at(index);
37650 return typed::pw_aff<Anonymous>(res);
37653 typed::pw_aff_list<Anonymous> typed::pw_aff_list<Anonymous>::drop(unsigned int first, unsigned int n) const
37655 auto res = isl::pw_aff_list::drop(first, n);
37656 return typed::pw_aff_list<Anonymous>(res);
37659 void typed::pw_aff_list<Anonymous>::foreach(const std::function<void(typed::pw_aff<Anonymous>)> &fn) const
37661 auto lambda_fn = [&] (isl::pw_aff arg0) {
37662 return fn(typed::pw_aff<Anonymous>(arg0));
37664 return isl::pw_aff_list::foreach(lambda_fn);
37667 void typed::pw_aff_list<Anonymous>::foreach_scc(const std::function<bool(typed::pw_aff<Anonymous>, typed::pw_aff<Anonymous>)> &follows, const std::function<void(typed::pw_aff_list<Anonymous>)> &fn) const
37669 auto lambda_follows = [&] (isl::pw_aff arg0, isl::pw_aff arg1) {
37670 return follows(typed::pw_aff<Anonymous>(arg0), typed::pw_aff<Anonymous>(arg1));
37672 auto lambda_fn = [&] (isl::pw_aff_list arg0) {
37673 return fn(typed::pw_aff_list<Anonymous>(arg0));
37675 return isl::pw_aff_list::foreach_scc(lambda_follows, lambda_fn);
37678 typed::pw_aff_list<Anonymous> typed::pw_aff_list<Anonymous>::set_at(int index, const typed::pw_aff<Anonymous> &el) const
37680 auto res = isl::pw_aff_list::set_at(index, el);
37681 return typed::pw_aff_list<Anonymous>(res);
37684 template <typename Domain>
37685 typed::pw_aff_list<Domain, Anonymous>::pw_aff_list(const isl::ctx &ctx, int n)
37686 : isl::pw_aff_list(ctx, n)
37690 template <typename Domain>
37691 typed::pw_aff_list<Domain, Anonymous>::pw_aff_list(const typed::pw_aff<Domain, Anonymous> &el)
37692 : isl::pw_aff_list(el)
37696 template <typename Domain>
37697 typed::pw_aff_list<Domain, Anonymous>::pw_aff_list(const isl::ctx &ctx, const std::string &str)
37698 : isl::pw_aff_list(ctx, str)
37702 template <typename Domain>
37703 typed::pw_aff_list<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &el) const
37705 auto res = isl::pw_aff_list::add(el);
37706 return typed::pw_aff_list<Domain, Anonymous>(res);
37709 template <typename Domain>
37710 typed::pw_aff_list<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &el) const
37712 auto res = isl::pw_aff_list::add(el);
37713 return typed::pw_aff_list<Domain, Anonymous>(res);
37716 template <typename Domain>
37717 typed::pw_aff<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::at(int index) const
37719 auto res = isl::pw_aff_list::at(index);
37720 return typed::pw_aff<Domain, Anonymous>(res);
37723 template <typename Domain>
37724 typed::pw_aff_list<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::drop(unsigned int first, unsigned int n) const
37726 auto res = isl::pw_aff_list::drop(first, n);
37727 return typed::pw_aff_list<Domain, Anonymous>(res);
37730 template <typename Domain>
37731 void typed::pw_aff_list<Domain, Anonymous>::foreach(const std::function<void(typed::pw_aff<Domain, Anonymous>)> &fn) const
37733 auto lambda_fn = [&] (isl::pw_aff arg0) {
37734 return fn(typed::pw_aff<Domain, Anonymous>(arg0));
37736 return isl::pw_aff_list::foreach(lambda_fn);
37739 template <typename Domain>
37740 void typed::pw_aff_list<Domain, Anonymous>::foreach_scc(const std::function<bool(typed::pw_aff<Domain, Anonymous>, typed::pw_aff<Domain, Anonymous>)> &follows, const std::function<void(typed::pw_aff_list<Domain, Anonymous>)> &fn) const
37742 auto lambda_follows = [&] (isl::pw_aff arg0, isl::pw_aff arg1) {
37743 return follows(typed::pw_aff<Domain, Anonymous>(arg0), typed::pw_aff<Domain, Anonymous>(arg1));
37745 auto lambda_fn = [&] (isl::pw_aff_list arg0) {
37746 return fn(typed::pw_aff_list<Domain, Anonymous>(arg0));
37748 return isl::pw_aff_list::foreach_scc(lambda_follows, lambda_fn);
37751 template <typename Domain>
37752 typed::pw_aff_list<Domain, Anonymous> typed::pw_aff_list<Domain, Anonymous>::set_at(int index, const typed::pw_aff<Domain, Anonymous> &el) const
37754 auto res = isl::pw_aff_list::set_at(index, el);
37755 return typed::pw_aff_list<Domain, Anonymous>(res);
37758 template <typename Domain>
37759 typed::pw_multi_aff<Domain>::pw_multi_aff(const typed::multi_aff<Domain> &ma)
37760 : isl::pw_multi_aff(ma)
37764 template <typename Domain>
37765 typed::pw_multi_aff<Domain>::pw_multi_aff(const typed::pw_aff<Domain> &pa)
37766 : isl::pw_multi_aff(pa)
37770 template <typename Domain>
37771 typed::pw_multi_aff<Domain>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
37772 : isl::pw_multi_aff(ctx, str)
37776 template <typename Domain>
37777 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::multi_pw_aff<Domain> &multi2) const
37779 auto res = isl::pw_multi_aff::add(multi2);
37780 return typed::multi_pw_aff<Domain>(res);
37783 template <typename Domain>
37784 typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::multi_union_pw_aff<Domain> &multi2) const
37786 auto res = isl::pw_multi_aff::add(multi2);
37787 return typed::multi_union_pw_aff<Domain>(res);
37790 template <typename Domain>
37791 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::pw_multi_aff<Domain> &pma2) const
37793 auto res = isl::pw_multi_aff::add(pma2);
37794 return typed::pw_multi_aff<Domain>(res);
37797 template <typename Domain>
37798 typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::union_pw_multi_aff<Domain> &upma2) const
37800 auto res = isl::pw_multi_aff::add(upma2);
37801 return typed::union_pw_multi_aff<Domain>(res);
37804 template <typename Domain>
37805 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::multi_aff<Domain> &pma2) const
37807 auto res = isl::pw_multi_aff::add(pma2);
37808 return typed::pw_multi_aff<Domain>(res);
37811 template <typename Domain>
37812 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add(const typed::pw_aff<Domain> &pma2) const
37814 auto res = isl::pw_multi_aff::add(pma2);
37815 return typed::pw_multi_aff<Domain>(res);
37818 template <typename Domain>
37819 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add_constant(const typed::multi_val<Domain> &mv) const
37821 auto res = isl::pw_multi_aff::add_constant(mv);
37822 return typed::pw_multi_aff<Domain>(res);
37825 template <typename Domain>
37826 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add_constant(const typed::val<Domain> &v) const
37828 auto res = isl::pw_multi_aff::add_constant(v);
37829 return typed::pw_multi_aff<Domain>(res);
37832 template <typename Domain>
37833 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::add_constant(long v) const
37835 auto res = isl::pw_multi_aff::add_constant(v);
37836 return typed::pw_multi_aff<Domain>(res);
37839 template <typename Domain>
37840 template <typename Range>
37841 typed::union_pw_multi_aff<Range> typed::pw_multi_aff<Domain>::apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
37843 auto res = isl::pw_multi_aff::apply(upma2);
37844 return typed::union_pw_multi_aff<Range>(res);
37847 template <typename Domain>
37848 typed::multi_aff<Domain> typed::pw_multi_aff<Domain>::as_multi_aff() const
37850 auto res = isl::pw_multi_aff::as_multi_aff();
37851 return typed::multi_aff<Domain>(res);
37854 template <typename Domain>
37855 typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::as_multi_union_pw_aff() const
37857 auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
37858 return typed::multi_union_pw_aff<Domain>(res);
37861 template <typename Domain>
37862 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::as_pw_multi_aff() const
37864 auto res = isl::pw_multi_aff::as_pw_multi_aff();
37865 return typed::pw_multi_aff<Domain>(res);
37868 template <typename Domain>
37869 typed::set<Domain> typed::pw_multi_aff<Domain>::as_set() const
37871 auto res = isl::pw_multi_aff::as_set();
37872 return typed::set<Domain>(res);
37875 template <typename Domain>
37876 typed::pw_aff<Anonymous> typed::pw_multi_aff<Domain>::at(int pos) const
37878 auto res = isl::pw_multi_aff::at(pos);
37879 return typed::pw_aff<Anonymous>(res);
37882 template <typename Domain>
37883 typed::set<> typed::pw_multi_aff<Domain>::bind(const typed::multi_id<Domain> &tuple) const
37885 auto res = isl::pw_multi_aff::bind(tuple);
37886 return typed::set<>(res);
37889 template <typename Domain>
37890 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::coalesce() const
37892 auto res = isl::pw_multi_aff::coalesce();
37893 return typed::pw_multi_aff<Domain>(res);
37896 template <typename Domain>
37897 typed::set<> typed::pw_multi_aff<Domain>::domain() const
37899 auto res = isl::pw_multi_aff::domain();
37900 return typed::set<>(res);
37903 template <typename Domain>
37904 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::drop_unused_params() const
37906 auto res = isl::pw_multi_aff::drop_unused_params();
37907 return typed::pw_multi_aff<Domain>(res);
37910 template <typename Domain>
37911 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::extract_pw_multi_aff(const typed::space<Domain> &space) const
37913 auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
37914 return typed::pw_multi_aff<Domain>(res);
37917 template <typename Domain>
37918 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::set<> &set) const
37920 auto res = isl::pw_multi_aff::gist(set);
37921 return typed::pw_multi_aff<Domain>(res);
37924 template <typename Domain>
37925 typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::union_set<> &context) const
37927 auto res = isl::pw_multi_aff::gist(context);
37928 return typed::union_pw_multi_aff<Domain>(res);
37931 template <typename Domain>
37932 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::basic_set<> &set) const
37934 auto res = isl::pw_multi_aff::gist(set);
37935 return typed::pw_multi_aff<Domain>(res);
37938 template <typename Domain>
37939 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist(const typed::point<> &set) const
37941 auto res = isl::pw_multi_aff::gist(set);
37942 return typed::pw_multi_aff<Domain>(res);
37945 template <typename Domain>
37946 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist_params(const typed::set<> &set) const
37948 auto res = isl::pw_multi_aff::gist_params(set);
37949 return typed::pw_multi_aff<Domain>(res);
37952 template <typename Domain>
37953 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist_params(const typed::basic_set<> &set) const
37955 auto res = isl::pw_multi_aff::gist_params(set);
37956 return typed::pw_multi_aff<Domain>(res);
37959 template <typename Domain>
37960 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::gist_params(const typed::point<> &set) const
37962 auto res = isl::pw_multi_aff::gist_params(set);
37963 return typed::pw_multi_aff<Domain>(res);
37966 template <typename Domain>
37967 typed::multi_pw_aff<Domain, Domain> typed::pw_multi_aff<Domain>::identity() const
37969 auto res = isl::pw_multi_aff::identity();
37970 return typed::multi_pw_aff<Domain, Domain>(res);
37973 template <typename Domain>
37974 template <typename Arg1>
37975 typed::pw_multi_aff<Arg1, Domain> typed::pw_multi_aff<Domain>::insert_domain(const typed::space<Arg1> &domain) const
37977 auto res = isl::pw_multi_aff::insert_domain(domain);
37978 return typed::pw_multi_aff<Arg1, Domain>(res);
37981 template <typename Domain>
37982 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::intersect_params(const typed::set<> &set) const
37984 auto res = isl::pw_multi_aff::intersect_params(set);
37985 return typed::pw_multi_aff<Domain>(res);
37988 template <typename Domain>
37989 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::intersect_params(const typed::basic_set<> &set) const
37991 auto res = isl::pw_multi_aff::intersect_params(set);
37992 return typed::pw_multi_aff<Domain>(res);
37995 template <typename Domain>
37996 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::intersect_params(const typed::point<> &set) const
37998 auto res = isl::pw_multi_aff::intersect_params(set);
37999 return typed::pw_multi_aff<Domain>(res);
38002 template <typename Domain>
38003 typed::pw_aff_list<Anonymous> typed::pw_multi_aff<Domain>::list() const
38005 auto res = isl::pw_multi_aff::list();
38006 return typed::pw_aff_list<Anonymous>(res);
38009 template <typename Domain>
38010 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::max(const typed::multi_pw_aff<Domain> &multi2) const
38012 auto res = isl::pw_multi_aff::max(multi2);
38013 return typed::multi_pw_aff<Domain>(res);
38016 template <typename Domain>
38017 typed::multi_val<Domain> typed::pw_multi_aff<Domain>::max_multi_val() const
38019 auto res = isl::pw_multi_aff::max_multi_val();
38020 return typed::multi_val<Domain>(res);
38023 template <typename Domain>
38024 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::min(const typed::multi_pw_aff<Domain> &multi2) const
38026 auto res = isl::pw_multi_aff::min(multi2);
38027 return typed::multi_pw_aff<Domain>(res);
38030 template <typename Domain>
38031 typed::multi_val<Domain> typed::pw_multi_aff<Domain>::min_multi_val() const
38033 auto res = isl::pw_multi_aff::min_multi_val();
38034 return typed::multi_val<Domain>(res);
38037 template <typename Domain>
38038 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::neg() const
38040 auto res = isl::pw_multi_aff::neg();
38041 return typed::multi_pw_aff<Domain>(res);
38044 template <typename Domain>
38045 template <typename Range>
38046 typed::multi_pw_aff<pair<Domain, Range>> typed::pw_multi_aff<Domain>::product(const typed::multi_pw_aff<Range> &multi2) const
38048 auto res = isl::pw_multi_aff::product(multi2);
38049 return typed::multi_pw_aff<pair<Domain, Range>>(res);
38052 template <typename Domain>
38053 template <typename Range>
38054 typed::pw_multi_aff<pair<Domain, Range>> typed::pw_multi_aff<Domain>::product(const typed::pw_multi_aff<Range> &pma2) const
38056 auto res = isl::pw_multi_aff::product(pma2);
38057 return typed::pw_multi_aff<pair<Domain, Range>>(res);
38060 template <typename Domain>
38061 template <typename Range>
38062 typed::pw_multi_aff<pair<Domain, Range>> typed::pw_multi_aff<Domain>::product(const typed::multi_aff<Range> &pma2) const
38064 auto res = isl::pw_multi_aff::product(pma2);
38065 return typed::pw_multi_aff<pair<Domain, Range>>(res);
38068 template <typename Domain>
38069 typed::pw_multi_aff<pair<Domain, Anonymous>> typed::pw_multi_aff<Domain>::product(const typed::pw_aff<Anonymous> &pma2) const
38071 auto res = isl::pw_multi_aff::product(pma2);
38072 return typed::pw_multi_aff<pair<Domain, Anonymous>>(res);
38075 template <typename Domain>
38076 typed::pw_multi_aff_list<Domain> typed::pw_multi_aff<Domain>::pw_multi_aff_list() const
38078 auto res = isl::pw_multi_aff::pw_multi_aff_list();
38079 return typed::pw_multi_aff_list<Domain>(res);
38082 template <typename Domain>
38083 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale(const typed::multi_val<Domain> &mv) const
38085 auto res = isl::pw_multi_aff::scale(mv);
38086 return typed::pw_multi_aff<Domain>(res);
38089 template <typename Domain>
38090 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale(const typed::val<Domain> &v) const
38092 auto res = isl::pw_multi_aff::scale(v);
38093 return typed::pw_multi_aff<Domain>(res);
38096 template <typename Domain>
38097 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale(long v) const
38099 auto res = isl::pw_multi_aff::scale(v);
38100 return typed::pw_multi_aff<Domain>(res);
38103 template <typename Domain>
38104 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale_down(const typed::multi_val<Domain> &mv) const
38106 auto res = isl::pw_multi_aff::scale_down(mv);
38107 return typed::pw_multi_aff<Domain>(res);
38110 template <typename Domain>
38111 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale_down(const typed::val<Domain> &v) const
38113 auto res = isl::pw_multi_aff::scale_down(v);
38114 return typed::pw_multi_aff<Domain>(res);
38117 template <typename Domain>
38118 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::scale_down(long v) const
38120 auto res = isl::pw_multi_aff::scale_down(v);
38121 return typed::pw_multi_aff<Domain>(res);
38124 template <typename Domain>
38125 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::set_at(int pos, const typed::pw_aff<Anonymous> &el) const
38127 auto res = isl::pw_multi_aff::set_at(pos, el);
38128 return typed::multi_pw_aff<Domain>(res);
38131 template <typename Domain>
38132 typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
38134 auto res = isl::pw_multi_aff::set_at(pos, el);
38135 return typed::multi_union_pw_aff<Domain>(res);
38138 template <typename Domain>
38139 template <typename Domain2>
38140 typed::pw_multi_aff<Domain2> typed::pw_multi_aff<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
38142 auto res = isl::pw_multi_aff::set_range_tuple(id);
38143 return typed::pw_multi_aff<Domain2>(res);
38146 template <typename Domain>
38147 template <typename Domain2>
38148 typed::pw_multi_aff<Domain2> typed::pw_multi_aff<Domain>::set_range_tuple(const std::string &id) const
38150 auto res = isl::pw_multi_aff::set_range_tuple(id);
38151 return typed::pw_multi_aff<Domain2>(res);
38154 template <typename Domain>
38155 typed::space<Domain> typed::pw_multi_aff<Domain>::space() const
38157 auto res = isl::pw_multi_aff::space();
38158 return typed::space<Domain>(res);
38161 template <typename Domain>
38162 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::multi_pw_aff<Domain> &multi2) const
38164 auto res = isl::pw_multi_aff::sub(multi2);
38165 return typed::multi_pw_aff<Domain>(res);
38168 template <typename Domain>
38169 typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::multi_union_pw_aff<Domain> &multi2) const
38171 auto res = isl::pw_multi_aff::sub(multi2);
38172 return typed::multi_union_pw_aff<Domain>(res);
38175 template <typename Domain>
38176 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &pma2) const
38178 auto res = isl::pw_multi_aff::sub(pma2);
38179 return typed::pw_multi_aff<Domain>(res);
38182 template <typename Domain>
38183 typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::union_pw_multi_aff<Domain> &upma2) const
38185 auto res = isl::pw_multi_aff::sub(upma2);
38186 return typed::union_pw_multi_aff<Domain>(res);
38189 template <typename Domain>
38190 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::multi_aff<Domain> &pma2) const
38192 auto res = isl::pw_multi_aff::sub(pma2);
38193 return typed::pw_multi_aff<Domain>(res);
38196 template <typename Domain>
38197 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::sub(const typed::pw_aff<Domain> &pma2) const
38199 auto res = isl::pw_multi_aff::sub(pma2);
38200 return typed::pw_multi_aff<Domain>(res);
38203 template <typename Domain>
38204 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::to_multi_pw_aff() const
38206 auto res = isl::pw_multi_aff::to_multi_pw_aff();
38207 return typed::multi_pw_aff<Domain>(res);
38210 template <typename Domain>
38211 typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::to_union_pw_multi_aff() const
38213 auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
38214 return typed::union_pw_multi_aff<Domain>(res);
38217 template <typename Domain>
38218 template <typename Arg1>
38219 typed::multi_pw_aff<Arg1, Domain> typed::pw_multi_aff<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
38221 auto res = isl::pw_multi_aff::unbind_params_insert_domain(domain);
38222 return typed::multi_pw_aff<Arg1, Domain>(res);
38225 template <typename Domain>
38226 typed::multi_pw_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::multi_pw_aff<Domain> &mpa2) const
38228 auto res = isl::pw_multi_aff::union_add(mpa2);
38229 return typed::multi_pw_aff<Domain>(res);
38232 template <typename Domain>
38233 typed::multi_union_pw_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::multi_union_pw_aff<Domain> &mupa2) const
38235 auto res = isl::pw_multi_aff::union_add(mupa2);
38236 return typed::multi_union_pw_aff<Domain>(res);
38239 template <typename Domain>
38240 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &pma2) const
38242 auto res = isl::pw_multi_aff::union_add(pma2);
38243 return typed::pw_multi_aff<Domain>(res);
38246 template <typename Domain>
38247 typed::union_pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::union_pw_multi_aff<Domain> &upma2) const
38249 auto res = isl::pw_multi_aff::union_add(upma2);
38250 return typed::union_pw_multi_aff<Domain>(res);
38253 template <typename Domain>
38254 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::multi_aff<Domain> &pma2) const
38256 auto res = isl::pw_multi_aff::union_add(pma2);
38257 return typed::pw_multi_aff<Domain>(res);
38260 template <typename Domain>
38261 typed::pw_multi_aff<Domain> typed::pw_multi_aff<Domain>::union_add(const typed::pw_aff<Domain> &pma2) const
38263 auto res = isl::pw_multi_aff::union_add(pma2);
38264 return typed::pw_multi_aff<Domain>(res);
38267 template <typename Domain, typename Range>
38268 typed::pw_multi_aff<Domain, Range>::pw_multi_aff(const typed::multi_aff<Domain, Range> &ma)
38269 : isl::pw_multi_aff(ma)
38273 template <typename Domain, typename Range>
38274 typed::pw_multi_aff<Domain, Range>::pw_multi_aff(const typed::pw_aff<Domain, Range> &pa)
38275 : isl::pw_multi_aff(pa)
38279 template <typename Domain, typename Range>
38280 typed::pw_multi_aff<Domain, Range>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
38281 : isl::pw_multi_aff(ctx, str)
38285 template <typename Domain, typename Range>
38286 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::multi_pw_aff<Domain, Range> &multi2) const
38288 auto res = isl::pw_multi_aff::add(multi2);
38289 return typed::multi_pw_aff<Domain, Range>(res);
38292 template <typename Domain, typename Range>
38293 typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
38295 auto res = isl::pw_multi_aff::add(multi2);
38296 return typed::multi_union_pw_aff<Domain, Range>(res);
38299 template <typename Domain, typename Range>
38300 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &pma2) const
38302 auto res = isl::pw_multi_aff::add(pma2);
38303 return typed::pw_multi_aff<Domain, Range>(res);
38306 template <typename Domain, typename Range>
38307 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
38309 auto res = isl::pw_multi_aff::add(upma2);
38310 return typed::union_pw_multi_aff<Domain, Range>(res);
38313 template <typename Domain, typename Range>
38314 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &pma2) const
38316 auto res = isl::pw_multi_aff::add(pma2);
38317 return typed::pw_multi_aff<Domain, Range>(res);
38320 template <typename Domain, typename Range>
38321 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add(const typed::pw_aff<Domain, Range> &pma2) const
38323 auto res = isl::pw_multi_aff::add(pma2);
38324 return typed::pw_multi_aff<Domain, Range>(res);
38327 template <typename Domain, typename Range>
38328 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add_constant(const typed::multi_val<Range> &mv) const
38330 auto res = isl::pw_multi_aff::add_constant(mv);
38331 return typed::pw_multi_aff<Domain, Range>(res);
38334 template <typename Domain, typename Range>
38335 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add_constant(const typed::val<Range> &v) const
38337 auto res = isl::pw_multi_aff::add_constant(v);
38338 return typed::pw_multi_aff<Domain, Range>(res);
38341 template <typename Domain, typename Range>
38342 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::add_constant(long v) const
38344 auto res = isl::pw_multi_aff::add_constant(v);
38345 return typed::pw_multi_aff<Domain, Range>(res);
38348 template <typename Domain, typename Range>
38349 template <typename Range2>
38350 typed::union_pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
38352 auto res = isl::pw_multi_aff::apply(upma2);
38353 return typed::union_pw_multi_aff<Domain, Range2>(res);
38356 template <typename Domain, typename Range>
38357 typed::map<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_map() const
38359 auto res = isl::pw_multi_aff::as_map();
38360 return typed::map<Domain, Range>(res);
38363 template <typename Domain, typename Range>
38364 typed::multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_multi_aff() const
38366 auto res = isl::pw_multi_aff::as_multi_aff();
38367 return typed::multi_aff<Domain, Range>(res);
38370 template <typename Domain, typename Range>
38371 typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_multi_union_pw_aff() const
38373 auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
38374 return typed::multi_union_pw_aff<Domain, Range>(res);
38377 template <typename Domain, typename Range>
38378 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_pw_multi_aff() const
38380 auto res = isl::pw_multi_aff::as_pw_multi_aff();
38381 return typed::pw_multi_aff<Domain, Range>(res);
38384 template <typename Domain, typename Range>
38385 typed::union_map<Domain, Range> typed::pw_multi_aff<Domain, Range>::as_union_map() const
38387 auto res = isl::pw_multi_aff::as_union_map();
38388 return typed::union_map<Domain, Range>(res);
38391 template <typename Domain, typename Range>
38392 typed::pw_aff<Domain, Anonymous> typed::pw_multi_aff<Domain, Range>::at(int pos) const
38394 auto res = isl::pw_multi_aff::at(pos);
38395 return typed::pw_aff<Domain, Anonymous>(res);
38398 template <typename Domain, typename Range>
38399 typed::set<Domain> typed::pw_multi_aff<Domain, Range>::bind(const typed::multi_id<Range> &tuple) const
38401 auto res = isl::pw_multi_aff::bind(tuple);
38402 return typed::set<Domain>(res);
38405 template <typename Domain, typename Range>
38406 typed::pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::bind_domain(const typed::multi_id<Domain> &tuple) const
38408 auto res = isl::pw_multi_aff::bind_domain(tuple);
38409 return typed::pw_multi_aff<Range>(res);
38412 template <typename Domain, typename Range>
38413 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::coalesce() const
38415 auto res = isl::pw_multi_aff::coalesce();
38416 return typed::pw_multi_aff<Domain, Range>(res);
38419 template <typename Domain, typename Range>
38420 typed::set<Domain> typed::pw_multi_aff<Domain, Range>::domain() const
38422 auto res = isl::pw_multi_aff::domain();
38423 return typed::set<Domain>(res);
38426 template <typename Domain, typename Range>
38427 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::drop_unused_params() const
38429 auto res = isl::pw_multi_aff::drop_unused_params();
38430 return typed::pw_multi_aff<Domain, Range>(res);
38433 template <typename Domain, typename Range>
38434 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::extract_pw_multi_aff(const typed::space<Domain, Range> &space) const
38436 auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
38437 return typed::pw_multi_aff<Domain, Range>(res);
38440 template <typename Domain, typename Range>
38441 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::set<Domain> &set) const
38443 auto res = isl::pw_multi_aff::gist(set);
38444 return typed::pw_multi_aff<Domain, Range>(res);
38447 template <typename Domain, typename Range>
38448 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
38450 auto res = isl::pw_multi_aff::gist(context);
38451 return typed::union_pw_multi_aff<Domain, Range>(res);
38454 template <typename Domain, typename Range>
38455 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::basic_set<Domain> &set) const
38457 auto res = isl::pw_multi_aff::gist(set);
38458 return typed::pw_multi_aff<Domain, Range>(res);
38461 template <typename Domain, typename Range>
38462 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist(const typed::point<Domain> &set) const
38464 auto res = isl::pw_multi_aff::gist(set);
38465 return typed::pw_multi_aff<Domain, Range>(res);
38468 template <typename Domain, typename Range>
38469 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist_params(const typed::set<> &set) const
38471 auto res = isl::pw_multi_aff::gist_params(set);
38472 return typed::pw_multi_aff<Domain, Range>(res);
38475 template <typename Domain, typename Range>
38476 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist_params(const typed::basic_set<> &set) const
38478 auto res = isl::pw_multi_aff::gist_params(set);
38479 return typed::pw_multi_aff<Domain, Range>(res);
38482 template <typename Domain, typename Range>
38483 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::gist_params(const typed::point<> &set) const
38485 auto res = isl::pw_multi_aff::gist_params(set);
38486 return typed::pw_multi_aff<Domain, Range>(res);
38489 template <typename Domain, typename Range>
38490 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::identity() const
38492 auto res = isl::pw_multi_aff::identity();
38493 return typed::multi_pw_aff<Domain, Range>(res);
38496 template <typename Domain, typename Range>
38497 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::set<Domain> &set) const
38499 auto res = isl::pw_multi_aff::intersect_domain(set);
38500 return typed::pw_multi_aff<Domain, Range>(res);
38503 template <typename Domain, typename Range>
38504 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
38506 auto res = isl::pw_multi_aff::intersect_domain(space);
38507 return typed::union_pw_multi_aff<Domain, Range>(res);
38510 template <typename Domain, typename Range>
38511 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
38513 auto res = isl::pw_multi_aff::intersect_domain(uset);
38514 return typed::union_pw_multi_aff<Domain, Range>(res);
38517 template <typename Domain, typename Range>
38518 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::basic_set<Domain> &set) const
38520 auto res = isl::pw_multi_aff::intersect_domain(set);
38521 return typed::pw_multi_aff<Domain, Range>(res);
38524 template <typename Domain, typename Range>
38525 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_domain(const typed::point<Domain> &set) const
38527 auto res = isl::pw_multi_aff::intersect_domain(set);
38528 return typed::pw_multi_aff<Domain, Range>(res);
38531 template <typename Domain, typename Range>
38532 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
38534 auto res = isl::pw_multi_aff::intersect_params(set);
38535 return typed::pw_multi_aff<Domain, Range>(res);
38538 template <typename Domain, typename Range>
38539 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
38541 auto res = isl::pw_multi_aff::intersect_params(set);
38542 return typed::pw_multi_aff<Domain, Range>(res);
38545 template <typename Domain, typename Range>
38546 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::intersect_params(const typed::point<> &set) const
38548 auto res = isl::pw_multi_aff::intersect_params(set);
38549 return typed::pw_multi_aff<Domain, Range>(res);
38552 template <typename Domain, typename Range>
38553 typed::pw_aff_list<Domain, Anonymous> typed::pw_multi_aff<Domain, Range>::list() const
38555 auto res = isl::pw_multi_aff::list();
38556 return typed::pw_aff_list<Domain, Anonymous>(res);
38559 template <typename Domain, typename Range>
38560 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::max(const typed::multi_pw_aff<Domain, Range> &multi2) const
38562 auto res = isl::pw_multi_aff::max(multi2);
38563 return typed::multi_pw_aff<Domain, Range>(res);
38566 template <typename Domain, typename Range>
38567 typed::multi_val<Range> typed::pw_multi_aff<Domain, Range>::max_multi_val() const
38569 auto res = isl::pw_multi_aff::max_multi_val();
38570 return typed::multi_val<Range>(res);
38573 template <typename Domain, typename Range>
38574 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::min(const typed::multi_pw_aff<Domain, Range> &multi2) const
38576 auto res = isl::pw_multi_aff::min(multi2);
38577 return typed::multi_pw_aff<Domain, Range>(res);
38580 template <typename Domain, typename Range>
38581 typed::multi_val<Range> typed::pw_multi_aff<Domain, Range>::min_multi_val() const
38583 auto res = isl::pw_multi_aff::min_multi_val();
38584 return typed::multi_val<Range>(res);
38587 template <typename Domain, typename Range>
38588 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::neg() const
38590 auto res = isl::pw_multi_aff::neg();
38591 return typed::multi_pw_aff<Domain, Range>(res);
38594 template <typename Domain, typename Range>
38595 template <typename Domain2, typename Range2>
38596 typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::product(const typed::multi_pw_aff<Domain2, Range2> &multi2) const
38598 auto res = isl::pw_multi_aff::product(multi2);
38599 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
38602 template <typename Domain, typename Range>
38603 template <typename Domain2, typename Range2>
38604 typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::product(const typed::pw_multi_aff<Domain2, Range2> &pma2) const
38606 auto res = isl::pw_multi_aff::product(pma2);
38607 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
38610 template <typename Domain, typename Range>
38611 template <typename Domain2, typename Range2>
38612 typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::product(const typed::multi_aff<Domain2, Range2> &pma2) const
38614 auto res = isl::pw_multi_aff::product(pma2);
38615 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
38618 template <typename Domain, typename Range>
38619 template <typename Domain2>
38620 typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> typed::pw_multi_aff<Domain, Range>::product(const typed::pw_aff<Domain2, Anonymous> &pma2) const
38622 auto res = isl::pw_multi_aff::product(pma2);
38623 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>>(res);
38626 template <typename Domain, typename Range>
38627 template <typename Domain2>
38628 typed::multi_pw_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
38630 auto res = isl::pw_multi_aff::pullback(mpa2);
38631 return typed::multi_pw_aff<Domain2, Range>(res);
38634 template <typename Domain, typename Range>
38635 typed::multi_pw_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
38637 auto res = isl::pw_multi_aff::pullback(mpa2);
38638 return typed::multi_pw_aff<Range>(res);
38641 template <typename Domain, typename Range>
38642 template <typename Domain2>
38643 typed::pw_multi_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
38645 auto res = isl::pw_multi_aff::pullback(ma);
38646 return typed::pw_multi_aff<Domain2, Range>(res);
38649 template <typename Domain, typename Range>
38650 typed::pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &ma) const
38652 auto res = isl::pw_multi_aff::pullback(ma);
38653 return typed::pw_multi_aff<Range>(res);
38656 template <typename Domain, typename Range>
38657 template <typename Domain2>
38658 typed::pw_multi_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
38660 auto res = isl::pw_multi_aff::pullback(pma2);
38661 return typed::pw_multi_aff<Domain2, Range>(res);
38664 template <typename Domain, typename Range>
38665 typed::pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
38667 auto res = isl::pw_multi_aff::pullback(pma2);
38668 return typed::pw_multi_aff<Range>(res);
38671 template <typename Domain, typename Range>
38672 template <typename Domain2>
38673 typed::union_pw_multi_aff<Domain2, Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
38675 auto res = isl::pw_multi_aff::pullback(upma2);
38676 return typed::union_pw_multi_aff<Domain2, Range>(res);
38679 template <typename Domain, typename Range>
38680 typed::union_pw_multi_aff<Range> typed::pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
38682 auto res = isl::pw_multi_aff::pullback(upma2);
38683 return typed::union_pw_multi_aff<Range>(res);
38686 template <typename Domain, typename Range>
38687 typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff<Domain, Range>::pw_multi_aff_list() const
38689 auto res = isl::pw_multi_aff::pw_multi_aff_list();
38690 return typed::pw_multi_aff_list<Domain, Range>(res);
38693 template <typename Domain, typename Range>
38694 template <typename Range2>
38695 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::multi_pw_aff<Domain, Range2> &multi2) const
38697 auto res = isl::pw_multi_aff::range_product(multi2);
38698 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
38701 template <typename Domain, typename Range>
38702 template <typename Range2>
38703 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
38705 auto res = isl::pw_multi_aff::range_product(multi2);
38706 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
38709 template <typename Domain, typename Range>
38710 template <typename Range2>
38711 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &pma2) const
38713 auto res = isl::pw_multi_aff::range_product(pma2);
38714 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
38717 template <typename Domain, typename Range>
38718 template <typename Range2>
38719 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
38721 auto res = isl::pw_multi_aff::range_product(upma2);
38722 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
38725 template <typename Domain, typename Range>
38726 template <typename Range2>
38727 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &pma2) const
38729 auto res = isl::pw_multi_aff::range_product(pma2);
38730 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
38733 template <typename Domain, typename Range>
38734 typed::pw_multi_aff<Domain, pair<Range, Anonymous>> typed::pw_multi_aff<Domain, Range>::range_product(const typed::pw_aff<Domain, Anonymous> &pma2) const
38736 auto res = isl::pw_multi_aff::range_product(pma2);
38737 return typed::pw_multi_aff<Domain, pair<Range, Anonymous>>(res);
38740 template <typename Domain, typename Range>
38741 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale(const typed::multi_val<Range> &mv) const
38743 auto res = isl::pw_multi_aff::scale(mv);
38744 return typed::pw_multi_aff<Domain, Range>(res);
38747 template <typename Domain, typename Range>
38748 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale(const typed::val<Range> &v) const
38750 auto res = isl::pw_multi_aff::scale(v);
38751 return typed::pw_multi_aff<Domain, Range>(res);
38754 template <typename Domain, typename Range>
38755 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale(long v) const
38757 auto res = isl::pw_multi_aff::scale(v);
38758 return typed::pw_multi_aff<Domain, Range>(res);
38761 template <typename Domain, typename Range>
38762 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale_down(const typed::multi_val<Range> &mv) const
38764 auto res = isl::pw_multi_aff::scale_down(mv);
38765 return typed::pw_multi_aff<Domain, Range>(res);
38768 template <typename Domain, typename Range>
38769 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale_down(const typed::val<Range> &v) const
38771 auto res = isl::pw_multi_aff::scale_down(v);
38772 return typed::pw_multi_aff<Domain, Range>(res);
38775 template <typename Domain, typename Range>
38776 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::scale_down(long v) const
38778 auto res = isl::pw_multi_aff::scale_down(v);
38779 return typed::pw_multi_aff<Domain, Range>(res);
38782 template <typename Domain, typename Range>
38783 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
38785 auto res = isl::pw_multi_aff::set_at(pos, el);
38786 return typed::multi_pw_aff<Domain, Range>(res);
38789 template <typename Domain, typename Range>
38790 typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
38792 auto res = isl::pw_multi_aff::set_at(pos, el);
38793 return typed::multi_union_pw_aff<Domain, Range>(res);
38796 template <typename Domain, typename Range>
38797 template <typename Range2>
38798 typed::pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
38800 auto res = isl::pw_multi_aff::set_range_tuple(id);
38801 return typed::pw_multi_aff<Domain, Range2>(res);
38804 template <typename Domain, typename Range>
38805 template <typename Range2>
38806 typed::pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, Range>::set_range_tuple(const std::string &id) const
38808 auto res = isl::pw_multi_aff::set_range_tuple(id);
38809 return typed::pw_multi_aff<Domain, Range2>(res);
38812 template <typename Domain, typename Range>
38813 typed::space<Domain, Range> typed::pw_multi_aff<Domain, Range>::space() const
38815 auto res = isl::pw_multi_aff::space();
38816 return typed::space<Domain, Range>(res);
38819 template <typename Domain, typename Range>
38820 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::multi_pw_aff<Domain, Range> &multi2) const
38822 auto res = isl::pw_multi_aff::sub(multi2);
38823 return typed::multi_pw_aff<Domain, Range>(res);
38826 template <typename Domain, typename Range>
38827 typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::multi_union_pw_aff<Domain, Range> &multi2) const
38829 auto res = isl::pw_multi_aff::sub(multi2);
38830 return typed::multi_union_pw_aff<Domain, Range>(res);
38833 template <typename Domain, typename Range>
38834 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &pma2) const
38836 auto res = isl::pw_multi_aff::sub(pma2);
38837 return typed::pw_multi_aff<Domain, Range>(res);
38840 template <typename Domain, typename Range>
38841 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
38843 auto res = isl::pw_multi_aff::sub(upma2);
38844 return typed::union_pw_multi_aff<Domain, Range>(res);
38847 template <typename Domain, typename Range>
38848 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &pma2) const
38850 auto res = isl::pw_multi_aff::sub(pma2);
38851 return typed::pw_multi_aff<Domain, Range>(res);
38854 template <typename Domain, typename Range>
38855 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::sub(const typed::pw_aff<Domain, Range> &pma2) const
38857 auto res = isl::pw_multi_aff::sub(pma2);
38858 return typed::pw_multi_aff<Domain, Range>(res);
38861 template <typename Domain, typename Range>
38862 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::set<Domain> &set) const
38864 auto res = isl::pw_multi_aff::subtract_domain(set);
38865 return typed::pw_multi_aff<Domain, Range>(res);
38868 template <typename Domain, typename Range>
38869 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::space<Domain> &space) const
38871 auto res = isl::pw_multi_aff::subtract_domain(space);
38872 return typed::union_pw_multi_aff<Domain, Range>(res);
38875 template <typename Domain, typename Range>
38876 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::union_set<Domain> &uset) const
38878 auto res = isl::pw_multi_aff::subtract_domain(uset);
38879 return typed::union_pw_multi_aff<Domain, Range>(res);
38882 template <typename Domain, typename Range>
38883 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::basic_set<Domain> &set) const
38885 auto res = isl::pw_multi_aff::subtract_domain(set);
38886 return typed::pw_multi_aff<Domain, Range>(res);
38889 template <typename Domain, typename Range>
38890 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::subtract_domain(const typed::point<Domain> &set) const
38892 auto res = isl::pw_multi_aff::subtract_domain(set);
38893 return typed::pw_multi_aff<Domain, Range>(res);
38896 template <typename Domain, typename Range>
38897 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::to_multi_pw_aff() const
38899 auto res = isl::pw_multi_aff::to_multi_pw_aff();
38900 return typed::multi_pw_aff<Domain, Range>(res);
38903 template <typename Domain, typename Range>
38904 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::to_union_pw_multi_aff() const
38906 auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
38907 return typed::union_pw_multi_aff<Domain, Range>(res);
38910 template <typename Domain, typename Range>
38911 typed::multi_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::multi_pw_aff<Domain, Range> &mpa2) const
38913 auto res = isl::pw_multi_aff::union_add(mpa2);
38914 return typed::multi_pw_aff<Domain, Range>(res);
38917 template <typename Domain, typename Range>
38918 typed::multi_union_pw_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::multi_union_pw_aff<Domain, Range> &mupa2) const
38920 auto res = isl::pw_multi_aff::union_add(mupa2);
38921 return typed::multi_union_pw_aff<Domain, Range>(res);
38924 template <typename Domain, typename Range>
38925 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &pma2) const
38927 auto res = isl::pw_multi_aff::union_add(pma2);
38928 return typed::pw_multi_aff<Domain, Range>(res);
38931 template <typename Domain, typename Range>
38932 typed::union_pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
38934 auto res = isl::pw_multi_aff::union_add(upma2);
38935 return typed::union_pw_multi_aff<Domain, Range>(res);
38938 template <typename Domain, typename Range>
38939 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::multi_aff<Domain, Range> &pma2) const
38941 auto res = isl::pw_multi_aff::union_add(pma2);
38942 return typed::pw_multi_aff<Domain, Range>(res);
38945 template <typename Domain, typename Range>
38946 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, Range>::union_add(const typed::pw_aff<Domain, Range> &pma2) const
38948 auto res = isl::pw_multi_aff::union_add(pma2);
38949 return typed::pw_multi_aff<Domain, Range>(res);
38952 template <typename Domain2, typename Range2, typename Range>
38953 typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff(const typed::multi_aff<pair<Domain2, Range2>, Range> &ma)
38954 : isl::pw_multi_aff(ma)
38958 template <typename Domain2, typename Range2, typename Range>
38959 typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff(const typed::pw_aff<pair<Domain2, Range2>, Range> &pa)
38960 : isl::pw_multi_aff(pa)
38964 template <typename Domain2, typename Range2, typename Range>
38965 typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
38966 : isl::pw_multi_aff(ctx, str)
38970 template <typename Domain2, typename Range2, typename Range>
38971 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
38973 auto res = isl::pw_multi_aff::add(multi2);
38974 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
38977 template <typename Domain2, typename Range2, typename Range>
38978 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
38980 auto res = isl::pw_multi_aff::add(multi2);
38981 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
38984 template <typename Domain2, typename Range2, typename Range>
38985 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
38987 auto res = isl::pw_multi_aff::add(pma2);
38988 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
38991 template <typename Domain2, typename Range2, typename Range>
38992 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
38994 auto res = isl::pw_multi_aff::add(upma2);
38995 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
38998 template <typename Domain2, typename Range2, typename Range>
38999 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const
39001 auto res = isl::pw_multi_aff::add(pma2);
39002 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39005 template <typename Domain2, typename Range2, typename Range>
39006 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const
39008 auto res = isl::pw_multi_aff::add(pma2);
39009 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39012 template <typename Domain2, typename Range2, typename Range>
39013 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::multi_val<Range> &mv) const
39015 auto res = isl::pw_multi_aff::add_constant(mv);
39016 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39019 template <typename Domain2, typename Range2, typename Range>
39020 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add_constant(const typed::val<Range> &v) const
39022 auto res = isl::pw_multi_aff::add_constant(v);
39023 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39026 template <typename Domain2, typename Range2, typename Range>
39027 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::add_constant(long v) const
39029 auto res = isl::pw_multi_aff::add_constant(v);
39030 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39033 template <typename Domain2, typename Range2, typename Range>
39034 template <typename Arg2>
39035 typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::apply(const typed::union_pw_multi_aff<Range, Arg2> &upma2) const
39037 auto res = isl::pw_multi_aff::apply(upma2);
39038 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2>(res);
39041 template <typename Domain2, typename Range2, typename Range>
39042 typed::map<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_map() const
39044 auto res = isl::pw_multi_aff::as_map();
39045 return typed::map<pair<Domain2, Range2>, Range>(res);
39048 template <typename Domain2, typename Range2, typename Range>
39049 typed::multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_multi_aff() const
39051 auto res = isl::pw_multi_aff::as_multi_aff();
39052 return typed::multi_aff<pair<Domain2, Range2>, Range>(res);
39055 template <typename Domain2, typename Range2, typename Range>
39056 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_multi_union_pw_aff() const
39058 auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
39059 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
39062 template <typename Domain2, typename Range2, typename Range>
39063 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_pw_multi_aff() const
39065 auto res = isl::pw_multi_aff::as_pw_multi_aff();
39066 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39069 template <typename Domain2, typename Range2, typename Range>
39070 typed::union_map<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::as_union_map() const
39072 auto res = isl::pw_multi_aff::as_union_map();
39073 return typed::union_map<pair<Domain2, Range2>, Range>(res);
39076 template <typename Domain2, typename Range2, typename Range>
39077 typed::pw_aff<pair<Domain2, Range2>, Anonymous> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::at(int pos) const
39079 auto res = isl::pw_multi_aff::at(pos);
39080 return typed::pw_aff<pair<Domain2, Range2>, Anonymous>(res);
39083 template <typename Domain2, typename Range2, typename Range>
39084 typed::set<pair<Domain2, Range2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::bind(const typed::multi_id<Range> &tuple) const
39086 auto res = isl::pw_multi_aff::bind(tuple);
39087 return typed::set<pair<Domain2, Range2>>(res);
39090 template <typename Domain2, typename Range2, typename Range>
39091 typed::pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::bind_domain(const typed::multi_id<pair<Domain2, Range2>> &tuple) const
39093 auto res = isl::pw_multi_aff::bind_domain(tuple);
39094 return typed::pw_multi_aff<Range>(res);
39097 template <typename Domain2, typename Range2, typename Range>
39098 typed::pw_multi_aff<Range2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::bind_domain_wrapped_domain(const typed::multi_id<Domain2> &tuple) const
39100 auto res = isl::pw_multi_aff::bind_domain_wrapped_domain(tuple);
39101 return typed::pw_multi_aff<Range2, Range>(res);
39104 template <typename Domain2, typename Range2, typename Range>
39105 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::coalesce() const
39107 auto res = isl::pw_multi_aff::coalesce();
39108 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39111 template <typename Domain2, typename Range2, typename Range>
39112 typed::set<pair<Domain2, Range2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::domain() const
39114 auto res = isl::pw_multi_aff::domain();
39115 return typed::set<pair<Domain2, Range2>>(res);
39118 template <typename Domain2, typename Range2, typename Range>
39119 typed::pw_multi_aff<pair<Range2, Domain2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::domain_reverse() const
39121 auto res = isl::pw_multi_aff::domain_reverse();
39122 return typed::pw_multi_aff<pair<Range2, Domain2>, Range>(res);
39125 template <typename Domain2, typename Range2, typename Range>
39126 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::drop_unused_params() const
39128 auto res = isl::pw_multi_aff::drop_unused_params();
39129 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39132 template <typename Domain2, typename Range2, typename Range>
39133 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::extract_pw_multi_aff(const typed::space<pair<Domain2, Range2>, Range> &space) const
39135 auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
39136 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39139 template <typename Domain2, typename Range2, typename Range>
39140 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::set<pair<Domain2, Range2>> &set) const
39142 auto res = isl::pw_multi_aff::gist(set);
39143 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39146 template <typename Domain2, typename Range2, typename Range>
39147 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::union_set<pair<Domain2, Range2>> &context) const
39149 auto res = isl::pw_multi_aff::gist(context);
39150 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39153 template <typename Domain2, typename Range2, typename Range>
39154 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::basic_set<pair<Domain2, Range2>> &set) const
39156 auto res = isl::pw_multi_aff::gist(set);
39157 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39160 template <typename Domain2, typename Range2, typename Range>
39161 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist(const typed::point<pair<Domain2, Range2>> &set) const
39163 auto res = isl::pw_multi_aff::gist(set);
39164 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39167 template <typename Domain2, typename Range2, typename Range>
39168 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::set<> &set) const
39170 auto res = isl::pw_multi_aff::gist_params(set);
39171 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39174 template <typename Domain2, typename Range2, typename Range>
39175 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::basic_set<> &set) const
39177 auto res = isl::pw_multi_aff::gist_params(set);
39178 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39181 template <typename Domain2, typename Range2, typename Range>
39182 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::gist_params(const typed::point<> &set) const
39184 auto res = isl::pw_multi_aff::gist_params(set);
39185 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39188 template <typename Domain2, typename Range2, typename Range>
39189 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::identity() const
39191 auto res = isl::pw_multi_aff::identity();
39192 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39195 template <typename Domain2, typename Range2, typename Range>
39196 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::set<pair<Domain2, Range2>> &set) const
39198 auto res = isl::pw_multi_aff::intersect_domain(set);
39199 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39202 template <typename Domain2, typename Range2, typename Range>
39203 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::space<pair<Domain2, Range2>> &space) const
39205 auto res = isl::pw_multi_aff::intersect_domain(space);
39206 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39209 template <typename Domain2, typename Range2, typename Range>
39210 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
39212 auto res = isl::pw_multi_aff::intersect_domain(uset);
39213 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39216 template <typename Domain2, typename Range2, typename Range>
39217 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
39219 auto res = isl::pw_multi_aff::intersect_domain(set);
39220 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39223 template <typename Domain2, typename Range2, typename Range>
39224 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain(const typed::point<pair<Domain2, Range2>> &set) const
39226 auto res = isl::pw_multi_aff::intersect_domain(set);
39227 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39230 template <typename Domain2, typename Range2, typename Range>
39231 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_domain_wrapped_domain(const typed::union_set<Domain2> &uset) const
39233 auto res = isl::pw_multi_aff::intersect_domain_wrapped_domain(uset);
39234 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39237 template <typename Domain2, typename Range2, typename Range>
39238 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::set<> &set) const
39240 auto res = isl::pw_multi_aff::intersect_params(set);
39241 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39244 template <typename Domain2, typename Range2, typename Range>
39245 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::basic_set<> &set) const
39247 auto res = isl::pw_multi_aff::intersect_params(set);
39248 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39251 template <typename Domain2, typename Range2, typename Range>
39252 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::intersect_params(const typed::point<> &set) const
39254 auto res = isl::pw_multi_aff::intersect_params(set);
39255 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39258 template <typename Domain2, typename Range2, typename Range>
39259 typed::pw_aff_list<pair<Domain2, Range2>, Anonymous> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::list() const
39261 auto res = isl::pw_multi_aff::list();
39262 return typed::pw_aff_list<pair<Domain2, Range2>, Anonymous>(res);
39265 template <typename Domain2, typename Range2, typename Range>
39266 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::max(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
39268 auto res = isl::pw_multi_aff::max(multi2);
39269 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39272 template <typename Domain2, typename Range2, typename Range>
39273 typed::multi_val<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::max_multi_val() const
39275 auto res = isl::pw_multi_aff::max_multi_val();
39276 return typed::multi_val<Range>(res);
39279 template <typename Domain2, typename Range2, typename Range>
39280 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::min(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
39282 auto res = isl::pw_multi_aff::min(multi2);
39283 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39286 template <typename Domain2, typename Range2, typename Range>
39287 typed::multi_val<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::min_multi_val() const
39289 auto res = isl::pw_multi_aff::min_multi_val();
39290 return typed::multi_val<Range>(res);
39293 template <typename Domain2, typename Range2, typename Range>
39294 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::neg() const
39296 auto res = isl::pw_multi_aff::neg();
39297 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39300 template <typename Domain2, typename Range2, typename Range>
39301 template <typename Domain3>
39302 typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain2> &pma2) const
39304 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
39305 return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
39308 template <typename Domain2, typename Range2, typename Range>
39309 template <typename Domain3>
39310 typed::union_pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain2> &upma2) const
39312 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(upma2);
39313 return typed::union_pw_multi_aff<pair<Domain3, Range2>, Range>(res);
39316 template <typename Domain2, typename Range2, typename Range>
39317 template <typename Domain3>
39318 typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain2> &pma2) const
39320 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
39321 return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
39324 template <typename Domain2, typename Range2, typename Range>
39325 template <typename Domain3>
39326 typed::pw_multi_aff<pair<Domain3, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, Domain2> &pma2) const
39328 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
39329 return typed::pw_multi_aff<pair<Domain3, Range2>, Range>(res);
39332 template <typename Domain2, typename Range2, typename Range>
39333 template <typename Arg2, typename Arg3>
39334 typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_pw_aff<Arg2, Arg3> &multi2) const
39336 auto res = isl::pw_multi_aff::product(multi2);
39337 return typed::multi_pw_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
39340 template <typename Domain2, typename Range2, typename Range>
39341 template <typename Arg2, typename Arg3>
39342 typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_multi_aff<Arg2, Arg3> &pma2) const
39344 auto res = isl::pw_multi_aff::product(pma2);
39345 return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
39348 template <typename Domain2, typename Range2, typename Range>
39349 template <typename Arg2, typename Arg3>
39350 typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::multi_aff<Arg2, Arg3> &pma2) const
39352 auto res = isl::pw_multi_aff::product(pma2);
39353 return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Arg3>>(res);
39356 template <typename Domain2, typename Range2, typename Range>
39357 template <typename Arg2>
39358 typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::product(const typed::pw_aff<Arg2, Anonymous> &pma2) const
39360 auto res = isl::pw_multi_aff::product(pma2);
39361 return typed::pw_multi_aff<pair<pair<Domain2, Range2>, Arg2>, pair<Range, Anonymous>>(res);
39364 template <typename Domain2, typename Range2, typename Range>
39365 template <typename Arg2>
39366 typed::multi_pw_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<Arg2, pair<Domain2, Range2>> &mpa2) const
39368 auto res = isl::pw_multi_aff::pullback(mpa2);
39369 return typed::multi_pw_aff<Arg2, Range>(res);
39372 template <typename Domain2, typename Range2, typename Range>
39373 typed::multi_pw_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_pw_aff<pair<Domain2, Range2>> &mpa2) const
39375 auto res = isl::pw_multi_aff::pullback(mpa2);
39376 return typed::multi_pw_aff<Range>(res);
39379 template <typename Domain2, typename Range2, typename Range>
39380 template <typename Arg2>
39381 typed::pw_multi_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<Arg2, pair<Domain2, Range2>> &ma) const
39383 auto res = isl::pw_multi_aff::pullback(ma);
39384 return typed::pw_multi_aff<Arg2, Range>(res);
39387 template <typename Domain2, typename Range2, typename Range>
39388 typed::pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::multi_aff<pair<Domain2, Range2>> &ma) const
39390 auto res = isl::pw_multi_aff::pullback(ma);
39391 return typed::pw_multi_aff<Range>(res);
39394 template <typename Domain2, typename Range2, typename Range>
39395 template <typename Arg2>
39396 typed::pw_multi_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain2, Range2>> &pma2) const
39398 auto res = isl::pw_multi_aff::pullback(pma2);
39399 return typed::pw_multi_aff<Arg2, Range>(res);
39402 template <typename Domain2, typename Range2, typename Range>
39403 typed::pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain2, Range2>> &pma2) const
39405 auto res = isl::pw_multi_aff::pullback(pma2);
39406 return typed::pw_multi_aff<Range>(res);
39409 template <typename Domain2, typename Range2, typename Range>
39410 template <typename Arg2>
39411 typed::union_pw_multi_aff<Arg2, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain2, Range2>> &upma2) const
39413 auto res = isl::pw_multi_aff::pullback(upma2);
39414 return typed::union_pw_multi_aff<Arg2, Range>(res);
39417 template <typename Domain2, typename Range2, typename Range>
39418 typed::union_pw_multi_aff<Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain2, Range2>> &upma2) const
39420 auto res = isl::pw_multi_aff::pullback(upma2);
39421 return typed::union_pw_multi_aff<Range>(res);
39424 template <typename Domain2, typename Range2, typename Range>
39425 typed::pw_multi_aff_list<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::pw_multi_aff_list() const
39427 auto res = isl::pw_multi_aff::pw_multi_aff_list();
39428 return typed::pw_multi_aff_list<pair<Domain2, Range2>, Range>(res);
39431 template <typename Domain2, typename Range2, typename Range>
39432 template <typename Arg2>
39433 typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
39435 auto res = isl::pw_multi_aff::range_product(multi2);
39436 return typed::multi_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
39439 template <typename Domain2, typename Range2, typename Range>
39440 template <typename Arg2>
39441 typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Arg2> &multi2) const
39443 auto res = isl::pw_multi_aff::range_product(multi2);
39444 return typed::multi_union_pw_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
39447 template <typename Domain2, typename Range2, typename Range>
39448 template <typename Arg2>
39449 typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const
39451 auto res = isl::pw_multi_aff::range_product(pma2);
39452 return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
39455 template <typename Domain2, typename Range2, typename Range>
39456 template <typename Arg2>
39457 typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Arg2> &upma2) const
39459 auto res = isl::pw_multi_aff::range_product(upma2);
39460 return typed::union_pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
39463 template <typename Domain2, typename Range2, typename Range>
39464 template <typename Arg2>
39465 typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::multi_aff<pair<Domain2, Range2>, Arg2> &pma2) const
39467 auto res = isl::pw_multi_aff::range_product(pma2);
39468 return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Arg2>>(res);
39471 template <typename Domain2, typename Range2, typename Range>
39472 typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Anonymous>> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::range_product(const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &pma2) const
39474 auto res = isl::pw_multi_aff::range_product(pma2);
39475 return typed::pw_multi_aff<pair<Domain2, Range2>, pair<Range, Anonymous>>(res);
39478 template <typename Domain2, typename Range2, typename Range>
39479 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::multi_val<Range> &mv) const
39481 auto res = isl::pw_multi_aff::scale(mv);
39482 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39485 template <typename Domain2, typename Range2, typename Range>
39486 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale(const typed::val<Range> &v) const
39488 auto res = isl::pw_multi_aff::scale(v);
39489 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39492 template <typename Domain2, typename Range2, typename Range>
39493 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale(long v) const
39495 auto res = isl::pw_multi_aff::scale(v);
39496 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39499 template <typename Domain2, typename Range2, typename Range>
39500 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::multi_val<Range> &mv) const
39502 auto res = isl::pw_multi_aff::scale_down(mv);
39503 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39506 template <typename Domain2, typename Range2, typename Range>
39507 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale_down(const typed::val<Range> &v) const
39509 auto res = isl::pw_multi_aff::scale_down(v);
39510 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39513 template <typename Domain2, typename Range2, typename Range>
39514 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::scale_down(long v) const
39516 auto res = isl::pw_multi_aff::scale_down(v);
39517 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39520 template <typename Domain2, typename Range2, typename Range>
39521 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
39523 auto res = isl::pw_multi_aff::set_at(pos, el);
39524 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39527 template <typename Domain2, typename Range2, typename Range>
39528 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_at(int pos, const typed::union_pw_aff<pair<Domain2, Range2>, Anonymous> &el) const
39530 auto res = isl::pw_multi_aff::set_at(pos, el);
39531 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
39534 template <typename Domain2, typename Range2, typename Range>
39535 template <typename Arg1>
39536 typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
39538 auto res = isl::pw_multi_aff::set_range_tuple(id);
39539 return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
39542 template <typename Domain2, typename Range2, typename Range>
39543 template <typename Arg1>
39544 typed::pw_multi_aff<pair<Domain2, Range2>, Arg1> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::set_range_tuple(const std::string &id) const
39546 auto res = isl::pw_multi_aff::set_range_tuple(id);
39547 return typed::pw_multi_aff<pair<Domain2, Range2>, Arg1>(res);
39550 template <typename Domain2, typename Range2, typename Range>
39551 typed::space<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::space() const
39553 auto res = isl::pw_multi_aff::space();
39554 return typed::space<pair<Domain2, Range2>, Range>(res);
39557 template <typename Domain2, typename Range2, typename Range>
39558 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
39560 auto res = isl::pw_multi_aff::sub(multi2);
39561 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39564 template <typename Domain2, typename Range2, typename Range>
39565 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &multi2) const
39567 auto res = isl::pw_multi_aff::sub(multi2);
39568 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
39571 template <typename Domain2, typename Range2, typename Range>
39572 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
39574 auto res = isl::pw_multi_aff::sub(pma2);
39575 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39578 template <typename Domain2, typename Range2, typename Range>
39579 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
39581 auto res = isl::pw_multi_aff::sub(upma2);
39582 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39585 template <typename Domain2, typename Range2, typename Range>
39586 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const
39588 auto res = isl::pw_multi_aff::sub(pma2);
39589 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39592 template <typename Domain2, typename Range2, typename Range>
39593 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::sub(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const
39595 auto res = isl::pw_multi_aff::sub(pma2);
39596 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39599 template <typename Domain2, typename Range2, typename Range>
39600 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::set<pair<Domain2, Range2>> &set) const
39602 auto res = isl::pw_multi_aff::subtract_domain(set);
39603 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39606 template <typename Domain2, typename Range2, typename Range>
39607 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::space<pair<Domain2, Range2>> &space) const
39609 auto res = isl::pw_multi_aff::subtract_domain(space);
39610 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39613 template <typename Domain2, typename Range2, typename Range>
39614 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::union_set<pair<Domain2, Range2>> &uset) const
39616 auto res = isl::pw_multi_aff::subtract_domain(uset);
39617 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39620 template <typename Domain2, typename Range2, typename Range>
39621 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::basic_set<pair<Domain2, Range2>> &set) const
39623 auto res = isl::pw_multi_aff::subtract_domain(set);
39624 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39627 template <typename Domain2, typename Range2, typename Range>
39628 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::subtract_domain(const typed::point<pair<Domain2, Range2>> &set) const
39630 auto res = isl::pw_multi_aff::subtract_domain(set);
39631 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39634 template <typename Domain2, typename Range2, typename Range>
39635 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::to_multi_pw_aff() const
39637 auto res = isl::pw_multi_aff::to_multi_pw_aff();
39638 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39641 template <typename Domain2, typename Range2, typename Range>
39642 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::to_union_pw_multi_aff() const
39644 auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
39645 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39648 template <typename Domain2, typename Range2, typename Range>
39649 typed::multi_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_pw_aff<pair<Domain2, Range2>, Range> &mpa2) const
39651 auto res = isl::pw_multi_aff::union_add(mpa2);
39652 return typed::multi_pw_aff<pair<Domain2, Range2>, Range>(res);
39655 template <typename Domain2, typename Range2, typename Range>
39656 typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_union_pw_aff<pair<Domain2, Range2>, Range> &mupa2) const
39658 auto res = isl::pw_multi_aff::union_add(mupa2);
39659 return typed::multi_union_pw_aff<pair<Domain2, Range2>, Range>(res);
39662 template <typename Domain2, typename Range2, typename Range>
39663 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain2, Range2>, Range> &pma2) const
39665 auto res = isl::pw_multi_aff::union_add(pma2);
39666 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39669 template <typename Domain2, typename Range2, typename Range>
39670 typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::union_pw_multi_aff<pair<Domain2, Range2>, Range> &upma2) const
39672 auto res = isl::pw_multi_aff::union_add(upma2);
39673 return typed::union_pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39676 template <typename Domain2, typename Range2, typename Range>
39677 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::multi_aff<pair<Domain2, Range2>, Range> &pma2) const
39679 auto res = isl::pw_multi_aff::union_add(pma2);
39680 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39683 template <typename Domain2, typename Range2, typename Range>
39684 typed::pw_multi_aff<pair<Domain2, Range2>, Range> typed::pw_multi_aff<pair<Domain2, Range2>, Range>::union_add(const typed::pw_aff<pair<Domain2, Range2>, Range> &pma2) const
39686 auto res = isl::pw_multi_aff::union_add(pma2);
39687 return typed::pw_multi_aff<pair<Domain2, Range2>, Range>(res);
39690 template <typename Domain, typename Range, typename Range2>
39691 typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma)
39692 : isl::pw_multi_aff(ma)
39696 template <typename Domain, typename Range, typename Range2>
39697 typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff(const typed::pw_aff<Domain, pair<Range, Range2>> &pa)
39698 : isl::pw_multi_aff(pa)
39702 template <typename Domain, typename Range, typename Range2>
39703 typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
39704 : isl::pw_multi_aff(ctx, str)
39708 template <typename Domain, typename Range, typename Range2>
39709 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
39711 auto res = isl::pw_multi_aff::add(multi2);
39712 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
39715 template <typename Domain, typename Range, typename Range2>
39716 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
39718 auto res = isl::pw_multi_aff::add(multi2);
39719 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
39722 template <typename Domain, typename Range, typename Range2>
39723 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
39725 auto res = isl::pw_multi_aff::add(pma2);
39726 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39729 template <typename Domain, typename Range, typename Range2>
39730 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
39732 auto res = isl::pw_multi_aff::add(upma2);
39733 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
39736 template <typename Domain, typename Range, typename Range2>
39737 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const
39739 auto res = isl::pw_multi_aff::add(pma2);
39740 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39743 template <typename Domain, typename Range, typename Range2>
39744 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const
39746 auto res = isl::pw_multi_aff::add(pma2);
39747 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39750 template <typename Domain, typename Range, typename Range2>
39751 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
39753 auto res = isl::pw_multi_aff::add_constant(mv);
39754 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39757 template <typename Domain, typename Range, typename Range2>
39758 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
39760 auto res = isl::pw_multi_aff::add_constant(v);
39761 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39764 template <typename Domain, typename Range, typename Range2>
39765 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::add_constant(long v) const
39767 auto res = isl::pw_multi_aff::add_constant(v);
39768 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39771 template <typename Domain, typename Range, typename Range2>
39772 template <typename Arg3>
39773 typed::union_pw_multi_aff<Domain, Arg3> typed::pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
39775 auto res = isl::pw_multi_aff::apply(upma2);
39776 return typed::union_pw_multi_aff<Domain, Arg3>(res);
39779 template <typename Domain, typename Range, typename Range2>
39780 typed::map<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_map() const
39782 auto res = isl::pw_multi_aff::as_map();
39783 return typed::map<Domain, pair<Range, Range2>>(res);
39786 template <typename Domain, typename Range, typename Range2>
39787 typed::multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_multi_aff() const
39789 auto res = isl::pw_multi_aff::as_multi_aff();
39790 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
39793 template <typename Domain, typename Range, typename Range2>
39794 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
39796 auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
39797 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
39800 template <typename Domain, typename Range, typename Range2>
39801 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
39803 auto res = isl::pw_multi_aff::as_pw_multi_aff();
39804 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39807 template <typename Domain, typename Range, typename Range2>
39808 typed::union_map<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::as_union_map() const
39810 auto res = isl::pw_multi_aff::as_union_map();
39811 return typed::union_map<Domain, pair<Range, Range2>>(res);
39814 template <typename Domain, typename Range, typename Range2>
39815 typed::pw_aff<Domain, Anonymous> typed::pw_multi_aff<Domain, pair<Range, Range2>>::at(int pos) const
39817 auto res = isl::pw_multi_aff::at(pos);
39818 return typed::pw_aff<Domain, Anonymous>(res);
39821 template <typename Domain, typename Range, typename Range2>
39822 typed::set<Domain> typed::pw_multi_aff<Domain, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
39824 auto res = isl::pw_multi_aff::bind(tuple);
39825 return typed::set<Domain>(res);
39828 template <typename Domain, typename Range, typename Range2>
39829 typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::bind_domain(const typed::multi_id<Domain> &tuple) const
39831 auto res = isl::pw_multi_aff::bind_domain(tuple);
39832 return typed::pw_multi_aff<pair<Range, Range2>>(res);
39835 template <typename Domain, typename Range, typename Range2>
39836 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::coalesce() const
39838 auto res = isl::pw_multi_aff::coalesce();
39839 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39842 template <typename Domain, typename Range, typename Range2>
39843 typed::set<Domain> typed::pw_multi_aff<Domain, pair<Range, Range2>>::domain() const
39845 auto res = isl::pw_multi_aff::domain();
39846 return typed::set<Domain>(res);
39849 template <typename Domain, typename Range, typename Range2>
39850 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::drop_unused_params() const
39852 auto res = isl::pw_multi_aff::drop_unused_params();
39853 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39856 template <typename Domain, typename Range, typename Range2>
39857 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const
39859 auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
39860 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39863 template <typename Domain, typename Range, typename Range2>
39864 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::set<Domain> &set) const
39866 auto res = isl::pw_multi_aff::gist(set);
39867 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39870 template <typename Domain, typename Range, typename Range2>
39871 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::union_set<Domain> &context) const
39873 auto res = isl::pw_multi_aff::gist(context);
39874 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
39877 template <typename Domain, typename Range, typename Range2>
39878 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::basic_set<Domain> &set) const
39880 auto res = isl::pw_multi_aff::gist(set);
39881 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39884 template <typename Domain, typename Range, typename Range2>
39885 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::point<Domain> &set) const
39887 auto res = isl::pw_multi_aff::gist(set);
39888 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39891 template <typename Domain, typename Range, typename Range2>
39892 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist_params(const typed::set<> &set) const
39894 auto res = isl::pw_multi_aff::gist_params(set);
39895 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39898 template <typename Domain, typename Range, typename Range2>
39899 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist_params(const typed::basic_set<> &set) const
39901 auto res = isl::pw_multi_aff::gist_params(set);
39902 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39905 template <typename Domain, typename Range, typename Range2>
39906 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::gist_params(const typed::point<> &set) const
39908 auto res = isl::pw_multi_aff::gist_params(set);
39909 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39912 template <typename Domain, typename Range, typename Range2>
39913 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::identity() const
39915 auto res = isl::pw_multi_aff::identity();
39916 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
39919 template <typename Domain, typename Range, typename Range2>
39920 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::set<Domain> &set) const
39922 auto res = isl::pw_multi_aff::intersect_domain(set);
39923 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39926 template <typename Domain, typename Range, typename Range2>
39927 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
39929 auto res = isl::pw_multi_aff::intersect_domain(space);
39930 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
39933 template <typename Domain, typename Range, typename Range2>
39934 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
39936 auto res = isl::pw_multi_aff::intersect_domain(uset);
39937 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
39940 template <typename Domain, typename Range, typename Range2>
39941 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::basic_set<Domain> &set) const
39943 auto res = isl::pw_multi_aff::intersect_domain(set);
39944 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39947 template <typename Domain, typename Range, typename Range2>
39948 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::point<Domain> &set) const
39950 auto res = isl::pw_multi_aff::intersect_domain(set);
39951 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39954 template <typename Domain, typename Range, typename Range2>
39955 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
39957 auto res = isl::pw_multi_aff::intersect_params(set);
39958 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39961 template <typename Domain, typename Range, typename Range2>
39962 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
39964 auto res = isl::pw_multi_aff::intersect_params(set);
39965 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39968 template <typename Domain, typename Range, typename Range2>
39969 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
39971 auto res = isl::pw_multi_aff::intersect_params(set);
39972 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
39975 template <typename Domain, typename Range, typename Range2>
39976 typed::pw_aff_list<Domain, Anonymous> typed::pw_multi_aff<Domain, pair<Range, Range2>>::list() const
39978 auto res = isl::pw_multi_aff::list();
39979 return typed::pw_aff_list<Domain, Anonymous>(res);
39982 template <typename Domain, typename Range, typename Range2>
39983 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::max(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
39985 auto res = isl::pw_multi_aff::max(multi2);
39986 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
39989 template <typename Domain, typename Range, typename Range2>
39990 typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::max_multi_val() const
39992 auto res = isl::pw_multi_aff::max_multi_val();
39993 return typed::multi_val<pair<Range, Range2>>(res);
39996 template <typename Domain, typename Range, typename Range2>
39997 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::min(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
39999 auto res = isl::pw_multi_aff::min(multi2);
40000 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
40003 template <typename Domain, typename Range, typename Range2>
40004 typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::min_multi_val() const
40006 auto res = isl::pw_multi_aff::min_multi_val();
40007 return typed::multi_val<pair<Range, Range2>>(res);
40010 template <typename Domain, typename Range, typename Range2>
40011 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::neg() const
40013 auto res = isl::pw_multi_aff::neg();
40014 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
40017 template <typename Domain, typename Range, typename Range2>
40018 template <typename Domain2, typename Arg3>
40019 typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg3> &multi2) const
40021 auto res = isl::pw_multi_aff::product(multi2);
40022 return typed::multi_pw_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
40025 template <typename Domain, typename Range, typename Range2>
40026 template <typename Domain2, typename Arg3>
40027 typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg3> &pma2) const
40029 auto res = isl::pw_multi_aff::product(pma2);
40030 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
40033 template <typename Domain, typename Range, typename Range2>
40034 template <typename Domain2, typename Arg3>
40035 typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg3> &pma2) const
40037 auto res = isl::pw_multi_aff::product(pma2);
40038 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
40041 template <typename Domain, typename Range, typename Range2>
40042 template <typename Domain2>
40043 typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Anonymous>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::product(const typed::pw_aff<Domain2, Anonymous> &pma2) const
40045 auto res = isl::pw_multi_aff::product(pma2);
40046 return typed::pw_multi_aff<pair<Domain, Domain2>, pair<pair<Range, Range2>, Anonymous>>(res);
40049 template <typename Domain, typename Range, typename Range2>
40050 template <typename Domain2>
40051 typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, Domain> &mpa2) const
40053 auto res = isl::pw_multi_aff::pullback(mpa2);
40054 return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
40057 template <typename Domain, typename Range, typename Range2>
40058 typed::multi_pw_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain> &mpa2) const
40060 auto res = isl::pw_multi_aff::pullback(mpa2);
40061 return typed::multi_pw_aff<pair<Range, Range2>>(res);
40064 template <typename Domain, typename Range, typename Range2>
40065 template <typename Domain2>
40066 typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, Domain> &ma) const
40068 auto res = isl::pw_multi_aff::pullback(ma);
40069 return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
40072 template <typename Domain, typename Range, typename Range2>
40073 typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain> &ma) const
40075 auto res = isl::pw_multi_aff::pullback(ma);
40076 return typed::pw_multi_aff<pair<Range, Range2>>(res);
40079 template <typename Domain, typename Range, typename Range2>
40080 template <typename Domain2>
40081 typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, Domain> &pma2) const
40083 auto res = isl::pw_multi_aff::pullback(pma2);
40084 return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
40087 template <typename Domain, typename Range, typename Range2>
40088 typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain> &pma2) const
40090 auto res = isl::pw_multi_aff::pullback(pma2);
40091 return typed::pw_multi_aff<pair<Range, Range2>>(res);
40094 template <typename Domain, typename Range, typename Range2>
40095 template <typename Domain2>
40096 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
40098 auto res = isl::pw_multi_aff::pullback(upma2);
40099 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
40102 template <typename Domain, typename Range, typename Range2>
40103 typed::union_pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
40105 auto res = isl::pw_multi_aff::pullback(upma2);
40106 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
40109 template <typename Domain, typename Range, typename Range2>
40110 typed::pw_multi_aff_list<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff_list() const
40112 auto res = isl::pw_multi_aff::pw_multi_aff_list();
40113 return typed::pw_multi_aff_list<Domain, pair<Range, Range2>>(res);
40116 template <typename Domain, typename Range, typename Range2>
40117 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_domain() const
40119 auto res = isl::pw_multi_aff::range_factor_domain();
40120 return typed::pw_multi_aff<Domain, Range>(res);
40123 template <typename Domain, typename Range, typename Range2>
40124 typed::pw_multi_aff<Domain, Range2> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_range() const
40126 auto res = isl::pw_multi_aff::range_factor_range();
40127 return typed::pw_multi_aff<Domain, Range2>(res);
40130 template <typename Domain, typename Range, typename Range2>
40131 template <typename Arg3>
40132 typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<Domain, Arg3> &multi2) const
40134 auto res = isl::pw_multi_aff::range_product(multi2);
40135 return typed::multi_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
40138 template <typename Domain, typename Range, typename Range2>
40139 template <typename Arg3>
40140 typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<Domain, Arg3> &multi2) const
40142 auto res = isl::pw_multi_aff::range_product(multi2);
40143 return typed::multi_union_pw_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
40146 template <typename Domain, typename Range, typename Range2>
40147 template <typename Arg3>
40148 typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<Domain, Arg3> &pma2) const
40150 auto res = isl::pw_multi_aff::range_product(pma2);
40151 return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
40154 template <typename Domain, typename Range, typename Range2>
40155 template <typename Arg3>
40156 typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const
40158 auto res = isl::pw_multi_aff::range_product(upma2);
40159 return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
40162 template <typename Domain, typename Range, typename Range2>
40163 template <typename Arg3>
40164 typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_aff<Domain, Arg3> &pma2) const
40166 auto res = isl::pw_multi_aff::range_product(pma2);
40167 return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
40170 template <typename Domain, typename Range, typename Range2>
40171 typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_aff<Domain, Anonymous> &pma2) const
40173 auto res = isl::pw_multi_aff::range_product(pma2);
40174 return typed::pw_multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>>(res);
40177 template <typename Domain, typename Range, typename Range2>
40178 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
40180 auto res = isl::pw_multi_aff::scale(mv);
40181 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40184 template <typename Domain, typename Range, typename Range2>
40185 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
40187 auto res = isl::pw_multi_aff::scale(v);
40188 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40191 template <typename Domain, typename Range, typename Range2>
40192 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale(long v) const
40194 auto res = isl::pw_multi_aff::scale(v);
40195 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40198 template <typename Domain, typename Range, typename Range2>
40199 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
40201 auto res = isl::pw_multi_aff::scale_down(mv);
40202 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40205 template <typename Domain, typename Range, typename Range2>
40206 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
40208 auto res = isl::pw_multi_aff::scale_down(v);
40209 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40212 template <typename Domain, typename Range, typename Range2>
40213 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::scale_down(long v) const
40215 auto res = isl::pw_multi_aff::scale_down(v);
40216 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40219 template <typename Domain, typename Range, typename Range2>
40220 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<Domain, Anonymous> &el) const
40222 auto res = isl::pw_multi_aff::set_at(pos, el);
40223 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
40226 template <typename Domain, typename Range, typename Range2>
40227 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
40229 auto res = isl::pw_multi_aff::set_at(pos, el);
40230 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
40233 template <typename Domain, typename Range, typename Range2>
40234 typed::space<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::space() const
40236 auto res = isl::pw_multi_aff::space();
40237 return typed::space<Domain, pair<Range, Range2>>(res);
40240 template <typename Domain, typename Range, typename Range2>
40241 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &multi2) const
40243 auto res = isl::pw_multi_aff::sub(multi2);
40244 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
40247 template <typename Domain, typename Range, typename Range2>
40248 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &multi2) const
40250 auto res = isl::pw_multi_aff::sub(multi2);
40251 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
40254 template <typename Domain, typename Range, typename Range2>
40255 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
40257 auto res = isl::pw_multi_aff::sub(pma2);
40258 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40261 template <typename Domain, typename Range, typename Range2>
40262 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
40264 auto res = isl::pw_multi_aff::sub(upma2);
40265 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
40268 template <typename Domain, typename Range, typename Range2>
40269 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const
40271 auto res = isl::pw_multi_aff::sub(pma2);
40272 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40275 template <typename Domain, typename Range, typename Range2>
40276 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const
40278 auto res = isl::pw_multi_aff::sub(pma2);
40279 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40282 template <typename Domain, typename Range, typename Range2>
40283 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::set<Domain> &set) const
40285 auto res = isl::pw_multi_aff::subtract_domain(set);
40286 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40289 template <typename Domain, typename Range, typename Range2>
40290 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::space<Domain> &space) const
40292 auto res = isl::pw_multi_aff::subtract_domain(space);
40293 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
40296 template <typename Domain, typename Range, typename Range2>
40297 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &uset) const
40299 auto res = isl::pw_multi_aff::subtract_domain(uset);
40300 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
40303 template <typename Domain, typename Range, typename Range2>
40304 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::basic_set<Domain> &set) const
40306 auto res = isl::pw_multi_aff::subtract_domain(set);
40307 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40310 template <typename Domain, typename Range, typename Range2>
40311 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::point<Domain> &set) const
40313 auto res = isl::pw_multi_aff::subtract_domain(set);
40314 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40317 template <typename Domain, typename Range, typename Range2>
40318 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::to_multi_pw_aff() const
40320 auto res = isl::pw_multi_aff::to_multi_pw_aff();
40321 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
40324 template <typename Domain, typename Range, typename Range2>
40325 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::to_union_pw_multi_aff() const
40327 auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
40328 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
40331 template <typename Domain, typename Range, typename Range2>
40332 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<Domain, pair<Range, Range2>> &mpa2) const
40334 auto res = isl::pw_multi_aff::union_add(mpa2);
40335 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
40338 template <typename Domain, typename Range, typename Range2>
40339 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<Domain, pair<Range, Range2>> &mupa2) const
40341 auto res = isl::pw_multi_aff::union_add(mupa2);
40342 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
40345 template <typename Domain, typename Range, typename Range2>
40346 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma2) const
40348 auto res = isl::pw_multi_aff::union_add(pma2);
40349 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40352 template <typename Domain, typename Range, typename Range2>
40353 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
40355 auto res = isl::pw_multi_aff::union_add(upma2);
40356 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
40359 template <typename Domain, typename Range, typename Range2>
40360 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &pma2) const
40362 auto res = isl::pw_multi_aff::union_add(pma2);
40363 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40366 template <typename Domain, typename Range, typename Range2>
40367 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_aff<Domain, pair<Range, Range2>> &pma2) const
40369 auto res = isl::pw_multi_aff::union_add(pma2);
40370 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
40373 template <typename T1, typename T2, typename Range, typename Range2>
40374 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma)
40375 : isl::pw_multi_aff(ma)
40379 template <typename T1, typename T2, typename Range, typename Range2>
40380 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pa)
40381 : isl::pw_multi_aff(pa)
40385 template <typename T1, typename T2, typename Range, typename Range2>
40386 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff(const isl::ctx &ctx, const std::string &str)
40387 : isl::pw_multi_aff(ctx, str)
40391 template <typename T1, typename T2, typename Range, typename Range2>
40392 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
40394 auto res = isl::pw_multi_aff::add(multi2);
40395 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40398 template <typename T1, typename T2, typename Range, typename Range2>
40399 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
40401 auto res = isl::pw_multi_aff::add(multi2);
40402 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40405 template <typename T1, typename T2, typename Range, typename Range2>
40406 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
40408 auto res = isl::pw_multi_aff::add(pma2);
40409 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40412 template <typename T1, typename T2, typename Range, typename Range2>
40413 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
40415 auto res = isl::pw_multi_aff::add(upma2);
40416 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40419 template <typename T1, typename T2, typename Range, typename Range2>
40420 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
40422 auto res = isl::pw_multi_aff::add(pma2);
40423 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40426 template <typename T1, typename T2, typename Range, typename Range2>
40427 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
40429 auto res = isl::pw_multi_aff::add(pma2);
40430 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40433 template <typename T1, typename T2, typename Range, typename Range2>
40434 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::multi_val<pair<Range, Range2>> &mv) const
40436 auto res = isl::pw_multi_aff::add_constant(mv);
40437 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40440 template <typename T1, typename T2, typename Range, typename Range2>
40441 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(const typed::val<pair<Range, Range2>> &v) const
40443 auto res = isl::pw_multi_aff::add_constant(v);
40444 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40447 template <typename T1, typename T2, typename Range, typename Range2>
40448 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add_constant(long v) const
40450 auto res = isl::pw_multi_aff::add_constant(v);
40451 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40454 template <typename T1, typename T2, typename Range, typename Range2>
40455 template <typename Arg2>
40456 typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
40458 auto res = isl::pw_multi_aff::apply(upma2);
40459 return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
40462 template <typename T1, typename T2, typename Range, typename Range2>
40463 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_map() const
40465 auto res = isl::pw_multi_aff::as_map();
40466 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
40469 template <typename T1, typename T2, typename Range, typename Range2>
40470 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_aff() const
40472 auto res = isl::pw_multi_aff::as_multi_aff();
40473 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40476 template <typename T1, typename T2, typename Range, typename Range2>
40477 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
40479 auto res = isl::pw_multi_aff::as_multi_union_pw_aff();
40480 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40483 template <typename T1, typename T2, typename Range, typename Range2>
40484 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
40486 auto res = isl::pw_multi_aff::as_pw_multi_aff();
40487 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40490 template <typename T1, typename T2, typename Range, typename Range2>
40491 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_union_map() const
40493 auto res = isl::pw_multi_aff::as_union_map();
40494 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
40497 template <typename T1, typename T2, typename Range, typename Range2>
40498 typed::pw_aff<pair<T1, T2>, Anonymous> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::at(int pos) const
40500 auto res = isl::pw_multi_aff::at(pos);
40501 return typed::pw_aff<pair<T1, T2>, Anonymous>(res);
40504 template <typename T1, typename T2, typename Range, typename Range2>
40505 typed::set<pair<T1, T2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind(const typed::multi_id<pair<Range, Range2>> &tuple) const
40507 auto res = isl::pw_multi_aff::bind(tuple);
40508 return typed::set<pair<T1, T2>>(res);
40511 template <typename T1, typename T2, typename Range, typename Range2>
40512 typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain(const typed::multi_id<pair<T1, T2>> &tuple) const
40514 auto res = isl::pw_multi_aff::bind_domain(tuple);
40515 return typed::pw_multi_aff<pair<Range, Range2>>(res);
40518 template <typename T1, typename T2, typename Range, typename Range2>
40519 typed::pw_multi_aff<T2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::bind_domain_wrapped_domain(const typed::multi_id<T1> &tuple) const
40521 auto res = isl::pw_multi_aff::bind_domain_wrapped_domain(tuple);
40522 return typed::pw_multi_aff<T2, pair<Range, Range2>>(res);
40525 template <typename T1, typename T2, typename Range, typename Range2>
40526 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
40528 auto res = isl::pw_multi_aff::coalesce();
40529 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40532 template <typename T1, typename T2, typename Range, typename Range2>
40533 typed::set<pair<T1, T2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain() const
40535 auto res = isl::pw_multi_aff::domain();
40536 return typed::set<pair<T1, T2>>(res);
40539 template <typename T1, typename T2, typename Range, typename Range2>
40540 typed::pw_multi_aff<pair<T2, T1>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain_reverse() const
40542 auto res = isl::pw_multi_aff::domain_reverse();
40543 return typed::pw_multi_aff<pair<T2, T1>, pair<Range, Range2>>(res);
40546 template <typename T1, typename T2, typename Range, typename Range2>
40547 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::drop_unused_params() const
40549 auto res = isl::pw_multi_aff::drop_unused_params();
40550 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40553 template <typename T1, typename T2, typename Range, typename Range2>
40554 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
40556 auto res = isl::pw_multi_aff::extract_pw_multi_aff(space);
40557 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40560 template <typename T1, typename T2, typename Range, typename Range2>
40561 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::set<pair<T1, T2>> &set) const
40563 auto res = isl::pw_multi_aff::gist(set);
40564 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40567 template <typename T1, typename T2, typename Range, typename Range2>
40568 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_set<pair<T1, T2>> &context) const
40570 auto res = isl::pw_multi_aff::gist(context);
40571 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40574 template <typename T1, typename T2, typename Range, typename Range2>
40575 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_set<pair<T1, T2>> &set) const
40577 auto res = isl::pw_multi_aff::gist(set);
40578 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40581 template <typename T1, typename T2, typename Range, typename Range2>
40582 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::point<pair<T1, T2>> &set) const
40584 auto res = isl::pw_multi_aff::gist(set);
40585 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40588 template <typename T1, typename T2, typename Range, typename Range2>
40589 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::set<> &set) const
40591 auto res = isl::pw_multi_aff::gist_params(set);
40592 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40595 template <typename T1, typename T2, typename Range, typename Range2>
40596 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::basic_set<> &set) const
40598 auto res = isl::pw_multi_aff::gist_params(set);
40599 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40602 template <typename T1, typename T2, typename Range, typename Range2>
40603 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::point<> &set) const
40605 auto res = isl::pw_multi_aff::gist_params(set);
40606 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40609 template <typename T1, typename T2, typename Range, typename Range2>
40610 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::identity() const
40612 auto res = isl::pw_multi_aff::identity();
40613 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40616 template <typename T1, typename T2, typename Range, typename Range2>
40617 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::set<pair<T1, T2>> &set) const
40619 auto res = isl::pw_multi_aff::intersect_domain(set);
40620 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40623 template <typename T1, typename T2, typename Range, typename Range2>
40624 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
40626 auto res = isl::pw_multi_aff::intersect_domain(space);
40627 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40630 template <typename T1, typename T2, typename Range, typename Range2>
40631 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
40633 auto res = isl::pw_multi_aff::intersect_domain(uset);
40634 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40637 template <typename T1, typename T2, typename Range, typename Range2>
40638 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::basic_set<pair<T1, T2>> &set) const
40640 auto res = isl::pw_multi_aff::intersect_domain(set);
40641 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40644 template <typename T1, typename T2, typename Range, typename Range2>
40645 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::point<pair<T1, T2>> &set) const
40647 auto res = isl::pw_multi_aff::intersect_domain(set);
40648 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40651 template <typename T1, typename T2, typename Range, typename Range2>
40652 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &uset) const
40654 auto res = isl::pw_multi_aff::intersect_domain_wrapped_domain(uset);
40655 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40658 template <typename T1, typename T2, typename Range, typename Range2>
40659 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
40661 auto res = isl::pw_multi_aff::intersect_params(set);
40662 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40665 template <typename T1, typename T2, typename Range, typename Range2>
40666 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
40668 auto res = isl::pw_multi_aff::intersect_params(set);
40669 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40672 template <typename T1, typename T2, typename Range, typename Range2>
40673 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
40675 auto res = isl::pw_multi_aff::intersect_params(set);
40676 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40679 template <typename T1, typename T2, typename Range, typename Range2>
40680 typed::pw_aff_list<pair<T1, T2>, Anonymous> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::list() const
40682 auto res = isl::pw_multi_aff::list();
40683 return typed::pw_aff_list<pair<T1, T2>, Anonymous>(res);
40686 template <typename T1, typename T2, typename Range, typename Range2>
40687 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::max(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
40689 auto res = isl::pw_multi_aff::max(multi2);
40690 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40693 template <typename T1, typename T2, typename Range, typename Range2>
40694 typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::max_multi_val() const
40696 auto res = isl::pw_multi_aff::max_multi_val();
40697 return typed::multi_val<pair<Range, Range2>>(res);
40700 template <typename T1, typename T2, typename Range, typename Range2>
40701 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::min(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
40703 auto res = isl::pw_multi_aff::min(multi2);
40704 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40707 template <typename T1, typename T2, typename Range, typename Range2>
40708 typed::multi_val<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::min_multi_val() const
40710 auto res = isl::pw_multi_aff::min_multi_val();
40711 return typed::multi_val<pair<Range, Range2>>(res);
40714 template <typename T1, typename T2, typename Range, typename Range2>
40715 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::neg() const
40717 auto res = isl::pw_multi_aff::neg();
40718 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40721 template <typename T1, typename T2, typename Range, typename Range2>
40722 template <typename Domain3>
40723 typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &pma2) const
40725 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
40726 return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
40729 template <typename T1, typename T2, typename Range, typename Range2>
40730 template <typename Domain3>
40731 typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const
40733 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(upma2);
40734 return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
40737 template <typename T1, typename T2, typename Range, typename Range2>
40738 template <typename Domain3>
40739 typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &pma2) const
40741 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
40742 return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
40745 template <typename T1, typename T2, typename Range, typename Range2>
40746 template <typename Domain3>
40747 typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_aff<Domain3, T1> &pma2) const
40749 auto res = isl::pw_multi_aff::preimage_domain_wrapped_domain(pma2);
40750 return typed::pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
40753 template <typename T1, typename T2, typename Range, typename Range2>
40754 template <typename Domain2, typename Arg2>
40755 typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_pw_aff<Domain2, Arg2> &multi2) const
40757 auto res = isl::pw_multi_aff::product(multi2);
40758 return typed::multi_pw_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
40761 template <typename T1, typename T2, typename Range, typename Range2>
40762 template <typename Domain2, typename Arg2>
40763 typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::pw_multi_aff<Domain2, Arg2> &pma2) const
40765 auto res = isl::pw_multi_aff::product(pma2);
40766 return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
40769 template <typename T1, typename T2, typename Range, typename Range2>
40770 template <typename Domain2, typename Arg2>
40771 typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::multi_aff<Domain2, Arg2> &pma2) const
40773 auto res = isl::pw_multi_aff::product(pma2);
40774 return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
40777 template <typename T1, typename T2, typename Range, typename Range2>
40778 template <typename Domain2>
40779 typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Anonymous>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::product(const typed::pw_aff<Domain2, Anonymous> &pma2) const
40781 auto res = isl::pw_multi_aff::product(pma2);
40782 return typed::pw_multi_aff<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Anonymous>>(res);
40785 template <typename T1, typename T2, typename Range, typename Range2>
40786 template <typename Domain2>
40787 typed::multi_pw_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa2) const
40789 auto res = isl::pw_multi_aff::pullback(mpa2);
40790 return typed::multi_pw_aff<Domain2, pair<Range, Range2>>(res);
40793 template <typename T1, typename T2, typename Range, typename Range2>
40794 typed::multi_pw_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_pw_aff<pair<T1, T2>> &mpa2) const
40796 auto res = isl::pw_multi_aff::pullback(mpa2);
40797 return typed::multi_pw_aff<pair<Range, Range2>>(res);
40800 template <typename T1, typename T2, typename Range, typename Range2>
40801 template <typename Domain2>
40802 typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
40804 auto res = isl::pw_multi_aff::pullback(ma);
40805 return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
40808 template <typename T1, typename T2, typename Range, typename Range2>
40809 typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<pair<T1, T2>> &ma) const
40811 auto res = isl::pw_multi_aff::pullback(ma);
40812 return typed::pw_multi_aff<pair<Range, Range2>>(res);
40815 template <typename T1, typename T2, typename Range, typename Range2>
40816 template <typename Domain2>
40817 typed::pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma2) const
40819 auto res = isl::pw_multi_aff::pullback(pma2);
40820 return typed::pw_multi_aff<Domain2, pair<Range, Range2>>(res);
40823 template <typename T1, typename T2, typename Range, typename Range2>
40824 typed::pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<pair<T1, T2>> &pma2) const
40826 auto res = isl::pw_multi_aff::pullback(pma2);
40827 return typed::pw_multi_aff<pair<Range, Range2>>(res);
40830 template <typename T1, typename T2, typename Range, typename Range2>
40831 template <typename Domain2>
40832 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
40834 auto res = isl::pw_multi_aff::pullback(upma2);
40835 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
40838 template <typename T1, typename T2, typename Range, typename Range2>
40839 typed::union_pw_multi_aff<pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const
40841 auto res = isl::pw_multi_aff::pullback(upma2);
40842 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
40845 template <typename T1, typename T2, typename Range, typename Range2>
40846 typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff_list() const
40848 auto res = isl::pw_multi_aff::pw_multi_aff_list();
40849 return typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>>(res);
40852 template <typename T1, typename T2, typename Range, typename Range2>
40853 typed::pw_multi_aff<pair<T1, T2>, Range> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
40855 auto res = isl::pw_multi_aff::range_factor_domain();
40856 return typed::pw_multi_aff<pair<T1, T2>, Range>(res);
40859 template <typename T1, typename T2, typename Range, typename Range2>
40860 typed::pw_multi_aff<pair<T1, T2>, Range2> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
40862 auto res = isl::pw_multi_aff::range_factor_range();
40863 return typed::pw_multi_aff<pair<T1, T2>, Range2>(res);
40866 template <typename T1, typename T2, typename Range, typename Range2>
40867 template <typename Arg2>
40868 typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_pw_aff<pair<T1, T2>, Arg2> &multi2) const
40870 auto res = isl::pw_multi_aff::range_product(multi2);
40871 return typed::multi_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
40874 template <typename T1, typename T2, typename Range, typename Range2>
40875 template <typename Arg2>
40876 typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_union_pw_aff<pair<T1, T2>, Arg2> &multi2) const
40878 auto res = isl::pw_multi_aff::range_product(multi2);
40879 return typed::multi_union_pw_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
40882 template <typename T1, typename T2, typename Range, typename Range2>
40883 template <typename Arg2>
40884 typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &pma2) const
40886 auto res = isl::pw_multi_aff::range_product(pma2);
40887 return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
40890 template <typename T1, typename T2, typename Range, typename Range2>
40891 template <typename Arg2>
40892 typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
40894 auto res = isl::pw_multi_aff::range_product(upma2);
40895 return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
40898 template <typename T1, typename T2, typename Range, typename Range2>
40899 template <typename Arg2>
40900 typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &pma2) const
40902 auto res = isl::pw_multi_aff::range_product(pma2);
40903 return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
40906 template <typename T1, typename T2, typename Range, typename Range2>
40907 typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_aff<pair<T1, T2>, Anonymous> &pma2) const
40909 auto res = isl::pw_multi_aff::range_product(pma2);
40910 return typed::pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>>(res);
40913 template <typename T1, typename T2, typename Range, typename Range2>
40914 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::multi_val<pair<Range, Range2>> &mv) const
40916 auto res = isl::pw_multi_aff::scale(mv);
40917 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40920 template <typename T1, typename T2, typename Range, typename Range2>
40921 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(const typed::val<pair<Range, Range2>> &v) const
40923 auto res = isl::pw_multi_aff::scale(v);
40924 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40927 template <typename T1, typename T2, typename Range, typename Range2>
40928 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale(long v) const
40930 auto res = isl::pw_multi_aff::scale(v);
40931 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40934 template <typename T1, typename T2, typename Range, typename Range2>
40935 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::multi_val<pair<Range, Range2>> &mv) const
40937 auto res = isl::pw_multi_aff::scale_down(mv);
40938 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40941 template <typename T1, typename T2, typename Range, typename Range2>
40942 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(const typed::val<pair<Range, Range2>> &v) const
40944 auto res = isl::pw_multi_aff::scale_down(v);
40945 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40948 template <typename T1, typename T2, typename Range, typename Range2>
40949 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::scale_down(long v) const
40951 auto res = isl::pw_multi_aff::scale_down(v);
40952 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40955 template <typename T1, typename T2, typename Range, typename Range2>
40956 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::pw_aff<pair<T1, T2>, Anonymous> &el) const
40958 auto res = isl::pw_multi_aff::set_at(pos, el);
40959 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40962 template <typename T1, typename T2, typename Range, typename Range2>
40963 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::set_at(int pos, const typed::union_pw_aff<pair<T1, T2>, Anonymous> &el) const
40965 auto res = isl::pw_multi_aff::set_at(pos, el);
40966 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40969 template <typename T1, typename T2, typename Range, typename Range2>
40970 typed::space<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::space() const
40972 auto res = isl::pw_multi_aff::space();
40973 return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
40976 template <typename T1, typename T2, typename Range, typename Range2>
40977 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
40979 auto res = isl::pw_multi_aff::sub(multi2);
40980 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40983 template <typename T1, typename T2, typename Range, typename Range2>
40984 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &multi2) const
40986 auto res = isl::pw_multi_aff::sub(multi2);
40987 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40990 template <typename T1, typename T2, typename Range, typename Range2>
40991 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
40993 auto res = isl::pw_multi_aff::sub(pma2);
40994 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
40997 template <typename T1, typename T2, typename Range, typename Range2>
40998 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
41000 auto res = isl::pw_multi_aff::sub(upma2);
41001 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41004 template <typename T1, typename T2, typename Range, typename Range2>
41005 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
41007 auto res = isl::pw_multi_aff::sub(pma2);
41008 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41011 template <typename T1, typename T2, typename Range, typename Range2>
41012 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
41014 auto res = isl::pw_multi_aff::sub(pma2);
41015 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41018 template <typename T1, typename T2, typename Range, typename Range2>
41019 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::set<pair<T1, T2>> &set) const
41021 auto res = isl::pw_multi_aff::subtract_domain(set);
41022 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41025 template <typename T1, typename T2, typename Range, typename Range2>
41026 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::space<pair<T1, T2>> &space) const
41028 auto res = isl::pw_multi_aff::subtract_domain(space);
41029 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41032 template <typename T1, typename T2, typename Range, typename Range2>
41033 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const
41035 auto res = isl::pw_multi_aff::subtract_domain(uset);
41036 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41039 template <typename T1, typename T2, typename Range, typename Range2>
41040 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::basic_set<pair<T1, T2>> &set) const
41042 auto res = isl::pw_multi_aff::subtract_domain(set);
41043 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41046 template <typename T1, typename T2, typename Range, typename Range2>
41047 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::point<pair<T1, T2>> &set) const
41049 auto res = isl::pw_multi_aff::subtract_domain(set);
41050 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41053 template <typename T1, typename T2, typename Range, typename Range2>
41054 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_multi_pw_aff() const
41056 auto res = isl::pw_multi_aff::to_multi_pw_aff();
41057 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41060 template <typename T1, typename T2, typename Range, typename Range2>
41061 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::to_union_pw_multi_aff() const
41063 auto res = isl::pw_multi_aff::to_union_pw_multi_aff();
41064 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41067 template <typename T1, typename T2, typename Range, typename Range2>
41068 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mpa2) const
41070 auto res = isl::pw_multi_aff::union_add(mpa2);
41071 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41074 template <typename T1, typename T2, typename Range, typename Range2>
41075 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &mupa2) const
41077 auto res = isl::pw_multi_aff::union_add(mupa2);
41078 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41081 template <typename T1, typename T2, typename Range, typename Range2>
41082 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
41084 auto res = isl::pw_multi_aff::union_add(pma2);
41085 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41088 template <typename T1, typename T2, typename Range, typename Range2>
41089 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
41091 auto res = isl::pw_multi_aff::union_add(upma2);
41092 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41095 template <typename T1, typename T2, typename Range, typename Range2>
41096 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
41098 auto res = isl::pw_multi_aff::union_add(pma2);
41099 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41102 template <typename T1, typename T2, typename Range, typename Range2>
41103 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_aff<pair<T1, T2>, pair<Range, Range2>> &pma2) const
41105 auto res = isl::pw_multi_aff::union_add(pma2);
41106 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
41109 template <typename Domain>
41110 typed::pw_multi_aff_list<Domain>::pw_multi_aff_list(const isl::ctx &ctx, int n)
41111 : isl::pw_multi_aff_list(ctx, n)
41115 template <typename Domain>
41116 typed::pw_multi_aff_list<Domain>::pw_multi_aff_list(const typed::pw_multi_aff<Domain> &el)
41117 : isl::pw_multi_aff_list(el)
41121 template <typename Domain>
41122 typed::pw_multi_aff_list<Domain>::pw_multi_aff_list(const isl::ctx &ctx, const std::string &str)
41123 : isl::pw_multi_aff_list(ctx, str)
41127 template <typename Domain>
41128 typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::add(const typed::pw_multi_aff<Domain> &el) const
41130 auto res = isl::pw_multi_aff_list::add(el);
41131 return typed::pw_multi_aff_list<Domain>(res);
41134 template <typename Domain>
41135 typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::add(const typed::multi_aff<Domain> &el) const
41137 auto res = isl::pw_multi_aff_list::add(el);
41138 return typed::pw_multi_aff_list<Domain>(res);
41141 template <typename Domain>
41142 typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::add(const typed::pw_aff<Domain> &el) const
41144 auto res = isl::pw_multi_aff_list::add(el);
41145 return typed::pw_multi_aff_list<Domain>(res);
41148 template <typename Domain>
41149 typed::pw_multi_aff<Domain> typed::pw_multi_aff_list<Domain>::at(int index) const
41151 auto res = isl::pw_multi_aff_list::at(index);
41152 return typed::pw_multi_aff<Domain>(res);
41155 template <typename Domain>
41156 typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::drop(unsigned int first, unsigned int n) const
41158 auto res = isl::pw_multi_aff_list::drop(first, n);
41159 return typed::pw_multi_aff_list<Domain>(res);
41162 template <typename Domain>
41163 void typed::pw_multi_aff_list<Domain>::foreach(const std::function<void(typed::pw_multi_aff<Domain>)> &fn) const
41165 auto lambda_fn = [&] (isl::pw_multi_aff arg0) {
41166 return fn(typed::pw_multi_aff<Domain>(arg0));
41168 return isl::pw_multi_aff_list::foreach(lambda_fn);
41171 template <typename Domain>
41172 void typed::pw_multi_aff_list<Domain>::foreach_scc(const std::function<bool(typed::pw_multi_aff<Domain>, typed::pw_multi_aff<Domain>)> &follows, const std::function<void(typed::pw_multi_aff_list<Domain>)> &fn) const
41174 auto lambda_follows = [&] (isl::pw_multi_aff arg0, isl::pw_multi_aff arg1) {
41175 return follows(typed::pw_multi_aff<Domain>(arg0), typed::pw_multi_aff<Domain>(arg1));
41177 auto lambda_fn = [&] (isl::pw_multi_aff_list arg0) {
41178 return fn(typed::pw_multi_aff_list<Domain>(arg0));
41180 return isl::pw_multi_aff_list::foreach_scc(lambda_follows, lambda_fn);
41183 template <typename Domain>
41184 typed::pw_multi_aff_list<Domain> typed::pw_multi_aff_list<Domain>::set_at(int index, const typed::pw_multi_aff<Anonymous> &el) const
41186 auto res = isl::pw_multi_aff_list::set_at(index, el);
41187 return typed::pw_multi_aff_list<Domain>(res);
41190 template <typename Domain, typename Range>
41191 typed::pw_multi_aff_list<Domain, Range>::pw_multi_aff_list(const isl::ctx &ctx, int n)
41192 : isl::pw_multi_aff_list(ctx, n)
41196 template <typename Domain, typename Range>
41197 typed::pw_multi_aff_list<Domain, Range>::pw_multi_aff_list(const typed::pw_multi_aff<Domain, Range> &el)
41198 : isl::pw_multi_aff_list(el)
41202 template <typename Domain, typename Range>
41203 typed::pw_multi_aff_list<Domain, Range>::pw_multi_aff_list(const isl::ctx &ctx, const std::string &str)
41204 : isl::pw_multi_aff_list(ctx, str)
41208 template <typename Domain, typename Range>
41209 typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &el) const
41211 auto res = isl::pw_multi_aff_list::add(el);
41212 return typed::pw_multi_aff_list<Domain, Range>(res);
41215 template <typename Domain, typename Range>
41216 typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::add(const typed::multi_aff<Domain, Range> &el) const
41218 auto res = isl::pw_multi_aff_list::add(el);
41219 return typed::pw_multi_aff_list<Domain, Range>(res);
41222 template <typename Domain, typename Range>
41223 typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::add(const typed::pw_aff<Domain, Range> &el) const
41225 auto res = isl::pw_multi_aff_list::add(el);
41226 return typed::pw_multi_aff_list<Domain, Range>(res);
41229 template <typename Domain, typename Range>
41230 typed::pw_multi_aff<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::at(int index) const
41232 auto res = isl::pw_multi_aff_list::at(index);
41233 return typed::pw_multi_aff<Domain, Range>(res);
41236 template <typename Domain, typename Range>
41237 typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::drop(unsigned int first, unsigned int n) const
41239 auto res = isl::pw_multi_aff_list::drop(first, n);
41240 return typed::pw_multi_aff_list<Domain, Range>(res);
41243 template <typename Domain, typename Range>
41244 void typed::pw_multi_aff_list<Domain, Range>::foreach(const std::function<void(typed::pw_multi_aff<Domain, Range>)> &fn) const
41246 auto lambda_fn = [&] (isl::pw_multi_aff arg0) {
41247 return fn(typed::pw_multi_aff<Domain, Range>(arg0));
41249 return isl::pw_multi_aff_list::foreach(lambda_fn);
41252 template <typename Domain, typename Range>
41253 void typed::pw_multi_aff_list<Domain, Range>::foreach_scc(const std::function<bool(typed::pw_multi_aff<Domain, Range>, typed::pw_multi_aff<Domain, Range>)> &follows, const std::function<void(typed::pw_multi_aff_list<Domain, Range>)> &fn) const
41255 auto lambda_follows = [&] (isl::pw_multi_aff arg0, isl::pw_multi_aff arg1) {
41256 return follows(typed::pw_multi_aff<Domain, Range>(arg0), typed::pw_multi_aff<Domain, Range>(arg1));
41258 auto lambda_fn = [&] (isl::pw_multi_aff_list arg0) {
41259 return fn(typed::pw_multi_aff_list<Domain, Range>(arg0));
41261 return isl::pw_multi_aff_list::foreach_scc(lambda_follows, lambda_fn);
41264 template <typename Domain, typename Range>
41265 typed::pw_multi_aff_list<Domain, Range> typed::pw_multi_aff_list<Domain, Range>::set_at(int index, const typed::pw_multi_aff<Domain, Anonymous> &el) const
41267 auto res = isl::pw_multi_aff_list::set_at(index, el);
41268 return typed::pw_multi_aff_list<Domain, Range>(res);
41271 typed::set<>::set(const typed::basic_set<> &bset)
41272 : isl::set(bset)
41276 typed::set<>::set(const typed::point<> &pnt)
41277 : isl::set(pnt)
41281 typed::set<>::set(const isl::ctx &ctx, const std::string &str)
41282 : isl::set(ctx, str)
41286 typed::set<> typed::set<>::coalesce() const
41288 auto res = isl::set::coalesce();
41289 return typed::set<>(res);
41292 typed::set<> typed::set<>::detect_equalities() const
41294 auto res = isl::set::detect_equalities();
41295 return typed::set<>(res);
41298 typed::set<> typed::set<>::drop_unused_params() const
41300 auto res = isl::set::drop_unused_params();
41301 return typed::set<>(res);
41304 bool typed::set<>::every_set(const std::function<bool(typed::set<>)> &test) const
41306 auto lambda_test = [&] (isl::set arg0) {
41307 return test(typed::set<>(arg0));
41309 return isl::set::every_set(lambda_test);
41312 typed::set<> typed::set<>::extract_set(const typed::space<> &space) const
41314 auto res = isl::set::extract_set(space);
41315 return typed::set<>(res);
41318 void typed::set<>::foreach_basic_set(const std::function<void(typed::basic_set<>)> &fn) const
41320 auto lambda_fn = [&] (isl::basic_set arg0) {
41321 return fn(typed::basic_set<>(arg0));
41323 return isl::set::foreach_basic_set(lambda_fn);
41326 void typed::set<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
41328 auto lambda_fn = [&] (isl::point arg0) {
41329 return fn(typed::point<>(arg0));
41331 return isl::set::foreach_point(lambda_fn);
41334 void typed::set<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
41336 auto lambda_fn = [&] (isl::set arg0) {
41337 return fn(typed::set<>(arg0));
41339 return isl::set::foreach_set(lambda_fn);
41342 typed::set<> typed::set<>::gist(const typed::set<> &context) const
41344 auto res = isl::set::gist(context);
41345 return typed::set<>(res);
41348 typed::union_set<> typed::set<>::gist(const typed::union_set<> &context) const
41350 auto res = isl::set::gist(context);
41351 return typed::union_set<>(res);
41354 typed::set<> typed::set<>::gist(const typed::basic_set<> &context) const
41356 auto res = isl::set::gist(context);
41357 return typed::set<>(res);
41360 typed::set<> typed::set<>::gist(const typed::point<> &context) const
41362 auto res = isl::set::gist(context);
41363 return typed::set<>(res);
41366 typed::pw_aff<Anonymous> typed::set<>::indicator_function() const
41368 auto res = isl::set::indicator_function();
41369 return typed::pw_aff<Anonymous>(res);
41372 typed::set<> typed::set<>::intersect(const typed::set<> &set2) const
41374 auto res = isl::set::intersect(set2);
41375 return typed::set<>(res);
41378 typed::union_set<> typed::set<>::intersect(const typed::union_set<> &uset2) const
41380 auto res = isl::set::intersect(uset2);
41381 return typed::union_set<>(res);
41384 typed::set<> typed::set<>::intersect(const typed::basic_set<> &set2) const
41386 auto res = isl::set::intersect(set2);
41387 return typed::set<>(res);
41390 typed::set<> typed::set<>::intersect(const typed::point<> &set2) const
41392 auto res = isl::set::intersect(set2);
41393 return typed::set<>(res);
41396 typed::pw_aff<Anonymous> typed::set<>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
41398 auto res = isl::set::param_pw_aff_on_domain(id);
41399 return typed::pw_aff<Anonymous>(res);
41402 typed::pw_aff<Anonymous> typed::set<>::param_pw_aff_on_domain(const std::string &id) const
41404 auto res = isl::set::param_pw_aff_on_domain(id);
41405 return typed::pw_aff<Anonymous>(res);
41408 typed::set<> typed::set<>::project_out_all_params() const
41410 auto res = isl::set::project_out_all_params();
41411 return typed::set<>(res);
41414 typed::set<> typed::set<>::project_out_param(const typed::id<Anonymous> &id) const
41416 auto res = isl::set::project_out_param(id);
41417 return typed::set<>(res);
41420 typed::set<> typed::set<>::project_out_param(const std::string &id) const
41422 auto res = isl::set::project_out_param(id);
41423 return typed::set<>(res);
41426 typed::set<> typed::set<>::project_out_param(const typed::id_list<Anonymous> &list) const
41428 auto res = isl::set::project_out_param(list);
41429 return typed::set<>(res);
41432 typed::pw_aff<Anonymous> typed::set<>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
41434 auto res = isl::set::pw_aff_on_domain(v);
41435 return typed::pw_aff<Anonymous>(res);
41438 typed::pw_aff<Anonymous> typed::set<>::pw_aff_on_domain(long v) const
41440 auto res = isl::set::pw_aff_on_domain(v);
41441 return typed::pw_aff<Anonymous>(res);
41444 template <typename Domain>
41445 typed::pw_multi_aff<Domain> typed::set<>::pw_multi_aff_on_domain(const typed::multi_val<Domain> &mv) const
41447 auto res = isl::set::pw_multi_aff_on_domain(mv);
41448 return typed::pw_multi_aff<Domain>(res);
41451 typed::set_list<> typed::set<>::set_list() const
41453 auto res = isl::set::set_list();
41454 return typed::set_list<>(res);
41457 typed::space<> typed::set<>::space() const
41459 auto res = isl::set::space();
41460 return typed::space<>(res);
41463 typed::set<> typed::set<>::subtract(const typed::set<> &set2) const
41465 auto res = isl::set::subtract(set2);
41466 return typed::set<>(res);
41469 typed::union_set<> typed::set<>::subtract(const typed::union_set<> &uset2) const
41471 auto res = isl::set::subtract(uset2);
41472 return typed::union_set<>(res);
41475 typed::set<> typed::set<>::subtract(const typed::basic_set<> &set2) const
41477 auto res = isl::set::subtract(set2);
41478 return typed::set<>(res);
41481 typed::set<> typed::set<>::subtract(const typed::point<> &set2) const
41483 auto res = isl::set::subtract(set2);
41484 return typed::set<>(res);
41487 typed::union_set<> typed::set<>::to_union_set() const
41489 auto res = isl::set::to_union_set();
41490 return typed::union_set<>(res);
41493 template <typename Domain>
41494 typed::set<Domain> typed::set<>::unbind_params(const typed::multi_id<Domain> &tuple) const
41496 auto res = isl::set::unbind_params(tuple);
41497 return typed::set<Domain>(res);
41500 typed::set<> typed::set<>::unite(const typed::set<> &set2) const
41502 auto res = isl::set::unite(set2);
41503 return typed::set<>(res);
41506 typed::union_set<> typed::set<>::unite(const typed::union_set<> &uset2) const
41508 auto res = isl::set::unite(uset2);
41509 return typed::union_set<>(res);
41512 typed::set<> typed::set<>::unite(const typed::basic_set<> &set2) const
41514 auto res = isl::set::unite(set2);
41515 return typed::set<>(res);
41518 typed::set<> typed::set<>::unite(const typed::point<> &set2) const
41520 auto res = isl::set::unite(set2);
41521 return typed::set<>(res);
41524 typed::set<> typed::set<>::universe(const typed::space<> &space)
41526 auto res = isl::set::universe(space);
41527 return typed::set<>(res);
41530 template <typename Domain>
41531 typed::set<Domain>::set(const typed::basic_set<Domain> &bset)
41532 : isl::set(bset)
41536 template <typename Domain>
41537 typed::set<Domain>::set(const typed::point<Domain> &pnt)
41538 : isl::set(pnt)
41542 template <typename Domain>
41543 typed::set<Domain>::set(const isl::ctx &ctx, const std::string &str)
41544 : isl::set(ctx, str)
41548 template <typename Domain>
41549 template <typename Range>
41550 typed::set<Range> typed::set<Domain>::apply(const typed::map<Domain, Range> &map) const
41552 auto res = isl::set::apply(map);
41553 return typed::set<Range>(res);
41556 template <typename Domain>
41557 template <typename Range>
41558 typed::union_set<Range> typed::set<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
41560 auto res = isl::set::apply(umap);
41561 return typed::union_set<Range>(res);
41564 template <typename Domain>
41565 template <typename Range>
41566 typed::set<Range> typed::set<Domain>::apply(const typed::basic_map<Domain, Range> &map) const
41568 auto res = isl::set::apply(map);
41569 return typed::set<Range>(res);
41572 template <typename Domain>
41573 typed::pw_multi_aff<Domain> typed::set<Domain>::as_pw_multi_aff() const
41575 auto res = isl::set::as_pw_multi_aff();
41576 return typed::pw_multi_aff<Domain>(res);
41579 template <typename Domain>
41580 typed::set<Domain> typed::set<Domain>::as_set() const
41582 auto res = isl::set::as_set();
41583 return typed::set<Domain>(res);
41586 template <typename Domain>
41587 typed::set<> typed::set<Domain>::bind(const typed::multi_id<Domain> &tuple) const
41589 auto res = isl::set::bind(tuple);
41590 return typed::set<>(res);
41593 template <typename Domain>
41594 typed::set<Domain> typed::set<Domain>::coalesce() const
41596 auto res = isl::set::coalesce();
41597 return typed::set<Domain>(res);
41600 template <typename Domain>
41601 typed::set<Domain> typed::set<Domain>::detect_equalities() const
41603 auto res = isl::set::detect_equalities();
41604 return typed::set<Domain>(res);
41607 template <typename Domain>
41608 typed::set<Domain> typed::set<Domain>::drop_unused_params() const
41610 auto res = isl::set::drop_unused_params();
41611 return typed::set<Domain>(res);
41614 template <typename Domain>
41615 bool typed::set<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
41617 auto lambda_test = [&] (isl::set arg0) {
41618 return test(typed::set<Domain>(arg0));
41620 return isl::set::every_set(lambda_test);
41623 template <typename Domain>
41624 typed::set<Domain> typed::set<Domain>::extract_set(const typed::space<Domain> &space) const
41626 auto res = isl::set::extract_set(space);
41627 return typed::set<Domain>(res);
41630 template <typename Domain>
41631 void typed::set<Domain>::foreach_basic_set(const std::function<void(typed::basic_set<Domain>)> &fn) const
41633 auto lambda_fn = [&] (isl::basic_set arg0) {
41634 return fn(typed::basic_set<Domain>(arg0));
41636 return isl::set::foreach_basic_set(lambda_fn);
41639 template <typename Domain>
41640 void typed::set<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
41642 auto lambda_fn = [&] (isl::point arg0) {
41643 return fn(typed::point<Domain>(arg0));
41645 return isl::set::foreach_point(lambda_fn);
41648 template <typename Domain>
41649 void typed::set<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
41651 auto lambda_fn = [&] (isl::set arg0) {
41652 return fn(typed::set<Domain>(arg0));
41654 return isl::set::foreach_set(lambda_fn);
41657 template <typename Domain>
41658 typed::set<Domain> typed::set<Domain>::gist(const typed::set<Domain> &context) const
41660 auto res = isl::set::gist(context);
41661 return typed::set<Domain>(res);
41664 template <typename Domain>
41665 typed::union_set<Domain> typed::set<Domain>::gist(const typed::union_set<Domain> &context) const
41667 auto res = isl::set::gist(context);
41668 return typed::union_set<Domain>(res);
41671 template <typename Domain>
41672 typed::set<Domain> typed::set<Domain>::gist(const typed::basic_set<Domain> &context) const
41674 auto res = isl::set::gist(context);
41675 return typed::set<Domain>(res);
41678 template <typename Domain>
41679 typed::set<Domain> typed::set<Domain>::gist(const typed::point<Domain> &context) const
41681 auto res = isl::set::gist(context);
41682 return typed::set<Domain>(res);
41685 template <typename Domain>
41686 typed::set<Domain> typed::set<Domain>::gist_params(const typed::set<> &context) const
41688 auto res = isl::set::gist_params(context);
41689 return typed::set<Domain>(res);
41692 template <typename Domain>
41693 typed::set<Domain> typed::set<Domain>::gist_params(const typed::basic_set<> &context) const
41695 auto res = isl::set::gist_params(context);
41696 return typed::set<Domain>(res);
41699 template <typename Domain>
41700 typed::set<Domain> typed::set<Domain>::gist_params(const typed::point<> &context) const
41702 auto res = isl::set::gist_params(context);
41703 return typed::set<Domain>(res);
41706 template <typename Domain>
41707 typed::map<Domain, Domain> typed::set<Domain>::identity() const
41709 auto res = isl::set::identity();
41710 return typed::map<Domain, Domain>(res);
41713 template <typename Domain>
41714 typed::pw_aff<Domain, Anonymous> typed::set<Domain>::indicator_function() const
41716 auto res = isl::set::indicator_function();
41717 return typed::pw_aff<Domain, Anonymous>(res);
41720 template <typename Domain>
41721 template <typename Arg1>
41722 typed::map<Arg1, Domain> typed::set<Domain>::insert_domain(const typed::space<Arg1> &domain) const
41724 auto res = isl::set::insert_domain(domain);
41725 return typed::map<Arg1, Domain>(res);
41728 template <typename Domain>
41729 typed::set<Domain> typed::set<Domain>::intersect(const typed::set<Domain> &set2) const
41731 auto res = isl::set::intersect(set2);
41732 return typed::set<Domain>(res);
41735 template <typename Domain>
41736 typed::union_set<Domain> typed::set<Domain>::intersect(const typed::union_set<Domain> &uset2) const
41738 auto res = isl::set::intersect(uset2);
41739 return typed::union_set<Domain>(res);
41742 template <typename Domain>
41743 typed::set<Domain> typed::set<Domain>::intersect(const typed::basic_set<Domain> &set2) const
41745 auto res = isl::set::intersect(set2);
41746 return typed::set<Domain>(res);
41749 template <typename Domain>
41750 typed::set<Domain> typed::set<Domain>::intersect(const typed::point<Domain> &set2) const
41752 auto res = isl::set::intersect(set2);
41753 return typed::set<Domain>(res);
41756 template <typename Domain>
41757 typed::set<Domain> typed::set<Domain>::intersect_params(const typed::set<> &params) const
41759 auto res = isl::set::intersect_params(params);
41760 return typed::set<Domain>(res);
41763 template <typename Domain>
41764 typed::set<Domain> typed::set<Domain>::intersect_params(const typed::basic_set<> &params) const
41766 auto res = isl::set::intersect_params(params);
41767 return typed::set<Domain>(res);
41770 template <typename Domain>
41771 typed::set<Domain> typed::set<Domain>::intersect_params(const typed::point<> &params) const
41773 auto res = isl::set::intersect_params(params);
41774 return typed::set<Domain>(res);
41777 template <typename Domain>
41778 typed::fixed_box<Domain> typed::set<Domain>::lattice_tile() const
41780 auto res = isl::set::lattice_tile();
41781 return typed::fixed_box<Domain>(res);
41784 template <typename Domain>
41785 typed::set<Domain> typed::set<Domain>::lexmax() const
41787 auto res = isl::set::lexmax();
41788 return typed::set<Domain>(res);
41791 template <typename Domain>
41792 typed::pw_multi_aff<Domain> typed::set<Domain>::lexmax_pw_multi_aff() const
41794 auto res = isl::set::lexmax_pw_multi_aff();
41795 return typed::pw_multi_aff<Domain>(res);
41798 template <typename Domain>
41799 typed::set<Domain> typed::set<Domain>::lexmin() const
41801 auto res = isl::set::lexmin();
41802 return typed::set<Domain>(res);
41805 template <typename Domain>
41806 typed::pw_multi_aff<Domain> typed::set<Domain>::lexmin_pw_multi_aff() const
41808 auto res = isl::set::lexmin_pw_multi_aff();
41809 return typed::pw_multi_aff<Domain>(res);
41812 template <typename Domain>
41813 typed::set<Domain> typed::set<Domain>::lower_bound(const typed::multi_pw_aff<Domain> &lower) const
41815 auto res = isl::set::lower_bound(lower);
41816 return typed::set<Domain>(res);
41819 template <typename Domain>
41820 typed::set<Domain> typed::set<Domain>::lower_bound(const typed::multi_val<Domain> &lower) const
41822 auto res = isl::set::lower_bound(lower);
41823 return typed::set<Domain>(res);
41826 template <typename Domain>
41827 typed::multi_pw_aff<Domain> typed::set<Domain>::max_multi_pw_aff() const
41829 auto res = isl::set::max_multi_pw_aff();
41830 return typed::multi_pw_aff<Domain>(res);
41833 template <typename Domain>
41834 typed::multi_pw_aff<Domain> typed::set<Domain>::min_multi_pw_aff() const
41836 auto res = isl::set::min_multi_pw_aff();
41837 return typed::multi_pw_aff<Domain>(res);
41840 template <typename Domain>
41841 typed::pw_aff<Domain, Anonymous> typed::set<Domain>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
41843 auto res = isl::set::param_pw_aff_on_domain(id);
41844 return typed::pw_aff<Domain, Anonymous>(res);
41847 template <typename Domain>
41848 typed::pw_aff<Domain, Anonymous> typed::set<Domain>::param_pw_aff_on_domain(const std::string &id) const
41850 auto res = isl::set::param_pw_aff_on_domain(id);
41851 return typed::pw_aff<Domain, Anonymous>(res);
41854 template <typename Domain>
41855 typed::set<> typed::set<Domain>::params() const
41857 auto res = isl::set::params();
41858 return typed::set<>(res);
41861 template <typename Domain>
41862 typed::multi_val<Domain> typed::set<Domain>::plain_multi_val_if_fixed() const
41864 auto res = isl::set::plain_multi_val_if_fixed();
41865 return typed::multi_val<Domain>(res);
41868 template <typename Domain>
41869 template <typename Domain2>
41870 typed::set<Domain2> typed::set<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
41872 auto res = isl::set::preimage(ma);
41873 return typed::set<Domain2>(res);
41876 template <typename Domain>
41877 template <typename Domain2>
41878 typed::set<Domain2> typed::set<Domain>::preimage(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
41880 auto res = isl::set::preimage(mpa);
41881 return typed::set<Domain2>(res);
41884 template <typename Domain>
41885 template <typename Domain2>
41886 typed::set<Domain2> typed::set<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
41888 auto res = isl::set::preimage(pma);
41889 return typed::set<Domain2>(res);
41892 template <typename Domain>
41893 template <typename Domain2>
41894 typed::union_set<Domain2> typed::set<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
41896 auto res = isl::set::preimage(upma);
41897 return typed::union_set<Domain2>(res);
41900 template <typename Domain>
41901 template <typename Range>
41902 typed::set<pair<Domain, Range>> typed::set<Domain>::product(const typed::set<Range> &set2) const
41904 auto res = isl::set::product(set2);
41905 return typed::set<pair<Domain, Range>>(res);
41908 template <typename Domain>
41909 template <typename Range>
41910 typed::set<pair<Domain, Range>> typed::set<Domain>::product(const typed::basic_set<Range> &set2) const
41912 auto res = isl::set::product(set2);
41913 return typed::set<pair<Domain, Range>>(res);
41916 template <typename Domain>
41917 template <typename Range>
41918 typed::set<pair<Domain, Range>> typed::set<Domain>::product(const typed::point<Range> &set2) const
41920 auto res = isl::set::product(set2);
41921 return typed::set<pair<Domain, Range>>(res);
41924 template <typename Domain>
41925 typed::set<Domain> typed::set<Domain>::project_out_all_params() const
41927 auto res = isl::set::project_out_all_params();
41928 return typed::set<Domain>(res);
41931 template <typename Domain>
41932 typed::set<Domain> typed::set<Domain>::project_out_param(const typed::id<Anonymous> &id) const
41934 auto res = isl::set::project_out_param(id);
41935 return typed::set<Domain>(res);
41938 template <typename Domain>
41939 typed::set<Domain> typed::set<Domain>::project_out_param(const std::string &id) const
41941 auto res = isl::set::project_out_param(id);
41942 return typed::set<Domain>(res);
41945 template <typename Domain>
41946 typed::set<Domain> typed::set<Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
41948 auto res = isl::set::project_out_param(list);
41949 return typed::set<Domain>(res);
41952 template <typename Domain>
41953 typed::pw_aff<Domain, Anonymous> typed::set<Domain>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
41955 auto res = isl::set::pw_aff_on_domain(v);
41956 return typed::pw_aff<Domain, Anonymous>(res);
41959 template <typename Domain>
41960 typed::pw_aff<Domain, Anonymous> typed::set<Domain>::pw_aff_on_domain(long v) const
41962 auto res = isl::set::pw_aff_on_domain(v);
41963 return typed::pw_aff<Domain, Anonymous>(res);
41966 template <typename Domain>
41967 template <typename Range>
41968 typed::pw_multi_aff<Domain, Range> typed::set<Domain>::pw_multi_aff_on_domain(const typed::multi_val<Range> &mv) const
41970 auto res = isl::set::pw_multi_aff_on_domain(mv);
41971 return typed::pw_multi_aff<Domain, Range>(res);
41974 template <typename Domain>
41975 typed::set_list<Domain> typed::set<Domain>::set_list() const
41977 auto res = isl::set::set_list();
41978 return typed::set_list<Domain>(res);
41981 template <typename Domain>
41982 typed::fixed_box<Domain> typed::set<Domain>::simple_fixed_box_hull() const
41984 auto res = isl::set::simple_fixed_box_hull();
41985 return typed::fixed_box<Domain>(res);
41988 template <typename Domain>
41989 typed::space<Domain> typed::set<Domain>::space() const
41991 auto res = isl::set::space();
41992 return typed::space<Domain>(res);
41995 template <typename Domain>
41996 typed::set<Domain> typed::set<Domain>::subtract(const typed::set<Domain> &set2) const
41998 auto res = isl::set::subtract(set2);
41999 return typed::set<Domain>(res);
42002 template <typename Domain>
42003 typed::union_set<Domain> typed::set<Domain>::subtract(const typed::union_set<Domain> &uset2) const
42005 auto res = isl::set::subtract(uset2);
42006 return typed::union_set<Domain>(res);
42009 template <typename Domain>
42010 typed::set<Domain> typed::set<Domain>::subtract(const typed::basic_set<Domain> &set2) const
42012 auto res = isl::set::subtract(set2);
42013 return typed::set<Domain>(res);
42016 template <typename Domain>
42017 typed::set<Domain> typed::set<Domain>::subtract(const typed::point<Domain> &set2) const
42019 auto res = isl::set::subtract(set2);
42020 return typed::set<Domain>(res);
42023 template <typename Domain>
42024 typed::union_set<Domain> typed::set<Domain>::to_union_set() const
42026 auto res = isl::set::to_union_set();
42027 return typed::union_set<Domain>(res);
42030 template <typename Domain>
42031 typed::map<Domain, Domain> typed::set<Domain>::translation() const
42033 auto res = isl::set::translation();
42034 return typed::map<Domain, Domain>(res);
42037 template <typename Domain>
42038 template <typename Arg1>
42039 typed::map<Arg1, Domain> typed::set<Domain>::unbind_params_insert_domain(const typed::multi_id<Arg1> &domain) const
42041 auto res = isl::set::unbind_params_insert_domain(domain);
42042 return typed::map<Arg1, Domain>(res);
42045 template <typename Domain>
42046 typed::set<Domain> typed::set<Domain>::unite(const typed::set<Domain> &set2) const
42048 auto res = isl::set::unite(set2);
42049 return typed::set<Domain>(res);
42052 template <typename Domain>
42053 typed::union_set<Domain> typed::set<Domain>::unite(const typed::union_set<Domain> &uset2) const
42055 auto res = isl::set::unite(uset2);
42056 return typed::union_set<Domain>(res);
42059 template <typename Domain>
42060 typed::set<Domain> typed::set<Domain>::unite(const typed::basic_set<Domain> &set2) const
42062 auto res = isl::set::unite(set2);
42063 return typed::set<Domain>(res);
42066 template <typename Domain>
42067 typed::set<Domain> typed::set<Domain>::unite(const typed::point<Domain> &set2) const
42069 auto res = isl::set::unite(set2);
42070 return typed::set<Domain>(res);
42073 template <typename Domain>
42074 typed::set<Domain> typed::set<Domain>::universe(const typed::space<Domain> &space)
42076 auto res = isl::set::universe(space);
42077 return typed::set<Domain>(res);
42080 template <typename Domain>
42081 typed::set<Domain> typed::set<Domain>::upper_bound(const typed::multi_pw_aff<Domain> &upper) const
42083 auto res = isl::set::upper_bound(upper);
42084 return typed::set<Domain>(res);
42087 template <typename Domain>
42088 typed::set<Domain> typed::set<Domain>::upper_bound(const typed::multi_val<Domain> &upper) const
42090 auto res = isl::set::upper_bound(upper);
42091 return typed::set<Domain>(res);
42094 template <typename Domain, typename Range>
42095 typed::set<pair<Domain, Range>>::set(const typed::basic_set<pair<Domain, Range>> &bset)
42096 : isl::set(bset)
42100 template <typename Domain, typename Range>
42101 typed::set<pair<Domain, Range>>::set(const typed::point<pair<Domain, Range>> &pnt)
42102 : isl::set(pnt)
42106 template <typename Domain, typename Range>
42107 typed::set<pair<Domain, Range>>::set(const isl::ctx &ctx, const std::string &str)
42108 : isl::set(ctx, str)
42112 template <typename Domain, typename Range>
42113 template <typename Arg2>
42114 typed::set<Arg2> typed::set<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &map) const
42116 auto res = isl::set::apply(map);
42117 return typed::set<Arg2>(res);
42120 template <typename Domain, typename Range>
42121 template <typename Arg2>
42122 typed::union_set<Arg2> typed::set<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
42124 auto res = isl::set::apply(umap);
42125 return typed::union_set<Arg2>(res);
42128 template <typename Domain, typename Range>
42129 template <typename Arg2>
42130 typed::set<Arg2> typed::set<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &map) const
42132 auto res = isl::set::apply(map);
42133 return typed::set<Arg2>(res);
42136 template <typename Domain, typename Range>
42137 typed::pw_multi_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::as_pw_multi_aff() const
42139 auto res = isl::set::as_pw_multi_aff();
42140 return typed::pw_multi_aff<pair<Domain, Range>>(res);
42143 template <typename Domain, typename Range>
42144 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::as_set() const
42146 auto res = isl::set::as_set();
42147 return typed::set<pair<Domain, Range>>(res);
42150 template <typename Domain, typename Range>
42151 typed::set<> typed::set<pair<Domain, Range>>::bind(const typed::multi_id<pair<Domain, Range>> &tuple) const
42153 auto res = isl::set::bind(tuple);
42154 return typed::set<>(res);
42157 template <typename Domain, typename Range>
42158 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::coalesce() const
42160 auto res = isl::set::coalesce();
42161 return typed::set<pair<Domain, Range>>(res);
42164 template <typename Domain, typename Range>
42165 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::detect_equalities() const
42167 auto res = isl::set::detect_equalities();
42168 return typed::set<pair<Domain, Range>>(res);
42171 template <typename Domain, typename Range>
42172 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::drop_unused_params() const
42174 auto res = isl::set::drop_unused_params();
42175 return typed::set<pair<Domain, Range>>(res);
42178 template <typename Domain, typename Range>
42179 bool typed::set<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
42181 auto lambda_test = [&] (isl::set arg0) {
42182 return test(typed::set<pair<Domain, Range>>(arg0));
42184 return isl::set::every_set(lambda_test);
42187 template <typename Domain, typename Range>
42188 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
42190 auto res = isl::set::extract_set(space);
42191 return typed::set<pair<Domain, Range>>(res);
42194 template <typename Domain, typename Range>
42195 void typed::set<pair<Domain, Range>>::foreach_basic_set(const std::function<void(typed::basic_set<pair<Domain, Range>>)> &fn) const
42197 auto lambda_fn = [&] (isl::basic_set arg0) {
42198 return fn(typed::basic_set<pair<Domain, Range>>(arg0));
42200 return isl::set::foreach_basic_set(lambda_fn);
42203 template <typename Domain, typename Range>
42204 void typed::set<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
42206 auto lambda_fn = [&] (isl::point arg0) {
42207 return fn(typed::point<pair<Domain, Range>>(arg0));
42209 return isl::set::foreach_point(lambda_fn);
42212 template <typename Domain, typename Range>
42213 void typed::set<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
42215 auto lambda_fn = [&] (isl::set arg0) {
42216 return fn(typed::set<pair<Domain, Range>>(arg0));
42218 return isl::set::foreach_set(lambda_fn);
42221 template <typename Domain, typename Range>
42222 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
42224 auto res = isl::set::gist(context);
42225 return typed::set<pair<Domain, Range>>(res);
42228 template <typename Domain, typename Range>
42229 typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
42231 auto res = isl::set::gist(context);
42232 return typed::union_set<pair<Domain, Range>>(res);
42235 template <typename Domain, typename Range>
42236 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
42238 auto res = isl::set::gist(context);
42239 return typed::set<pair<Domain, Range>>(res);
42242 template <typename Domain, typename Range>
42243 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist(const typed::point<pair<Domain, Range>> &context) const
42245 auto res = isl::set::gist(context);
42246 return typed::set<pair<Domain, Range>>(res);
42249 template <typename Domain, typename Range>
42250 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist_params(const typed::set<> &context) const
42252 auto res = isl::set::gist_params(context);
42253 return typed::set<pair<Domain, Range>>(res);
42256 template <typename Domain, typename Range>
42257 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist_params(const typed::basic_set<> &context) const
42259 auto res = isl::set::gist_params(context);
42260 return typed::set<pair<Domain, Range>>(res);
42263 template <typename Domain, typename Range>
42264 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::gist_params(const typed::point<> &context) const
42266 auto res = isl::set::gist_params(context);
42267 return typed::set<pair<Domain, Range>>(res);
42270 template <typename Domain, typename Range>
42271 typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::set<pair<Domain, Range>>::identity() const
42273 auto res = isl::set::identity();
42274 return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
42277 template <typename Domain, typename Range>
42278 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::set<pair<Domain, Range>>::indicator_function() const
42280 auto res = isl::set::indicator_function();
42281 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
42284 template <typename Domain, typename Range>
42285 template <typename Arg2>
42286 typed::map<Arg2, pair<Domain, Range>> typed::set<pair<Domain, Range>>::insert_domain(const typed::space<Arg2> &domain) const
42288 auto res = isl::set::insert_domain(domain);
42289 return typed::map<Arg2, pair<Domain, Range>>(res);
42292 template <typename Domain, typename Range>
42293 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &set2) const
42295 auto res = isl::set::intersect(set2);
42296 return typed::set<pair<Domain, Range>>(res);
42299 template <typename Domain, typename Range>
42300 typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
42302 auto res = isl::set::intersect(uset2);
42303 return typed::union_set<pair<Domain, Range>>(res);
42306 template <typename Domain, typename Range>
42307 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &set2) const
42309 auto res = isl::set::intersect(set2);
42310 return typed::set<pair<Domain, Range>>(res);
42313 template <typename Domain, typename Range>
42314 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect(const typed::point<pair<Domain, Range>> &set2) const
42316 auto res = isl::set::intersect(set2);
42317 return typed::set<pair<Domain, Range>>(res);
42320 template <typename Domain, typename Range>
42321 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect_params(const typed::set<> &params) const
42323 auto res = isl::set::intersect_params(params);
42324 return typed::set<pair<Domain, Range>>(res);
42327 template <typename Domain, typename Range>
42328 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &params) const
42330 auto res = isl::set::intersect_params(params);
42331 return typed::set<pair<Domain, Range>>(res);
42334 template <typename Domain, typename Range>
42335 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::intersect_params(const typed::point<> &params) const
42337 auto res = isl::set::intersect_params(params);
42338 return typed::set<pair<Domain, Range>>(res);
42341 template <typename Domain, typename Range>
42342 typed::fixed_box<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lattice_tile() const
42344 auto res = isl::set::lattice_tile();
42345 return typed::fixed_box<pair<Domain, Range>>(res);
42348 template <typename Domain, typename Range>
42349 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmax() const
42351 auto res = isl::set::lexmax();
42352 return typed::set<pair<Domain, Range>>(res);
42355 template <typename Domain, typename Range>
42356 typed::pw_multi_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmax_pw_multi_aff() const
42358 auto res = isl::set::lexmax_pw_multi_aff();
42359 return typed::pw_multi_aff<pair<Domain, Range>>(res);
42362 template <typename Domain, typename Range>
42363 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmin() const
42365 auto res = isl::set::lexmin();
42366 return typed::set<pair<Domain, Range>>(res);
42369 template <typename Domain, typename Range>
42370 typed::pw_multi_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lexmin_pw_multi_aff() const
42372 auto res = isl::set::lexmin_pw_multi_aff();
42373 return typed::pw_multi_aff<pair<Domain, Range>>(res);
42376 template <typename Domain, typename Range>
42377 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lower_bound(const typed::multi_pw_aff<pair<Domain, Range>> &lower) const
42379 auto res = isl::set::lower_bound(lower);
42380 return typed::set<pair<Domain, Range>>(res);
42383 template <typename Domain, typename Range>
42384 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::lower_bound(const typed::multi_val<pair<Domain, Range>> &lower) const
42386 auto res = isl::set::lower_bound(lower);
42387 return typed::set<pair<Domain, Range>>(res);
42390 template <typename Domain, typename Range>
42391 typed::multi_pw_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::max_multi_pw_aff() const
42393 auto res = isl::set::max_multi_pw_aff();
42394 return typed::multi_pw_aff<pair<Domain, Range>>(res);
42397 template <typename Domain, typename Range>
42398 typed::multi_pw_aff<pair<Domain, Range>> typed::set<pair<Domain, Range>>::min_multi_pw_aff() const
42400 auto res = isl::set::min_multi_pw_aff();
42401 return typed::multi_pw_aff<pair<Domain, Range>>(res);
42404 template <typename Domain, typename Range>
42405 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::set<pair<Domain, Range>>::param_pw_aff_on_domain(const typed::id<Anonymous> &id) const
42407 auto res = isl::set::param_pw_aff_on_domain(id);
42408 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
42411 template <typename Domain, typename Range>
42412 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::set<pair<Domain, Range>>::param_pw_aff_on_domain(const std::string &id) const
42414 auto res = isl::set::param_pw_aff_on_domain(id);
42415 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
42418 template <typename Domain, typename Range>
42419 typed::set<> typed::set<pair<Domain, Range>>::params() const
42421 auto res = isl::set::params();
42422 return typed::set<>(res);
42425 template <typename Domain, typename Range>
42426 typed::multi_val<pair<Domain, Range>> typed::set<pair<Domain, Range>>::plain_multi_val_if_fixed() const
42428 auto res = isl::set::plain_multi_val_if_fixed();
42429 return typed::multi_val<pair<Domain, Range>>(res);
42432 template <typename Domain, typename Range>
42433 template <typename Domain2>
42434 typed::set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
42436 auto res = isl::set::preimage(ma);
42437 return typed::set<Domain2>(res);
42440 template <typename Domain, typename Range>
42441 template <typename Domain2>
42442 typed::set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
42444 auto res = isl::set::preimage(mpa);
42445 return typed::set<Domain2>(res);
42448 template <typename Domain, typename Range>
42449 template <typename Domain2>
42450 typed::set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
42452 auto res = isl::set::preimage(pma);
42453 return typed::set<Domain2>(res);
42456 template <typename Domain, typename Range>
42457 template <typename Domain2>
42458 typed::union_set<Domain2> typed::set<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
42460 auto res = isl::set::preimage(upma);
42461 return typed::union_set<Domain2>(res);
42464 template <typename Domain, typename Range>
42465 template <typename Arg2>
42466 typed::set<pair<pair<Domain, Range>, Arg2>> typed::set<pair<Domain, Range>>::product(const typed::set<Arg2> &set2) const
42468 auto res = isl::set::product(set2);
42469 return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
42472 template <typename Domain, typename Range>
42473 template <typename Arg2>
42474 typed::set<pair<pair<Domain, Range>, Arg2>> typed::set<pair<Domain, Range>>::product(const typed::basic_set<Arg2> &set2) const
42476 auto res = isl::set::product(set2);
42477 return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
42480 template <typename Domain, typename Range>
42481 template <typename Arg2>
42482 typed::set<pair<pair<Domain, Range>, Arg2>> typed::set<pair<Domain, Range>>::product(const typed::point<Arg2> &set2) const
42484 auto res = isl::set::product(set2);
42485 return typed::set<pair<pair<Domain, Range>, Arg2>>(res);
42488 template <typename Domain, typename Range>
42489 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_all_params() const
42491 auto res = isl::set::project_out_all_params();
42492 return typed::set<pair<Domain, Range>>(res);
42495 template <typename Domain, typename Range>
42496 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_param(const typed::id<Anonymous> &id) const
42498 auto res = isl::set::project_out_param(id);
42499 return typed::set<pair<Domain, Range>>(res);
42502 template <typename Domain, typename Range>
42503 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_param(const std::string &id) const
42505 auto res = isl::set::project_out_param(id);
42506 return typed::set<pair<Domain, Range>>(res);
42509 template <typename Domain, typename Range>
42510 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::project_out_param(const typed::id_list<Anonymous> &list) const
42512 auto res = isl::set::project_out_param(list);
42513 return typed::set<pair<Domain, Range>>(res);
42516 template <typename Domain, typename Range>
42517 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::set<pair<Domain, Range>>::pw_aff_on_domain(const typed::val<Anonymous> &v) const
42519 auto res = isl::set::pw_aff_on_domain(v);
42520 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
42523 template <typename Domain, typename Range>
42524 typed::pw_aff<pair<Domain, Range>, Anonymous> typed::set<pair<Domain, Range>>::pw_aff_on_domain(long v) const
42526 auto res = isl::set::pw_aff_on_domain(v);
42527 return typed::pw_aff<pair<Domain, Range>, Anonymous>(res);
42530 template <typename Domain, typename Range>
42531 template <typename Arg2>
42532 typed::pw_multi_aff<pair<Domain, Range>, Arg2> typed::set<pair<Domain, Range>>::pw_multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
42534 auto res = isl::set::pw_multi_aff_on_domain(mv);
42535 return typed::pw_multi_aff<pair<Domain, Range>, Arg2>(res);
42538 template <typename Domain, typename Range>
42539 typed::set_list<pair<Domain, Range>> typed::set<pair<Domain, Range>>::set_list() const
42541 auto res = isl::set::set_list();
42542 return typed::set_list<pair<Domain, Range>>(res);
42545 template <typename Domain, typename Range>
42546 typed::fixed_box<pair<Domain, Range>> typed::set<pair<Domain, Range>>::simple_fixed_box_hull() const
42548 auto res = isl::set::simple_fixed_box_hull();
42549 return typed::fixed_box<pair<Domain, Range>>(res);
42552 template <typename Domain, typename Range>
42553 typed::space<pair<Domain, Range>> typed::set<pair<Domain, Range>>::space() const
42555 auto res = isl::set::space();
42556 return typed::space<pair<Domain, Range>>(res);
42559 template <typename Domain, typename Range>
42560 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &set2) const
42562 auto res = isl::set::subtract(set2);
42563 return typed::set<pair<Domain, Range>>(res);
42566 template <typename Domain, typename Range>
42567 typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
42569 auto res = isl::set::subtract(uset2);
42570 return typed::union_set<pair<Domain, Range>>(res);
42573 template <typename Domain, typename Range>
42574 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::basic_set<pair<Domain, Range>> &set2) const
42576 auto res = isl::set::subtract(set2);
42577 return typed::set<pair<Domain, Range>>(res);
42580 template <typename Domain, typename Range>
42581 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::subtract(const typed::point<pair<Domain, Range>> &set2) const
42583 auto res = isl::set::subtract(set2);
42584 return typed::set<pair<Domain, Range>>(res);
42587 template <typename Domain, typename Range>
42588 typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::to_union_set() const
42590 auto res = isl::set::to_union_set();
42591 return typed::union_set<pair<Domain, Range>>(res);
42594 template <typename Domain, typename Range>
42595 typed::map<pair<Domain, Range>, pair<Domain, Range>> typed::set<pair<Domain, Range>>::translation() const
42597 auto res = isl::set::translation();
42598 return typed::map<pair<Domain, Range>, pair<Domain, Range>>(res);
42601 template <typename Domain, typename Range>
42602 template <typename Arg2>
42603 typed::map<Arg2, pair<Domain, Range>> typed::set<pair<Domain, Range>>::unbind_params_insert_domain(const typed::multi_id<Arg2> &domain) const
42605 auto res = isl::set::unbind_params_insert_domain(domain);
42606 return typed::map<Arg2, pair<Domain, Range>>(res);
42609 template <typename Domain, typename Range>
42610 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &set2) const
42612 auto res = isl::set::unite(set2);
42613 return typed::set<pair<Domain, Range>>(res);
42616 template <typename Domain, typename Range>
42617 typed::union_set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
42619 auto res = isl::set::unite(uset2);
42620 return typed::union_set<pair<Domain, Range>>(res);
42623 template <typename Domain, typename Range>
42624 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &set2) const
42626 auto res = isl::set::unite(set2);
42627 return typed::set<pair<Domain, Range>>(res);
42630 template <typename Domain, typename Range>
42631 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::unite(const typed::point<pair<Domain, Range>> &set2) const
42633 auto res = isl::set::unite(set2);
42634 return typed::set<pair<Domain, Range>>(res);
42637 template <typename Domain, typename Range>
42638 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::universe(const typed::space<pair<Domain, Range>> &space)
42640 auto res = isl::set::universe(space);
42641 return typed::set<pair<Domain, Range>>(res);
42644 template <typename Domain, typename Range>
42645 typed::map<Domain, Range> typed::set<pair<Domain, Range>>::unwrap() const
42647 auto res = isl::set::unwrap();
42648 return typed::map<Domain, Range>(res);
42651 template <typename Domain, typename Range>
42652 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::upper_bound(const typed::multi_pw_aff<pair<Domain, Range>> &upper) const
42654 auto res = isl::set::upper_bound(upper);
42655 return typed::set<pair<Domain, Range>>(res);
42658 template <typename Domain, typename Range>
42659 typed::set<pair<Domain, Range>> typed::set<pair<Domain, Range>>::upper_bound(const typed::multi_val<pair<Domain, Range>> &upper) const
42661 auto res = isl::set::upper_bound(upper);
42662 return typed::set<pair<Domain, Range>>(res);
42665 template <typename Domain, typename Range>
42666 typed::set<pair<Range, Domain>> typed::set<pair<Domain, Range>>::wrapped_reverse() const
42668 auto res = isl::set::wrapped_reverse();
42669 return typed::set<pair<Range, Domain>>(res);
42672 typed::set_list<>::set_list(const isl::ctx &ctx, int n)
42673 : isl::set_list(ctx, n)
42677 typed::set_list<>::set_list(const typed::set<> &el)
42678 : isl::set_list(el)
42682 typed::set_list<>::set_list(const isl::ctx &ctx, const std::string &str)
42683 : isl::set_list(ctx, str)
42687 typed::set_list<> typed::set_list<>::add(const typed::set<> &el) const
42689 auto res = isl::set_list::add(el);
42690 return typed::set_list<>(res);
42693 typed::set_list<> typed::set_list<>::add(const typed::basic_set<> &el) const
42695 auto res = isl::set_list::add(el);
42696 return typed::set_list<>(res);
42699 typed::set_list<> typed::set_list<>::add(const typed::point<> &el) const
42701 auto res = isl::set_list::add(el);
42702 return typed::set_list<>(res);
42705 typed::set_list<> typed::set_list<>::drop(unsigned int first, unsigned int n) const
42707 auto res = isl::set_list::drop(first, n);
42708 return typed::set_list<>(res);
42711 void typed::set_list<>::foreach(const std::function<void(typed::set<>)> &fn) const
42713 auto lambda_fn = [&] (isl::set arg0) {
42714 return fn(typed::set<>(arg0));
42716 return isl::set_list::foreach(lambda_fn);
42719 void typed::set_list<>::foreach_scc(const std::function<bool(typed::set<>, typed::set<>)> &follows, const std::function<void(typed::set_list<>)> &fn) const
42721 auto lambda_follows = [&] (isl::set arg0, isl::set arg1) {
42722 return follows(typed::set<>(arg0), typed::set<>(arg1));
42724 auto lambda_fn = [&] (isl::set_list arg0) {
42725 return fn(typed::set_list<>(arg0));
42727 return isl::set_list::foreach_scc(lambda_follows, lambda_fn);
42730 template <typename Domain>
42731 typed::set_list<Domain>::set_list(const isl::ctx &ctx, int n)
42732 : isl::set_list(ctx, n)
42736 template <typename Domain>
42737 typed::set_list<Domain>::set_list(const typed::set<Domain> &el)
42738 : isl::set_list(el)
42742 template <typename Domain>
42743 typed::set_list<Domain>::set_list(const isl::ctx &ctx, const std::string &str)
42744 : isl::set_list(ctx, str)
42748 template <typename Domain>
42749 typed::set_list<Domain> typed::set_list<Domain>::add(const typed::set<Domain> &el) const
42751 auto res = isl::set_list::add(el);
42752 return typed::set_list<Domain>(res);
42755 template <typename Domain>
42756 typed::set_list<Domain> typed::set_list<Domain>::add(const typed::basic_set<Domain> &el) const
42758 auto res = isl::set_list::add(el);
42759 return typed::set_list<Domain>(res);
42762 template <typename Domain>
42763 typed::set_list<Domain> typed::set_list<Domain>::add(const typed::point<Domain> &el) const
42765 auto res = isl::set_list::add(el);
42766 return typed::set_list<Domain>(res);
42769 template <typename Domain>
42770 typed::set<Domain> typed::set_list<Domain>::at(int index) const
42772 auto res = isl::set_list::at(index);
42773 return typed::set<Domain>(res);
42776 template <typename Domain>
42777 typed::set_list<Domain> typed::set_list<Domain>::drop(unsigned int first, unsigned int n) const
42779 auto res = isl::set_list::drop(first, n);
42780 return typed::set_list<Domain>(res);
42783 template <typename Domain>
42784 void typed::set_list<Domain>::foreach(const std::function<void(typed::set<Domain>)> &fn) const
42786 auto lambda_fn = [&] (isl::set arg0) {
42787 return fn(typed::set<Domain>(arg0));
42789 return isl::set_list::foreach(lambda_fn);
42792 template <typename Domain>
42793 void typed::set_list<Domain>::foreach_scc(const std::function<bool(typed::set<Domain>, typed::set<Domain>)> &follows, const std::function<void(typed::set_list<Domain>)> &fn) const
42795 auto lambda_follows = [&] (isl::set arg0, isl::set arg1) {
42796 return follows(typed::set<Domain>(arg0), typed::set<Domain>(arg1));
42798 auto lambda_fn = [&] (isl::set_list arg0) {
42799 return fn(typed::set_list<Domain>(arg0));
42801 return isl::set_list::foreach_scc(lambda_follows, lambda_fn);
42804 template <typename Domain>
42805 typed::set_list<Domain> typed::set_list<Domain>::set_at(int index, const typed::set<Anonymous> &el) const
42807 auto res = isl::set_list::set_at(index, el);
42808 return typed::set_list<Domain>(res);
42811 typed::space<>::space(const isl::ctx &ctx, const std::string &str)
42812 : isl::space(ctx, str)
42816 template <typename Domain>
42817 typed::space<Domain> typed::space<>::add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const
42819 auto res = isl::space::add_named_tuple(tuple_id, dim);
42820 return typed::space<Domain>(res);
42823 template <typename Domain>
42824 typed::space<Domain> typed::space<>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
42826 auto res = isl::space::add_named_tuple(tuple_id, dim);
42827 return typed::space<Domain>(res);
42830 typed::space<> typed::space<>::add_param(const typed::id<Anonymous> &id) const
42832 auto res = isl::space::add_param(id);
42833 return typed::space<>(res);
42836 typed::space<> typed::space<>::add_param(const std::string &id) const
42838 auto res = isl::space::add_param(id);
42839 return typed::space<>(res);
42842 template <typename Domain>
42843 typed::space<Domain> typed::space<>::add_unnamed_tuple(unsigned int dim) const
42845 auto res = isl::space::add_unnamed_tuple(dim);
42846 return typed::space<Domain>(res);
42849 typed::space<> typed::space<>::drop_all_params() const
42851 auto res = isl::space::drop_all_params();
42852 return typed::space<>(res);
42855 template <typename Domain>
42856 typed::multi_aff<Domain> typed::space<>::multi_aff_on_domain(const typed::multi_val<Domain> &mv) const
42858 auto res = isl::space::multi_aff_on_domain(mv);
42859 return typed::multi_aff<Domain>(res);
42862 typed::aff<Anonymous> typed::space<>::param_aff_on_domain(const typed::id<Anonymous> &id) const
42864 auto res = isl::space::param_aff_on_domain(id);
42865 return typed::aff<Anonymous>(res);
42868 typed::aff<Anonymous> typed::space<>::param_aff_on_domain(const std::string &id) const
42870 auto res = isl::space::param_aff_on_domain(id);
42871 return typed::aff<Anonymous>(res);
42874 typed::space<> typed::space<>::unit(const isl::ctx &ctx)
42876 auto res = isl::space::unit(ctx);
42877 return typed::space<>(res);
42880 typed::set<> typed::space<>::universe_set() const
42882 auto res = isl::space::universe_set();
42883 return typed::set<>(res);
42886 template <typename Domain>
42887 typed::space<Domain>::space(const isl::ctx &ctx, const std::string &str)
42888 : isl::space(ctx, str)
42892 template <typename Domain>
42893 template <typename Range>
42894 typed::space<Domain, Range> typed::space<Domain>::add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const
42896 auto res = isl::space::add_named_tuple(tuple_id, dim);
42897 return typed::space<Domain, Range>(res);
42900 template <typename Domain>
42901 template <typename Range>
42902 typed::space<Domain, Range> typed::space<Domain>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
42904 auto res = isl::space::add_named_tuple(tuple_id, dim);
42905 return typed::space<Domain, Range>(res);
42908 template <typename Domain>
42909 typed::space<Domain> typed::space<Domain>::add_param(const typed::id<Anonymous> &id) const
42911 auto res = isl::space::add_param(id);
42912 return typed::space<Domain>(res);
42915 template <typename Domain>
42916 typed::space<Domain> typed::space<Domain>::add_param(const std::string &id) const
42918 auto res = isl::space::add_param(id);
42919 return typed::space<Domain>(res);
42922 template <typename Domain>
42923 template <typename Range>
42924 typed::space<Domain, Range> typed::space<Domain>::add_unnamed_tuple(unsigned int dim) const
42926 auto res = isl::space::add_unnamed_tuple(dim);
42927 return typed::space<Domain, Range>(res);
42930 template <typename Domain>
42931 typed::space<> typed::space<Domain>::domain() const
42933 auto res = isl::space::domain();
42934 return typed::space<>(res);
42937 template <typename Domain>
42938 typed::space<Domain> typed::space<Domain>::drop_all_params() const
42940 auto res = isl::space::drop_all_params();
42941 return typed::space<Domain>(res);
42944 template <typename Domain>
42945 typed::multi_aff<Domain, Domain> typed::space<Domain>::identity_multi_aff_on_domain() const
42947 auto res = isl::space::identity_multi_aff_on_domain();
42948 return typed::multi_aff<Domain, Domain>(res);
42951 template <typename Domain>
42952 typed::multi_pw_aff<Domain, Domain> typed::space<Domain>::identity_multi_pw_aff_on_domain() const
42954 auto res = isl::space::identity_multi_pw_aff_on_domain();
42955 return typed::multi_pw_aff<Domain, Domain>(res);
42958 template <typename Domain>
42959 typed::pw_multi_aff<Domain, Domain> typed::space<Domain>::identity_pw_multi_aff_on_domain() const
42961 auto res = isl::space::identity_pw_multi_aff_on_domain();
42962 return typed::pw_multi_aff<Domain, Domain>(res);
42965 template <typename Domain>
42966 typed::space<Domain, Domain> typed::space<Domain>::map_from_set() const
42968 auto res = isl::space::map_from_set();
42969 return typed::space<Domain, Domain>(res);
42972 template <typename Domain>
42973 typed::multi_aff<Domain> typed::space<Domain>::multi_aff(const typed::aff_list<Anonymous> &list) const
42975 auto res = isl::space::multi_aff(list);
42976 return typed::multi_aff<Domain>(res);
42979 template <typename Domain>
42980 template <typename Range>
42981 typed::multi_aff<Domain, Range> typed::space<Domain>::multi_aff_on_domain(const typed::multi_val<Range> &mv) const
42983 auto res = isl::space::multi_aff_on_domain(mv);
42984 return typed::multi_aff<Domain, Range>(res);
42987 template <typename Domain>
42988 typed::multi_id<Domain> typed::space<Domain>::multi_id(const typed::id_list<Anonymous> &list) const
42990 auto res = isl::space::multi_id(list);
42991 return typed::multi_id<Domain>(res);
42994 template <typename Domain>
42995 typed::multi_pw_aff<Domain> typed::space<Domain>::multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const
42997 auto res = isl::space::multi_pw_aff(list);
42998 return typed::multi_pw_aff<Domain>(res);
43001 template <typename Domain>
43002 typed::multi_union_pw_aff<Domain> typed::space<Domain>::multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const
43004 auto res = isl::space::multi_union_pw_aff(list);
43005 return typed::multi_union_pw_aff<Domain>(res);
43008 template <typename Domain>
43009 template <typename Arg1>
43010 typed::multi_union_pw_aff<Arg1, Domain> typed::space<Domain>::multi_union_pw_aff(const typed::union_pw_aff_list<Arg1, Anonymous> &list) const
43012 auto res = isl::space::multi_union_pw_aff(list);
43013 return typed::multi_union_pw_aff<Arg1, Domain>(res);
43016 template <typename Domain>
43017 typed::multi_val<Domain> typed::space<Domain>::multi_val(const typed::val_list<Anonymous> &list) const
43019 auto res = isl::space::multi_val(list);
43020 return typed::multi_val<Domain>(res);
43023 template <typename Domain>
43024 typed::aff<Domain, Anonymous> typed::space<Domain>::param_aff_on_domain(const typed::id<Anonymous> &id) const
43026 auto res = isl::space::param_aff_on_domain(id);
43027 return typed::aff<Domain, Anonymous>(res);
43030 template <typename Domain>
43031 typed::aff<Domain, Anonymous> typed::space<Domain>::param_aff_on_domain(const std::string &id) const
43033 auto res = isl::space::param_aff_on_domain(id);
43034 return typed::aff<Domain, Anonymous>(res);
43037 template <typename Domain>
43038 typed::space<> typed::space<Domain>::params() const
43040 auto res = isl::space::params();
43041 return typed::space<>(res);
43044 template <typename Domain>
43045 template <typename Range>
43046 typed::space<pair<Domain, Range>> typed::space<Domain>::product(const typed::space<Range> &right) const
43048 auto res = isl::space::product(right);
43049 return typed::space<pair<Domain, Range>>(res);
43052 template <typename Domain>
43053 template <typename Domain2>
43054 typed::space<Domain2> typed::space<Domain>::set_range_tuple(const typed::id<Anonymous> &id) const
43056 auto res = isl::space::set_range_tuple(id);
43057 return typed::space<Domain2>(res);
43060 template <typename Domain>
43061 template <typename Domain2>
43062 typed::space<Domain2> typed::space<Domain>::set_range_tuple(const std::string &id) const
43064 auto res = isl::space::set_range_tuple(id);
43065 return typed::space<Domain2>(res);
43068 template <typename Domain>
43069 typed::set<Domain> typed::space<Domain>::universe_set() const
43071 auto res = isl::space::universe_set();
43072 return typed::set<Domain>(res);
43075 template <typename Domain>
43076 typed::aff<Domain, Anonymous> typed::space<Domain>::zero_aff_on_domain() const
43078 auto res = isl::space::zero_aff_on_domain();
43079 return typed::aff<Domain, Anonymous>(res);
43082 template <typename Domain>
43083 typed::multi_aff<Domain> typed::space<Domain>::zero_multi_aff() const
43085 auto res = isl::space::zero_multi_aff();
43086 return typed::multi_aff<Domain>(res);
43089 template <typename Domain>
43090 typed::multi_pw_aff<Domain> typed::space<Domain>::zero_multi_pw_aff() const
43092 auto res = isl::space::zero_multi_pw_aff();
43093 return typed::multi_pw_aff<Domain>(res);
43096 template <typename Domain>
43097 typed::multi_union_pw_aff<Domain> typed::space<Domain>::zero_multi_union_pw_aff() const
43099 auto res = isl::space::zero_multi_union_pw_aff();
43100 return typed::multi_union_pw_aff<Domain>(res);
43103 template <typename Domain>
43104 typed::multi_val<Domain> typed::space<Domain>::zero_multi_val() const
43106 auto res = isl::space::zero_multi_val();
43107 return typed::multi_val<Domain>(res);
43110 template <typename Domain, typename Range>
43111 typed::space<Domain, Range>::space(const isl::ctx &ctx, const std::string &str)
43112 : isl::space(ctx, str)
43116 template <typename Domain, typename Range>
43117 typed::space<Domain, Range> typed::space<Domain, Range>::add_param(const typed::id<Anonymous> &id) const
43119 auto res = isl::space::add_param(id);
43120 return typed::space<Domain, Range>(res);
43123 template <typename Domain, typename Range>
43124 typed::space<Domain, Range> typed::space<Domain, Range>::add_param(const std::string &id) const
43126 auto res = isl::space::add_param(id);
43127 return typed::space<Domain, Range>(res);
43130 template <typename Domain, typename Range>
43131 typed::space<Domain> typed::space<Domain, Range>::domain() const
43133 auto res = isl::space::domain();
43134 return typed::space<Domain>(res);
43137 template <typename Domain, typename Range>
43138 typed::multi_aff<pair<Domain, Range>, Domain> typed::space<Domain, Range>::domain_map_multi_aff() const
43140 auto res = isl::space::domain_map_multi_aff();
43141 return typed::multi_aff<pair<Domain, Range>, Domain>(res);
43144 template <typename Domain, typename Range>
43145 typed::pw_multi_aff<pair<Domain, Range>, Domain> typed::space<Domain, Range>::domain_map_pw_multi_aff() const
43147 auto res = isl::space::domain_map_pw_multi_aff();
43148 return typed::pw_multi_aff<pair<Domain, Range>, Domain>(res);
43151 template <typename Domain, typename Range>
43152 typed::space<Domain, Range> typed::space<Domain, Range>::drop_all_params() const
43154 auto res = isl::space::drop_all_params();
43155 return typed::space<Domain, Range>(res);
43158 template <typename Domain, typename Range>
43159 typed::multi_aff<Domain, Range> typed::space<Domain, Range>::multi_aff(const typed::aff_list<Domain, Anonymous> &list) const
43161 auto res = isl::space::multi_aff(list);
43162 return typed::multi_aff<Domain, Range>(res);
43165 template <typename Domain, typename Range>
43166 typed::multi_pw_aff<Domain, Range> typed::space<Domain, Range>::multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const
43168 auto res = isl::space::multi_pw_aff(list);
43169 return typed::multi_pw_aff<Domain, Range>(res);
43172 template <typename Domain, typename Range>
43173 typed::space<> typed::space<Domain, Range>::params() const
43175 auto res = isl::space::params();
43176 return typed::space<>(res);
43179 template <typename Domain, typename Range>
43180 template <typename Domain2, typename Range2>
43181 typed::space<pair<Domain, Domain2>, pair<Range, Range2>> typed::space<Domain, Range>::product(const typed::space<Domain2, Range2> &right) const
43183 auto res = isl::space::product(right);
43184 return typed::space<pair<Domain, Domain2>, pair<Range, Range2>>(res);
43187 template <typename Domain, typename Range>
43188 typed::space<Range> typed::space<Domain, Range>::range() const
43190 auto res = isl::space::range();
43191 return typed::space<Range>(res);
43194 template <typename Domain, typename Range>
43195 typed::multi_aff<pair<Domain, Range>, Range> typed::space<Domain, Range>::range_map_multi_aff() const
43197 auto res = isl::space::range_map_multi_aff();
43198 return typed::multi_aff<pair<Domain, Range>, Range>(res);
43201 template <typename Domain, typename Range>
43202 typed::pw_multi_aff<pair<Domain, Range>, Range> typed::space<Domain, Range>::range_map_pw_multi_aff() const
43204 auto res = isl::space::range_map_pw_multi_aff();
43205 return typed::pw_multi_aff<pair<Domain, Range>, Range>(res);
43208 template <typename Domain, typename Range>
43209 typed::space<Range, Domain> typed::space<Domain, Range>::reverse() const
43211 auto res = isl::space::reverse();
43212 return typed::space<Range, Domain>(res);
43215 template <typename Domain, typename Range>
43216 template <typename Domain2>
43217 typed::space<Domain2, Range> typed::space<Domain, Range>::set_domain_tuple(const typed::id<Anonymous> &id) const
43219 auto res = isl::space::set_domain_tuple(id);
43220 return typed::space<Domain2, Range>(res);
43223 template <typename Domain, typename Range>
43224 template <typename Domain2>
43225 typed::space<Domain2, Range> typed::space<Domain, Range>::set_domain_tuple(const std::string &id) const
43227 auto res = isl::space::set_domain_tuple(id);
43228 return typed::space<Domain2, Range>(res);
43231 template <typename Domain, typename Range>
43232 template <typename Range2>
43233 typed::space<Domain, Range2> typed::space<Domain, Range>::set_range_tuple(const typed::id<Anonymous> &id) const
43235 auto res = isl::space::set_range_tuple(id);
43236 return typed::space<Domain, Range2>(res);
43239 template <typename Domain, typename Range>
43240 template <typename Range2>
43241 typed::space<Domain, Range2> typed::space<Domain, Range>::set_range_tuple(const std::string &id) const
43243 auto res = isl::space::set_range_tuple(id);
43244 return typed::space<Domain, Range2>(res);
43247 template <typename Domain, typename Range>
43248 typed::map<Domain, Range> typed::space<Domain, Range>::universe_map() const
43250 auto res = isl::space::universe_map();
43251 return typed::map<Domain, Range>(res);
43254 template <typename Domain, typename Range>
43255 typed::space<pair<Domain, Range>> typed::space<Domain, Range>::wrap() const
43257 auto res = isl::space::wrap();
43258 return typed::space<pair<Domain, Range>>(res);
43261 template <typename Domain, typename Range>
43262 typed::multi_aff<Domain, Range> typed::space<Domain, Range>::zero_multi_aff() const
43264 auto res = isl::space::zero_multi_aff();
43265 return typed::multi_aff<Domain, Range>(res);
43268 template <typename Domain, typename Range>
43269 typed::multi_pw_aff<Domain, Range> typed::space<Domain, Range>::zero_multi_pw_aff() const
43271 auto res = isl::space::zero_multi_pw_aff();
43272 return typed::multi_pw_aff<Domain, Range>(res);
43275 template <typename Domain, typename Range>
43276 typed::multi_union_pw_aff<Domain, Range> typed::space<Domain, Range>::zero_multi_union_pw_aff() const
43278 auto res = isl::space::zero_multi_union_pw_aff();
43279 return typed::multi_union_pw_aff<Domain, Range>(res);
43282 template <typename Domain, typename Range>
43283 typed::space<pair<Domain, Range>>::space(const isl::ctx &ctx, const std::string &str)
43284 : isl::space(ctx, str)
43288 template <typename Domain, typename Range>
43289 template <typename Arg2>
43290 typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::add_named_tuple(const typed::id<Anonymous> &tuple_id, unsigned int dim) const
43292 auto res = isl::space::add_named_tuple(tuple_id, dim);
43293 return typed::space<pair<Domain, Range>, Arg2>(res);
43296 template <typename Domain, typename Range>
43297 template <typename Arg2>
43298 typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
43300 auto res = isl::space::add_named_tuple(tuple_id, dim);
43301 return typed::space<pair<Domain, Range>, Arg2>(res);
43304 template <typename Domain, typename Range>
43305 typed::space<pair<Domain, Range>> typed::space<pair<Domain, Range>>::add_param(const typed::id<Anonymous> &id) const
43307 auto res = isl::space::add_param(id);
43308 return typed::space<pair<Domain, Range>>(res);
43311 template <typename Domain, typename Range>
43312 typed::space<pair<Domain, Range>> typed::space<pair<Domain, Range>>::add_param(const std::string &id) const
43314 auto res = isl::space::add_param(id);
43315 return typed::space<pair<Domain, Range>>(res);
43318 template <typename Domain, typename Range>
43319 template <typename Arg2>
43320 typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::add_unnamed_tuple(unsigned int dim) const
43322 auto res = isl::space::add_unnamed_tuple(dim);
43323 return typed::space<pair<Domain, Range>, Arg2>(res);
43326 template <typename Domain, typename Range>
43327 typed::space<> typed::space<pair<Domain, Range>>::domain() const
43329 auto res = isl::space::domain();
43330 return typed::space<>(res);
43333 template <typename Domain, typename Range>
43334 typed::space<pair<Domain, Range>> typed::space<pair<Domain, Range>>::drop_all_params() const
43336 auto res = isl::space::drop_all_params();
43337 return typed::space<pair<Domain, Range>>(res);
43340 template <typename Domain, typename Range>
43341 typed::multi_aff<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::identity_multi_aff_on_domain() const
43343 auto res = isl::space::identity_multi_aff_on_domain();
43344 return typed::multi_aff<pair<Domain, Range>, pair<Domain, Range>>(res);
43347 template <typename Domain, typename Range>
43348 typed::multi_pw_aff<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::identity_multi_pw_aff_on_domain() const
43350 auto res = isl::space::identity_multi_pw_aff_on_domain();
43351 return typed::multi_pw_aff<pair<Domain, Range>, pair<Domain, Range>>(res);
43354 template <typename Domain, typename Range>
43355 typed::pw_multi_aff<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::identity_pw_multi_aff_on_domain() const
43357 auto res = isl::space::identity_pw_multi_aff_on_domain();
43358 return typed::pw_multi_aff<pair<Domain, Range>, pair<Domain, Range>>(res);
43361 template <typename Domain, typename Range>
43362 typed::space<pair<Domain, Range>, pair<Domain, Range>> typed::space<pair<Domain, Range>>::map_from_set() const
43364 auto res = isl::space::map_from_set();
43365 return typed::space<pair<Domain, Range>, pair<Domain, Range>>(res);
43368 template <typename Domain, typename Range>
43369 typed::multi_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_aff(const typed::aff_list<Anonymous> &list) const
43371 auto res = isl::space::multi_aff(list);
43372 return typed::multi_aff<pair<Domain, Range>>(res);
43375 template <typename Domain, typename Range>
43376 template <typename Arg2>
43377 typed::multi_aff<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>>::multi_aff_on_domain(const typed::multi_val<Arg2> &mv) const
43379 auto res = isl::space::multi_aff_on_domain(mv);
43380 return typed::multi_aff<pair<Domain, Range>, Arg2>(res);
43383 template <typename Domain, typename Range>
43384 typed::multi_id<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_id(const typed::id_list<Anonymous> &list) const
43386 auto res = isl::space::multi_id(list);
43387 return typed::multi_id<pair<Domain, Range>>(res);
43390 template <typename Domain, typename Range>
43391 typed::multi_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_pw_aff(const typed::pw_aff_list<Anonymous> &list) const
43393 auto res = isl::space::multi_pw_aff(list);
43394 return typed::multi_pw_aff<pair<Domain, Range>>(res);
43397 template <typename Domain, typename Range>
43398 typed::multi_union_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_union_pw_aff(const typed::union_pw_aff_list<Anonymous> &list) const
43400 auto res = isl::space::multi_union_pw_aff(list);
43401 return typed::multi_union_pw_aff<pair<Domain, Range>>(res);
43404 template <typename Domain, typename Range>
43405 template <typename Arg2>
43406 typed::multi_union_pw_aff<Arg2, pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_union_pw_aff(const typed::union_pw_aff_list<Arg2, Anonymous> &list) const
43408 auto res = isl::space::multi_union_pw_aff(list);
43409 return typed::multi_union_pw_aff<Arg2, pair<Domain, Range>>(res);
43412 template <typename Domain, typename Range>
43413 typed::multi_val<pair<Domain, Range>> typed::space<pair<Domain, Range>>::multi_val(const typed::val_list<Anonymous> &list) const
43415 auto res = isl::space::multi_val(list);
43416 return typed::multi_val<pair<Domain, Range>>(res);
43419 template <typename Domain, typename Range>
43420 typed::aff<pair<Domain, Range>, Anonymous> typed::space<pair<Domain, Range>>::param_aff_on_domain(const typed::id<Anonymous> &id) const
43422 auto res = isl::space::param_aff_on_domain(id);
43423 return typed::aff<pair<Domain, Range>, Anonymous>(res);
43426 template <typename Domain, typename Range>
43427 typed::aff<pair<Domain, Range>, Anonymous> typed::space<pair<Domain, Range>>::param_aff_on_domain(const std::string &id) const
43429 auto res = isl::space::param_aff_on_domain(id);
43430 return typed::aff<pair<Domain, Range>, Anonymous>(res);
43433 template <typename Domain, typename Range>
43434 typed::space<> typed::space<pair<Domain, Range>>::params() const
43436 auto res = isl::space::params();
43437 return typed::space<>(res);
43440 template <typename Domain, typename Range>
43441 template <typename Arg2>
43442 typed::space<pair<pair<Domain, Range>, Arg2>> typed::space<pair<Domain, Range>>::product(const typed::space<Arg2> &right) const
43444 auto res = isl::space::product(right);
43445 return typed::space<pair<pair<Domain, Range>, Arg2>>(res);
43448 template <typename Domain, typename Range>
43449 typed::set<pair<Domain, Range>> typed::space<pair<Domain, Range>>::universe_set() const
43451 auto res = isl::space::universe_set();
43452 return typed::set<pair<Domain, Range>>(res);
43455 template <typename Domain, typename Range>
43456 typed::space<Domain, Range> typed::space<pair<Domain, Range>>::unwrap() const
43458 auto res = isl::space::unwrap();
43459 return typed::space<Domain, Range>(res);
43462 template <typename Domain, typename Range>
43463 typed::space<pair<Range, Domain>> typed::space<pair<Domain, Range>>::wrapped_reverse() const
43465 auto res = isl::space::wrapped_reverse();
43466 return typed::space<pair<Range, Domain>>(res);
43469 template <typename Domain, typename Range>
43470 typed::aff<pair<Domain, Range>, Anonymous> typed::space<pair<Domain, Range>>::zero_aff_on_domain() const
43472 auto res = isl::space::zero_aff_on_domain();
43473 return typed::aff<pair<Domain, Range>, Anonymous>(res);
43476 template <typename Domain, typename Range>
43477 typed::multi_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_aff() const
43479 auto res = isl::space::zero_multi_aff();
43480 return typed::multi_aff<pair<Domain, Range>>(res);
43483 template <typename Domain, typename Range>
43484 typed::multi_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_pw_aff() const
43486 auto res = isl::space::zero_multi_pw_aff();
43487 return typed::multi_pw_aff<pair<Domain, Range>>(res);
43490 template <typename Domain, typename Range>
43491 typed::multi_union_pw_aff<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_union_pw_aff() const
43493 auto res = isl::space::zero_multi_union_pw_aff();
43494 return typed::multi_union_pw_aff<pair<Domain, Range>>(res);
43497 template <typename Domain, typename Range>
43498 typed::multi_val<pair<Domain, Range>> typed::space<pair<Domain, Range>>::zero_multi_val() const
43500 auto res = isl::space::zero_multi_val();
43501 return typed::multi_val<pair<Domain, Range>>(res);
43504 template <typename Domain, typename Range, typename Range2>
43505 typed::space<pair<Domain, Range>, Range2>::space(const isl::ctx &ctx, const std::string &str)
43506 : isl::space(ctx, str)
43510 template <typename Domain, typename Range, typename Range2>
43511 typed::space<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::add_param(const typed::id<Anonymous> &id) const
43513 auto res = isl::space::add_param(id);
43514 return typed::space<pair<Domain, Range>, Range2>(res);
43517 template <typename Domain, typename Range, typename Range2>
43518 typed::space<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::add_param(const std::string &id) const
43520 auto res = isl::space::add_param(id);
43521 return typed::space<pair<Domain, Range>, Range2>(res);
43524 template <typename Domain, typename Range, typename Range2>
43525 typed::space<Domain, pair<Range, Range2>> typed::space<pair<Domain, Range>, Range2>::curry() const
43527 auto res = isl::space::curry();
43528 return typed::space<Domain, pair<Range, Range2>>(res);
43531 template <typename Domain, typename Range, typename Range2>
43532 typed::space<pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::domain() const
43534 auto res = isl::space::domain();
43535 return typed::space<pair<Domain, Range>>(res);
43538 template <typename Domain, typename Range, typename Range2>
43539 typed::multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::domain_map_multi_aff() const
43541 auto res = isl::space::domain_map_multi_aff();
43542 return typed::multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
43545 template <typename Domain, typename Range, typename Range2>
43546 typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::domain_map_pw_multi_aff() const
43548 auto res = isl::space::domain_map_pw_multi_aff();
43549 return typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
43552 template <typename Domain, typename Range, typename Range2>
43553 typed::space<pair<Range, Domain>, Range2> typed::space<pair<Domain, Range>, Range2>::domain_reverse() const
43555 auto res = isl::space::domain_reverse();
43556 return typed::space<pair<Range, Domain>, Range2>(res);
43559 template <typename Domain, typename Range, typename Range2>
43560 typed::space<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::drop_all_params() const
43562 auto res = isl::space::drop_all_params();
43563 return typed::space<pair<Domain, Range>, Range2>(res);
43566 template <typename Domain, typename Range, typename Range2>
43567 typed::space<Anonymous, Range2> typed::space<pair<Domain, Range>, Range2>::flatten_domain() const
43569 auto res = isl::space::flatten_domain();
43570 return typed::space<Anonymous, Range2>(res);
43573 template <typename Domain, typename Range, typename Range2>
43574 typed::multi_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::multi_aff(const typed::aff_list<pair<Domain, Range>, Anonymous> &list) const
43576 auto res = isl::space::multi_aff(list);
43577 return typed::multi_aff<pair<Domain, Range>, Range2>(res);
43580 template <typename Domain, typename Range, typename Range2>
43581 typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::multi_pw_aff(const typed::pw_aff_list<pair<Domain, Range>, Anonymous> &list) const
43583 auto res = isl::space::multi_pw_aff(list);
43584 return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
43587 template <typename Domain, typename Range, typename Range2>
43588 typed::space<> typed::space<pair<Domain, Range>, Range2>::params() const
43590 auto res = isl::space::params();
43591 return typed::space<>(res);
43594 template <typename Domain, typename Range, typename Range2>
43595 template <typename Domain2, typename Arg3>
43596 typed::space<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::space<pair<Domain, Range>, Range2>::product(const typed::space<Domain2, Arg3> &right) const
43598 auto res = isl::space::product(right);
43599 return typed::space<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
43602 template <typename Domain, typename Range, typename Range2>
43603 typed::space<Range2> typed::space<pair<Domain, Range>, Range2>::range() const
43605 auto res = isl::space::range();
43606 return typed::space<Range2>(res);
43609 template <typename Domain, typename Range, typename Range2>
43610 typed::multi_aff<pair<pair<Domain, Range>, Range2>, Range2> typed::space<pair<Domain, Range>, Range2>::range_map_multi_aff() const
43612 auto res = isl::space::range_map_multi_aff();
43613 return typed::multi_aff<pair<pair<Domain, Range>, Range2>, Range2>(res);
43616 template <typename Domain, typename Range, typename Range2>
43617 typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, Range2> typed::space<pair<Domain, Range>, Range2>::range_map_pw_multi_aff() const
43619 auto res = isl::space::range_map_pw_multi_aff();
43620 return typed::pw_multi_aff<pair<pair<Domain, Range>, Range2>, Range2>(res);
43623 template <typename Domain, typename Range, typename Range2>
43624 typed::space<Range2, pair<Domain, Range>> typed::space<pair<Domain, Range>, Range2>::reverse() const
43626 auto res = isl::space::reverse();
43627 return typed::space<Range2, pair<Domain, Range>>(res);
43630 template <typename Domain, typename Range, typename Range2>
43631 template <typename Arg2>
43632 typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>, Range2>::set_range_tuple(const typed::id<Anonymous> &id) const
43634 auto res = isl::space::set_range_tuple(id);
43635 return typed::space<pair<Domain, Range>, Arg2>(res);
43638 template <typename Domain, typename Range, typename Range2>
43639 template <typename Arg2>
43640 typed::space<pair<Domain, Range>, Arg2> typed::space<pair<Domain, Range>, Range2>::set_range_tuple(const std::string &id) const
43642 auto res = isl::space::set_range_tuple(id);
43643 return typed::space<pair<Domain, Range>, Arg2>(res);
43646 template <typename Domain, typename Range, typename Range2>
43647 typed::map<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::universe_map() const
43649 auto res = isl::space::universe_map();
43650 return typed::map<pair<Domain, Range>, Range2>(res);
43653 template <typename Domain, typename Range, typename Range2>
43654 typed::space<pair<pair<Domain, Range>, Range2>> typed::space<pair<Domain, Range>, Range2>::wrap() const
43656 auto res = isl::space::wrap();
43657 return typed::space<pair<pair<Domain, Range>, Range2>>(res);
43660 template <typename Domain, typename Range, typename Range2>
43661 typed::multi_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::zero_multi_aff() const
43663 auto res = isl::space::zero_multi_aff();
43664 return typed::multi_aff<pair<Domain, Range>, Range2>(res);
43667 template <typename Domain, typename Range, typename Range2>
43668 typed::multi_pw_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::zero_multi_pw_aff() const
43670 auto res = isl::space::zero_multi_pw_aff();
43671 return typed::multi_pw_aff<pair<Domain, Range>, Range2>(res);
43674 template <typename Domain, typename Range, typename Range2>
43675 typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::space<pair<Domain, Range>, Range2>::zero_multi_union_pw_aff() const
43677 auto res = isl::space::zero_multi_union_pw_aff();
43678 return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
43681 template <typename Domain, typename Range, typename Range2>
43682 typed::space<Domain, pair<Range, Range2>>::space(const isl::ctx &ctx, const std::string &str)
43683 : isl::space(ctx, str)
43687 template <typename Domain, typename Range, typename Range2>
43688 typed::space<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::add_param(const typed::id<Anonymous> &id) const
43690 auto res = isl::space::add_param(id);
43691 return typed::space<Domain, pair<Range, Range2>>(res);
43694 template <typename Domain, typename Range, typename Range2>
43695 typed::space<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::add_param(const std::string &id) const
43697 auto res = isl::space::add_param(id);
43698 return typed::space<Domain, pair<Range, Range2>>(res);
43701 template <typename Domain, typename Range, typename Range2>
43702 typed::space<Domain> typed::space<Domain, pair<Range, Range2>>::domain() const
43704 auto res = isl::space::domain();
43705 return typed::space<Domain>(res);
43708 template <typename Domain, typename Range, typename Range2>
43709 typed::multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::space<Domain, pair<Range, Range2>>::domain_map_multi_aff() const
43711 auto res = isl::space::domain_map_multi_aff();
43712 return typed::multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
43715 template <typename Domain, typename Range, typename Range2>
43716 typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::space<Domain, pair<Range, Range2>>::domain_map_pw_multi_aff() const
43718 auto res = isl::space::domain_map_pw_multi_aff();
43719 return typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
43722 template <typename Domain, typename Range, typename Range2>
43723 typed::space<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::drop_all_params() const
43725 auto res = isl::space::drop_all_params();
43726 return typed::space<Domain, pair<Range, Range2>>(res);
43729 template <typename Domain, typename Range, typename Range2>
43730 typed::space<Domain, Anonymous> typed::space<Domain, pair<Range, Range2>>::flatten_range() const
43732 auto res = isl::space::flatten_range();
43733 return typed::space<Domain, Anonymous>(res);
43736 template <typename Domain, typename Range, typename Range2>
43737 typed::multi_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::multi_aff(const typed::aff_list<Domain, Anonymous> &list) const
43739 auto res = isl::space::multi_aff(list);
43740 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
43743 template <typename Domain, typename Range, typename Range2>
43744 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::multi_pw_aff(const typed::pw_aff_list<Domain, Anonymous> &list) const
43746 auto res = isl::space::multi_pw_aff(list);
43747 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
43750 template <typename Domain, typename Range, typename Range2>
43751 typed::space<> typed::space<Domain, pair<Range, Range2>>::params() const
43753 auto res = isl::space::params();
43754 return typed::space<>(res);
43757 template <typename Domain, typename Range, typename Range2>
43758 template <typename Domain2, typename Arg3>
43759 typed::space<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::space<Domain, pair<Range, Range2>>::product(const typed::space<Domain2, Arg3> &right) const
43761 auto res = isl::space::product(right);
43762 return typed::space<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
43765 template <typename Domain, typename Range, typename Range2>
43766 typed::space<pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::range() const
43768 auto res = isl::space::range();
43769 return typed::space<pair<Range, Range2>>(res);
43772 template <typename Domain, typename Range, typename Range2>
43773 typed::multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::range_map_multi_aff() const
43775 auto res = isl::space::range_map_multi_aff();
43776 return typed::multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
43779 template <typename Domain, typename Range, typename Range2>
43780 typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::range_map_pw_multi_aff() const
43782 auto res = isl::space::range_map_pw_multi_aff();
43783 return typed::pw_multi_aff<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
43786 template <typename Domain, typename Range, typename Range2>
43787 typed::space<Domain, pair<Range2, Range>> typed::space<Domain, pair<Range, Range2>>::range_reverse() const
43789 auto res = isl::space::range_reverse();
43790 return typed::space<Domain, pair<Range2, Range>>(res);
43793 template <typename Domain, typename Range, typename Range2>
43794 typed::space<pair<Range, Range2>, Domain> typed::space<Domain, pair<Range, Range2>>::reverse() const
43796 auto res = isl::space::reverse();
43797 return typed::space<pair<Range, Range2>, Domain>(res);
43800 template <typename Domain, typename Range, typename Range2>
43801 template <typename Domain2>
43802 typed::space<Domain2, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::set_domain_tuple(const typed::id<Anonymous> &id) const
43804 auto res = isl::space::set_domain_tuple(id);
43805 return typed::space<Domain2, pair<Range, Range2>>(res);
43808 template <typename Domain, typename Range, typename Range2>
43809 template <typename Domain2>
43810 typed::space<Domain2, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::set_domain_tuple(const std::string &id) const
43812 auto res = isl::space::set_domain_tuple(id);
43813 return typed::space<Domain2, pair<Range, Range2>>(res);
43816 template <typename Domain, typename Range, typename Range2>
43817 typed::space<pair<Domain, Range>, Range2> typed::space<Domain, pair<Range, Range2>>::uncurry() const
43819 auto res = isl::space::uncurry();
43820 return typed::space<pair<Domain, Range>, Range2>(res);
43823 template <typename Domain, typename Range, typename Range2>
43824 typed::map<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::universe_map() const
43826 auto res = isl::space::universe_map();
43827 return typed::map<Domain, pair<Range, Range2>>(res);
43830 template <typename Domain, typename Range, typename Range2>
43831 typed::space<pair<Domain, pair<Range, Range2>>> typed::space<Domain, pair<Range, Range2>>::wrap() const
43833 auto res = isl::space::wrap();
43834 return typed::space<pair<Domain, pair<Range, Range2>>>(res);
43837 template <typename Domain, typename Range, typename Range2>
43838 typed::multi_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::zero_multi_aff() const
43840 auto res = isl::space::zero_multi_aff();
43841 return typed::multi_aff<Domain, pair<Range, Range2>>(res);
43844 template <typename Domain, typename Range, typename Range2>
43845 typed::multi_pw_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::zero_multi_pw_aff() const
43847 auto res = isl::space::zero_multi_pw_aff();
43848 return typed::multi_pw_aff<Domain, pair<Range, Range2>>(res);
43851 template <typename Domain, typename Range, typename Range2>
43852 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::space<Domain, pair<Range, Range2>>::zero_multi_union_pw_aff() const
43854 auto res = isl::space::zero_multi_union_pw_aff();
43855 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
43858 template <typename T1, typename T2, typename Range, typename Range2>
43859 typed::space<pair<T1, T2>, pair<Range, Range2>>::space(const isl::ctx &ctx, const std::string &str)
43860 : isl::space(ctx, str)
43864 template <typename T1, typename T2, typename Range, typename Range2>
43865 typed::space<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::add_param(const typed::id<Anonymous> &id) const
43867 auto res = isl::space::add_param(id);
43868 return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
43871 template <typename T1, typename T2, typename Range, typename Range2>
43872 typed::space<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::add_param(const std::string &id) const
43874 auto res = isl::space::add_param(id);
43875 return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
43878 template <typename T1, typename T2, typename Range, typename Range2>
43879 typed::space<T1, pair<T2, pair<Range, Range2>>> typed::space<pair<T1, T2>, pair<Range, Range2>>::curry() const
43881 auto res = isl::space::curry();
43882 return typed::space<T1, pair<T2, pair<Range, Range2>>>(res);
43885 template <typename T1, typename T2, typename Range, typename Range2>
43886 typed::space<pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::domain() const
43888 auto res = isl::space::domain();
43889 return typed::space<pair<T1, T2>>(res);
43892 template <typename T1, typename T2, typename Range, typename Range2>
43893 typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::domain_map_multi_aff() const
43895 auto res = isl::space::domain_map_multi_aff();
43896 return typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
43899 template <typename T1, typename T2, typename Range, typename Range2>
43900 typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::domain_map_pw_multi_aff() const
43902 auto res = isl::space::domain_map_pw_multi_aff();
43903 return typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
43906 template <typename T1, typename T2, typename Range, typename Range2>
43907 typed::space<pair<T2, T1>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::domain_reverse() const
43909 auto res = isl::space::domain_reverse();
43910 return typed::space<pair<T2, T1>, pair<Range, Range2>>(res);
43913 template <typename T1, typename T2, typename Range, typename Range2>
43914 typed::space<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::drop_all_params() const
43916 auto res = isl::space::drop_all_params();
43917 return typed::space<pair<T1, T2>, pair<Range, Range2>>(res);
43920 template <typename T1, typename T2, typename Range, typename Range2>
43921 typed::space<Anonymous, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::flatten_domain() const
43923 auto res = isl::space::flatten_domain();
43924 return typed::space<Anonymous, pair<Range, Range2>>(res);
43927 template <typename T1, typename T2, typename Range, typename Range2>
43928 typed::space<pair<T1, T2>, Anonymous> typed::space<pair<T1, T2>, pair<Range, Range2>>::flatten_range() const
43930 auto res = isl::space::flatten_range();
43931 return typed::space<pair<T1, T2>, Anonymous>(res);
43934 template <typename T1, typename T2, typename Range, typename Range2>
43935 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::multi_aff(const typed::aff_list<pair<T1, T2>, Anonymous> &list) const
43937 auto res = isl::space::multi_aff(list);
43938 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
43941 template <typename T1, typename T2, typename Range, typename Range2>
43942 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::multi_pw_aff(const typed::pw_aff_list<pair<T1, T2>, Anonymous> &list) const
43944 auto res = isl::space::multi_pw_aff(list);
43945 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
43948 template <typename T1, typename T2, typename Range, typename Range2>
43949 typed::space<> typed::space<pair<T1, T2>, pair<Range, Range2>>::params() const
43951 auto res = isl::space::params();
43952 return typed::space<>(res);
43955 template <typename T1, typename T2, typename Range, typename Range2>
43956 template <typename Domain2, typename Arg2>
43957 typed::space<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::product(const typed::space<Domain2, Arg2> &right) const
43959 auto res = isl::space::product(right);
43960 return typed::space<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
43963 template <typename T1, typename T2, typename Range, typename Range2>
43964 typed::space<pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range() const
43966 auto res = isl::space::range();
43967 return typed::space<pair<Range, Range2>>(res);
43970 template <typename T1, typename T2, typename Range, typename Range2>
43971 typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range_map_multi_aff() const
43973 auto res = isl::space::range_map_multi_aff();
43974 return typed::multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
43977 template <typename T1, typename T2, typename Range, typename Range2>
43978 typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range_map_pw_multi_aff() const
43980 auto res = isl::space::range_map_pw_multi_aff();
43981 return typed::pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
43984 template <typename T1, typename T2, typename Range, typename Range2>
43985 typed::space<pair<T1, T2>, pair<Range2, Range>> typed::space<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
43987 auto res = isl::space::range_reverse();
43988 return typed::space<pair<T1, T2>, pair<Range2, Range>>(res);
43991 template <typename T1, typename T2, typename Range, typename Range2>
43992 typed::space<pair<Range, Range2>, pair<T1, T2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::reverse() const
43994 auto res = isl::space::reverse();
43995 return typed::space<pair<Range, Range2>, pair<T1, T2>>(res);
43998 template <typename T1, typename T2, typename Range, typename Range2>
43999 typed::space<pair<pair<T1, T2>, Range>, Range2> typed::space<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
44001 auto res = isl::space::uncurry();
44002 return typed::space<pair<pair<T1, T2>, Range>, Range2>(res);
44005 template <typename T1, typename T2, typename Range, typename Range2>
44006 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::universe_map() const
44008 auto res = isl::space::universe_map();
44009 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
44012 template <typename T1, typename T2, typename Range, typename Range2>
44013 typed::space<pair<pair<T1, T2>, pair<Range, Range2>>> typed::space<pair<T1, T2>, pair<Range, Range2>>::wrap() const
44015 auto res = isl::space::wrap();
44016 return typed::space<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
44019 template <typename T1, typename T2, typename Range, typename Range2>
44020 typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::zero_multi_aff() const
44022 auto res = isl::space::zero_multi_aff();
44023 return typed::multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
44026 template <typename T1, typename T2, typename Range, typename Range2>
44027 typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::zero_multi_pw_aff() const
44029 auto res = isl::space::zero_multi_pw_aff();
44030 return typed::multi_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
44033 template <typename T1, typename T2, typename Range, typename Range2>
44034 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::space<pair<T1, T2>, pair<Range, Range2>>::zero_multi_union_pw_aff() const
44036 auto res = isl::space::zero_multi_union_pw_aff();
44037 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
44040 template <typename Domain, typename Range>
44041 typed::union_map<Domain, Range>::union_map(const typed::basic_map<Domain, Range> &bmap)
44042 : isl::union_map(bmap)
44046 template <typename Domain, typename Range>
44047 typed::union_map<Domain, Range>::union_map(const typed::map<Domain, Range> &map)
44048 : isl::union_map(map)
44052 template <typename Domain, typename Range>
44053 typed::union_map<Domain, Range>::union_map(const isl::ctx &ctx, const std::string &str)
44054 : isl::union_map(ctx, str)
44058 template <typename Domain, typename Range>
44059 template <typename Domain2>
44060 typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
44062 auto res = isl::union_map::apply_domain(umap2);
44063 return typed::union_map<Domain2, Range>(res);
44066 template <typename Domain, typename Range>
44067 template <typename Domain2>
44068 typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const
44070 auto res = isl::union_map::apply_domain(umap2);
44071 return typed::union_map<Domain2, Range>(res);
44074 template <typename Domain, typename Range>
44075 template <typename Domain2>
44076 typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::apply_domain(const typed::map<Domain, Domain2> &umap2) const
44078 auto res = isl::union_map::apply_domain(umap2);
44079 return typed::union_map<Domain2, Range>(res);
44082 template <typename Domain, typename Range>
44083 template <typename Range2>
44084 typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::apply_range(const typed::union_map<Range, Range2> &umap2) const
44086 auto res = isl::union_map::apply_range(umap2);
44087 return typed::union_map<Domain, Range2>(res);
44090 template <typename Domain, typename Range>
44091 template <typename Range2>
44092 typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::apply_range(const typed::basic_map<Range, Range2> &umap2) const
44094 auto res = isl::union_map::apply_range(umap2);
44095 return typed::union_map<Domain, Range2>(res);
44098 template <typename Domain, typename Range>
44099 template <typename Range2>
44100 typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::apply_range(const typed::map<Range, Range2> &umap2) const
44102 auto res = isl::union_map::apply_range(umap2);
44103 return typed::union_map<Domain, Range2>(res);
44106 template <typename Domain, typename Range>
44107 typed::map<Domain, Range> typed::union_map<Domain, Range>::as_map() const
44109 auto res = isl::union_map::as_map();
44110 return typed::map<Domain, Range>(res);
44113 template <typename Domain, typename Range>
44114 typed::multi_union_pw_aff<Domain, Range> typed::union_map<Domain, Range>::as_multi_union_pw_aff() const
44116 auto res = isl::union_map::as_multi_union_pw_aff();
44117 return typed::multi_union_pw_aff<Domain, Range>(res);
44120 template <typename Domain, typename Range>
44121 typed::union_pw_multi_aff<Domain, Range> typed::union_map<Domain, Range>::as_union_pw_multi_aff() const
44123 auto res = isl::union_map::as_union_pw_multi_aff();
44124 return typed::union_pw_multi_aff<Domain, Range>(res);
44127 template <typename Domain, typename Range>
44128 typed::union_set<Domain> typed::union_map<Domain, Range>::bind_range(const typed::multi_id<Range> &tuple) const
44130 auto res = isl::union_map::bind_range(tuple);
44131 return typed::union_set<Domain>(res);
44134 template <typename Domain, typename Range>
44135 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::coalesce() const
44137 auto res = isl::union_map::coalesce();
44138 return typed::union_map<Domain, Range>(res);
44141 template <typename Domain, typename Range>
44142 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::detect_equalities() const
44144 auto res = isl::union_map::detect_equalities();
44145 return typed::union_map<Domain, Range>(res);
44148 template <typename Domain, typename Range>
44149 typed::union_set<Domain> typed::union_map<Domain, Range>::domain() const
44151 auto res = isl::union_map::domain();
44152 return typed::union_set<Domain>(res);
44155 template <typename Domain, typename Range>
44156 typed::union_map<pair<Domain, Range>, Domain> typed::union_map<Domain, Range>::domain_map() const
44158 auto res = isl::union_map::domain_map();
44159 return typed::union_map<pair<Domain, Range>, Domain>(res);
44162 template <typename Domain, typename Range>
44163 typed::union_pw_multi_aff<pair<Domain, Range>, Domain> typed::union_map<Domain, Range>::domain_map_union_pw_multi_aff() const
44165 auto res = isl::union_map::domain_map_union_pw_multi_aff();
44166 return typed::union_pw_multi_aff<pair<Domain, Range>, Domain>(res);
44169 template <typename Domain, typename Range>
44170 template <typename Domain2>
44171 typed::union_map<pair<Domain, Domain2>, Range> typed::union_map<Domain, Range>::domain_product(const typed::union_map<Domain2, Range> &umap2) const
44173 auto res = isl::union_map::domain_product(umap2);
44174 return typed::union_map<pair<Domain, Domain2>, Range>(res);
44177 template <typename Domain, typename Range>
44178 template <typename Domain2>
44179 typed::union_map<pair<Domain, Domain2>, Range> typed::union_map<Domain, Range>::domain_product(const typed::basic_map<Domain2, Range> &umap2) const
44181 auto res = isl::union_map::domain_product(umap2);
44182 return typed::union_map<pair<Domain, Domain2>, Range>(res);
44185 template <typename Domain, typename Range>
44186 template <typename Domain2>
44187 typed::union_map<pair<Domain, Domain2>, Range> typed::union_map<Domain, Range>::domain_product(const typed::map<Domain2, Range> &umap2) const
44189 auto res = isl::union_map::domain_product(umap2);
44190 return typed::union_map<pair<Domain, Domain2>, Range>(res);
44193 template <typename Domain, typename Range>
44194 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::drop_unused_params() const
44196 auto res = isl::union_map::drop_unused_params();
44197 return typed::union_map<Domain, Range>(res);
44200 template <typename Domain, typename Range>
44201 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::empty(const isl::ctx &ctx)
44203 auto res = isl::union_map::empty(ctx);
44204 return typed::union_map<Domain, Range>(res);
44207 template <typename Domain, typename Range>
44208 bool typed::union_map<Domain, Range>::every_map(const std::function<bool(typed::map<Domain, Range>)> &test) const
44210 auto lambda_test = [&] (isl::map arg0) {
44211 return test(typed::map<Domain, Range>(arg0));
44213 return isl::union_map::every_map(lambda_test);
44216 template <typename Domain, typename Range>
44217 typed::map<Domain, Range> typed::union_map<Domain, Range>::extract_map(const typed::space<Domain, Range> &space) const
44219 auto res = isl::union_map::extract_map(space);
44220 return typed::map<Domain, Range>(res);
44223 template <typename Domain, typename Range>
44224 void typed::union_map<Domain, Range>::foreach_map(const std::function<void(typed::map<Domain, Range>)> &fn) const
44226 auto lambda_fn = [&] (isl::map arg0) {
44227 return fn(typed::map<Domain, Range>(arg0));
44229 return isl::union_map::foreach_map(lambda_fn);
44232 template <typename Domain, typename Range>
44233 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist(const typed::union_map<Domain, Range> &context) const
44235 auto res = isl::union_map::gist(context);
44236 return typed::union_map<Domain, Range>(res);
44239 template <typename Domain, typename Range>
44240 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist(const typed::basic_map<Domain, Range> &context) const
44242 auto res = isl::union_map::gist(context);
44243 return typed::union_map<Domain, Range>(res);
44246 template <typename Domain, typename Range>
44247 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist(const typed::map<Domain, Range> &context) const
44249 auto res = isl::union_map::gist(context);
44250 return typed::union_map<Domain, Range>(res);
44253 template <typename Domain, typename Range>
44254 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::union_set<Domain> &uset) const
44256 auto res = isl::union_map::gist_domain(uset);
44257 return typed::union_map<Domain, Range>(res);
44260 template <typename Domain, typename Range>
44261 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::basic_set<Domain> &uset) const
44263 auto res = isl::union_map::gist_domain(uset);
44264 return typed::union_map<Domain, Range>(res);
44267 template <typename Domain, typename Range>
44268 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::point<Domain> &uset) const
44270 auto res = isl::union_map::gist_domain(uset);
44271 return typed::union_map<Domain, Range>(res);
44274 template <typename Domain, typename Range>
44275 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_domain(const typed::set<Domain> &uset) const
44277 auto res = isl::union_map::gist_domain(uset);
44278 return typed::union_map<Domain, Range>(res);
44281 template <typename Domain, typename Range>
44282 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_params(const typed::set<> &set) const
44284 auto res = isl::union_map::gist_params(set);
44285 return typed::union_map<Domain, Range>(res);
44288 template <typename Domain, typename Range>
44289 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_params(const typed::basic_set<> &set) const
44291 auto res = isl::union_map::gist_params(set);
44292 return typed::union_map<Domain, Range>(res);
44295 template <typename Domain, typename Range>
44296 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::gist_params(const typed::point<> &set) const
44298 auto res = isl::union_map::gist_params(set);
44299 return typed::union_map<Domain, Range>(res);
44302 template <typename Domain, typename Range>
44303 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect(const typed::union_map<Domain, Range> &umap2) const
44305 auto res = isl::union_map::intersect(umap2);
44306 return typed::union_map<Domain, Range>(res);
44309 template <typename Domain, typename Range>
44310 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect(const typed::basic_map<Domain, Range> &umap2) const
44312 auto res = isl::union_map::intersect(umap2);
44313 return typed::union_map<Domain, Range>(res);
44316 template <typename Domain, typename Range>
44317 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect(const typed::map<Domain, Range> &umap2) const
44319 auto res = isl::union_map::intersect(umap2);
44320 return typed::union_map<Domain, Range>(res);
44323 template <typename Domain, typename Range>
44324 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
44326 auto res = isl::union_map::intersect_domain(space);
44327 return typed::union_map<Domain, Range>(res);
44330 template <typename Domain, typename Range>
44331 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
44333 auto res = isl::union_map::intersect_domain(uset);
44334 return typed::union_map<Domain, Range>(res);
44337 template <typename Domain, typename Range>
44338 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_params(const typed::set<> &set) const
44340 auto res = isl::union_map::intersect_params(set);
44341 return typed::union_map<Domain, Range>(res);
44344 template <typename Domain, typename Range>
44345 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
44347 auto res = isl::union_map::intersect_params(set);
44348 return typed::union_map<Domain, Range>(res);
44351 template <typename Domain, typename Range>
44352 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_params(const typed::point<> &set) const
44354 auto res = isl::union_map::intersect_params(set);
44355 return typed::union_map<Domain, Range>(res);
44358 template <typename Domain, typename Range>
44359 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_range(const typed::space<Range> &space) const
44361 auto res = isl::union_map::intersect_range(space);
44362 return typed::union_map<Domain, Range>(res);
44365 template <typename Domain, typename Range>
44366 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::intersect_range(const typed::union_set<Range> &uset) const
44368 auto res = isl::union_map::intersect_range(uset);
44369 return typed::union_map<Domain, Range>(res);
44372 template <typename Domain, typename Range>
44373 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::lexmax() const
44375 auto res = isl::union_map::lexmax();
44376 return typed::union_map<Domain, Range>(res);
44379 template <typename Domain, typename Range>
44380 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::lexmin() const
44382 auto res = isl::union_map::lexmin();
44383 return typed::union_map<Domain, Range>(res);
44386 template <typename Domain, typename Range>
44387 typed::map_list<Domain, Range> typed::union_map<Domain, Range>::map_list() const
44389 auto res = isl::union_map::map_list();
44390 return typed::map_list<Domain, Range>(res);
44393 template <typename Domain, typename Range>
44394 typed::set<> typed::union_map<Domain, Range>::params() const
44396 auto res = isl::union_map::params();
44397 return typed::set<>(res);
44400 template <typename Domain, typename Range>
44401 template <typename Domain2>
44402 typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
44404 auto res = isl::union_map::preimage_domain(ma);
44405 return typed::union_map<Domain2, Range>(res);
44408 template <typename Domain, typename Range>
44409 template <typename Domain2>
44410 typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
44412 auto res = isl::union_map::preimage_domain(mpa);
44413 return typed::union_map<Domain2, Range>(res);
44416 template <typename Domain, typename Range>
44417 template <typename Domain2>
44418 typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
44420 auto res = isl::union_map::preimage_domain(pma);
44421 return typed::union_map<Domain2, Range>(res);
44424 template <typename Domain, typename Range>
44425 template <typename Domain2>
44426 typed::union_map<Domain2, Range> typed::union_map<Domain, Range>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
44428 auto res = isl::union_map::preimage_domain(upma);
44429 return typed::union_map<Domain2, Range>(res);
44432 template <typename Domain, typename Range>
44433 template <typename Range2>
44434 typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::preimage_range(const typed::multi_aff<Range2, Range> &ma) const
44436 auto res = isl::union_map::preimage_range(ma);
44437 return typed::union_map<Domain, Range2>(res);
44440 template <typename Domain, typename Range>
44441 template <typename Range2>
44442 typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::preimage_range(const typed::pw_multi_aff<Range2, Range> &pma) const
44444 auto res = isl::union_map::preimage_range(pma);
44445 return typed::union_map<Domain, Range2>(res);
44448 template <typename Domain, typename Range>
44449 template <typename Range2>
44450 typed::union_map<Domain, Range2> typed::union_map<Domain, Range>::preimage_range(const typed::union_pw_multi_aff<Range2, Range> &upma) const
44452 auto res = isl::union_map::preimage_range(upma);
44453 return typed::union_map<Domain, Range2>(res);
44456 template <typename Domain, typename Range>
44457 template <typename Domain2, typename Range2>
44458 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, Range>::product(const typed::union_map<Domain2, Range2> &umap2) const
44460 auto res = isl::union_map::product(umap2);
44461 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
44464 template <typename Domain, typename Range>
44465 template <typename Domain2, typename Range2>
44466 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, Range>::product(const typed::basic_map<Domain2, Range2> &umap2) const
44468 auto res = isl::union_map::product(umap2);
44469 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
44472 template <typename Domain, typename Range>
44473 template <typename Domain2, typename Range2>
44474 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, Range>::product(const typed::map<Domain2, Range2> &umap2) const
44476 auto res = isl::union_map::product(umap2);
44477 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
44480 template <typename Domain, typename Range>
44481 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::project_out_all_params() const
44483 auto res = isl::union_map::project_out_all_params();
44484 return typed::union_map<Domain, Range>(res);
44487 template <typename Domain, typename Range>
44488 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::project_out_param(const typed::id<Anonymous> &id) const
44490 auto res = isl::union_map::project_out_param(id);
44491 return typed::union_map<Domain, Range>(res);
44494 template <typename Domain, typename Range>
44495 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::project_out_param(const std::string &id) const
44497 auto res = isl::union_map::project_out_param(id);
44498 return typed::union_map<Domain, Range>(res);
44501 template <typename Domain, typename Range>
44502 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::project_out_param(const typed::id_list<Anonymous> &list) const
44504 auto res = isl::union_map::project_out_param(list);
44505 return typed::union_map<Domain, Range>(res);
44508 template <typename Domain, typename Range>
44509 typed::union_set<Range> typed::union_map<Domain, Range>::range() const
44511 auto res = isl::union_map::range();
44512 return typed::union_set<Range>(res);
44515 template <typename Domain, typename Range>
44516 typed::union_map<pair<Domain, Range>, Range> typed::union_map<Domain, Range>::range_map() const
44518 auto res = isl::union_map::range_map();
44519 return typed::union_map<pair<Domain, Range>, Range>(res);
44522 template <typename Domain, typename Range>
44523 template <typename Range2>
44524 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, Range>::range_product(const typed::union_map<Domain, Range2> &umap2) const
44526 auto res = isl::union_map::range_product(umap2);
44527 return typed::union_map<Domain, pair<Range, Range2>>(res);
44530 template <typename Domain, typename Range>
44531 template <typename Range2>
44532 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, Range>::range_product(const typed::basic_map<Domain, Range2> &umap2) const
44534 auto res = isl::union_map::range_product(umap2);
44535 return typed::union_map<Domain, pair<Range, Range2>>(res);
44538 template <typename Domain, typename Range>
44539 template <typename Range2>
44540 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, Range>::range_product(const typed::map<Domain, Range2> &umap2) const
44542 auto res = isl::union_map::range_product(umap2);
44543 return typed::union_map<Domain, pair<Range, Range2>>(res);
44546 template <typename Domain, typename Range>
44547 typed::union_map<Range, Domain> typed::union_map<Domain, Range>::reverse() const
44549 auto res = isl::union_map::reverse();
44550 return typed::union_map<Range, Domain>(res);
44553 template <typename Domain, typename Range>
44554 typed::space<> typed::union_map<Domain, Range>::space() const
44556 auto res = isl::union_map::space();
44557 return typed::space<>(res);
44560 template <typename Domain, typename Range>
44561 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract(const typed::union_map<Domain, Range> &umap2) const
44563 auto res = isl::union_map::subtract(umap2);
44564 return typed::union_map<Domain, Range>(res);
44567 template <typename Domain, typename Range>
44568 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract(const typed::basic_map<Domain, Range> &umap2) const
44570 auto res = isl::union_map::subtract(umap2);
44571 return typed::union_map<Domain, Range>(res);
44574 template <typename Domain, typename Range>
44575 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract(const typed::map<Domain, Range> &umap2) const
44577 auto res = isl::union_map::subtract(umap2);
44578 return typed::union_map<Domain, Range>(res);
44581 template <typename Domain, typename Range>
44582 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::union_set<Domain> &dom) const
44584 auto res = isl::union_map::subtract_domain(dom);
44585 return typed::union_map<Domain, Range>(res);
44588 template <typename Domain, typename Range>
44589 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::basic_set<Domain> &dom) const
44591 auto res = isl::union_map::subtract_domain(dom);
44592 return typed::union_map<Domain, Range>(res);
44595 template <typename Domain, typename Range>
44596 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::point<Domain> &dom) const
44598 auto res = isl::union_map::subtract_domain(dom);
44599 return typed::union_map<Domain, Range>(res);
44602 template <typename Domain, typename Range>
44603 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_domain(const typed::set<Domain> &dom) const
44605 auto res = isl::union_map::subtract_domain(dom);
44606 return typed::union_map<Domain, Range>(res);
44609 template <typename Domain, typename Range>
44610 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::union_set<Range> &dom) const
44612 auto res = isl::union_map::subtract_range(dom);
44613 return typed::union_map<Domain, Range>(res);
44616 template <typename Domain, typename Range>
44617 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::basic_set<Range> &dom) const
44619 auto res = isl::union_map::subtract_range(dom);
44620 return typed::union_map<Domain, Range>(res);
44623 template <typename Domain, typename Range>
44624 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::point<Range> &dom) const
44626 auto res = isl::union_map::subtract_range(dom);
44627 return typed::union_map<Domain, Range>(res);
44630 template <typename Domain, typename Range>
44631 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::subtract_range(const typed::set<Range> &dom) const
44633 auto res = isl::union_map::subtract_range(dom);
44634 return typed::union_map<Domain, Range>(res);
44637 template <typename Domain, typename Range>
44638 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::unite(const typed::union_map<Domain, Range> &umap2) const
44640 auto res = isl::union_map::unite(umap2);
44641 return typed::union_map<Domain, Range>(res);
44644 template <typename Domain, typename Range>
44645 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::unite(const typed::basic_map<Domain, Range> &umap2) const
44647 auto res = isl::union_map::unite(umap2);
44648 return typed::union_map<Domain, Range>(res);
44651 template <typename Domain, typename Range>
44652 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::unite(const typed::map<Domain, Range> &umap2) const
44654 auto res = isl::union_map::unite(umap2);
44655 return typed::union_map<Domain, Range>(res);
44658 template <typename Domain, typename Range>
44659 typed::union_map<Domain, Range> typed::union_map<Domain, Range>::universe() const
44661 auto res = isl::union_map::universe();
44662 return typed::union_map<Domain, Range>(res);
44665 template <typename Domain, typename Range>
44666 typed::union_set<pair<Domain, Range>> typed::union_map<Domain, Range>::wrap() const
44668 auto res = isl::union_map::wrap();
44669 return typed::union_set<pair<Domain, Range>>(res);
44672 template <typename Domain, typename Range, typename Range2>
44673 typed::union_map<pair<Domain, Range>, Range2>::union_map(const typed::basic_map<pair<Domain, Range>, Range2> &bmap)
44674 : isl::union_map(bmap)
44678 template <typename Domain, typename Range, typename Range2>
44679 typed::union_map<pair<Domain, Range>, Range2>::union_map(const typed::map<pair<Domain, Range>, Range2> &map)
44680 : isl::union_map(map)
44684 template <typename Domain, typename Range, typename Range2>
44685 typed::union_map<pair<Domain, Range>, Range2>::union_map(const isl::ctx &ctx, const std::string &str)
44686 : isl::union_map(ctx, str)
44690 template <typename Domain, typename Range, typename Range2>
44691 template <typename Domain2>
44692 typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::apply_domain(const typed::union_map<pair<Domain, Range>, Domain2> &umap2) const
44694 auto res = isl::union_map::apply_domain(umap2);
44695 return typed::union_map<Domain2, Range2>(res);
44698 template <typename Domain, typename Range, typename Range2>
44699 template <typename Domain2>
44700 typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::apply_domain(const typed::basic_map<pair<Domain, Range>, Domain2> &umap2) const
44702 auto res = isl::union_map::apply_domain(umap2);
44703 return typed::union_map<Domain2, Range2>(res);
44706 template <typename Domain, typename Range, typename Range2>
44707 template <typename Domain2>
44708 typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::apply_domain(const typed::map<pair<Domain, Range>, Domain2> &umap2) const
44710 auto res = isl::union_map::apply_domain(umap2);
44711 return typed::union_map<Domain2, Range2>(res);
44714 template <typename Domain, typename Range, typename Range2>
44715 template <typename Arg3>
44716 typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::apply_range(const typed::union_map<Range2, Arg3> &umap2) const
44718 auto res = isl::union_map::apply_range(umap2);
44719 return typed::union_map<pair<Domain, Range>, Arg3>(res);
44722 template <typename Domain, typename Range, typename Range2>
44723 template <typename Arg3>
44724 typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::apply_range(const typed::basic_map<Range2, Arg3> &umap2) const
44726 auto res = isl::union_map::apply_range(umap2);
44727 return typed::union_map<pair<Domain, Range>, Arg3>(res);
44730 template <typename Domain, typename Range, typename Range2>
44731 template <typename Arg3>
44732 typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::apply_range(const typed::map<Range2, Arg3> &umap2) const
44734 auto res = isl::union_map::apply_range(umap2);
44735 return typed::union_map<pair<Domain, Range>, Arg3>(res);
44738 template <typename Domain, typename Range, typename Range2>
44739 typed::map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::as_map() const
44741 auto res = isl::union_map::as_map();
44742 return typed::map<pair<Domain, Range>, Range2>(res);
44745 template <typename Domain, typename Range, typename Range2>
44746 typed::multi_union_pw_aff<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::as_multi_union_pw_aff() const
44748 auto res = isl::union_map::as_multi_union_pw_aff();
44749 return typed::multi_union_pw_aff<pair<Domain, Range>, Range2>(res);
44752 template <typename Domain, typename Range, typename Range2>
44753 typed::union_pw_multi_aff<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::as_union_pw_multi_aff() const
44755 auto res = isl::union_map::as_union_pw_multi_aff();
44756 return typed::union_pw_multi_aff<pair<Domain, Range>, Range2>(res);
44759 template <typename Domain, typename Range, typename Range2>
44760 typed::union_set<pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::bind_range(const typed::multi_id<Range2> &tuple) const
44762 auto res = isl::union_map::bind_range(tuple);
44763 return typed::union_set<pair<Domain, Range>>(res);
44766 template <typename Domain, typename Range, typename Range2>
44767 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::coalesce() const
44769 auto res = isl::union_map::coalesce();
44770 return typed::union_map<pair<Domain, Range>, Range2>(res);
44773 template <typename Domain, typename Range, typename Range2>
44774 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<pair<Domain, Range>, Range2>::curry() const
44776 auto res = isl::union_map::curry();
44777 return typed::union_map<Domain, pair<Range, Range2>>(res);
44780 template <typename Domain, typename Range, typename Range2>
44781 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::detect_equalities() const
44783 auto res = isl::union_map::detect_equalities();
44784 return typed::union_map<pair<Domain, Range>, Range2>(res);
44787 template <typename Domain, typename Range, typename Range2>
44788 typed::union_set<pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::domain() const
44790 auto res = isl::union_map::domain();
44791 return typed::union_set<pair<Domain, Range>>(res);
44794 template <typename Domain, typename Range, typename Range2>
44795 typed::union_map<Domain, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_factor_domain() const
44797 auto res = isl::union_map::domain_factor_domain();
44798 return typed::union_map<Domain, Range2>(res);
44801 template <typename Domain, typename Range, typename Range2>
44802 typed::union_map<Range, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_factor_range() const
44804 auto res = isl::union_map::domain_factor_range();
44805 return typed::union_map<Range, Range2>(res);
44808 template <typename Domain, typename Range, typename Range2>
44809 typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::domain_map() const
44811 auto res = isl::union_map::domain_map();
44812 return typed::union_map<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
44815 template <typename Domain, typename Range, typename Range2>
44816 typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::domain_map_union_pw_multi_aff() const
44818 auto res = isl::union_map::domain_map_union_pw_multi_aff();
44819 return typed::union_pw_multi_aff<pair<pair<Domain, Range>, Range2>, pair<Domain, Range>>(res);
44822 template <typename Domain, typename Range, typename Range2>
44823 template <typename Domain2>
44824 typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_product(const typed::union_map<Domain2, Range2> &umap2) const
44826 auto res = isl::union_map::domain_product(umap2);
44827 return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
44830 template <typename Domain, typename Range, typename Range2>
44831 template <typename Domain2>
44832 typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_product(const typed::basic_map<Domain2, Range2> &umap2) const
44834 auto res = isl::union_map::domain_product(umap2);
44835 return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
44838 template <typename Domain, typename Range, typename Range2>
44839 template <typename Domain2>
44840 typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_product(const typed::map<Domain2, Range2> &umap2) const
44842 auto res = isl::union_map::domain_product(umap2);
44843 return typed::union_map<pair<pair<Domain, Range>, Domain2>, Range2>(res);
44846 template <typename Domain, typename Range, typename Range2>
44847 typed::union_map<pair<Range, Domain>, Range2> typed::union_map<pair<Domain, Range>, Range2>::domain_reverse() const
44849 auto res = isl::union_map::domain_reverse();
44850 return typed::union_map<pair<Range, Domain>, Range2>(res);
44853 template <typename Domain, typename Range, typename Range2>
44854 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::drop_unused_params() const
44856 auto res = isl::union_map::drop_unused_params();
44857 return typed::union_map<pair<Domain, Range>, Range2>(res);
44860 template <typename Domain, typename Range, typename Range2>
44861 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::empty(const isl::ctx &ctx)
44863 auto res = isl::union_map::empty(ctx);
44864 return typed::union_map<pair<Domain, Range>, Range2>(res);
44867 template <typename Domain, typename Range, typename Range2>
44868 bool typed::union_map<pair<Domain, Range>, Range2>::every_map(const std::function<bool(typed::map<pair<Domain, Range>, Range2>)> &test) const
44870 auto lambda_test = [&] (isl::map arg0) {
44871 return test(typed::map<pair<Domain, Range>, Range2>(arg0));
44873 return isl::union_map::every_map(lambda_test);
44876 template <typename Domain, typename Range, typename Range2>
44877 typed::map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::extract_map(const typed::space<pair<Domain, Range>, Range2> &space) const
44879 auto res = isl::union_map::extract_map(space);
44880 return typed::map<pair<Domain, Range>, Range2>(res);
44883 template <typename Domain, typename Range, typename Range2>
44884 void typed::union_map<pair<Domain, Range>, Range2>::foreach_map(const std::function<void(typed::map<pair<Domain, Range>, Range2>)> &fn) const
44886 auto lambda_fn = [&] (isl::map arg0) {
44887 return fn(typed::map<pair<Domain, Range>, Range2>(arg0));
44889 return isl::union_map::foreach_map(lambda_fn);
44892 template <typename Domain, typename Range, typename Range2>
44893 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist(const typed::union_map<pair<Domain, Range>, Range2> &context) const
44895 auto res = isl::union_map::gist(context);
44896 return typed::union_map<pair<Domain, Range>, Range2>(res);
44899 template <typename Domain, typename Range, typename Range2>
44900 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist(const typed::basic_map<pair<Domain, Range>, Range2> &context) const
44902 auto res = isl::union_map::gist(context);
44903 return typed::union_map<pair<Domain, Range>, Range2>(res);
44906 template <typename Domain, typename Range, typename Range2>
44907 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist(const typed::map<pair<Domain, Range>, Range2> &context) const
44909 auto res = isl::union_map::gist(context);
44910 return typed::union_map<pair<Domain, Range>, Range2>(res);
44913 template <typename Domain, typename Range, typename Range2>
44914 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::union_set<pair<Domain, Range>> &uset) const
44916 auto res = isl::union_map::gist_domain(uset);
44917 return typed::union_map<pair<Domain, Range>, Range2>(res);
44920 template <typename Domain, typename Range, typename Range2>
44921 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::basic_set<pair<Domain, Range>> &uset) const
44923 auto res = isl::union_map::gist_domain(uset);
44924 return typed::union_map<pair<Domain, Range>, Range2>(res);
44927 template <typename Domain, typename Range, typename Range2>
44928 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::point<pair<Domain, Range>> &uset) const
44930 auto res = isl::union_map::gist_domain(uset);
44931 return typed::union_map<pair<Domain, Range>, Range2>(res);
44934 template <typename Domain, typename Range, typename Range2>
44935 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_domain(const typed::set<pair<Domain, Range>> &uset) const
44937 auto res = isl::union_map::gist_domain(uset);
44938 return typed::union_map<pair<Domain, Range>, Range2>(res);
44941 template <typename Domain, typename Range, typename Range2>
44942 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_params(const typed::set<> &set) const
44944 auto res = isl::union_map::gist_params(set);
44945 return typed::union_map<pair<Domain, Range>, Range2>(res);
44948 template <typename Domain, typename Range, typename Range2>
44949 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_params(const typed::basic_set<> &set) const
44951 auto res = isl::union_map::gist_params(set);
44952 return typed::union_map<pair<Domain, Range>, Range2>(res);
44955 template <typename Domain, typename Range, typename Range2>
44956 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::gist_params(const typed::point<> &set) const
44958 auto res = isl::union_map::gist_params(set);
44959 return typed::union_map<pair<Domain, Range>, Range2>(res);
44962 template <typename Domain, typename Range, typename Range2>
44963 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
44965 auto res = isl::union_map::intersect(umap2);
44966 return typed::union_map<pair<Domain, Range>, Range2>(res);
44969 template <typename Domain, typename Range, typename Range2>
44970 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const
44972 auto res = isl::union_map::intersect(umap2);
44973 return typed::union_map<pair<Domain, Range>, Range2>(res);
44976 template <typename Domain, typename Range, typename Range2>
44977 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect(const typed::map<pair<Domain, Range>, Range2> &umap2) const
44979 auto res = isl::union_map::intersect(umap2);
44980 return typed::union_map<pair<Domain, Range>, Range2>(res);
44983 template <typename Domain, typename Range, typename Range2>
44984 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::space<pair<Domain, Range>> &space) const
44986 auto res = isl::union_map::intersect_domain(space);
44987 return typed::union_map<pair<Domain, Range>, Range2>(res);
44990 template <typename Domain, typename Range, typename Range2>
44991 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain(const typed::union_set<pair<Domain, Range>> &uset) const
44993 auto res = isl::union_map::intersect_domain(uset);
44994 return typed::union_map<pair<Domain, Range>, Range2>(res);
44997 template <typename Domain, typename Range, typename Range2>
44998 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::union_set<Domain> &domain) const
45000 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
45001 return typed::union_map<pair<Domain, Range>, Range2>(res);
45004 template <typename Domain, typename Range, typename Range2>
45005 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::basic_set<Domain> &domain) const
45007 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
45008 return typed::union_map<pair<Domain, Range>, Range2>(res);
45011 template <typename Domain, typename Range, typename Range2>
45012 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::point<Domain> &domain) const
45014 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
45015 return typed::union_map<pair<Domain, Range>, Range2>(res);
45018 template <typename Domain, typename Range, typename Range2>
45019 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_domain_wrapped_domain(const typed::set<Domain> &domain) const
45021 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
45022 return typed::union_map<pair<Domain, Range>, Range2>(res);
45025 template <typename Domain, typename Range, typename Range2>
45026 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_params(const typed::set<> &set) const
45028 auto res = isl::union_map::intersect_params(set);
45029 return typed::union_map<pair<Domain, Range>, Range2>(res);
45032 template <typename Domain, typename Range, typename Range2>
45033 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_params(const typed::basic_set<> &set) const
45035 auto res = isl::union_map::intersect_params(set);
45036 return typed::union_map<pair<Domain, Range>, Range2>(res);
45039 template <typename Domain, typename Range, typename Range2>
45040 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_params(const typed::point<> &set) const
45042 auto res = isl::union_map::intersect_params(set);
45043 return typed::union_map<pair<Domain, Range>, Range2>(res);
45046 template <typename Domain, typename Range, typename Range2>
45047 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_range(const typed::space<Range2> &space) const
45049 auto res = isl::union_map::intersect_range(space);
45050 return typed::union_map<pair<Domain, Range>, Range2>(res);
45053 template <typename Domain, typename Range, typename Range2>
45054 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::intersect_range(const typed::union_set<Range2> &uset) const
45056 auto res = isl::union_map::intersect_range(uset);
45057 return typed::union_map<pair<Domain, Range>, Range2>(res);
45060 template <typename Domain, typename Range, typename Range2>
45061 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::lexmax() const
45063 auto res = isl::union_map::lexmax();
45064 return typed::union_map<pair<Domain, Range>, Range2>(res);
45067 template <typename Domain, typename Range, typename Range2>
45068 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::lexmin() const
45070 auto res = isl::union_map::lexmin();
45071 return typed::union_map<pair<Domain, Range>, Range2>(res);
45074 template <typename Domain, typename Range, typename Range2>
45075 typed::map_list<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::map_list() const
45077 auto res = isl::union_map::map_list();
45078 return typed::map_list<pair<Domain, Range>, Range2>(res);
45081 template <typename Domain, typename Range, typename Range2>
45082 typed::set<> typed::union_map<pair<Domain, Range>, Range2>::params() const
45084 auto res = isl::union_map::params();
45085 return typed::set<>(res);
45088 template <typename Domain, typename Range, typename Range2>
45089 template <typename Domain2>
45090 typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
45092 auto res = isl::union_map::preimage_domain(ma);
45093 return typed::union_map<Domain2, Range2>(res);
45096 template <typename Domain, typename Range, typename Range2>
45097 template <typename Domain2>
45098 typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<Domain, Range>> &mpa) const
45100 auto res = isl::union_map::preimage_domain(mpa);
45101 return typed::union_map<Domain2, Range2>(res);
45104 template <typename Domain, typename Range, typename Range2>
45105 template <typename Domain2>
45106 typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
45108 auto res = isl::union_map::preimage_domain(pma);
45109 return typed::union_map<Domain2, Range2>(res);
45112 template <typename Domain, typename Range, typename Range2>
45113 template <typename Domain2>
45114 typed::union_map<Domain2, Range2> typed::union_map<pair<Domain, Range>, Range2>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
45116 auto res = isl::union_map::preimage_domain(upma);
45117 return typed::union_map<Domain2, Range2>(res);
45120 template <typename Domain, typename Range, typename Range2>
45121 template <typename Arg3>
45122 typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::preimage_range(const typed::multi_aff<Arg3, Range2> &ma) const
45124 auto res = isl::union_map::preimage_range(ma);
45125 return typed::union_map<pair<Domain, Range>, Arg3>(res);
45128 template <typename Domain, typename Range, typename Range2>
45129 template <typename Arg3>
45130 typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::preimage_range(const typed::pw_multi_aff<Arg3, Range2> &pma) const
45132 auto res = isl::union_map::preimage_range(pma);
45133 return typed::union_map<pair<Domain, Range>, Arg3>(res);
45136 template <typename Domain, typename Range, typename Range2>
45137 template <typename Arg3>
45138 typed::union_map<pair<Domain, Range>, Arg3> typed::union_map<pair<Domain, Range>, Range2>::preimage_range(const typed::union_pw_multi_aff<Arg3, Range2> &upma) const
45140 auto res = isl::union_map::preimage_range(upma);
45141 return typed::union_map<pair<Domain, Range>, Arg3>(res);
45144 template <typename Domain, typename Range, typename Range2>
45145 template <typename Domain2, typename Arg3>
45146 typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::product(const typed::union_map<Domain2, Arg3> &umap2) const
45148 auto res = isl::union_map::product(umap2);
45149 return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
45152 template <typename Domain, typename Range, typename Range2>
45153 template <typename Domain2, typename Arg3>
45154 typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::product(const typed::basic_map<Domain2, Arg3> &umap2) const
45156 auto res = isl::union_map::product(umap2);
45157 return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
45160 template <typename Domain, typename Range, typename Range2>
45161 template <typename Domain2, typename Arg3>
45162 typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::product(const typed::map<Domain2, Arg3> &umap2) const
45164 auto res = isl::union_map::product(umap2);
45165 return typed::union_map<pair<pair<Domain, Range>, Domain2>, pair<Range2, Arg3>>(res);
45168 template <typename Domain, typename Range, typename Range2>
45169 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::project_out_all_params() const
45171 auto res = isl::union_map::project_out_all_params();
45172 return typed::union_map<pair<Domain, Range>, Range2>(res);
45175 template <typename Domain, typename Range, typename Range2>
45176 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::project_out_param(const typed::id<Anonymous> &id) const
45178 auto res = isl::union_map::project_out_param(id);
45179 return typed::union_map<pair<Domain, Range>, Range2>(res);
45182 template <typename Domain, typename Range, typename Range2>
45183 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::project_out_param(const std::string &id) const
45185 auto res = isl::union_map::project_out_param(id);
45186 return typed::union_map<pair<Domain, Range>, Range2>(res);
45189 template <typename Domain, typename Range, typename Range2>
45190 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::project_out_param(const typed::id_list<Anonymous> &list) const
45192 auto res = isl::union_map::project_out_param(list);
45193 return typed::union_map<pair<Domain, Range>, Range2>(res);
45196 template <typename Domain, typename Range, typename Range2>
45197 typed::union_set<Range2> typed::union_map<pair<Domain, Range>, Range2>::range() const
45199 auto res = isl::union_map::range();
45200 return typed::union_set<Range2>(res);
45203 template <typename Domain, typename Range, typename Range2>
45204 typed::union_map<pair<pair<Domain, Range>, Range2>, Range2> typed::union_map<pair<Domain, Range>, Range2>::range_map() const
45206 auto res = isl::union_map::range_map();
45207 return typed::union_map<pair<pair<Domain, Range>, Range2>, Range2>(res);
45210 template <typename Domain, typename Range, typename Range2>
45211 template <typename Arg3>
45212 typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::range_product(const typed::union_map<pair<Domain, Range>, Arg3> &umap2) const
45214 auto res = isl::union_map::range_product(umap2);
45215 return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
45218 template <typename Domain, typename Range, typename Range2>
45219 template <typename Arg3>
45220 typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::range_product(const typed::basic_map<pair<Domain, Range>, Arg3> &umap2) const
45222 auto res = isl::union_map::range_product(umap2);
45223 return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
45226 template <typename Domain, typename Range, typename Range2>
45227 template <typename Arg3>
45228 typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>> typed::union_map<pair<Domain, Range>, Range2>::range_product(const typed::map<pair<Domain, Range>, Arg3> &umap2) const
45230 auto res = isl::union_map::range_product(umap2);
45231 return typed::union_map<pair<Domain, Range>, pair<Range2, Arg3>>(res);
45234 template <typename Domain, typename Range, typename Range2>
45235 typed::union_map<Range2, pair<Domain, Range>> typed::union_map<pair<Domain, Range>, Range2>::reverse() const
45237 auto res = isl::union_map::reverse();
45238 return typed::union_map<Range2, pair<Domain, Range>>(res);
45241 template <typename Domain, typename Range, typename Range2>
45242 typed::space<> typed::union_map<pair<Domain, Range>, Range2>::space() const
45244 auto res = isl::union_map::space();
45245 return typed::space<>(res);
45248 template <typename Domain, typename Range, typename Range2>
45249 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
45251 auto res = isl::union_map::subtract(umap2);
45252 return typed::union_map<pair<Domain, Range>, Range2>(res);
45255 template <typename Domain, typename Range, typename Range2>
45256 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const
45258 auto res = isl::union_map::subtract(umap2);
45259 return typed::union_map<pair<Domain, Range>, Range2>(res);
45262 template <typename Domain, typename Range, typename Range2>
45263 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract(const typed::map<pair<Domain, Range>, Range2> &umap2) const
45265 auto res = isl::union_map::subtract(umap2);
45266 return typed::union_map<pair<Domain, Range>, Range2>(res);
45269 template <typename Domain, typename Range, typename Range2>
45270 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::union_set<pair<Domain, Range>> &dom) const
45272 auto res = isl::union_map::subtract_domain(dom);
45273 return typed::union_map<pair<Domain, Range>, Range2>(res);
45276 template <typename Domain, typename Range, typename Range2>
45277 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::basic_set<pair<Domain, Range>> &dom) const
45279 auto res = isl::union_map::subtract_domain(dom);
45280 return typed::union_map<pair<Domain, Range>, Range2>(res);
45283 template <typename Domain, typename Range, typename Range2>
45284 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::point<pair<Domain, Range>> &dom) const
45286 auto res = isl::union_map::subtract_domain(dom);
45287 return typed::union_map<pair<Domain, Range>, Range2>(res);
45290 template <typename Domain, typename Range, typename Range2>
45291 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_domain(const typed::set<pair<Domain, Range>> &dom) const
45293 auto res = isl::union_map::subtract_domain(dom);
45294 return typed::union_map<pair<Domain, Range>, Range2>(res);
45297 template <typename Domain, typename Range, typename Range2>
45298 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::union_set<Range2> &dom) const
45300 auto res = isl::union_map::subtract_range(dom);
45301 return typed::union_map<pair<Domain, Range>, Range2>(res);
45304 template <typename Domain, typename Range, typename Range2>
45305 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::basic_set<Range2> &dom) const
45307 auto res = isl::union_map::subtract_range(dom);
45308 return typed::union_map<pair<Domain, Range>, Range2>(res);
45311 template <typename Domain, typename Range, typename Range2>
45312 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::point<Range2> &dom) const
45314 auto res = isl::union_map::subtract_range(dom);
45315 return typed::union_map<pair<Domain, Range>, Range2>(res);
45318 template <typename Domain, typename Range, typename Range2>
45319 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::subtract_range(const typed::set<Range2> &dom) const
45321 auto res = isl::union_map::subtract_range(dom);
45322 return typed::union_map<pair<Domain, Range>, Range2>(res);
45325 template <typename Domain, typename Range, typename Range2>
45326 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::unite(const typed::union_map<pair<Domain, Range>, Range2> &umap2) const
45328 auto res = isl::union_map::unite(umap2);
45329 return typed::union_map<pair<Domain, Range>, Range2>(res);
45332 template <typename Domain, typename Range, typename Range2>
45333 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::unite(const typed::basic_map<pair<Domain, Range>, Range2> &umap2) const
45335 auto res = isl::union_map::unite(umap2);
45336 return typed::union_map<pair<Domain, Range>, Range2>(res);
45339 template <typename Domain, typename Range, typename Range2>
45340 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::unite(const typed::map<pair<Domain, Range>, Range2> &umap2) const
45342 auto res = isl::union_map::unite(umap2);
45343 return typed::union_map<pair<Domain, Range>, Range2>(res);
45346 template <typename Domain, typename Range, typename Range2>
45347 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<pair<Domain, Range>, Range2>::universe() const
45349 auto res = isl::union_map::universe();
45350 return typed::union_map<pair<Domain, Range>, Range2>(res);
45353 template <typename Domain, typename Range, typename Range2>
45354 typed::union_set<pair<pair<Domain, Range>, Range2>> typed::union_map<pair<Domain, Range>, Range2>::wrap() const
45356 auto res = isl::union_map::wrap();
45357 return typed::union_set<pair<pair<Domain, Range>, Range2>>(res);
45360 template <typename Domain>
45361 typed::union_map<Domain, Domain>::union_map(const typed::basic_map<Domain, Domain> &bmap)
45362 : isl::union_map(bmap)
45366 template <typename Domain>
45367 typed::union_map<Domain, Domain>::union_map(const typed::map<Domain, Domain> &map)
45368 : isl::union_map(map)
45372 template <typename Domain>
45373 typed::union_map<Domain, Domain>::union_map(const isl::ctx &ctx, const std::string &str)
45374 : isl::union_map(ctx, str)
45378 template <typename Domain>
45379 template <typename Domain2>
45380 typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
45382 auto res = isl::union_map::apply_domain(umap2);
45383 return typed::union_map<Domain2, Domain>(res);
45386 template <typename Domain>
45387 template <typename Domain2>
45388 typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const
45390 auto res = isl::union_map::apply_domain(umap2);
45391 return typed::union_map<Domain2, Domain>(res);
45394 template <typename Domain>
45395 template <typename Domain2>
45396 typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::apply_domain(const typed::map<Domain, Domain2> &umap2) const
45398 auto res = isl::union_map::apply_domain(umap2);
45399 return typed::union_map<Domain2, Domain>(res);
45402 template <typename Domain>
45403 template <typename Range2>
45404 typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::apply_range(const typed::union_map<Domain, Range2> &umap2) const
45406 auto res = isl::union_map::apply_range(umap2);
45407 return typed::union_map<Domain, Range2>(res);
45410 template <typename Domain>
45411 template <typename Range2>
45412 typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::apply_range(const typed::basic_map<Domain, Range2> &umap2) const
45414 auto res = isl::union_map::apply_range(umap2);
45415 return typed::union_map<Domain, Range2>(res);
45418 template <typename Domain>
45419 template <typename Range2>
45420 typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::apply_range(const typed::map<Domain, Range2> &umap2) const
45422 auto res = isl::union_map::apply_range(umap2);
45423 return typed::union_map<Domain, Range2>(res);
45426 template <typename Domain>
45427 typed::map<Domain, Domain> typed::union_map<Domain, Domain>::as_map() const
45429 auto res = isl::union_map::as_map();
45430 return typed::map<Domain, Domain>(res);
45433 template <typename Domain>
45434 typed::multi_union_pw_aff<Domain, Domain> typed::union_map<Domain, Domain>::as_multi_union_pw_aff() const
45436 auto res = isl::union_map::as_multi_union_pw_aff();
45437 return typed::multi_union_pw_aff<Domain, Domain>(res);
45440 template <typename Domain>
45441 typed::union_pw_multi_aff<Domain, Domain> typed::union_map<Domain, Domain>::as_union_pw_multi_aff() const
45443 auto res = isl::union_map::as_union_pw_multi_aff();
45444 return typed::union_pw_multi_aff<Domain, Domain>(res);
45447 template <typename Domain>
45448 typed::union_set<Domain> typed::union_map<Domain, Domain>::bind_range(const typed::multi_id<Domain> &tuple) const
45450 auto res = isl::union_map::bind_range(tuple);
45451 return typed::union_set<Domain>(res);
45454 template <typename Domain>
45455 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::coalesce() const
45457 auto res = isl::union_map::coalesce();
45458 return typed::union_map<Domain, Domain>(res);
45461 template <typename Domain>
45462 typed::union_set<Domain> typed::union_map<Domain, Domain>::deltas() const
45464 auto res = isl::union_map::deltas();
45465 return typed::union_set<Domain>(res);
45468 template <typename Domain>
45469 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::detect_equalities() const
45471 auto res = isl::union_map::detect_equalities();
45472 return typed::union_map<Domain, Domain>(res);
45475 template <typename Domain>
45476 typed::union_set<Domain> typed::union_map<Domain, Domain>::domain() const
45478 auto res = isl::union_map::domain();
45479 return typed::union_set<Domain>(res);
45482 template <typename Domain>
45483 typed::union_map<pair<Domain, Domain>, Domain> typed::union_map<Domain, Domain>::domain_map() const
45485 auto res = isl::union_map::domain_map();
45486 return typed::union_map<pair<Domain, Domain>, Domain>(res);
45489 template <typename Domain>
45490 typed::union_pw_multi_aff<pair<Domain, Domain>, Domain> typed::union_map<Domain, Domain>::domain_map_union_pw_multi_aff() const
45492 auto res = isl::union_map::domain_map_union_pw_multi_aff();
45493 return typed::union_pw_multi_aff<pair<Domain, Domain>, Domain>(res);
45496 template <typename Domain>
45497 template <typename Domain2>
45498 typed::union_map<pair<Domain, Domain2>, Domain> typed::union_map<Domain, Domain>::domain_product(const typed::union_map<Domain2, Domain> &umap2) const
45500 auto res = isl::union_map::domain_product(umap2);
45501 return typed::union_map<pair<Domain, Domain2>, Domain>(res);
45504 template <typename Domain>
45505 template <typename Domain2>
45506 typed::union_map<pair<Domain, Domain2>, Domain> typed::union_map<Domain, Domain>::domain_product(const typed::basic_map<Domain2, Domain> &umap2) const
45508 auto res = isl::union_map::domain_product(umap2);
45509 return typed::union_map<pair<Domain, Domain2>, Domain>(res);
45512 template <typename Domain>
45513 template <typename Domain2>
45514 typed::union_map<pair<Domain, Domain2>, Domain> typed::union_map<Domain, Domain>::domain_product(const typed::map<Domain2, Domain> &umap2) const
45516 auto res = isl::union_map::domain_product(umap2);
45517 return typed::union_map<pair<Domain, Domain2>, Domain>(res);
45520 template <typename Domain>
45521 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::drop_unused_params() const
45523 auto res = isl::union_map::drop_unused_params();
45524 return typed::union_map<Domain, Domain>(res);
45527 template <typename Domain>
45528 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::empty(const isl::ctx &ctx)
45530 auto res = isl::union_map::empty(ctx);
45531 return typed::union_map<Domain, Domain>(res);
45534 template <typename Domain>
45535 template <typename Range>
45536 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::eq_at(const typed::multi_union_pw_aff<Domain, Range> &mupa) const
45538 auto res = isl::union_map::eq_at(mupa);
45539 return typed::union_map<Domain, Domain>(res);
45542 template <typename Domain>
45543 template <typename Range>
45544 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::eq_at(const typed::multi_pw_aff<Domain, Range> &mupa) const
45546 auto res = isl::union_map::eq_at(mupa);
45547 return typed::union_map<Domain, Domain>(res);
45550 template <typename Domain>
45551 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::eq_at(const typed::union_pw_aff<Domain, Anonymous> &mupa) const
45553 auto res = isl::union_map::eq_at(mupa);
45554 return typed::union_map<Domain, Domain>(res);
45557 template <typename Domain>
45558 bool typed::union_map<Domain, Domain>::every_map(const std::function<bool(typed::map<Domain, Domain>)> &test) const
45560 auto lambda_test = [&] (isl::map arg0) {
45561 return test(typed::map<Domain, Domain>(arg0));
45563 return isl::union_map::every_map(lambda_test);
45566 template <typename Domain>
45567 typed::map<Domain, Domain> typed::union_map<Domain, Domain>::extract_map(const typed::space<Domain, Domain> &space) const
45569 auto res = isl::union_map::extract_map(space);
45570 return typed::map<Domain, Domain>(res);
45573 template <typename Domain>
45574 void typed::union_map<Domain, Domain>::foreach_map(const std::function<void(typed::map<Domain, Domain>)> &fn) const
45576 auto lambda_fn = [&] (isl::map arg0) {
45577 return fn(typed::map<Domain, Domain>(arg0));
45579 return isl::union_map::foreach_map(lambda_fn);
45582 template <typename Domain>
45583 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist(const typed::union_map<Domain, Domain> &context) const
45585 auto res = isl::union_map::gist(context);
45586 return typed::union_map<Domain, Domain>(res);
45589 template <typename Domain>
45590 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist(const typed::basic_map<Domain, Domain> &context) const
45592 auto res = isl::union_map::gist(context);
45593 return typed::union_map<Domain, Domain>(res);
45596 template <typename Domain>
45597 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist(const typed::map<Domain, Domain> &context) const
45599 auto res = isl::union_map::gist(context);
45600 return typed::union_map<Domain, Domain>(res);
45603 template <typename Domain>
45604 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::union_set<Domain> &uset) const
45606 auto res = isl::union_map::gist_domain(uset);
45607 return typed::union_map<Domain, Domain>(res);
45610 template <typename Domain>
45611 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::basic_set<Domain> &uset) const
45613 auto res = isl::union_map::gist_domain(uset);
45614 return typed::union_map<Domain, Domain>(res);
45617 template <typename Domain>
45618 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::point<Domain> &uset) const
45620 auto res = isl::union_map::gist_domain(uset);
45621 return typed::union_map<Domain, Domain>(res);
45624 template <typename Domain>
45625 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_domain(const typed::set<Domain> &uset) const
45627 auto res = isl::union_map::gist_domain(uset);
45628 return typed::union_map<Domain, Domain>(res);
45631 template <typename Domain>
45632 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_params(const typed::set<> &set) const
45634 auto res = isl::union_map::gist_params(set);
45635 return typed::union_map<Domain, Domain>(res);
45638 template <typename Domain>
45639 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_params(const typed::basic_set<> &set) const
45641 auto res = isl::union_map::gist_params(set);
45642 return typed::union_map<Domain, Domain>(res);
45645 template <typename Domain>
45646 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::gist_params(const typed::point<> &set) const
45648 auto res = isl::union_map::gist_params(set);
45649 return typed::union_map<Domain, Domain>(res);
45652 template <typename Domain>
45653 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect(const typed::union_map<Domain, Domain> &umap2) const
45655 auto res = isl::union_map::intersect(umap2);
45656 return typed::union_map<Domain, Domain>(res);
45659 template <typename Domain>
45660 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect(const typed::basic_map<Domain, Domain> &umap2) const
45662 auto res = isl::union_map::intersect(umap2);
45663 return typed::union_map<Domain, Domain>(res);
45666 template <typename Domain>
45667 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect(const typed::map<Domain, Domain> &umap2) const
45669 auto res = isl::union_map::intersect(umap2);
45670 return typed::union_map<Domain, Domain>(res);
45673 template <typename Domain>
45674 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_domain(const typed::space<Domain> &space) const
45676 auto res = isl::union_map::intersect_domain(space);
45677 return typed::union_map<Domain, Domain>(res);
45680 template <typename Domain>
45681 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_domain(const typed::union_set<Domain> &uset) const
45683 auto res = isl::union_map::intersect_domain(uset);
45684 return typed::union_map<Domain, Domain>(res);
45687 template <typename Domain>
45688 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_params(const typed::set<> &set) const
45690 auto res = isl::union_map::intersect_params(set);
45691 return typed::union_map<Domain, Domain>(res);
45694 template <typename Domain>
45695 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_params(const typed::basic_set<> &set) const
45697 auto res = isl::union_map::intersect_params(set);
45698 return typed::union_map<Domain, Domain>(res);
45701 template <typename Domain>
45702 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_params(const typed::point<> &set) const
45704 auto res = isl::union_map::intersect_params(set);
45705 return typed::union_map<Domain, Domain>(res);
45708 template <typename Domain>
45709 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_range(const typed::space<Domain> &space) const
45711 auto res = isl::union_map::intersect_range(space);
45712 return typed::union_map<Domain, Domain>(res);
45715 template <typename Domain>
45716 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::intersect_range(const typed::union_set<Domain> &uset) const
45718 auto res = isl::union_map::intersect_range(uset);
45719 return typed::union_map<Domain, Domain>(res);
45722 template <typename Domain>
45723 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::lexmax() const
45725 auto res = isl::union_map::lexmax();
45726 return typed::union_map<Domain, Domain>(res);
45729 template <typename Domain>
45730 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::lexmin() const
45732 auto res = isl::union_map::lexmin();
45733 return typed::union_map<Domain, Domain>(res);
45736 template <typename Domain>
45737 typed::map_list<Domain, Domain> typed::union_map<Domain, Domain>::map_list() const
45739 auto res = isl::union_map::map_list();
45740 return typed::map_list<Domain, Domain>(res);
45743 template <typename Domain>
45744 typed::set<> typed::union_map<Domain, Domain>::params() const
45746 auto res = isl::union_map::params();
45747 return typed::set<>(res);
45750 template <typename Domain>
45751 template <typename Domain2>
45752 typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
45754 auto res = isl::union_map::preimage_domain(ma);
45755 return typed::union_map<Domain2, Domain>(res);
45758 template <typename Domain>
45759 template <typename Domain2>
45760 typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
45762 auto res = isl::union_map::preimage_domain(mpa);
45763 return typed::union_map<Domain2, Domain>(res);
45766 template <typename Domain>
45767 template <typename Domain2>
45768 typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
45770 auto res = isl::union_map::preimage_domain(pma);
45771 return typed::union_map<Domain2, Domain>(res);
45774 template <typename Domain>
45775 template <typename Domain2>
45776 typed::union_map<Domain2, Domain> typed::union_map<Domain, Domain>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
45778 auto res = isl::union_map::preimage_domain(upma);
45779 return typed::union_map<Domain2, Domain>(res);
45782 template <typename Domain>
45783 template <typename Range2>
45784 typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::preimage_range(const typed::multi_aff<Range2, Domain> &ma) const
45786 auto res = isl::union_map::preimage_range(ma);
45787 return typed::union_map<Domain, Range2>(res);
45790 template <typename Domain>
45791 template <typename Range2>
45792 typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::preimage_range(const typed::pw_multi_aff<Range2, Domain> &pma) const
45794 auto res = isl::union_map::preimage_range(pma);
45795 return typed::union_map<Domain, Range2>(res);
45798 template <typename Domain>
45799 template <typename Range2>
45800 typed::union_map<Domain, Range2> typed::union_map<Domain, Domain>::preimage_range(const typed::union_pw_multi_aff<Range2, Domain> &upma) const
45802 auto res = isl::union_map::preimage_range(upma);
45803 return typed::union_map<Domain, Range2>(res);
45806 template <typename Domain>
45807 template <typename Domain2, typename Range2>
45808 typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::union_map<Domain, Domain>::product(const typed::union_map<Domain2, Range2> &umap2) const
45810 auto res = isl::union_map::product(umap2);
45811 return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
45814 template <typename Domain>
45815 template <typename Domain2, typename Range2>
45816 typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::union_map<Domain, Domain>::product(const typed::basic_map<Domain2, Range2> &umap2) const
45818 auto res = isl::union_map::product(umap2);
45819 return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
45822 template <typename Domain>
45823 template <typename Domain2, typename Range2>
45824 typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>> typed::union_map<Domain, Domain>::product(const typed::map<Domain2, Range2> &umap2) const
45826 auto res = isl::union_map::product(umap2);
45827 return typed::union_map<pair<Domain, Domain2>, pair<Domain, Range2>>(res);
45830 template <typename Domain>
45831 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::project_out_all_params() const
45833 auto res = isl::union_map::project_out_all_params();
45834 return typed::union_map<Domain, Domain>(res);
45837 template <typename Domain>
45838 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::project_out_param(const typed::id<Anonymous> &id) const
45840 auto res = isl::union_map::project_out_param(id);
45841 return typed::union_map<Domain, Domain>(res);
45844 template <typename Domain>
45845 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::project_out_param(const std::string &id) const
45847 auto res = isl::union_map::project_out_param(id);
45848 return typed::union_map<Domain, Domain>(res);
45851 template <typename Domain>
45852 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::project_out_param(const typed::id_list<Anonymous> &list) const
45854 auto res = isl::union_map::project_out_param(list);
45855 return typed::union_map<Domain, Domain>(res);
45858 template <typename Domain>
45859 typed::union_set<Domain> typed::union_map<Domain, Domain>::range() const
45861 auto res = isl::union_map::range();
45862 return typed::union_set<Domain>(res);
45865 template <typename Domain>
45866 typed::union_map<pair<Domain, Domain>, Domain> typed::union_map<Domain, Domain>::range_map() const
45868 auto res = isl::union_map::range_map();
45869 return typed::union_map<pair<Domain, Domain>, Domain>(res);
45872 template <typename Domain>
45873 template <typename Range2>
45874 typed::union_map<Domain, pair<Domain, Range2>> typed::union_map<Domain, Domain>::range_product(const typed::union_map<Domain, Range2> &umap2) const
45876 auto res = isl::union_map::range_product(umap2);
45877 return typed::union_map<Domain, pair<Domain, Range2>>(res);
45880 template <typename Domain>
45881 template <typename Range2>
45882 typed::union_map<Domain, pair<Domain, Range2>> typed::union_map<Domain, Domain>::range_product(const typed::basic_map<Domain, Range2> &umap2) const
45884 auto res = isl::union_map::range_product(umap2);
45885 return typed::union_map<Domain, pair<Domain, Range2>>(res);
45888 template <typename Domain>
45889 template <typename Range2>
45890 typed::union_map<Domain, pair<Domain, Range2>> typed::union_map<Domain, Domain>::range_product(const typed::map<Domain, Range2> &umap2) const
45892 auto res = isl::union_map::range_product(umap2);
45893 return typed::union_map<Domain, pair<Domain, Range2>>(res);
45896 template <typename Domain>
45897 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::reverse() const
45899 auto res = isl::union_map::reverse();
45900 return typed::union_map<Domain, Domain>(res);
45903 template <typename Domain>
45904 typed::space<> typed::union_map<Domain, Domain>::space() const
45906 auto res = isl::union_map::space();
45907 return typed::space<>(res);
45910 template <typename Domain>
45911 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract(const typed::union_map<Domain, Domain> &umap2) const
45913 auto res = isl::union_map::subtract(umap2);
45914 return typed::union_map<Domain, Domain>(res);
45917 template <typename Domain>
45918 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract(const typed::basic_map<Domain, Domain> &umap2) const
45920 auto res = isl::union_map::subtract(umap2);
45921 return typed::union_map<Domain, Domain>(res);
45924 template <typename Domain>
45925 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract(const typed::map<Domain, Domain> &umap2) const
45927 auto res = isl::union_map::subtract(umap2);
45928 return typed::union_map<Domain, Domain>(res);
45931 template <typename Domain>
45932 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::union_set<Domain> &dom) const
45934 auto res = isl::union_map::subtract_domain(dom);
45935 return typed::union_map<Domain, Domain>(res);
45938 template <typename Domain>
45939 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::basic_set<Domain> &dom) const
45941 auto res = isl::union_map::subtract_domain(dom);
45942 return typed::union_map<Domain, Domain>(res);
45945 template <typename Domain>
45946 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::point<Domain> &dom) const
45948 auto res = isl::union_map::subtract_domain(dom);
45949 return typed::union_map<Domain, Domain>(res);
45952 template <typename Domain>
45953 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_domain(const typed::set<Domain> &dom) const
45955 auto res = isl::union_map::subtract_domain(dom);
45956 return typed::union_map<Domain, Domain>(res);
45959 template <typename Domain>
45960 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::union_set<Domain> &dom) const
45962 auto res = isl::union_map::subtract_range(dom);
45963 return typed::union_map<Domain, Domain>(res);
45966 template <typename Domain>
45967 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::basic_set<Domain> &dom) const
45969 auto res = isl::union_map::subtract_range(dom);
45970 return typed::union_map<Domain, Domain>(res);
45973 template <typename Domain>
45974 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::point<Domain> &dom) const
45976 auto res = isl::union_map::subtract_range(dom);
45977 return typed::union_map<Domain, Domain>(res);
45980 template <typename Domain>
45981 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::subtract_range(const typed::set<Domain> &dom) const
45983 auto res = isl::union_map::subtract_range(dom);
45984 return typed::union_map<Domain, Domain>(res);
45987 template <typename Domain>
45988 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::unite(const typed::union_map<Domain, Domain> &umap2) const
45990 auto res = isl::union_map::unite(umap2);
45991 return typed::union_map<Domain, Domain>(res);
45994 template <typename Domain>
45995 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::unite(const typed::basic_map<Domain, Domain> &umap2) const
45997 auto res = isl::union_map::unite(umap2);
45998 return typed::union_map<Domain, Domain>(res);
46001 template <typename Domain>
46002 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::unite(const typed::map<Domain, Domain> &umap2) const
46004 auto res = isl::union_map::unite(umap2);
46005 return typed::union_map<Domain, Domain>(res);
46008 template <typename Domain>
46009 typed::union_map<Domain, Domain> typed::union_map<Domain, Domain>::universe() const
46011 auto res = isl::union_map::universe();
46012 return typed::union_map<Domain, Domain>(res);
46015 template <typename Domain>
46016 typed::union_set<pair<Domain, Domain>> typed::union_map<Domain, Domain>::wrap() const
46018 auto res = isl::union_map::wrap();
46019 return typed::union_set<pair<Domain, Domain>>(res);
46022 template <typename Domain, typename Range, typename Range2>
46023 typed::union_map<Domain, pair<Range, Range2>>::union_map(const typed::basic_map<Domain, pair<Range, Range2>> &bmap)
46024 : isl::union_map(bmap)
46028 template <typename Domain, typename Range, typename Range2>
46029 typed::union_map<Domain, pair<Range, Range2>>::union_map(const typed::map<Domain, pair<Range, Range2>> &map)
46030 : isl::union_map(map)
46034 template <typename Domain, typename Range, typename Range2>
46035 typed::union_map<Domain, pair<Range, Range2>>::union_map(const isl::ctx &ctx, const std::string &str)
46036 : isl::union_map(ctx, str)
46040 template <typename Domain, typename Range, typename Range2>
46041 template <typename Domain2>
46042 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::apply_domain(const typed::union_map<Domain, Domain2> &umap2) const
46044 auto res = isl::union_map::apply_domain(umap2);
46045 return typed::union_map<Domain2, pair<Range, Range2>>(res);
46048 template <typename Domain, typename Range, typename Range2>
46049 template <typename Domain2>
46050 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::apply_domain(const typed::basic_map<Domain, Domain2> &umap2) const
46052 auto res = isl::union_map::apply_domain(umap2);
46053 return typed::union_map<Domain2, pair<Range, Range2>>(res);
46056 template <typename Domain, typename Range, typename Range2>
46057 template <typename Domain2>
46058 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::apply_domain(const typed::map<Domain, Domain2> &umap2) const
46060 auto res = isl::union_map::apply_domain(umap2);
46061 return typed::union_map<Domain2, pair<Range, Range2>>(res);
46064 template <typename Domain, typename Range, typename Range2>
46065 template <typename Arg3>
46066 typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg3> &umap2) const
46068 auto res = isl::union_map::apply_range(umap2);
46069 return typed::union_map<Domain, Arg3>(res);
46072 template <typename Domain, typename Range, typename Range2>
46073 template <typename Arg3>
46074 typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg3> &umap2) const
46076 auto res = isl::union_map::apply_range(umap2);
46077 return typed::union_map<Domain, Arg3>(res);
46080 template <typename Domain, typename Range, typename Range2>
46081 template <typename Arg3>
46082 typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg3> &umap2) const
46084 auto res = isl::union_map::apply_range(umap2);
46085 return typed::union_map<Domain, Arg3>(res);
46088 template <typename Domain, typename Range, typename Range2>
46089 typed::map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::as_map() const
46091 auto res = isl::union_map::as_map();
46092 return typed::map<Domain, pair<Range, Range2>>(res);
46095 template <typename Domain, typename Range, typename Range2>
46096 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
46098 auto res = isl::union_map::as_multi_union_pw_aff();
46099 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
46102 template <typename Domain, typename Range, typename Range2>
46103 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::as_union_pw_multi_aff() const
46105 auto res = isl::union_map::as_union_pw_multi_aff();
46106 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
46109 template <typename Domain, typename Range, typename Range2>
46110 typed::union_set<Domain> typed::union_map<Domain, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
46112 auto res = isl::union_map::bind_range(tuple);
46113 return typed::union_set<Domain>(res);
46116 template <typename Domain, typename Range, typename Range2>
46117 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::coalesce() const
46119 auto res = isl::union_map::coalesce();
46120 return typed::union_map<Domain, pair<Range, Range2>>(res);
46123 template <typename Domain, typename Range, typename Range2>
46124 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::detect_equalities() const
46126 auto res = isl::union_map::detect_equalities();
46127 return typed::union_map<Domain, pair<Range, Range2>>(res);
46130 template <typename Domain, typename Range, typename Range2>
46131 typed::union_set<Domain> typed::union_map<Domain, pair<Range, Range2>>::domain() const
46133 auto res = isl::union_map::domain();
46134 return typed::union_set<Domain>(res);
46137 template <typename Domain, typename Range, typename Range2>
46138 typed::union_map<pair<Domain, pair<Range, Range2>>, Domain> typed::union_map<Domain, pair<Range, Range2>>::domain_map() const
46140 auto res = isl::union_map::domain_map();
46141 return typed::union_map<pair<Domain, pair<Range, Range2>>, Domain>(res);
46144 template <typename Domain, typename Range, typename Range2>
46145 typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain> typed::union_map<Domain, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
46147 auto res = isl::union_map::domain_map_union_pw_multi_aff();
46148 return typed::union_pw_multi_aff<pair<Domain, pair<Range, Range2>>, Domain>(res);
46151 template <typename Domain, typename Range, typename Range2>
46152 template <typename Domain2>
46153 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
46155 auto res = isl::union_map::domain_product(umap2);
46156 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
46159 template <typename Domain, typename Range, typename Range2>
46160 template <typename Domain2>
46161 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const
46163 auto res = isl::union_map::domain_product(umap2);
46164 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
46167 template <typename Domain, typename Range, typename Range2>
46168 template <typename Domain2>
46169 typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const
46171 auto res = isl::union_map::domain_product(umap2);
46172 return typed::union_map<pair<Domain, Domain2>, pair<Range, Range2>>(res);
46175 template <typename Domain, typename Range, typename Range2>
46176 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::drop_unused_params() const
46178 auto res = isl::union_map::drop_unused_params();
46179 return typed::union_map<Domain, pair<Range, Range2>>(res);
46182 template <typename Domain, typename Range, typename Range2>
46183 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::empty(const isl::ctx &ctx)
46185 auto res = isl::union_map::empty(ctx);
46186 return typed::union_map<Domain, pair<Range, Range2>>(res);
46189 template <typename Domain, typename Range, typename Range2>
46190 bool typed::union_map<Domain, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<Domain, pair<Range, Range2>>)> &test) const
46192 auto lambda_test = [&] (isl::map arg0) {
46193 return test(typed::map<Domain, pair<Range, Range2>>(arg0));
46195 return isl::union_map::every_map(lambda_test);
46198 template <typename Domain, typename Range, typename Range2>
46199 typed::map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::extract_map(const typed::space<Domain, pair<Range, Range2>> &space) const
46201 auto res = isl::union_map::extract_map(space);
46202 return typed::map<Domain, pair<Range, Range2>>(res);
46205 template <typename Domain, typename Range, typename Range2>
46206 void typed::union_map<Domain, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<Domain, pair<Range, Range2>>)> &fn) const
46208 auto lambda_fn = [&] (isl::map arg0) {
46209 return fn(typed::map<Domain, pair<Range, Range2>>(arg0));
46211 return isl::union_map::foreach_map(lambda_fn);
46214 template <typename Domain, typename Range, typename Range2>
46215 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist(const typed::union_map<Domain, pair<Range, Range2>> &context) const
46217 auto res = isl::union_map::gist(context);
46218 return typed::union_map<Domain, pair<Range, Range2>>(res);
46221 template <typename Domain, typename Range, typename Range2>
46222 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist(const typed::basic_map<Domain, pair<Range, Range2>> &context) const
46224 auto res = isl::union_map::gist(context);
46225 return typed::union_map<Domain, pair<Range, Range2>>(res);
46228 template <typename Domain, typename Range, typename Range2>
46229 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist(const typed::map<Domain, pair<Range, Range2>> &context) const
46231 auto res = isl::union_map::gist(context);
46232 return typed::union_map<Domain, pair<Range, Range2>>(res);
46235 template <typename Domain, typename Range, typename Range2>
46236 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::union_set<Domain> &uset) const
46238 auto res = isl::union_map::gist_domain(uset);
46239 return typed::union_map<Domain, pair<Range, Range2>>(res);
46242 template <typename Domain, typename Range, typename Range2>
46243 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::basic_set<Domain> &uset) const
46245 auto res = isl::union_map::gist_domain(uset);
46246 return typed::union_map<Domain, pair<Range, Range2>>(res);
46249 template <typename Domain, typename Range, typename Range2>
46250 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::point<Domain> &uset) const
46252 auto res = isl::union_map::gist_domain(uset);
46253 return typed::union_map<Domain, pair<Range, Range2>>(res);
46256 template <typename Domain, typename Range, typename Range2>
46257 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_domain(const typed::set<Domain> &uset) const
46259 auto res = isl::union_map::gist_domain(uset);
46260 return typed::union_map<Domain, pair<Range, Range2>>(res);
46263 template <typename Domain, typename Range, typename Range2>
46264 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_params(const typed::set<> &set) const
46266 auto res = isl::union_map::gist_params(set);
46267 return typed::union_map<Domain, pair<Range, Range2>>(res);
46270 template <typename Domain, typename Range, typename Range2>
46271 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_params(const typed::basic_set<> &set) const
46273 auto res = isl::union_map::gist_params(set);
46274 return typed::union_map<Domain, pair<Range, Range2>>(res);
46277 template <typename Domain, typename Range, typename Range2>
46278 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::gist_params(const typed::point<> &set) const
46280 auto res = isl::union_map::gist_params(set);
46281 return typed::union_map<Domain, pair<Range, Range2>>(res);
46284 template <typename Domain, typename Range, typename Range2>
46285 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
46287 auto res = isl::union_map::intersect(umap2);
46288 return typed::union_map<Domain, pair<Range, Range2>>(res);
46291 template <typename Domain, typename Range, typename Range2>
46292 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const
46294 auto res = isl::union_map::intersect(umap2);
46295 return typed::union_map<Domain, pair<Range, Range2>>(res);
46298 template <typename Domain, typename Range, typename Range2>
46299 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect(const typed::map<Domain, pair<Range, Range2>> &umap2) const
46301 auto res = isl::union_map::intersect(umap2);
46302 return typed::union_map<Domain, pair<Range, Range2>>(res);
46305 template <typename Domain, typename Range, typename Range2>
46306 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
46308 auto res = isl::union_map::intersect_domain(space);
46309 return typed::union_map<Domain, pair<Range, Range2>>(res);
46312 template <typename Domain, typename Range, typename Range2>
46313 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
46315 auto res = isl::union_map::intersect_domain(uset);
46316 return typed::union_map<Domain, pair<Range, Range2>>(res);
46319 template <typename Domain, typename Range, typename Range2>
46320 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
46322 auto res = isl::union_map::intersect_params(set);
46323 return typed::union_map<Domain, pair<Range, Range2>>(res);
46326 template <typename Domain, typename Range, typename Range2>
46327 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
46329 auto res = isl::union_map::intersect_params(set);
46330 return typed::union_map<Domain, pair<Range, Range2>>(res);
46333 template <typename Domain, typename Range, typename Range2>
46334 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
46336 auto res = isl::union_map::intersect_params(set);
46337 return typed::union_map<Domain, pair<Range, Range2>>(res);
46340 template <typename Domain, typename Range, typename Range2>
46341 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
46343 auto res = isl::union_map::intersect_range(space);
46344 return typed::union_map<Domain, pair<Range, Range2>>(res);
46347 template <typename Domain, typename Range, typename Range2>
46348 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
46350 auto res = isl::union_map::intersect_range(uset);
46351 return typed::union_map<Domain, pair<Range, Range2>>(res);
46354 template <typename Domain, typename Range, typename Range2>
46355 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const
46357 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
46358 return typed::union_map<Domain, pair<Range, Range2>>(res);
46361 template <typename Domain, typename Range, typename Range2>
46362 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const
46364 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
46365 return typed::union_map<Domain, pair<Range, Range2>>(res);
46368 template <typename Domain, typename Range, typename Range2>
46369 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::point<Range> &domain) const
46371 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
46372 return typed::union_map<Domain, pair<Range, Range2>>(res);
46375 template <typename Domain, typename Range, typename Range2>
46376 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::set<Range> &domain) const
46378 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
46379 return typed::union_map<Domain, pair<Range, Range2>>(res);
46382 template <typename Domain, typename Range, typename Range2>
46383 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::lexmax() const
46385 auto res = isl::union_map::lexmax();
46386 return typed::union_map<Domain, pair<Range, Range2>>(res);
46389 template <typename Domain, typename Range, typename Range2>
46390 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::lexmin() const
46392 auto res = isl::union_map::lexmin();
46393 return typed::union_map<Domain, pair<Range, Range2>>(res);
46396 template <typename Domain, typename Range, typename Range2>
46397 typed::map_list<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::map_list() const
46399 auto res = isl::union_map::map_list();
46400 return typed::map_list<Domain, pair<Range, Range2>>(res);
46403 template <typename Domain, typename Range, typename Range2>
46404 typed::set<> typed::union_map<Domain, pair<Range, Range2>>::params() const
46406 auto res = isl::union_map::params();
46407 return typed::set<>(res);
46410 template <typename Domain, typename Range, typename Range2>
46411 template <typename Domain2>
46412 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, Domain> &ma) const
46414 auto res = isl::union_map::preimage_domain(ma);
46415 return typed::union_map<Domain2, pair<Range, Range2>>(res);
46418 template <typename Domain, typename Range, typename Range2>
46419 template <typename Domain2>
46420 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, Domain> &mpa) const
46422 auto res = isl::union_map::preimage_domain(mpa);
46423 return typed::union_map<Domain2, pair<Range, Range2>>(res);
46426 template <typename Domain, typename Range, typename Range2>
46427 template <typename Domain2>
46428 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, Domain> &pma) const
46430 auto res = isl::union_map::preimage_domain(pma);
46431 return typed::union_map<Domain2, pair<Range, Range2>>(res);
46434 template <typename Domain, typename Range, typename Range2>
46435 template <typename Domain2>
46436 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
46438 auto res = isl::union_map::preimage_domain(upma);
46439 return typed::union_map<Domain2, pair<Range, Range2>>(res);
46442 template <typename Domain, typename Range, typename Range2>
46443 template <typename Arg3>
46444 typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg3, pair<Range, Range2>> &ma) const
46446 auto res = isl::union_map::preimage_range(ma);
46447 return typed::union_map<Domain, Arg3>(res);
46450 template <typename Domain, typename Range, typename Range2>
46451 template <typename Arg3>
46452 typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg3, pair<Range, Range2>> &pma) const
46454 auto res = isl::union_map::preimage_range(pma);
46455 return typed::union_map<Domain, Arg3>(res);
46458 template <typename Domain, typename Range, typename Range2>
46459 template <typename Arg3>
46460 typed::union_map<Domain, Arg3> typed::union_map<Domain, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg3, pair<Range, Range2>> &upma) const
46462 auto res = isl::union_map::preimage_range(upma);
46463 return typed::union_map<Domain, Arg3>(res);
46466 template <typename Domain, typename Range, typename Range2>
46467 template <typename Domain2, typename Arg3>
46468 typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg3> &umap2) const
46470 auto res = isl::union_map::product(umap2);
46471 return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
46474 template <typename Domain, typename Range, typename Range2>
46475 template <typename Domain2, typename Arg3>
46476 typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg3> &umap2) const
46478 auto res = isl::union_map::product(umap2);
46479 return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
46482 template <typename Domain, typename Range, typename Range2>
46483 template <typename Domain2, typename Arg3>
46484 typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::product(const typed::map<Domain2, Arg3> &umap2) const
46486 auto res = isl::union_map::product(umap2);
46487 return typed::union_map<pair<Domain, Domain2>, pair<pair<Range, Range2>, Arg3>>(res);
46490 template <typename Domain, typename Range, typename Range2>
46491 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::project_out_all_params() const
46493 auto res = isl::union_map::project_out_all_params();
46494 return typed::union_map<Domain, pair<Range, Range2>>(res);
46497 template <typename Domain, typename Range, typename Range2>
46498 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::project_out_param(const typed::id<Anonymous> &id) const
46500 auto res = isl::union_map::project_out_param(id);
46501 return typed::union_map<Domain, pair<Range, Range2>>(res);
46504 template <typename Domain, typename Range, typename Range2>
46505 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::project_out_param(const std::string &id) const
46507 auto res = isl::union_map::project_out_param(id);
46508 return typed::union_map<Domain, pair<Range, Range2>>(res);
46511 template <typename Domain, typename Range, typename Range2>
46512 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::project_out_param(const typed::id_list<Anonymous> &list) const
46514 auto res = isl::union_map::project_out_param(list);
46515 return typed::union_map<Domain, pair<Range, Range2>>(res);
46518 template <typename Domain, typename Range, typename Range2>
46519 typed::union_set<pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::range() const
46521 auto res = isl::union_map::range();
46522 return typed::union_set<pair<Range, Range2>>(res);
46525 template <typename Domain, typename Range, typename Range2>
46526 typed::union_map<Domain, Range> typed::union_map<Domain, pair<Range, Range2>>::range_factor_domain() const
46528 auto res = isl::union_map::range_factor_domain();
46529 return typed::union_map<Domain, Range>(res);
46532 template <typename Domain, typename Range, typename Range2>
46533 typed::union_map<Domain, Range2> typed::union_map<Domain, pair<Range, Range2>>::range_factor_range() const
46535 auto res = isl::union_map::range_factor_range();
46536 return typed::union_map<Domain, Range2>(res);
46539 template <typename Domain, typename Range, typename Range2>
46540 typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::range_map() const
46542 auto res = isl::union_map::range_map();
46543 return typed::union_map<pair<Domain, pair<Range, Range2>>, pair<Range, Range2>>(res);
46546 template <typename Domain, typename Range, typename Range2>
46547 template <typename Arg3>
46548 typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::range_product(const typed::union_map<Domain, Arg3> &umap2) const
46550 auto res = isl::union_map::range_product(umap2);
46551 return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
46554 template <typename Domain, typename Range, typename Range2>
46555 template <typename Arg3>
46556 typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::range_product(const typed::basic_map<Domain, Arg3> &umap2) const
46558 auto res = isl::union_map::range_product(umap2);
46559 return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
46562 template <typename Domain, typename Range, typename Range2>
46563 template <typename Arg3>
46564 typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_map<Domain, pair<Range, Range2>>::range_product(const typed::map<Domain, Arg3> &umap2) const
46566 auto res = isl::union_map::range_product(umap2);
46567 return typed::union_map<Domain, pair<pair<Range, Range2>, Arg3>>(res);
46570 template <typename Domain, typename Range, typename Range2>
46571 typed::union_map<Domain, pair<Range2, Range>> typed::union_map<Domain, pair<Range, Range2>>::range_reverse() const
46573 auto res = isl::union_map::range_reverse();
46574 return typed::union_map<Domain, pair<Range2, Range>>(res);
46577 template <typename Domain, typename Range, typename Range2>
46578 typed::union_map<pair<Range, Range2>, Domain> typed::union_map<Domain, pair<Range, Range2>>::reverse() const
46580 auto res = isl::union_map::reverse();
46581 return typed::union_map<pair<Range, Range2>, Domain>(res);
46584 template <typename Domain, typename Range, typename Range2>
46585 typed::space<> typed::union_map<Domain, pair<Range, Range2>>::space() const
46587 auto res = isl::union_map::space();
46588 return typed::space<>(res);
46591 template <typename Domain, typename Range, typename Range2>
46592 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
46594 auto res = isl::union_map::subtract(umap2);
46595 return typed::union_map<Domain, pair<Range, Range2>>(res);
46598 template <typename Domain, typename Range, typename Range2>
46599 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const
46601 auto res = isl::union_map::subtract(umap2);
46602 return typed::union_map<Domain, pair<Range, Range2>>(res);
46605 template <typename Domain, typename Range, typename Range2>
46606 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract(const typed::map<Domain, pair<Range, Range2>> &umap2) const
46608 auto res = isl::union_map::subtract(umap2);
46609 return typed::union_map<Domain, pair<Range, Range2>>(res);
46612 template <typename Domain, typename Range, typename Range2>
46613 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &dom) const
46615 auto res = isl::union_map::subtract_domain(dom);
46616 return typed::union_map<Domain, pair<Range, Range2>>(res);
46619 template <typename Domain, typename Range, typename Range2>
46620 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::basic_set<Domain> &dom) const
46622 auto res = isl::union_map::subtract_domain(dom);
46623 return typed::union_map<Domain, pair<Range, Range2>>(res);
46626 template <typename Domain, typename Range, typename Range2>
46627 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::point<Domain> &dom) const
46629 auto res = isl::union_map::subtract_domain(dom);
46630 return typed::union_map<Domain, pair<Range, Range2>>(res);
46633 template <typename Domain, typename Range, typename Range2>
46634 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_domain(const typed::set<Domain> &dom) const
46636 auto res = isl::union_map::subtract_domain(dom);
46637 return typed::union_map<Domain, pair<Range, Range2>>(res);
46640 template <typename Domain, typename Range, typename Range2>
46641 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
46643 auto res = isl::union_map::subtract_range(dom);
46644 return typed::union_map<Domain, pair<Range, Range2>>(res);
46647 template <typename Domain, typename Range, typename Range2>
46648 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const
46650 auto res = isl::union_map::subtract_range(dom);
46651 return typed::union_map<Domain, pair<Range, Range2>>(res);
46654 template <typename Domain, typename Range, typename Range2>
46655 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::point<pair<Range, Range2>> &dom) const
46657 auto res = isl::union_map::subtract_range(dom);
46658 return typed::union_map<Domain, pair<Range, Range2>>(res);
46661 template <typename Domain, typename Range, typename Range2>
46662 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::subtract_range(const typed::set<pair<Range, Range2>> &dom) const
46664 auto res = isl::union_map::subtract_range(dom);
46665 return typed::union_map<Domain, pair<Range, Range2>>(res);
46668 template <typename Domain, typename Range, typename Range2>
46669 typed::union_map<pair<Domain, Range>, Range2> typed::union_map<Domain, pair<Range, Range2>>::uncurry() const
46671 auto res = isl::union_map::uncurry();
46672 return typed::union_map<pair<Domain, Range>, Range2>(res);
46675 template <typename Domain, typename Range, typename Range2>
46676 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::unite(const typed::union_map<Domain, pair<Range, Range2>> &umap2) const
46678 auto res = isl::union_map::unite(umap2);
46679 return typed::union_map<Domain, pair<Range, Range2>>(res);
46682 template <typename Domain, typename Range, typename Range2>
46683 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::unite(const typed::basic_map<Domain, pair<Range, Range2>> &umap2) const
46685 auto res = isl::union_map::unite(umap2);
46686 return typed::union_map<Domain, pair<Range, Range2>>(res);
46689 template <typename Domain, typename Range, typename Range2>
46690 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::unite(const typed::map<Domain, pair<Range, Range2>> &umap2) const
46692 auto res = isl::union_map::unite(umap2);
46693 return typed::union_map<Domain, pair<Range, Range2>>(res);
46696 template <typename Domain, typename Range, typename Range2>
46697 typed::union_map<Domain, pair<Range, Range2>> typed::union_map<Domain, pair<Range, Range2>>::universe() const
46699 auto res = isl::union_map::universe();
46700 return typed::union_map<Domain, pair<Range, Range2>>(res);
46703 template <typename Domain, typename Range, typename Range2>
46704 typed::union_set<pair<Domain, pair<Range, Range2>>> typed::union_map<Domain, pair<Range, Range2>>::wrap() const
46706 auto res = isl::union_map::wrap();
46707 return typed::union_set<pair<Domain, pair<Range, Range2>>>(res);
46710 template <typename T1, typename T2>
46711 typed::union_map<pair<T1, T2>, pair<T1, T2>>::union_map(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &bmap)
46712 : isl::union_map(bmap)
46716 template <typename T1, typename T2>
46717 typed::union_map<pair<T1, T2>, pair<T1, T2>>::union_map(const typed::map<pair<T1, T2>, pair<T1, T2>> &map)
46718 : isl::union_map(map)
46722 template <typename T1, typename T2>
46723 typed::union_map<pair<T1, T2>, pair<T1, T2>>::union_map(const isl::ctx &ctx, const std::string &str)
46724 : isl::union_map(ctx, str)
46728 template <typename T1, typename T2>
46729 template <typename Domain2>
46730 typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
46732 auto res = isl::union_map::apply_domain(umap2);
46733 return typed::union_map<Domain2, pair<T1, T2>>(res);
46736 template <typename T1, typename T2>
46737 template <typename Domain2>
46738 typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const
46740 auto res = isl::union_map::apply_domain(umap2);
46741 return typed::union_map<Domain2, pair<T1, T2>>(res);
46744 template <typename T1, typename T2>
46745 template <typename Domain2>
46746 typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const
46748 auto res = isl::union_map::apply_domain(umap2);
46749 return typed::union_map<Domain2, pair<T1, T2>>(res);
46752 template <typename T1, typename T2>
46753 template <typename Range2>
46754 typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
46756 auto res = isl::union_map::apply_range(umap2);
46757 return typed::union_map<pair<T1, T2>, Range2>(res);
46760 template <typename T1, typename T2>
46761 template <typename Range2>
46762 typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const
46764 auto res = isl::union_map::apply_range(umap2);
46765 return typed::union_map<pair<T1, T2>, Range2>(res);
46768 template <typename T1, typename T2>
46769 template <typename Range2>
46770 typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::apply_range(const typed::map<pair<T1, T2>, Range2> &umap2) const
46772 auto res = isl::union_map::apply_range(umap2);
46773 return typed::union_map<pair<T1, T2>, Range2>(res);
46776 template <typename T1, typename T2>
46777 typed::map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::as_map() const
46779 auto res = isl::union_map::as_map();
46780 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
46783 template <typename T1, typename T2>
46784 typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::as_multi_union_pw_aff() const
46786 auto res = isl::union_map::as_multi_union_pw_aff();
46787 return typed::multi_union_pw_aff<pair<T1, T2>, pair<T1, T2>>(res);
46790 template <typename T1, typename T2>
46791 typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::as_union_pw_multi_aff() const
46793 auto res = isl::union_map::as_union_pw_multi_aff();
46794 return typed::union_pw_multi_aff<pair<T1, T2>, pair<T1, T2>>(res);
46797 template <typename T1, typename T2>
46798 typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::bind_range(const typed::multi_id<pair<T1, T2>> &tuple) const
46800 auto res = isl::union_map::bind_range(tuple);
46801 return typed::union_set<pair<T1, T2>>(res);
46804 template <typename T1, typename T2>
46805 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::coalesce() const
46807 auto res = isl::union_map::coalesce();
46808 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46811 template <typename T1, typename T2>
46812 typed::union_map<T1, pair<T2, pair<T1, T2>>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::curry() const
46814 auto res = isl::union_map::curry();
46815 return typed::union_map<T1, pair<T2, pair<T1, T2>>>(res);
46818 template <typename T1, typename T2>
46819 typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::deltas() const
46821 auto res = isl::union_map::deltas();
46822 return typed::union_set<pair<T1, T2>>(res);
46825 template <typename T1, typename T2>
46826 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::detect_equalities() const
46828 auto res = isl::union_map::detect_equalities();
46829 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46832 template <typename T1, typename T2>
46833 typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain() const
46835 auto res = isl::union_map::domain();
46836 return typed::union_set<pair<T1, T2>>(res);
46839 template <typename T1, typename T2>
46840 typed::union_map<T1, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_domain() const
46842 auto res = isl::union_map::domain_factor_domain();
46843 return typed::union_map<T1, pair<T1, T2>>(res);
46846 template <typename T1, typename T2>
46847 typed::union_map<T2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_factor_range() const
46849 auto res = isl::union_map::domain_factor_range();
46850 return typed::union_map<T2, pair<T1, T2>>(res);
46853 template <typename T1, typename T2>
46854 typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_map() const
46856 auto res = isl::union_map::domain_map();
46857 return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
46860 template <typename T1, typename T2>
46861 typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_map_union_pw_multi_aff() const
46863 auto res = isl::union_map::domain_map_union_pw_multi_aff();
46864 return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
46867 template <typename T1, typename T2>
46868 template <typename Domain2>
46869 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::union_map<Domain2, pair<T1, T2>> &umap2) const
46871 auto res = isl::union_map::domain_product(umap2);
46872 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
46875 template <typename T1, typename T2>
46876 template <typename Domain2>
46877 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::basic_map<Domain2, pair<T1, T2>> &umap2) const
46879 auto res = isl::union_map::domain_product(umap2);
46880 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
46883 template <typename T1, typename T2>
46884 template <typename Domain2>
46885 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_product(const typed::map<Domain2, pair<T1, T2>> &umap2) const
46887 auto res = isl::union_map::domain_product(umap2);
46888 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<T1, T2>>(res);
46891 template <typename T1, typename T2>
46892 typed::union_map<pair<T2, T1>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::domain_reverse() const
46894 auto res = isl::union_map::domain_reverse();
46895 return typed::union_map<pair<T2, T1>, pair<T1, T2>>(res);
46898 template <typename T1, typename T2>
46899 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::drop_unused_params() const
46901 auto res = isl::union_map::drop_unused_params();
46902 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46905 template <typename T1, typename T2>
46906 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::empty(const isl::ctx &ctx)
46908 auto res = isl::union_map::empty(ctx);
46909 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46912 template <typename T1, typename T2>
46913 template <typename Range>
46914 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_union_pw_aff<pair<T1, T2>, Range> &mupa) const
46916 auto res = isl::union_map::eq_at(mupa);
46917 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46920 template <typename T1, typename T2>
46921 template <typename Range>
46922 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::multi_pw_aff<pair<T1, T2>, Range> &mupa) const
46924 auto res = isl::union_map::eq_at(mupa);
46925 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46928 template <typename T1, typename T2>
46929 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::eq_at(const typed::union_pw_aff<pair<T1, T2>, Anonymous> &mupa) const
46931 auto res = isl::union_map::eq_at(mupa);
46932 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46935 template <typename T1, typename T2>
46936 bool typed::union_map<pair<T1, T2>, pair<T1, T2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<T1, T2>>)> &test) const
46938 auto lambda_test = [&] (isl::map arg0) {
46939 return test(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
46941 return isl::union_map::every_map(lambda_test);
46944 template <typename T1, typename T2>
46945 typed::map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::extract_map(const typed::space<pair<T1, T2>, pair<T1, T2>> &space) const
46947 auto res = isl::union_map::extract_map(space);
46948 return typed::map<pair<T1, T2>, pair<T1, T2>>(res);
46951 template <typename T1, typename T2>
46952 void typed::union_map<pair<T1, T2>, pair<T1, T2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<T1, T2>>)> &fn) const
46954 auto lambda_fn = [&] (isl::map arg0) {
46955 return fn(typed::map<pair<T1, T2>, pair<T1, T2>>(arg0));
46957 return isl::union_map::foreach_map(lambda_fn);
46960 template <typename T1, typename T2>
46961 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &context) const
46963 auto res = isl::union_map::gist(context);
46964 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46967 template <typename T1, typename T2>
46968 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &context) const
46970 auto res = isl::union_map::gist(context);
46971 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46974 template <typename T1, typename T2>
46975 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist(const typed::map<pair<T1, T2>, pair<T1, T2>> &context) const
46977 auto res = isl::union_map::gist(context);
46978 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46981 template <typename T1, typename T2>
46982 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
46984 auto res = isl::union_map::gist_domain(uset);
46985 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46988 template <typename T1, typename T2>
46989 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const
46991 auto res = isl::union_map::gist_domain(uset);
46992 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
46995 template <typename T1, typename T2>
46996 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::point<pair<T1, T2>> &uset) const
46998 auto res = isl::union_map::gist_domain(uset);
46999 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47002 template <typename T1, typename T2>
47003 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_domain(const typed::set<pair<T1, T2>> &uset) const
47005 auto res = isl::union_map::gist_domain(uset);
47006 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47009 template <typename T1, typename T2>
47010 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_params(const typed::set<> &set) const
47012 auto res = isl::union_map::gist_params(set);
47013 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47016 template <typename T1, typename T2>
47017 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_params(const typed::basic_set<> &set) const
47019 auto res = isl::union_map::gist_params(set);
47020 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47023 template <typename T1, typename T2>
47024 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::gist_params(const typed::point<> &set) const
47026 auto res = isl::union_map::gist_params(set);
47027 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47030 template <typename T1, typename T2>
47031 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47033 auto res = isl::union_map::intersect(umap2);
47034 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47037 template <typename T1, typename T2>
47038 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47040 auto res = isl::union_map::intersect(umap2);
47041 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47044 template <typename T1, typename T2>
47045 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47047 auto res = isl::union_map::intersect(umap2);
47048 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47051 template <typename T1, typename T2>
47052 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
47054 auto res = isl::union_map::intersect_domain(space);
47055 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47058 template <typename T1, typename T2>
47059 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
47061 auto res = isl::union_map::intersect_domain(uset);
47062 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47065 template <typename T1, typename T2>
47066 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const
47068 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47069 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47072 template <typename T1, typename T2>
47073 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const
47075 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47076 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47079 template <typename T1, typename T2>
47080 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::point<T1> &domain) const
47082 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47083 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47086 template <typename T1, typename T2>
47087 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_domain_wrapped_domain(const typed::set<T1> &domain) const
47089 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47090 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47093 template <typename T1, typename T2>
47094 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::set<> &set) const
47096 auto res = isl::union_map::intersect_params(set);
47097 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47100 template <typename T1, typename T2>
47101 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::basic_set<> &set) const
47103 auto res = isl::union_map::intersect_params(set);
47104 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47107 template <typename T1, typename T2>
47108 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_params(const typed::point<> &set) const
47110 auto res = isl::union_map::intersect_params(set);
47111 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47114 template <typename T1, typename T2>
47115 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::space<pair<T1, T2>> &space) const
47117 auto res = isl::union_map::intersect_range(space);
47118 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47121 template <typename T1, typename T2>
47122 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range(const typed::union_set<pair<T1, T2>> &uset) const
47124 auto res = isl::union_map::intersect_range(uset);
47125 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47128 template <typename T1, typename T2>
47129 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::union_set<T1> &domain) const
47131 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47132 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47135 template <typename T1, typename T2>
47136 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::basic_set<T1> &domain) const
47138 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47139 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47142 template <typename T1, typename T2>
47143 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::point<T1> &domain) const
47145 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47146 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47149 template <typename T1, typename T2>
47150 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::intersect_range_wrapped_domain(const typed::set<T1> &domain) const
47152 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47153 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47156 template <typename T1, typename T2>
47157 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::lexmax() const
47159 auto res = isl::union_map::lexmax();
47160 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47163 template <typename T1, typename T2>
47164 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::lexmin() const
47166 auto res = isl::union_map::lexmin();
47167 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47170 template <typename T1, typename T2>
47171 typed::map_list<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::map_list() const
47173 auto res = isl::union_map::map_list();
47174 return typed::map_list<pair<T1, T2>, pair<T1, T2>>(res);
47177 template <typename T1, typename T2>
47178 typed::set<> typed::union_map<pair<T1, T2>, pair<T1, T2>>::params() const
47180 auto res = isl::union_map::params();
47181 return typed::set<>(res);
47184 template <typename T1, typename T2>
47185 template <typename Domain2>
47186 typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
47188 auto res = isl::union_map::preimage_domain(ma);
47189 return typed::union_map<Domain2, pair<T1, T2>>(res);
47192 template <typename T1, typename T2>
47193 template <typename Domain2>
47194 typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
47196 auto res = isl::union_map::preimage_domain(mpa);
47197 return typed::union_map<Domain2, pair<T1, T2>>(res);
47200 template <typename T1, typename T2>
47201 template <typename Domain2>
47202 typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
47204 auto res = isl::union_map::preimage_domain(pma);
47205 return typed::union_map<Domain2, pair<T1, T2>>(res);
47208 template <typename T1, typename T2>
47209 template <typename Domain2>
47210 typed::union_map<Domain2, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
47212 auto res = isl::union_map::preimage_domain(upma);
47213 return typed::union_map<Domain2, pair<T1, T2>>(res);
47216 template <typename T1, typename T2>
47217 template <typename Range2>
47218 typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::multi_aff<Range2, pair<T1, T2>> &ma) const
47220 auto res = isl::union_map::preimage_range(ma);
47221 return typed::union_map<pair<T1, T2>, Range2>(res);
47224 template <typename T1, typename T2>
47225 template <typename Range2>
47226 typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::pw_multi_aff<Range2, pair<T1, T2>> &pma) const
47228 auto res = isl::union_map::preimage_range(pma);
47229 return typed::union_map<pair<T1, T2>, Range2>(res);
47232 template <typename T1, typename T2>
47233 template <typename Range2>
47234 typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::preimage_range(const typed::union_pw_multi_aff<Range2, pair<T1, T2>> &upma) const
47236 auto res = isl::union_map::preimage_range(upma);
47237 return typed::union_map<pair<T1, T2>, Range2>(res);
47240 template <typename T1, typename T2>
47241 template <typename Domain2, typename Range2>
47242 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::union_map<Domain2, Range2> &umap2) const
47244 auto res = isl::union_map::product(umap2);
47245 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
47248 template <typename T1, typename T2>
47249 template <typename Domain2, typename Range2>
47250 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::basic_map<Domain2, Range2> &umap2) const
47252 auto res = isl::union_map::product(umap2);
47253 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
47256 template <typename T1, typename T2>
47257 template <typename Domain2, typename Range2>
47258 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::product(const typed::map<Domain2, Range2> &umap2) const
47260 auto res = isl::union_map::product(umap2);
47261 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<T1, T2>, Range2>>(res);
47264 template <typename T1, typename T2>
47265 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::project_out_all_params() const
47267 auto res = isl::union_map::project_out_all_params();
47268 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47271 template <typename T1, typename T2>
47272 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const typed::id<Anonymous> &id) const
47274 auto res = isl::union_map::project_out_param(id);
47275 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47278 template <typename T1, typename T2>
47279 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const std::string &id) const
47281 auto res = isl::union_map::project_out_param(id);
47282 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47285 template <typename T1, typename T2>
47286 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::project_out_param(const typed::id_list<Anonymous> &list) const
47288 auto res = isl::union_map::project_out_param(list);
47289 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47292 template <typename T1, typename T2>
47293 typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range() const
47295 auto res = isl::union_map::range();
47296 return typed::union_set<pair<T1, T2>>(res);
47299 template <typename T1, typename T2>
47300 typed::union_map<pair<T1, T2>, T1> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_factor_domain() const
47302 auto res = isl::union_map::range_factor_domain();
47303 return typed::union_map<pair<T1, T2>, T1>(res);
47306 template <typename T1, typename T2>
47307 typed::union_map<pair<T1, T2>, T2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_factor_range() const
47309 auto res = isl::union_map::range_factor_range();
47310 return typed::union_map<pair<T1, T2>, T2>(res);
47313 template <typename T1, typename T2>
47314 typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_map() const
47316 auto res = isl::union_map::range_map();
47317 return typed::union_map<pair<pair<T1, T2>, pair<T1, T2>>, pair<T1, T2>>(res);
47320 template <typename T1, typename T2>
47321 template <typename Range2>
47322 typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::union_map<pair<T1, T2>, Range2> &umap2) const
47324 auto res = isl::union_map::range_product(umap2);
47325 return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
47328 template <typename T1, typename T2>
47329 template <typename Range2>
47330 typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::basic_map<pair<T1, T2>, Range2> &umap2) const
47332 auto res = isl::union_map::range_product(umap2);
47333 return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
47336 template <typename T1, typename T2>
47337 template <typename Range2>
47338 typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_product(const typed::map<pair<T1, T2>, Range2> &umap2) const
47340 auto res = isl::union_map::range_product(umap2);
47341 return typed::union_map<pair<T1, T2>, pair<pair<T1, T2>, Range2>>(res);
47344 template <typename T1, typename T2>
47345 typed::union_map<pair<T1, T2>, pair<T2, T1>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::range_reverse() const
47347 auto res = isl::union_map::range_reverse();
47348 return typed::union_map<pair<T1, T2>, pair<T2, T1>>(res);
47351 template <typename T1, typename T2>
47352 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::reverse() const
47354 auto res = isl::union_map::reverse();
47355 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47358 template <typename T1, typename T2>
47359 typed::space<> typed::union_map<pair<T1, T2>, pair<T1, T2>>::space() const
47361 auto res = isl::union_map::space();
47362 return typed::space<>(res);
47365 template <typename T1, typename T2>
47366 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47368 auto res = isl::union_map::subtract(umap2);
47369 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47372 template <typename T1, typename T2>
47373 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47375 auto res = isl::union_map::subtract(umap2);
47376 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47379 template <typename T1, typename T2>
47380 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47382 auto res = isl::union_map::subtract(umap2);
47383 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47386 template <typename T1, typename T2>
47387 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
47389 auto res = isl::union_map::subtract_domain(dom);
47390 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47393 template <typename T1, typename T2>
47394 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const
47396 auto res = isl::union_map::subtract_domain(dom);
47397 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47400 template <typename T1, typename T2>
47401 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::point<pair<T1, T2>> &dom) const
47403 auto res = isl::union_map::subtract_domain(dom);
47404 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47407 template <typename T1, typename T2>
47408 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_domain(const typed::set<pair<T1, T2>> &dom) const
47410 auto res = isl::union_map::subtract_domain(dom);
47411 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47414 template <typename T1, typename T2>
47415 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::union_set<pair<T1, T2>> &dom) const
47417 auto res = isl::union_map::subtract_range(dom);
47418 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47421 template <typename T1, typename T2>
47422 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::basic_set<pair<T1, T2>> &dom) const
47424 auto res = isl::union_map::subtract_range(dom);
47425 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47428 template <typename T1, typename T2>
47429 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::point<pair<T1, T2>> &dom) const
47431 auto res = isl::union_map::subtract_range(dom);
47432 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47435 template <typename T1, typename T2>
47436 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::subtract_range(const typed::set<pair<T1, T2>> &dom) const
47438 auto res = isl::union_map::subtract_range(dom);
47439 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47442 template <typename T1, typename T2>
47443 typed::union_map<pair<pair<T1, T2>, T1>, T2> typed::union_map<pair<T1, T2>, pair<T1, T2>>::uncurry() const
47445 auto res = isl::union_map::uncurry();
47446 return typed::union_map<pair<pair<T1, T2>, T1>, T2>(res);
47449 template <typename T1, typename T2>
47450 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::union_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47452 auto res = isl::union_map::unite(umap2);
47453 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47456 template <typename T1, typename T2>
47457 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::basic_map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47459 auto res = isl::union_map::unite(umap2);
47460 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47463 template <typename T1, typename T2>
47464 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::unite(const typed::map<pair<T1, T2>, pair<T1, T2>> &umap2) const
47466 auto res = isl::union_map::unite(umap2);
47467 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47470 template <typename T1, typename T2>
47471 typed::union_map<pair<T1, T2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::universe() const
47473 auto res = isl::union_map::universe();
47474 return typed::union_map<pair<T1, T2>, pair<T1, T2>>(res);
47477 template <typename T1, typename T2>
47478 typed::union_set<pair<pair<T1, T2>, pair<T1, T2>>> typed::union_map<pair<T1, T2>, pair<T1, T2>>::wrap() const
47480 auto res = isl::union_map::wrap();
47481 return typed::union_set<pair<pair<T1, T2>, pair<T1, T2>>>(res);
47484 template <typename T1, typename T2, typename Range, typename Range2>
47485 typed::union_map<pair<T1, T2>, pair<Range, Range2>>::union_map(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &bmap)
47486 : isl::union_map(bmap)
47490 template <typename T1, typename T2, typename Range, typename Range2>
47491 typed::union_map<pair<T1, T2>, pair<Range, Range2>>::union_map(const typed::map<pair<T1, T2>, pair<Range, Range2>> &map)
47492 : isl::union_map(map)
47496 template <typename T1, typename T2, typename Range, typename Range2>
47497 typed::union_map<pair<T1, T2>, pair<Range, Range2>>::union_map(const isl::ctx &ctx, const std::string &str)
47498 : isl::union_map(ctx, str)
47502 template <typename T1, typename T2, typename Range, typename Range2>
47503 template <typename Domain2>
47504 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::union_map<pair<T1, T2>, Domain2> &umap2) const
47506 auto res = isl::union_map::apply_domain(umap2);
47507 return typed::union_map<Domain2, pair<Range, Range2>>(res);
47510 template <typename T1, typename T2, typename Range, typename Range2>
47511 template <typename Domain2>
47512 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::basic_map<pair<T1, T2>, Domain2> &umap2) const
47514 auto res = isl::union_map::apply_domain(umap2);
47515 return typed::union_map<Domain2, pair<Range, Range2>>(res);
47518 template <typename T1, typename T2, typename Range, typename Range2>
47519 template <typename Domain2>
47520 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_domain(const typed::map<pair<T1, T2>, Domain2> &umap2) const
47522 auto res = isl::union_map::apply_domain(umap2);
47523 return typed::union_map<Domain2, pair<Range, Range2>>(res);
47526 template <typename T1, typename T2, typename Range, typename Range2>
47527 template <typename Arg2>
47528 typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::union_map<pair<Range, Range2>, Arg2> &umap2) const
47530 auto res = isl::union_map::apply_range(umap2);
47531 return typed::union_map<pair<T1, T2>, Arg2>(res);
47534 template <typename T1, typename T2, typename Range, typename Range2>
47535 template <typename Arg2>
47536 typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::basic_map<pair<Range, Range2>, Arg2> &umap2) const
47538 auto res = isl::union_map::apply_range(umap2);
47539 return typed::union_map<pair<T1, T2>, Arg2>(res);
47542 template <typename T1, typename T2, typename Range, typename Range2>
47543 template <typename Arg2>
47544 typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::apply_range(const typed::map<pair<Range, Range2>, Arg2> &umap2) const
47546 auto res = isl::union_map::apply_range(umap2);
47547 return typed::union_map<pair<T1, T2>, Arg2>(res);
47550 template <typename T1, typename T2, typename Range, typename Range2>
47551 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::as_map() const
47553 auto res = isl::union_map::as_map();
47554 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
47557 template <typename T1, typename T2, typename Range, typename Range2>
47558 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
47560 auto res = isl::union_map::as_multi_union_pw_aff();
47561 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
47564 template <typename T1, typename T2, typename Range, typename Range2>
47565 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::as_union_pw_multi_aff() const
47567 auto res = isl::union_map::as_union_pw_multi_aff();
47568 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
47571 template <typename T1, typename T2, typename Range, typename Range2>
47572 typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::bind_range(const typed::multi_id<pair<Range, Range2>> &tuple) const
47574 auto res = isl::union_map::bind_range(tuple);
47575 return typed::union_set<pair<T1, T2>>(res);
47578 template <typename T1, typename T2, typename Range, typename Range2>
47579 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
47581 auto res = isl::union_map::coalesce();
47582 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47585 template <typename T1, typename T2, typename Range, typename Range2>
47586 typed::union_map<T1, pair<T2, pair<Range, Range2>>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::curry() const
47588 auto res = isl::union_map::curry();
47589 return typed::union_map<T1, pair<T2, pair<Range, Range2>>>(res);
47592 template <typename T1, typename T2, typename Range, typename Range2>
47593 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::detect_equalities() const
47595 auto res = isl::union_map::detect_equalities();
47596 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47599 template <typename T1, typename T2, typename Range, typename Range2>
47600 typed::union_set<pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain() const
47602 auto res = isl::union_map::domain();
47603 return typed::union_set<pair<T1, T2>>(res);
47606 template <typename T1, typename T2, typename Range, typename Range2>
47607 typed::union_map<T1, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_domain() const
47609 auto res = isl::union_map::domain_factor_domain();
47610 return typed::union_map<T1, pair<Range, Range2>>(res);
47613 template <typename T1, typename T2, typename Range, typename Range2>
47614 typed::union_map<T2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_factor_range() const
47616 auto res = isl::union_map::domain_factor_range();
47617 return typed::union_map<T2, pair<Range, Range2>>(res);
47620 template <typename T1, typename T2, typename Range, typename Range2>
47621 typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_map() const
47623 auto res = isl::union_map::domain_map();
47624 return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
47627 template <typename T1, typename T2, typename Range, typename Range2>
47628 typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_map_union_pw_multi_aff() const
47630 auto res = isl::union_map::domain_map_union_pw_multi_aff();
47631 return typed::union_pw_multi_aff<pair<pair<T1, T2>, pair<Range, Range2>>, pair<T1, T2>>(res);
47634 template <typename T1, typename T2, typename Range, typename Range2>
47635 template <typename Domain2>
47636 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::union_map<Domain2, pair<Range, Range2>> &umap2) const
47638 auto res = isl::union_map::domain_product(umap2);
47639 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
47642 template <typename T1, typename T2, typename Range, typename Range2>
47643 template <typename Domain2>
47644 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::basic_map<Domain2, pair<Range, Range2>> &umap2) const
47646 auto res = isl::union_map::domain_product(umap2);
47647 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
47650 template <typename T1, typename T2, typename Range, typename Range2>
47651 template <typename Domain2>
47652 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_product(const typed::map<Domain2, pair<Range, Range2>> &umap2) const
47654 auto res = isl::union_map::domain_product(umap2);
47655 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<Range, Range2>>(res);
47658 template <typename T1, typename T2, typename Range, typename Range2>
47659 typed::union_map<pair<T2, T1>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::domain_reverse() const
47661 auto res = isl::union_map::domain_reverse();
47662 return typed::union_map<pair<T2, T1>, pair<Range, Range2>>(res);
47665 template <typename T1, typename T2, typename Range, typename Range2>
47666 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::drop_unused_params() const
47668 auto res = isl::union_map::drop_unused_params();
47669 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47672 template <typename T1, typename T2, typename Range, typename Range2>
47673 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::empty(const isl::ctx &ctx)
47675 auto res = isl::union_map::empty(ctx);
47676 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47679 template <typename T1, typename T2, typename Range, typename Range2>
47680 bool typed::union_map<pair<T1, T2>, pair<Range, Range2>>::every_map(const std::function<bool(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &test) const
47682 auto lambda_test = [&] (isl::map arg0) {
47683 return test(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
47685 return isl::union_map::every_map(lambda_test);
47688 template <typename T1, typename T2, typename Range, typename Range2>
47689 typed::map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::extract_map(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
47691 auto res = isl::union_map::extract_map(space);
47692 return typed::map<pair<T1, T2>, pair<Range, Range2>>(res);
47695 template <typename T1, typename T2, typename Range, typename Range2>
47696 void typed::union_map<pair<T1, T2>, pair<Range, Range2>>::foreach_map(const std::function<void(typed::map<pair<T1, T2>, pair<Range, Range2>>)> &fn) const
47698 auto lambda_fn = [&] (isl::map arg0) {
47699 return fn(typed::map<pair<T1, T2>, pair<Range, Range2>>(arg0));
47701 return isl::union_map::foreach_map(lambda_fn);
47704 template <typename T1, typename T2, typename Range, typename Range2>
47705 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &context) const
47707 auto res = isl::union_map::gist(context);
47708 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47711 template <typename T1, typename T2, typename Range, typename Range2>
47712 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &context) const
47714 auto res = isl::union_map::gist(context);
47715 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47718 template <typename T1, typename T2, typename Range, typename Range2>
47719 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::map<pair<T1, T2>, pair<Range, Range2>> &context) const
47721 auto res = isl::union_map::gist(context);
47722 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47725 template <typename T1, typename T2, typename Range, typename Range2>
47726 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::union_set<pair<T1, T2>> &uset) const
47728 auto res = isl::union_map::gist_domain(uset);
47729 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47732 template <typename T1, typename T2, typename Range, typename Range2>
47733 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::basic_set<pair<T1, T2>> &uset) const
47735 auto res = isl::union_map::gist_domain(uset);
47736 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47739 template <typename T1, typename T2, typename Range, typename Range2>
47740 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::point<pair<T1, T2>> &uset) const
47742 auto res = isl::union_map::gist_domain(uset);
47743 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47746 template <typename T1, typename T2, typename Range, typename Range2>
47747 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_domain(const typed::set<pair<T1, T2>> &uset) const
47749 auto res = isl::union_map::gist_domain(uset);
47750 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47753 template <typename T1, typename T2, typename Range, typename Range2>
47754 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::set<> &set) const
47756 auto res = isl::union_map::gist_params(set);
47757 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47760 template <typename T1, typename T2, typename Range, typename Range2>
47761 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::basic_set<> &set) const
47763 auto res = isl::union_map::gist_params(set);
47764 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47767 template <typename T1, typename T2, typename Range, typename Range2>
47768 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::gist_params(const typed::point<> &set) const
47770 auto res = isl::union_map::gist_params(set);
47771 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47774 template <typename T1, typename T2, typename Range, typename Range2>
47775 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
47777 auto res = isl::union_map::intersect(umap2);
47778 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47781 template <typename T1, typename T2, typename Range, typename Range2>
47782 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
47784 auto res = isl::union_map::intersect(umap2);
47785 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47788 template <typename T1, typename T2, typename Range, typename Range2>
47789 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
47791 auto res = isl::union_map::intersect(umap2);
47792 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47795 template <typename T1, typename T2, typename Range, typename Range2>
47796 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
47798 auto res = isl::union_map::intersect_domain(space);
47799 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47802 template <typename T1, typename T2, typename Range, typename Range2>
47803 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
47805 auto res = isl::union_map::intersect_domain(uset);
47806 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47809 template <typename T1, typename T2, typename Range, typename Range2>
47810 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &domain) const
47812 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47813 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47816 template <typename T1, typename T2, typename Range, typename Range2>
47817 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::basic_set<T1> &domain) const
47819 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47820 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47823 template <typename T1, typename T2, typename Range, typename Range2>
47824 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::point<T1> &domain) const
47826 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47827 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47830 template <typename T1, typename T2, typename Range, typename Range2>
47831 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::set<T1> &domain) const
47833 auto res = isl::union_map::intersect_domain_wrapped_domain(domain);
47834 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47837 template <typename T1, typename T2, typename Range, typename Range2>
47838 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
47840 auto res = isl::union_map::intersect_params(set);
47841 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47844 template <typename T1, typename T2, typename Range, typename Range2>
47845 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
47847 auto res = isl::union_map::intersect_params(set);
47848 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47851 template <typename T1, typename T2, typename Range, typename Range2>
47852 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
47854 auto res = isl::union_map::intersect_params(set);
47855 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47858 template <typename T1, typename T2, typename Range, typename Range2>
47859 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::space<pair<Range, Range2>> &space) const
47861 auto res = isl::union_map::intersect_range(space);
47862 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47865 template <typename T1, typename T2, typename Range, typename Range2>
47866 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range(const typed::union_set<pair<Range, Range2>> &uset) const
47868 auto res = isl::union_map::intersect_range(uset);
47869 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47872 template <typename T1, typename T2, typename Range, typename Range2>
47873 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::union_set<Range> &domain) const
47875 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47876 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47879 template <typename T1, typename T2, typename Range, typename Range2>
47880 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::basic_set<Range> &domain) const
47882 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47883 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47886 template <typename T1, typename T2, typename Range, typename Range2>
47887 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::point<Range> &domain) const
47889 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47890 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47893 template <typename T1, typename T2, typename Range, typename Range2>
47894 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::intersect_range_wrapped_domain(const typed::set<Range> &domain) const
47896 auto res = isl::union_map::intersect_range_wrapped_domain(domain);
47897 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47900 template <typename T1, typename T2, typename Range, typename Range2>
47901 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::lexmax() const
47903 auto res = isl::union_map::lexmax();
47904 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47907 template <typename T1, typename T2, typename Range, typename Range2>
47908 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::lexmin() const
47910 auto res = isl::union_map::lexmin();
47911 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
47914 template <typename T1, typename T2, typename Range, typename Range2>
47915 typed::map_list<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::map_list() const
47917 auto res = isl::union_map::map_list();
47918 return typed::map_list<pair<T1, T2>, pair<Range, Range2>>(res);
47921 template <typename T1, typename T2, typename Range, typename Range2>
47922 typed::set<> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::params() const
47924 auto res = isl::union_map::params();
47925 return typed::set<>(res);
47928 template <typename T1, typename T2, typename Range, typename Range2>
47929 template <typename Domain2>
47930 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_aff<Domain2, pair<T1, T2>> &ma) const
47932 auto res = isl::union_map::preimage_domain(ma);
47933 return typed::union_map<Domain2, pair<Range, Range2>>(res);
47936 template <typename T1, typename T2, typename Range, typename Range2>
47937 template <typename Domain2>
47938 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::multi_pw_aff<Domain2, pair<T1, T2>> &mpa) const
47940 auto res = isl::union_map::preimage_domain(mpa);
47941 return typed::union_map<Domain2, pair<Range, Range2>>(res);
47944 template <typename T1, typename T2, typename Range, typename Range2>
47945 template <typename Domain2>
47946 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &pma) const
47948 auto res = isl::union_map::preimage_domain(pma);
47949 return typed::union_map<Domain2, pair<Range, Range2>>(res);
47952 template <typename T1, typename T2, typename Range, typename Range2>
47953 template <typename Domain2>
47954 typed::union_map<Domain2, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_domain(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma) const
47956 auto res = isl::union_map::preimage_domain(upma);
47957 return typed::union_map<Domain2, pair<Range, Range2>>(res);
47960 template <typename T1, typename T2, typename Range, typename Range2>
47961 template <typename Arg2>
47962 typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::multi_aff<Arg2, pair<Range, Range2>> &ma) const
47964 auto res = isl::union_map::preimage_range(ma);
47965 return typed::union_map<pair<T1, T2>, Arg2>(res);
47968 template <typename T1, typename T2, typename Range, typename Range2>
47969 template <typename Arg2>
47970 typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::pw_multi_aff<Arg2, pair<Range, Range2>> &pma) const
47972 auto res = isl::union_map::preimage_range(pma);
47973 return typed::union_map<pair<T1, T2>, Arg2>(res);
47976 template <typename T1, typename T2, typename Range, typename Range2>
47977 template <typename Arg2>
47978 typed::union_map<pair<T1, T2>, Arg2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::preimage_range(const typed::union_pw_multi_aff<Arg2, pair<Range, Range2>> &upma) const
47980 auto res = isl::union_map::preimage_range(upma);
47981 return typed::union_map<pair<T1, T2>, Arg2>(res);
47984 template <typename T1, typename T2, typename Range, typename Range2>
47985 template <typename Domain2, typename Arg2>
47986 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::union_map<Domain2, Arg2> &umap2) const
47988 auto res = isl::union_map::product(umap2);
47989 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
47992 template <typename T1, typename T2, typename Range, typename Range2>
47993 template <typename Domain2, typename Arg2>
47994 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::basic_map<Domain2, Arg2> &umap2) const
47996 auto res = isl::union_map::product(umap2);
47997 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
48000 template <typename T1, typename T2, typename Range, typename Range2>
48001 template <typename Domain2, typename Arg2>
48002 typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::product(const typed::map<Domain2, Arg2> &umap2) const
48004 auto res = isl::union_map::product(umap2);
48005 return typed::union_map<pair<pair<T1, T2>, Domain2>, pair<pair<Range, Range2>, Arg2>>(res);
48008 template <typename T1, typename T2, typename Range, typename Range2>
48009 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::project_out_all_params() const
48011 auto res = isl::union_map::project_out_all_params();
48012 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48015 template <typename T1, typename T2, typename Range, typename Range2>
48016 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const typed::id<Anonymous> &id) const
48018 auto res = isl::union_map::project_out_param(id);
48019 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48022 template <typename T1, typename T2, typename Range, typename Range2>
48023 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const std::string &id) const
48025 auto res = isl::union_map::project_out_param(id);
48026 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48029 template <typename T1, typename T2, typename Range, typename Range2>
48030 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::project_out_param(const typed::id_list<Anonymous> &list) const
48032 auto res = isl::union_map::project_out_param(list);
48033 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48036 template <typename T1, typename T2, typename Range, typename Range2>
48037 typed::union_set<pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range() const
48039 auto res = isl::union_map::range();
48040 return typed::union_set<pair<Range, Range2>>(res);
48043 template <typename T1, typename T2, typename Range, typename Range2>
48044 typed::union_map<pair<T1, T2>, Range> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
48046 auto res = isl::union_map::range_factor_domain();
48047 return typed::union_map<pair<T1, T2>, Range>(res);
48050 template <typename T1, typename T2, typename Range, typename Range2>
48051 typed::union_map<pair<T1, T2>, Range2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
48053 auto res = isl::union_map::range_factor_range();
48054 return typed::union_map<pair<T1, T2>, Range2>(res);
48057 template <typename T1, typename T2, typename Range, typename Range2>
48058 typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_map() const
48060 auto res = isl::union_map::range_map();
48061 return typed::union_map<pair<pair<T1, T2>, pair<Range, Range2>>, pair<Range, Range2>>(res);
48064 template <typename T1, typename T2, typename Range, typename Range2>
48065 template <typename Arg2>
48066 typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_map<pair<T1, T2>, Arg2> &umap2) const
48068 auto res = isl::union_map::range_product(umap2);
48069 return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
48072 template <typename T1, typename T2, typename Range, typename Range2>
48073 template <typename Arg2>
48074 typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::basic_map<pair<T1, T2>, Arg2> &umap2) const
48076 auto res = isl::union_map::range_product(umap2);
48077 return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
48080 template <typename T1, typename T2, typename Range, typename Range2>
48081 template <typename Arg2>
48082 typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::map<pair<T1, T2>, Arg2> &umap2) const
48084 auto res = isl::union_map::range_product(umap2);
48085 return typed::union_map<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
48088 template <typename T1, typename T2, typename Range, typename Range2>
48089 typed::union_map<pair<T1, T2>, pair<Range2, Range>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::range_reverse() const
48091 auto res = isl::union_map::range_reverse();
48092 return typed::union_map<pair<T1, T2>, pair<Range2, Range>>(res);
48095 template <typename T1, typename T2, typename Range, typename Range2>
48096 typed::union_map<pair<Range, Range2>, pair<T1, T2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::reverse() const
48098 auto res = isl::union_map::reverse();
48099 return typed::union_map<pair<Range, Range2>, pair<T1, T2>>(res);
48102 template <typename T1, typename T2, typename Range, typename Range2>
48103 typed::space<> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::space() const
48105 auto res = isl::union_map::space();
48106 return typed::space<>(res);
48109 template <typename T1, typename T2, typename Range, typename Range2>
48110 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
48112 auto res = isl::union_map::subtract(umap2);
48113 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48116 template <typename T1, typename T2, typename Range, typename Range2>
48117 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
48119 auto res = isl::union_map::subtract(umap2);
48120 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48123 template <typename T1, typename T2, typename Range, typename Range2>
48124 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
48126 auto res = isl::union_map::subtract(umap2);
48127 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48130 template <typename T1, typename T2, typename Range, typename Range2>
48131 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &dom) const
48133 auto res = isl::union_map::subtract_domain(dom);
48134 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48137 template <typename T1, typename T2, typename Range, typename Range2>
48138 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::basic_set<pair<T1, T2>> &dom) const
48140 auto res = isl::union_map::subtract_domain(dom);
48141 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48144 template <typename T1, typename T2, typename Range, typename Range2>
48145 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::point<pair<T1, T2>> &dom) const
48147 auto res = isl::union_map::subtract_domain(dom);
48148 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48151 template <typename T1, typename T2, typename Range, typename Range2>
48152 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::set<pair<T1, T2>> &dom) const
48154 auto res = isl::union_map::subtract_domain(dom);
48155 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48158 template <typename T1, typename T2, typename Range, typename Range2>
48159 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::union_set<pair<Range, Range2>> &dom) const
48161 auto res = isl::union_map::subtract_range(dom);
48162 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48165 template <typename T1, typename T2, typename Range, typename Range2>
48166 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::basic_set<pair<Range, Range2>> &dom) const
48168 auto res = isl::union_map::subtract_range(dom);
48169 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48172 template <typename T1, typename T2, typename Range, typename Range2>
48173 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::point<pair<Range, Range2>> &dom) const
48175 auto res = isl::union_map::subtract_range(dom);
48176 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48179 template <typename T1, typename T2, typename Range, typename Range2>
48180 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::subtract_range(const typed::set<pair<Range, Range2>> &dom) const
48182 auto res = isl::union_map::subtract_range(dom);
48183 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48186 template <typename T1, typename T2, typename Range, typename Range2>
48187 typed::union_map<pair<pair<T1, T2>, Range>, Range2> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::uncurry() const
48189 auto res = isl::union_map::uncurry();
48190 return typed::union_map<pair<pair<T1, T2>, Range>, Range2>(res);
48193 template <typename T1, typename T2, typename Range, typename Range2>
48194 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::union_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
48196 auto res = isl::union_map::unite(umap2);
48197 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48200 template <typename T1, typename T2, typename Range, typename Range2>
48201 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::basic_map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
48203 auto res = isl::union_map::unite(umap2);
48204 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48207 template <typename T1, typename T2, typename Range, typename Range2>
48208 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::unite(const typed::map<pair<T1, T2>, pair<Range, Range2>> &umap2) const
48210 auto res = isl::union_map::unite(umap2);
48211 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48214 template <typename T1, typename T2, typename Range, typename Range2>
48215 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::universe() const
48217 auto res = isl::union_map::universe();
48218 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
48221 template <typename T1, typename T2, typename Range, typename Range2>
48222 typed::union_set<pair<pair<T1, T2>, pair<Range, Range2>>> typed::union_map<pair<T1, T2>, pair<Range, Range2>>::wrap() const
48224 auto res = isl::union_map::wrap();
48225 return typed::union_set<pair<pair<T1, T2>, pair<Range, Range2>>>(res);
48228 typed::union_pw_aff<Anonymous>::union_pw_aff(const typed::aff<Anonymous> &aff)
48229 : isl::union_pw_aff(aff)
48233 typed::union_pw_aff<Anonymous>::union_pw_aff(const typed::pw_aff<Anonymous> &pa)
48234 : isl::union_pw_aff(pa)
48238 typed::union_pw_aff<Anonymous>::union_pw_aff(const isl::ctx &ctx, const std::string &str)
48239 : isl::union_pw_aff(ctx, str)
48243 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::multi_union_pw_aff<Anonymous> &multi2) const
48245 auto res = isl::union_pw_aff::add(multi2);
48246 return typed::multi_union_pw_aff<Anonymous>(res);
48249 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::union_pw_aff<Anonymous> &upa2) const
48251 auto res = isl::union_pw_aff::add(upa2);
48252 return typed::union_pw_aff<Anonymous>(res);
48255 typed::union_pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
48257 auto res = isl::union_pw_aff::add(upma2);
48258 return typed::union_pw_multi_aff<Anonymous>(res);
48261 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::aff<Anonymous> &upa2) const
48263 auto res = isl::union_pw_aff::add(upa2);
48264 return typed::union_pw_aff<Anonymous>(res);
48267 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::add(const typed::pw_aff<Anonymous> &upa2) const
48269 auto res = isl::union_pw_aff::add(upa2);
48270 return typed::union_pw_aff<Anonymous>(res);
48273 template <typename Range>
48274 typed::union_pw_multi_aff<Range> typed::union_pw_aff<Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range> &upma2) const
48276 auto res = isl::union_pw_aff::apply(upma2);
48277 return typed::union_pw_multi_aff<Range>(res);
48280 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::as_multi_union_pw_aff() const
48282 auto res = isl::union_pw_aff::as_multi_union_pw_aff();
48283 return typed::multi_union_pw_aff<Anonymous>(res);
48286 typed::pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::as_pw_multi_aff() const
48288 auto res = isl::union_pw_aff::as_pw_multi_aff();
48289 return typed::pw_multi_aff<Anonymous>(res);
48292 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::at(int pos) const
48294 auto res = isl::union_pw_aff::at(pos);
48295 return typed::union_pw_aff<Anonymous>(res);
48298 typed::union_set<> typed::union_pw_aff<Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
48300 auto res = isl::union_pw_aff::bind(tuple);
48301 return typed::union_set<>(res);
48304 typed::union_set<> typed::union_pw_aff<Anonymous>::bind(const typed::id<Anonymous> &id) const
48306 auto res = isl::union_pw_aff::bind(id);
48307 return typed::union_set<>(res);
48310 typed::union_set<> typed::union_pw_aff<Anonymous>::bind(const std::string &id) const
48312 auto res = isl::union_pw_aff::bind(id);
48313 return typed::union_set<>(res);
48316 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::coalesce() const
48318 auto res = isl::union_pw_aff::coalesce();
48319 return typed::union_pw_aff<Anonymous>(res);
48322 typed::union_set<> typed::union_pw_aff<Anonymous>::domain() const
48324 auto res = isl::union_pw_aff::domain();
48325 return typed::union_set<>(res);
48328 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::drop_unused_params() const
48330 auto res = isl::union_pw_aff::drop_unused_params();
48331 return typed::union_pw_aff<Anonymous>(res);
48334 typed::pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::extract_pw_multi_aff(const typed::space<Anonymous> &space) const
48336 auto res = isl::union_pw_aff::extract_pw_multi_aff(space);
48337 return typed::pw_multi_aff<Anonymous>(res);
48340 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::union_set<> &context) const
48342 auto res = isl::union_pw_aff::gist(context);
48343 return typed::union_pw_aff<Anonymous>(res);
48346 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::basic_set<> &context) const
48348 auto res = isl::union_pw_aff::gist(context);
48349 return typed::union_pw_aff<Anonymous>(res);
48352 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::point<> &context) const
48354 auto res = isl::union_pw_aff::gist(context);
48355 return typed::union_pw_aff<Anonymous>(res);
48358 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist(const typed::set<> &context) const
48360 auto res = isl::union_pw_aff::gist(context);
48361 return typed::union_pw_aff<Anonymous>(res);
48364 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::gist_params(const typed::set<> &context) const
48366 auto res = isl::union_pw_aff::gist_params(context);
48367 return typed::multi_union_pw_aff<Anonymous>(res);
48370 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::intersect_params(const typed::set<> &set) const
48372 auto res = isl::union_pw_aff::intersect_params(set);
48373 return typed::union_pw_aff<Anonymous>(res);
48376 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::intersect_params(const typed::basic_set<> &set) const
48378 auto res = isl::union_pw_aff::intersect_params(set);
48379 return typed::union_pw_aff<Anonymous>(res);
48382 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::intersect_params(const typed::point<> &set) const
48384 auto res = isl::union_pw_aff::intersect_params(set);
48385 return typed::union_pw_aff<Anonymous>(res);
48388 typed::union_pw_aff_list<Anonymous> typed::union_pw_aff<Anonymous>::list() const
48390 auto res = isl::union_pw_aff::list();
48391 return typed::union_pw_aff_list<Anonymous>(res);
48394 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::neg() const
48396 auto res = isl::union_pw_aff::neg();
48397 return typed::multi_union_pw_aff<Anonymous>(res);
48400 typed::pw_multi_aff_list<Anonymous> typed::union_pw_aff<Anonymous>::pw_multi_aff_list() const
48402 auto res = isl::union_pw_aff::pw_multi_aff_list();
48403 return typed::pw_multi_aff_list<Anonymous>(res);
48406 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
48408 auto res = isl::union_pw_aff::scale(mv);
48409 return typed::multi_union_pw_aff<Anonymous>(res);
48412 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale(const typed::val<Anonymous> &v) const
48414 auto res = isl::union_pw_aff::scale(v);
48415 return typed::multi_union_pw_aff<Anonymous>(res);
48418 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale(long v) const
48420 auto res = isl::union_pw_aff::scale(v);
48421 return typed::multi_union_pw_aff<Anonymous>(res);
48424 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
48426 auto res = isl::union_pw_aff::scale_down(mv);
48427 return typed::multi_union_pw_aff<Anonymous>(res);
48430 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale_down(const typed::val<Anonymous> &v) const
48432 auto res = isl::union_pw_aff::scale_down(v);
48433 return typed::multi_union_pw_aff<Anonymous>(res);
48436 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::scale_down(long v) const
48438 auto res = isl::union_pw_aff::scale_down(v);
48439 return typed::multi_union_pw_aff<Anonymous>(res);
48442 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::set_at(int pos, const typed::union_pw_aff<Anonymous> &el) const
48444 auto res = isl::union_pw_aff::set_at(pos, el);
48445 return typed::multi_union_pw_aff<Anonymous>(res);
48448 template <typename Domain2>
48449 typed::multi_union_pw_aff<Domain2> typed::union_pw_aff<Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
48451 auto res = isl::union_pw_aff::set_range_tuple(id);
48452 return typed::multi_union_pw_aff<Domain2>(res);
48455 template <typename Domain2>
48456 typed::multi_union_pw_aff<Domain2> typed::union_pw_aff<Anonymous>::set_range_tuple(const std::string &id) const
48458 auto res = isl::union_pw_aff::set_range_tuple(id);
48459 return typed::multi_union_pw_aff<Domain2>(res);
48462 typed::space<> typed::union_pw_aff<Anonymous>::space() const
48464 auto res = isl::union_pw_aff::space();
48465 return typed::space<>(res);
48468 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::multi_union_pw_aff<Anonymous> &multi2) const
48470 auto res = isl::union_pw_aff::sub(multi2);
48471 return typed::multi_union_pw_aff<Anonymous>(res);
48474 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::union_pw_aff<Anonymous> &upa2) const
48476 auto res = isl::union_pw_aff::sub(upa2);
48477 return typed::union_pw_aff<Anonymous>(res);
48480 typed::union_pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::union_pw_multi_aff<Anonymous> &upma2) const
48482 auto res = isl::union_pw_aff::sub(upma2);
48483 return typed::union_pw_multi_aff<Anonymous>(res);
48486 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::aff<Anonymous> &upa2) const
48488 auto res = isl::union_pw_aff::sub(upa2);
48489 return typed::union_pw_aff<Anonymous>(res);
48492 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::sub(const typed::pw_aff<Anonymous> &upa2) const
48494 auto res = isl::union_pw_aff::sub(upa2);
48495 return typed::union_pw_aff<Anonymous>(res);
48498 typed::multi_union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::multi_union_pw_aff<Anonymous> &mupa2) const
48500 auto res = isl::union_pw_aff::union_add(mupa2);
48501 return typed::multi_union_pw_aff<Anonymous>(res);
48504 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::union_pw_aff<Anonymous> &upa2) const
48506 auto res = isl::union_pw_aff::union_add(upa2);
48507 return typed::union_pw_aff<Anonymous>(res);
48510 typed::union_pw_multi_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::union_pw_multi_aff<Anonymous> &upma2) const
48512 auto res = isl::union_pw_aff::union_add(upma2);
48513 return typed::union_pw_multi_aff<Anonymous>(res);
48516 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::aff<Anonymous> &upa2) const
48518 auto res = isl::union_pw_aff::union_add(upa2);
48519 return typed::union_pw_aff<Anonymous>(res);
48522 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Anonymous>::union_add(const typed::pw_aff<Anonymous> &upa2) const
48524 auto res = isl::union_pw_aff::union_add(upa2);
48525 return typed::union_pw_aff<Anonymous>(res);
48528 template <typename Domain>
48529 typed::union_pw_aff<Domain, Anonymous>::union_pw_aff(const typed::aff<Domain, Anonymous> &aff)
48530 : isl::union_pw_aff(aff)
48534 template <typename Domain>
48535 typed::union_pw_aff<Domain, Anonymous>::union_pw_aff(const typed::pw_aff<Domain, Anonymous> &pa)
48536 : isl::union_pw_aff(pa)
48540 template <typename Domain>
48541 typed::union_pw_aff<Domain, Anonymous>::union_pw_aff(const isl::ctx &ctx, const std::string &str)
48542 : isl::union_pw_aff(ctx, str)
48546 template <typename Domain>
48547 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
48549 auto res = isl::union_pw_aff::add(multi2);
48550 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48553 template <typename Domain>
48554 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
48556 auto res = isl::union_pw_aff::add(upa2);
48557 return typed::union_pw_aff<Domain, Anonymous>(res);
48560 template <typename Domain>
48561 typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
48563 auto res = isl::union_pw_aff::add(upma2);
48564 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
48567 template <typename Domain>
48568 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &upa2) const
48570 auto res = isl::union_pw_aff::add(upa2);
48571 return typed::union_pw_aff<Domain, Anonymous>(res);
48574 template <typename Domain>
48575 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &upa2) const
48577 auto res = isl::union_pw_aff::add(upa2);
48578 return typed::union_pw_aff<Domain, Anonymous>(res);
48581 template <typename Domain>
48582 template <typename Range2>
48583 typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_aff<Domain, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
48585 auto res = isl::union_pw_aff::apply(upma2);
48586 return typed::union_pw_multi_aff<Domain, Range2>(res);
48589 template <typename Domain>
48590 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::as_multi_union_pw_aff() const
48592 auto res = isl::union_pw_aff::as_multi_union_pw_aff();
48593 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48596 template <typename Domain>
48597 typed::pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::as_pw_multi_aff() const
48599 auto res = isl::union_pw_aff::as_pw_multi_aff();
48600 return typed::pw_multi_aff<Domain, Anonymous>(res);
48603 template <typename Domain>
48604 typed::union_map<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::as_union_map() const
48606 auto res = isl::union_pw_aff::as_union_map();
48607 return typed::union_map<Domain, Anonymous>(res);
48610 template <typename Domain>
48611 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::at(int pos) const
48613 auto res = isl::union_pw_aff::at(pos);
48614 return typed::union_pw_aff<Domain, Anonymous>(res);
48617 template <typename Domain>
48618 typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
48620 auto res = isl::union_pw_aff::bind(tuple);
48621 return typed::union_set<Domain>(res);
48624 template <typename Domain>
48625 typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::bind(const typed::id<Anonymous> &id) const
48627 auto res = isl::union_pw_aff::bind(id);
48628 return typed::union_set<Domain>(res);
48631 template <typename Domain>
48632 typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::bind(const std::string &id) const
48634 auto res = isl::union_pw_aff::bind(id);
48635 return typed::union_set<Domain>(res);
48638 template <typename Domain>
48639 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::coalesce() const
48641 auto res = isl::union_pw_aff::coalesce();
48642 return typed::union_pw_aff<Domain, Anonymous>(res);
48645 template <typename Domain>
48646 typed::union_set<Domain> typed::union_pw_aff<Domain, Anonymous>::domain() const
48648 auto res = isl::union_pw_aff::domain();
48649 return typed::union_set<Domain>(res);
48652 template <typename Domain>
48653 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::drop_unused_params() const
48655 auto res = isl::union_pw_aff::drop_unused_params();
48656 return typed::union_pw_aff<Domain, Anonymous>(res);
48659 template <typename Domain>
48660 typed::pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::extract_pw_multi_aff(const typed::space<Domain, Anonymous> &space) const
48662 auto res = isl::union_pw_aff::extract_pw_multi_aff(space);
48663 return typed::pw_multi_aff<Domain, Anonymous>(res);
48666 template <typename Domain>
48667 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::union_set<Domain> &context) const
48669 auto res = isl::union_pw_aff::gist(context);
48670 return typed::union_pw_aff<Domain, Anonymous>(res);
48673 template <typename Domain>
48674 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::basic_set<Domain> &context) const
48676 auto res = isl::union_pw_aff::gist(context);
48677 return typed::union_pw_aff<Domain, Anonymous>(res);
48680 template <typename Domain>
48681 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::point<Domain> &context) const
48683 auto res = isl::union_pw_aff::gist(context);
48684 return typed::union_pw_aff<Domain, Anonymous>(res);
48687 template <typename Domain>
48688 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist(const typed::set<Domain> &context) const
48690 auto res = isl::union_pw_aff::gist(context);
48691 return typed::union_pw_aff<Domain, Anonymous>(res);
48694 template <typename Domain>
48695 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::gist_params(const typed::set<> &context) const
48697 auto res = isl::union_pw_aff::gist_params(context);
48698 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48701 template <typename Domain>
48702 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_domain(const typed::space<Domain> &space) const
48704 auto res = isl::union_pw_aff::intersect_domain(space);
48705 return typed::union_pw_aff<Domain, Anonymous>(res);
48708 template <typename Domain>
48709 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_domain(const typed::union_set<Domain> &uset) const
48711 auto res = isl::union_pw_aff::intersect_domain(uset);
48712 return typed::union_pw_aff<Domain, Anonymous>(res);
48715 template <typename Domain>
48716 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_params(const typed::set<> &set) const
48718 auto res = isl::union_pw_aff::intersect_params(set);
48719 return typed::union_pw_aff<Domain, Anonymous>(res);
48722 template <typename Domain>
48723 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_params(const typed::basic_set<> &set) const
48725 auto res = isl::union_pw_aff::intersect_params(set);
48726 return typed::union_pw_aff<Domain, Anonymous>(res);
48729 template <typename Domain>
48730 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::intersect_params(const typed::point<> &set) const
48732 auto res = isl::union_pw_aff::intersect_params(set);
48733 return typed::union_pw_aff<Domain, Anonymous>(res);
48736 template <typename Domain>
48737 typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::list() const
48739 auto res = isl::union_pw_aff::list();
48740 return typed::union_pw_aff_list<Domain, Anonymous>(res);
48743 template <typename Domain>
48744 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::neg() const
48746 auto res = isl::union_pw_aff::neg();
48747 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48750 template <typename Domain>
48751 template <typename Domain2>
48752 typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
48754 auto res = isl::union_pw_aff::pullback(upma);
48755 return typed::union_pw_aff<Domain2, Anonymous>(res);
48758 template <typename Domain>
48759 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_multi_aff<Domain> &upma) const
48761 auto res = isl::union_pw_aff::pullback(upma);
48762 return typed::union_pw_aff<Anonymous>(res);
48765 template <typename Domain>
48766 template <typename Domain2>
48767 typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain2, Domain> &upma) const
48769 auto res = isl::union_pw_aff::pullback(upma);
48770 return typed::union_pw_aff<Domain2, Anonymous>(res);
48773 template <typename Domain>
48774 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::multi_aff<Domain> &upma) const
48776 auto res = isl::union_pw_aff::pullback(upma);
48777 return typed::union_pw_aff<Anonymous>(res);
48780 template <typename Domain>
48781 template <typename Domain2>
48782 typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma) const
48784 auto res = isl::union_pw_aff::pullback(upma);
48785 return typed::union_pw_aff<Domain2, Anonymous>(res);
48788 template <typename Domain>
48789 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::pw_multi_aff<Domain> &upma) const
48791 auto res = isl::union_pw_aff::pullback(upma);
48792 return typed::union_pw_aff<Anonymous>(res);
48795 template <typename Domain>
48796 template <typename Domain2>
48797 typed::union_pw_aff<Domain2, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma) const
48799 auto res = isl::union_pw_aff::pullback(upma);
48800 return typed::union_pw_aff<Domain2, Anonymous>(res);
48803 template <typename Domain>
48804 typed::union_pw_aff<Anonymous> typed::union_pw_aff<Domain, Anonymous>::pullback(const typed::union_pw_aff<Domain> &upma) const
48806 auto res = isl::union_pw_aff::pullback(upma);
48807 return typed::union_pw_aff<Anonymous>(res);
48810 template <typename Domain>
48811 typed::pw_multi_aff_list<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::pw_multi_aff_list() const
48813 auto res = isl::union_pw_aff::pw_multi_aff_list();
48814 return typed::pw_multi_aff_list<Domain, Anonymous>(res);
48817 template <typename Domain>
48818 template <typename Range2>
48819 typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>> typed::union_pw_aff<Domain, Anonymous>::range_product(const typed::multi_union_pw_aff<Domain, Range2> &multi2) const
48821 auto res = isl::union_pw_aff::range_product(multi2);
48822 return typed::multi_union_pw_aff<Domain, pair<Anonymous, Range2>>(res);
48825 template <typename Domain>
48826 template <typename Range2>
48827 typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>> typed::union_pw_aff<Domain, Anonymous>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
48829 auto res = isl::union_pw_aff::range_product(upma2);
48830 return typed::union_pw_multi_aff<Domain, pair<Anonymous, Range2>>(res);
48833 template <typename Domain>
48834 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
48836 auto res = isl::union_pw_aff::scale(mv);
48837 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48840 template <typename Domain>
48841 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale(const typed::val<Anonymous> &v) const
48843 auto res = isl::union_pw_aff::scale(v);
48844 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48847 template <typename Domain>
48848 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale(long v) const
48850 auto res = isl::union_pw_aff::scale(v);
48851 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48854 template <typename Domain>
48855 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
48857 auto res = isl::union_pw_aff::scale_down(mv);
48858 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48861 template <typename Domain>
48862 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
48864 auto res = isl::union_pw_aff::scale_down(v);
48865 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48868 template <typename Domain>
48869 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::scale_down(long v) const
48871 auto res = isl::union_pw_aff::scale_down(v);
48872 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48875 template <typename Domain>
48876 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::set_at(int pos, const typed::union_pw_aff<Domain, Anonymous> &el) const
48878 auto res = isl::union_pw_aff::set_at(pos, el);
48879 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48882 template <typename Domain>
48883 template <typename Range2>
48884 typed::multi_union_pw_aff<Domain, Range2> typed::union_pw_aff<Domain, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
48886 auto res = isl::union_pw_aff::set_range_tuple(id);
48887 return typed::multi_union_pw_aff<Domain, Range2>(res);
48890 template <typename Domain>
48891 template <typename Range2>
48892 typed::multi_union_pw_aff<Domain, Range2> typed::union_pw_aff<Domain, Anonymous>::set_range_tuple(const std::string &id) const
48894 auto res = isl::union_pw_aff::set_range_tuple(id);
48895 return typed::multi_union_pw_aff<Domain, Range2>(res);
48898 template <typename Domain>
48899 typed::space<> typed::union_pw_aff<Domain, Anonymous>::space() const
48901 auto res = isl::union_pw_aff::space();
48902 return typed::space<>(res);
48905 template <typename Domain>
48906 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::multi_union_pw_aff<Domain, Anonymous> &multi2) const
48908 auto res = isl::union_pw_aff::sub(multi2);
48909 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48912 template <typename Domain>
48913 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
48915 auto res = isl::union_pw_aff::sub(upa2);
48916 return typed::union_pw_aff<Domain, Anonymous>(res);
48919 template <typename Domain>
48920 typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
48922 auto res = isl::union_pw_aff::sub(upma2);
48923 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
48926 template <typename Domain>
48927 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::aff<Domain, Anonymous> &upa2) const
48929 auto res = isl::union_pw_aff::sub(upa2);
48930 return typed::union_pw_aff<Domain, Anonymous>(res);
48933 template <typename Domain>
48934 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::sub(const typed::pw_aff<Domain, Anonymous> &upa2) const
48936 auto res = isl::union_pw_aff::sub(upa2);
48937 return typed::union_pw_aff<Domain, Anonymous>(res);
48940 template <typename Domain>
48941 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::subtract_domain(const typed::space<Domain> &space) const
48943 auto res = isl::union_pw_aff::subtract_domain(space);
48944 return typed::union_pw_aff<Domain, Anonymous>(res);
48947 template <typename Domain>
48948 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::subtract_domain(const typed::union_set<Domain> &uset) const
48950 auto res = isl::union_pw_aff::subtract_domain(uset);
48951 return typed::union_pw_aff<Domain, Anonymous>(res);
48954 template <typename Domain>
48955 typed::multi_union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::multi_union_pw_aff<Domain, Anonymous> &mupa2) const
48957 auto res = isl::union_pw_aff::union_add(mupa2);
48958 return typed::multi_union_pw_aff<Domain, Anonymous>(res);
48961 template <typename Domain>
48962 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_aff<Domain, Anonymous> &upa2) const
48964 auto res = isl::union_pw_aff::union_add(upa2);
48965 return typed::union_pw_aff<Domain, Anonymous>(res);
48968 template <typename Domain>
48969 typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::union_pw_multi_aff<Domain, Anonymous> &upma2) const
48971 auto res = isl::union_pw_aff::union_add(upma2);
48972 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
48975 template <typename Domain>
48976 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::aff<Domain, Anonymous> &upa2) const
48978 auto res = isl::union_pw_aff::union_add(upa2);
48979 return typed::union_pw_aff<Domain, Anonymous>(res);
48982 template <typename Domain>
48983 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff<Domain, Anonymous>::union_add(const typed::pw_aff<Domain, Anonymous> &upa2) const
48985 auto res = isl::union_pw_aff::union_add(upa2);
48986 return typed::union_pw_aff<Domain, Anonymous>(res);
48989 template <typename Domain, typename Domain2>
48990 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_pw_aff(const typed::aff<pair<Domain, Domain2>, Anonymous> &aff)
48991 : isl::union_pw_aff(aff)
48995 template <typename Domain, typename Domain2>
48996 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_pw_aff(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &pa)
48997 : isl::union_pw_aff(pa)
49001 template <typename Domain, typename Domain2>
49002 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_pw_aff(const isl::ctx &ctx, const std::string &str)
49003 : isl::union_pw_aff(ctx, str)
49007 template <typename Domain, typename Domain2>
49008 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const
49010 auto res = isl::union_pw_aff::add(multi2);
49011 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49014 template <typename Domain, typename Domain2>
49015 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49017 auto res = isl::union_pw_aff::add(upa2);
49018 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49021 template <typename Domain, typename Domain2>
49022 typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const
49024 auto res = isl::union_pw_aff::add(upma2);
49025 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
49028 template <typename Domain, typename Domain2>
49029 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49031 auto res = isl::union_pw_aff::add(upa2);
49032 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49035 template <typename Domain, typename Domain2>
49036 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49038 auto res = isl::union_pw_aff::add(upa2);
49039 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49042 template <typename Domain, typename Domain2>
49043 template <typename Range2>
49044 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::apply(const typed::union_pw_multi_aff<Anonymous, Range2> &upma2) const
49046 auto res = isl::union_pw_aff::apply(upma2);
49047 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
49050 template <typename Domain, typename Domain2>
49051 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::as_multi_union_pw_aff() const
49053 auto res = isl::union_pw_aff::as_multi_union_pw_aff();
49054 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49057 template <typename Domain, typename Domain2>
49058 typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::as_pw_multi_aff() const
49060 auto res = isl::union_pw_aff::as_pw_multi_aff();
49061 return typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
49064 template <typename Domain, typename Domain2>
49065 typed::union_map<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::as_union_map() const
49067 auto res = isl::union_pw_aff::as_union_map();
49068 return typed::union_map<pair<Domain, Domain2>, Anonymous>(res);
49071 template <typename Domain, typename Domain2>
49072 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::at(int pos) const
49074 auto res = isl::union_pw_aff::at(pos);
49075 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49078 template <typename Domain, typename Domain2>
49079 typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::bind(const typed::multi_id<Anonymous> &tuple) const
49081 auto res = isl::union_pw_aff::bind(tuple);
49082 return typed::union_set<pair<Domain, Domain2>>(res);
49085 template <typename Domain, typename Domain2>
49086 typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::bind(const typed::id<Anonymous> &id) const
49088 auto res = isl::union_pw_aff::bind(id);
49089 return typed::union_set<pair<Domain, Domain2>>(res);
49092 template <typename Domain, typename Domain2>
49093 typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::bind(const std::string &id) const
49095 auto res = isl::union_pw_aff::bind(id);
49096 return typed::union_set<pair<Domain, Domain2>>(res);
49099 template <typename Domain, typename Domain2>
49100 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::coalesce() const
49102 auto res = isl::union_pw_aff::coalesce();
49103 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49106 template <typename Domain, typename Domain2>
49107 typed::union_set<pair<Domain, Domain2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::domain() const
49109 auto res = isl::union_pw_aff::domain();
49110 return typed::union_set<pair<Domain, Domain2>>(res);
49113 template <typename Domain, typename Domain2>
49114 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::drop_unused_params() const
49116 auto res = isl::union_pw_aff::drop_unused_params();
49117 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49120 template <typename Domain, typename Domain2>
49121 typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Anonymous> &space) const
49123 auto res = isl::union_pw_aff::extract_pw_multi_aff(space);
49124 return typed::pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
49127 template <typename Domain, typename Domain2>
49128 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::union_set<pair<Domain, Domain2>> &context) const
49130 auto res = isl::union_pw_aff::gist(context);
49131 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49134 template <typename Domain, typename Domain2>
49135 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::basic_set<pair<Domain, Domain2>> &context) const
49137 auto res = isl::union_pw_aff::gist(context);
49138 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49141 template <typename Domain, typename Domain2>
49142 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::point<pair<Domain, Domain2>> &context) const
49144 auto res = isl::union_pw_aff::gist(context);
49145 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49148 template <typename Domain, typename Domain2>
49149 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist(const typed::set<pair<Domain, Domain2>> &context) const
49151 auto res = isl::union_pw_aff::gist(context);
49152 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49155 template <typename Domain, typename Domain2>
49156 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::gist_params(const typed::set<> &context) const
49158 auto res = isl::union_pw_aff::gist_params(context);
49159 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49162 template <typename Domain, typename Domain2>
49163 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const
49165 auto res = isl::union_pw_aff::intersect_domain(space);
49166 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49169 template <typename Domain, typename Domain2>
49170 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
49172 auto res = isl::union_pw_aff::intersect_domain(uset);
49173 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49176 template <typename Domain, typename Domain2>
49177 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain_wrapped_domain(const typed::union_set<Domain> &uset) const
49179 auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset);
49180 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49183 template <typename Domain, typename Domain2>
49184 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain_wrapped_domain(const typed::basic_set<Domain> &uset) const
49186 auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset);
49187 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49190 template <typename Domain, typename Domain2>
49191 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain_wrapped_domain(const typed::point<Domain> &uset) const
49193 auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset);
49194 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49197 template <typename Domain, typename Domain2>
49198 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_domain_wrapped_domain(const typed::set<Domain> &uset) const
49200 auto res = isl::union_pw_aff::intersect_domain_wrapped_domain(uset);
49201 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49204 template <typename Domain, typename Domain2>
49205 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_params(const typed::set<> &set) const
49207 auto res = isl::union_pw_aff::intersect_params(set);
49208 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49211 template <typename Domain, typename Domain2>
49212 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_params(const typed::basic_set<> &set) const
49214 auto res = isl::union_pw_aff::intersect_params(set);
49215 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49218 template <typename Domain, typename Domain2>
49219 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::intersect_params(const typed::point<> &set) const
49221 auto res = isl::union_pw_aff::intersect_params(set);
49222 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49225 template <typename Domain, typename Domain2>
49226 typed::union_pw_aff_list<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::list() const
49228 auto res = isl::union_pw_aff::list();
49229 return typed::union_pw_aff_list<pair<Domain, Domain2>, Anonymous>(res);
49232 template <typename Domain, typename Domain2>
49233 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::neg() const
49235 auto res = isl::union_pw_aff::neg();
49236 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49239 template <typename Domain, typename Domain2>
49240 template <typename Domain3>
49241 typed::union_pw_multi_aff<pair<Domain3, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const
49243 auto res = isl::union_pw_aff::preimage_domain_wrapped_domain(upma2);
49244 return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Anonymous>(res);
49247 template <typename Domain, typename Domain2>
49248 template <typename Arg2>
49249 typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const
49251 auto res = isl::union_pw_aff::pullback(upma);
49252 return typed::union_pw_aff<Arg2, Anonymous>(res);
49255 template <typename Domain, typename Domain2>
49256 typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma) const
49258 auto res = isl::union_pw_aff::pullback(upma);
49259 return typed::union_pw_aff<Anonymous>(res);
49262 template <typename Domain, typename Domain2>
49263 template <typename Arg2>
49264 typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::multi_aff<Arg2, pair<Domain, Domain2>> &upma) const
49266 auto res = isl::union_pw_aff::pullback(upma);
49267 return typed::union_pw_aff<Arg2, Anonymous>(res);
49270 template <typename Domain, typename Domain2>
49271 typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma) const
49273 auto res = isl::union_pw_aff::pullback(upma);
49274 return typed::union_pw_aff<Anonymous>(res);
49277 template <typename Domain, typename Domain2>
49278 template <typename Arg2>
49279 typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::pw_multi_aff<Arg2, pair<Domain, Domain2>> &upma) const
49281 auto res = isl::union_pw_aff::pullback(upma);
49282 return typed::union_pw_aff<Arg2, Anonymous>(res);
49285 template <typename Domain, typename Domain2>
49286 typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma) const
49288 auto res = isl::union_pw_aff::pullback(upma);
49289 return typed::union_pw_aff<Anonymous>(res);
49292 template <typename Domain, typename Domain2>
49293 template <typename Arg2>
49294 typed::union_pw_aff<Arg2, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_aff<Arg2, pair<Domain, Domain2>> &upma) const
49296 auto res = isl::union_pw_aff::pullback(upma);
49297 return typed::union_pw_aff<Arg2, Anonymous>(res);
49300 template <typename Domain, typename Domain2>
49301 typed::union_pw_aff<Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma) const
49303 auto res = isl::union_pw_aff::pullback(upma);
49304 return typed::union_pw_aff<Anonymous>(res);
49307 template <typename Domain, typename Domain2>
49308 typed::pw_multi_aff_list<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::pw_multi_aff_list() const
49310 auto res = isl::union_pw_aff::pw_multi_aff_list();
49311 return typed::pw_multi_aff_list<pair<Domain, Domain2>, Anonymous>(res);
49314 template <typename Domain, typename Domain2>
49315 template <typename Range2>
49316 typed::multi_union_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::range_product(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> &multi2) const
49318 auto res = isl::union_pw_aff::range_product(multi2);
49319 return typed::multi_union_pw_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
49322 template <typename Domain, typename Domain2>
49323 template <typename Range2>
49324 typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
49326 auto res = isl::union_pw_aff::range_product(upma2);
49327 return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Anonymous, Range2>>(res);
49330 template <typename Domain, typename Domain2>
49331 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale(const typed::multi_val<Anonymous> &mv) const
49333 auto res = isl::union_pw_aff::scale(mv);
49334 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49337 template <typename Domain, typename Domain2>
49338 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale(const typed::val<Anonymous> &v) const
49340 auto res = isl::union_pw_aff::scale(v);
49341 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49344 template <typename Domain, typename Domain2>
49345 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale(long v) const
49347 auto res = isl::union_pw_aff::scale(v);
49348 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49351 template <typename Domain, typename Domain2>
49352 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale_down(const typed::multi_val<Anonymous> &mv) const
49354 auto res = isl::union_pw_aff::scale_down(mv);
49355 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49358 template <typename Domain, typename Domain2>
49359 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale_down(const typed::val<Anonymous> &v) const
49361 auto res = isl::union_pw_aff::scale_down(v);
49362 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49365 template <typename Domain, typename Domain2>
49366 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::scale_down(long v) const
49368 auto res = isl::union_pw_aff::scale_down(v);
49369 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49372 template <typename Domain, typename Domain2>
49373 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::set_at(int pos, const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &el) const
49375 auto res = isl::union_pw_aff::set_at(pos, el);
49376 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49379 template <typename Domain, typename Domain2>
49380 template <typename Range2>
49381 typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::set_range_tuple(const typed::id<Anonymous> &id) const
49383 auto res = isl::union_pw_aff::set_range_tuple(id);
49384 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2>(res);
49387 template <typename Domain, typename Domain2>
49388 template <typename Range2>
49389 typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::set_range_tuple(const std::string &id) const
49391 auto res = isl::union_pw_aff::set_range_tuple(id);
49392 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Range2>(res);
49395 template <typename Domain, typename Domain2>
49396 typed::space<> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::space() const
49398 auto res = isl::union_pw_aff::space();
49399 return typed::space<>(res);
49402 template <typename Domain, typename Domain2>
49403 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &multi2) const
49405 auto res = isl::union_pw_aff::sub(multi2);
49406 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49409 template <typename Domain, typename Domain2>
49410 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49412 auto res = isl::union_pw_aff::sub(upa2);
49413 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49416 template <typename Domain, typename Domain2>
49417 typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const
49419 auto res = isl::union_pw_aff::sub(upma2);
49420 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
49423 template <typename Domain, typename Domain2>
49424 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49426 auto res = isl::union_pw_aff::sub(upa2);
49427 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49430 template <typename Domain, typename Domain2>
49431 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::sub(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49433 auto res = isl::union_pw_aff::sub(upa2);
49434 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49437 template <typename Domain, typename Domain2>
49438 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const
49440 auto res = isl::union_pw_aff::subtract_domain(space);
49441 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49444 template <typename Domain, typename Domain2>
49445 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
49447 auto res = isl::union_pw_aff::subtract_domain(uset);
49448 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49451 template <typename Domain, typename Domain2>
49452 typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous> &mupa2) const
49454 auto res = isl::union_pw_aff::union_add(mupa2);
49455 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49458 template <typename Domain, typename Domain2>
49459 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49461 auto res = isl::union_pw_aff::union_add(upa2);
49462 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49465 template <typename Domain, typename Domain2>
49466 typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> &upma2) const
49468 auto res = isl::union_pw_aff::union_add(upma2);
49469 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
49472 template <typename Domain, typename Domain2>
49473 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49475 auto res = isl::union_pw_aff::union_add(upa2);
49476 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49479 template <typename Domain, typename Domain2>
49480 typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>::union_add(const typed::pw_aff<pair<Domain, Domain2>, Anonymous> &upa2) const
49482 auto res = isl::union_pw_aff::union_add(upa2);
49483 return typed::union_pw_aff<pair<Domain, Domain2>, Anonymous>(res);
49486 typed::union_pw_aff_list<Anonymous>::union_pw_aff_list(const isl::ctx &ctx, int n)
49487 : isl::union_pw_aff_list(ctx, n)
49491 typed::union_pw_aff_list<Anonymous>::union_pw_aff_list(const typed::union_pw_aff<Anonymous> &el)
49492 : isl::union_pw_aff_list(el)
49496 typed::union_pw_aff_list<Anonymous>::union_pw_aff_list(const isl::ctx &ctx, const std::string &str)
49497 : isl::union_pw_aff_list(ctx, str)
49501 typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::add(const typed::union_pw_aff<Anonymous> &el) const
49503 auto res = isl::union_pw_aff_list::add(el);
49504 return typed::union_pw_aff_list<Anonymous>(res);
49507 typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::add(const typed::aff<Anonymous> &el) const
49509 auto res = isl::union_pw_aff_list::add(el);
49510 return typed::union_pw_aff_list<Anonymous>(res);
49513 typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::add(const typed::pw_aff<Anonymous> &el) const
49515 auto res = isl::union_pw_aff_list::add(el);
49516 return typed::union_pw_aff_list<Anonymous>(res);
49519 typed::union_pw_aff<Anonymous> typed::union_pw_aff_list<Anonymous>::at(int index) const
49521 auto res = isl::union_pw_aff_list::at(index);
49522 return typed::union_pw_aff<Anonymous>(res);
49525 typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::drop(unsigned int first, unsigned int n) const
49527 auto res = isl::union_pw_aff_list::drop(first, n);
49528 return typed::union_pw_aff_list<Anonymous>(res);
49531 void typed::union_pw_aff_list<Anonymous>::foreach(const std::function<void(typed::union_pw_aff<Anonymous>)> &fn) const
49533 auto lambda_fn = [&] (isl::union_pw_aff arg0) {
49534 return fn(typed::union_pw_aff<Anonymous>(arg0));
49536 return isl::union_pw_aff_list::foreach(lambda_fn);
49539 void typed::union_pw_aff_list<Anonymous>::foreach_scc(const std::function<bool(typed::union_pw_aff<Anonymous>, typed::union_pw_aff<Anonymous>)> &follows, const std::function<void(typed::union_pw_aff_list<Anonymous>)> &fn) const
49541 auto lambda_follows = [&] (isl::union_pw_aff arg0, isl::union_pw_aff arg1) {
49542 return follows(typed::union_pw_aff<Anonymous>(arg0), typed::union_pw_aff<Anonymous>(arg1));
49544 auto lambda_fn = [&] (isl::union_pw_aff_list arg0) {
49545 return fn(typed::union_pw_aff_list<Anonymous>(arg0));
49547 return isl::union_pw_aff_list::foreach_scc(lambda_follows, lambda_fn);
49550 typed::union_pw_aff_list<Anonymous> typed::union_pw_aff_list<Anonymous>::set_at(int index, const typed::union_pw_aff<Anonymous> &el) const
49552 auto res = isl::union_pw_aff_list::set_at(index, el);
49553 return typed::union_pw_aff_list<Anonymous>(res);
49556 template <typename Domain>
49557 typed::union_pw_aff_list<Domain, Anonymous>::union_pw_aff_list(const isl::ctx &ctx, int n)
49558 : isl::union_pw_aff_list(ctx, n)
49562 template <typename Domain>
49563 typed::union_pw_aff_list<Domain, Anonymous>::union_pw_aff_list(const typed::union_pw_aff<Domain, Anonymous> &el)
49564 : isl::union_pw_aff_list(el)
49568 template <typename Domain>
49569 typed::union_pw_aff_list<Domain, Anonymous>::union_pw_aff_list(const isl::ctx &ctx, const std::string &str)
49570 : isl::union_pw_aff_list(ctx, str)
49574 template <typename Domain>
49575 typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::add(const typed::union_pw_aff<Domain, Anonymous> &el) const
49577 auto res = isl::union_pw_aff_list::add(el);
49578 return typed::union_pw_aff_list<Domain, Anonymous>(res);
49581 template <typename Domain>
49582 typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::add(const typed::aff<Domain, Anonymous> &el) const
49584 auto res = isl::union_pw_aff_list::add(el);
49585 return typed::union_pw_aff_list<Domain, Anonymous>(res);
49588 template <typename Domain>
49589 typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::add(const typed::pw_aff<Domain, Anonymous> &el) const
49591 auto res = isl::union_pw_aff_list::add(el);
49592 return typed::union_pw_aff_list<Domain, Anonymous>(res);
49595 template <typename Domain>
49596 typed::union_pw_aff<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::at(int index) const
49598 auto res = isl::union_pw_aff_list::at(index);
49599 return typed::union_pw_aff<Domain, Anonymous>(res);
49602 template <typename Domain>
49603 typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::drop(unsigned int first, unsigned int n) const
49605 auto res = isl::union_pw_aff_list::drop(first, n);
49606 return typed::union_pw_aff_list<Domain, Anonymous>(res);
49609 template <typename Domain>
49610 void typed::union_pw_aff_list<Domain, Anonymous>::foreach(const std::function<void(typed::union_pw_aff<Domain, Anonymous>)> &fn) const
49612 auto lambda_fn = [&] (isl::union_pw_aff arg0) {
49613 return fn(typed::union_pw_aff<Domain, Anonymous>(arg0));
49615 return isl::union_pw_aff_list::foreach(lambda_fn);
49618 template <typename Domain>
49619 void typed::union_pw_aff_list<Domain, Anonymous>::foreach_scc(const std::function<bool(typed::union_pw_aff<Domain, Anonymous>, typed::union_pw_aff<Domain, Anonymous>)> &follows, const std::function<void(typed::union_pw_aff_list<Domain, Anonymous>)> &fn) const
49621 auto lambda_follows = [&] (isl::union_pw_aff arg0, isl::union_pw_aff arg1) {
49622 return follows(typed::union_pw_aff<Domain, Anonymous>(arg0), typed::union_pw_aff<Domain, Anonymous>(arg1));
49624 auto lambda_fn = [&] (isl::union_pw_aff_list arg0) {
49625 return fn(typed::union_pw_aff_list<Domain, Anonymous>(arg0));
49627 return isl::union_pw_aff_list::foreach_scc(lambda_follows, lambda_fn);
49630 template <typename Domain>
49631 typed::union_pw_aff_list<Domain, Anonymous> typed::union_pw_aff_list<Domain, Anonymous>::set_at(int index, const typed::union_pw_aff<Domain, Anonymous> &el) const
49633 auto res = isl::union_pw_aff_list::set_at(index, el);
49634 return typed::union_pw_aff_list<Domain, Anonymous>(res);
49637 template <typename Domain>
49638 typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const typed::multi_aff<Domain> &ma)
49639 : isl::union_pw_multi_aff(ma)
49643 template <typename Domain>
49644 typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const typed::pw_multi_aff<Domain> &pma)
49645 : isl::union_pw_multi_aff(pma)
49649 template <typename Domain>
49650 typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const typed::union_pw_aff<Domain> &upa)
49651 : isl::union_pw_multi_aff(upa)
49655 template <typename Domain>
49656 typed::union_pw_multi_aff<Domain>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
49657 : isl::union_pw_multi_aff(ctx, str)
49661 template <typename Domain>
49662 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::union_pw_multi_aff<Domain> &upma2) const
49664 auto res = isl::union_pw_multi_aff::add(upma2);
49665 return typed::union_pw_multi_aff<Domain>(res);
49668 template <typename Domain>
49669 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::multi_aff<Domain> &upma2) const
49671 auto res = isl::union_pw_multi_aff::add(upma2);
49672 return typed::union_pw_multi_aff<Domain>(res);
49675 template <typename Domain>
49676 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::pw_multi_aff<Domain> &upma2) const
49678 auto res = isl::union_pw_multi_aff::add(upma2);
49679 return typed::union_pw_multi_aff<Domain>(res);
49682 template <typename Domain>
49683 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::add(const typed::union_pw_aff<Domain> &upma2) const
49685 auto res = isl::union_pw_multi_aff::add(upma2);
49686 return typed::union_pw_multi_aff<Domain>(res);
49689 template <typename Domain>
49690 template <typename Range>
49691 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain>::apply(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
49693 auto res = isl::union_pw_multi_aff::apply(upma2);
49694 return typed::union_pw_multi_aff<Range>(res);
49697 template <typename Domain>
49698 template <typename Range>
49699 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain>::apply(const typed::multi_aff<Domain, Range> &upma2) const
49701 auto res = isl::union_pw_multi_aff::apply(upma2);
49702 return typed::union_pw_multi_aff<Range>(res);
49705 template <typename Domain>
49706 template <typename Range>
49707 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain>::apply(const typed::pw_multi_aff<Domain, Range> &upma2) const
49709 auto res = isl::union_pw_multi_aff::apply(upma2);
49710 return typed::union_pw_multi_aff<Range>(res);
49713 template <typename Domain>
49714 typed::union_pw_multi_aff<Anonymous> typed::union_pw_multi_aff<Domain>::apply(const typed::union_pw_aff<Domain, Anonymous> &upma2) const
49716 auto res = isl::union_pw_multi_aff::apply(upma2);
49717 return typed::union_pw_multi_aff<Anonymous>(res);
49720 template <typename Domain>
49721 typed::multi_union_pw_aff<Domain> typed::union_pw_multi_aff<Domain>::as_multi_union_pw_aff() const
49723 auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
49724 return typed::multi_union_pw_aff<Domain>(res);
49727 template <typename Domain>
49728 typed::pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::as_pw_multi_aff() const
49730 auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
49731 return typed::pw_multi_aff<Domain>(res);
49734 template <typename Domain>
49735 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::coalesce() const
49737 auto res = isl::union_pw_multi_aff::coalesce();
49738 return typed::union_pw_multi_aff<Domain>(res);
49741 template <typename Domain>
49742 typed::union_set<> typed::union_pw_multi_aff<Domain>::domain() const
49744 auto res = isl::union_pw_multi_aff::domain();
49745 return typed::union_set<>(res);
49748 template <typename Domain>
49749 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::drop_unused_params() const
49751 auto res = isl::union_pw_multi_aff::drop_unused_params();
49752 return typed::union_pw_multi_aff<Domain>(res);
49755 template <typename Domain>
49756 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::empty(const isl::ctx &ctx)
49758 auto res = isl::union_pw_multi_aff::empty(ctx);
49759 return typed::union_pw_multi_aff<Domain>(res);
49762 template <typename Domain>
49763 typed::pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::extract_pw_multi_aff(const typed::space<Domain> &space) const
49765 auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
49766 return typed::pw_multi_aff<Domain>(res);
49769 template <typename Domain>
49770 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::union_set<> &context) const
49772 auto res = isl::union_pw_multi_aff::gist(context);
49773 return typed::union_pw_multi_aff<Domain>(res);
49776 template <typename Domain>
49777 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::basic_set<> &context) const
49779 auto res = isl::union_pw_multi_aff::gist(context);
49780 return typed::union_pw_multi_aff<Domain>(res);
49783 template <typename Domain>
49784 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::point<> &context) const
49786 auto res = isl::union_pw_multi_aff::gist(context);
49787 return typed::union_pw_multi_aff<Domain>(res);
49790 template <typename Domain>
49791 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::gist(const typed::set<> &context) const
49793 auto res = isl::union_pw_multi_aff::gist(context);
49794 return typed::union_pw_multi_aff<Domain>(res);
49797 template <typename Domain>
49798 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::intersect_params(const typed::set<> &set) const
49800 auto res = isl::union_pw_multi_aff::intersect_params(set);
49801 return typed::union_pw_multi_aff<Domain>(res);
49804 template <typename Domain>
49805 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::intersect_params(const typed::basic_set<> &set) const
49807 auto res = isl::union_pw_multi_aff::intersect_params(set);
49808 return typed::union_pw_multi_aff<Domain>(res);
49811 template <typename Domain>
49812 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::intersect_params(const typed::point<> &set) const
49814 auto res = isl::union_pw_multi_aff::intersect_params(set);
49815 return typed::union_pw_multi_aff<Domain>(res);
49818 template <typename Domain>
49819 typed::pw_multi_aff_list<Domain> typed::union_pw_multi_aff<Domain>::pw_multi_aff_list() const
49821 auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
49822 return typed::pw_multi_aff_list<Domain>(res);
49825 template <typename Domain>
49826 typed::space<> typed::union_pw_multi_aff<Domain>::space() const
49828 auto res = isl::union_pw_multi_aff::space();
49829 return typed::space<>(res);
49832 template <typename Domain>
49833 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::union_pw_multi_aff<Domain> &upma2) const
49835 auto res = isl::union_pw_multi_aff::sub(upma2);
49836 return typed::union_pw_multi_aff<Domain>(res);
49839 template <typename Domain>
49840 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::multi_aff<Domain> &upma2) const
49842 auto res = isl::union_pw_multi_aff::sub(upma2);
49843 return typed::union_pw_multi_aff<Domain>(res);
49846 template <typename Domain>
49847 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::pw_multi_aff<Domain> &upma2) const
49849 auto res = isl::union_pw_multi_aff::sub(upma2);
49850 return typed::union_pw_multi_aff<Domain>(res);
49853 template <typename Domain>
49854 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::sub(const typed::union_pw_aff<Domain> &upma2) const
49856 auto res = isl::union_pw_multi_aff::sub(upma2);
49857 return typed::union_pw_multi_aff<Domain>(res);
49860 template <typename Domain>
49861 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::union_pw_multi_aff<Domain> &upma2) const
49863 auto res = isl::union_pw_multi_aff::union_add(upma2);
49864 return typed::union_pw_multi_aff<Domain>(res);
49867 template <typename Domain>
49868 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::multi_aff<Domain> &upma2) const
49870 auto res = isl::union_pw_multi_aff::union_add(upma2);
49871 return typed::union_pw_multi_aff<Domain>(res);
49874 template <typename Domain>
49875 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::pw_multi_aff<Domain> &upma2) const
49877 auto res = isl::union_pw_multi_aff::union_add(upma2);
49878 return typed::union_pw_multi_aff<Domain>(res);
49881 template <typename Domain>
49882 typed::union_pw_multi_aff<Domain> typed::union_pw_multi_aff<Domain>::union_add(const typed::union_pw_aff<Domain> &upma2) const
49884 auto res = isl::union_pw_multi_aff::union_add(upma2);
49885 return typed::union_pw_multi_aff<Domain>(res);
49888 template <typename Domain, typename Range>
49889 typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const typed::multi_aff<Domain, Range> &ma)
49890 : isl::union_pw_multi_aff(ma)
49894 template <typename Domain, typename Range>
49895 typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const typed::pw_multi_aff<Domain, Range> &pma)
49896 : isl::union_pw_multi_aff(pma)
49900 template <typename Domain, typename Range>
49901 typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const typed::union_pw_aff<Domain, Range> &upa)
49902 : isl::union_pw_multi_aff(upa)
49906 template <typename Domain, typename Range>
49907 typed::union_pw_multi_aff<Domain, Range>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
49908 : isl::union_pw_multi_aff(ctx, str)
49912 template <typename Domain, typename Range>
49913 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
49915 auto res = isl::union_pw_multi_aff::add(upma2);
49916 return typed::union_pw_multi_aff<Domain, Range>(res);
49919 template <typename Domain, typename Range>
49920 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::multi_aff<Domain, Range> &upma2) const
49922 auto res = isl::union_pw_multi_aff::add(upma2);
49923 return typed::union_pw_multi_aff<Domain, Range>(res);
49926 template <typename Domain, typename Range>
49927 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::pw_multi_aff<Domain, Range> &upma2) const
49929 auto res = isl::union_pw_multi_aff::add(upma2);
49930 return typed::union_pw_multi_aff<Domain, Range>(res);
49933 template <typename Domain, typename Range>
49934 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::add(const typed::union_pw_aff<Domain, Range> &upma2) const
49936 auto res = isl::union_pw_multi_aff::add(upma2);
49937 return typed::union_pw_multi_aff<Domain, Range>(res);
49940 template <typename Domain, typename Range>
49941 template <typename Range2>
49942 typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
49944 auto res = isl::union_pw_multi_aff::apply(upma2);
49945 return typed::union_pw_multi_aff<Domain, Range2>(res);
49948 template <typename Domain, typename Range>
49949 template <typename Range2>
49950 typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::multi_aff<Range, Range2> &upma2) const
49952 auto res = isl::union_pw_multi_aff::apply(upma2);
49953 return typed::union_pw_multi_aff<Domain, Range2>(res);
49956 template <typename Domain, typename Range>
49957 template <typename Range2>
49958 typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::pw_multi_aff<Range, Range2> &upma2) const
49960 auto res = isl::union_pw_multi_aff::apply(upma2);
49961 return typed::union_pw_multi_aff<Domain, Range2>(res);
49964 template <typename Domain, typename Range>
49965 typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_multi_aff<Domain, Range>::apply(const typed::union_pw_aff<Range, Anonymous> &upma2) const
49967 auto res = isl::union_pw_multi_aff::apply(upma2);
49968 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
49971 template <typename Domain, typename Range>
49972 typed::multi_union_pw_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::as_multi_union_pw_aff() const
49974 auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
49975 return typed::multi_union_pw_aff<Domain, Range>(res);
49978 template <typename Domain, typename Range>
49979 typed::pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::as_pw_multi_aff() const
49981 auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
49982 return typed::pw_multi_aff<Domain, Range>(res);
49985 template <typename Domain, typename Range>
49986 typed::union_map<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::as_union_map() const
49988 auto res = isl::union_pw_multi_aff::as_union_map();
49989 return typed::union_map<Domain, Range>(res);
49992 template <typename Domain, typename Range>
49993 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::coalesce() const
49995 auto res = isl::union_pw_multi_aff::coalesce();
49996 return typed::union_pw_multi_aff<Domain, Range>(res);
49999 template <typename Domain, typename Range>
50000 typed::union_set<Domain> typed::union_pw_multi_aff<Domain, Range>::domain() const
50002 auto res = isl::union_pw_multi_aff::domain();
50003 return typed::union_set<Domain>(res);
50006 template <typename Domain, typename Range>
50007 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::drop_unused_params() const
50009 auto res = isl::union_pw_multi_aff::drop_unused_params();
50010 return typed::union_pw_multi_aff<Domain, Range>(res);
50013 template <typename Domain, typename Range>
50014 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::empty(const isl::ctx &ctx)
50016 auto res = isl::union_pw_multi_aff::empty(ctx);
50017 return typed::union_pw_multi_aff<Domain, Range>(res);
50020 template <typename Domain, typename Range>
50021 typed::pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::extract_pw_multi_aff(const typed::space<Domain, Range> &space) const
50023 auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
50024 return typed::pw_multi_aff<Domain, Range>(res);
50027 template <typename Domain, typename Range>
50028 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::union_set<Domain> &context) const
50030 auto res = isl::union_pw_multi_aff::gist(context);
50031 return typed::union_pw_multi_aff<Domain, Range>(res);
50034 template <typename Domain, typename Range>
50035 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::basic_set<Domain> &context) const
50037 auto res = isl::union_pw_multi_aff::gist(context);
50038 return typed::union_pw_multi_aff<Domain, Range>(res);
50041 template <typename Domain, typename Range>
50042 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::point<Domain> &context) const
50044 auto res = isl::union_pw_multi_aff::gist(context);
50045 return typed::union_pw_multi_aff<Domain, Range>(res);
50048 template <typename Domain, typename Range>
50049 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::gist(const typed::set<Domain> &context) const
50051 auto res = isl::union_pw_multi_aff::gist(context);
50052 return typed::union_pw_multi_aff<Domain, Range>(res);
50055 template <typename Domain, typename Range>
50056 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_domain(const typed::space<Domain> &space) const
50058 auto res = isl::union_pw_multi_aff::intersect_domain(space);
50059 return typed::union_pw_multi_aff<Domain, Range>(res);
50062 template <typename Domain, typename Range>
50063 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_domain(const typed::union_set<Domain> &uset) const
50065 auto res = isl::union_pw_multi_aff::intersect_domain(uset);
50066 return typed::union_pw_multi_aff<Domain, Range>(res);
50069 template <typename Domain, typename Range>
50070 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_params(const typed::set<> &set) const
50072 auto res = isl::union_pw_multi_aff::intersect_params(set);
50073 return typed::union_pw_multi_aff<Domain, Range>(res);
50076 template <typename Domain, typename Range>
50077 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_params(const typed::basic_set<> &set) const
50079 auto res = isl::union_pw_multi_aff::intersect_params(set);
50080 return typed::union_pw_multi_aff<Domain, Range>(res);
50083 template <typename Domain, typename Range>
50084 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::intersect_params(const typed::point<> &set) const
50086 auto res = isl::union_pw_multi_aff::intersect_params(set);
50087 return typed::union_pw_multi_aff<Domain, Range>(res);
50090 template <typename Domain, typename Range>
50091 template <typename Domain2>
50092 typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
50094 auto res = isl::union_pw_multi_aff::pullback(upma2);
50095 return typed::union_pw_multi_aff<Domain2, Range>(res);
50098 template <typename Domain, typename Range>
50099 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
50101 auto res = isl::union_pw_multi_aff::pullback(upma2);
50102 return typed::union_pw_multi_aff<Range>(res);
50105 template <typename Domain, typename Range>
50106 template <typename Domain2>
50107 typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain2, Domain> &upma2) const
50109 auto res = isl::union_pw_multi_aff::pullback(upma2);
50110 return typed::union_pw_multi_aff<Domain2, Range>(res);
50113 template <typename Domain, typename Range>
50114 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::multi_aff<Domain> &upma2) const
50116 auto res = isl::union_pw_multi_aff::pullback(upma2);
50117 return typed::union_pw_multi_aff<Range>(res);
50120 template <typename Domain, typename Range>
50121 template <typename Domain2>
50122 typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const
50124 auto res = isl::union_pw_multi_aff::pullback(upma2);
50125 return typed::union_pw_multi_aff<Domain2, Range>(res);
50128 template <typename Domain, typename Range>
50129 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::pw_multi_aff<Domain> &upma2) const
50131 auto res = isl::union_pw_multi_aff::pullback(upma2);
50132 return typed::union_pw_multi_aff<Range>(res);
50135 template <typename Domain, typename Range>
50136 template <typename Domain2>
50137 typed::union_pw_multi_aff<Domain2, Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const
50139 auto res = isl::union_pw_multi_aff::pullback(upma2);
50140 return typed::union_pw_multi_aff<Domain2, Range>(res);
50143 template <typename Domain, typename Range>
50144 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<Domain, Range>::pullback(const typed::union_pw_aff<Domain> &upma2) const
50146 auto res = isl::union_pw_multi_aff::pullback(upma2);
50147 return typed::union_pw_multi_aff<Range>(res);
50150 template <typename Domain, typename Range>
50151 typed::pw_multi_aff_list<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::pw_multi_aff_list() const
50153 auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
50154 return typed::pw_multi_aff_list<Domain, Range>(res);
50157 template <typename Domain, typename Range>
50158 template <typename Range2>
50159 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::union_pw_multi_aff<Domain, Range2> &upma2) const
50161 auto res = isl::union_pw_multi_aff::range_product(upma2);
50162 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50165 template <typename Domain, typename Range>
50166 template <typename Range2>
50167 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::multi_aff<Domain, Range2> &upma2) const
50169 auto res = isl::union_pw_multi_aff::range_product(upma2);
50170 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50173 template <typename Domain, typename Range>
50174 template <typename Range2>
50175 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::pw_multi_aff<Domain, Range2> &upma2) const
50177 auto res = isl::union_pw_multi_aff::range_product(upma2);
50178 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50181 template <typename Domain, typename Range>
50182 typed::union_pw_multi_aff<Domain, pair<Range, Anonymous>> typed::union_pw_multi_aff<Domain, Range>::range_product(const typed::union_pw_aff<Domain, Anonymous> &upma2) const
50184 auto res = isl::union_pw_multi_aff::range_product(upma2);
50185 return typed::union_pw_multi_aff<Domain, pair<Range, Anonymous>>(res);
50188 template <typename Domain, typename Range>
50189 typed::space<> typed::union_pw_multi_aff<Domain, Range>::space() const
50191 auto res = isl::union_pw_multi_aff::space();
50192 return typed::space<>(res);
50195 template <typename Domain, typename Range>
50196 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
50198 auto res = isl::union_pw_multi_aff::sub(upma2);
50199 return typed::union_pw_multi_aff<Domain, Range>(res);
50202 template <typename Domain, typename Range>
50203 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::multi_aff<Domain, Range> &upma2) const
50205 auto res = isl::union_pw_multi_aff::sub(upma2);
50206 return typed::union_pw_multi_aff<Domain, Range>(res);
50209 template <typename Domain, typename Range>
50210 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::pw_multi_aff<Domain, Range> &upma2) const
50212 auto res = isl::union_pw_multi_aff::sub(upma2);
50213 return typed::union_pw_multi_aff<Domain, Range>(res);
50216 template <typename Domain, typename Range>
50217 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::sub(const typed::union_pw_aff<Domain, Range> &upma2) const
50219 auto res = isl::union_pw_multi_aff::sub(upma2);
50220 return typed::union_pw_multi_aff<Domain, Range>(res);
50223 template <typename Domain, typename Range>
50224 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::subtract_domain(const typed::space<Domain> &space) const
50226 auto res = isl::union_pw_multi_aff::subtract_domain(space);
50227 return typed::union_pw_multi_aff<Domain, Range>(res);
50230 template <typename Domain, typename Range>
50231 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::subtract_domain(const typed::union_set<Domain> &uset) const
50233 auto res = isl::union_pw_multi_aff::subtract_domain(uset);
50234 return typed::union_pw_multi_aff<Domain, Range>(res);
50237 template <typename Domain, typename Range>
50238 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::union_pw_multi_aff<Domain, Range> &upma2) const
50240 auto res = isl::union_pw_multi_aff::union_add(upma2);
50241 return typed::union_pw_multi_aff<Domain, Range>(res);
50244 template <typename Domain, typename Range>
50245 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::multi_aff<Domain, Range> &upma2) const
50247 auto res = isl::union_pw_multi_aff::union_add(upma2);
50248 return typed::union_pw_multi_aff<Domain, Range>(res);
50251 template <typename Domain, typename Range>
50252 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::pw_multi_aff<Domain, Range> &upma2) const
50254 auto res = isl::union_pw_multi_aff::union_add(upma2);
50255 return typed::union_pw_multi_aff<Domain, Range>(res);
50258 template <typename Domain, typename Range>
50259 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, Range>::union_add(const typed::union_pw_aff<Domain, Range> &upma2) const
50261 auto res = isl::union_pw_multi_aff::union_add(upma2);
50262 return typed::union_pw_multi_aff<Domain, Range>(res);
50265 template <typename Domain, typename Domain2, typename Range>
50266 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const typed::multi_aff<pair<Domain, Domain2>, Range> &ma)
50267 : isl::union_pw_multi_aff(ma)
50271 template <typename Domain, typename Domain2, typename Range>
50272 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &pma)
50273 : isl::union_pw_multi_aff(pma)
50277 template <typename Domain, typename Domain2, typename Range>
50278 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upa)
50279 : isl::union_pw_multi_aff(upa)
50283 template <typename Domain, typename Domain2, typename Range>
50284 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
50285 : isl::union_pw_multi_aff(ctx, str)
50289 template <typename Domain, typename Domain2, typename Range>
50290 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50292 auto res = isl::union_pw_multi_aff::add(upma2);
50293 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50296 template <typename Domain, typename Domain2, typename Range>
50297 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50299 auto res = isl::union_pw_multi_aff::add(upma2);
50300 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50303 template <typename Domain, typename Domain2, typename Range>
50304 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50306 auto res = isl::union_pw_multi_aff::add(upma2);
50307 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50310 template <typename Domain, typename Domain2, typename Range>
50311 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const
50313 auto res = isl::union_pw_multi_aff::add(upma2);
50314 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50317 template <typename Domain, typename Domain2, typename Range>
50318 template <typename Range2>
50319 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::union_pw_multi_aff<Range, Range2> &upma2) const
50321 auto res = isl::union_pw_multi_aff::apply(upma2);
50322 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
50325 template <typename Domain, typename Domain2, typename Range>
50326 template <typename Range2>
50327 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::multi_aff<Range, Range2> &upma2) const
50329 auto res = isl::union_pw_multi_aff::apply(upma2);
50330 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
50333 template <typename Domain, typename Domain2, typename Range>
50334 template <typename Range2>
50335 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::pw_multi_aff<Range, Range2> &upma2) const
50337 auto res = isl::union_pw_multi_aff::apply(upma2);
50338 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2>(res);
50341 template <typename Domain, typename Domain2, typename Range>
50342 typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::apply(const typed::union_pw_aff<Range, Anonymous> &upma2) const
50344 auto res = isl::union_pw_multi_aff::apply(upma2);
50345 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Anonymous>(res);
50348 template <typename Domain, typename Domain2, typename Range>
50349 typed::multi_union_pw_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::as_multi_union_pw_aff() const
50351 auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
50352 return typed::multi_union_pw_aff<pair<Domain, Domain2>, Range>(res);
50355 template <typename Domain, typename Domain2, typename Range>
50356 typed::pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::as_pw_multi_aff() const
50358 auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
50359 return typed::pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50362 template <typename Domain, typename Domain2, typename Range>
50363 typed::union_map<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::as_union_map() const
50365 auto res = isl::union_pw_multi_aff::as_union_map();
50366 return typed::union_map<pair<Domain, Domain2>, Range>(res);
50369 template <typename Domain, typename Domain2, typename Range>
50370 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::coalesce() const
50372 auto res = isl::union_pw_multi_aff::coalesce();
50373 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50376 template <typename Domain, typename Domain2, typename Range>
50377 typed::union_set<pair<Domain, Domain2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::domain() const
50379 auto res = isl::union_pw_multi_aff::domain();
50380 return typed::union_set<pair<Domain, Domain2>>(res);
50383 template <typename Domain, typename Domain2, typename Range>
50384 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::drop_unused_params() const
50386 auto res = isl::union_pw_multi_aff::drop_unused_params();
50387 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50390 template <typename Domain, typename Domain2, typename Range>
50391 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::empty(const isl::ctx &ctx)
50393 auto res = isl::union_pw_multi_aff::empty(ctx);
50394 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50397 template <typename Domain, typename Domain2, typename Range>
50398 typed::pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::extract_pw_multi_aff(const typed::space<pair<Domain, Domain2>, Range> &space) const
50400 auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
50401 return typed::pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50404 template <typename Domain, typename Domain2, typename Range>
50405 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::union_set<pair<Domain, Domain2>> &context) const
50407 auto res = isl::union_pw_multi_aff::gist(context);
50408 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50411 template <typename Domain, typename Domain2, typename Range>
50412 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::basic_set<pair<Domain, Domain2>> &context) const
50414 auto res = isl::union_pw_multi_aff::gist(context);
50415 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50418 template <typename Domain, typename Domain2, typename Range>
50419 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::point<pair<Domain, Domain2>> &context) const
50421 auto res = isl::union_pw_multi_aff::gist(context);
50422 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50425 template <typename Domain, typename Domain2, typename Range>
50426 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::gist(const typed::set<pair<Domain, Domain2>> &context) const
50428 auto res = isl::union_pw_multi_aff::gist(context);
50429 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50432 template <typename Domain, typename Domain2, typename Range>
50433 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain(const typed::space<pair<Domain, Domain2>> &space) const
50435 auto res = isl::union_pw_multi_aff::intersect_domain(space);
50436 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50439 template <typename Domain, typename Domain2, typename Range>
50440 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
50442 auto res = isl::union_pw_multi_aff::intersect_domain(uset);
50443 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50446 template <typename Domain, typename Domain2, typename Range>
50447 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain_wrapped_domain(const typed::union_set<Domain> &uset) const
50449 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
50450 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50453 template <typename Domain, typename Domain2, typename Range>
50454 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain_wrapped_domain(const typed::basic_set<Domain> &uset) const
50456 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
50457 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50460 template <typename Domain, typename Domain2, typename Range>
50461 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain_wrapped_domain(const typed::point<Domain> &uset) const
50463 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
50464 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50467 template <typename Domain, typename Domain2, typename Range>
50468 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_domain_wrapped_domain(const typed::set<Domain> &uset) const
50470 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
50471 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50474 template <typename Domain, typename Domain2, typename Range>
50475 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_params(const typed::set<> &set) const
50477 auto res = isl::union_pw_multi_aff::intersect_params(set);
50478 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50481 template <typename Domain, typename Domain2, typename Range>
50482 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_params(const typed::basic_set<> &set) const
50484 auto res = isl::union_pw_multi_aff::intersect_params(set);
50485 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50488 template <typename Domain, typename Domain2, typename Range>
50489 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::intersect_params(const typed::point<> &set) const
50491 auto res = isl::union_pw_multi_aff::intersect_params(set);
50492 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50495 template <typename Domain, typename Domain2, typename Range>
50496 template <typename Domain3>
50497 typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, Domain> &upma2) const
50499 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
50500 return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
50503 template <typename Domain, typename Domain2, typename Range>
50504 template <typename Domain3>
50505 typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, Domain> &upma2) const
50507 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
50508 return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
50511 template <typename Domain, typename Domain2, typename Range>
50512 template <typename Domain3>
50513 typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, Domain> &upma2) const
50515 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
50516 return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
50519 template <typename Domain, typename Domain2, typename Range>
50520 template <typename Domain3>
50521 typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, Domain> &upma2) const
50523 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
50524 return typed::union_pw_multi_aff<pair<Domain3, Domain2>, Range>(res);
50527 template <typename Domain, typename Domain2, typename Range>
50528 template <typename Arg3>
50529 typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const
50531 auto res = isl::union_pw_multi_aff::pullback(upma2);
50532 return typed::union_pw_multi_aff<Arg3, Range>(res);
50535 template <typename Domain, typename Domain2, typename Range>
50536 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_multi_aff<pair<Domain, Domain2>> &upma2) const
50538 auto res = isl::union_pw_multi_aff::pullback(upma2);
50539 return typed::union_pw_multi_aff<Range>(res);
50542 template <typename Domain, typename Domain2, typename Range>
50543 template <typename Arg3>
50544 typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const
50546 auto res = isl::union_pw_multi_aff::pullback(upma2);
50547 return typed::union_pw_multi_aff<Arg3, Range>(res);
50550 template <typename Domain, typename Domain2, typename Range>
50551 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::multi_aff<pair<Domain, Domain2>> &upma2) const
50553 auto res = isl::union_pw_multi_aff::pullback(upma2);
50554 return typed::union_pw_multi_aff<Range>(res);
50557 template <typename Domain, typename Domain2, typename Range>
50558 template <typename Arg3>
50559 typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::pw_multi_aff<Arg3, pair<Domain, Domain2>> &upma2) const
50561 auto res = isl::union_pw_multi_aff::pullback(upma2);
50562 return typed::union_pw_multi_aff<Arg3, Range>(res);
50565 template <typename Domain, typename Domain2, typename Range>
50566 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::pw_multi_aff<pair<Domain, Domain2>> &upma2) const
50568 auto res = isl::union_pw_multi_aff::pullback(upma2);
50569 return typed::union_pw_multi_aff<Range>(res);
50572 template <typename Domain, typename Domain2, typename Range>
50573 template <typename Arg3>
50574 typed::union_pw_multi_aff<Arg3, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_aff<Arg3, pair<Domain, Domain2>> &upma2) const
50576 auto res = isl::union_pw_multi_aff::pullback(upma2);
50577 return typed::union_pw_multi_aff<Arg3, Range>(res);
50580 template <typename Domain, typename Domain2, typename Range>
50581 typed::union_pw_multi_aff<Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pullback(const typed::union_pw_aff<pair<Domain, Domain2>> &upma2) const
50583 auto res = isl::union_pw_multi_aff::pullback(upma2);
50584 return typed::union_pw_multi_aff<Range>(res);
50587 template <typename Domain, typename Domain2, typename Range>
50588 typed::pw_multi_aff_list<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::pw_multi_aff_list() const
50590 auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
50591 return typed::pw_multi_aff_list<pair<Domain, Domain2>, Range>(res);
50594 template <typename Domain, typename Domain2, typename Range>
50595 template <typename Range2>
50596 typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
50598 auto res = isl::union_pw_multi_aff::range_product(upma2);
50599 return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
50602 template <typename Domain, typename Domain2, typename Range>
50603 template <typename Range2>
50604 typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
50606 auto res = isl::union_pw_multi_aff::range_product(upma2);
50607 return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
50610 template <typename Domain, typename Domain2, typename Range>
50611 template <typename Range2>
50612 typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::pw_multi_aff<pair<Domain, Domain2>, Range2> &upma2) const
50614 auto res = isl::union_pw_multi_aff::range_product(upma2);
50615 return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Range2>>(res);
50618 template <typename Domain, typename Domain2, typename Range>
50619 typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::range_product(const typed::union_pw_aff<pair<Domain, Domain2>, Anonymous> &upma2) const
50621 auto res = isl::union_pw_multi_aff::range_product(upma2);
50622 return typed::union_pw_multi_aff<pair<Domain, Domain2>, pair<Range, Anonymous>>(res);
50625 template <typename Domain, typename Domain2, typename Range>
50626 typed::space<> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::space() const
50628 auto res = isl::union_pw_multi_aff::space();
50629 return typed::space<>(res);
50632 template <typename Domain, typename Domain2, typename Range>
50633 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50635 auto res = isl::union_pw_multi_aff::sub(upma2);
50636 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50639 template <typename Domain, typename Domain2, typename Range>
50640 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50642 auto res = isl::union_pw_multi_aff::sub(upma2);
50643 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50646 template <typename Domain, typename Domain2, typename Range>
50647 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50649 auto res = isl::union_pw_multi_aff::sub(upma2);
50650 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50653 template <typename Domain, typename Domain2, typename Range>
50654 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::sub(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const
50656 auto res = isl::union_pw_multi_aff::sub(upma2);
50657 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50660 template <typename Domain, typename Domain2, typename Range>
50661 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::subtract_domain(const typed::space<pair<Domain, Domain2>> &space) const
50663 auto res = isl::union_pw_multi_aff::subtract_domain(space);
50664 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50667 template <typename Domain, typename Domain2, typename Range>
50668 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::subtract_domain(const typed::union_set<pair<Domain, Domain2>> &uset) const
50670 auto res = isl::union_pw_multi_aff::subtract_domain(uset);
50671 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50674 template <typename Domain, typename Domain2, typename Range>
50675 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50677 auto res = isl::union_pw_multi_aff::union_add(upma2);
50678 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50681 template <typename Domain, typename Domain2, typename Range>
50682 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50684 auto res = isl::union_pw_multi_aff::union_add(upma2);
50685 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50688 template <typename Domain, typename Domain2, typename Range>
50689 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::pw_multi_aff<pair<Domain, Domain2>, Range> &upma2) const
50691 auto res = isl::union_pw_multi_aff::union_add(upma2);
50692 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50695 template <typename Domain, typename Domain2, typename Range>
50696 typed::union_pw_multi_aff<pair<Domain, Domain2>, Range> typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>::union_add(const typed::union_pw_aff<pair<Domain, Domain2>, Range> &upma2) const
50698 auto res = isl::union_pw_multi_aff::union_add(upma2);
50699 return typed::union_pw_multi_aff<pair<Domain, Domain2>, Range>(res);
50702 template <typename Domain, typename Range, typename Range2>
50703 typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const typed::multi_aff<Domain, pair<Range, Range2>> &ma)
50704 : isl::union_pw_multi_aff(ma)
50708 template <typename Domain, typename Range, typename Range2>
50709 typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &pma)
50710 : isl::union_pw_multi_aff(pma)
50714 template <typename Domain, typename Range, typename Range2>
50715 typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upa)
50716 : isl::union_pw_multi_aff(upa)
50720 template <typename Domain, typename Range, typename Range2>
50721 typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
50722 : isl::union_pw_multi_aff(ctx, str)
50726 template <typename Domain, typename Range, typename Range2>
50727 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
50729 auto res = isl::union_pw_multi_aff::add(upma2);
50730 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50733 template <typename Domain, typename Range, typename Range2>
50734 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const
50736 auto res = isl::union_pw_multi_aff::add(upma2);
50737 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50740 template <typename Domain, typename Range, typename Range2>
50741 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
50743 auto res = isl::union_pw_multi_aff::add(upma2);
50744 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50747 template <typename Domain, typename Range, typename Range2>
50748 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const
50750 auto res = isl::union_pw_multi_aff::add(upma2);
50751 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50754 template <typename Domain, typename Range, typename Range2>
50755 template <typename Arg3>
50756 typed::union_pw_multi_aff<Domain, Arg3> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
50758 auto res = isl::union_pw_multi_aff::apply(upma2);
50759 return typed::union_pw_multi_aff<Domain, Arg3>(res);
50762 template <typename Domain, typename Range, typename Range2>
50763 template <typename Arg3>
50764 typed::union_pw_multi_aff<Domain, Arg3> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::multi_aff<pair<Range, Range2>, Arg3> &upma2) const
50766 auto res = isl::union_pw_multi_aff::apply(upma2);
50767 return typed::union_pw_multi_aff<Domain, Arg3>(res);
50770 template <typename Domain, typename Range, typename Range2>
50771 template <typename Arg3>
50772 typed::union_pw_multi_aff<Domain, Arg3> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg3> &upma2) const
50774 auto res = isl::union_pw_multi_aff::apply(upma2);
50775 return typed::union_pw_multi_aff<Domain, Arg3>(res);
50778 template <typename Domain, typename Range, typename Range2>
50779 typed::union_pw_multi_aff<Domain, Anonymous> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::apply(const typed::union_pw_aff<pair<Range, Range2>, Anonymous> &upma2) const
50781 auto res = isl::union_pw_multi_aff::apply(upma2);
50782 return typed::union_pw_multi_aff<Domain, Anonymous>(res);
50785 template <typename Domain, typename Range, typename Range2>
50786 typed::multi_union_pw_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::as_multi_union_pw_aff() const
50788 auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
50789 return typed::multi_union_pw_aff<Domain, pair<Range, Range2>>(res);
50792 template <typename Domain, typename Range, typename Range2>
50793 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::as_pw_multi_aff() const
50795 auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
50796 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
50799 template <typename Domain, typename Range, typename Range2>
50800 typed::union_map<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::as_union_map() const
50802 auto res = isl::union_pw_multi_aff::as_union_map();
50803 return typed::union_map<Domain, pair<Range, Range2>>(res);
50806 template <typename Domain, typename Range, typename Range2>
50807 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::coalesce() const
50809 auto res = isl::union_pw_multi_aff::coalesce();
50810 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50813 template <typename Domain, typename Range, typename Range2>
50814 typed::union_set<Domain> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::domain() const
50816 auto res = isl::union_pw_multi_aff::domain();
50817 return typed::union_set<Domain>(res);
50820 template <typename Domain, typename Range, typename Range2>
50821 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::drop_unused_params() const
50823 auto res = isl::union_pw_multi_aff::drop_unused_params();
50824 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50827 template <typename Domain, typename Range, typename Range2>
50828 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::empty(const isl::ctx &ctx)
50830 auto res = isl::union_pw_multi_aff::empty(ctx);
50831 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50834 template <typename Domain, typename Range, typename Range2>
50835 typed::pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<Domain, pair<Range, Range2>> &space) const
50837 auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
50838 return typed::pw_multi_aff<Domain, pair<Range, Range2>>(res);
50841 template <typename Domain, typename Range, typename Range2>
50842 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::union_set<Domain> &context) const
50844 auto res = isl::union_pw_multi_aff::gist(context);
50845 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50848 template <typename Domain, typename Range, typename Range2>
50849 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::basic_set<Domain> &context) const
50851 auto res = isl::union_pw_multi_aff::gist(context);
50852 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50855 template <typename Domain, typename Range, typename Range2>
50856 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::point<Domain> &context) const
50858 auto res = isl::union_pw_multi_aff::gist(context);
50859 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50862 template <typename Domain, typename Range, typename Range2>
50863 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::gist(const typed::set<Domain> &context) const
50865 auto res = isl::union_pw_multi_aff::gist(context);
50866 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50869 template <typename Domain, typename Range, typename Range2>
50870 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::space<Domain> &space) const
50872 auto res = isl::union_pw_multi_aff::intersect_domain(space);
50873 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50876 template <typename Domain, typename Range, typename Range2>
50877 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_domain(const typed::union_set<Domain> &uset) const
50879 auto res = isl::union_pw_multi_aff::intersect_domain(uset);
50880 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50883 template <typename Domain, typename Range, typename Range2>
50884 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
50886 auto res = isl::union_pw_multi_aff::intersect_params(set);
50887 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50890 template <typename Domain, typename Range, typename Range2>
50891 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
50893 auto res = isl::union_pw_multi_aff::intersect_params(set);
50894 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50897 template <typename Domain, typename Range, typename Range2>
50898 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
50900 auto res = isl::union_pw_multi_aff::intersect_params(set);
50901 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
50904 template <typename Domain, typename Range, typename Range2>
50905 template <typename Domain2>
50906 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, Domain> &upma2) const
50908 auto res = isl::union_pw_multi_aff::pullback(upma2);
50909 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
50912 template <typename Domain, typename Range, typename Range2>
50913 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain> &upma2) const
50915 auto res = isl::union_pw_multi_aff::pullback(upma2);
50916 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
50919 template <typename Domain, typename Range, typename Range2>
50920 template <typename Domain2>
50921 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, Domain> &upma2) const
50923 auto res = isl::union_pw_multi_aff::pullback(upma2);
50924 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
50927 template <typename Domain, typename Range, typename Range2>
50928 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain> &upma2) const
50930 auto res = isl::union_pw_multi_aff::pullback(upma2);
50931 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
50934 template <typename Domain, typename Range, typename Range2>
50935 template <typename Domain2>
50936 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, Domain> &upma2) const
50938 auto res = isl::union_pw_multi_aff::pullback(upma2);
50939 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
50942 template <typename Domain, typename Range, typename Range2>
50943 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain> &upma2) const
50945 auto res = isl::union_pw_multi_aff::pullback(upma2);
50946 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
50949 template <typename Domain, typename Range, typename Range2>
50950 template <typename Domain2>
50951 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_aff<Domain2, Domain> &upma2) const
50953 auto res = isl::union_pw_multi_aff::pullback(upma2);
50954 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
50957 template <typename Domain, typename Range, typename Range2>
50958 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pullback(const typed::union_pw_aff<Domain> &upma2) const
50960 auto res = isl::union_pw_multi_aff::pullback(upma2);
50961 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
50964 template <typename Domain, typename Range, typename Range2>
50965 typed::pw_multi_aff_list<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::pw_multi_aff_list() const
50967 auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
50968 return typed::pw_multi_aff_list<Domain, pair<Range, Range2>>(res);
50971 template <typename Domain, typename Range, typename Range2>
50972 typed::union_pw_multi_aff<Domain, Range> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_domain() const
50974 auto res = isl::union_pw_multi_aff::range_factor_domain();
50975 return typed::union_pw_multi_aff<Domain, Range>(res);
50978 template <typename Domain, typename Range, typename Range2>
50979 typed::union_pw_multi_aff<Domain, Range2> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_factor_range() const
50981 auto res = isl::union_pw_multi_aff::range_factor_range();
50982 return typed::union_pw_multi_aff<Domain, Range2>(res);
50985 template <typename Domain, typename Range, typename Range2>
50986 template <typename Arg3>
50987 typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<Domain, Arg3> &upma2) const
50989 auto res = isl::union_pw_multi_aff::range_product(upma2);
50990 return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
50993 template <typename Domain, typename Range, typename Range2>
50994 template <typename Arg3>
50995 typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::multi_aff<Domain, Arg3> &upma2) const
50997 auto res = isl::union_pw_multi_aff::range_product(upma2);
50998 return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
51001 template <typename Domain, typename Range, typename Range2>
51002 template <typename Arg3>
51003 typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<Domain, Arg3> &upma2) const
51005 auto res = isl::union_pw_multi_aff::range_product(upma2);
51006 return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Arg3>>(res);
51009 template <typename Domain, typename Range, typename Range2>
51010 typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::range_product(const typed::union_pw_aff<Domain, Anonymous> &upma2) const
51012 auto res = isl::union_pw_multi_aff::range_product(upma2);
51013 return typed::union_pw_multi_aff<Domain, pair<pair<Range, Range2>, Anonymous>>(res);
51016 template <typename Domain, typename Range, typename Range2>
51017 typed::space<> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::space() const
51019 auto res = isl::union_pw_multi_aff::space();
51020 return typed::space<>(res);
51023 template <typename Domain, typename Range, typename Range2>
51024 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
51026 auto res = isl::union_pw_multi_aff::sub(upma2);
51027 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51030 template <typename Domain, typename Range, typename Range2>
51031 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const
51033 auto res = isl::union_pw_multi_aff::sub(upma2);
51034 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51037 template <typename Domain, typename Range, typename Range2>
51038 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
51040 auto res = isl::union_pw_multi_aff::sub(upma2);
51041 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51044 template <typename Domain, typename Range, typename Range2>
51045 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::sub(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const
51047 auto res = isl::union_pw_multi_aff::sub(upma2);
51048 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51051 template <typename Domain, typename Range, typename Range2>
51052 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::space<Domain> &space) const
51054 auto res = isl::union_pw_multi_aff::subtract_domain(space);
51055 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51058 template <typename Domain, typename Range, typename Range2>
51059 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::subtract_domain(const typed::union_set<Domain> &uset) const
51061 auto res = isl::union_pw_multi_aff::subtract_domain(uset);
51062 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51065 template <typename Domain, typename Range, typename Range2>
51066 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
51068 auto res = isl::union_pw_multi_aff::union_add(upma2);
51069 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51072 template <typename Domain, typename Range, typename Range2>
51073 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::multi_aff<Domain, pair<Range, Range2>> &upma2) const
51075 auto res = isl::union_pw_multi_aff::union_add(upma2);
51076 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51079 template <typename Domain, typename Range, typename Range2>
51080 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<Domain, pair<Range, Range2>> &upma2) const
51082 auto res = isl::union_pw_multi_aff::union_add(upma2);
51083 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51086 template <typename Domain, typename Range, typename Range2>
51087 typed::union_pw_multi_aff<Domain, pair<Range, Range2>> typed::union_pw_multi_aff<Domain, pair<Range, Range2>>::union_add(const typed::union_pw_aff<Domain, pair<Range, Range2>> &upma2) const
51089 auto res = isl::union_pw_multi_aff::union_add(upma2);
51090 return typed::union_pw_multi_aff<Domain, pair<Range, Range2>>(res);
51093 template <typename T1, typename T2, typename Range, typename Range2>
51094 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &ma)
51095 : isl::union_pw_multi_aff(ma)
51099 template <typename T1, typename T2, typename Range, typename Range2>
51100 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &pma)
51101 : isl::union_pw_multi_aff(pma)
51105 template <typename T1, typename T2, typename Range, typename Range2>
51106 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upa)
51107 : isl::union_pw_multi_aff(upa)
51111 template <typename T1, typename T2, typename Range, typename Range2>
51112 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_pw_multi_aff(const isl::ctx &ctx, const std::string &str)
51113 : isl::union_pw_multi_aff(ctx, str)
51117 template <typename T1, typename T2, typename Range, typename Range2>
51118 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51120 auto res = isl::union_pw_multi_aff::add(upma2);
51121 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51124 template <typename T1, typename T2, typename Range, typename Range2>
51125 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51127 auto res = isl::union_pw_multi_aff::add(upma2);
51128 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51131 template <typename T1, typename T2, typename Range, typename Range2>
51132 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51134 auto res = isl::union_pw_multi_aff::add(upma2);
51135 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51138 template <typename T1, typename T2, typename Range, typename Range2>
51139 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51141 auto res = isl::union_pw_multi_aff::add(upma2);
51142 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51145 template <typename T1, typename T2, typename Range, typename Range2>
51146 template <typename Arg2>
51147 typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
51149 auto res = isl::union_pw_multi_aff::apply(upma2);
51150 return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
51153 template <typename T1, typename T2, typename Range, typename Range2>
51154 template <typename Arg2>
51155 typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::multi_aff<pair<Range, Range2>, Arg2> &upma2) const
51157 auto res = isl::union_pw_multi_aff::apply(upma2);
51158 return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
51161 template <typename T1, typename T2, typename Range, typename Range2>
51162 template <typename Arg2>
51163 typed::union_pw_multi_aff<pair<T1, T2>, Arg2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::pw_multi_aff<pair<Range, Range2>, Arg2> &upma2) const
51165 auto res = isl::union_pw_multi_aff::apply(upma2);
51166 return typed::union_pw_multi_aff<pair<T1, T2>, Arg2>(res);
51169 template <typename T1, typename T2, typename Range, typename Range2>
51170 typed::union_pw_multi_aff<pair<T1, T2>, Anonymous> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::apply(const typed::union_pw_aff<pair<Range, Range2>, Anonymous> &upma2) const
51172 auto res = isl::union_pw_multi_aff::apply(upma2);
51173 return typed::union_pw_multi_aff<pair<T1, T2>, Anonymous>(res);
51176 template <typename T1, typename T2, typename Range, typename Range2>
51177 typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_multi_union_pw_aff() const
51179 auto res = isl::union_pw_multi_aff::as_multi_union_pw_aff();
51180 return typed::multi_union_pw_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51183 template <typename T1, typename T2, typename Range, typename Range2>
51184 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_pw_multi_aff() const
51186 auto res = isl::union_pw_multi_aff::as_pw_multi_aff();
51187 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51190 template <typename T1, typename T2, typename Range, typename Range2>
51191 typed::union_map<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::as_union_map() const
51193 auto res = isl::union_pw_multi_aff::as_union_map();
51194 return typed::union_map<pair<T1, T2>, pair<Range, Range2>>(res);
51197 template <typename T1, typename T2, typename Range, typename Range2>
51198 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::coalesce() const
51200 auto res = isl::union_pw_multi_aff::coalesce();
51201 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51204 template <typename T1, typename T2, typename Range, typename Range2>
51205 typed::union_set<pair<T1, T2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::domain() const
51207 auto res = isl::union_pw_multi_aff::domain();
51208 return typed::union_set<pair<T1, T2>>(res);
51211 template <typename T1, typename T2, typename Range, typename Range2>
51212 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::drop_unused_params() const
51214 auto res = isl::union_pw_multi_aff::drop_unused_params();
51215 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51218 template <typename T1, typename T2, typename Range, typename Range2>
51219 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::empty(const isl::ctx &ctx)
51221 auto res = isl::union_pw_multi_aff::empty(ctx);
51222 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51225 template <typename T1, typename T2, typename Range, typename Range2>
51226 typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::extract_pw_multi_aff(const typed::space<pair<T1, T2>, pair<Range, Range2>> &space) const
51228 auto res = isl::union_pw_multi_aff::extract_pw_multi_aff(space);
51229 return typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51232 template <typename T1, typename T2, typename Range, typename Range2>
51233 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::union_set<pair<T1, T2>> &context) const
51235 auto res = isl::union_pw_multi_aff::gist(context);
51236 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51239 template <typename T1, typename T2, typename Range, typename Range2>
51240 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::basic_set<pair<T1, T2>> &context) const
51242 auto res = isl::union_pw_multi_aff::gist(context);
51243 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51246 template <typename T1, typename T2, typename Range, typename Range2>
51247 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::point<pair<T1, T2>> &context) const
51249 auto res = isl::union_pw_multi_aff::gist(context);
51250 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51253 template <typename T1, typename T2, typename Range, typename Range2>
51254 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::gist(const typed::set<pair<T1, T2>> &context) const
51256 auto res = isl::union_pw_multi_aff::gist(context);
51257 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51260 template <typename T1, typename T2, typename Range, typename Range2>
51261 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::space<pair<T1, T2>> &space) const
51263 auto res = isl::union_pw_multi_aff::intersect_domain(space);
51264 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51267 template <typename T1, typename T2, typename Range, typename Range2>
51268 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain(const typed::union_set<pair<T1, T2>> &uset) const
51270 auto res = isl::union_pw_multi_aff::intersect_domain(uset);
51271 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51274 template <typename T1, typename T2, typename Range, typename Range2>
51275 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::union_set<T1> &uset) const
51277 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
51278 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51281 template <typename T1, typename T2, typename Range, typename Range2>
51282 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::basic_set<T1> &uset) const
51284 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
51285 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51288 template <typename T1, typename T2, typename Range, typename Range2>
51289 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::point<T1> &uset) const
51291 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
51292 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51295 template <typename T1, typename T2, typename Range, typename Range2>
51296 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_domain_wrapped_domain(const typed::set<T1> &uset) const
51298 auto res = isl::union_pw_multi_aff::intersect_domain_wrapped_domain(uset);
51299 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51302 template <typename T1, typename T2, typename Range, typename Range2>
51303 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::set<> &set) const
51305 auto res = isl::union_pw_multi_aff::intersect_params(set);
51306 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51309 template <typename T1, typename T2, typename Range, typename Range2>
51310 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::basic_set<> &set) const
51312 auto res = isl::union_pw_multi_aff::intersect_params(set);
51313 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51316 template <typename T1, typename T2, typename Range, typename Range2>
51317 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::intersect_params(const typed::point<> &set) const
51319 auto res = isl::union_pw_multi_aff::intersect_params(set);
51320 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51323 template <typename T1, typename T2, typename Range, typename Range2>
51324 template <typename Domain3>
51325 typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_multi_aff<Domain3, T1> &upma2) const
51327 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
51328 return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
51331 template <typename T1, typename T2, typename Range, typename Range2>
51332 template <typename Domain3>
51333 typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::multi_aff<Domain3, T1> &upma2) const
51335 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
51336 return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
51339 template <typename T1, typename T2, typename Range, typename Range2>
51340 template <typename Domain3>
51341 typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::pw_multi_aff<Domain3, T1> &upma2) const
51343 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
51344 return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
51347 template <typename T1, typename T2, typename Range, typename Range2>
51348 template <typename Domain3>
51349 typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::preimage_domain_wrapped_domain(const typed::union_pw_aff<Domain3, T1> &upma2) const
51351 auto res = isl::union_pw_multi_aff::preimage_domain_wrapped_domain(upma2);
51352 return typed::union_pw_multi_aff<pair<Domain3, T2>, pair<Range, Range2>>(res);
51355 template <typename T1, typename T2, typename Range, typename Range2>
51356 template <typename Domain2>
51357 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
51359 auto res = isl::union_pw_multi_aff::pullback(upma2);
51360 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
51363 template <typename T1, typename T2, typename Range, typename Range2>
51364 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_multi_aff<pair<T1, T2>> &upma2) const
51366 auto res = isl::union_pw_multi_aff::pullback(upma2);
51367 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
51370 template <typename T1, typename T2, typename Range, typename Range2>
51371 template <typename Domain2>
51372 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<Domain2, pair<T1, T2>> &upma2) const
51374 auto res = isl::union_pw_multi_aff::pullback(upma2);
51375 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
51378 template <typename T1, typename T2, typename Range, typename Range2>
51379 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::multi_aff<pair<T1, T2>> &upma2) const
51381 auto res = isl::union_pw_multi_aff::pullback(upma2);
51382 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
51385 template <typename T1, typename T2, typename Range, typename Range2>
51386 template <typename Domain2>
51387 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<Domain2, pair<T1, T2>> &upma2) const
51389 auto res = isl::union_pw_multi_aff::pullback(upma2);
51390 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
51393 template <typename T1, typename T2, typename Range, typename Range2>
51394 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::pw_multi_aff<pair<T1, T2>> &upma2) const
51396 auto res = isl::union_pw_multi_aff::pullback(upma2);
51397 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
51400 template <typename T1, typename T2, typename Range, typename Range2>
51401 template <typename Domain2>
51402 typed::union_pw_multi_aff<Domain2, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_aff<Domain2, pair<T1, T2>> &upma2) const
51404 auto res = isl::union_pw_multi_aff::pullback(upma2);
51405 return typed::union_pw_multi_aff<Domain2, pair<Range, Range2>>(res);
51408 template <typename T1, typename T2, typename Range, typename Range2>
51409 typed::union_pw_multi_aff<pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pullback(const typed::union_pw_aff<pair<T1, T2>> &upma2) const
51411 auto res = isl::union_pw_multi_aff::pullback(upma2);
51412 return typed::union_pw_multi_aff<pair<Range, Range2>>(res);
51415 template <typename T1, typename T2, typename Range, typename Range2>
51416 typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::pw_multi_aff_list() const
51418 auto res = isl::union_pw_multi_aff::pw_multi_aff_list();
51419 return typed::pw_multi_aff_list<pair<T1, T2>, pair<Range, Range2>>(res);
51422 template <typename T1, typename T2, typename Range, typename Range2>
51423 typed::union_pw_multi_aff<pair<T1, T2>, Range> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_domain() const
51425 auto res = isl::union_pw_multi_aff::range_factor_domain();
51426 return typed::union_pw_multi_aff<pair<T1, T2>, Range>(res);
51429 template <typename T1, typename T2, typename Range, typename Range2>
51430 typed::union_pw_multi_aff<pair<T1, T2>, Range2> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_factor_range() const
51432 auto res = isl::union_pw_multi_aff::range_factor_range();
51433 return typed::union_pw_multi_aff<pair<T1, T2>, Range2>(res);
51436 template <typename T1, typename T2, typename Range, typename Range2>
51437 template <typename Arg2>
51438 typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
51440 auto res = isl::union_pw_multi_aff::range_product(upma2);
51441 return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
51444 template <typename T1, typename T2, typename Range, typename Range2>
51445 template <typename Arg2>
51446 typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::multi_aff<pair<T1, T2>, Arg2> &upma2) const
51448 auto res = isl::union_pw_multi_aff::range_product(upma2);
51449 return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
51452 template <typename T1, typename T2, typename Range, typename Range2>
51453 template <typename Arg2>
51454 typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::pw_multi_aff<pair<T1, T2>, Arg2> &upma2) const
51456 auto res = isl::union_pw_multi_aff::range_product(upma2);
51457 return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Arg2>>(res);
51460 template <typename T1, typename T2, typename Range, typename Range2>
51461 typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::range_product(const typed::union_pw_aff<pair<T1, T2>, Anonymous> &upma2) const
51463 auto res = isl::union_pw_multi_aff::range_product(upma2);
51464 return typed::union_pw_multi_aff<pair<T1, T2>, pair<pair<Range, Range2>, Anonymous>>(res);
51467 template <typename T1, typename T2, typename Range, typename Range2>
51468 typed::space<> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::space() const
51470 auto res = isl::union_pw_multi_aff::space();
51471 return typed::space<>(res);
51474 template <typename T1, typename T2, typename Range, typename Range2>
51475 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51477 auto res = isl::union_pw_multi_aff::sub(upma2);
51478 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51481 template <typename T1, typename T2, typename Range, typename Range2>
51482 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51484 auto res = isl::union_pw_multi_aff::sub(upma2);
51485 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51488 template <typename T1, typename T2, typename Range, typename Range2>
51489 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51491 auto res = isl::union_pw_multi_aff::sub(upma2);
51492 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51495 template <typename T1, typename T2, typename Range, typename Range2>
51496 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::sub(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51498 auto res = isl::union_pw_multi_aff::sub(upma2);
51499 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51502 template <typename T1, typename T2, typename Range, typename Range2>
51503 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::space<pair<T1, T2>> &space) const
51505 auto res = isl::union_pw_multi_aff::subtract_domain(space);
51506 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51509 template <typename T1, typename T2, typename Range, typename Range2>
51510 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::subtract_domain(const typed::union_set<pair<T1, T2>> &uset) const
51512 auto res = isl::union_pw_multi_aff::subtract_domain(uset);
51513 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51516 template <typename T1, typename T2, typename Range, typename Range2>
51517 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51519 auto res = isl::union_pw_multi_aff::union_add(upma2);
51520 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51523 template <typename T1, typename T2, typename Range, typename Range2>
51524 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51526 auto res = isl::union_pw_multi_aff::union_add(upma2);
51527 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51530 template <typename T1, typename T2, typename Range, typename Range2>
51531 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51533 auto res = isl::union_pw_multi_aff::union_add(upma2);
51534 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51537 template <typename T1, typename T2, typename Range, typename Range2>
51538 typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>> typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>::union_add(const typed::union_pw_aff<pair<T1, T2>, pair<Range, Range2>> &upma2) const
51540 auto res = isl::union_pw_multi_aff::union_add(upma2);
51541 return typed::union_pw_multi_aff<pair<T1, T2>, pair<Range, Range2>>(res);
51544 typed::union_set<>::union_set(const typed::basic_set<> &bset)
51545 : isl::union_set(bset)
51549 typed::union_set<>::union_set(const typed::point<> &pnt)
51550 : isl::union_set(pnt)
51554 typed::union_set<>::union_set(const typed::set<> &set)
51555 : isl::union_set(set)
51559 typed::union_set<>::union_set(const isl::ctx &ctx, const std::string &str)
51560 : isl::union_set(ctx, str)
51564 typed::union_set<> typed::union_set<>::coalesce() const
51566 auto res = isl::union_set::coalesce();
51567 return typed::union_set<>(res);
51570 typed::union_set<> typed::union_set<>::detect_equalities() const
51572 auto res = isl::union_set::detect_equalities();
51573 return typed::union_set<>(res);
51576 typed::union_set<> typed::union_set<>::drop_unused_params() const
51578 auto res = isl::union_set::drop_unused_params();
51579 return typed::union_set<>(res);
51582 typed::union_set<> typed::union_set<>::empty(const isl::ctx &ctx)
51584 auto res = isl::union_set::empty(ctx);
51585 return typed::union_set<>(res);
51588 bool typed::union_set<>::every_set(const std::function<bool(typed::set<>)> &test) const
51590 auto lambda_test = [&] (isl::set arg0) {
51591 return test(typed::set<>(arg0));
51593 return isl::union_set::every_set(lambda_test);
51596 typed::set<> typed::union_set<>::extract_set(const typed::space<> &space) const
51598 auto res = isl::union_set::extract_set(space);
51599 return typed::set<>(res);
51602 void typed::union_set<>::foreach_point(const std::function<void(typed::point<>)> &fn) const
51604 auto lambda_fn = [&] (isl::point arg0) {
51605 return fn(typed::point<>(arg0));
51607 return isl::union_set::foreach_point(lambda_fn);
51610 void typed::union_set<>::foreach_set(const std::function<void(typed::set<>)> &fn) const
51612 auto lambda_fn = [&] (isl::set arg0) {
51613 return fn(typed::set<>(arg0));
51615 return isl::union_set::foreach_set(lambda_fn);
51618 typed::union_set<> typed::union_set<>::gist(const typed::union_set<> &context) const
51620 auto res = isl::union_set::gist(context);
51621 return typed::union_set<>(res);
51624 typed::union_set<> typed::union_set<>::gist(const typed::basic_set<> &context) const
51626 auto res = isl::union_set::gist(context);
51627 return typed::union_set<>(res);
51630 typed::union_set<> typed::union_set<>::gist(const typed::point<> &context) const
51632 auto res = isl::union_set::gist(context);
51633 return typed::union_set<>(res);
51636 typed::union_set<> typed::union_set<>::gist(const typed::set<> &context) const
51638 auto res = isl::union_set::gist(context);
51639 return typed::union_set<>(res);
51642 typed::union_set<> typed::union_set<>::intersect(const typed::union_set<> &uset2) const
51644 auto res = isl::union_set::intersect(uset2);
51645 return typed::union_set<>(res);
51648 typed::union_set<> typed::union_set<>::intersect(const typed::basic_set<> &uset2) const
51650 auto res = isl::union_set::intersect(uset2);
51651 return typed::union_set<>(res);
51654 typed::union_set<> typed::union_set<>::intersect(const typed::point<> &uset2) const
51656 auto res = isl::union_set::intersect(uset2);
51657 return typed::union_set<>(res);
51660 typed::union_set<> typed::union_set<>::intersect(const typed::set<> &uset2) const
51662 auto res = isl::union_set::intersect(uset2);
51663 return typed::union_set<>(res);
51666 typed::union_set<> typed::union_set<>::project_out_all_params() const
51668 auto res = isl::union_set::project_out_all_params();
51669 return typed::union_set<>(res);
51672 typed::set_list<> typed::union_set<>::set_list() const
51674 auto res = isl::union_set::set_list();
51675 return typed::set_list<>(res);
51678 typed::space<> typed::union_set<>::space() const
51680 auto res = isl::union_set::space();
51681 return typed::space<>(res);
51684 typed::union_set<> typed::union_set<>::subtract(const typed::union_set<> &uset2) const
51686 auto res = isl::union_set::subtract(uset2);
51687 return typed::union_set<>(res);
51690 typed::union_set<> typed::union_set<>::subtract(const typed::basic_set<> &uset2) const
51692 auto res = isl::union_set::subtract(uset2);
51693 return typed::union_set<>(res);
51696 typed::union_set<> typed::union_set<>::subtract(const typed::point<> &uset2) const
51698 auto res = isl::union_set::subtract(uset2);
51699 return typed::union_set<>(res);
51702 typed::union_set<> typed::union_set<>::subtract(const typed::set<> &uset2) const
51704 auto res = isl::union_set::subtract(uset2);
51705 return typed::union_set<>(res);
51708 typed::union_set<> typed::union_set<>::unite(const typed::union_set<> &uset2) const
51710 auto res = isl::union_set::unite(uset2);
51711 return typed::union_set<>(res);
51714 typed::union_set<> typed::union_set<>::unite(const typed::basic_set<> &uset2) const
51716 auto res = isl::union_set::unite(uset2);
51717 return typed::union_set<>(res);
51720 typed::union_set<> typed::union_set<>::unite(const typed::point<> &uset2) const
51722 auto res = isl::union_set::unite(uset2);
51723 return typed::union_set<>(res);
51726 typed::union_set<> typed::union_set<>::unite(const typed::set<> &uset2) const
51728 auto res = isl::union_set::unite(uset2);
51729 return typed::union_set<>(res);
51732 typed::union_set<> typed::union_set<>::universe() const
51734 auto res = isl::union_set::universe();
51735 return typed::union_set<>(res);
51738 template <typename Domain>
51739 typed::union_set<Domain>::union_set(const typed::basic_set<Domain> &bset)
51740 : isl::union_set(bset)
51744 template <typename Domain>
51745 typed::union_set<Domain>::union_set(const typed::point<Domain> &pnt)
51746 : isl::union_set(pnt)
51750 template <typename Domain>
51751 typed::union_set<Domain>::union_set(const typed::set<Domain> &set)
51752 : isl::union_set(set)
51756 template <typename Domain>
51757 typed::union_set<Domain>::union_set(const isl::ctx &ctx, const std::string &str)
51758 : isl::union_set(ctx, str)
51762 template <typename Domain>
51763 template <typename Range>
51764 typed::union_set<Range> typed::union_set<Domain>::apply(const typed::union_map<Domain, Range> &umap) const
51766 auto res = isl::union_set::apply(umap);
51767 return typed::union_set<Range>(res);
51770 template <typename Domain>
51771 template <typename Range>
51772 typed::union_set<Range> typed::union_set<Domain>::apply(const typed::basic_map<Domain, Range> &umap) const
51774 auto res = isl::union_set::apply(umap);
51775 return typed::union_set<Range>(res);
51778 template <typename Domain>
51779 template <typename Range>
51780 typed::union_set<Range> typed::union_set<Domain>::apply(const typed::map<Domain, Range> &umap) const
51782 auto res = isl::union_set::apply(umap);
51783 return typed::union_set<Range>(res);
51786 template <typename Domain>
51787 typed::set<Domain> typed::union_set<Domain>::as_set() const
51789 auto res = isl::union_set::as_set();
51790 return typed::set<Domain>(res);
51793 template <typename Domain>
51794 typed::union_set<Domain> typed::union_set<Domain>::coalesce() const
51796 auto res = isl::union_set::coalesce();
51797 return typed::union_set<Domain>(res);
51800 template <typename Domain>
51801 typed::union_set<Domain> typed::union_set<Domain>::detect_equalities() const
51803 auto res = isl::union_set::detect_equalities();
51804 return typed::union_set<Domain>(res);
51807 template <typename Domain>
51808 typed::union_set<Domain> typed::union_set<Domain>::drop_unused_params() const
51810 auto res = isl::union_set::drop_unused_params();
51811 return typed::union_set<Domain>(res);
51814 template <typename Domain>
51815 typed::union_set<Domain> typed::union_set<Domain>::empty(const isl::ctx &ctx)
51817 auto res = isl::union_set::empty(ctx);
51818 return typed::union_set<Domain>(res);
51821 template <typename Domain>
51822 bool typed::union_set<Domain>::every_set(const std::function<bool(typed::set<Domain>)> &test) const
51824 auto lambda_test = [&] (isl::set arg0) {
51825 return test(typed::set<Domain>(arg0));
51827 return isl::union_set::every_set(lambda_test);
51830 template <typename Domain>
51831 typed::set<Domain> typed::union_set<Domain>::extract_set(const typed::space<Domain> &space) const
51833 auto res = isl::union_set::extract_set(space);
51834 return typed::set<Domain>(res);
51837 template <typename Domain>
51838 void typed::union_set<Domain>::foreach_point(const std::function<void(typed::point<Domain>)> &fn) const
51840 auto lambda_fn = [&] (isl::point arg0) {
51841 return fn(typed::point<Domain>(arg0));
51843 return isl::union_set::foreach_point(lambda_fn);
51846 template <typename Domain>
51847 void typed::union_set<Domain>::foreach_set(const std::function<void(typed::set<Domain>)> &fn) const
51849 auto lambda_fn = [&] (isl::set arg0) {
51850 return fn(typed::set<Domain>(arg0));
51852 return isl::union_set::foreach_set(lambda_fn);
51855 template <typename Domain>
51856 typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::union_set<Domain> &context) const
51858 auto res = isl::union_set::gist(context);
51859 return typed::union_set<Domain>(res);
51862 template <typename Domain>
51863 typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::basic_set<Domain> &context) const
51865 auto res = isl::union_set::gist(context);
51866 return typed::union_set<Domain>(res);
51869 template <typename Domain>
51870 typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::point<Domain> &context) const
51872 auto res = isl::union_set::gist(context);
51873 return typed::union_set<Domain>(res);
51876 template <typename Domain>
51877 typed::union_set<Domain> typed::union_set<Domain>::gist(const typed::set<Domain> &context) const
51879 auto res = isl::union_set::gist(context);
51880 return typed::union_set<Domain>(res);
51883 template <typename Domain>
51884 typed::union_set<Domain> typed::union_set<Domain>::gist_params(const typed::set<> &set) const
51886 auto res = isl::union_set::gist_params(set);
51887 return typed::union_set<Domain>(res);
51890 template <typename Domain>
51891 typed::union_set<Domain> typed::union_set<Domain>::gist_params(const typed::basic_set<> &set) const
51893 auto res = isl::union_set::gist_params(set);
51894 return typed::union_set<Domain>(res);
51897 template <typename Domain>
51898 typed::union_set<Domain> typed::union_set<Domain>::gist_params(const typed::point<> &set) const
51900 auto res = isl::union_set::gist_params(set);
51901 return typed::union_set<Domain>(res);
51904 template <typename Domain>
51905 typed::union_map<Domain, Domain> typed::union_set<Domain>::identity() const
51907 auto res = isl::union_set::identity();
51908 return typed::union_map<Domain, Domain>(res);
51911 template <typename Domain>
51912 typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::union_set<Domain> &uset2) const
51914 auto res = isl::union_set::intersect(uset2);
51915 return typed::union_set<Domain>(res);
51918 template <typename Domain>
51919 typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::basic_set<Domain> &uset2) const
51921 auto res = isl::union_set::intersect(uset2);
51922 return typed::union_set<Domain>(res);
51925 template <typename Domain>
51926 typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::point<Domain> &uset2) const
51928 auto res = isl::union_set::intersect(uset2);
51929 return typed::union_set<Domain>(res);
51932 template <typename Domain>
51933 typed::union_set<Domain> typed::union_set<Domain>::intersect(const typed::set<Domain> &uset2) const
51935 auto res = isl::union_set::intersect(uset2);
51936 return typed::union_set<Domain>(res);
51939 template <typename Domain>
51940 typed::union_set<Domain> typed::union_set<Domain>::intersect_params(const typed::set<> &set) const
51942 auto res = isl::union_set::intersect_params(set);
51943 return typed::union_set<Domain>(res);
51946 template <typename Domain>
51947 typed::union_set<Domain> typed::union_set<Domain>::intersect_params(const typed::basic_set<> &set) const
51949 auto res = isl::union_set::intersect_params(set);
51950 return typed::union_set<Domain>(res);
51953 template <typename Domain>
51954 typed::union_set<Domain> typed::union_set<Domain>::intersect_params(const typed::point<> &set) const
51956 auto res = isl::union_set::intersect_params(set);
51957 return typed::union_set<Domain>(res);
51960 template <typename Domain>
51961 typed::union_set<Domain> typed::union_set<Domain>::lexmax() const
51963 auto res = isl::union_set::lexmax();
51964 return typed::union_set<Domain>(res);
51967 template <typename Domain>
51968 typed::union_set<Domain> typed::union_set<Domain>::lexmin() const
51970 auto res = isl::union_set::lexmin();
51971 return typed::union_set<Domain>(res);
51974 template <typename Domain>
51975 typed::set<> typed::union_set<Domain>::params() const
51977 auto res = isl::union_set::params();
51978 return typed::set<>(res);
51981 template <typename Domain>
51982 template <typename Domain2>
51983 typed::union_set<Domain2> typed::union_set<Domain>::preimage(const typed::multi_aff<Domain2, Domain> &ma) const
51985 auto res = isl::union_set::preimage(ma);
51986 return typed::union_set<Domain2>(res);
51989 template <typename Domain>
51990 template <typename Domain2>
51991 typed::union_set<Domain2> typed::union_set<Domain>::preimage(const typed::pw_multi_aff<Domain2, Domain> &pma) const
51993 auto res = isl::union_set::preimage(pma);
51994 return typed::union_set<Domain2>(res);
51997 template <typename Domain>
51998 template <typename Domain2>
51999 typed::union_set<Domain2> typed::union_set<Domain>::preimage(const typed::union_pw_multi_aff<Domain2, Domain> &upma) const
52001 auto res = isl::union_set::preimage(upma);
52002 return typed::union_set<Domain2>(res);
52005 template <typename Domain>
52006 typed::union_set<Domain> typed::union_set<Domain>::project_out_all_params() const
52008 auto res = isl::union_set::project_out_all_params();
52009 return typed::union_set<Domain>(res);
52012 template <typename Domain>
52013 typed::set_list<Domain> typed::union_set<Domain>::set_list() const
52015 auto res = isl::union_set::set_list();
52016 return typed::set_list<Domain>(res);
52019 template <typename Domain>
52020 typed::space<> typed::union_set<Domain>::space() const
52022 auto res = isl::union_set::space();
52023 return typed::space<>(res);
52026 template <typename Domain>
52027 typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::union_set<Domain> &uset2) const
52029 auto res = isl::union_set::subtract(uset2);
52030 return typed::union_set<Domain>(res);
52033 template <typename Domain>
52034 typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::basic_set<Domain> &uset2) const
52036 auto res = isl::union_set::subtract(uset2);
52037 return typed::union_set<Domain>(res);
52040 template <typename Domain>
52041 typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::point<Domain> &uset2) const
52043 auto res = isl::union_set::subtract(uset2);
52044 return typed::union_set<Domain>(res);
52047 template <typename Domain>
52048 typed::union_set<Domain> typed::union_set<Domain>::subtract(const typed::set<Domain> &uset2) const
52050 auto res = isl::union_set::subtract(uset2);
52051 return typed::union_set<Domain>(res);
52054 template <typename Domain>
52055 typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::union_set<Domain> &uset2) const
52057 auto res = isl::union_set::unite(uset2);
52058 return typed::union_set<Domain>(res);
52061 template <typename Domain>
52062 typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::basic_set<Domain> &uset2) const
52064 auto res = isl::union_set::unite(uset2);
52065 return typed::union_set<Domain>(res);
52068 template <typename Domain>
52069 typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::point<Domain> &uset2) const
52071 auto res = isl::union_set::unite(uset2);
52072 return typed::union_set<Domain>(res);
52075 template <typename Domain>
52076 typed::union_set<Domain> typed::union_set<Domain>::unite(const typed::set<Domain> &uset2) const
52078 auto res = isl::union_set::unite(uset2);
52079 return typed::union_set<Domain>(res);
52082 template <typename Domain>
52083 typed::union_set<Domain> typed::union_set<Domain>::universe() const
52085 auto res = isl::union_set::universe();
52086 return typed::union_set<Domain>(res);
52089 template <typename Domain, typename Range>
52090 typed::union_set<pair<Domain, Range>>::union_set(const typed::basic_set<pair<Domain, Range>> &bset)
52091 : isl::union_set(bset)
52095 template <typename Domain, typename Range>
52096 typed::union_set<pair<Domain, Range>>::union_set(const typed::point<pair<Domain, Range>> &pnt)
52097 : isl::union_set(pnt)
52101 template <typename Domain, typename Range>
52102 typed::union_set<pair<Domain, Range>>::union_set(const typed::set<pair<Domain, Range>> &set)
52103 : isl::union_set(set)
52107 template <typename Domain, typename Range>
52108 typed::union_set<pair<Domain, Range>>::union_set(const isl::ctx &ctx, const std::string &str)
52109 : isl::union_set(ctx, str)
52113 template <typename Domain, typename Range>
52114 template <typename Arg2>
52115 typed::union_set<Arg2> typed::union_set<pair<Domain, Range>>::apply(const typed::union_map<pair<Domain, Range>, Arg2> &umap) const
52117 auto res = isl::union_set::apply(umap);
52118 return typed::union_set<Arg2>(res);
52121 template <typename Domain, typename Range>
52122 template <typename Arg2>
52123 typed::union_set<Arg2> typed::union_set<pair<Domain, Range>>::apply(const typed::basic_map<pair<Domain, Range>, Arg2> &umap) const
52125 auto res = isl::union_set::apply(umap);
52126 return typed::union_set<Arg2>(res);
52129 template <typename Domain, typename Range>
52130 template <typename Arg2>
52131 typed::union_set<Arg2> typed::union_set<pair<Domain, Range>>::apply(const typed::map<pair<Domain, Range>, Arg2> &umap) const
52133 auto res = isl::union_set::apply(umap);
52134 return typed::union_set<Arg2>(res);
52137 template <typename Domain, typename Range>
52138 typed::set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::as_set() const
52140 auto res = isl::union_set::as_set();
52141 return typed::set<pair<Domain, Range>>(res);
52144 template <typename Domain, typename Range>
52145 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::coalesce() const
52147 auto res = isl::union_set::coalesce();
52148 return typed::union_set<pair<Domain, Range>>(res);
52151 template <typename Domain, typename Range>
52152 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::detect_equalities() const
52154 auto res = isl::union_set::detect_equalities();
52155 return typed::union_set<pair<Domain, Range>>(res);
52158 template <typename Domain, typename Range>
52159 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::drop_unused_params() const
52161 auto res = isl::union_set::drop_unused_params();
52162 return typed::union_set<pair<Domain, Range>>(res);
52165 template <typename Domain, typename Range>
52166 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::empty(const isl::ctx &ctx)
52168 auto res = isl::union_set::empty(ctx);
52169 return typed::union_set<pair<Domain, Range>>(res);
52172 template <typename Domain, typename Range>
52173 bool typed::union_set<pair<Domain, Range>>::every_set(const std::function<bool(typed::set<pair<Domain, Range>>)> &test) const
52175 auto lambda_test = [&] (isl::set arg0) {
52176 return test(typed::set<pair<Domain, Range>>(arg0));
52178 return isl::union_set::every_set(lambda_test);
52181 template <typename Domain, typename Range>
52182 typed::set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::extract_set(const typed::space<pair<Domain, Range>> &space) const
52184 auto res = isl::union_set::extract_set(space);
52185 return typed::set<pair<Domain, Range>>(res);
52188 template <typename Domain, typename Range>
52189 void typed::union_set<pair<Domain, Range>>::foreach_point(const std::function<void(typed::point<pair<Domain, Range>>)> &fn) const
52191 auto lambda_fn = [&] (isl::point arg0) {
52192 return fn(typed::point<pair<Domain, Range>>(arg0));
52194 return isl::union_set::foreach_point(lambda_fn);
52197 template <typename Domain, typename Range>
52198 void typed::union_set<pair<Domain, Range>>::foreach_set(const std::function<void(typed::set<pair<Domain, Range>>)> &fn) const
52200 auto lambda_fn = [&] (isl::set arg0) {
52201 return fn(typed::set<pair<Domain, Range>>(arg0));
52203 return isl::union_set::foreach_set(lambda_fn);
52206 template <typename Domain, typename Range>
52207 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::union_set<pair<Domain, Range>> &context) const
52209 auto res = isl::union_set::gist(context);
52210 return typed::union_set<pair<Domain, Range>>(res);
52213 template <typename Domain, typename Range>
52214 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::basic_set<pair<Domain, Range>> &context) const
52216 auto res = isl::union_set::gist(context);
52217 return typed::union_set<pair<Domain, Range>>(res);
52220 template <typename Domain, typename Range>
52221 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::point<pair<Domain, Range>> &context) const
52223 auto res = isl::union_set::gist(context);
52224 return typed::union_set<pair<Domain, Range>>(res);
52227 template <typename Domain, typename Range>
52228 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist(const typed::set<pair<Domain, Range>> &context) const
52230 auto res = isl::union_set::gist(context);
52231 return typed::union_set<pair<Domain, Range>>(res);
52234 template <typename Domain, typename Range>
52235 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist_params(const typed::set<> &set) const
52237 auto res = isl::union_set::gist_params(set);
52238 return typed::union_set<pair<Domain, Range>>(res);
52241 template <typename Domain, typename Range>
52242 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist_params(const typed::basic_set<> &set) const
52244 auto res = isl::union_set::gist_params(set);
52245 return typed::union_set<pair<Domain, Range>>(res);
52248 template <typename Domain, typename Range>
52249 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::gist_params(const typed::point<> &set) const
52251 auto res = isl::union_set::gist_params(set);
52252 return typed::union_set<pair<Domain, Range>>(res);
52255 template <typename Domain, typename Range>
52256 typed::union_map<pair<Domain, Range>, pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::identity() const
52258 auto res = isl::union_set::identity();
52259 return typed::union_map<pair<Domain, Range>, pair<Domain, Range>>(res);
52262 template <typename Domain, typename Range>
52263 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::union_set<pair<Domain, Range>> &uset2) const
52265 auto res = isl::union_set::intersect(uset2);
52266 return typed::union_set<pair<Domain, Range>>(res);
52269 template <typename Domain, typename Range>
52270 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::basic_set<pair<Domain, Range>> &uset2) const
52272 auto res = isl::union_set::intersect(uset2);
52273 return typed::union_set<pair<Domain, Range>>(res);
52276 template <typename Domain, typename Range>
52277 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::point<pair<Domain, Range>> &uset2) const
52279 auto res = isl::union_set::intersect(uset2);
52280 return typed::union_set<pair<Domain, Range>>(res);
52283 template <typename Domain, typename Range>
52284 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect(const typed::set<pair<Domain, Range>> &uset2) const
52286 auto res = isl::union_set::intersect(uset2);
52287 return typed::union_set<pair<Domain, Range>>(res);
52290 template <typename Domain, typename Range>
52291 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect_params(const typed::set<> &set) const
52293 auto res = isl::union_set::intersect_params(set);
52294 return typed::union_set<pair<Domain, Range>>(res);
52297 template <typename Domain, typename Range>
52298 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect_params(const typed::basic_set<> &set) const
52300 auto res = isl::union_set::intersect_params(set);
52301 return typed::union_set<pair<Domain, Range>>(res);
52304 template <typename Domain, typename Range>
52305 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::intersect_params(const typed::point<> &set) const
52307 auto res = isl::union_set::intersect_params(set);
52308 return typed::union_set<pair<Domain, Range>>(res);
52311 template <typename Domain, typename Range>
52312 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::lexmax() const
52314 auto res = isl::union_set::lexmax();
52315 return typed::union_set<pair<Domain, Range>>(res);
52318 template <typename Domain, typename Range>
52319 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::lexmin() const
52321 auto res = isl::union_set::lexmin();
52322 return typed::union_set<pair<Domain, Range>>(res);
52325 template <typename Domain, typename Range>
52326 typed::set<> typed::union_set<pair<Domain, Range>>::params() const
52328 auto res = isl::union_set::params();
52329 return typed::set<>(res);
52332 template <typename Domain, typename Range>
52333 template <typename Domain2>
52334 typed::union_set<Domain2> typed::union_set<pair<Domain, Range>>::preimage(const typed::multi_aff<Domain2, pair<Domain, Range>> &ma) const
52336 auto res = isl::union_set::preimage(ma);
52337 return typed::union_set<Domain2>(res);
52340 template <typename Domain, typename Range>
52341 template <typename Domain2>
52342 typed::union_set<Domain2> typed::union_set<pair<Domain, Range>>::preimage(const typed::pw_multi_aff<Domain2, pair<Domain, Range>> &pma) const
52344 auto res = isl::union_set::preimage(pma);
52345 return typed::union_set<Domain2>(res);
52348 template <typename Domain, typename Range>
52349 template <typename Domain2>
52350 typed::union_set<Domain2> typed::union_set<pair<Domain, Range>>::preimage(const typed::union_pw_multi_aff<Domain2, pair<Domain, Range>> &upma) const
52352 auto res = isl::union_set::preimage(upma);
52353 return typed::union_set<Domain2>(res);
52356 template <typename Domain, typename Range>
52357 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::project_out_all_params() const
52359 auto res = isl::union_set::project_out_all_params();
52360 return typed::union_set<pair<Domain, Range>>(res);
52363 template <typename Domain, typename Range>
52364 typed::set_list<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::set_list() const
52366 auto res = isl::union_set::set_list();
52367 return typed::set_list<pair<Domain, Range>>(res);
52370 template <typename Domain, typename Range>
52371 typed::space<> typed::union_set<pair<Domain, Range>>::space() const
52373 auto res = isl::union_set::space();
52374 return typed::space<>(res);
52377 template <typename Domain, typename Range>
52378 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::union_set<pair<Domain, Range>> &uset2) const
52380 auto res = isl::union_set::subtract(uset2);
52381 return typed::union_set<pair<Domain, Range>>(res);
52384 template <typename Domain, typename Range>
52385 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::basic_set<pair<Domain, Range>> &uset2) const
52387 auto res = isl::union_set::subtract(uset2);
52388 return typed::union_set<pair<Domain, Range>>(res);
52391 template <typename Domain, typename Range>
52392 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::point<pair<Domain, Range>> &uset2) const
52394 auto res = isl::union_set::subtract(uset2);
52395 return typed::union_set<pair<Domain, Range>>(res);
52398 template <typename Domain, typename Range>
52399 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::subtract(const typed::set<pair<Domain, Range>> &uset2) const
52401 auto res = isl::union_set::subtract(uset2);
52402 return typed::union_set<pair<Domain, Range>>(res);
52405 template <typename Domain, typename Range>
52406 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::union_set<pair<Domain, Range>> &uset2) const
52408 auto res = isl::union_set::unite(uset2);
52409 return typed::union_set<pair<Domain, Range>>(res);
52412 template <typename Domain, typename Range>
52413 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::basic_set<pair<Domain, Range>> &uset2) const
52415 auto res = isl::union_set::unite(uset2);
52416 return typed::union_set<pair<Domain, Range>>(res);
52419 template <typename Domain, typename Range>
52420 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::point<pair<Domain, Range>> &uset2) const
52422 auto res = isl::union_set::unite(uset2);
52423 return typed::union_set<pair<Domain, Range>>(res);
52426 template <typename Domain, typename Range>
52427 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::unite(const typed::set<pair<Domain, Range>> &uset2) const
52429 auto res = isl::union_set::unite(uset2);
52430 return typed::union_set<pair<Domain, Range>>(res);
52433 template <typename Domain, typename Range>
52434 typed::union_set<pair<Domain, Range>> typed::union_set<pair<Domain, Range>>::universe() const
52436 auto res = isl::union_set::universe();
52437 return typed::union_set<pair<Domain, Range>>(res);
52440 template <typename Domain, typename Range>
52441 typed::union_map<Domain, Range> typed::union_set<pair<Domain, Range>>::unwrap() const
52443 auto res = isl::union_set::unwrap();
52444 return typed::union_map<Domain, Range>(res);
52447 typed::union_set_list<>::union_set_list(const isl::ctx &ctx, int n)
52448 : isl::union_set_list(ctx, n)
52452 typed::union_set_list<>::union_set_list(const typed::union_set<> &el)
52453 : isl::union_set_list(el)
52457 typed::union_set_list<>::union_set_list(const isl::ctx &ctx, const std::string &str)
52458 : isl::union_set_list(ctx, str)
52462 typed::union_set_list<> typed::union_set_list<>::add(const typed::union_set<> &el) const
52464 auto res = isl::union_set_list::add(el);
52465 return typed::union_set_list<>(res);
52468 typed::union_set_list<> typed::union_set_list<>::add(const typed::basic_set<> &el) const
52470 auto res = isl::union_set_list::add(el);
52471 return typed::union_set_list<>(res);
52474 typed::union_set_list<> typed::union_set_list<>::add(const typed::point<> &el) const
52476 auto res = isl::union_set_list::add(el);
52477 return typed::union_set_list<>(res);
52480 typed::union_set_list<> typed::union_set_list<>::add(const typed::set<> &el) const
52482 auto res = isl::union_set_list::add(el);
52483 return typed::union_set_list<>(res);
52486 typed::union_set_list<> typed::union_set_list<>::drop(unsigned int first, unsigned int n) const
52488 auto res = isl::union_set_list::drop(first, n);
52489 return typed::union_set_list<>(res);
52492 void typed::union_set_list<>::foreach(const std::function<void(typed::union_set<>)> &fn) const
52494 auto lambda_fn = [&] (isl::union_set arg0) {
52495 return fn(typed::union_set<>(arg0));
52497 return isl::union_set_list::foreach(lambda_fn);
52500 void typed::union_set_list<>::foreach_scc(const std::function<bool(typed::union_set<>, typed::union_set<>)> &follows, const std::function<void(typed::union_set_list<>)> &fn) const
52502 auto lambda_follows = [&] (isl::union_set arg0, isl::union_set arg1) {
52503 return follows(typed::union_set<>(arg0), typed::union_set<>(arg1));
52505 auto lambda_fn = [&] (isl::union_set_list arg0) {
52506 return fn(typed::union_set_list<>(arg0));
52508 return isl::union_set_list::foreach_scc(lambda_follows, lambda_fn);
52511 template <typename Domain>
52512 typed::union_set_list<Domain>::union_set_list(const isl::ctx &ctx, int n)
52513 : isl::union_set_list(ctx, n)
52517 template <typename Domain>
52518 typed::union_set_list<Domain>::union_set_list(const typed::union_set<Domain> &el)
52519 : isl::union_set_list(el)
52523 template <typename Domain>
52524 typed::union_set_list<Domain>::union_set_list(const isl::ctx &ctx, const std::string &str)
52525 : isl::union_set_list(ctx, str)
52529 template <typename Domain>
52530 typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::union_set<Domain> &el) const
52532 auto res = isl::union_set_list::add(el);
52533 return typed::union_set_list<Domain>(res);
52536 template <typename Domain>
52537 typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::basic_set<Domain> &el) const
52539 auto res = isl::union_set_list::add(el);
52540 return typed::union_set_list<Domain>(res);
52543 template <typename Domain>
52544 typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::point<Domain> &el) const
52546 auto res = isl::union_set_list::add(el);
52547 return typed::union_set_list<Domain>(res);
52550 template <typename Domain>
52551 typed::union_set_list<Domain> typed::union_set_list<Domain>::add(const typed::set<Domain> &el) const
52553 auto res = isl::union_set_list::add(el);
52554 return typed::union_set_list<Domain>(res);
52557 template <typename Domain>
52558 typed::union_set<Domain> typed::union_set_list<Domain>::at(int index) const
52560 auto res = isl::union_set_list::at(index);
52561 return typed::union_set<Domain>(res);
52564 template <typename Domain>
52565 typed::union_set_list<Domain> typed::union_set_list<Domain>::drop(unsigned int first, unsigned int n) const
52567 auto res = isl::union_set_list::drop(first, n);
52568 return typed::union_set_list<Domain>(res);
52571 template <typename Domain>
52572 void typed::union_set_list<Domain>::foreach(const std::function<void(typed::union_set<Domain>)> &fn) const
52574 auto lambda_fn = [&] (isl::union_set arg0) {
52575 return fn(typed::union_set<Domain>(arg0));
52577 return isl::union_set_list::foreach(lambda_fn);
52580 template <typename Domain>
52581 void typed::union_set_list<Domain>::foreach_scc(const std::function<bool(typed::union_set<Domain>, typed::union_set<Domain>)> &follows, const std::function<void(typed::union_set_list<Domain>)> &fn) const
52583 auto lambda_follows = [&] (isl::union_set arg0, isl::union_set arg1) {
52584 return follows(typed::union_set<Domain>(arg0), typed::union_set<Domain>(arg1));
52586 auto lambda_fn = [&] (isl::union_set_list arg0) {
52587 return fn(typed::union_set_list<Domain>(arg0));
52589 return isl::union_set_list::foreach_scc(lambda_follows, lambda_fn);
52592 template <typename Domain>
52593 typed::union_set_list<Domain> typed::union_set_list<Domain>::set_at(int index, const typed::union_set<Anonymous> &el) const
52595 auto res = isl::union_set_list::set_at(index, el);
52596 return typed::union_set_list<Domain>(res);
52599 typed::val<Anonymous>::val(const isl::ctx &ctx, long i)
52600 : isl::val(ctx, i)
52604 typed::val<Anonymous>::val(const isl::ctx &ctx, const std::string &str)
52605 : isl::val(ctx, str)
52609 typed::val<Anonymous> typed::val<Anonymous>::add(const typed::val<Anonymous> &v2) const
52611 auto res = isl::val::add(v2);
52612 return typed::val<Anonymous>(res);
52615 typed::val<Anonymous> typed::val<Anonymous>::add(long v2) const
52617 auto res = isl::val::add(v2);
52618 return typed::val<Anonymous>(res);
52621 typed::val<Anonymous> typed::val<Anonymous>::ceil() const
52623 auto res = isl::val::ceil();
52624 return typed::val<Anonymous>(res);
52627 typed::val<Anonymous> typed::val<Anonymous>::floor() const
52629 auto res = isl::val::floor();
52630 return typed::val<Anonymous>(res);
52633 typed::val<Anonymous> typed::val<Anonymous>::max(const typed::val<Anonymous> &v2) const
52635 auto res = isl::val::max(v2);
52636 return typed::val<Anonymous>(res);
52639 typed::val<Anonymous> typed::val<Anonymous>::max(long v2) const
52641 auto res = isl::val::max(v2);
52642 return typed::val<Anonymous>(res);
52645 typed::val<Anonymous> typed::val<Anonymous>::min(const typed::val<Anonymous> &v2) const
52647 auto res = isl::val::min(v2);
52648 return typed::val<Anonymous>(res);
52651 typed::val<Anonymous> typed::val<Anonymous>::min(long v2) const
52653 auto res = isl::val::min(v2);
52654 return typed::val<Anonymous>(res);
52657 typed::val<Anonymous> typed::val<Anonymous>::mod(const typed::val<Anonymous> &v2) const
52659 auto res = isl::val::mod(v2);
52660 return typed::val<Anonymous>(res);
52663 typed::val<Anonymous> typed::val<Anonymous>::mod(long v2) const
52665 auto res = isl::val::mod(v2);
52666 return typed::val<Anonymous>(res);
52669 typed::val<Anonymous> typed::val<Anonymous>::neg() const
52671 auto res = isl::val::neg();
52672 return typed::val<Anonymous>(res);
52675 typed::val<Anonymous> typed::val<Anonymous>::sub(const typed::val<Anonymous> &v2) const
52677 auto res = isl::val::sub(v2);
52678 return typed::val<Anonymous>(res);
52681 typed::val<Anonymous> typed::val<Anonymous>::sub(long v2) const
52683 auto res = isl::val::sub(v2);
52684 return typed::val<Anonymous>(res);
52687 typed::val_list<Anonymous>::val_list(const isl::ctx &ctx, int n)
52688 : isl::val_list(ctx, n)
52692 typed::val_list<Anonymous>::val_list(const typed::val<Anonymous> &el)
52693 : isl::val_list(el)
52697 typed::val_list<Anonymous>::val_list(const isl::ctx &ctx, const std::string &str)
52698 : isl::val_list(ctx, str)
52702 typed::val_list<Anonymous> typed::val_list<Anonymous>::add(const typed::val<Anonymous> &el) const
52704 auto res = isl::val_list::add(el);
52705 return typed::val_list<Anonymous>(res);
52708 typed::val_list<Anonymous> typed::val_list<Anonymous>::add(long el) const
52710 auto res = isl::val_list::add(el);
52711 return typed::val_list<Anonymous>(res);
52714 typed::val<Anonymous> typed::val_list<Anonymous>::at(int index) const
52716 auto res = isl::val_list::at(index);
52717 return typed::val<Anonymous>(res);
52720 typed::val_list<Anonymous> typed::val_list<Anonymous>::drop(unsigned int first, unsigned int n) const
52722 auto res = isl::val_list::drop(first, n);
52723 return typed::val_list<Anonymous>(res);
52726 void typed::val_list<Anonymous>::foreach(const std::function<void(typed::val<Anonymous>)> &fn) const
52728 auto lambda_fn = [&] (isl::val arg0) {
52729 return fn(typed::val<Anonymous>(arg0));
52731 return isl::val_list::foreach(lambda_fn);
52734 void typed::val_list<Anonymous>::foreach_scc(const std::function<bool(typed::val<Anonymous>, typed::val<Anonymous>)> &follows, const std::function<void(typed::val_list<Anonymous>)> &fn) const
52736 auto lambda_follows = [&] (isl::val arg0, isl::val arg1) {
52737 return follows(typed::val<Anonymous>(arg0), typed::val<Anonymous>(arg1));
52739 auto lambda_fn = [&] (isl::val_list arg0) {
52740 return fn(typed::val_list<Anonymous>(arg0));
52742 return isl::val_list::foreach_scc(lambda_follows, lambda_fn);
52745 typed::val_list<Anonymous> typed::val_list<Anonymous>::set_at(int index, const typed::val<Anonymous> &el) const
52747 auto res = isl::val_list::set_at(index, el);
52748 return typed::val_list<Anonymous>(res);
52751 typed::val_list<Anonymous> typed::val_list<Anonymous>::set_at(int index, long el) const
52753 auto res = isl::val_list::set_at(index, el);
52754 return typed::val_list<Anonymous>(res);
52757 } // namespace typed
52758 } // namespace isl
52760 #endif /* ISL_TYPED_CPP */