1 /// These are automatically generated checked 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.
7
8 // clang-format off
9
10 #ifndef ISL_CPP_CHECKED
11 #define ISL_CPP_CHECKED
12
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <isl/set.h>
16
17 #include <functional>
18 #include <memory>
19 #include <ostream>
20 #include <string>
21 #include <type_traits>
22
23 namespace isl {
24
25 #define ISLPP_STRINGIZE_(X) #X
26 #define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
27
28 #define ISLPP_ASSERT(test, message) \
29 do { \
30 if (test) \
31 break; \
32 fputs("Assertion \"" #test "\" failed at " __FILE__ \
33 ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
34 stderr); \
35 abort(); \
36 } while (0)
37
38 /* Class used to check that isl::checked::boolean,
39 * isl::checked::stat and isl::checked::size values are checked for errors.
40 */
41 struct checker {
42 bool checked = false;
~checkerchecker43 ~checker() {
44 //ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
45 }
46 };
47
48 class boolean {
49 private:
50 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
51 isl_bool val;
52
53 friend boolean manage(isl_bool val);
boolean(isl_bool val)54 boolean(isl_bool val): val(val) {}
55 public:
error()56 static boolean error() {
57 return boolean(isl_bool_error);
58 }
boolean()59 boolean()
60 : val(isl_bool_error) {}
61
boolean(bool val)62 /* implicit */ boolean(bool val)
63 : val(val ? isl_bool_true : isl_bool_false) {}
64
release()65 isl_bool release() {
66 auto tmp = val;
67 val = isl_bool_error;
68 check->checked = true;
69 return tmp;
70 }
71
is_error()72 bool is_error() const { check->checked = true; return val == isl_bool_error; }
is_false()73 bool is_false() const { check->checked = true; return val == isl_bool_false; }
is_true()74 bool is_true() const { check->checked = true; return val == isl_bool_true; }
75
76 operator bool() const {
77 //ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
78 ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
79 return is_true();
80 }
81
negate()82 boolean negate() {
83 if (val == isl_bool_true)
84 val = isl_bool_false;
85 else if (val == isl_bool_false)
86 val = isl_bool_true;
87 return *this;
88 }
89
90 boolean operator!() const {
91 return boolean(*this).negate();
92 }
93 };
94
manage(isl_bool val)95 inline boolean manage(isl_bool val) {
96 return boolean(val);
97 }
98
99 class ctx {
100 isl_ctx *ptr;
101 public:
ctx(isl_ctx * ctx)102 /* implicit */ ctx(isl_ctx *ctx)
103 : ptr(ctx) {}
release()104 isl_ctx *release() {
105 auto tmp = ptr;
106 ptr = nullptr;
107 return tmp;
108 }
get()109 isl_ctx *get() {
110 return ptr;
111 }
112 };
113
114 /* Class encapsulating an isl_stat value.
115 */
116 class stat {
117 private:
118 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
119 isl_stat val;
120
121 friend stat manage(isl_stat val);
stat(isl_stat val)122 stat(isl_stat val) : val(val) {}
123 public:
ok()124 static stat ok() {
125 return stat(isl_stat_ok);
126 }
error()127 static stat error() {
128 return stat(isl_stat_error);
129 }
stat()130 stat() : val(isl_stat_error) {}
131
release()132 isl_stat release() {
133 check->checked = true;
134 return val;
135 }
136
is_error()137 bool is_error() const {
138 check->checked = true;
139 return val == isl_stat_error;
140 }
is_ok()141 bool is_ok() const {
142 check->checked = true;
143 return val == isl_stat_ok;
144 }
145 };
146
manage(isl_stat val)147 inline stat manage(isl_stat val)
148 {
149 return stat(val);
150 }
151
152 /* Class encapsulating an isl_size value.
153 */
154 class size {
155 private:
156 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
157 isl_size val;
158
159 friend size manage(isl_size val);
size(isl_size val)160 size(isl_size val) : val(val) {}
161 public:
size()162 size() : val(isl_size_error) {}
163
release()164 isl_size release() {
165 auto tmp = val;
166 val = isl_size_error;
167 check->checked = true;
168 return tmp;
169 }
170
is_error()171 bool is_error() const {
172 check->checked = true;
173 return val == isl_size_error;
174 }
175
176 explicit operator unsigned() const {
177 ISLPP_ASSERT(check->checked,
178 "IMPLEMENTATION ERROR: Unchecked error state");
179 ISLPP_ASSERT(!is_error(),
180 "IMPLEMENTATION ERROR: Unhandled error state");
181 return val;
182 }
183 };
184
manage(isl_size val)185 inline size manage(isl_size val)
186 {
187 return size(val);
188 }
189
190 enum class dim {
191 cst = isl_dim_cst,
192 param = isl_dim_param,
193 in = isl_dim_in,
194 out = isl_dim_out,
195 set = isl_dim_set,
196 div = isl_dim_div,
197 all = isl_dim_all
198 };
199
200 } // namespace isl
201 #include <isl/id.h>
202 #include <isl/space.h>
203 #include <isl/val.h>
204 #include <isl/aff.h>
205 #include <isl/set.h>
206 #include <isl/map.h>
207 #include <isl/ilp.h>
208 #include <isl/constraint.h>
209 #include <isl/union_set.h>
210 #include <isl/union_map.h>
211 #include <isl/flow.h>
212 #include <isl/schedule.h>
213 #include <isl/schedule_node.h>
214 #include <isl/ast_build.h>
215 #include <isl/fixed_box.h>
216
217 namespace isl {
218
219 // forward declarations
220 class aff;
221 class aff_list;
222 class ast_build;
223 class ast_expr;
224 class ast_expr_id;
225 class ast_expr_int;
226 class ast_expr_op;
227 class ast_expr_op_access;
228 class ast_expr_op_add;
229 class ast_expr_op_address_of;
230 class ast_expr_op_and;
231 class ast_expr_op_and_then;
232 class ast_expr_op_call;
233 class ast_expr_op_cond;
234 class ast_expr_op_div;
235 class ast_expr_op_eq;
236 class ast_expr_op_fdiv_q;
237 class ast_expr_op_ge;
238 class ast_expr_op_gt;
239 class ast_expr_op_le;
240 class ast_expr_op_lt;
241 class ast_expr_op_max;
242 class ast_expr_op_member;
243 class ast_expr_op_min;
244 class ast_expr_op_minus;
245 class ast_expr_op_mul;
246 class ast_expr_op_or;
247 class ast_expr_op_or_else;
248 class ast_expr_op_pdiv_q;
249 class ast_expr_op_pdiv_r;
250 class ast_expr_op_select;
251 class ast_expr_op_sub;
252 class ast_expr_op_zdiv_r;
253 class ast_node;
254 class ast_node_block;
255 class ast_node_for;
256 class ast_node_if;
257 class ast_node_list;
258 class ast_node_mark;
259 class ast_node_user;
260 class basic_map;
261 class basic_map_list;
262 class basic_set;
263 class basic_set_list;
264 class constraint;
265 class fixed_box;
266 class id;
267 class id_list;
268 class id_to_ast_expr;
269 class local_space;
270 class map;
271 class map_list;
272 class multi_aff;
273 class multi_id;
274 class multi_pw_aff;
275 class multi_union_pw_aff;
276 class multi_val;
277 class point;
278 class pw_aff;
279 class pw_aff_list;
280 class pw_multi_aff;
281 class pw_multi_aff_list;
282 class schedule;
283 class schedule_constraints;
284 class schedule_node;
285 class schedule_node_band;
286 class schedule_node_context;
287 class schedule_node_domain;
288 class schedule_node_expansion;
289 class schedule_node_extension;
290 class schedule_node_filter;
291 class schedule_node_guard;
292 class schedule_node_leaf;
293 class schedule_node_mark;
294 class schedule_node_sequence;
295 class schedule_node_set;
296 class set;
297 class set_list;
298 class space;
299 class union_access_info;
300 class union_flow;
301 class union_map;
302 class union_pw_aff;
303 class union_pw_aff_list;
304 class union_pw_multi_aff;
305 class union_set;
306 class union_set_list;
307 class val;
308 class val_list;
309
310 // declarations for isl::aff
311 inline aff manage(__isl_take isl_aff *ptr);
312 inline aff manage_copy(__isl_keep isl_aff *ptr);
313
314 class aff {
315 friend inline aff manage(__isl_take isl_aff *ptr);
316 friend inline aff manage_copy(__isl_keep isl_aff *ptr);
317
318 protected:
319 isl_aff *ptr = nullptr;
320
321 inline explicit aff(__isl_take isl_aff *ptr);
322
323 public:
324 inline /* implicit */ aff();
325 inline /* implicit */ aff(const aff &obj);
326 inline explicit aff(isl::ctx ctx, const std::string &str);
327 inline explicit aff(isl::local_space ls, isl::val val);
328 inline explicit aff(isl::local_space ls);
329 inline aff &operator=(aff obj);
330 inline ~aff();
331 inline __isl_give isl_aff *copy() const &;
332 inline __isl_give isl_aff *copy() && = delete;
333 inline __isl_keep isl_aff *get() const;
334 inline __isl_give isl_aff *release();
335 inline bool is_null() const;
336 inline isl::ctx ctx() const;
337
338 inline isl::aff add(isl::aff aff2) const;
339 inline isl::multi_aff add(const isl::multi_aff &multi2) const;
340 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
341 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
342 inline isl::pw_aff add(const isl::pw_aff &pwaff2) const;
343 inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
344 inline isl::union_pw_aff add(const isl::union_pw_aff &upa2) const;
345 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
346 inline isl::aff add_constant(isl::val v) const;
347 inline isl::aff add_constant(long v) const;
348 inline isl::multi_aff add_constant(const isl::multi_val &mv) const;
349 inline isl::aff add_constant_si(int v) const;
350 inline isl::pw_aff add_dims(isl::dim type, unsigned int n) const;
351 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
352 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
353 inline isl::aff as_aff() const;
354 inline isl::map as_map() const;
355 inline isl::multi_aff as_multi_aff() const;
356 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
357 inline isl::pw_multi_aff as_pw_multi_aff() const;
358 inline isl::set as_set() const;
359 inline isl::union_map as_union_map() const;
360 inline isl::aff at(int pos) const;
361 inline isl::basic_set bind(isl::id id) const;
362 inline isl::basic_set bind(const std::string &id) const;
363 inline isl::basic_set bind(const isl::multi_id &tuple) const;
364 inline isl::pw_aff bind_domain(const isl::multi_id &tuple) const;
365 inline isl::pw_aff bind_domain_wrapped_domain(const isl::multi_id &tuple) const;
366 inline isl::aff ceil() const;
367 inline isl::pw_aff coalesce() const;
368 inline isl::pw_aff cond(const isl::pw_aff &pwaff_true, const isl::pw_aff &pwaff_false) const;
369 inline isl::multi_val constant_multi_val() const;
370 inline isl::val constant_val() const;
371 inline isl::val get_constant_val() const;
372 inline isl::val denominator_val() const;
373 inline isl::val get_denominator_val() const;
374 inline class size dim(isl::dim type) const;
375 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
376 inline isl::aff div(isl::aff aff2) const;
377 inline isl::pw_aff div(const isl::pw_aff &pa2) const;
378 inline isl::set domain() const;
379 inline isl::space domain_space() const;
380 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
381 inline isl::set eq_set(isl::aff aff2) const;
382 inline isl::set eq_set(const isl::pw_aff &pwaff2) const;
383 inline isl::val eval(isl::point pnt) const;
384 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
385 inline isl::multi_aff flat_range_product(const isl::multi_aff &multi2) const;
386 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
387 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
388 inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
389 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
390 inline isl::aff floor() const;
391 inline stat foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const;
392 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
393 inline stat foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const;
394 inline isl::set ge_set(isl::aff aff2) const;
395 inline isl::set ge_set(const isl::pw_aff &pwaff2) const;
396 inline isl::aff gist(isl::set context) const;
397 inline isl::union_pw_aff gist(const isl::union_set &context) const;
398 inline isl::aff gist(const isl::basic_set &context) const;
399 inline isl::aff gist(const isl::point &context) const;
400 inline isl::set gt_set(isl::aff aff2) const;
401 inline isl::set gt_set(const isl::pw_aff &pwaff2) const;
402 inline boolean has_range_tuple_id() const;
403 inline isl::multi_aff identity() const;
404 inline isl::pw_aff insert_domain(const isl::space &domain) const;
405 inline isl::pw_aff intersect_domain(const isl::set &set) const;
406 inline isl::union_pw_aff intersect_domain(const isl::space &space) const;
407 inline isl::union_pw_aff intersect_domain(const isl::union_set &uset) const;
408 inline isl::union_pw_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
409 inline isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
410 inline isl::pw_aff intersect_params(const isl::set &set) const;
411 inline boolean involves_locals() const;
412 inline boolean involves_nan() const;
413 inline boolean involves_param(const isl::id &id) const;
414 inline boolean involves_param(const std::string &id) const;
415 inline boolean involves_param(const isl::id_list &list) const;
416 inline boolean is_cst() const;
417 inline boolean is_equal(const isl::pw_aff &pa2) const;
418 inline boolean isa_aff() const;
419 inline boolean isa_multi_aff() const;
420 inline boolean isa_pw_multi_aff() const;
421 inline isl::set le_set(isl::aff aff2) const;
422 inline isl::set le_set(const isl::pw_aff &pwaff2) const;
423 inline isl::aff_list list() const;
424 inline isl::set lt_set(isl::aff aff2) const;
425 inline isl::set lt_set(const isl::pw_aff &pwaff2) const;
426 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
427 inline isl::pw_aff max(const isl::pw_aff &pwaff2) const;
428 inline isl::multi_val max_multi_val() const;
429 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
430 inline isl::pw_aff min(const isl::pw_aff &pwaff2) const;
431 inline isl::multi_val min_multi_val() const;
432 inline isl::aff mod(isl::val mod) const;
433 inline isl::aff mod(long mod) const;
434 inline isl::aff mul(isl::aff aff2) const;
435 inline isl::pw_aff mul(const isl::pw_aff &pwaff2) const;
436 inline class size n_piece() const;
437 inline isl::set ne_set(isl::aff aff2) const;
438 inline isl::set ne_set(const isl::pw_aff &pwaff2) const;
439 inline isl::aff neg() const;
440 inline boolean plain_is_empty() const;
441 inline boolean plain_is_equal(const isl::multi_aff &multi2) const;
442 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
443 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
444 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
445 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
446 inline isl::multi_aff product(const isl::multi_aff &multi2) const;
447 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
448 inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
449 inline isl::aff pullback(isl::multi_aff ma) const;
450 inline isl::pw_aff pullback(const isl::multi_pw_aff &mpa) const;
451 inline isl::pw_aff pullback(const isl::pw_multi_aff &pma) const;
452 inline isl::union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
453 inline isl::aff pullback(const isl::aff &ma) const;
454 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
455 inline isl::pw_multi_aff range_factor_domain() const;
456 inline isl::pw_multi_aff range_factor_range() const;
457 inline isl::multi_aff range_product(const isl::multi_aff &multi2) const;
458 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
459 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
460 inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
461 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
462 inline isl::id range_tuple_id() const;
463 inline isl::multi_aff reset_range_tuple_id() const;
464 inline isl::multi_aff reset_tuple_id(isl::dim type) const;
465 inline isl::aff scale(isl::val v) const;
466 inline isl::aff scale(long v) const;
467 inline isl::multi_aff scale(const isl::multi_val &mv) const;
468 inline isl::aff scale_down(isl::val v) const;
469 inline isl::aff scale_down(long v) const;
470 inline isl::multi_aff scale_down(const isl::multi_val &mv) const;
471 inline isl::multi_aff set_aff(int pos, const isl::aff &el) const;
472 inline isl::multi_aff set_at(int pos, const isl::aff &el) const;
473 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
474 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
475 inline isl::aff set_constant_si(int v) const;
476 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
477 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const;
478 inline isl::multi_aff set_range_tuple(const isl::id &id) const;
479 inline isl::multi_aff set_range_tuple(const std::string &id) const;
480 inline isl::pw_aff set_tuple_id(isl::dim type, const isl::id &id) const;
481 inline isl::pw_aff set_tuple_id(isl::dim type, const std::string &id) const;
482 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
483 inline class size size() const;
484 inline isl::space space() const;
485 inline isl::aff sub(isl::aff aff2) const;
486 inline isl::multi_aff sub(const isl::multi_aff &multi2) const;
487 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
488 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
489 inline isl::pw_aff sub(const isl::pw_aff &pwaff2) const;
490 inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
491 inline isl::union_pw_aff sub(const isl::union_pw_aff &upa2) const;
492 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
493 inline isl::pw_aff subtract_domain(const isl::set &set) const;
494 inline isl::union_pw_aff subtract_domain(const isl::space &space) const;
495 inline isl::union_pw_aff subtract_domain(const isl::union_set &uset) const;
496 inline isl::pw_aff tdiv_q(const isl::pw_aff &pa2) const;
497 inline isl::pw_aff tdiv_r(const isl::pw_aff &pa2) const;
498 inline isl::aff_list to_list() const;
499 inline isl::multi_pw_aff to_multi_pw_aff() const;
500 inline isl::multi_union_pw_aff to_multi_union_pw_aff() const;
501 inline isl::pw_multi_aff to_pw_multi_aff() const;
502 inline isl::union_pw_aff to_union_pw_aff() const;
503 inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
504 inline isl::id tuple_id(isl::dim type) const;
505 inline isl::aff unbind_params_insert_domain(isl::multi_id domain) const;
506 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
507 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
508 inline isl::pw_aff union_add(const isl::pw_aff &pwaff2) const;
509 inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
510 inline isl::union_pw_aff union_add(const isl::union_pw_aff &upa2) const;
511 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
512 static inline isl::aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
513 static inline isl::aff zero_on_domain(isl::space space);
514 };
515
516 // declarations for isl::aff_list
517 inline aff_list manage(__isl_take isl_aff_list *ptr);
518 inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
519
520 class aff_list {
521 friend inline aff_list manage(__isl_take isl_aff_list *ptr);
522 friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
523
524 protected:
525 isl_aff_list *ptr = nullptr;
526
527 inline explicit aff_list(__isl_take isl_aff_list *ptr);
528
529 public:
530 inline /* implicit */ aff_list();
531 inline /* implicit */ aff_list(const aff_list &obj);
532 inline explicit aff_list(isl::ctx ctx, int n);
533 inline explicit aff_list(isl::aff el);
534 inline explicit aff_list(isl::ctx ctx, const std::string &str);
535 inline aff_list &operator=(aff_list obj);
536 inline ~aff_list();
537 inline __isl_give isl_aff_list *copy() const &;
538 inline __isl_give isl_aff_list *copy() && = delete;
539 inline __isl_keep isl_aff_list *get() const;
540 inline __isl_give isl_aff_list *release();
541 inline bool is_null() const;
542 inline isl::ctx ctx() const;
543
544 inline isl::aff_list add(isl::aff el) const;
545 inline isl::aff at(int index) const;
546 inline isl::aff get_at(int index) const;
547 inline isl::aff_list clear() const;
548 inline isl::aff_list concat(isl::aff_list list2) const;
549 inline isl::aff_list drop(unsigned int first, unsigned int n) const;
550 inline stat foreach(const std::function<stat(isl::aff)> &fn) const;
551 inline isl::aff_list insert(unsigned int pos, isl::aff el) const;
552 inline class size size() const;
553 };
554
555 // declarations for isl::ast_build
556 inline ast_build manage(__isl_take isl_ast_build *ptr);
557 inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
558
559 class ast_build {
560 friend inline ast_build manage(__isl_take isl_ast_build *ptr);
561 friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
562
563 protected:
564 isl_ast_build *ptr = nullptr;
565
566 inline explicit ast_build(__isl_take isl_ast_build *ptr);
567
568 public:
569 inline /* implicit */ ast_build();
570 inline /* implicit */ ast_build(const ast_build &obj);
571 inline explicit ast_build(isl::ctx ctx);
572 inline ast_build &operator=(ast_build obj);
573 inline ~ast_build();
574 inline __isl_give isl_ast_build *copy() const &;
575 inline __isl_give isl_ast_build *copy() && = delete;
576 inline __isl_keep isl_ast_build *get() const;
577 inline __isl_give isl_ast_build *release();
578 inline bool is_null() const;
579 inline isl::ctx ctx() const;
580
581 private:
582 inline ast_build ©_callbacks(const ast_build &obj);
583 struct at_each_domain_data {
584 std::function<isl::ast_node(isl::ast_node, isl::ast_build)> func;
585 };
586 std::shared_ptr<at_each_domain_data> at_each_domain_data;
587 static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
588 inline void set_at_each_domain_data(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn);
589 public:
590 inline isl::ast_build set_at_each_domain(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn) const;
591 inline isl::ast_expr access_from(isl::multi_pw_aff mpa) const;
592 inline isl::ast_expr access_from(isl::pw_multi_aff pma) const;
593 inline isl::ast_expr call_from(isl::multi_pw_aff mpa) const;
594 inline isl::ast_expr call_from(isl::pw_multi_aff pma) const;
595 inline isl::ast_expr expr_from(isl::pw_aff pa) const;
596 inline isl::ast_expr expr_from(isl::set set) const;
597 static inline isl::ast_build from_context(isl::set set);
598 inline isl::ast_node node_from(isl::schedule schedule) const;
599 inline isl::ast_node node_from_schedule_map(isl::union_map schedule) const;
600 inline isl::ast_build restrict(isl::set set) const;
601 inline isl::union_map schedule() const;
602 inline isl::union_map get_schedule() const;
603 };
604
605 // declarations for isl::ast_expr
606 inline ast_expr manage(__isl_take isl_ast_expr *ptr);
607 inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
608
609 class ast_expr {
610 friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
611 friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
612
613 protected:
614 isl_ast_expr *ptr = nullptr;
615
616 inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
617
618 public:
619 inline /* implicit */ ast_expr();
620 inline /* implicit */ ast_expr(const ast_expr &obj);
621 inline ast_expr &operator=(ast_expr obj);
622 inline ~ast_expr();
623 inline __isl_give isl_ast_expr *copy() const &;
624 inline __isl_give isl_ast_expr *copy() && = delete;
625 inline __isl_keep isl_ast_expr *get() const;
626 inline __isl_give isl_ast_expr *release();
627 inline bool is_null() const;
628 private:
629 template <typename T,
630 typename = typename std::enable_if<std::is_same<
631 const decltype(isl_ast_expr_get_type(nullptr)),
632 const T>::value>::type>
633 inline boolean isa_type(T subtype) const;
634 public:
635 template <class T> inline boolean isa() const;
636 template <class T> inline T as() const;
637 inline isl::ctx ctx() const;
638
639 inline isl::ast_expr add(isl::ast_expr expr2) const;
640 inline isl::ast_expr address_of() const;
641 inline isl::ast_expr eq(isl::ast_expr expr2) const;
642 static inline isl::ast_expr from_val(isl::val v);
643 inline isl::id id() const;
644 inline isl::id get_id() const;
645 inline isl::ast_expr le(isl::ast_expr expr2) const;
646 inline isl::ast_expr mul(isl::ast_expr expr2) const;
647 inline isl::ast_expr op_arg(int pos) const;
648 inline isl::ast_expr get_op_arg(int pos) const;
649 inline std::string to_C_str() const;
650 inline isl::val val() const;
651 inline isl::val get_val() const;
652 };
653
654 // declarations for isl::ast_expr_id
655
656 class ast_expr_id : public ast_expr {
657 template <class T>
658 friend boolean ast_expr::isa() const;
659 friend ast_expr_id ast_expr::as<ast_expr_id>() const;
660 static const auto type = isl_ast_expr_id;
661
662 protected:
663 inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
664
665 public:
666 inline /* implicit */ ast_expr_id();
667 inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
668 inline ast_expr_id &operator=(ast_expr_id obj);
669 inline isl::ctx ctx() const;
670
671 inline isl::id id() const;
672 inline isl::id get_id() const;
673 };
674
675 // declarations for isl::ast_expr_int
676
677 class ast_expr_int : public ast_expr {
678 template <class T>
679 friend boolean ast_expr::isa() const;
680 friend ast_expr_int ast_expr::as<ast_expr_int>() const;
681 static const auto type = isl_ast_expr_int;
682
683 protected:
684 inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
685
686 public:
687 inline /* implicit */ ast_expr_int();
688 inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
689 inline ast_expr_int &operator=(ast_expr_int obj);
690 inline isl::ctx ctx() const;
691
692 inline isl::val val() const;
693 inline isl::val get_val() const;
694 };
695
696 // declarations for isl::ast_expr_op
697
698 class ast_expr_op : public ast_expr {
699 template <class T>
700 friend boolean ast_expr::isa() const;
701 friend ast_expr_op ast_expr::as<ast_expr_op>() const;
702 static const auto type = isl_ast_expr_op;
703
704 protected:
705 inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
706
707 public:
708 inline /* implicit */ ast_expr_op();
709 inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
710 inline ast_expr_op &operator=(ast_expr_op obj);
711 private:
712 template <typename T,
713 typename = typename std::enable_if<std::is_same<
714 const decltype(isl_ast_expr_op_get_type(nullptr)),
715 const T>::value>::type>
716 inline boolean isa_type(T subtype) const;
717 public:
718 template <class T> inline boolean isa() const;
719 template <class T> inline T as() const;
720 inline isl::ctx ctx() const;
721
722 inline isl::ast_expr arg(int pos) const;
723 inline isl::ast_expr get_arg(int pos) const;
724 inline class size n_arg() const;
725 inline class size get_n_arg() const;
726 };
727
728 // declarations for isl::ast_expr_op_access
729
730 class ast_expr_op_access : public ast_expr_op {
731 template <class T>
732 friend boolean ast_expr_op::isa() const;
733 friend ast_expr_op_access ast_expr_op::as<ast_expr_op_access>() const;
734 static const auto type = isl_ast_expr_op_access;
735
736 protected:
737 inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
738
739 public:
740 inline /* implicit */ ast_expr_op_access();
741 inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
742 inline ast_expr_op_access &operator=(ast_expr_op_access obj);
743 inline isl::ctx ctx() const;
744
745 };
746
747 // declarations for isl::ast_expr_op_add
748
749 class ast_expr_op_add : public ast_expr_op {
750 template <class T>
751 friend boolean ast_expr_op::isa() const;
752 friend ast_expr_op_add ast_expr_op::as<ast_expr_op_add>() const;
753 static const auto type = isl_ast_expr_op_add;
754
755 protected:
756 inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
757
758 public:
759 inline /* implicit */ ast_expr_op_add();
760 inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
761 inline ast_expr_op_add &operator=(ast_expr_op_add obj);
762 inline isl::ctx ctx() const;
763
764 };
765
766 // declarations for isl::ast_expr_op_address_of
767
768 class ast_expr_op_address_of : public ast_expr_op {
769 template <class T>
770 friend boolean ast_expr_op::isa() const;
771 friend ast_expr_op_address_of ast_expr_op::as<ast_expr_op_address_of>() const;
772 static const auto type = isl_ast_expr_op_address_of;
773
774 protected:
775 inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
776
777 public:
778 inline /* implicit */ ast_expr_op_address_of();
779 inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
780 inline ast_expr_op_address_of &operator=(ast_expr_op_address_of obj);
781 inline isl::ctx ctx() const;
782
783 };
784
785 // declarations for isl::ast_expr_op_and
786
787 class ast_expr_op_and : public ast_expr_op {
788 template <class T>
789 friend boolean ast_expr_op::isa() const;
790 friend ast_expr_op_and ast_expr_op::as<ast_expr_op_and>() const;
791 static const auto type = isl_ast_expr_op_and;
792
793 protected:
794 inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
795
796 public:
797 inline /* implicit */ ast_expr_op_and();
798 inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
799 inline ast_expr_op_and &operator=(ast_expr_op_and obj);
800 inline isl::ctx ctx() const;
801
802 };
803
804 // declarations for isl::ast_expr_op_and_then
805
806 class ast_expr_op_and_then : public ast_expr_op {
807 template <class T>
808 friend boolean ast_expr_op::isa() const;
809 friend ast_expr_op_and_then ast_expr_op::as<ast_expr_op_and_then>() const;
810 static const auto type = isl_ast_expr_op_and_then;
811
812 protected:
813 inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
814
815 public:
816 inline /* implicit */ ast_expr_op_and_then();
817 inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
818 inline ast_expr_op_and_then &operator=(ast_expr_op_and_then obj);
819 inline isl::ctx ctx() const;
820
821 };
822
823 // declarations for isl::ast_expr_op_call
824
825 class ast_expr_op_call : public ast_expr_op {
826 template <class T>
827 friend boolean ast_expr_op::isa() const;
828 friend ast_expr_op_call ast_expr_op::as<ast_expr_op_call>() const;
829 static const auto type = isl_ast_expr_op_call;
830
831 protected:
832 inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
833
834 public:
835 inline /* implicit */ ast_expr_op_call();
836 inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
837 inline ast_expr_op_call &operator=(ast_expr_op_call obj);
838 inline isl::ctx ctx() const;
839
840 };
841
842 // declarations for isl::ast_expr_op_cond
843
844 class ast_expr_op_cond : public ast_expr_op {
845 template <class T>
846 friend boolean ast_expr_op::isa() const;
847 friend ast_expr_op_cond ast_expr_op::as<ast_expr_op_cond>() const;
848 static const auto type = isl_ast_expr_op_cond;
849
850 protected:
851 inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
852
853 public:
854 inline /* implicit */ ast_expr_op_cond();
855 inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
856 inline ast_expr_op_cond &operator=(ast_expr_op_cond obj);
857 inline isl::ctx ctx() const;
858
859 };
860
861 // declarations for isl::ast_expr_op_div
862
863 class ast_expr_op_div : public ast_expr_op {
864 template <class T>
865 friend boolean ast_expr_op::isa() const;
866 friend ast_expr_op_div ast_expr_op::as<ast_expr_op_div>() const;
867 static const auto type = isl_ast_expr_op_div;
868
869 protected:
870 inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
871
872 public:
873 inline /* implicit */ ast_expr_op_div();
874 inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
875 inline ast_expr_op_div &operator=(ast_expr_op_div obj);
876 inline isl::ctx ctx() const;
877
878 };
879
880 // declarations for isl::ast_expr_op_eq
881
882 class ast_expr_op_eq : public ast_expr_op {
883 template <class T>
884 friend boolean ast_expr_op::isa() const;
885 friend ast_expr_op_eq ast_expr_op::as<ast_expr_op_eq>() const;
886 static const auto type = isl_ast_expr_op_eq;
887
888 protected:
889 inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
890
891 public:
892 inline /* implicit */ ast_expr_op_eq();
893 inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
894 inline ast_expr_op_eq &operator=(ast_expr_op_eq obj);
895 inline isl::ctx ctx() const;
896
897 };
898
899 // declarations for isl::ast_expr_op_fdiv_q
900
901 class ast_expr_op_fdiv_q : public ast_expr_op {
902 template <class T>
903 friend boolean ast_expr_op::isa() const;
904 friend ast_expr_op_fdiv_q ast_expr_op::as<ast_expr_op_fdiv_q>() const;
905 static const auto type = isl_ast_expr_op_fdiv_q;
906
907 protected:
908 inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
909
910 public:
911 inline /* implicit */ ast_expr_op_fdiv_q();
912 inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
913 inline ast_expr_op_fdiv_q &operator=(ast_expr_op_fdiv_q obj);
914 inline isl::ctx ctx() const;
915
916 };
917
918 // declarations for isl::ast_expr_op_ge
919
920 class ast_expr_op_ge : public ast_expr_op {
921 template <class T>
922 friend boolean ast_expr_op::isa() const;
923 friend ast_expr_op_ge ast_expr_op::as<ast_expr_op_ge>() const;
924 static const auto type = isl_ast_expr_op_ge;
925
926 protected:
927 inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
928
929 public:
930 inline /* implicit */ ast_expr_op_ge();
931 inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
932 inline ast_expr_op_ge &operator=(ast_expr_op_ge obj);
933 inline isl::ctx ctx() const;
934
935 };
936
937 // declarations for isl::ast_expr_op_gt
938
939 class ast_expr_op_gt : public ast_expr_op {
940 template <class T>
941 friend boolean ast_expr_op::isa() const;
942 friend ast_expr_op_gt ast_expr_op::as<ast_expr_op_gt>() const;
943 static const auto type = isl_ast_expr_op_gt;
944
945 protected:
946 inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
947
948 public:
949 inline /* implicit */ ast_expr_op_gt();
950 inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
951 inline ast_expr_op_gt &operator=(ast_expr_op_gt obj);
952 inline isl::ctx ctx() const;
953
954 };
955
956 // declarations for isl::ast_expr_op_le
957
958 class ast_expr_op_le : public ast_expr_op {
959 template <class T>
960 friend boolean ast_expr_op::isa() const;
961 friend ast_expr_op_le ast_expr_op::as<ast_expr_op_le>() const;
962 static const auto type = isl_ast_expr_op_le;
963
964 protected:
965 inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
966
967 public:
968 inline /* implicit */ ast_expr_op_le();
969 inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
970 inline ast_expr_op_le &operator=(ast_expr_op_le obj);
971 inline isl::ctx ctx() const;
972
973 };
974
975 // declarations for isl::ast_expr_op_lt
976
977 class ast_expr_op_lt : public ast_expr_op {
978 template <class T>
979 friend boolean ast_expr_op::isa() const;
980 friend ast_expr_op_lt ast_expr_op::as<ast_expr_op_lt>() const;
981 static const auto type = isl_ast_expr_op_lt;
982
983 protected:
984 inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
985
986 public:
987 inline /* implicit */ ast_expr_op_lt();
988 inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
989 inline ast_expr_op_lt &operator=(ast_expr_op_lt obj);
990 inline isl::ctx ctx() const;
991
992 };
993
994 // declarations for isl::ast_expr_op_max
995
996 class ast_expr_op_max : public ast_expr_op {
997 template <class T>
998 friend boolean ast_expr_op::isa() const;
999 friend ast_expr_op_max ast_expr_op::as<ast_expr_op_max>() const;
1000 static const auto type = isl_ast_expr_op_max;
1001
1002 protected:
1003 inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
1004
1005 public:
1006 inline /* implicit */ ast_expr_op_max();
1007 inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
1008 inline ast_expr_op_max &operator=(ast_expr_op_max obj);
1009 inline isl::ctx ctx() const;
1010
1011 };
1012
1013 // declarations for isl::ast_expr_op_member
1014
1015 class ast_expr_op_member : public ast_expr_op {
1016 template <class T>
1017 friend boolean ast_expr_op::isa() const;
1018 friend ast_expr_op_member ast_expr_op::as<ast_expr_op_member>() const;
1019 static const auto type = isl_ast_expr_op_member;
1020
1021 protected:
1022 inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
1023
1024 public:
1025 inline /* implicit */ ast_expr_op_member();
1026 inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
1027 inline ast_expr_op_member &operator=(ast_expr_op_member obj);
1028 inline isl::ctx ctx() const;
1029
1030 };
1031
1032 // declarations for isl::ast_expr_op_min
1033
1034 class ast_expr_op_min : public ast_expr_op {
1035 template <class T>
1036 friend boolean ast_expr_op::isa() const;
1037 friend ast_expr_op_min ast_expr_op::as<ast_expr_op_min>() const;
1038 static const auto type = isl_ast_expr_op_min;
1039
1040 protected:
1041 inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
1042
1043 public:
1044 inline /* implicit */ ast_expr_op_min();
1045 inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
1046 inline ast_expr_op_min &operator=(ast_expr_op_min obj);
1047 inline isl::ctx ctx() const;
1048
1049 };
1050
1051 // declarations for isl::ast_expr_op_minus
1052
1053 class ast_expr_op_minus : public ast_expr_op {
1054 template <class T>
1055 friend boolean ast_expr_op::isa() const;
1056 friend ast_expr_op_minus ast_expr_op::as<ast_expr_op_minus>() const;
1057 static const auto type = isl_ast_expr_op_minus;
1058
1059 protected:
1060 inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
1061
1062 public:
1063 inline /* implicit */ ast_expr_op_minus();
1064 inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
1065 inline ast_expr_op_minus &operator=(ast_expr_op_minus obj);
1066 inline isl::ctx ctx() const;
1067
1068 };
1069
1070 // declarations for isl::ast_expr_op_mul
1071
1072 class ast_expr_op_mul : public ast_expr_op {
1073 template <class T>
1074 friend boolean ast_expr_op::isa() const;
1075 friend ast_expr_op_mul ast_expr_op::as<ast_expr_op_mul>() const;
1076 static const auto type = isl_ast_expr_op_mul;
1077
1078 protected:
1079 inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
1080
1081 public:
1082 inline /* implicit */ ast_expr_op_mul();
1083 inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
1084 inline ast_expr_op_mul &operator=(ast_expr_op_mul obj);
1085 inline isl::ctx ctx() const;
1086
1087 };
1088
1089 // declarations for isl::ast_expr_op_or
1090
1091 class ast_expr_op_or : public ast_expr_op {
1092 template <class T>
1093 friend boolean ast_expr_op::isa() const;
1094 friend ast_expr_op_or ast_expr_op::as<ast_expr_op_or>() const;
1095 static const auto type = isl_ast_expr_op_or;
1096
1097 protected:
1098 inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
1099
1100 public:
1101 inline /* implicit */ ast_expr_op_or();
1102 inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
1103 inline ast_expr_op_or &operator=(ast_expr_op_or obj);
1104 inline isl::ctx ctx() const;
1105
1106 };
1107
1108 // declarations for isl::ast_expr_op_or_else
1109
1110 class ast_expr_op_or_else : public ast_expr_op {
1111 template <class T>
1112 friend boolean ast_expr_op::isa() const;
1113 friend ast_expr_op_or_else ast_expr_op::as<ast_expr_op_or_else>() const;
1114 static const auto type = isl_ast_expr_op_or_else;
1115
1116 protected:
1117 inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
1118
1119 public:
1120 inline /* implicit */ ast_expr_op_or_else();
1121 inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
1122 inline ast_expr_op_or_else &operator=(ast_expr_op_or_else obj);
1123 inline isl::ctx ctx() const;
1124
1125 };
1126
1127 // declarations for isl::ast_expr_op_pdiv_q
1128
1129 class ast_expr_op_pdiv_q : public ast_expr_op {
1130 template <class T>
1131 friend boolean ast_expr_op::isa() const;
1132 friend ast_expr_op_pdiv_q ast_expr_op::as<ast_expr_op_pdiv_q>() const;
1133 static const auto type = isl_ast_expr_op_pdiv_q;
1134
1135 protected:
1136 inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
1137
1138 public:
1139 inline /* implicit */ ast_expr_op_pdiv_q();
1140 inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
1141 inline ast_expr_op_pdiv_q &operator=(ast_expr_op_pdiv_q obj);
1142 inline isl::ctx ctx() const;
1143
1144 };
1145
1146 // declarations for isl::ast_expr_op_pdiv_r
1147
1148 class ast_expr_op_pdiv_r : public ast_expr_op {
1149 template <class T>
1150 friend boolean ast_expr_op::isa() const;
1151 friend ast_expr_op_pdiv_r ast_expr_op::as<ast_expr_op_pdiv_r>() const;
1152 static const auto type = isl_ast_expr_op_pdiv_r;
1153
1154 protected:
1155 inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
1156
1157 public:
1158 inline /* implicit */ ast_expr_op_pdiv_r();
1159 inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
1160 inline ast_expr_op_pdiv_r &operator=(ast_expr_op_pdiv_r obj);
1161 inline isl::ctx ctx() const;
1162
1163 };
1164
1165 // declarations for isl::ast_expr_op_select
1166
1167 class ast_expr_op_select : public ast_expr_op {
1168 template <class T>
1169 friend boolean ast_expr_op::isa() const;
1170 friend ast_expr_op_select ast_expr_op::as<ast_expr_op_select>() const;
1171 static const auto type = isl_ast_expr_op_select;
1172
1173 protected:
1174 inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
1175
1176 public:
1177 inline /* implicit */ ast_expr_op_select();
1178 inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
1179 inline ast_expr_op_select &operator=(ast_expr_op_select obj);
1180 inline isl::ctx ctx() const;
1181
1182 };
1183
1184 // declarations for isl::ast_expr_op_sub
1185
1186 class ast_expr_op_sub : public ast_expr_op {
1187 template <class T>
1188 friend boolean ast_expr_op::isa() const;
1189 friend ast_expr_op_sub ast_expr_op::as<ast_expr_op_sub>() const;
1190 static const auto type = isl_ast_expr_op_sub;
1191
1192 protected:
1193 inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
1194
1195 public:
1196 inline /* implicit */ ast_expr_op_sub();
1197 inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
1198 inline ast_expr_op_sub &operator=(ast_expr_op_sub obj);
1199 inline isl::ctx ctx() const;
1200
1201 };
1202
1203 // declarations for isl::ast_expr_op_zdiv_r
1204
1205 class ast_expr_op_zdiv_r : public ast_expr_op {
1206 template <class T>
1207 friend boolean ast_expr_op::isa() const;
1208 friend ast_expr_op_zdiv_r ast_expr_op::as<ast_expr_op_zdiv_r>() const;
1209 static const auto type = isl_ast_expr_op_zdiv_r;
1210
1211 protected:
1212 inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
1213
1214 public:
1215 inline /* implicit */ ast_expr_op_zdiv_r();
1216 inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
1217 inline ast_expr_op_zdiv_r &operator=(ast_expr_op_zdiv_r obj);
1218 inline isl::ctx ctx() const;
1219
1220 };
1221
1222 // declarations for isl::ast_node
1223 inline ast_node manage(__isl_take isl_ast_node *ptr);
1224 inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1225
1226 class ast_node {
1227 friend inline ast_node manage(__isl_take isl_ast_node *ptr);
1228 friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1229
1230 protected:
1231 isl_ast_node *ptr = nullptr;
1232
1233 inline explicit ast_node(__isl_take isl_ast_node *ptr);
1234
1235 public:
1236 inline /* implicit */ ast_node();
1237 inline /* implicit */ ast_node(const ast_node &obj);
1238 inline ast_node &operator=(ast_node obj);
1239 inline ~ast_node();
1240 inline __isl_give isl_ast_node *copy() const &;
1241 inline __isl_give isl_ast_node *copy() && = delete;
1242 inline __isl_keep isl_ast_node *get() const;
1243 inline __isl_give isl_ast_node *release();
1244 inline bool is_null() const;
1245 private:
1246 template <typename T,
1247 typename = typename std::enable_if<std::is_same<
1248 const decltype(isl_ast_node_get_type(nullptr)),
1249 const T>::value>::type>
1250 inline boolean isa_type(T subtype) const;
1251 public:
1252 template <class T> inline boolean isa() const;
1253 template <class T> inline T as() const;
1254 inline isl::ctx ctx() const;
1255
1256 inline isl::id annotation() const;
1257 inline isl::id get_annotation() const;
1258 inline std::string to_C_str() const;
1259 inline isl::ast_node_list to_list() const;
1260 };
1261
1262 // declarations for isl::ast_node_block
1263
1264 class ast_node_block : public ast_node {
1265 template <class T>
1266 friend boolean ast_node::isa() const;
1267 friend ast_node_block ast_node::as<ast_node_block>() const;
1268 static const auto type = isl_ast_node_block;
1269
1270 protected:
1271 inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
1272
1273 public:
1274 inline /* implicit */ ast_node_block();
1275 inline /* implicit */ ast_node_block(const ast_node_block &obj);
1276 inline ast_node_block &operator=(ast_node_block obj);
1277 inline isl::ctx ctx() const;
1278
1279 inline isl::ast_node_list children() const;
1280 inline isl::ast_node_list get_children() const;
1281 };
1282
1283 // declarations for isl::ast_node_for
1284
1285 class ast_node_for : public ast_node {
1286 template <class T>
1287 friend boolean ast_node::isa() const;
1288 friend ast_node_for ast_node::as<ast_node_for>() const;
1289 static const auto type = isl_ast_node_for;
1290
1291 protected:
1292 inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
1293
1294 public:
1295 inline /* implicit */ ast_node_for();
1296 inline /* implicit */ ast_node_for(const ast_node_for &obj);
1297 inline ast_node_for &operator=(ast_node_for obj);
1298 inline isl::ctx ctx() const;
1299
1300 inline isl::ast_node body() const;
1301 inline isl::ast_node get_body() const;
1302 inline isl::ast_expr cond() const;
1303 inline isl::ast_expr get_cond() const;
1304 inline isl::ast_expr inc() const;
1305 inline isl::ast_expr get_inc() const;
1306 inline isl::ast_expr init() const;
1307 inline isl::ast_expr get_init() const;
1308 inline boolean is_degenerate() const;
1309 inline isl::ast_expr iterator() const;
1310 inline isl::ast_expr get_iterator() const;
1311 };
1312
1313 // declarations for isl::ast_node_if
1314
1315 class ast_node_if : public ast_node {
1316 template <class T>
1317 friend boolean ast_node::isa() const;
1318 friend ast_node_if ast_node::as<ast_node_if>() const;
1319 static const auto type = isl_ast_node_if;
1320
1321 protected:
1322 inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
1323
1324 public:
1325 inline /* implicit */ ast_node_if();
1326 inline /* implicit */ ast_node_if(const ast_node_if &obj);
1327 inline ast_node_if &operator=(ast_node_if obj);
1328 inline isl::ctx ctx() const;
1329
1330 inline isl::ast_expr cond() const;
1331 inline isl::ast_expr get_cond() const;
1332 inline isl::ast_node else_node() const;
1333 inline isl::ast_node get_else_node() const;
1334 inline boolean has_else_node() const;
1335 inline isl::ast_node then_node() const;
1336 inline isl::ast_node get_then_node() const;
1337 };
1338
1339 // declarations for isl::ast_node_list
1340 inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1341 inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1342
1343 class ast_node_list {
1344 friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1345 friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1346
1347 protected:
1348 isl_ast_node_list *ptr = nullptr;
1349
1350 inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
1351
1352 public:
1353 inline /* implicit */ ast_node_list();
1354 inline /* implicit */ ast_node_list(const ast_node_list &obj);
1355 inline explicit ast_node_list(isl::ctx ctx, int n);
1356 inline explicit ast_node_list(isl::ast_node el);
1357 inline ast_node_list &operator=(ast_node_list obj);
1358 inline ~ast_node_list();
1359 inline __isl_give isl_ast_node_list *copy() const &;
1360 inline __isl_give isl_ast_node_list *copy() && = delete;
1361 inline __isl_keep isl_ast_node_list *get() const;
1362 inline __isl_give isl_ast_node_list *release();
1363 inline bool is_null() const;
1364 inline isl::ctx ctx() const;
1365
1366 inline isl::ast_node_list add(isl::ast_node el) const;
1367 inline isl::ast_node at(int index) const;
1368 inline isl::ast_node get_at(int index) const;
1369 inline isl::ast_node_list clear() const;
1370 inline isl::ast_node_list concat(isl::ast_node_list list2) const;
1371 inline isl::ast_node_list drop(unsigned int first, unsigned int n) const;
1372 inline stat foreach(const std::function<stat(isl::ast_node)> &fn) const;
1373 inline isl::ast_node_list insert(unsigned int pos, isl::ast_node el) const;
1374 inline class size size() const;
1375 };
1376
1377 // declarations for isl::ast_node_mark
1378
1379 class ast_node_mark : public ast_node {
1380 template <class T>
1381 friend boolean ast_node::isa() const;
1382 friend ast_node_mark ast_node::as<ast_node_mark>() const;
1383 static const auto type = isl_ast_node_mark;
1384
1385 protected:
1386 inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
1387
1388 public:
1389 inline /* implicit */ ast_node_mark();
1390 inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
1391 inline ast_node_mark &operator=(ast_node_mark obj);
1392 inline isl::ctx ctx() const;
1393
1394 inline isl::id id() const;
1395 inline isl::id get_id() const;
1396 inline isl::ast_node node() const;
1397 inline isl::ast_node get_node() const;
1398 };
1399
1400 // declarations for isl::ast_node_user
1401
1402 class ast_node_user : public ast_node {
1403 template <class T>
1404 friend boolean ast_node::isa() const;
1405 friend ast_node_user ast_node::as<ast_node_user>() const;
1406 static const auto type = isl_ast_node_user;
1407
1408 protected:
1409 inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
1410
1411 public:
1412 inline /* implicit */ ast_node_user();
1413 inline /* implicit */ ast_node_user(const ast_node_user &obj);
1414 inline ast_node_user &operator=(ast_node_user obj);
1415 inline isl::ctx ctx() const;
1416
1417 inline isl::ast_expr expr() const;
1418 inline isl::ast_expr get_expr() const;
1419 };
1420
1421 // declarations for isl::basic_map
1422 inline basic_map manage(__isl_take isl_basic_map *ptr);
1423 inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1424
1425 class basic_map {
1426 friend inline basic_map manage(__isl_take isl_basic_map *ptr);
1427 friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1428
1429 protected:
1430 isl_basic_map *ptr = nullptr;
1431
1432 inline explicit basic_map(__isl_take isl_basic_map *ptr);
1433
1434 public:
1435 inline /* implicit */ basic_map();
1436 inline /* implicit */ basic_map(const basic_map &obj);
1437 inline explicit basic_map(isl::ctx ctx, const std::string &str);
1438 inline basic_map &operator=(basic_map obj);
1439 inline ~basic_map();
1440 inline __isl_give isl_basic_map *copy() const &;
1441 inline __isl_give isl_basic_map *copy() && = delete;
1442 inline __isl_keep isl_basic_map *get() const;
1443 inline __isl_give isl_basic_map *release();
1444 inline bool is_null() const;
1445 inline isl::ctx ctx() const;
1446
1447 inline isl::map add_constraint(const isl::constraint &constraint) const;
1448 inline isl::map add_dims(isl::dim type, unsigned int n) const;
1449 inline isl::basic_map affine_hull() const;
1450 inline isl::map align_params(const isl::space &model) const;
1451 inline isl::basic_map apply_domain(isl::basic_map bmap2) const;
1452 inline isl::map apply_domain(const isl::map &map2) const;
1453 inline isl::union_map apply_domain(const isl::union_map &umap2) const;
1454 inline isl::basic_map apply_range(isl::basic_map bmap2) const;
1455 inline isl::map apply_range(const isl::map &map2) const;
1456 inline isl::union_map apply_range(const isl::union_map &umap2) const;
1457 inline isl::map as_map() const;
1458 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
1459 inline isl::pw_multi_aff as_pw_multi_aff() const;
1460 inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
1461 inline isl::basic_map_list basic_map_list() const;
1462 inline isl::set bind_domain(const isl::multi_id &tuple) const;
1463 inline isl::set bind_range(const isl::multi_id &tuple) const;
1464 inline boolean can_curry() const;
1465 inline isl::map coalesce() const;
1466 inline isl::map complement() const;
1467 inline isl::union_map compute_divs() const;
1468 inline isl::map curry() const;
1469 inline isl::basic_set deltas() const;
1470 inline isl::basic_map detect_equalities() const;
1471 inline class size dim(isl::dim type) const;
1472 inline isl::pw_aff dim_max(int pos) const;
1473 inline isl::pw_aff dim_min(int pos) const;
1474 inline isl::basic_set domain() const;
1475 inline isl::map domain_factor_domain() const;
1476 inline isl::map domain_factor_range() const;
1477 inline isl::map domain_map() const;
1478 inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1479 inline isl::map domain_product(const isl::map &map2) const;
1480 inline isl::union_map domain_product(const isl::union_map &umap2) const;
1481 inline class size domain_tuple_dim() const;
1482 inline isl::id domain_tuple_id() const;
1483 inline isl::map eq_at(const isl::multi_pw_aff &mpa) const;
1484 inline isl::union_map eq_at(const isl::multi_union_pw_aff &mupa) const;
1485 static inline isl::basic_map equal(isl::space space, unsigned int n_equal);
1486 inline isl::basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1487 inline boolean every_map(const std::function<boolean(isl::map)> &test) const;
1488 inline isl::map extract_map(const isl::space &space) const;
1489 inline isl::map factor_domain() const;
1490 inline isl::map factor_range() const;
1491 inline isl::basic_map fix_si(isl::dim type, unsigned int pos, int value) const;
1492 inline isl::basic_map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
1493 inline isl::basic_map fix_val(isl::dim type, unsigned int pos, long v) const;
1494 inline isl::union_map fixed_power(const isl::val &exp) const;
1495 inline isl::union_map fixed_power(long exp) const;
1496 inline isl::map flat_range_product(const isl::map &map2) const;
1497 inline isl::union_map flat_range_product(const isl::union_map &umap2) const;
1498 inline isl::basic_map flatten() const;
1499 inline isl::basic_map flatten_domain() const;
1500 inline isl::basic_map flatten_range() const;
1501 inline isl::map floordiv_val(const isl::val &d) const;
1502 inline isl::map floordiv_val(long d) const;
1503 inline stat foreach_basic_map(const std::function<stat(isl::basic_map)> &fn) const;
1504 inline stat foreach_map(const std::function<stat(isl::map)> &fn) const;
1505 static inline isl::basic_map from_aff(isl::aff aff);
1506 static inline isl::basic_map from_domain_and_range(isl::basic_set domain, isl::basic_set range);
1507 inline isl::basic_map gist(isl::basic_map context) const;
1508 inline isl::map gist(const isl::map &context) const;
1509 inline isl::union_map gist(const isl::union_map &context) const;
1510 inline isl::map gist_domain(const isl::set &context) const;
1511 inline isl::union_map gist_domain(const isl::union_set &uset) const;
1512 inline isl::map gist_params(const isl::set &context) const;
1513 inline isl::union_map gist_range(const isl::union_set &uset) const;
1514 inline boolean has_domain_tuple_id() const;
1515 inline boolean has_equal_space(const isl::map &map2) const;
1516 inline boolean has_range_tuple_id() const;
1517 inline boolean has_tuple_id(isl::dim type) const;
1518 inline boolean has_tuple_name(isl::dim type) const;
1519 inline isl::basic_map intersect(isl::basic_map bmap2) const;
1520 inline isl::map intersect(const isl::map &map2) const;
1521 inline isl::union_map intersect(const isl::union_map &umap2) const;
1522 inline isl::basic_map intersect_domain(isl::basic_set bset) const;
1523 inline isl::map intersect_domain(const isl::set &set) const;
1524 inline isl::union_map intersect_domain(const isl::space &space) const;
1525 inline isl::union_map intersect_domain(const isl::union_set &uset) const;
1526 inline isl::basic_map intersect_domain(const isl::point &bset) const;
1527 inline isl::map intersect_domain_factor_domain(const isl::map &factor) const;
1528 inline isl::union_map intersect_domain_factor_domain(const isl::union_map &factor) const;
1529 inline isl::map intersect_domain_factor_range(const isl::map &factor) const;
1530 inline isl::union_map intersect_domain_factor_range(const isl::union_map &factor) const;
1531 inline isl::map intersect_params(const isl::set ¶ms) const;
1532 inline isl::basic_map intersect_range(isl::basic_set bset) const;
1533 inline isl::map intersect_range(const isl::set &set) const;
1534 inline isl::union_map intersect_range(const isl::space &space) const;
1535 inline isl::union_map intersect_range(const isl::union_set &uset) const;
1536 inline isl::basic_map intersect_range(const isl::point &bset) const;
1537 inline isl::map intersect_range_factor_domain(const isl::map &factor) const;
1538 inline isl::union_map intersect_range_factor_domain(const isl::union_map &factor) const;
1539 inline isl::map intersect_range_factor_range(const isl::map &factor) const;
1540 inline isl::union_map intersect_range_factor_range(const isl::union_map &factor) const;
1541 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1542 inline boolean is_bijective() const;
1543 inline boolean is_disjoint(const isl::map &map2) const;
1544 inline boolean is_disjoint(const isl::union_map &umap2) const;
1545 inline boolean is_empty() const;
1546 inline boolean is_equal(const isl::basic_map &bmap2) const;
1547 inline boolean is_equal(const isl::map &map2) const;
1548 inline boolean is_equal(const isl::union_map &umap2) const;
1549 inline boolean is_injective() const;
1550 inline boolean is_single_valued() const;
1551 inline boolean is_strict_subset(const isl::map &map2) const;
1552 inline boolean is_strict_subset(const isl::union_map &umap2) const;
1553 inline boolean is_subset(const isl::basic_map &bmap2) const;
1554 inline boolean is_subset(const isl::map &map2) const;
1555 inline boolean is_subset(const isl::union_map &umap2) const;
1556 inline boolean isa_map() const;
1557 inline isl::map lex_ge_at(const isl::multi_pw_aff &mpa) const;
1558 inline isl::map lex_gt_at(const isl::multi_pw_aff &mpa) const;
1559 inline isl::map lex_le_at(const isl::multi_pw_aff &mpa) const;
1560 inline isl::map lex_lt_at(const isl::multi_pw_aff &mpa) const;
1561 inline isl::map lexmax() const;
1562 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
1563 inline isl::map lexmin() const;
1564 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
1565 inline isl::map lower_bound(const isl::multi_pw_aff &lower) const;
1566 inline isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1567 inline isl::map_list map_list() const;
1568 inline isl::multi_pw_aff max_multi_pw_aff() const;
1569 inline isl::multi_pw_aff min_multi_pw_aff() const;
1570 inline isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1571 inline class size n_basic_map() const;
1572 inline isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1573 inline isl::set params() const;
1574 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1575 inline isl::basic_map polyhedral_hull() const;
1576 inline isl::map preimage_domain(const isl::multi_aff &ma) const;
1577 inline isl::map preimage_domain(const isl::multi_pw_aff &mpa) const;
1578 inline isl::map preimage_domain(const isl::pw_multi_aff &pma) const;
1579 inline isl::union_map preimage_domain(const isl::union_pw_multi_aff &upma) const;
1580 inline isl::map preimage_range(const isl::multi_aff &ma) const;
1581 inline isl::map preimage_range(const isl::pw_multi_aff &pma) const;
1582 inline isl::union_map preimage_range(const isl::union_pw_multi_aff &upma) const;
1583 inline isl::map product(const isl::map &map2) const;
1584 inline isl::union_map product(const isl::union_map &umap2) const;
1585 inline isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const;
1586 inline isl::map project_out_all_params() const;
1587 inline isl::set range() const;
1588 inline isl::map range_factor_domain() const;
1589 inline isl::map range_factor_range() const;
1590 inline isl::fixed_box range_lattice_tile() const;
1591 inline isl::map range_map() const;
1592 inline isl::map range_product(const isl::map &map2) const;
1593 inline isl::union_map range_product(const isl::union_map &umap2) const;
1594 inline isl::map range_reverse() const;
1595 inline isl::fixed_box range_simple_fixed_box_hull() const;
1596 inline class size range_tuple_dim() const;
1597 inline isl::id range_tuple_id() const;
1598 inline isl::basic_map reverse() const;
1599 inline isl::basic_map sample() const;
1600 inline isl::map set_domain_tuple(const isl::id &id) const;
1601 inline isl::map set_domain_tuple(const std::string &id) const;
1602 inline isl::map set_range_tuple(const isl::id &id) const;
1603 inline isl::map set_range_tuple(const std::string &id) const;
1604 inline isl::map set_tuple_id(isl::dim type, const isl::id &id) const;
1605 inline isl::map set_tuple_id(isl::dim type, const std::string &id) const;
1606 inline isl::space space() const;
1607 inline isl::map subtract(const isl::map &map2) const;
1608 inline isl::union_map subtract(const isl::union_map &umap2) const;
1609 inline isl::union_map subtract_domain(const isl::union_set &dom) const;
1610 inline isl::union_map subtract_range(const isl::union_set &dom) const;
1611 inline isl::map sum(const isl::map &map2) const;
1612 inline isl::basic_map_list to_list() const;
1613 inline isl::union_map to_union_map() const;
1614 inline isl::id tuple_id(isl::dim type) const;
1615 inline isl::map uncurry() const;
1616 inline isl::map unite(isl::basic_map bmap2) const;
1617 inline isl::map unite(const isl::map &map2) const;
1618 inline isl::union_map unite(const isl::union_map &umap2) const;
1619 static inline isl::basic_map universe(isl::space space);
1620 inline isl::basic_map unshifted_simple_hull() const;
1621 inline isl::map upper_bound(const isl::multi_pw_aff &upper) const;
1622 inline isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
1623 inline isl::set wrap() const;
1624 inline isl::map zip() const;
1625 };
1626
1627 // declarations for isl::basic_map_list
1628 inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
1629 inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
1630
1631 class basic_map_list {
1632 friend inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
1633 friend inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
1634
1635 protected:
1636 isl_basic_map_list *ptr = nullptr;
1637
1638 inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
1639
1640 public:
1641 inline /* implicit */ basic_map_list();
1642 inline /* implicit */ basic_map_list(const basic_map_list &obj);
1643 inline explicit basic_map_list(isl::ctx ctx, int n);
1644 inline explicit basic_map_list(isl::basic_map el);
1645 inline basic_map_list &operator=(basic_map_list obj);
1646 inline ~basic_map_list();
1647 inline __isl_give isl_basic_map_list *copy() const &;
1648 inline __isl_give isl_basic_map_list *copy() && = delete;
1649 inline __isl_keep isl_basic_map_list *get() const;
1650 inline __isl_give isl_basic_map_list *release();
1651 inline bool is_null() const;
1652 inline isl::ctx ctx() const;
1653
1654 inline isl::basic_map_list add(isl::basic_map el) const;
1655 inline isl::basic_map at(int index) const;
1656 inline isl::basic_map get_at(int index) const;
1657 inline isl::basic_map_list clear() const;
1658 inline isl::basic_map_list concat(isl::basic_map_list list2) const;
1659 inline isl::basic_map_list drop(unsigned int first, unsigned int n) const;
1660 inline stat foreach(const std::function<stat(isl::basic_map)> &fn) const;
1661 inline isl::basic_map_list insert(unsigned int pos, isl::basic_map el) const;
1662 inline class size size() const;
1663 };
1664
1665 // declarations for isl::basic_set
1666 inline basic_set manage(__isl_take isl_basic_set *ptr);
1667 inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1668
1669 class basic_set {
1670 friend inline basic_set manage(__isl_take isl_basic_set *ptr);
1671 friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1672
1673 protected:
1674 isl_basic_set *ptr = nullptr;
1675
1676 inline explicit basic_set(__isl_take isl_basic_set *ptr);
1677
1678 public:
1679 inline /* implicit */ basic_set();
1680 inline /* implicit */ basic_set(const basic_set &obj);
1681 inline /* implicit */ basic_set(isl::point pnt);
1682 inline explicit basic_set(isl::ctx ctx, const std::string &str);
1683 inline basic_set &operator=(basic_set obj);
1684 inline ~basic_set();
1685 inline __isl_give isl_basic_set *copy() const &;
1686 inline __isl_give isl_basic_set *copy() && = delete;
1687 inline __isl_keep isl_basic_set *get() const;
1688 inline __isl_give isl_basic_set *release();
1689 inline bool is_null() const;
1690 inline isl::ctx ctx() const;
1691
1692 inline isl::set add_constraint(const isl::constraint &constraint) const;
1693 inline isl::set add_dims(isl::dim type, unsigned int n) const;
1694 inline isl::basic_set affine_hull() const;
1695 inline isl::set align_params(const isl::space &model) const;
1696 inline isl::basic_set apply(isl::basic_map bmap) const;
1697 inline isl::set apply(const isl::map &map) const;
1698 inline isl::union_set apply(const isl::union_map &umap) const;
1699 inline isl::pw_multi_aff as_pw_multi_aff() const;
1700 inline isl::set as_set() const;
1701 inline isl::basic_set_list basic_set_list() const;
1702 inline isl::set bind(const isl::multi_id &tuple) const;
1703 inline isl::set coalesce() const;
1704 inline isl::set complement() const;
1705 inline isl::union_set compute_divs() const;
1706 inline boolean contains(const isl::space &space) const;
1707 inline isl::basic_set convex_hull() const;
1708 inline isl::basic_set detect_equalities() const;
1709 inline class size dim(isl::dim type) const;
1710 inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
1711 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
1712 inline isl::pw_aff dim_max(int pos) const;
1713 inline isl::val dim_max_val(int pos) const;
1714 inline isl::pw_aff dim_min(int pos) const;
1715 inline isl::val dim_min_val(int pos) const;
1716 inline std::string dim_name(isl::dim type, unsigned int pos) const;
1717 inline isl::aff div(int pos) const;
1718 inline isl::aff get_div(int pos) const;
1719 inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1720 inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
1721 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
1722 inline isl::set extract_set(const isl::space &space) const;
1723 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1724 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
1725 inline isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
1726 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
1727 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, long v) const;
1728 inline isl::basic_set flatten() const;
1729 inline stat foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const;
1730 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
1731 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
1732 inline isl::basic_set gist(isl::basic_set context) const;
1733 inline isl::set gist(const isl::set &context) const;
1734 inline isl::union_set gist(const isl::union_set &context) const;
1735 inline isl::basic_set gist(const isl::point &context) const;
1736 inline isl::set gist_params(const isl::set &context) const;
1737 inline boolean has_equal_space(const isl::set &set2) const;
1738 inline isl::map identity() const;
1739 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
1740 inline isl::pw_aff indicator_function() const;
1741 inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
1742 inline isl::map insert_domain(const isl::space &domain) const;
1743 inline isl::basic_set intersect(isl::basic_set bset2) const;
1744 inline isl::set intersect(const isl::set &set2) const;
1745 inline isl::union_set intersect(const isl::union_set &uset2) const;
1746 inline isl::basic_set intersect(const isl::point &bset2) const;
1747 inline isl::basic_set intersect_params(isl::basic_set bset2) const;
1748 inline isl::set intersect_params(const isl::set ¶ms) const;
1749 inline isl::basic_set intersect_params(const isl::point &bset2) const;
1750 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1751 inline boolean involves_locals() const;
1752 inline boolean is_bounded() const;
1753 inline boolean is_disjoint(const isl::set &set2) const;
1754 inline boolean is_disjoint(const isl::union_set &uset2) const;
1755 inline boolean is_empty() const;
1756 inline boolean is_equal(const isl::basic_set &bset2) const;
1757 inline boolean is_equal(const isl::set &set2) const;
1758 inline boolean is_equal(const isl::union_set &uset2) const;
1759 inline boolean is_equal(const isl::point &bset2) const;
1760 inline boolean is_params() const;
1761 inline boolean is_singleton() const;
1762 inline boolean is_strict_subset(const isl::set &set2) const;
1763 inline boolean is_strict_subset(const isl::union_set &uset2) const;
1764 inline boolean is_subset(const isl::basic_set &bset2) const;
1765 inline boolean is_subset(const isl::set &set2) const;
1766 inline boolean is_subset(const isl::union_set &uset2) const;
1767 inline boolean is_subset(const isl::point &bset2) const;
1768 inline boolean is_wrapping() const;
1769 inline boolean isa_set() const;
1770 inline isl::set lexmax() const;
1771 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
1772 inline isl::set lexmin() const;
1773 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
1774 inline isl::set lower_bound(const isl::multi_pw_aff &lower) const;
1775 inline isl::set lower_bound(const isl::multi_val &lower) const;
1776 inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1777 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
1778 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, long value) const;
1779 inline isl::multi_pw_aff max_multi_pw_aff() const;
1780 inline isl::val max_val(const isl::aff &obj) const;
1781 inline isl::multi_pw_aff min_multi_pw_aff() const;
1782 inline isl::val min_val(const isl::aff &obj) const;
1783 inline class size n_basic_set() const;
1784 inline isl::basic_set params() const;
1785 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1786 inline isl::multi_val plain_multi_val_if_fixed() const;
1787 inline isl::basic_set polyhedral_hull() const;
1788 inline isl::set preimage(const isl::multi_aff &ma) const;
1789 inline isl::set preimage(const isl::multi_pw_aff &mpa) const;
1790 inline isl::set preimage(const isl::pw_multi_aff &pma) const;
1791 inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
1792 inline isl::set product(const isl::set &set2) const;
1793 inline isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
1794 inline isl::set project_out_all_params() const;
1795 inline isl::set project_out_param(const isl::id &id) const;
1796 inline isl::set project_out_param(const std::string &id) const;
1797 inline isl::set project_out_param(const isl::id_list &list) const;
1798 inline isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const;
1799 inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
1800 inline isl::set remove_divs() const;
1801 inline isl::set remove_redundancies() const;
1802 inline isl::set reset_tuple_id() const;
1803 inline isl::basic_set sample() const;
1804 inline isl::point sample_point() const;
1805 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const;
1806 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
1807 inline isl::set_list set_list() const;
1808 inline isl::set set_tuple_id(const isl::id &id) const;
1809 inline isl::set set_tuple_id(const std::string &id) const;
1810 inline isl::fixed_box simple_fixed_box_hull() const;
1811 inline isl::basic_set simple_hull() const;
1812 inline isl::space space() const;
1813 inline isl::space get_space() const;
1814 inline isl::val stride(int pos) const;
1815 inline isl::set subtract(const isl::set &set2) const;
1816 inline isl::union_set subtract(const isl::union_set &uset2) const;
1817 inline isl::basic_set_list to_list() const;
1818 inline isl::set to_set() const;
1819 inline isl::union_set to_union_set() const;
1820 inline isl::map translation() const;
1821 inline class size tuple_dim() const;
1822 inline isl::id tuple_id() const;
1823 inline std::string tuple_name() const;
1824 inline isl::set unbind_params(const isl::multi_id &tuple) const;
1825 inline isl::map unbind_params_insert_domain(const isl::multi_id &domain) const;
1826 inline isl::set unite(isl::basic_set bset2) const;
1827 inline isl::set unite(const isl::set &set2) const;
1828 inline isl::union_set unite(const isl::union_set &uset2) const;
1829 inline isl::set unite(const isl::point &bset2) const;
1830 static inline isl::basic_set universe(isl::space space);
1831 inline isl::basic_set unshifted_simple_hull() const;
1832 inline isl::map unwrap() const;
1833 inline isl::set upper_bound(const isl::multi_pw_aff &upper) const;
1834 inline isl::set upper_bound(const isl::multi_val &upper) const;
1835 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
1836 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, long value) const;
1837 };
1838
1839 // declarations for isl::basic_set_list
1840 inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
1841 inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
1842
1843 class basic_set_list {
1844 friend inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
1845 friend inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
1846
1847 protected:
1848 isl_basic_set_list *ptr = nullptr;
1849
1850 inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
1851
1852 public:
1853 inline /* implicit */ basic_set_list();
1854 inline /* implicit */ basic_set_list(const basic_set_list &obj);
1855 inline explicit basic_set_list(isl::ctx ctx, int n);
1856 inline explicit basic_set_list(isl::basic_set el);
1857 inline basic_set_list &operator=(basic_set_list obj);
1858 inline ~basic_set_list();
1859 inline __isl_give isl_basic_set_list *copy() const &;
1860 inline __isl_give isl_basic_set_list *copy() && = delete;
1861 inline __isl_keep isl_basic_set_list *get() const;
1862 inline __isl_give isl_basic_set_list *release();
1863 inline bool is_null() const;
1864 inline isl::ctx ctx() const;
1865
1866 inline isl::basic_set_list add(isl::basic_set el) const;
1867 inline isl::basic_set at(int index) const;
1868 inline isl::basic_set get_at(int index) const;
1869 inline isl::basic_set_list clear() const;
1870 inline isl::basic_set_list concat(isl::basic_set_list list2) const;
1871 inline isl::basic_set_list drop(unsigned int first, unsigned int n) const;
1872 inline stat foreach(const std::function<stat(isl::basic_set)> &fn) const;
1873 inline isl::basic_set_list insert(unsigned int pos, isl::basic_set el) const;
1874 inline class size size() const;
1875 };
1876
1877 // declarations for isl::constraint
1878 inline constraint manage(__isl_take isl_constraint *ptr);
1879 inline constraint manage_copy(__isl_keep isl_constraint *ptr);
1880
1881 class constraint {
1882 friend inline constraint manage(__isl_take isl_constraint *ptr);
1883 friend inline constraint manage_copy(__isl_keep isl_constraint *ptr);
1884
1885 protected:
1886 isl_constraint *ptr = nullptr;
1887
1888 inline explicit constraint(__isl_take isl_constraint *ptr);
1889
1890 public:
1891 inline /* implicit */ constraint();
1892 inline /* implicit */ constraint(const constraint &obj);
1893 inline constraint &operator=(constraint obj);
1894 inline ~constraint();
1895 inline __isl_give isl_constraint *copy() const &;
1896 inline __isl_give isl_constraint *copy() && = delete;
1897 inline __isl_keep isl_constraint *get() const;
1898 inline __isl_give isl_constraint *release();
1899 inline bool is_null() const;
1900 inline isl::ctx ctx() const;
1901
1902 static inline isl::constraint alloc_equality(isl::local_space ls);
1903 static inline isl::constraint alloc_inequality(isl::local_space ls);
1904 inline isl::constraint set_coefficient_si(isl::dim type, int pos, int v) const;
1905 inline isl::constraint set_constant_si(int v) const;
1906 inline isl::constraint set_constant_val(isl::val v) const;
1907 inline isl::constraint set_constant_val(long v) const;
1908 };
1909
1910 // declarations for isl::fixed_box
1911 inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1912 inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1913
1914 class fixed_box {
1915 friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1916 friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1917
1918 protected:
1919 isl_fixed_box *ptr = nullptr;
1920
1921 inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1922
1923 public:
1924 inline /* implicit */ fixed_box();
1925 inline /* implicit */ fixed_box(const fixed_box &obj);
1926 inline fixed_box &operator=(fixed_box obj);
1927 inline ~fixed_box();
1928 inline __isl_give isl_fixed_box *copy() const &;
1929 inline __isl_give isl_fixed_box *copy() && = delete;
1930 inline __isl_keep isl_fixed_box *get() const;
1931 inline __isl_give isl_fixed_box *release();
1932 inline bool is_null() const;
1933 inline isl::ctx ctx() const;
1934
1935 inline boolean is_valid() const;
1936 inline isl::multi_aff offset() const;
1937 inline isl::multi_aff get_offset() const;
1938 inline isl::multi_val size() const;
1939 inline isl::multi_val get_size() const;
1940 inline isl::space space() const;
1941 inline isl::space get_space() const;
1942 };
1943
1944 // declarations for isl::id
1945 inline id manage(__isl_take isl_id *ptr);
1946 inline id manage_copy(__isl_keep isl_id *ptr);
1947
1948 class id {
1949 friend inline id manage(__isl_take isl_id *ptr);
1950 friend inline id manage_copy(__isl_keep isl_id *ptr);
1951
1952 protected:
1953 isl_id *ptr = nullptr;
1954
1955 inline explicit id(__isl_take isl_id *ptr);
1956
1957 public:
1958 inline /* implicit */ id();
1959 inline /* implicit */ id(const id &obj);
1960 inline explicit id(isl::ctx ctx, const std::string &str);
1961 inline id &operator=(id obj);
1962 inline ~id();
1963 inline __isl_give isl_id *copy() const &;
1964 inline __isl_give isl_id *copy() && = delete;
1965 inline __isl_keep isl_id *get() const;
1966 inline __isl_give isl_id *release();
1967 inline bool is_null() const;
1968 inline isl::ctx ctx() const;
1969
1970 static inline isl::id alloc(isl::ctx ctx, const std::string &name, void * user);
1971 inline std::string name() const;
1972 inline std::string get_name() const;
1973 inline isl::id_list to_list() const;
1974 inline void * user() const;
1975 inline void * get_user() const;
1976 };
1977
1978 // declarations for isl::id_list
1979 inline id_list manage(__isl_take isl_id_list *ptr);
1980 inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1981
1982 class id_list {
1983 friend inline id_list manage(__isl_take isl_id_list *ptr);
1984 friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1985
1986 protected:
1987 isl_id_list *ptr = nullptr;
1988
1989 inline explicit id_list(__isl_take isl_id_list *ptr);
1990
1991 public:
1992 inline /* implicit */ id_list();
1993 inline /* implicit */ id_list(const id_list &obj);
1994 inline explicit id_list(isl::ctx ctx, int n);
1995 inline explicit id_list(isl::id el);
1996 inline explicit id_list(isl::ctx ctx, const std::string &str);
1997 inline id_list &operator=(id_list obj);
1998 inline ~id_list();
1999 inline __isl_give isl_id_list *copy() const &;
2000 inline __isl_give isl_id_list *copy() && = delete;
2001 inline __isl_keep isl_id_list *get() const;
2002 inline __isl_give isl_id_list *release();
2003 inline bool is_null() const;
2004 inline isl::ctx ctx() const;
2005
2006 inline isl::id_list add(isl::id el) const;
2007 inline isl::id_list add(const std::string &el) const;
2008 inline isl::id at(int index) const;
2009 inline isl::id get_at(int index) const;
2010 inline isl::id_list clear() const;
2011 inline isl::id_list concat(isl::id_list list2) const;
2012 inline isl::id_list drop(unsigned int first, unsigned int n) const;
2013 inline stat foreach(const std::function<stat(isl::id)> &fn) const;
2014 inline isl::id_list insert(unsigned int pos, isl::id el) const;
2015 inline isl::id_list insert(unsigned int pos, const std::string &el) const;
2016 inline class size size() const;
2017 };
2018
2019 // declarations for isl::id_to_ast_expr
2020 inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
2021 inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
2022
2023 class id_to_ast_expr {
2024 friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
2025 friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
2026
2027 protected:
2028 isl_id_to_ast_expr *ptr = nullptr;
2029
2030 inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
2031
2032 public:
2033 inline /* implicit */ id_to_ast_expr();
2034 inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj);
2035 inline id_to_ast_expr &operator=(id_to_ast_expr obj);
2036 inline ~id_to_ast_expr();
2037 inline __isl_give isl_id_to_ast_expr *copy() const &;
2038 inline __isl_give isl_id_to_ast_expr *copy() && = delete;
2039 inline __isl_keep isl_id_to_ast_expr *get() const;
2040 inline __isl_give isl_id_to_ast_expr *release();
2041 inline bool is_null() const;
2042 inline isl::ctx ctx() const;
2043
2044 static inline isl::id_to_ast_expr alloc(isl::ctx ctx, int min_size);
2045 inline isl::id_to_ast_expr set(isl::id key, isl::ast_expr val) const;
2046 inline isl::id_to_ast_expr set(const std::string &key, const isl::ast_expr &val) const;
2047 };
2048
2049 // declarations for isl::local_space
2050 inline local_space manage(__isl_take isl_local_space *ptr);
2051 inline local_space manage_copy(__isl_keep isl_local_space *ptr);
2052
2053 class local_space {
2054 friend inline local_space manage(__isl_take isl_local_space *ptr);
2055 friend inline local_space manage_copy(__isl_keep isl_local_space *ptr);
2056
2057 protected:
2058 isl_local_space *ptr = nullptr;
2059
2060 inline explicit local_space(__isl_take isl_local_space *ptr);
2061
2062 public:
2063 inline /* implicit */ local_space();
2064 inline /* implicit */ local_space(const local_space &obj);
2065 inline explicit local_space(isl::space space);
2066 inline local_space &operator=(local_space obj);
2067 inline ~local_space();
2068 inline __isl_give isl_local_space *copy() const &;
2069 inline __isl_give isl_local_space *copy() && = delete;
2070 inline __isl_keep isl_local_space *get() const;
2071 inline __isl_give isl_local_space *release();
2072 inline bool is_null() const;
2073 inline isl::ctx ctx() const;
2074
2075 };
2076
2077 // declarations for isl::map
2078 inline map manage(__isl_take isl_map *ptr);
2079 inline map manage_copy(__isl_keep isl_map *ptr);
2080
2081 class map {
2082 friend inline map manage(__isl_take isl_map *ptr);
2083 friend inline map manage_copy(__isl_keep isl_map *ptr);
2084
2085 protected:
2086 isl_map *ptr = nullptr;
2087
2088 inline explicit map(__isl_take isl_map *ptr);
2089
2090 public:
2091 inline /* implicit */ map();
2092 inline /* implicit */ map(const map &obj);
2093 inline /* implicit */ map(isl::basic_map bmap);
2094 inline explicit map(isl::ctx ctx, const std::string &str);
2095 inline map &operator=(map obj);
2096 inline ~map();
2097 inline __isl_give isl_map *copy() const &;
2098 inline __isl_give isl_map *copy() && = delete;
2099 inline __isl_keep isl_map *get() const;
2100 inline __isl_give isl_map *release();
2101 inline bool is_null() const;
2102 inline isl::ctx ctx() const;
2103
2104 inline isl::map add_constraint(isl::constraint constraint) const;
2105 inline isl::map add_dims(isl::dim type, unsigned int n) const;
2106 inline isl::basic_map affine_hull() const;
2107 inline isl::map align_params(isl::space model) const;
2108 inline isl::map apply_domain(isl::map map2) const;
2109 inline isl::union_map apply_domain(const isl::union_map &umap2) const;
2110 inline isl::map apply_domain(const isl::basic_map &map2) const;
2111 inline isl::map apply_range(isl::map map2) const;
2112 inline isl::union_map apply_range(const isl::union_map &umap2) const;
2113 inline isl::map apply_range(const isl::basic_map &map2) const;
2114 inline isl::map as_map() const;
2115 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
2116 inline isl::pw_multi_aff as_pw_multi_aff() const;
2117 inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
2118 inline isl::basic_map_list basic_map_list() const;
2119 inline isl::basic_map_list get_basic_map_list() const;
2120 inline isl::set bind_domain(isl::multi_id tuple) const;
2121 inline isl::set bind_range(isl::multi_id tuple) const;
2122 inline boolean can_curry() const;
2123 inline isl::map coalesce() const;
2124 inline isl::map complement() const;
2125 inline isl::union_map compute_divs() const;
2126 inline isl::map curry() const;
2127 inline isl::set deltas() const;
2128 inline isl::map detect_equalities() const;
2129 inline class size dim(isl::dim type) const;
2130 inline isl::pw_aff dim_max(int pos) const;
2131 inline isl::pw_aff dim_min(int pos) const;
2132 inline isl::set domain() const;
2133 inline isl::map domain_factor_domain() const;
2134 inline isl::map domain_factor_range() const;
2135 inline isl::map domain_map() const;
2136 inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
2137 inline isl::map domain_product(isl::map map2) const;
2138 inline isl::union_map domain_product(const isl::union_map &umap2) const;
2139 inline isl::map domain_product(const isl::basic_map &map2) const;
2140 inline class size domain_tuple_dim() const;
2141 inline isl::id domain_tuple_id() const;
2142 inline isl::id get_domain_tuple_id() const;
2143 static inline isl::map empty(isl::space space);
2144 inline isl::map eq_at(isl::multi_pw_aff mpa) const;
2145 inline isl::union_map eq_at(const isl::multi_union_pw_aff &mupa) const;
2146 inline isl::map eq_at(const isl::aff &mpa) const;
2147 inline isl::map eq_at(const isl::multi_aff &mpa) const;
2148 inline isl::map eq_at(const isl::pw_aff &mpa) const;
2149 inline isl::map eq_at(const isl::pw_multi_aff &mpa) const;
2150 inline isl::map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2151 inline boolean every_map(const std::function<boolean(isl::map)> &test) const;
2152 inline isl::map extract_map(const isl::space &space) const;
2153 inline isl::map factor_domain() const;
2154 inline isl::map factor_range() const;
2155 inline isl::map fix_si(isl::dim type, unsigned int pos, int value) const;
2156 inline isl::union_map fixed_power(const isl::val &exp) const;
2157 inline isl::union_map fixed_power(long exp) const;
2158 inline isl::map flat_range_product(isl::map map2) const;
2159 inline isl::union_map flat_range_product(const isl::union_map &umap2) const;
2160 inline isl::map flat_range_product(const isl::basic_map &map2) const;
2161 inline isl::map flatten() const;
2162 inline isl::map flatten_domain() const;
2163 inline isl::map flatten_range() const;
2164 inline isl::map floordiv_val(isl::val d) const;
2165 inline isl::map floordiv_val(long d) const;
2166 inline stat foreach_basic_map(const std::function<stat(isl::basic_map)> &fn) const;
2167 inline stat foreach_map(const std::function<stat(isl::map)> &fn) const;
2168 static inline isl::map from_aff(isl::aff aff);
2169 static inline isl::map from_domain(isl::set set);
2170 static inline isl::map from_domain_and_range(isl::set domain, isl::set range);
2171 static inline isl::map from_multi_aff(isl::multi_aff maff);
2172 static inline isl::map from_pw_aff(isl::pw_aff pwaff);
2173 static inline isl::map from_range(isl::set set);
2174 static inline isl::map from_union_map(isl::union_map umap);
2175 inline isl::map gist(isl::map context) const;
2176 inline isl::union_map gist(const isl::union_map &context) const;
2177 inline isl::map gist(const isl::basic_map &context) const;
2178 inline isl::map gist_domain(isl::set context) const;
2179 inline isl::union_map gist_domain(const isl::union_set &uset) const;
2180 inline isl::map gist_domain(const isl::basic_set &context) const;
2181 inline isl::map gist_domain(const isl::point &context) const;
2182 inline isl::map gist_params(isl::set context) const;
2183 inline isl::union_map gist_range(const isl::union_set &uset) const;
2184 inline boolean has_domain_tuple_id() const;
2185 inline boolean has_equal_space(const isl::map &map2) const;
2186 inline boolean has_range_tuple_id() const;
2187 inline boolean has_tuple_id(isl::dim type) const;
2188 inline boolean has_tuple_name(isl::dim type) const;
2189 static inline isl::map identity(isl::space space);
2190 inline isl::map intersect(isl::map map2) const;
2191 inline isl::union_map intersect(const isl::union_map &umap2) const;
2192 inline isl::map intersect(const isl::basic_map &map2) const;
2193 inline isl::map intersect_domain(isl::set set) const;
2194 inline isl::union_map intersect_domain(const isl::space &space) const;
2195 inline isl::union_map intersect_domain(const isl::union_set &uset) const;
2196 inline isl::map intersect_domain(const isl::basic_set &set) const;
2197 inline isl::map intersect_domain(const isl::point &set) const;
2198 inline isl::map intersect_domain_factor_domain(isl::map factor) const;
2199 inline isl::union_map intersect_domain_factor_domain(const isl::union_map &factor) const;
2200 inline isl::map intersect_domain_factor_domain(const isl::basic_map &factor) const;
2201 inline isl::map intersect_domain_factor_range(isl::map factor) const;
2202 inline isl::union_map intersect_domain_factor_range(const isl::union_map &factor) const;
2203 inline isl::map intersect_domain_factor_range(const isl::basic_map &factor) const;
2204 inline isl::map intersect_params(isl::set params) const;
2205 inline isl::map intersect_range(isl::set set) const;
2206 inline isl::union_map intersect_range(const isl::space &space) const;
2207 inline isl::union_map intersect_range(const isl::union_set &uset) const;
2208 inline isl::map intersect_range(const isl::basic_set &set) const;
2209 inline isl::map intersect_range(const isl::point &set) const;
2210 inline isl::map intersect_range_factor_domain(isl::map factor) const;
2211 inline isl::union_map intersect_range_factor_domain(const isl::union_map &factor) const;
2212 inline isl::map intersect_range_factor_domain(const isl::basic_map &factor) const;
2213 inline isl::map intersect_range_factor_range(isl::map factor) const;
2214 inline isl::union_map intersect_range_factor_range(const isl::union_map &factor) const;
2215 inline isl::map intersect_range_factor_range(const isl::basic_map &factor) const;
2216 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2217 inline boolean is_bijective() const;
2218 inline boolean is_disjoint(const isl::map &map2) const;
2219 inline boolean is_disjoint(const isl::union_map &umap2) const;
2220 inline boolean is_disjoint(const isl::basic_map &map2) const;
2221 inline boolean is_empty() const;
2222 inline boolean is_equal(const isl::map &map2) const;
2223 inline boolean is_equal(const isl::union_map &umap2) const;
2224 inline boolean is_equal(const isl::basic_map &map2) const;
2225 inline boolean is_injective() const;
2226 inline boolean is_single_valued() const;
2227 inline boolean is_strict_subset(const isl::map &map2) const;
2228 inline boolean is_strict_subset(const isl::union_map &umap2) const;
2229 inline boolean is_strict_subset(const isl::basic_map &map2) const;
2230 inline boolean is_subset(const isl::map &map2) const;
2231 inline boolean is_subset(const isl::union_map &umap2) const;
2232 inline boolean is_subset(const isl::basic_map &map2) const;
2233 inline boolean isa_map() const;
2234 static inline isl::map lex_ge(isl::space set_space);
2235 inline isl::map lex_ge_at(isl::multi_pw_aff mpa) const;
2236 static inline isl::map lex_gt(isl::space set_space);
2237 inline isl::map lex_gt_at(isl::multi_pw_aff mpa) const;
2238 static inline isl::map lex_le(isl::space set_space);
2239 inline isl::map lex_le_at(isl::multi_pw_aff mpa) const;
2240 static inline isl::map lex_lt(isl::space set_space);
2241 inline isl::map lex_lt_at(isl::multi_pw_aff mpa) const;
2242 inline isl::map lexmax() const;
2243 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
2244 inline isl::map lexmin() const;
2245 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
2246 inline isl::map lower_bound(isl::multi_pw_aff lower) const;
2247 inline isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2248 inline isl::map_list map_list() const;
2249 inline isl::multi_pw_aff max_multi_pw_aff() const;
2250 inline isl::multi_pw_aff min_multi_pw_aff() const;
2251 inline isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2252 inline class size n_basic_map() const;
2253 inline isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2254 inline isl::set params() const;
2255 inline isl::basic_map polyhedral_hull() const;
2256 inline isl::map preimage_domain(isl::multi_aff ma) const;
2257 inline isl::map preimage_domain(isl::multi_pw_aff mpa) const;
2258 inline isl::map preimage_domain(isl::pw_multi_aff pma) const;
2259 inline isl::union_map preimage_domain(const isl::union_pw_multi_aff &upma) const;
2260 inline isl::map preimage_range(isl::multi_aff ma) const;
2261 inline isl::map preimage_range(isl::pw_multi_aff pma) const;
2262 inline isl::union_map preimage_range(const isl::union_pw_multi_aff &upma) const;
2263 inline isl::map product(isl::map map2) const;
2264 inline isl::union_map product(const isl::union_map &umap2) const;
2265 inline isl::map product(const isl::basic_map &map2) const;
2266 inline isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const;
2267 inline isl::map project_out_all_params() const;
2268 inline isl::set range() const;
2269 inline isl::map range_factor_domain() const;
2270 inline isl::map range_factor_range() const;
2271 inline isl::fixed_box range_lattice_tile() const;
2272 inline isl::fixed_box get_range_lattice_tile() const;
2273 inline isl::map range_map() const;
2274 inline isl::map range_product(isl::map map2) const;
2275 inline isl::union_map range_product(const isl::union_map &umap2) const;
2276 inline isl::map range_product(const isl::basic_map &map2) const;
2277 inline isl::map range_reverse() const;
2278 inline isl::fixed_box range_simple_fixed_box_hull() const;
2279 inline isl::fixed_box get_range_simple_fixed_box_hull() const;
2280 inline class size range_tuple_dim() const;
2281 inline isl::id range_tuple_id() const;
2282 inline isl::id get_range_tuple_id() const;
2283 inline isl::map reverse() const;
2284 inline isl::basic_map sample() const;
2285 inline isl::map set_domain_tuple(isl::id id) const;
2286 inline isl::map set_domain_tuple(const std::string &id) const;
2287 inline isl::map set_range_tuple(isl::id id) const;
2288 inline isl::map set_range_tuple(const std::string &id) const;
2289 inline isl::map set_tuple_id(isl::dim type, isl::id id) const;
2290 inline isl::map set_tuple_id(isl::dim type, const std::string &id) const;
2291 inline isl::space space() const;
2292 inline isl::space get_space() const;
2293 inline isl::map subtract(isl::map map2) const;
2294 inline isl::union_map subtract(const isl::union_map &umap2) const;
2295 inline isl::map subtract(const isl::basic_map &map2) const;
2296 inline isl::union_map subtract_domain(const isl::union_set &dom) const;
2297 inline isl::union_map subtract_range(const isl::union_set &dom) const;
2298 inline isl::map sum(isl::map map2) const;
2299 inline isl::map_list to_list() const;
2300 inline isl::union_map to_union_map() const;
2301 inline isl::id tuple_id(isl::dim type) const;
2302 inline isl::id get_tuple_id(isl::dim type) const;
2303 inline isl::map uncurry() const;
2304 inline isl::map unite(isl::map map2) const;
2305 inline isl::union_map unite(const isl::union_map &umap2) const;
2306 inline isl::map unite(const isl::basic_map &map2) const;
2307 static inline isl::map universe(isl::space space);
2308 inline isl::basic_map unshifted_simple_hull() const;
2309 inline isl::map upper_bound(isl::multi_pw_aff upper) const;
2310 inline isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
2311 inline isl::set wrap() const;
2312 inline isl::map zip() const;
2313 };
2314
2315 // declarations for isl::map_list
2316 inline map_list manage(__isl_take isl_map_list *ptr);
2317 inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2318
2319 class map_list {
2320 friend inline map_list manage(__isl_take isl_map_list *ptr);
2321 friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2322
2323 protected:
2324 isl_map_list *ptr = nullptr;
2325
2326 inline explicit map_list(__isl_take isl_map_list *ptr);
2327
2328 public:
2329 inline /* implicit */ map_list();
2330 inline /* implicit */ map_list(const map_list &obj);
2331 inline explicit map_list(isl::ctx ctx, int n);
2332 inline explicit map_list(isl::map el);
2333 inline explicit map_list(isl::ctx ctx, const std::string &str);
2334 inline map_list &operator=(map_list obj);
2335 inline ~map_list();
2336 inline __isl_give isl_map_list *copy() const &;
2337 inline __isl_give isl_map_list *copy() && = delete;
2338 inline __isl_keep isl_map_list *get() const;
2339 inline __isl_give isl_map_list *release();
2340 inline bool is_null() const;
2341 inline isl::ctx ctx() const;
2342
2343 inline isl::map_list add(isl::map el) const;
2344 inline isl::map at(int index) const;
2345 inline isl::map get_at(int index) const;
2346 inline isl::map_list clear() const;
2347 inline isl::map_list concat(isl::map_list list2) const;
2348 inline isl::map_list drop(unsigned int first, unsigned int n) const;
2349 inline stat foreach(const std::function<stat(isl::map)> &fn) const;
2350 inline isl::map_list insert(unsigned int pos, isl::map el) const;
2351 inline class size size() const;
2352 };
2353
2354 // declarations for isl::multi_aff
2355 inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2356 inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2357
2358 class multi_aff {
2359 friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2360 friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2361
2362 protected:
2363 isl_multi_aff *ptr = nullptr;
2364
2365 inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
2366
2367 public:
2368 inline /* implicit */ multi_aff();
2369 inline /* implicit */ multi_aff(const multi_aff &obj);
2370 inline /* implicit */ multi_aff(isl::aff aff);
2371 inline explicit multi_aff(isl::space space, isl::aff_list list);
2372 inline explicit multi_aff(isl::ctx ctx, const std::string &str);
2373 inline multi_aff &operator=(multi_aff obj);
2374 inline ~multi_aff();
2375 inline __isl_give isl_multi_aff *copy() const &;
2376 inline __isl_give isl_multi_aff *copy() && = delete;
2377 inline __isl_keep isl_multi_aff *get() const;
2378 inline __isl_give isl_multi_aff *release();
2379 inline bool is_null() const;
2380 inline isl::ctx ctx() const;
2381
2382 inline isl::multi_aff add(isl::multi_aff multi2) const;
2383 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
2384 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
2385 inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
2386 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
2387 inline isl::multi_aff add(const isl::aff &multi2) const;
2388 inline isl::multi_aff add_constant(isl::multi_val mv) const;
2389 inline isl::multi_aff add_constant(isl::val v) const;
2390 inline isl::multi_aff add_constant(long v) const;
2391 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
2392 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
2393 inline isl::map as_map() const;
2394 inline isl::multi_aff as_multi_aff() const;
2395 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
2396 inline isl::pw_multi_aff as_pw_multi_aff() const;
2397 inline isl::set as_set() const;
2398 inline isl::union_map as_union_map() const;
2399 inline isl::aff at(int pos) const;
2400 inline isl::aff get_at(int pos) const;
2401 inline isl::basic_set bind(isl::multi_id tuple) const;
2402 inline isl::multi_aff bind_domain(isl::multi_id tuple) const;
2403 inline isl::multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
2404 inline isl::pw_multi_aff coalesce() const;
2405 inline isl::multi_val constant_multi_val() const;
2406 inline isl::multi_val get_constant_multi_val() const;
2407 inline class size dim(isl::dim type) const;
2408 inline isl::set domain() const;
2409 static inline isl::multi_aff domain_map(isl::space space);
2410 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2411 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
2412 inline isl::multi_aff flat_range_product(isl::multi_aff multi2) const;
2413 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
2414 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
2415 inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
2416 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
2417 inline isl::multi_aff flat_range_product(const isl::aff &multi2) const;
2418 inline isl::multi_aff floor() const;
2419 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
2420 inline isl::multi_aff gist(isl::set context) const;
2421 inline isl::union_pw_multi_aff gist(const isl::union_set &context) const;
2422 inline isl::multi_aff gist(const isl::basic_set &context) const;
2423 inline isl::multi_aff gist(const isl::point &context) const;
2424 inline boolean has_range_tuple_id() const;
2425 static inline isl::multi_aff identity(isl::space space);
2426 inline isl::multi_aff identity() const;
2427 static inline isl::multi_aff identity_on_domain(isl::space space);
2428 inline isl::multi_aff insert_domain(isl::space domain) const;
2429 inline isl::pw_multi_aff intersect_domain(const isl::set &set) const;
2430 inline isl::union_pw_multi_aff intersect_domain(const isl::space &space) const;
2431 inline isl::union_pw_multi_aff intersect_domain(const isl::union_set &uset) const;
2432 inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
2433 inline isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
2434 inline isl::pw_multi_aff intersect_params(const isl::set &set) const;
2435 inline boolean involves_locals() const;
2436 inline boolean involves_nan() const;
2437 inline boolean involves_param(const isl::id &id) const;
2438 inline boolean involves_param(const std::string &id) const;
2439 inline boolean involves_param(const isl::id_list &list) const;
2440 inline boolean isa_multi_aff() const;
2441 inline boolean isa_pw_multi_aff() const;
2442 inline isl::aff_list list() const;
2443 inline isl::aff_list get_list() const;
2444 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
2445 inline isl::multi_val max_multi_val() const;
2446 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
2447 inline isl::multi_val min_multi_val() const;
2448 static inline isl::multi_aff multi_val_on_domain(isl::space space, isl::multi_val mv);
2449 inline class size n_piece() const;
2450 inline isl::multi_aff neg() const;
2451 inline boolean plain_is_empty() const;
2452 inline boolean plain_is_equal(const isl::multi_aff &multi2) const;
2453 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
2454 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
2455 inline boolean plain_is_equal(const isl::aff &multi2) const;
2456 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
2457 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
2458 inline isl::multi_aff product(isl::multi_aff multi2) const;
2459 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
2460 inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
2461 inline isl::multi_aff product(const isl::aff &multi2) const;
2462 inline isl::multi_aff pullback(isl::multi_aff ma2) const;
2463 inline isl::multi_pw_aff pullback(const isl::multi_pw_aff &mpa2) const;
2464 inline isl::pw_multi_aff pullback(const isl::pw_multi_aff &pma2) const;
2465 inline isl::union_pw_multi_aff pullback(const isl::union_pw_multi_aff &upma2) const;
2466 inline isl::multi_aff pullback(const isl::aff &ma2) const;
2467 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
2468 inline isl::pw_multi_aff range_factor_domain() const;
2469 inline isl::pw_multi_aff range_factor_range() const;
2470 static inline isl::multi_aff range_map(isl::space space);
2471 inline isl::multi_aff range_product(isl::multi_aff multi2) const;
2472 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
2473 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
2474 inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
2475 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
2476 inline isl::multi_aff range_product(const isl::aff &multi2) const;
2477 inline isl::id range_tuple_id() const;
2478 inline isl::id get_range_tuple_id() const;
2479 inline isl::multi_aff reset_range_tuple_id() const;
2480 inline isl::multi_aff reset_tuple_id(isl::dim type) const;
2481 inline isl::multi_aff scale(isl::multi_val mv) const;
2482 inline isl::multi_aff scale(isl::val v) const;
2483 inline isl::multi_aff scale(long v) const;
2484 inline isl::multi_aff scale_down(isl::multi_val mv) const;
2485 inline isl::multi_aff scale_down(isl::val v) const;
2486 inline isl::multi_aff scale_down(long v) const;
2487 inline isl::multi_aff set_aff(int pos, isl::aff el) const;
2488 inline isl::multi_aff set_at(int pos, isl::aff el) const;
2489 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
2490 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
2491 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
2492 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const;
2493 inline isl::multi_aff set_range_tuple(isl::id id) const;
2494 inline isl::multi_aff set_range_tuple(const std::string &id) const;
2495 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
2496 inline class size size() const;
2497 inline isl::space space() const;
2498 inline isl::space get_space() const;
2499 inline isl::multi_aff sub(isl::multi_aff multi2) const;
2500 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
2501 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
2502 inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
2503 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
2504 inline isl::multi_aff sub(const isl::aff &multi2) const;
2505 inline isl::pw_multi_aff subtract_domain(const isl::set &set) const;
2506 inline isl::union_pw_multi_aff subtract_domain(const isl::space &space) const;
2507 inline isl::union_pw_multi_aff subtract_domain(const isl::union_set &uset) const;
2508 inline isl::pw_multi_aff_list to_list() const;
2509 inline isl::multi_pw_aff to_multi_pw_aff() const;
2510 inline isl::multi_union_pw_aff to_multi_union_pw_aff() const;
2511 inline isl::pw_multi_aff to_pw_multi_aff() const;
2512 inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
2513 inline isl::id tuple_id(isl::dim type) const;
2514 inline isl::multi_aff unbind_params_insert_domain(isl::multi_id domain) const;
2515 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
2516 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
2517 inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
2518 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
2519 static inline isl::multi_aff zero(isl::space space);
2520 };
2521
2522 // declarations for isl::multi_id
2523 inline multi_id manage(__isl_take isl_multi_id *ptr);
2524 inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2525
2526 class multi_id {
2527 friend inline multi_id manage(__isl_take isl_multi_id *ptr);
2528 friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2529
2530 protected:
2531 isl_multi_id *ptr = nullptr;
2532
2533 inline explicit multi_id(__isl_take isl_multi_id *ptr);
2534
2535 public:
2536 inline /* implicit */ multi_id();
2537 inline /* implicit */ multi_id(const multi_id &obj);
2538 inline explicit multi_id(isl::space space, isl::id_list list);
2539 inline explicit multi_id(isl::ctx ctx, const std::string &str);
2540 inline multi_id &operator=(multi_id obj);
2541 inline ~multi_id();
2542 inline __isl_give isl_multi_id *copy() const &;
2543 inline __isl_give isl_multi_id *copy() && = delete;
2544 inline __isl_keep isl_multi_id *get() const;
2545 inline __isl_give isl_multi_id *release();
2546 inline bool is_null() const;
2547 inline isl::ctx ctx() const;
2548
2549 inline isl::id at(int pos) const;
2550 inline isl::id get_at(int pos) const;
2551 inline isl::multi_id flat_range_product(isl::multi_id multi2) const;
2552 inline isl::id_list list() const;
2553 inline isl::id_list get_list() const;
2554 inline boolean plain_is_equal(const isl::multi_id &multi2) const;
2555 inline isl::multi_id range_product(isl::multi_id multi2) const;
2556 inline isl::multi_id set_at(int pos, isl::id el) const;
2557 inline isl::multi_id set_at(int pos, const std::string &el) const;
2558 inline isl::multi_id set_id(int pos, isl::id el) const;
2559 inline isl::multi_id set_id(int pos, const std::string &el) const;
2560 inline class size size() const;
2561 inline isl::space space() const;
2562 inline isl::space get_space() const;
2563 };
2564
2565 // declarations for isl::multi_pw_aff
2566 inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2567 inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2568
2569 class multi_pw_aff {
2570 friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2571 friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2572
2573 protected:
2574 isl_multi_pw_aff *ptr = nullptr;
2575
2576 inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
2577
2578 public:
2579 inline /* implicit */ multi_pw_aff();
2580 inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
2581 inline /* implicit */ multi_pw_aff(isl::aff aff);
2582 inline /* implicit */ multi_pw_aff(isl::multi_aff ma);
2583 inline /* implicit */ multi_pw_aff(isl::pw_aff pa);
2584 inline explicit multi_pw_aff(isl::space space, isl::pw_aff_list list);
2585 inline /* implicit */ multi_pw_aff(isl::pw_multi_aff pma);
2586 inline explicit multi_pw_aff(isl::ctx ctx, const std::string &str);
2587 inline multi_pw_aff &operator=(multi_pw_aff obj);
2588 inline ~multi_pw_aff();
2589 inline __isl_give isl_multi_pw_aff *copy() const &;
2590 inline __isl_give isl_multi_pw_aff *copy() && = delete;
2591 inline __isl_keep isl_multi_pw_aff *get() const;
2592 inline __isl_give isl_multi_pw_aff *release();
2593 inline bool is_null() const;
2594 inline isl::ctx ctx() const;
2595
2596 inline isl::multi_pw_aff add(isl::multi_pw_aff multi2) const;
2597 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
2598 inline isl::multi_pw_aff add(const isl::aff &multi2) const;
2599 inline isl::multi_pw_aff add(const isl::multi_aff &multi2) const;
2600 inline isl::multi_pw_aff add(const isl::pw_aff &multi2) const;
2601 inline isl::multi_pw_aff add(const isl::pw_multi_aff &multi2) const;
2602 inline isl::multi_pw_aff add_constant(isl::multi_val mv) const;
2603 inline isl::multi_pw_aff add_constant(isl::val v) const;
2604 inline isl::multi_pw_aff add_constant(long v) const;
2605 inline isl::map as_map() const;
2606 inline isl::multi_aff as_multi_aff() const;
2607 inline isl::set as_set() const;
2608 inline isl::pw_aff at(int pos) const;
2609 inline isl::pw_aff get_at(int pos) const;
2610 inline isl::set bind(isl::multi_id tuple) const;
2611 inline isl::multi_pw_aff bind_domain(isl::multi_id tuple) const;
2612 inline isl::multi_pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
2613 inline isl::multi_pw_aff coalesce() const;
2614 inline class size dim(isl::dim type) const;
2615 inline isl::set domain() const;
2616 inline isl::multi_pw_aff flat_range_product(isl::multi_pw_aff multi2) const;
2617 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
2618 inline isl::multi_pw_aff flat_range_product(const isl::aff &multi2) const;
2619 inline isl::multi_pw_aff flat_range_product(const isl::multi_aff &multi2) const;
2620 inline isl::multi_pw_aff flat_range_product(const isl::pw_aff &multi2) const;
2621 inline isl::multi_pw_aff flat_range_product(const isl::pw_multi_aff &multi2) const;
2622 inline isl::multi_pw_aff gist(isl::set set) const;
2623 inline isl::multi_union_pw_aff gist(const isl::union_set &context) const;
2624 inline isl::multi_pw_aff gist(const isl::basic_set &set) const;
2625 inline isl::multi_pw_aff gist(const isl::point &set) const;
2626 inline boolean has_range_tuple_id() const;
2627 static inline isl::multi_pw_aff identity(isl::space space);
2628 inline isl::multi_pw_aff identity() const;
2629 static inline isl::multi_pw_aff identity_on_domain(isl::space space);
2630 inline isl::multi_pw_aff insert_domain(isl::space domain) const;
2631 inline isl::multi_pw_aff intersect_domain(isl::set domain) const;
2632 inline isl::multi_union_pw_aff intersect_domain(const isl::union_set &uset) const;
2633 inline isl::multi_pw_aff intersect_domain(const isl::basic_set &domain) const;
2634 inline isl::multi_pw_aff intersect_domain(const isl::point &domain) const;
2635 inline isl::multi_pw_aff intersect_params(isl::set set) const;
2636 inline boolean involves_nan() const;
2637 inline boolean involves_param(const isl::id &id) const;
2638 inline boolean involves_param(const std::string &id) const;
2639 inline boolean involves_param(const isl::id_list &list) const;
2640 inline boolean isa_multi_aff() const;
2641 inline isl::pw_aff_list list() const;
2642 inline isl::pw_aff_list get_list() const;
2643 inline isl::multi_pw_aff max(isl::multi_pw_aff multi2) const;
2644 inline isl::multi_val max_multi_val() const;
2645 inline isl::multi_pw_aff min(isl::multi_pw_aff multi2) const;
2646 inline isl::multi_val min_multi_val() const;
2647 inline isl::multi_pw_aff neg() const;
2648 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
2649 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
2650 inline boolean plain_is_equal(const isl::aff &multi2) const;
2651 inline boolean plain_is_equal(const isl::multi_aff &multi2) const;
2652 inline boolean plain_is_equal(const isl::pw_aff &multi2) const;
2653 inline boolean plain_is_equal(const isl::pw_multi_aff &multi2) const;
2654 inline isl::multi_pw_aff product(isl::multi_pw_aff multi2) const;
2655 inline isl::multi_pw_aff pullback(isl::multi_aff ma) const;
2656 inline isl::multi_pw_aff pullback(isl::multi_pw_aff mpa2) const;
2657 inline isl::multi_pw_aff pullback(isl::pw_multi_aff pma) const;
2658 inline isl::multi_union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
2659 inline isl::multi_pw_aff range_product(isl::multi_pw_aff multi2) const;
2660 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
2661 inline isl::multi_pw_aff range_product(const isl::aff &multi2) const;
2662 inline isl::multi_pw_aff range_product(const isl::multi_aff &multi2) const;
2663 inline isl::multi_pw_aff range_product(const isl::pw_aff &multi2) const;
2664 inline isl::multi_pw_aff range_product(const isl::pw_multi_aff &multi2) const;
2665 inline isl::id range_tuple_id() const;
2666 inline isl::id get_range_tuple_id() const;
2667 inline isl::multi_pw_aff reset_range_tuple_id() const;
2668 inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
2669 inline isl::multi_pw_aff scale(isl::multi_val mv) const;
2670 inline isl::multi_pw_aff scale(isl::val v) const;
2671 inline isl::multi_pw_aff scale(long v) const;
2672 inline isl::multi_pw_aff scale_down(isl::multi_val mv) const;
2673 inline isl::multi_pw_aff scale_down(isl::val v) const;
2674 inline isl::multi_pw_aff scale_down(long v) const;
2675 inline isl::multi_pw_aff set_at(int pos, isl::pw_aff el) const;
2676 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
2677 inline isl::multi_pw_aff set_pw_aff(int pos, isl::pw_aff el) const;
2678 inline isl::multi_pw_aff set_range_tuple(isl::id id) const;
2679 inline isl::multi_pw_aff set_range_tuple(const std::string &id) const;
2680 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
2681 inline class size size() const;
2682 inline isl::space space() const;
2683 inline isl::space get_space() const;
2684 inline isl::multi_pw_aff sub(isl::multi_pw_aff multi2) const;
2685 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
2686 inline isl::multi_pw_aff sub(const isl::aff &multi2) const;
2687 inline isl::multi_pw_aff sub(const isl::multi_aff &multi2) const;
2688 inline isl::multi_pw_aff sub(const isl::pw_aff &multi2) const;
2689 inline isl::multi_pw_aff sub(const isl::pw_multi_aff &multi2) const;
2690 inline isl::multi_pw_aff unbind_params_insert_domain(isl::multi_id domain) const;
2691 inline isl::multi_pw_aff union_add(isl::multi_pw_aff mpa2) const;
2692 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
2693 inline isl::multi_pw_aff union_add(const isl::aff &mpa2) const;
2694 inline isl::multi_pw_aff union_add(const isl::multi_aff &mpa2) const;
2695 inline isl::multi_pw_aff union_add(const isl::pw_aff &mpa2) const;
2696 inline isl::multi_pw_aff union_add(const isl::pw_multi_aff &mpa2) const;
2697 static inline isl::multi_pw_aff zero(isl::space space);
2698 };
2699
2700 // declarations for isl::multi_union_pw_aff
2701 inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2702 inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2703
2704 class multi_union_pw_aff {
2705 friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2706 friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2707
2708 protected:
2709 isl_multi_union_pw_aff *ptr = nullptr;
2710
2711 inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
2712
2713 public:
2714 inline /* implicit */ multi_union_pw_aff();
2715 inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
2716 inline /* implicit */ multi_union_pw_aff(isl::multi_pw_aff mpa);
2717 inline /* implicit */ multi_union_pw_aff(isl::union_pw_aff upa);
2718 inline explicit multi_union_pw_aff(isl::space space, isl::union_pw_aff_list list);
2719 inline explicit multi_union_pw_aff(isl::union_pw_multi_aff upma);
2720 inline explicit multi_union_pw_aff(isl::ctx ctx, const std::string &str);
2721 inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
2722 inline ~multi_union_pw_aff();
2723 inline __isl_give isl_multi_union_pw_aff *copy() const &;
2724 inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
2725 inline __isl_keep isl_multi_union_pw_aff *get() const;
2726 inline __isl_give isl_multi_union_pw_aff *release();
2727 inline bool is_null() const;
2728 inline isl::ctx ctx() const;
2729
2730 inline isl::multi_union_pw_aff add(isl::multi_union_pw_aff multi2) const;
2731 inline isl::union_pw_aff at(int pos) const;
2732 inline isl::union_pw_aff get_at(int pos) const;
2733 inline isl::union_set bind(isl::multi_id tuple) const;
2734 inline isl::multi_union_pw_aff coalesce() const;
2735 inline class size dim(isl::dim type) const;
2736 inline isl::union_set domain() const;
2737 inline isl::multi_union_pw_aff flat_range_product(isl::multi_union_pw_aff multi2) const;
2738 static inline isl::multi_union_pw_aff from_union_map(isl::union_map umap);
2739 inline isl::multi_union_pw_aff gist(isl::union_set context) const;
2740 inline boolean has_range_tuple_id() const;
2741 inline isl::multi_union_pw_aff intersect_domain(isl::union_set uset) const;
2742 inline isl::multi_union_pw_aff intersect_params(isl::set params) const;
2743 inline boolean involves_nan() const;
2744 inline isl::union_pw_aff_list list() const;
2745 inline isl::union_pw_aff_list get_list() const;
2746 inline isl::multi_union_pw_aff neg() const;
2747 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
2748 inline isl::multi_union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
2749 inline isl::multi_union_pw_aff range_product(isl::multi_union_pw_aff multi2) const;
2750 inline isl::id range_tuple_id() const;
2751 inline isl::id get_range_tuple_id() const;
2752 inline isl::multi_union_pw_aff reset_range_tuple_id() const;
2753 inline isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const;
2754 inline isl::multi_union_pw_aff scale(isl::multi_val mv) const;
2755 inline isl::multi_union_pw_aff scale(isl::val v) const;
2756 inline isl::multi_union_pw_aff scale(long v) const;
2757 inline isl::multi_union_pw_aff scale_down(isl::multi_val mv) const;
2758 inline isl::multi_union_pw_aff scale_down(isl::val v) const;
2759 inline isl::multi_union_pw_aff scale_down(long v) const;
2760 inline isl::multi_union_pw_aff set_at(int pos, isl::union_pw_aff el) const;
2761 inline isl::multi_union_pw_aff set_range_tuple(isl::id id) const;
2762 inline isl::multi_union_pw_aff set_range_tuple(const std::string &id) const;
2763 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, isl::union_pw_aff el) const;
2764 inline class size size() const;
2765 inline isl::space space() const;
2766 inline isl::space get_space() const;
2767 inline isl::multi_union_pw_aff sub(isl::multi_union_pw_aff multi2) const;
2768 inline isl::multi_union_pw_aff union_add(isl::multi_union_pw_aff mupa2) const;
2769 static inline isl::multi_union_pw_aff zero(isl::space space);
2770 };
2771
2772 // declarations for isl::multi_val
2773 inline multi_val manage(__isl_take isl_multi_val *ptr);
2774 inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2775
2776 class multi_val {
2777 friend inline multi_val manage(__isl_take isl_multi_val *ptr);
2778 friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2779
2780 protected:
2781 isl_multi_val *ptr = nullptr;
2782
2783 inline explicit multi_val(__isl_take isl_multi_val *ptr);
2784
2785 public:
2786 inline /* implicit */ multi_val();
2787 inline /* implicit */ multi_val(const multi_val &obj);
2788 inline explicit multi_val(isl::space space, isl::val_list list);
2789 inline explicit multi_val(isl::ctx ctx, const std::string &str);
2790 inline multi_val &operator=(multi_val obj);
2791 inline ~multi_val();
2792 inline __isl_give isl_multi_val *copy() const &;
2793 inline __isl_give isl_multi_val *copy() && = delete;
2794 inline __isl_keep isl_multi_val *get() const;
2795 inline __isl_give isl_multi_val *release();
2796 inline bool is_null() const;
2797 inline isl::ctx ctx() const;
2798
2799 inline isl::multi_val add(isl::multi_val multi2) const;
2800 inline isl::multi_val add(isl::val v) const;
2801 inline isl::multi_val add(long v) const;
2802 inline isl::val at(int pos) const;
2803 inline isl::val get_at(int pos) const;
2804 inline class size dim(isl::dim type) const;
2805 inline isl::multi_val flat_range_product(isl::multi_val multi2) const;
2806 inline boolean has_range_tuple_id() const;
2807 inline boolean involves_nan() const;
2808 inline isl::val_list list() const;
2809 inline isl::val_list get_list() const;
2810 inline isl::multi_val max(isl::multi_val multi2) const;
2811 inline isl::multi_val min(isl::multi_val multi2) const;
2812 inline isl::multi_val neg() const;
2813 inline boolean plain_is_equal(const isl::multi_val &multi2) const;
2814 inline isl::multi_val product(isl::multi_val multi2) const;
2815 inline isl::multi_val range_product(isl::multi_val multi2) const;
2816 inline isl::id range_tuple_id() const;
2817 inline isl::id get_range_tuple_id() const;
2818 inline isl::multi_val reset_range_tuple_id() const;
2819 inline isl::multi_val reset_tuple_id(isl::dim type) const;
2820 inline isl::multi_val scale(isl::multi_val mv) const;
2821 inline isl::multi_val scale(isl::val v) const;
2822 inline isl::multi_val scale(long v) const;
2823 inline isl::multi_val scale_down(isl::multi_val mv) const;
2824 inline isl::multi_val scale_down(isl::val v) const;
2825 inline isl::multi_val scale_down(long v) const;
2826 inline isl::multi_val set_at(int pos, isl::val el) const;
2827 inline isl::multi_val set_at(int pos, long el) const;
2828 inline isl::multi_val set_range_tuple(isl::id id) const;
2829 inline isl::multi_val set_range_tuple(const std::string &id) const;
2830 inline isl::multi_val set_val(int pos, isl::val el) const;
2831 inline isl::multi_val set_val(int pos, long el) const;
2832 inline class size size() const;
2833 inline isl::space space() const;
2834 inline isl::space get_space() const;
2835 inline isl::multi_val sub(isl::multi_val multi2) const;
2836 static inline isl::multi_val zero(isl::space space);
2837 };
2838
2839 // declarations for isl::point
2840 inline point manage(__isl_take isl_point *ptr);
2841 inline point manage_copy(__isl_keep isl_point *ptr);
2842
2843 class point {
2844 friend inline point manage(__isl_take isl_point *ptr);
2845 friend inline point manage_copy(__isl_keep isl_point *ptr);
2846
2847 protected:
2848 isl_point *ptr = nullptr;
2849
2850 inline explicit point(__isl_take isl_point *ptr);
2851
2852 public:
2853 inline /* implicit */ point();
2854 inline /* implicit */ point(const point &obj);
2855 inline explicit point(isl::space space);
2856 inline point &operator=(point obj);
2857 inline ~point();
2858 inline __isl_give isl_point *copy() const &;
2859 inline __isl_give isl_point *copy() && = delete;
2860 inline __isl_keep isl_point *get() const;
2861 inline __isl_give isl_point *release();
2862 inline bool is_null() const;
2863 inline isl::ctx ctx() const;
2864
2865 inline isl::set add_constraint(const isl::constraint &constraint) const;
2866 inline isl::set add_dims(isl::dim type, unsigned int n) const;
2867 inline isl::basic_set affine_hull() const;
2868 inline isl::set align_params(const isl::space &model) const;
2869 inline isl::basic_set apply(const isl::basic_map &bmap) const;
2870 inline isl::set apply(const isl::map &map) const;
2871 inline isl::union_set apply(const isl::union_map &umap) const;
2872 inline isl::pw_multi_aff as_pw_multi_aff() const;
2873 inline isl::set as_set() const;
2874 inline isl::basic_set_list basic_set_list() const;
2875 inline isl::set bind(const isl::multi_id &tuple) const;
2876 inline isl::set coalesce() const;
2877 inline isl::set complement() const;
2878 inline isl::union_set compute_divs() const;
2879 inline boolean contains(const isl::space &space) const;
2880 inline isl::basic_set convex_hull() const;
2881 inline isl::val coordinate_val(isl::dim type, int pos) const;
2882 inline isl::val get_coordinate_val(isl::dim type, int pos) const;
2883 inline isl::basic_set detect_equalities() const;
2884 inline class size dim(isl::dim type) const;
2885 inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
2886 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
2887 inline isl::pw_aff dim_max(int pos) const;
2888 inline isl::val dim_max_val(int pos) const;
2889 inline isl::pw_aff dim_min(int pos) const;
2890 inline isl::val dim_min_val(int pos) const;
2891 inline std::string dim_name(isl::dim type, unsigned int pos) const;
2892 inline isl::aff div(int pos) const;
2893 inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2894 inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
2895 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
2896 inline isl::set extract_set(const isl::space &space) const;
2897 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
2898 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
2899 inline isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
2900 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, const isl::val &v) const;
2901 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, long v) const;
2902 inline isl::basic_set flatten() const;
2903 inline stat foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const;
2904 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
2905 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
2906 inline isl::basic_set gist(const isl::basic_set &context) const;
2907 inline isl::set gist(const isl::set &context) const;
2908 inline isl::union_set gist(const isl::union_set &context) const;
2909 inline isl::set gist_params(const isl::set &context) const;
2910 inline boolean has_equal_space(const isl::set &set2) const;
2911 inline isl::map identity() const;
2912 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
2913 inline isl::pw_aff indicator_function() const;
2914 inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2915 inline isl::map insert_domain(const isl::space &domain) const;
2916 inline isl::basic_set intersect(const isl::basic_set &bset2) const;
2917 inline isl::set intersect(const isl::set &set2) const;
2918 inline isl::union_set intersect(const isl::union_set &uset2) const;
2919 inline isl::basic_set intersect_params(const isl::basic_set &bset2) const;
2920 inline isl::set intersect_params(const isl::set ¶ms) const;
2921 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2922 inline boolean involves_locals() const;
2923 inline boolean is_bounded() const;
2924 inline boolean is_disjoint(const isl::set &set2) const;
2925 inline boolean is_disjoint(const isl::union_set &uset2) const;
2926 inline boolean is_empty() const;
2927 inline boolean is_equal(const isl::basic_set &bset2) const;
2928 inline boolean is_equal(const isl::set &set2) const;
2929 inline boolean is_equal(const isl::union_set &uset2) const;
2930 inline boolean is_params() const;
2931 inline boolean is_singleton() const;
2932 inline boolean is_strict_subset(const isl::set &set2) const;
2933 inline boolean is_strict_subset(const isl::union_set &uset2) const;
2934 inline boolean is_subset(const isl::basic_set &bset2) const;
2935 inline boolean is_subset(const isl::set &set2) const;
2936 inline boolean is_subset(const isl::union_set &uset2) const;
2937 inline boolean is_wrapping() const;
2938 inline boolean isa_set() const;
2939 inline isl::set lexmax() const;
2940 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
2941 inline isl::set lexmin() const;
2942 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
2943 inline isl::set lower_bound(const isl::multi_pw_aff &lower) const;
2944 inline isl::set lower_bound(const isl::multi_val &lower) const;
2945 inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2946 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
2947 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, long value) const;
2948 inline isl::multi_pw_aff max_multi_pw_aff() const;
2949 inline isl::val max_val(const isl::aff &obj) const;
2950 inline isl::multi_pw_aff min_multi_pw_aff() const;
2951 inline isl::val min_val(const isl::aff &obj) const;
2952 inline isl::multi_val multi_val() const;
2953 inline isl::multi_val get_multi_val() const;
2954 inline class size n_basic_set() const;
2955 inline isl::basic_set params() const;
2956 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
2957 inline isl::multi_val plain_multi_val_if_fixed() const;
2958 inline isl::basic_set polyhedral_hull() const;
2959 inline isl::set preimage(const isl::multi_aff &ma) const;
2960 inline isl::set preimage(const isl::multi_pw_aff &mpa) const;
2961 inline isl::set preimage(const isl::pw_multi_aff &pma) const;
2962 inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
2963 inline isl::set product(const isl::set &set2) const;
2964 inline isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
2965 inline isl::set project_out_all_params() const;
2966 inline isl::set project_out_param(const isl::id &id) const;
2967 inline isl::set project_out_param(const std::string &id) const;
2968 inline isl::set project_out_param(const isl::id_list &list) const;
2969 inline isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const;
2970 inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
2971 inline isl::set remove_divs() const;
2972 inline isl::set remove_redundancies() const;
2973 inline isl::set reset_tuple_id() const;
2974 inline isl::basic_set sample() const;
2975 inline isl::point sample_point() const;
2976 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const;
2977 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
2978 inline isl::set_list set_list() const;
2979 inline isl::set set_tuple_id(const isl::id &id) const;
2980 inline isl::set set_tuple_id(const std::string &id) const;
2981 inline isl::fixed_box simple_fixed_box_hull() const;
2982 inline isl::basic_set simple_hull() const;
2983 inline isl::space space() const;
2984 inline isl::val stride(int pos) const;
2985 inline isl::set subtract(const isl::set &set2) const;
2986 inline isl::union_set subtract(const isl::union_set &uset2) const;
2987 inline isl::basic_set_list to_list() const;
2988 inline isl::set to_set() const;
2989 inline isl::union_set to_union_set() const;
2990 inline isl::map translation() const;
2991 inline class size tuple_dim() const;
2992 inline isl::id tuple_id() const;
2993 inline std::string tuple_name() const;
2994 inline isl::set unbind_params(const isl::multi_id &tuple) const;
2995 inline isl::map unbind_params_insert_domain(const isl::multi_id &domain) const;
2996 inline isl::set unite(const isl::basic_set &bset2) const;
2997 inline isl::set unite(const isl::set &set2) const;
2998 inline isl::union_set unite(const isl::union_set &uset2) const;
2999 inline isl::basic_set unshifted_simple_hull() const;
3000 inline isl::map unwrap() const;
3001 inline isl::set upper_bound(const isl::multi_pw_aff &upper) const;
3002 inline isl::set upper_bound(const isl::multi_val &upper) const;
3003 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
3004 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, long value) const;
3005 };
3006
3007 // declarations for isl::pw_aff
3008 inline pw_aff manage(__isl_take isl_pw_aff *ptr);
3009 inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
3010
3011 class pw_aff {
3012 friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
3013 friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
3014
3015 protected:
3016 isl_pw_aff *ptr = nullptr;
3017
3018 inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
3019
3020 public:
3021 inline /* implicit */ pw_aff();
3022 inline /* implicit */ pw_aff(const pw_aff &obj);
3023 inline /* implicit */ pw_aff(isl::aff aff);
3024 inline explicit pw_aff(isl::ctx ctx, const std::string &str);
3025 inline explicit pw_aff(isl::set domain, isl::val v);
3026 inline explicit pw_aff(isl::local_space ls);
3027 inline pw_aff &operator=(pw_aff obj);
3028 inline ~pw_aff();
3029 inline __isl_give isl_pw_aff *copy() const &;
3030 inline __isl_give isl_pw_aff *copy() && = delete;
3031 inline __isl_keep isl_pw_aff *get() const;
3032 inline __isl_give isl_pw_aff *release();
3033 inline bool is_null() const;
3034 inline isl::ctx ctx() const;
3035
3036 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
3037 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
3038 inline isl::pw_aff add(isl::pw_aff pwaff2) const;
3039 inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
3040 inline isl::union_pw_aff add(const isl::union_pw_aff &upa2) const;
3041 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
3042 inline isl::pw_aff add(const isl::aff &pwaff2) const;
3043 inline isl::pw_aff add_constant(isl::val v) const;
3044 inline isl::pw_aff add_constant(long v) const;
3045 inline isl::pw_multi_aff add_constant(const isl::multi_val &mv) const;
3046 inline isl::pw_aff add_dims(isl::dim type, unsigned int n) const;
3047 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
3048 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
3049 inline isl::aff as_aff() const;
3050 inline isl::map as_map() const;
3051 inline isl::multi_aff as_multi_aff() const;
3052 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
3053 inline isl::pw_multi_aff as_pw_multi_aff() const;
3054 inline isl::set as_set() const;
3055 inline isl::union_map as_union_map() const;
3056 inline isl::pw_aff at(int pos) const;
3057 inline isl::set bind(const isl::multi_id &tuple) const;
3058 inline isl::set bind(isl::id id) const;
3059 inline isl::set bind(const std::string &id) const;
3060 inline isl::pw_aff bind_domain(isl::multi_id tuple) const;
3061 inline isl::pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
3062 inline isl::pw_aff ceil() const;
3063 inline isl::pw_aff coalesce() const;
3064 inline isl::pw_aff cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const;
3065 inline class size dim(isl::dim type) const;
3066 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
3067 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
3068 inline isl::pw_aff div(isl::pw_aff pa2) const;
3069 inline isl::set domain() const;
3070 inline isl::space domain_space() const;
3071 inline isl::space get_domain_space() const;
3072 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3073 inline isl::set eq_set(isl::pw_aff pwaff2) const;
3074 inline isl::val eval(isl::point pnt) const;
3075 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
3076 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
3077 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
3078 inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
3079 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
3080 inline isl::pw_aff floor() const;
3081 inline stat foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const;
3082 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
3083 inline stat foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const;
3084 inline isl::set ge_set(isl::pw_aff pwaff2) const;
3085 inline isl::pw_aff gist(isl::set context) const;
3086 inline isl::union_pw_aff gist(const isl::union_set &context) const;
3087 inline isl::pw_aff gist(const isl::basic_set &context) const;
3088 inline isl::pw_aff gist(const isl::point &context) const;
3089 inline isl::set gt_set(isl::pw_aff pwaff2) const;
3090 inline boolean has_range_tuple_id() const;
3091 inline isl::multi_pw_aff identity() const;
3092 inline isl::pw_aff insert_domain(isl::space domain) const;
3093 inline isl::pw_aff intersect_domain(isl::set set) const;
3094 inline isl::union_pw_aff intersect_domain(const isl::space &space) const;
3095 inline isl::union_pw_aff intersect_domain(const isl::union_set &uset) const;
3096 inline isl::pw_aff intersect_domain(const isl::basic_set &set) const;
3097 inline isl::pw_aff intersect_domain(const isl::point &set) const;
3098 inline isl::union_pw_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
3099 inline isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
3100 inline isl::pw_aff intersect_params(isl::set set) const;
3101 inline boolean involves_locals() const;
3102 inline boolean involves_nan() const;
3103 inline boolean involves_param(const isl::id &id) const;
3104 inline boolean involves_param(const std::string &id) const;
3105 inline boolean involves_param(const isl::id_list &list) const;
3106 inline boolean is_cst() const;
3107 inline boolean is_equal(const isl::pw_aff &pa2) const;
3108 inline boolean isa_aff() const;
3109 inline boolean isa_multi_aff() const;
3110 inline boolean isa_pw_multi_aff() const;
3111 inline isl::set le_set(isl::pw_aff pwaff2) const;
3112 inline isl::pw_aff_list list() const;
3113 inline isl::set lt_set(isl::pw_aff pwaff2) const;
3114 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
3115 inline isl::pw_aff max(isl::pw_aff pwaff2) const;
3116 inline isl::pw_aff max(const isl::aff &pwaff2) const;
3117 inline isl::multi_val max_multi_val() const;
3118 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
3119 inline isl::pw_aff min(isl::pw_aff pwaff2) const;
3120 inline isl::pw_aff min(const isl::aff &pwaff2) const;
3121 inline isl::multi_val min_multi_val() const;
3122 inline isl::pw_aff mod(isl::val mod) const;
3123 inline isl::pw_aff mod(long mod) const;
3124 inline isl::pw_aff mul(isl::pw_aff pwaff2) const;
3125 inline class size n_piece() const;
3126 inline isl::set ne_set(isl::pw_aff pwaff2) const;
3127 inline isl::pw_aff neg() const;
3128 static inline isl::pw_aff param_on_domain(isl::set domain, isl::id id);
3129 inline boolean plain_is_empty() const;
3130 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
3131 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
3132 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
3133 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
3134 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
3135 inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
3136 inline isl::pw_aff pullback(isl::multi_aff ma) const;
3137 inline isl::pw_aff pullback(isl::multi_pw_aff mpa) const;
3138 inline isl::pw_aff pullback(isl::pw_multi_aff pma) const;
3139 inline isl::union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
3140 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
3141 inline isl::pw_multi_aff range_factor_domain() const;
3142 inline isl::pw_multi_aff range_factor_range() const;
3143 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
3144 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
3145 inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
3146 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
3147 inline isl::id range_tuple_id() const;
3148 inline isl::multi_pw_aff reset_range_tuple_id() const;
3149 inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
3150 inline isl::multi_pw_aff scale(const isl::multi_val &mv) const;
3151 inline isl::pw_aff scale(isl::val v) const;
3152 inline isl::pw_aff scale(long v) const;
3153 inline isl::multi_pw_aff scale_down(const isl::multi_val &mv) const;
3154 inline isl::pw_aff scale_down(isl::val f) const;
3155 inline isl::pw_aff scale_down(long f) const;
3156 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
3157 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
3158 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
3159 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const;
3160 inline isl::pw_multi_aff set_range_tuple(const isl::id &id) const;
3161 inline isl::pw_multi_aff set_range_tuple(const std::string &id) const;
3162 inline isl::pw_aff set_tuple_id(isl::dim type, isl::id id) const;
3163 inline isl::pw_aff set_tuple_id(isl::dim type, const std::string &id) const;
3164 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
3165 inline class size size() const;
3166 inline isl::space space() const;
3167 inline isl::space get_space() const;
3168 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
3169 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
3170 inline isl::pw_aff sub(isl::pw_aff pwaff2) const;
3171 inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
3172 inline isl::union_pw_aff sub(const isl::union_pw_aff &upa2) const;
3173 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
3174 inline isl::pw_aff sub(const isl::aff &pwaff2) const;
3175 inline isl::pw_aff subtract_domain(isl::set set) const;
3176 inline isl::union_pw_aff subtract_domain(const isl::space &space) const;
3177 inline isl::union_pw_aff subtract_domain(const isl::union_set &uset) const;
3178 inline isl::pw_aff subtract_domain(const isl::basic_set &set) const;
3179 inline isl::pw_aff subtract_domain(const isl::point &set) const;
3180 inline isl::pw_aff tdiv_q(isl::pw_aff pa2) const;
3181 inline isl::pw_aff tdiv_r(isl::pw_aff pa2) const;
3182 inline isl::pw_aff_list to_list() const;
3183 inline isl::multi_pw_aff to_multi_pw_aff() const;
3184 inline isl::union_pw_aff to_union_pw_aff() const;
3185 inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
3186 inline isl::id tuple_id(isl::dim type) const;
3187 inline isl::id get_tuple_id(isl::dim type) const;
3188 inline isl::multi_pw_aff unbind_params_insert_domain(const isl::multi_id &domain) const;
3189 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
3190 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
3191 inline isl::pw_aff union_add(isl::pw_aff pwaff2) const;
3192 inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
3193 inline isl::union_pw_aff union_add(const isl::union_pw_aff &upa2) const;
3194 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
3195 inline isl::pw_aff union_add(const isl::aff &pwaff2) const;
3196 static inline isl::pw_aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
3197 };
3198
3199 // declarations for isl::pw_aff_list
3200 inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
3201 inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
3202
3203 class pw_aff_list {
3204 friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
3205 friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
3206
3207 protected:
3208 isl_pw_aff_list *ptr = nullptr;
3209
3210 inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
3211
3212 public:
3213 inline /* implicit */ pw_aff_list();
3214 inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
3215 inline explicit pw_aff_list(isl::ctx ctx, int n);
3216 inline explicit pw_aff_list(isl::pw_aff el);
3217 inline explicit pw_aff_list(isl::ctx ctx, const std::string &str);
3218 inline pw_aff_list &operator=(pw_aff_list obj);
3219 inline ~pw_aff_list();
3220 inline __isl_give isl_pw_aff_list *copy() const &;
3221 inline __isl_give isl_pw_aff_list *copy() && = delete;
3222 inline __isl_keep isl_pw_aff_list *get() const;
3223 inline __isl_give isl_pw_aff_list *release();
3224 inline bool is_null() const;
3225 inline isl::ctx ctx() const;
3226
3227 inline isl::pw_aff_list add(isl::pw_aff el) const;
3228 inline isl::pw_aff at(int index) const;
3229 inline isl::pw_aff get_at(int index) const;
3230 inline isl::pw_aff_list clear() const;
3231 inline isl::pw_aff_list concat(isl::pw_aff_list list2) const;
3232 inline isl::pw_aff_list drop(unsigned int first, unsigned int n) const;
3233 inline stat foreach(const std::function<stat(isl::pw_aff)> &fn) const;
3234 inline isl::pw_aff_list insert(unsigned int pos, isl::pw_aff el) const;
3235 inline class size size() const;
3236 };
3237
3238 // declarations for isl::pw_multi_aff
3239 inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
3240 inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
3241
3242 class pw_multi_aff {
3243 friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
3244 friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
3245
3246 protected:
3247 isl_pw_multi_aff *ptr = nullptr;
3248
3249 inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
3250
3251 public:
3252 inline /* implicit */ pw_multi_aff();
3253 inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
3254 inline /* implicit */ pw_multi_aff(isl::multi_aff ma);
3255 inline /* implicit */ pw_multi_aff(isl::pw_aff pa);
3256 inline explicit pw_multi_aff(isl::ctx ctx, const std::string &str);
3257 inline pw_multi_aff &operator=(pw_multi_aff obj);
3258 inline ~pw_multi_aff();
3259 inline __isl_give isl_pw_multi_aff *copy() const &;
3260 inline __isl_give isl_pw_multi_aff *copy() && = delete;
3261 inline __isl_keep isl_pw_multi_aff *get() const;
3262 inline __isl_give isl_pw_multi_aff *release();
3263 inline bool is_null() const;
3264 inline isl::ctx ctx() const;
3265
3266 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
3267 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
3268 inline isl::pw_multi_aff add(isl::pw_multi_aff pma2) const;
3269 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
3270 inline isl::pw_multi_aff add(const isl::multi_aff &pma2) const;
3271 inline isl::pw_multi_aff add(const isl::pw_aff &pma2) const;
3272 inline isl::pw_multi_aff add_constant(isl::multi_val mv) const;
3273 inline isl::pw_multi_aff add_constant(isl::val v) const;
3274 inline isl::pw_multi_aff add_constant(long v) const;
3275 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
3276 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
3277 inline isl::map as_map() const;
3278 inline isl::multi_aff as_multi_aff() const;
3279 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
3280 inline isl::pw_multi_aff as_pw_multi_aff() const;
3281 inline isl::set as_set() const;
3282 inline isl::union_map as_union_map() const;
3283 inline isl::pw_aff at(int pos) const;
3284 inline isl::pw_aff get_at(int pos) const;
3285 inline isl::set bind(const isl::multi_id &tuple) const;
3286 inline isl::pw_multi_aff bind_domain(isl::multi_id tuple) const;
3287 inline isl::pw_multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
3288 inline isl::pw_multi_aff coalesce() const;
3289 inline class size dim(isl::dim type) const;
3290 inline isl::set domain() const;
3291 static inline isl::pw_multi_aff domain_map(isl::space space);
3292 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3293 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
3294 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
3295 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
3296 inline isl::pw_multi_aff flat_range_product(isl::pw_multi_aff pma2) const;
3297 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
3298 inline isl::pw_multi_aff flat_range_product(const isl::multi_aff &pma2) const;
3299 inline isl::pw_multi_aff flat_range_product(const isl::pw_aff &pma2) const;
3300 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
3301 static inline isl::pw_multi_aff from_map(isl::map map);
3302 inline isl::pw_multi_aff gist(isl::set set) const;
3303 inline isl::union_pw_multi_aff gist(const isl::union_set &context) const;
3304 inline isl::pw_multi_aff gist(const isl::basic_set &set) const;
3305 inline isl::pw_multi_aff gist(const isl::point &set) const;
3306 inline boolean has_range_tuple_id() const;
3307 inline isl::multi_pw_aff identity() const;
3308 static inline isl::pw_multi_aff identity_on_domain(isl::space space);
3309 inline isl::pw_multi_aff insert_domain(isl::space domain) const;
3310 inline isl::pw_multi_aff intersect_domain(isl::set set) const;
3311 inline isl::union_pw_multi_aff intersect_domain(const isl::space &space) const;
3312 inline isl::union_pw_multi_aff intersect_domain(const isl::union_set &uset) const;
3313 inline isl::pw_multi_aff intersect_domain(const isl::basic_set &set) const;
3314 inline isl::pw_multi_aff intersect_domain(const isl::point &set) const;
3315 inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
3316 inline isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
3317 inline isl::pw_multi_aff intersect_params(isl::set set) const;
3318 inline boolean involves_locals() const;
3319 inline boolean involves_nan() const;
3320 inline boolean involves_param(const isl::id &id) const;
3321 inline boolean involves_param(const std::string &id) const;
3322 inline boolean involves_param(const isl::id_list &list) const;
3323 inline boolean isa_multi_aff() const;
3324 inline boolean isa_pw_multi_aff() const;
3325 inline isl::pw_aff_list list() const;
3326 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
3327 inline isl::multi_val max_multi_val() const;
3328 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
3329 inline isl::multi_val min_multi_val() const;
3330 static inline isl::pw_multi_aff multi_val_on_domain(isl::set domain, isl::multi_val mv);
3331 inline class size n_piece() const;
3332 inline isl::multi_pw_aff neg() const;
3333 inline boolean plain_is_empty() const;
3334 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
3335 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
3336 inline isl::pw_multi_aff preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const;
3337 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
3338 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::multi_aff &pma2) const;
3339 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_aff &pma2) const;
3340 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
3341 inline isl::pw_multi_aff product(isl::pw_multi_aff pma2) const;
3342 inline isl::pw_multi_aff product(const isl::multi_aff &pma2) const;
3343 inline isl::pw_multi_aff product(const isl::pw_aff &pma2) const;
3344 static inline isl::pw_multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
3345 inline isl::multi_pw_aff pullback(const isl::multi_pw_aff &mpa2) const;
3346 inline isl::pw_multi_aff pullback(isl::multi_aff ma) const;
3347 inline isl::pw_multi_aff pullback(isl::pw_multi_aff pma2) const;
3348 inline isl::union_pw_multi_aff pullback(const isl::union_pw_multi_aff &upma2) const;
3349 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
3350 inline isl::pw_multi_aff range_factor_domain() const;
3351 inline isl::pw_multi_aff range_factor_range() const;
3352 static inline isl::pw_multi_aff range_map(isl::space space);
3353 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
3354 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
3355 inline isl::pw_multi_aff range_product(isl::pw_multi_aff pma2) const;
3356 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
3357 inline isl::pw_multi_aff range_product(const isl::multi_aff &pma2) const;
3358 inline isl::pw_multi_aff range_product(const isl::pw_aff &pma2) const;
3359 inline isl::id range_tuple_id() const;
3360 inline isl::id get_range_tuple_id() const;
3361 inline isl::multi_pw_aff reset_range_tuple_id() const;
3362 inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
3363 inline isl::multi_pw_aff scale(const isl::multi_val &mv) const;
3364 inline isl::pw_multi_aff scale(isl::val v) const;
3365 inline isl::pw_multi_aff scale(long v) const;
3366 inline isl::multi_pw_aff scale_down(const isl::multi_val &mv) const;
3367 inline isl::pw_multi_aff scale_down(isl::val v) const;
3368 inline isl::pw_multi_aff scale_down(long v) const;
3369 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
3370 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
3371 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
3372 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, isl::pw_aff pa) const;
3373 inline isl::pw_multi_aff set_range_tuple(isl::id id) const;
3374 inline isl::pw_multi_aff set_range_tuple(const std::string &id) const;
3375 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
3376 inline class size size() const;
3377 inline isl::space space() const;
3378 inline isl::space get_space() const;
3379 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
3380 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
3381 inline isl::pw_multi_aff sub(isl::pw_multi_aff pma2) const;
3382 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
3383 inline isl::pw_multi_aff sub(const isl::multi_aff &pma2) const;
3384 inline isl::pw_multi_aff sub(const isl::pw_aff &pma2) const;
3385 inline isl::pw_multi_aff subtract_domain(isl::set set) const;
3386 inline isl::union_pw_multi_aff subtract_domain(const isl::space &space) const;
3387 inline isl::union_pw_multi_aff subtract_domain(const isl::union_set &uset) const;
3388 inline isl::pw_multi_aff subtract_domain(const isl::basic_set &set) const;
3389 inline isl::pw_multi_aff subtract_domain(const isl::point &set) const;
3390 inline isl::pw_multi_aff_list to_list() const;
3391 inline isl::multi_pw_aff to_multi_pw_aff() const;
3392 inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
3393 inline isl::id tuple_id(isl::dim type) const;
3394 inline isl::id get_tuple_id(isl::dim type) const;
3395 inline isl::multi_pw_aff unbind_params_insert_domain(const isl::multi_id &domain) const;
3396 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
3397 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
3398 inline isl::pw_multi_aff union_add(isl::pw_multi_aff pma2) const;
3399 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
3400 inline isl::pw_multi_aff union_add(const isl::multi_aff &pma2) const;
3401 inline isl::pw_multi_aff union_add(const isl::pw_aff &pma2) const;
3402 static inline isl::pw_multi_aff zero(isl::space space);
3403 };
3404
3405 // declarations for isl::pw_multi_aff_list
3406 inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3407 inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3408
3409 class pw_multi_aff_list {
3410 friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3411 friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3412
3413 protected:
3414 isl_pw_multi_aff_list *ptr = nullptr;
3415
3416 inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
3417
3418 public:
3419 inline /* implicit */ pw_multi_aff_list();
3420 inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
3421 inline explicit pw_multi_aff_list(isl::ctx ctx, int n);
3422 inline explicit pw_multi_aff_list(isl::pw_multi_aff el);
3423 inline explicit pw_multi_aff_list(isl::ctx ctx, const std::string &str);
3424 inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
3425 inline ~pw_multi_aff_list();
3426 inline __isl_give isl_pw_multi_aff_list *copy() const &;
3427 inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
3428 inline __isl_keep isl_pw_multi_aff_list *get() const;
3429 inline __isl_give isl_pw_multi_aff_list *release();
3430 inline bool is_null() const;
3431 inline isl::ctx ctx() const;
3432
3433 inline isl::pw_multi_aff_list add(isl::pw_multi_aff el) const;
3434 inline isl::pw_multi_aff at(int index) const;
3435 inline isl::pw_multi_aff get_at(int index) const;
3436 inline isl::pw_multi_aff_list clear() const;
3437 inline isl::pw_multi_aff_list concat(isl::pw_multi_aff_list list2) const;
3438 inline isl::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3439 inline stat foreach(const std::function<stat(isl::pw_multi_aff)> &fn) const;
3440 inline isl::pw_multi_aff_list insert(unsigned int pos, isl::pw_multi_aff el) const;
3441 inline class size size() const;
3442 };
3443
3444 // declarations for isl::schedule
3445 inline schedule manage(__isl_take isl_schedule *ptr);
3446 inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3447
3448 class schedule {
3449 friend inline schedule manage(__isl_take isl_schedule *ptr);
3450 friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3451
3452 protected:
3453 isl_schedule *ptr = nullptr;
3454
3455 inline explicit schedule(__isl_take isl_schedule *ptr);
3456
3457 public:
3458 inline /* implicit */ schedule();
3459 inline /* implicit */ schedule(const schedule &obj);
3460 inline explicit schedule(isl::ctx ctx, const std::string &str);
3461 inline schedule &operator=(schedule obj);
3462 inline ~schedule();
3463 inline __isl_give isl_schedule *copy() const &;
3464 inline __isl_give isl_schedule *copy() && = delete;
3465 inline __isl_keep isl_schedule *get() const;
3466 inline __isl_give isl_schedule *release();
3467 inline bool is_null() const;
3468 inline isl::ctx ctx() const;
3469
3470 inline isl::schedule align_params(isl::space space) const;
3471 inline isl::union_set domain() const;
3472 inline isl::union_set get_domain() const;
3473 static inline isl::schedule from_domain(isl::union_set domain);
3474 inline isl::schedule gist_domain_params(isl::set context) const;
3475 inline isl::schedule insert_partial_schedule(isl::multi_union_pw_aff partial) const;
3476 inline isl::schedule intersect_domain(isl::union_set domain) const;
3477 inline isl::union_map map() const;
3478 inline isl::union_map get_map() const;
3479 inline isl::schedule pullback(isl::union_pw_multi_aff upma) const;
3480 inline isl::schedule_node root() const;
3481 inline isl::schedule_node get_root() const;
3482 inline isl::schedule sequence(isl::schedule schedule2) const;
3483 };
3484
3485 // declarations for isl::schedule_constraints
3486 inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
3487 inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
3488
3489 class schedule_constraints {
3490 friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
3491 friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
3492
3493 protected:
3494 isl_schedule_constraints *ptr = nullptr;
3495
3496 inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
3497
3498 public:
3499 inline /* implicit */ schedule_constraints();
3500 inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
3501 inline explicit schedule_constraints(isl::ctx ctx, const std::string &str);
3502 inline schedule_constraints &operator=(schedule_constraints obj);
3503 inline ~schedule_constraints();
3504 inline __isl_give isl_schedule_constraints *copy() const &;
3505 inline __isl_give isl_schedule_constraints *copy() && = delete;
3506 inline __isl_keep isl_schedule_constraints *get() const;
3507 inline __isl_give isl_schedule_constraints *release();
3508 inline bool is_null() const;
3509 inline isl::ctx ctx() const;
3510
3511 inline isl::union_map coincidence() const;
3512 inline isl::union_map get_coincidence() const;
3513 inline isl::schedule compute_schedule() const;
3514 inline isl::union_map conditional_validity() const;
3515 inline isl::union_map get_conditional_validity() const;
3516 inline isl::union_map conditional_validity_condition() const;
3517 inline isl::union_map get_conditional_validity_condition() const;
3518 inline isl::set context() const;
3519 inline isl::set get_context() const;
3520 inline isl::union_set domain() const;
3521 inline isl::union_set get_domain() const;
3522 static inline isl::schedule_constraints on_domain(isl::union_set domain);
3523 inline isl::union_map proximity() const;
3524 inline isl::union_map get_proximity() const;
3525 inline isl::schedule_constraints set_coincidence(isl::union_map coincidence) const;
3526 inline isl::schedule_constraints set_conditional_validity(isl::union_map condition, isl::union_map validity) const;
3527 inline isl::schedule_constraints set_context(isl::set context) const;
3528 inline isl::schedule_constraints set_proximity(isl::union_map proximity) const;
3529 inline isl::schedule_constraints set_validity(isl::union_map validity) const;
3530 inline isl::union_map validity() const;
3531 inline isl::union_map get_validity() const;
3532 };
3533
3534 // declarations for isl::schedule_node
3535 inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3536 inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3537
3538 class schedule_node {
3539 friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3540 friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3541
3542 protected:
3543 isl_schedule_node *ptr = nullptr;
3544
3545 inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
3546
3547 public:
3548 inline /* implicit */ schedule_node();
3549 inline /* implicit */ schedule_node(const schedule_node &obj);
3550 inline schedule_node &operator=(schedule_node obj);
3551 inline ~schedule_node();
3552 inline __isl_give isl_schedule_node *copy() const &;
3553 inline __isl_give isl_schedule_node *copy() && = delete;
3554 inline __isl_keep isl_schedule_node *get() const;
3555 inline __isl_give isl_schedule_node *release();
3556 inline bool is_null() const;
3557 private:
3558 template <typename T,
3559 typename = typename std::enable_if<std::is_same<
3560 const decltype(isl_schedule_node_get_type(nullptr)),
3561 const T>::value>::type>
3562 inline boolean isa_type(T subtype) const;
3563 public:
3564 template <class T> inline boolean isa() const;
3565 template <class T> inline T as() const;
3566 inline isl::ctx ctx() const;
3567
3568 inline isl::schedule_node ancestor(int generation) const;
3569 inline class size ancestor_child_position(const isl::schedule_node &ancestor) const;
3570 inline class size get_ancestor_child_position(const isl::schedule_node &ancestor) const;
3571 inline isl::schedule_node child(int pos) const;
3572 inline class size child_position() const;
3573 inline class size get_child_position() const;
3574 inline isl::union_set domain() const;
3575 inline isl::union_set get_domain() const;
3576 inline boolean every_descendant(const std::function<boolean(isl::schedule_node)> &test) const;
3577 inline isl::schedule_node first_child() const;
3578 inline stat foreach_ancestor_top_down(const std::function<stat(isl::schedule_node)> &fn) const;
3579 inline stat foreach_descendant_top_down(const std::function<boolean(isl::schedule_node)> &fn) const;
3580 static inline isl::schedule_node from_domain(isl::union_set domain);
3581 static inline isl::schedule_node from_extension(isl::union_map extension);
3582 inline isl::schedule_node graft_after(isl::schedule_node graft) const;
3583 inline isl::schedule_node graft_before(isl::schedule_node graft) const;
3584 inline boolean has_children() const;
3585 inline boolean has_next_sibling() const;
3586 inline boolean has_parent() const;
3587 inline boolean has_previous_sibling() const;
3588 inline isl::schedule_node insert_context(isl::set context) const;
3589 inline isl::schedule_node insert_filter(isl::union_set filter) const;
3590 inline isl::schedule_node insert_guard(isl::set context) const;
3591 inline isl::schedule_node insert_mark(isl::id mark) const;
3592 inline isl::schedule_node insert_mark(const std::string &mark) const;
3593 inline isl::schedule_node insert_partial_schedule(isl::multi_union_pw_aff schedule) const;
3594 inline isl::schedule_node insert_sequence(isl::union_set_list filters) const;
3595 inline isl::schedule_node insert_set(isl::union_set_list filters) const;
3596 inline boolean is_equal(const isl::schedule_node &node2) const;
3597 inline boolean is_subtree_anchored() const;
3598 inline isl::schedule_node map_descendant_bottom_up(const std::function<isl::schedule_node(isl::schedule_node)> &fn) const;
3599 inline class size n_children() const;
3600 inline isl::schedule_node next_sibling() const;
3601 inline isl::schedule_node order_after(isl::union_set filter) const;
3602 inline isl::schedule_node order_before(isl::union_set filter) const;
3603 inline isl::schedule_node parent() const;
3604 inline isl::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const;
3605 inline isl::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
3606 inline isl::union_map prefix_schedule_relation() const;
3607 inline isl::union_map get_prefix_schedule_relation() const;
3608 inline isl::union_map prefix_schedule_union_map() const;
3609 inline isl::union_map get_prefix_schedule_union_map() const;
3610 inline isl::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const;
3611 inline isl::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
3612 inline isl::schedule_node previous_sibling() const;
3613 inline isl::schedule_node root() const;
3614 inline isl::schedule schedule() const;
3615 inline isl::schedule get_schedule() const;
3616 inline class size schedule_depth() const;
3617 inline class size get_schedule_depth() const;
3618 inline isl::schedule_node shared_ancestor(const isl::schedule_node &node2) const;
3619 inline isl::schedule_node get_shared_ancestor(const isl::schedule_node &node2) const;
3620 inline class size tree_depth() const;
3621 inline class size get_tree_depth() const;
3622 inline isl::union_set universe_domain() const;
3623 inline isl::union_set get_universe_domain() const;
3624 };
3625
3626 // declarations for isl::schedule_node_band
3627
3628 class schedule_node_band : public schedule_node {
3629 template <class T>
3630 friend boolean schedule_node::isa() const;
3631 friend schedule_node_band schedule_node::as<schedule_node_band>() const;
3632 static const auto type = isl_schedule_node_band;
3633
3634 protected:
3635 inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
3636
3637 public:
3638 inline /* implicit */ schedule_node_band();
3639 inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
3640 inline schedule_node_band &operator=(schedule_node_band obj);
3641 inline isl::ctx ctx() const;
3642
3643 inline isl::union_set ast_build_options() const;
3644 inline isl::union_set get_ast_build_options() const;
3645 inline isl::set ast_isolate_option() const;
3646 inline isl::set get_ast_isolate_option() const;
3647 inline boolean member_get_coincident(int pos) const;
3648 inline schedule_node_band member_set_coincident(int pos, int coincident) const;
3649 inline schedule_node_band mod(isl::multi_val mv) const;
3650 inline class size n_member() const;
3651 inline isl::multi_union_pw_aff partial_schedule() const;
3652 inline isl::multi_union_pw_aff get_partial_schedule() const;
3653 inline boolean permutable() const;
3654 inline boolean get_permutable() const;
3655 inline schedule_node_band scale(isl::multi_val mv) const;
3656 inline schedule_node_band scale_down(isl::multi_val mv) const;
3657 inline schedule_node_band set_ast_build_options(isl::union_set options) const;
3658 inline schedule_node_band set_permutable(int permutable) const;
3659 inline schedule_node_band shift(isl::multi_union_pw_aff shift) const;
3660 inline schedule_node_band split(int pos) const;
3661 inline schedule_node_band tile(isl::multi_val sizes) const;
3662 inline schedule_node_band member_set_ast_loop_default(int pos) const;
3663 inline schedule_node_band member_set_ast_loop_atomic(int pos) const;
3664 inline schedule_node_band member_set_ast_loop_unroll(int pos) const;
3665 inline schedule_node_band member_set_ast_loop_separate(int pos) const;
3666 };
3667
3668 // declarations for isl::schedule_node_context
3669
3670 class schedule_node_context : public schedule_node {
3671 template <class T>
3672 friend boolean schedule_node::isa() const;
3673 friend schedule_node_context schedule_node::as<schedule_node_context>() const;
3674 static const auto type = isl_schedule_node_context;
3675
3676 protected:
3677 inline explicit schedule_node_context(__isl_take isl_schedule_node *ptr);
3678
3679 public:
3680 inline /* implicit */ schedule_node_context();
3681 inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
3682 inline schedule_node_context &operator=(schedule_node_context obj);
3683 inline isl::ctx ctx() const;
3684
3685 inline isl::set context() const;
3686 inline isl::set get_context() const;
3687 };
3688
3689 // declarations for isl::schedule_node_domain
3690
3691 class schedule_node_domain : public schedule_node {
3692 template <class T>
3693 friend boolean schedule_node::isa() const;
3694 friend schedule_node_domain schedule_node::as<schedule_node_domain>() const;
3695 static const auto type = isl_schedule_node_domain;
3696
3697 protected:
3698 inline explicit schedule_node_domain(__isl_take isl_schedule_node *ptr);
3699
3700 public:
3701 inline /* implicit */ schedule_node_domain();
3702 inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
3703 inline schedule_node_domain &operator=(schedule_node_domain obj);
3704 inline isl::ctx ctx() const;
3705
3706 inline isl::union_set domain() const;
3707 inline isl::union_set get_domain() const;
3708 };
3709
3710 // declarations for isl::schedule_node_expansion
3711
3712 class schedule_node_expansion : public schedule_node {
3713 template <class T>
3714 friend boolean schedule_node::isa() const;
3715 friend schedule_node_expansion schedule_node::as<schedule_node_expansion>() const;
3716 static const auto type = isl_schedule_node_expansion;
3717
3718 protected:
3719 inline explicit schedule_node_expansion(__isl_take isl_schedule_node *ptr);
3720
3721 public:
3722 inline /* implicit */ schedule_node_expansion();
3723 inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
3724 inline schedule_node_expansion &operator=(schedule_node_expansion obj);
3725 inline isl::ctx ctx() const;
3726
3727 inline isl::union_pw_multi_aff contraction() const;
3728 inline isl::union_pw_multi_aff get_contraction() const;
3729 inline isl::union_map expansion() const;
3730 inline isl::union_map get_expansion() const;
3731 };
3732
3733 // declarations for isl::schedule_node_extension
3734
3735 class schedule_node_extension : public schedule_node {
3736 template <class T>
3737 friend boolean schedule_node::isa() const;
3738 friend schedule_node_extension schedule_node::as<schedule_node_extension>() const;
3739 static const auto type = isl_schedule_node_extension;
3740
3741 protected:
3742 inline explicit schedule_node_extension(__isl_take isl_schedule_node *ptr);
3743
3744 public:
3745 inline /* implicit */ schedule_node_extension();
3746 inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
3747 inline schedule_node_extension &operator=(schedule_node_extension obj);
3748 inline isl::ctx ctx() const;
3749
3750 inline isl::union_map extension() const;
3751 inline isl::union_map get_extension() const;
3752 };
3753
3754 // declarations for isl::schedule_node_filter
3755
3756 class schedule_node_filter : public schedule_node {
3757 template <class T>
3758 friend boolean schedule_node::isa() const;
3759 friend schedule_node_filter schedule_node::as<schedule_node_filter>() const;
3760 static const auto type = isl_schedule_node_filter;
3761
3762 protected:
3763 inline explicit schedule_node_filter(__isl_take isl_schedule_node *ptr);
3764
3765 public:
3766 inline /* implicit */ schedule_node_filter();
3767 inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
3768 inline schedule_node_filter &operator=(schedule_node_filter obj);
3769 inline isl::ctx ctx() const;
3770
3771 inline isl::union_set filter() const;
3772 inline isl::union_set get_filter() const;
3773 };
3774
3775 // declarations for isl::schedule_node_guard
3776
3777 class schedule_node_guard : public schedule_node {
3778 template <class T>
3779 friend boolean schedule_node::isa() const;
3780 friend schedule_node_guard schedule_node::as<schedule_node_guard>() const;
3781 static const auto type = isl_schedule_node_guard;
3782
3783 protected:
3784 inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
3785
3786 public:
3787 inline /* implicit */ schedule_node_guard();
3788 inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
3789 inline schedule_node_guard &operator=(schedule_node_guard obj);
3790 inline isl::ctx ctx() const;
3791
3792 inline isl::set guard() const;
3793 inline isl::set get_guard() const;
3794 };
3795
3796 // declarations for isl::schedule_node_leaf
3797
3798 class schedule_node_leaf : public schedule_node {
3799 template <class T>
3800 friend boolean schedule_node::isa() const;
3801 friend schedule_node_leaf schedule_node::as<schedule_node_leaf>() const;
3802 static const auto type = isl_schedule_node_leaf;
3803
3804 protected:
3805 inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
3806
3807 public:
3808 inline /* implicit */ schedule_node_leaf();
3809 inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
3810 inline schedule_node_leaf &operator=(schedule_node_leaf obj);
3811 inline isl::ctx ctx() const;
3812
3813 };
3814
3815 // declarations for isl::schedule_node_mark
3816
3817 class schedule_node_mark : public schedule_node {
3818 template <class T>
3819 friend boolean schedule_node::isa() const;
3820 friend schedule_node_mark schedule_node::as<schedule_node_mark>() const;
3821 static const auto type = isl_schedule_node_mark;
3822
3823 protected:
3824 inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
3825
3826 public:
3827 inline /* implicit */ schedule_node_mark();
3828 inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
3829 inline schedule_node_mark &operator=(schedule_node_mark obj);
3830 inline isl::ctx ctx() const;
3831
3832 inline isl::id id() const;
3833 inline isl::id get_id() const;
3834 };
3835
3836 // declarations for isl::schedule_node_sequence
3837
3838 class schedule_node_sequence : public schedule_node {
3839 template <class T>
3840 friend boolean schedule_node::isa() const;
3841 friend schedule_node_sequence schedule_node::as<schedule_node_sequence>() const;
3842 static const auto type = isl_schedule_node_sequence;
3843
3844 protected:
3845 inline explicit schedule_node_sequence(__isl_take isl_schedule_node *ptr);
3846
3847 public:
3848 inline /* implicit */ schedule_node_sequence();
3849 inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
3850 inline schedule_node_sequence &operator=(schedule_node_sequence obj);
3851 inline isl::ctx ctx() const;
3852
3853 };
3854
3855 // declarations for isl::schedule_node_set
3856
3857 class schedule_node_set : public schedule_node {
3858 template <class T>
3859 friend boolean schedule_node::isa() const;
3860 friend schedule_node_set schedule_node::as<schedule_node_set>() const;
3861 static const auto type = isl_schedule_node_set;
3862
3863 protected:
3864 inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
3865
3866 public:
3867 inline /* implicit */ schedule_node_set();
3868 inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
3869 inline schedule_node_set &operator=(schedule_node_set obj);
3870 inline isl::ctx ctx() const;
3871
3872 };
3873
3874 // declarations for isl::set
3875 inline set manage(__isl_take isl_set *ptr);
3876 inline set manage_copy(__isl_keep isl_set *ptr);
3877
3878 class set {
3879 friend inline set manage(__isl_take isl_set *ptr);
3880 friend inline set manage_copy(__isl_keep isl_set *ptr);
3881
3882 protected:
3883 isl_set *ptr = nullptr;
3884
3885 inline explicit set(__isl_take isl_set *ptr);
3886
3887 public:
3888 inline /* implicit */ set();
3889 inline /* implicit */ set(const set &obj);
3890 inline /* implicit */ set(isl::basic_set bset);
3891 inline /* implicit */ set(isl::point pnt);
3892 inline explicit set(isl::union_set uset);
3893 inline explicit set(isl::ctx ctx, const std::string &str);
3894 inline set &operator=(set obj);
3895 inline ~set();
3896 inline __isl_give isl_set *copy() const &;
3897 inline __isl_give isl_set *copy() && = delete;
3898 inline __isl_keep isl_set *get() const;
3899 inline __isl_give isl_set *release();
3900 inline bool is_null() const;
3901 inline isl::ctx ctx() const;
3902
3903 inline isl::set add_constraint(isl::constraint constraint) const;
3904 inline isl::set add_dims(isl::dim type, unsigned int n) const;
3905 inline isl::basic_set affine_hull() const;
3906 inline isl::set align_params(isl::space model) const;
3907 inline isl::set apply(isl::map map) const;
3908 inline isl::union_set apply(const isl::union_map &umap) const;
3909 inline isl::set apply(const isl::basic_map &map) const;
3910 inline isl::pw_multi_aff as_pw_multi_aff() const;
3911 inline isl::set as_set() const;
3912 inline isl::basic_set_list basic_set_list() const;
3913 inline isl::basic_set_list get_basic_set_list() const;
3914 inline isl::set bind(isl::multi_id tuple) const;
3915 inline isl::set coalesce() const;
3916 inline isl::set complement() const;
3917 inline isl::union_set compute_divs() const;
3918 inline boolean contains(const isl::space &space) const;
3919 inline isl::basic_set convex_hull() const;
3920 inline isl::set detect_equalities() const;
3921 inline class size dim(isl::dim type) const;
3922 inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
3923 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
3924 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
3925 inline isl::pw_aff dim_max(int pos) const;
3926 inline isl::val dim_max_val(int pos) const;
3927 inline isl::pw_aff dim_min(int pos) const;
3928 inline isl::val dim_min_val(int pos) const;
3929 inline std::string dim_name(isl::dim type, unsigned int pos) const;
3930 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
3931 inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
3932 inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
3933 static inline isl::set empty(isl::space space);
3934 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
3935 inline isl::set extract_set(const isl::space &space) const;
3936 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
3937 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
3938 inline isl::set fix_si(isl::dim type, unsigned int pos, int value) const;
3939 inline isl::set flatten() const;
3940 inline stat foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const;
3941 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
3942 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
3943 inline isl::set gist(isl::set context) const;
3944 inline isl::union_set gist(const isl::union_set &context) const;
3945 inline isl::set gist(const isl::basic_set &context) const;
3946 inline isl::set gist(const isl::point &context) const;
3947 inline isl::set gist_params(isl::set context) const;
3948 inline boolean has_equal_space(const isl::set &set2) const;
3949 inline isl::map identity() const;
3950 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
3951 inline isl::pw_aff indicator_function() const;
3952 inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
3953 inline isl::map insert_domain(isl::space domain) const;
3954 inline isl::set intersect(isl::set set2) const;
3955 inline isl::union_set intersect(const isl::union_set &uset2) const;
3956 inline isl::set intersect(const isl::basic_set &set2) const;
3957 inline isl::set intersect(const isl::point &set2) const;
3958 inline isl::set intersect_params(isl::set params) const;
3959 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
3960 inline boolean involves_locals() const;
3961 inline boolean is_bounded() const;
3962 inline boolean is_disjoint(const isl::set &set2) const;
3963 inline boolean is_disjoint(const isl::union_set &uset2) const;
3964 inline boolean is_disjoint(const isl::basic_set &set2) const;
3965 inline boolean is_disjoint(const isl::point &set2) const;
3966 inline boolean is_empty() const;
3967 inline boolean is_equal(const isl::set &set2) const;
3968 inline boolean is_equal(const isl::union_set &uset2) const;
3969 inline boolean is_equal(const isl::basic_set &set2) const;
3970 inline boolean is_equal(const isl::point &set2) const;
3971 inline boolean is_params() const;
3972 inline boolean is_singleton() const;
3973 inline boolean is_strict_subset(const isl::set &set2) const;
3974 inline boolean is_strict_subset(const isl::union_set &uset2) const;
3975 inline boolean is_strict_subset(const isl::basic_set &set2) const;
3976 inline boolean is_strict_subset(const isl::point &set2) const;
3977 inline boolean is_subset(const isl::set &set2) const;
3978 inline boolean is_subset(const isl::union_set &uset2) const;
3979 inline boolean is_subset(const isl::basic_set &set2) const;
3980 inline boolean is_subset(const isl::point &set2) const;
3981 inline boolean is_wrapping() const;
3982 inline boolean isa_set() const;
3983 inline isl::set lexmax() const;
3984 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
3985 inline isl::set lexmin() const;
3986 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
3987 inline isl::set lower_bound(isl::multi_pw_aff lower) const;
3988 inline isl::set lower_bound(isl::multi_val lower) const;
3989 inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
3990 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
3991 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, long value) const;
3992 inline isl::multi_pw_aff max_multi_pw_aff() const;
3993 inline isl::val max_val(const isl::aff &obj) const;
3994 inline isl::multi_pw_aff min_multi_pw_aff() const;
3995 inline isl::val min_val(const isl::aff &obj) const;
3996 inline class size n_basic_set() const;
3997 inline isl::set params() const;
3998 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
3999 inline isl::multi_val plain_multi_val_if_fixed() const;
4000 inline isl::multi_val get_plain_multi_val_if_fixed() const;
4001 inline isl::basic_set polyhedral_hull() const;
4002 inline isl::set preimage(isl::multi_aff ma) const;
4003 inline isl::set preimage(isl::multi_pw_aff mpa) const;
4004 inline isl::set preimage(isl::pw_multi_aff pma) const;
4005 inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
4006 inline isl::set product(isl::set set2) const;
4007 inline isl::set project_out(isl::dim type, unsigned int first, unsigned int n) const;
4008 inline isl::set project_out_all_params() const;
4009 inline isl::set project_out_param(isl::id id) const;
4010 inline isl::set project_out_param(const std::string &id) const;
4011 inline isl::set project_out_param(isl::id_list list) const;
4012 inline isl::pw_multi_aff pw_multi_aff_on_domain(isl::multi_val mv) const;
4013 inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
4014 inline isl::set remove_divs() const;
4015 inline isl::set remove_redundancies() const;
4016 inline isl::set reset_tuple_id() const;
4017 inline isl::basic_set sample() const;
4018 inline isl::point sample_point() const;
4019 inline isl::set set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
4020 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
4021 inline isl::set_list set_list() const;
4022 inline isl::set set_tuple_id(isl::id id) const;
4023 inline isl::set set_tuple_id(const std::string &id) const;
4024 inline isl::fixed_box simple_fixed_box_hull() const;
4025 inline isl::fixed_box get_simple_fixed_box_hull() const;
4026 inline isl::basic_set simple_hull() const;
4027 inline isl::space space() const;
4028 inline isl::space get_space() const;
4029 inline isl::val stride(int pos) const;
4030 inline isl::val get_stride(int pos) const;
4031 inline isl::set subtract(isl::set set2) const;
4032 inline isl::union_set subtract(const isl::union_set &uset2) const;
4033 inline isl::set subtract(const isl::basic_set &set2) const;
4034 inline isl::set subtract(const isl::point &set2) const;
4035 inline isl::set_list to_list() const;
4036 inline isl::union_set to_union_set() const;
4037 inline isl::map translation() const;
4038 inline class size tuple_dim() const;
4039 inline isl::id tuple_id() const;
4040 inline isl::id get_tuple_id() const;
4041 inline std::string tuple_name() const;
4042 inline std::string get_tuple_name() const;
4043 inline isl::set unbind_params(isl::multi_id tuple) const;
4044 inline isl::map unbind_params_insert_domain(isl::multi_id domain) const;
4045 inline isl::set unite(isl::set set2) const;
4046 inline isl::union_set unite(const isl::union_set &uset2) const;
4047 inline isl::set unite(const isl::basic_set &set2) const;
4048 inline isl::set unite(const isl::point &set2) const;
4049 static inline isl::set universe(isl::space space);
4050 inline isl::basic_set unshifted_simple_hull() const;
4051 inline isl::map unwrap() const;
4052 inline isl::set upper_bound(isl::multi_pw_aff upper) const;
4053 inline isl::set upper_bound(isl::multi_val upper) const;
4054 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
4055 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, long value) const;
4056 };
4057
4058 // declarations for isl::set_list
4059 inline set_list manage(__isl_take isl_set_list *ptr);
4060 inline set_list manage_copy(__isl_keep isl_set_list *ptr);
4061
4062 class set_list {
4063 friend inline set_list manage(__isl_take isl_set_list *ptr);
4064 friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
4065
4066 protected:
4067 isl_set_list *ptr = nullptr;
4068
4069 inline explicit set_list(__isl_take isl_set_list *ptr);
4070
4071 public:
4072 inline /* implicit */ set_list();
4073 inline /* implicit */ set_list(const set_list &obj);
4074 inline explicit set_list(isl::ctx ctx, int n);
4075 inline explicit set_list(isl::set el);
4076 inline explicit set_list(isl::ctx ctx, const std::string &str);
4077 inline set_list &operator=(set_list obj);
4078 inline ~set_list();
4079 inline __isl_give isl_set_list *copy() const &;
4080 inline __isl_give isl_set_list *copy() && = delete;
4081 inline __isl_keep isl_set_list *get() const;
4082 inline __isl_give isl_set_list *release();
4083 inline bool is_null() const;
4084 inline isl::ctx ctx() const;
4085
4086 inline isl::set_list add(isl::set el) const;
4087 inline isl::set at(int index) const;
4088 inline isl::set get_at(int index) const;
4089 inline isl::set_list clear() const;
4090 inline isl::set_list concat(isl::set_list list2) const;
4091 inline isl::set_list drop(unsigned int first, unsigned int n) const;
4092 inline stat foreach(const std::function<stat(isl::set)> &fn) const;
4093 inline isl::set_list insert(unsigned int pos, isl::set el) const;
4094 inline class size size() const;
4095 };
4096
4097 // declarations for isl::space
4098 inline space manage(__isl_take isl_space *ptr);
4099 inline space manage_copy(__isl_keep isl_space *ptr);
4100
4101 class space {
4102 friend inline space manage(__isl_take isl_space *ptr);
4103 friend inline space manage_copy(__isl_keep isl_space *ptr);
4104
4105 protected:
4106 isl_space *ptr = nullptr;
4107
4108 inline explicit space(__isl_take isl_space *ptr);
4109
4110 public:
4111 inline /* implicit */ space();
4112 inline /* implicit */ space(const space &obj);
4113 inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out);
4114 inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int dim);
4115 inline space &operator=(space obj);
4116 inline ~space();
4117 inline __isl_give isl_space *copy() const &;
4118 inline __isl_give isl_space *copy() && = delete;
4119 inline __isl_keep isl_space *get() const;
4120 inline __isl_give isl_space *release();
4121 inline bool is_null() const;
4122 inline isl::ctx ctx() const;
4123
4124 inline isl::space add_dims(isl::dim type, unsigned int n) const;
4125 inline isl::space add_named_tuple(isl::id tuple_id, unsigned int dim) const;
4126 inline isl::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
4127 inline isl::space add_param(isl::id id) const;
4128 inline isl::space add_param(const std::string &id) const;
4129 inline isl::space add_unnamed_tuple(unsigned int dim) const;
4130 inline isl::space align_params(isl::space space2) const;
4131 inline isl::space curry() const;
4132 inline class size dim(isl::dim type) const;
4133 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
4134 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
4135 inline isl::space domain() const;
4136 inline isl::multi_aff domain_map_multi_aff() const;
4137 inline isl::pw_multi_aff domain_map_pw_multi_aff() const;
4138 inline isl::id domain_tuple_id() const;
4139 inline isl::id get_domain_tuple_id() const;
4140 inline isl::space drop_dims(isl::dim type, unsigned int first, unsigned int num) const;
4141 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
4142 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
4143 inline isl::space flatten_domain() const;
4144 inline isl::space flatten_range() const;
4145 inline boolean has_domain_tuple_id() const;
4146 inline boolean has_equal_tuples(const isl::space &space2) const;
4147 inline boolean has_range_tuple_id() const;
4148 inline boolean has_tuple_id(isl::dim type) const;
4149 inline boolean has_tuple_name(isl::dim type) const;
4150 inline isl::multi_aff identity_multi_aff_on_domain() const;
4151 inline isl::multi_pw_aff identity_multi_pw_aff_on_domain() const;
4152 inline isl::pw_multi_aff identity_pw_multi_aff_on_domain() const;
4153 inline boolean is_equal(const isl::space &space2) const;
4154 inline boolean is_params() const;
4155 inline boolean is_set() const;
4156 inline boolean is_wrapping() const;
4157 inline isl::space map_from_domain_and_range(isl::space range) const;
4158 inline isl::space map_from_set() const;
4159 inline isl::multi_aff multi_aff(isl::aff_list list) const;
4160 inline isl::multi_aff multi_aff_on_domain(isl::multi_val mv) const;
4161 inline isl::multi_id multi_id(isl::id_list list) const;
4162 inline isl::multi_pw_aff multi_pw_aff(isl::pw_aff_list list) const;
4163 inline isl::multi_union_pw_aff multi_union_pw_aff(isl::union_pw_aff_list list) const;
4164 inline isl::multi_val multi_val(isl::val_list list) const;
4165 inline isl::aff param_aff_on_domain(isl::id id) const;
4166 inline isl::aff param_aff_on_domain(const std::string &id) const;
4167 inline isl::space params() const;
4168 static inline isl::space params_alloc(isl::ctx ctx, unsigned int nparam);
4169 inline isl::space product(isl::space right) const;
4170 inline isl::space range() const;
4171 inline isl::multi_aff range_map_multi_aff() const;
4172 inline isl::pw_multi_aff range_map_pw_multi_aff() const;
4173 inline isl::space range_reverse() const;
4174 inline isl::id range_tuple_id() const;
4175 inline isl::id get_range_tuple_id() const;
4176 inline isl::space reverse() const;
4177 inline isl::space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
4178 inline isl::space set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
4179 inline isl::space set_domain_tuple(isl::id id) const;
4180 inline isl::space set_domain_tuple(const std::string &id) const;
4181 inline isl::space set_from_params() const;
4182 inline isl::space set_range_tuple(isl::id id) const;
4183 inline isl::space set_range_tuple(const std::string &id) const;
4184 inline isl::space set_tuple_id(isl::dim type, isl::id id) const;
4185 inline isl::space set_tuple_id(isl::dim type, const std::string &id) const;
4186 inline isl::id tuple_id(isl::dim type) const;
4187 inline isl::id get_tuple_id(isl::dim type) const;
4188 inline std::string tuple_name(isl::dim type) const;
4189 inline std::string get_tuple_name(isl::dim type) const;
4190 inline isl::space uncurry() const;
4191 static inline isl::space unit(isl::ctx ctx);
4192 inline isl::map universe_map() const;
4193 inline isl::set universe_set() const;
4194 inline isl::space unwrap() const;
4195 inline isl::space wrap() const;
4196 inline isl::aff zero_aff_on_domain() const;
4197 inline isl::multi_aff zero_multi_aff() const;
4198 inline isl::multi_pw_aff zero_multi_pw_aff() const;
4199 inline isl::multi_union_pw_aff zero_multi_union_pw_aff() const;
4200 inline isl::multi_val zero_multi_val() const;
4201 };
4202
4203 // declarations for isl::union_access_info
4204 inline union_access_info manage(__isl_take isl_union_access_info *ptr);
4205 inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
4206
4207 class union_access_info {
4208 friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
4209 friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
4210
4211 protected:
4212 isl_union_access_info *ptr = nullptr;
4213
4214 inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
4215
4216 public:
4217 inline /* implicit */ union_access_info();
4218 inline /* implicit */ union_access_info(const union_access_info &obj);
4219 inline explicit union_access_info(isl::union_map sink);
4220 inline union_access_info &operator=(union_access_info obj);
4221 inline ~union_access_info();
4222 inline __isl_give isl_union_access_info *copy() const &;
4223 inline __isl_give isl_union_access_info *copy() && = delete;
4224 inline __isl_keep isl_union_access_info *get() const;
4225 inline __isl_give isl_union_access_info *release();
4226 inline bool is_null() const;
4227 inline isl::ctx ctx() const;
4228
4229 inline isl::union_flow compute_flow() const;
4230 inline isl::union_access_info set_kill(isl::union_map kill) const;
4231 inline isl::union_access_info set_may_source(isl::union_map may_source) const;
4232 inline isl::union_access_info set_must_source(isl::union_map must_source) const;
4233 inline isl::union_access_info set_schedule(isl::schedule schedule) const;
4234 inline isl::union_access_info set_schedule_map(isl::union_map schedule_map) const;
4235 };
4236
4237 // declarations for isl::union_flow
4238 inline union_flow manage(__isl_take isl_union_flow *ptr);
4239 inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
4240
4241 class union_flow {
4242 friend inline union_flow manage(__isl_take isl_union_flow *ptr);
4243 friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
4244
4245 protected:
4246 isl_union_flow *ptr = nullptr;
4247
4248 inline explicit union_flow(__isl_take isl_union_flow *ptr);
4249
4250 public:
4251 inline /* implicit */ union_flow();
4252 inline /* implicit */ union_flow(const union_flow &obj);
4253 inline union_flow &operator=(union_flow obj);
4254 inline ~union_flow();
4255 inline __isl_give isl_union_flow *copy() const &;
4256 inline __isl_give isl_union_flow *copy() && = delete;
4257 inline __isl_keep isl_union_flow *get() const;
4258 inline __isl_give isl_union_flow *release();
4259 inline bool is_null() const;
4260 inline isl::ctx ctx() const;
4261
4262 inline isl::union_map full_may_dependence() const;
4263 inline isl::union_map get_full_may_dependence() const;
4264 inline isl::union_map full_must_dependence() const;
4265 inline isl::union_map get_full_must_dependence() const;
4266 inline isl::union_map may_dependence() const;
4267 inline isl::union_map get_may_dependence() const;
4268 inline isl::union_map may_no_source() const;
4269 inline isl::union_map get_may_no_source() const;
4270 inline isl::union_map must_dependence() const;
4271 inline isl::union_map get_must_dependence() const;
4272 inline isl::union_map must_no_source() const;
4273 inline isl::union_map get_must_no_source() const;
4274 };
4275
4276 // declarations for isl::union_map
4277 inline union_map manage(__isl_take isl_union_map *ptr);
4278 inline union_map manage_copy(__isl_keep isl_union_map *ptr);
4279
4280 class union_map {
4281 friend inline union_map manage(__isl_take isl_union_map *ptr);
4282 friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
4283
4284 protected:
4285 isl_union_map *ptr = nullptr;
4286
4287 inline explicit union_map(__isl_take isl_union_map *ptr);
4288
4289 public:
4290 inline /* implicit */ union_map();
4291 inline /* implicit */ union_map(const union_map &obj);
4292 inline /* implicit */ union_map(isl::basic_map bmap);
4293 inline /* implicit */ union_map(isl::map map);
4294 inline explicit union_map(isl::ctx ctx, const std::string &str);
4295 inline union_map &operator=(union_map obj);
4296 inline ~union_map();
4297 inline __isl_give isl_union_map *copy() const &;
4298 inline __isl_give isl_union_map *copy() && = delete;
4299 inline __isl_keep isl_union_map *get() const;
4300 inline __isl_give isl_union_map *release();
4301 inline bool is_null() const;
4302 inline isl::ctx ctx() const;
4303
4304 inline isl::union_map affine_hull() const;
4305 inline isl::union_map apply_domain(isl::union_map umap2) const;
4306 inline isl::union_map apply_range(isl::union_map umap2) const;
4307 inline isl::map as_map() const;
4308 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
4309 inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
4310 inline isl::union_set bind_range(isl::multi_id tuple) const;
4311 inline isl::union_map coalesce() const;
4312 inline isl::union_map compute_divs() const;
4313 inline isl::union_map curry() const;
4314 inline isl::union_set deltas() const;
4315 inline isl::union_map detect_equalities() const;
4316 inline isl::union_set domain() const;
4317 inline isl::union_map domain_factor_domain() const;
4318 inline isl::union_map domain_factor_range() const;
4319 inline isl::union_map domain_map() const;
4320 inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
4321 inline isl::union_map domain_product(isl::union_map umap2) const;
4322 static inline isl::union_map empty(isl::ctx ctx);
4323 inline isl::union_map eq_at(isl::multi_union_pw_aff mupa) const;
4324 inline boolean every_map(const std::function<boolean(isl::map)> &test) const;
4325 inline isl::map extract_map(isl::space space) const;
4326 inline isl::union_map factor_domain() const;
4327 inline isl::union_map factor_range() const;
4328 inline isl::union_map fixed_power(isl::val exp) const;
4329 inline isl::union_map fixed_power(long exp) const;
4330 inline isl::union_map flat_range_product(isl::union_map umap2) const;
4331 inline stat foreach_map(const std::function<stat(isl::map)> &fn) const;
4332 static inline isl::union_map from(isl::multi_union_pw_aff mupa);
4333 static inline isl::union_map from(isl::union_pw_multi_aff upma);
4334 static inline isl::union_map from_domain(isl::union_set uset);
4335 static inline isl::union_map from_domain_and_range(isl::union_set domain, isl::union_set range);
4336 static inline isl::union_map from_range(isl::union_set uset);
4337 inline isl::union_map gist(isl::union_map context) const;
4338 inline isl::union_map gist_domain(isl::union_set uset) const;
4339 inline isl::union_map gist_params(isl::set set) const;
4340 inline isl::union_map gist_range(isl::union_set uset) const;
4341 inline isl::union_map intersect(isl::union_map umap2) const;
4342 inline isl::union_map intersect_domain(isl::space space) const;
4343 inline isl::union_map intersect_domain(isl::union_set uset) const;
4344 inline isl::union_map intersect_domain_factor_domain(isl::union_map factor) const;
4345 inline isl::union_map intersect_domain_factor_range(isl::union_map factor) const;
4346 inline isl::union_map intersect_params(isl::set set) const;
4347 inline isl::union_map intersect_range(isl::space space) const;
4348 inline isl::union_map intersect_range(isl::union_set uset) const;
4349 inline isl::union_map intersect_range_factor_domain(isl::union_map factor) const;
4350 inline isl::union_map intersect_range_factor_range(isl::union_map factor) const;
4351 inline boolean is_bijective() const;
4352 inline boolean is_disjoint(const isl::union_map &umap2) const;
4353 inline boolean is_empty() const;
4354 inline boolean is_equal(const isl::union_map &umap2) const;
4355 inline boolean is_injective() const;
4356 inline boolean is_single_valued() const;
4357 inline boolean is_strict_subset(const isl::union_map &umap2) const;
4358 inline boolean is_subset(const isl::union_map &umap2) const;
4359 inline boolean isa_map() const;
4360 inline isl::union_map lexmax() const;
4361 inline isl::union_map lexmin() const;
4362 inline isl::map_list map_list() const;
4363 inline isl::map_list get_map_list() const;
4364 inline isl::set params() const;
4365 inline isl::union_map polyhedral_hull() const;
4366 inline isl::union_map preimage_domain(isl::multi_aff ma) const;
4367 inline isl::union_map preimage_domain(isl::multi_pw_aff mpa) const;
4368 inline isl::union_map preimage_domain(isl::pw_multi_aff pma) const;
4369 inline isl::union_map preimage_domain(isl::union_pw_multi_aff upma) const;
4370 inline isl::union_map preimage_range(isl::multi_aff ma) const;
4371 inline isl::union_map preimage_range(isl::pw_multi_aff pma) const;
4372 inline isl::union_map preimage_range(isl::union_pw_multi_aff upma) const;
4373 inline isl::union_map product(isl::union_map umap2) const;
4374 inline isl::union_map project_out_all_params() const;
4375 inline isl::union_set range() const;
4376 inline isl::union_map range_factor_domain() const;
4377 inline isl::union_map range_factor_range() const;
4378 inline isl::union_map range_map() const;
4379 inline isl::union_map range_product(isl::union_map umap2) const;
4380 inline isl::union_map range_reverse() const;
4381 inline isl::union_map reverse() const;
4382 inline isl::space space() const;
4383 inline isl::space get_space() const;
4384 inline isl::union_map subtract(isl::union_map umap2) const;
4385 inline isl::union_map subtract_domain(isl::union_set dom) const;
4386 inline isl::union_map subtract_range(isl::union_set dom) const;
4387 inline isl::union_map uncurry() const;
4388 inline isl::union_map unite(isl::union_map umap2) const;
4389 inline isl::union_map universe() const;
4390 inline isl::union_set wrap() const;
4391 inline isl::union_map zip() const;
4392 };
4393
4394 // declarations for isl::union_pw_aff
4395 inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
4396 inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
4397
4398 class union_pw_aff {
4399 friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
4400 friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
4401
4402 protected:
4403 isl_union_pw_aff *ptr = nullptr;
4404
4405 inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
4406
4407 public:
4408 inline /* implicit */ union_pw_aff();
4409 inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
4410 inline /* implicit */ union_pw_aff(isl::aff aff);
4411 inline /* implicit */ union_pw_aff(isl::pw_aff pa);
4412 inline explicit union_pw_aff(isl::ctx ctx, const std::string &str);
4413 inline explicit union_pw_aff(isl::union_set domain, isl::val v);
4414 inline union_pw_aff &operator=(union_pw_aff obj);
4415 inline ~union_pw_aff();
4416 inline __isl_give isl_union_pw_aff *copy() const &;
4417 inline __isl_give isl_union_pw_aff *copy() && = delete;
4418 inline __isl_keep isl_union_pw_aff *get() const;
4419 inline __isl_give isl_union_pw_aff *release();
4420 inline bool is_null() const;
4421 inline isl::ctx ctx() const;
4422
4423 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
4424 inline isl::union_pw_aff add(isl::union_pw_aff upa2) const;
4425 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
4426 inline isl::union_pw_aff add(const isl::aff &upa2) const;
4427 inline isl::union_pw_aff add(const isl::pw_aff &upa2) const;
4428 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
4429 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
4430 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
4431 inline isl::pw_multi_aff as_pw_multi_aff() const;
4432 inline isl::union_map as_union_map() const;
4433 inline isl::union_pw_aff at(int pos) const;
4434 inline isl::union_set bind(const isl::multi_id &tuple) const;
4435 inline isl::union_set bind(isl::id id) const;
4436 inline isl::union_set bind(const std::string &id) const;
4437 inline isl::union_pw_aff coalesce() const;
4438 inline class size dim(isl::dim type) const;
4439 inline isl::union_set domain() const;
4440 static inline isl::union_pw_aff empty(isl::space space);
4441 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
4442 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
4443 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
4444 inline stat foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const;
4445 inline isl::union_pw_aff gist(isl::union_set context) const;
4446 inline boolean has_range_tuple_id() const;
4447 inline isl::union_pw_aff intersect_domain(isl::space space) const;
4448 inline isl::union_pw_aff intersect_domain(isl::union_set uset) const;
4449 inline isl::union_pw_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
4450 inline isl::union_pw_aff intersect_domain_wrapped_range(isl::union_set uset) const;
4451 inline isl::union_pw_aff intersect_params(isl::set set) const;
4452 inline boolean involves_locals() const;
4453 inline boolean involves_nan() const;
4454 inline boolean isa_pw_multi_aff() const;
4455 inline isl::union_pw_aff_list list() const;
4456 inline isl::multi_union_pw_aff neg() const;
4457 inline boolean plain_is_empty() const;
4458 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
4459 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
4460 inline isl::union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
4461 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
4462 inline isl::union_pw_multi_aff range_factor_domain() const;
4463 inline isl::union_pw_multi_aff range_factor_range() const;
4464 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
4465 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
4466 inline isl::id range_tuple_id() const;
4467 inline isl::multi_union_pw_aff reset_range_tuple_id() const;
4468 inline isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const;
4469 inline isl::multi_union_pw_aff scale(const isl::multi_val &mv) const;
4470 inline isl::multi_union_pw_aff scale(const isl::val &v) const;
4471 inline isl::multi_union_pw_aff scale(long v) const;
4472 inline isl::multi_union_pw_aff scale_down(const isl::multi_val &mv) const;
4473 inline isl::multi_union_pw_aff scale_down(const isl::val &v) const;
4474 inline isl::multi_union_pw_aff scale_down(long v) const;
4475 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
4476 inline isl::multi_union_pw_aff set_range_tuple(const isl::id &id) const;
4477 inline isl::multi_union_pw_aff set_range_tuple(const std::string &id) const;
4478 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
4479 inline class size size() const;
4480 inline isl::space space() const;
4481 inline isl::space get_space() const;
4482 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
4483 inline isl::union_pw_aff sub(isl::union_pw_aff upa2) const;
4484 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
4485 inline isl::union_pw_aff sub(const isl::aff &upa2) const;
4486 inline isl::union_pw_aff sub(const isl::pw_aff &upa2) const;
4487 inline isl::union_pw_aff subtract_domain(isl::space space) const;
4488 inline isl::union_pw_aff subtract_domain(isl::union_set uset) const;
4489 inline isl::union_pw_aff_list to_list() const;
4490 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
4491 inline isl::union_pw_aff union_add(isl::union_pw_aff upa2) const;
4492 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
4493 inline isl::union_pw_aff union_add(const isl::aff &upa2) const;
4494 inline isl::union_pw_aff union_add(const isl::pw_aff &upa2) const;
4495 };
4496
4497 // declarations for isl::union_pw_aff_list
4498 inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4499 inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4500
4501 class union_pw_aff_list {
4502 friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4503 friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4504
4505 protected:
4506 isl_union_pw_aff_list *ptr = nullptr;
4507
4508 inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
4509
4510 public:
4511 inline /* implicit */ union_pw_aff_list();
4512 inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
4513 inline explicit union_pw_aff_list(isl::ctx ctx, int n);
4514 inline explicit union_pw_aff_list(isl::union_pw_aff el);
4515 inline explicit union_pw_aff_list(isl::ctx ctx, const std::string &str);
4516 inline union_pw_aff_list &operator=(union_pw_aff_list obj);
4517 inline ~union_pw_aff_list();
4518 inline __isl_give isl_union_pw_aff_list *copy() const &;
4519 inline __isl_give isl_union_pw_aff_list *copy() && = delete;
4520 inline __isl_keep isl_union_pw_aff_list *get() const;
4521 inline __isl_give isl_union_pw_aff_list *release();
4522 inline bool is_null() const;
4523 inline isl::ctx ctx() const;
4524
4525 inline isl::union_pw_aff_list add(isl::union_pw_aff el) const;
4526 inline isl::union_pw_aff at(int index) const;
4527 inline isl::union_pw_aff get_at(int index) const;
4528 inline isl::union_pw_aff_list clear() const;
4529 inline isl::union_pw_aff_list concat(isl::union_pw_aff_list list2) const;
4530 inline isl::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
4531 inline stat foreach(const std::function<stat(isl::union_pw_aff)> &fn) const;
4532 inline isl::union_pw_aff_list insert(unsigned int pos, isl::union_pw_aff el) const;
4533 inline class size size() const;
4534 };
4535
4536 // declarations for isl::union_pw_multi_aff
4537 inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
4538 inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
4539
4540 class union_pw_multi_aff {
4541 friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
4542 friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
4543
4544 protected:
4545 isl_union_pw_multi_aff *ptr = nullptr;
4546
4547 inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
4548
4549 public:
4550 inline /* implicit */ union_pw_multi_aff();
4551 inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
4552 inline explicit union_pw_multi_aff(isl::union_set uset);
4553 inline /* implicit */ union_pw_multi_aff(isl::multi_aff ma);
4554 inline /* implicit */ union_pw_multi_aff(isl::pw_multi_aff pma);
4555 inline explicit union_pw_multi_aff(isl::union_map umap);
4556 inline /* implicit */ union_pw_multi_aff(isl::union_pw_aff upa);
4557 inline explicit union_pw_multi_aff(isl::ctx ctx, const std::string &str);
4558 inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
4559 inline ~union_pw_multi_aff();
4560 inline __isl_give isl_union_pw_multi_aff *copy() const &;
4561 inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
4562 inline __isl_keep isl_union_pw_multi_aff *get() const;
4563 inline __isl_give isl_union_pw_multi_aff *release();
4564 inline bool is_null() const;
4565 inline isl::ctx ctx() const;
4566
4567 inline isl::union_pw_multi_aff add(isl::union_pw_multi_aff upma2) const;
4568 inline isl::union_pw_multi_aff add_pw_multi_aff(isl::pw_multi_aff pma) const;
4569 inline isl::union_pw_multi_aff apply(isl::union_pw_multi_aff upma2) const;
4570 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
4571 inline isl::pw_multi_aff as_pw_multi_aff() const;
4572 inline isl::union_map as_union_map() const;
4573 inline isl::union_pw_multi_aff coalesce() const;
4574 inline isl::union_set domain() const;
4575 static inline isl::union_pw_multi_aff empty(isl::space space);
4576 static inline isl::union_pw_multi_aff empty(isl::ctx ctx);
4577 inline isl::pw_multi_aff extract_pw_multi_aff(isl::space space) const;
4578 inline isl::union_pw_multi_aff flat_range_product(isl::union_pw_multi_aff upma2) const;
4579 inline isl::union_pw_multi_aff gist(isl::union_set context) const;
4580 inline isl::union_pw_multi_aff intersect_domain(isl::space space) const;
4581 inline isl::union_pw_multi_aff intersect_domain(isl::union_set uset) const;
4582 inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
4583 inline isl::union_pw_multi_aff intersect_domain_wrapped_range(isl::union_set uset) const;
4584 inline isl::union_pw_multi_aff intersect_params(isl::set set) const;
4585 inline boolean involves_locals() const;
4586 inline boolean isa_pw_multi_aff() const;
4587 inline boolean plain_is_empty() const;
4588 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const;
4589 inline isl::union_pw_multi_aff pullback(isl::union_pw_multi_aff upma2) const;
4590 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
4591 inline isl::pw_multi_aff_list get_pw_multi_aff_list() const;
4592 inline isl::union_pw_multi_aff range_factor_domain() const;
4593 inline isl::union_pw_multi_aff range_factor_range() const;
4594 inline isl::union_pw_multi_aff range_product(isl::union_pw_multi_aff upma2) const;
4595 inline isl::space space() const;
4596 inline isl::space get_space() const;
4597 inline isl::union_pw_multi_aff sub(isl::union_pw_multi_aff upma2) const;
4598 inline isl::union_pw_multi_aff subtract_domain(isl::space space) const;
4599 inline isl::union_pw_multi_aff subtract_domain(isl::union_set uset) const;
4600 inline isl::union_pw_multi_aff union_add(isl::union_pw_multi_aff upma2) const;
4601 };
4602
4603 // declarations for isl::union_set
4604 inline union_set manage(__isl_take isl_union_set *ptr);
4605 inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4606
4607 class union_set {
4608 friend inline union_set manage(__isl_take isl_union_set *ptr);
4609 friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4610
4611 protected:
4612 isl_union_set *ptr = nullptr;
4613
4614 inline explicit union_set(__isl_take isl_union_set *ptr);
4615
4616 public:
4617 inline /* implicit */ union_set();
4618 inline /* implicit */ union_set(const union_set &obj);
4619 inline /* implicit */ union_set(isl::basic_set bset);
4620 inline /* implicit */ union_set(isl::point pnt);
4621 inline /* implicit */ union_set(isl::set set);
4622 inline explicit union_set(isl::ctx ctx, const std::string &str);
4623 inline union_set &operator=(union_set obj);
4624 inline ~union_set();
4625 inline __isl_give isl_union_set *copy() const &;
4626 inline __isl_give isl_union_set *copy() && = delete;
4627 inline __isl_keep isl_union_set *get() const;
4628 inline __isl_give isl_union_set *release();
4629 inline bool is_null() const;
4630 inline isl::ctx ctx() const;
4631
4632 inline isl::union_set affine_hull() const;
4633 inline isl::union_set apply(isl::union_map umap) const;
4634 inline isl::set as_set() const;
4635 inline isl::union_set coalesce() const;
4636 inline isl::union_set compute_divs() const;
4637 inline boolean contains(const isl::space &space) const;
4638 inline isl::union_set detect_equalities() const;
4639 static inline isl::union_set empty(isl::ctx ctx);
4640 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
4641 inline isl::set extract_set(isl::space space) const;
4642 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
4643 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
4644 inline isl::union_set gist(isl::union_set context) const;
4645 inline isl::union_set gist_params(isl::set set) const;
4646 inline isl::union_map identity() const;
4647 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
4648 inline isl::union_set intersect(isl::union_set uset2) const;
4649 inline isl::union_set intersect_params(isl::set set) const;
4650 inline boolean is_disjoint(const isl::union_set &uset2) const;
4651 inline boolean is_empty() const;
4652 inline boolean is_equal(const isl::union_set &uset2) const;
4653 inline boolean is_strict_subset(const isl::union_set &uset2) const;
4654 inline boolean is_subset(const isl::union_set &uset2) const;
4655 inline boolean isa_set() const;
4656 inline isl::union_set lexmax() const;
4657 inline isl::union_set lexmin() const;
4658 inline isl::set params() const;
4659 inline isl::union_set polyhedral_hull() const;
4660 inline isl::union_set preimage(isl::multi_aff ma) const;
4661 inline isl::union_set preimage(isl::pw_multi_aff pma) const;
4662 inline isl::union_set preimage(isl::union_pw_multi_aff upma) const;
4663 inline isl::point sample_point() const;
4664 inline isl::set_list set_list() const;
4665 inline isl::set_list get_set_list() const;
4666 inline isl::space space() const;
4667 inline isl::space get_space() const;
4668 inline isl::union_set subtract(isl::union_set uset2) const;
4669 inline isl::union_set_list to_list() const;
4670 inline isl::union_set unite(isl::union_set uset2) const;
4671 inline isl::union_set universe() const;
4672 inline isl::union_map unwrap() const;
4673 };
4674
4675 // declarations for isl::union_set_list
4676 inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4677 inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4678
4679 class union_set_list {
4680 friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4681 friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4682
4683 protected:
4684 isl_union_set_list *ptr = nullptr;
4685
4686 inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
4687
4688 public:
4689 inline /* implicit */ union_set_list();
4690 inline /* implicit */ union_set_list(const union_set_list &obj);
4691 inline explicit union_set_list(isl::ctx ctx, int n);
4692 inline explicit union_set_list(isl::union_set el);
4693 inline explicit union_set_list(isl::ctx ctx, const std::string &str);
4694 inline union_set_list &operator=(union_set_list obj);
4695 inline ~union_set_list();
4696 inline __isl_give isl_union_set_list *copy() const &;
4697 inline __isl_give isl_union_set_list *copy() && = delete;
4698 inline __isl_keep isl_union_set_list *get() const;
4699 inline __isl_give isl_union_set_list *release();
4700 inline bool is_null() const;
4701 inline isl::ctx ctx() const;
4702
4703 inline isl::union_set_list add(isl::union_set el) const;
4704 inline isl::union_set at(int index) const;
4705 inline isl::union_set get_at(int index) const;
4706 inline isl::union_set_list clear() const;
4707 inline isl::union_set_list concat(isl::union_set_list list2) const;
4708 inline isl::union_set_list drop(unsigned int first, unsigned int n) const;
4709 inline stat foreach(const std::function<stat(isl::union_set)> &fn) const;
4710 inline isl::union_set_list insert(unsigned int pos, isl::union_set el) const;
4711 inline class size size() const;
4712 };
4713
4714 // declarations for isl::val
4715 inline val manage(__isl_take isl_val *ptr);
4716 inline val manage_copy(__isl_keep isl_val *ptr);
4717
4718 class val {
4719 friend inline val manage(__isl_take isl_val *ptr);
4720 friend inline val manage_copy(__isl_keep isl_val *ptr);
4721
4722 protected:
4723 isl_val *ptr = nullptr;
4724
4725 inline explicit val(__isl_take isl_val *ptr);
4726
4727 public:
4728 inline /* implicit */ val();
4729 inline /* implicit */ val(const val &obj);
4730 inline explicit val(isl::ctx ctx, long i);
4731 inline explicit val(isl::ctx ctx, const std::string &str);
4732 inline val &operator=(val obj);
4733 inline ~val();
4734 inline __isl_give isl_val *copy() const &;
4735 inline __isl_give isl_val *copy() && = delete;
4736 inline __isl_keep isl_val *get() const;
4737 inline __isl_give isl_val *release();
4738 inline bool is_null() const;
4739 inline isl::ctx ctx() const;
4740
4741 inline isl::val abs() const;
4742 inline boolean abs_eq(const isl::val &v2) const;
4743 inline boolean abs_eq(long v2) const;
4744 inline isl::val add(isl::val v2) const;
4745 inline isl::val add(long v2) const;
4746 inline isl::val ceil() const;
4747 inline int cmp_si(long i) const;
4748 inline long den_si() const;
4749 inline long get_den_si() const;
4750 inline isl::val div(isl::val v2) const;
4751 inline isl::val div(long v2) const;
4752 inline boolean eq(const isl::val &v2) const;
4753 inline boolean eq(long v2) const;
4754 inline isl::val floor() const;
4755 inline isl::val gcd(isl::val v2) const;
4756 inline isl::val gcd(long v2) const;
4757 inline boolean ge(const isl::val &v2) const;
4758 inline boolean ge(long v2) const;
4759 inline boolean gt(const isl::val &v2) const;
4760 inline boolean gt(long v2) const;
4761 static inline isl::val infty(isl::ctx ctx);
4762 static inline isl::val int_from_ui(isl::ctx ctx, unsigned long u);
4763 inline isl::val inv() const;
4764 inline boolean is_divisible_by(const isl::val &v2) const;
4765 inline boolean is_divisible_by(long v2) const;
4766 inline boolean is_infty() const;
4767 inline boolean is_int() const;
4768 inline boolean is_nan() const;
4769 inline boolean is_neg() const;
4770 inline boolean is_neginfty() const;
4771 inline boolean is_negone() const;
4772 inline boolean is_nonneg() const;
4773 inline boolean is_nonpos() const;
4774 inline boolean is_one() const;
4775 inline boolean is_pos() const;
4776 inline boolean is_rat() const;
4777 inline boolean is_zero() const;
4778 inline boolean le(const isl::val &v2) const;
4779 inline boolean le(long v2) const;
4780 inline boolean lt(const isl::val &v2) const;
4781 inline boolean lt(long v2) const;
4782 inline isl::val max(isl::val v2) const;
4783 inline isl::val max(long v2) const;
4784 inline isl::val min(isl::val v2) const;
4785 inline isl::val min(long v2) const;
4786 inline isl::val mod(isl::val v2) const;
4787 inline isl::val mod(long v2) const;
4788 inline isl::val mul(isl::val v2) const;
4789 inline isl::val mul(long v2) const;
4790 static inline isl::val nan(isl::ctx ctx);
4791 inline boolean ne(const isl::val &v2) const;
4792 inline boolean ne(long v2) const;
4793 inline isl::val neg() const;
4794 static inline isl::val neginfty(isl::ctx ctx);
4795 static inline isl::val negone(isl::ctx ctx);
4796 inline long num_si() const;
4797 inline long get_num_si() const;
4798 static inline isl::val one(isl::ctx ctx);
4799 inline isl::val pow2() const;
4800 inline int sgn() const;
4801 inline isl::val sub(isl::val v2) const;
4802 inline isl::val sub(long v2) const;
4803 inline isl::val_list to_list() const;
4804 inline isl::val trunc() const;
4805 static inline isl::val zero(isl::ctx ctx);
4806 };
4807
4808 // declarations for isl::val_list
4809 inline val_list manage(__isl_take isl_val_list *ptr);
4810 inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4811
4812 class val_list {
4813 friend inline val_list manage(__isl_take isl_val_list *ptr);
4814 friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4815
4816 protected:
4817 isl_val_list *ptr = nullptr;
4818
4819 inline explicit val_list(__isl_take isl_val_list *ptr);
4820
4821 public:
4822 inline /* implicit */ val_list();
4823 inline /* implicit */ val_list(const val_list &obj);
4824 inline explicit val_list(isl::ctx ctx, int n);
4825 inline explicit val_list(isl::val el);
4826 inline explicit val_list(isl::ctx ctx, const std::string &str);
4827 inline val_list &operator=(val_list obj);
4828 inline ~val_list();
4829 inline __isl_give isl_val_list *copy() const &;
4830 inline __isl_give isl_val_list *copy() && = delete;
4831 inline __isl_keep isl_val_list *get() const;
4832 inline __isl_give isl_val_list *release();
4833 inline bool is_null() const;
4834 inline isl::ctx ctx() const;
4835
4836 inline isl::val_list add(isl::val el) const;
4837 inline isl::val_list add(long el) const;
4838 inline isl::val at(int index) const;
4839 inline isl::val get_at(int index) const;
4840 inline isl::val_list clear() const;
4841 inline isl::val_list concat(isl::val_list list2) const;
4842 inline isl::val_list drop(unsigned int first, unsigned int n) const;
4843 inline stat foreach(const std::function<stat(isl::val)> &fn) const;
4844 inline isl::val_list insert(unsigned int pos, isl::val el) const;
4845 inline isl::val_list insert(unsigned int pos, long el) const;
4846 inline class size size() const;
4847 };
4848
4849 // implementations for isl::aff
manage(__isl_take isl_aff * ptr)4850 aff manage(__isl_take isl_aff *ptr) {
4851 return aff(ptr);
4852 }
manage_copy(__isl_keep isl_aff * ptr)4853 aff manage_copy(__isl_keep isl_aff *ptr) {
4854 ptr = isl_aff_copy(ptr);
4855 return aff(ptr);
4856 }
4857
aff()4858 aff::aff()
4859 : ptr(nullptr) {}
4860
aff(const aff & obj)4861 aff::aff(const aff &obj)
4862 : ptr(nullptr)
4863 {
4864 ptr = obj.copy();
4865 }
4866
aff(__isl_take isl_aff * ptr)4867 aff::aff(__isl_take isl_aff *ptr)
4868 : ptr(ptr) {}
4869
aff(isl::ctx ctx,const std::string & str)4870 aff::aff(isl::ctx ctx, const std::string &str)
4871 {
4872 auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
4873 ptr = res;
4874 }
4875
aff(isl::local_space ls,isl::val val)4876 aff::aff(isl::local_space ls, isl::val val)
4877 {
4878 auto res = isl_aff_val_on_domain(ls.release(), val.release());
4879 ptr = res;
4880 }
4881
aff(isl::local_space ls)4882 aff::aff(isl::local_space ls)
4883 {
4884 auto res = isl_aff_zero_on_domain(ls.release());
4885 ptr = res;
4886 }
4887
4888 aff &aff::operator=(aff obj) {
4889 std::swap(this->ptr, obj.ptr);
4890 return *this;
4891 }
4892
~aff()4893 aff::~aff() {
4894 if (ptr)
4895 isl_aff_free(ptr);
4896 }
4897
copy()4898 __isl_give isl_aff *aff::copy() const & {
4899 return isl_aff_copy(ptr);
4900 }
4901
get()4902 __isl_keep isl_aff *aff::get() const {
4903 return ptr;
4904 }
4905
release()4906 __isl_give isl_aff *aff::release() {
4907 isl_aff *tmp = ptr;
4908 ptr = nullptr;
4909 return tmp;
4910 }
4911
is_null()4912 bool aff::is_null() const {
4913 return ptr == nullptr;
4914 }
4915
ctx()4916 isl::ctx aff::ctx() const {
4917 return isl::ctx(isl_aff_get_ctx(ptr));
4918 }
4919
add(isl::aff aff2)4920 isl::aff aff::add(isl::aff aff2) const
4921 {
4922 auto res = isl_aff_add(copy(), aff2.release());
4923 return manage(res);
4924 }
4925
add(const isl::multi_aff & multi2)4926 isl::multi_aff aff::add(const isl::multi_aff &multi2) const
4927 {
4928 return isl::multi_aff(*this).add(multi2);
4929 }
4930
add(const isl::multi_pw_aff & multi2)4931 isl::multi_pw_aff aff::add(const isl::multi_pw_aff &multi2) const
4932 {
4933 return isl::pw_aff(*this).add(multi2);
4934 }
4935
add(const isl::multi_union_pw_aff & multi2)4936 isl::multi_union_pw_aff aff::add(const isl::multi_union_pw_aff &multi2) const
4937 {
4938 return isl::pw_aff(*this).add(multi2);
4939 }
4940
add(const isl::pw_aff & pwaff2)4941 isl::pw_aff aff::add(const isl::pw_aff &pwaff2) const
4942 {
4943 return isl::pw_aff(*this).add(pwaff2);
4944 }
4945
add(const isl::pw_multi_aff & pma2)4946 isl::pw_multi_aff aff::add(const isl::pw_multi_aff &pma2) const
4947 {
4948 return isl::pw_aff(*this).add(pma2);
4949 }
4950
add(const isl::union_pw_aff & upa2)4951 isl::union_pw_aff aff::add(const isl::union_pw_aff &upa2) const
4952 {
4953 return isl::pw_aff(*this).add(upa2);
4954 }
4955
add(const isl::union_pw_multi_aff & upma2)4956 isl::union_pw_multi_aff aff::add(const isl::union_pw_multi_aff &upma2) const
4957 {
4958 return isl::pw_aff(*this).add(upma2);
4959 }
4960
add_constant(isl::val v)4961 isl::aff aff::add_constant(isl::val v) const
4962 {
4963 auto res = isl_aff_add_constant_val(copy(), v.release());
4964 return manage(res);
4965 }
4966
add_constant(long v)4967 isl::aff aff::add_constant(long v) const
4968 {
4969 return this->add_constant(isl::val(ctx(), v));
4970 }
4971
add_constant(const isl::multi_val & mv)4972 isl::multi_aff aff::add_constant(const isl::multi_val &mv) const
4973 {
4974 return isl::multi_aff(*this).add_constant(mv);
4975 }
4976
add_constant_si(int v)4977 isl::aff aff::add_constant_si(int v) const
4978 {
4979 auto res = isl_aff_add_constant_si(copy(), v);
4980 return manage(res);
4981 }
4982
add_dims(isl::dim type,unsigned int n)4983 isl::pw_aff aff::add_dims(isl::dim type, unsigned int n) const
4984 {
4985 return isl::pw_aff(*this).add_dims(type, n);
4986 }
4987
add_pw_multi_aff(const isl::pw_multi_aff & pma)4988 isl::union_pw_multi_aff aff::add_pw_multi_aff(const isl::pw_multi_aff &pma) const
4989 {
4990 return isl::pw_aff(*this).add_pw_multi_aff(pma);
4991 }
4992
apply(const isl::union_pw_multi_aff & upma2)4993 isl::union_pw_multi_aff aff::apply(const isl::union_pw_multi_aff &upma2) const
4994 {
4995 return isl::pw_aff(*this).apply(upma2);
4996 }
4997
as_aff()4998 isl::aff aff::as_aff() const
4999 {
5000 return isl::pw_aff(*this).as_aff();
5001 }
5002
as_map()5003 isl::map aff::as_map() const
5004 {
5005 return isl::pw_aff(*this).as_map();
5006 }
5007
as_multi_aff()5008 isl::multi_aff aff::as_multi_aff() const
5009 {
5010 return isl::pw_aff(*this).as_multi_aff();
5011 }
5012
as_multi_union_pw_aff()5013 isl::multi_union_pw_aff aff::as_multi_union_pw_aff() const
5014 {
5015 return isl::pw_aff(*this).as_multi_union_pw_aff();
5016 }
5017
as_pw_multi_aff()5018 isl::pw_multi_aff aff::as_pw_multi_aff() const
5019 {
5020 return isl::pw_aff(*this).as_pw_multi_aff();
5021 }
5022
as_set()5023 isl::set aff::as_set() const
5024 {
5025 return isl::multi_aff(*this).as_set();
5026 }
5027
as_union_map()5028 isl::union_map aff::as_union_map() const
5029 {
5030 return isl::pw_aff(*this).as_union_map();
5031 }
5032
at(int pos)5033 isl::aff aff::at(int pos) const
5034 {
5035 return isl::multi_aff(*this).at(pos);
5036 }
5037
bind(isl::id id)5038 isl::basic_set aff::bind(isl::id id) const
5039 {
5040 auto res = isl_aff_bind_id(copy(), id.release());
5041 return manage(res);
5042 }
5043
bind(const std::string & id)5044 isl::basic_set aff::bind(const std::string &id) const
5045 {
5046 return this->bind(isl::id(ctx(), id));
5047 }
5048
bind(const isl::multi_id & tuple)5049 isl::basic_set aff::bind(const isl::multi_id &tuple) const
5050 {
5051 return isl::multi_aff(*this).bind(tuple);
5052 }
5053
bind_domain(const isl::multi_id & tuple)5054 isl::pw_aff aff::bind_domain(const isl::multi_id &tuple) const
5055 {
5056 return isl::pw_aff(*this).bind_domain(tuple);
5057 }
5058
bind_domain_wrapped_domain(const isl::multi_id & tuple)5059 isl::pw_aff aff::bind_domain_wrapped_domain(const isl::multi_id &tuple) const
5060 {
5061 return isl::pw_aff(*this).bind_domain_wrapped_domain(tuple);
5062 }
5063
ceil()5064 isl::aff aff::ceil() const
5065 {
5066 auto res = isl_aff_ceil(copy());
5067 return manage(res);
5068 }
5069
coalesce()5070 isl::pw_aff aff::coalesce() const
5071 {
5072 return isl::pw_aff(*this).coalesce();
5073 }
5074
cond(const isl::pw_aff & pwaff_true,const isl::pw_aff & pwaff_false)5075 isl::pw_aff aff::cond(const isl::pw_aff &pwaff_true, const isl::pw_aff &pwaff_false) const
5076 {
5077 return isl::pw_aff(*this).cond(pwaff_true, pwaff_false);
5078 }
5079
constant_multi_val()5080 isl::multi_val aff::constant_multi_val() const
5081 {
5082 return isl::multi_aff(*this).constant_multi_val();
5083 }
5084
constant_val()5085 isl::val aff::constant_val() const
5086 {
5087 auto res = isl_aff_get_constant_val(get());
5088 return manage(res);
5089 }
5090
get_constant_val()5091 isl::val aff::get_constant_val() const
5092 {
5093 return constant_val();
5094 }
5095
denominator_val()5096 isl::val aff::denominator_val() const
5097 {
5098 auto res = isl_aff_get_denominator_val(get());
5099 return manage(res);
5100 }
5101
get_denominator_val()5102 isl::val aff::get_denominator_val() const
5103 {
5104 return denominator_val();
5105 }
5106
dim(isl::dim type)5107 class size aff::dim(isl::dim type) const
5108 {
5109 return isl::multi_aff(*this).dim(type);
5110 }
5111
dim_id(isl::dim type,unsigned int pos)5112 isl::id aff::dim_id(isl::dim type, unsigned int pos) const
5113 {
5114 return isl::pw_aff(*this).dim_id(type, pos);
5115 }
5116
div(isl::aff aff2)5117 isl::aff aff::div(isl::aff aff2) const
5118 {
5119 auto res = isl_aff_div(copy(), aff2.release());
5120 return manage(res);
5121 }
5122
div(const isl::pw_aff & pa2)5123 isl::pw_aff aff::div(const isl::pw_aff &pa2) const
5124 {
5125 return isl::pw_aff(*this).div(pa2);
5126 }
5127
domain()5128 isl::set aff::domain() const
5129 {
5130 return isl::pw_aff(*this).domain();
5131 }
5132
domain_space()5133 isl::space aff::domain_space() const
5134 {
5135 return isl::pw_aff(*this).domain_space();
5136 }
5137
drop_dims(isl::dim type,unsigned int first,unsigned int n)5138 isl::pw_multi_aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
5139 {
5140 return isl::pw_aff(*this).drop_dims(type, first, n);
5141 }
5142
eq_set(isl::aff aff2)5143 isl::set aff::eq_set(isl::aff aff2) const
5144 {
5145 auto res = isl_aff_eq_set(copy(), aff2.release());
5146 return manage(res);
5147 }
5148
eq_set(const isl::pw_aff & pwaff2)5149 isl::set aff::eq_set(const isl::pw_aff &pwaff2) const
5150 {
5151 return isl::pw_aff(*this).eq_set(pwaff2);
5152 }
5153
eval(isl::point pnt)5154 isl::val aff::eval(isl::point pnt) const
5155 {
5156 auto res = isl_aff_eval(copy(), pnt.release());
5157 return manage(res);
5158 }
5159
extract_pw_multi_aff(const isl::space & space)5160 isl::pw_multi_aff aff::extract_pw_multi_aff(const isl::space &space) const
5161 {
5162 return isl::pw_aff(*this).extract_pw_multi_aff(space);
5163 }
5164
flat_range_product(const isl::multi_aff & multi2)5165 isl::multi_aff aff::flat_range_product(const isl::multi_aff &multi2) const
5166 {
5167 return isl::multi_aff(*this).flat_range_product(multi2);
5168 }
5169
flat_range_product(const isl::multi_pw_aff & multi2)5170 isl::multi_pw_aff aff::flat_range_product(const isl::multi_pw_aff &multi2) const
5171 {
5172 return isl::pw_aff(*this).flat_range_product(multi2);
5173 }
5174
flat_range_product(const isl::multi_union_pw_aff & multi2)5175 isl::multi_union_pw_aff aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
5176 {
5177 return isl::pw_aff(*this).flat_range_product(multi2);
5178 }
5179
flat_range_product(const isl::pw_multi_aff & pma2)5180 isl::pw_multi_aff aff::flat_range_product(const isl::pw_multi_aff &pma2) const
5181 {
5182 return isl::pw_aff(*this).flat_range_product(pma2);
5183 }
5184
flat_range_product(const isl::union_pw_multi_aff & upma2)5185 isl::union_pw_multi_aff aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
5186 {
5187 return isl::pw_aff(*this).flat_range_product(upma2);
5188 }
5189
floor()5190 isl::aff aff::floor() const
5191 {
5192 auto res = isl_aff_floor(copy());
5193 return manage(res);
5194 }
5195
foreach_piece(const std::function<stat (isl::set,isl::aff)> & fn)5196 stat aff::foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const
5197 {
5198 return isl::pw_aff(*this).foreach_piece(fn);
5199 }
5200
foreach_piece(const std::function<stat (isl::set,isl::multi_aff)> & fn)5201 stat aff::foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const
5202 {
5203 return isl::pw_aff(*this).foreach_piece(fn);
5204 }
5205
foreach_pw_aff(const std::function<stat (isl::pw_aff)> & fn)5206 stat aff::foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const
5207 {
5208 return isl::pw_aff(*this).foreach_pw_aff(fn);
5209 }
5210
ge_set(isl::aff aff2)5211 isl::set aff::ge_set(isl::aff aff2) const
5212 {
5213 auto res = isl_aff_ge_set(copy(), aff2.release());
5214 return manage(res);
5215 }
5216
ge_set(const isl::pw_aff & pwaff2)5217 isl::set aff::ge_set(const isl::pw_aff &pwaff2) const
5218 {
5219 return isl::pw_aff(*this).ge_set(pwaff2);
5220 }
5221
gist(isl::set context)5222 isl::aff aff::gist(isl::set context) const
5223 {
5224 auto res = isl_aff_gist(copy(), context.release());
5225 return manage(res);
5226 }
5227
gist(const isl::union_set & context)5228 isl::union_pw_aff aff::gist(const isl::union_set &context) const
5229 {
5230 return isl::pw_aff(*this).gist(context);
5231 }
5232
gist(const isl::basic_set & context)5233 isl::aff aff::gist(const isl::basic_set &context) const
5234 {
5235 return this->gist(isl::set(context));
5236 }
5237
gist(const isl::point & context)5238 isl::aff aff::gist(const isl::point &context) const
5239 {
5240 return this->gist(isl::set(context));
5241 }
5242
gt_set(isl::aff aff2)5243 isl::set aff::gt_set(isl::aff aff2) const
5244 {
5245 auto res = isl_aff_gt_set(copy(), aff2.release());
5246 return manage(res);
5247 }
5248
gt_set(const isl::pw_aff & pwaff2)5249 isl::set aff::gt_set(const isl::pw_aff &pwaff2) const
5250 {
5251 return isl::pw_aff(*this).gt_set(pwaff2);
5252 }
5253
has_range_tuple_id()5254 boolean aff::has_range_tuple_id() const
5255 {
5256 return isl::multi_aff(*this).has_range_tuple_id();
5257 }
5258
identity()5259 isl::multi_aff aff::identity() const
5260 {
5261 return isl::multi_aff(*this).identity();
5262 }
5263
insert_domain(const isl::space & domain)5264 isl::pw_aff aff::insert_domain(const isl::space &domain) const
5265 {
5266 return isl::pw_aff(*this).insert_domain(domain);
5267 }
5268
intersect_domain(const isl::set & set)5269 isl::pw_aff aff::intersect_domain(const isl::set &set) const
5270 {
5271 return isl::pw_aff(*this).intersect_domain(set);
5272 }
5273
intersect_domain(const isl::space & space)5274 isl::union_pw_aff aff::intersect_domain(const isl::space &space) const
5275 {
5276 return isl::pw_aff(*this).intersect_domain(space);
5277 }
5278
intersect_domain(const isl::union_set & uset)5279 isl::union_pw_aff aff::intersect_domain(const isl::union_set &uset) const
5280 {
5281 return isl::pw_aff(*this).intersect_domain(uset);
5282 }
5283
intersect_domain_wrapped_domain(const isl::union_set & uset)5284 isl::union_pw_aff aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
5285 {
5286 return isl::pw_aff(*this).intersect_domain_wrapped_domain(uset);
5287 }
5288
intersect_domain_wrapped_range(const isl::union_set & uset)5289 isl::union_pw_aff aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
5290 {
5291 return isl::pw_aff(*this).intersect_domain_wrapped_range(uset);
5292 }
5293
intersect_params(const isl::set & set)5294 isl::pw_aff aff::intersect_params(const isl::set &set) const
5295 {
5296 return isl::pw_aff(*this).intersect_params(set);
5297 }
5298
involves_locals()5299 boolean aff::involves_locals() const
5300 {
5301 return isl::multi_aff(*this).involves_locals();
5302 }
5303
involves_nan()5304 boolean aff::involves_nan() const
5305 {
5306 return isl::multi_aff(*this).involves_nan();
5307 }
5308
involves_param(const isl::id & id)5309 boolean aff::involves_param(const isl::id &id) const
5310 {
5311 return isl::pw_aff(*this).involves_param(id);
5312 }
5313
involves_param(const std::string & id)5314 boolean aff::involves_param(const std::string &id) const
5315 {
5316 return this->involves_param(isl::id(ctx(), id));
5317 }
5318
involves_param(const isl::id_list & list)5319 boolean aff::involves_param(const isl::id_list &list) const
5320 {
5321 return isl::pw_aff(*this).involves_param(list);
5322 }
5323
is_cst()5324 boolean aff::is_cst() const
5325 {
5326 auto res = isl_aff_is_cst(get());
5327 return manage(res);
5328 }
5329
is_equal(const isl::pw_aff & pa2)5330 boolean aff::is_equal(const isl::pw_aff &pa2) const
5331 {
5332 return isl::pw_aff(*this).is_equal(pa2);
5333 }
5334
isa_aff()5335 boolean aff::isa_aff() const
5336 {
5337 return isl::pw_aff(*this).isa_aff();
5338 }
5339
isa_multi_aff()5340 boolean aff::isa_multi_aff() const
5341 {
5342 return isl::pw_aff(*this).isa_multi_aff();
5343 }
5344
isa_pw_multi_aff()5345 boolean aff::isa_pw_multi_aff() const
5346 {
5347 return isl::pw_aff(*this).isa_pw_multi_aff();
5348 }
5349
le_set(isl::aff aff2)5350 isl::set aff::le_set(isl::aff aff2) const
5351 {
5352 auto res = isl_aff_le_set(copy(), aff2.release());
5353 return manage(res);
5354 }
5355
le_set(const isl::pw_aff & pwaff2)5356 isl::set aff::le_set(const isl::pw_aff &pwaff2) const
5357 {
5358 return isl::pw_aff(*this).le_set(pwaff2);
5359 }
5360
list()5361 isl::aff_list aff::list() const
5362 {
5363 return isl::multi_aff(*this).list();
5364 }
5365
lt_set(isl::aff aff2)5366 isl::set aff::lt_set(isl::aff aff2) const
5367 {
5368 auto res = isl_aff_lt_set(copy(), aff2.release());
5369 return manage(res);
5370 }
5371
lt_set(const isl::pw_aff & pwaff2)5372 isl::set aff::lt_set(const isl::pw_aff &pwaff2) const
5373 {
5374 return isl::pw_aff(*this).lt_set(pwaff2);
5375 }
5376
max(const isl::multi_pw_aff & multi2)5377 isl::multi_pw_aff aff::max(const isl::multi_pw_aff &multi2) const
5378 {
5379 return isl::pw_aff(*this).max(multi2);
5380 }
5381
max(const isl::pw_aff & pwaff2)5382 isl::pw_aff aff::max(const isl::pw_aff &pwaff2) const
5383 {
5384 return isl::pw_aff(*this).max(pwaff2);
5385 }
5386
max_multi_val()5387 isl::multi_val aff::max_multi_val() const
5388 {
5389 return isl::pw_aff(*this).max_multi_val();
5390 }
5391
min(const isl::multi_pw_aff & multi2)5392 isl::multi_pw_aff aff::min(const isl::multi_pw_aff &multi2) const
5393 {
5394 return isl::pw_aff(*this).min(multi2);
5395 }
5396
min(const isl::pw_aff & pwaff2)5397 isl::pw_aff aff::min(const isl::pw_aff &pwaff2) const
5398 {
5399 return isl::pw_aff(*this).min(pwaff2);
5400 }
5401
min_multi_val()5402 isl::multi_val aff::min_multi_val() const
5403 {
5404 return isl::pw_aff(*this).min_multi_val();
5405 }
5406
mod(isl::val mod)5407 isl::aff aff::mod(isl::val mod) const
5408 {
5409 auto res = isl_aff_mod_val(copy(), mod.release());
5410 return manage(res);
5411 }
5412
mod(long mod)5413 isl::aff aff::mod(long mod) const
5414 {
5415 return this->mod(isl::val(ctx(), mod));
5416 }
5417
mul(isl::aff aff2)5418 isl::aff aff::mul(isl::aff aff2) const
5419 {
5420 auto res = isl_aff_mul(copy(), aff2.release());
5421 return manage(res);
5422 }
5423
mul(const isl::pw_aff & pwaff2)5424 isl::pw_aff aff::mul(const isl::pw_aff &pwaff2) const
5425 {
5426 return isl::pw_aff(*this).mul(pwaff2);
5427 }
5428
n_piece()5429 class size aff::n_piece() const
5430 {
5431 return isl::pw_aff(*this).n_piece();
5432 }
5433
ne_set(isl::aff aff2)5434 isl::set aff::ne_set(isl::aff aff2) const
5435 {
5436 auto res = isl_aff_ne_set(copy(), aff2.release());
5437 return manage(res);
5438 }
5439
ne_set(const isl::pw_aff & pwaff2)5440 isl::set aff::ne_set(const isl::pw_aff &pwaff2) const
5441 {
5442 return isl::pw_aff(*this).ne_set(pwaff2);
5443 }
5444
neg()5445 isl::aff aff::neg() const
5446 {
5447 auto res = isl_aff_neg(copy());
5448 return manage(res);
5449 }
5450
plain_is_empty()5451 boolean aff::plain_is_empty() const
5452 {
5453 return isl::pw_aff(*this).plain_is_empty();
5454 }
5455
plain_is_equal(const isl::multi_aff & multi2)5456 boolean aff::plain_is_equal(const isl::multi_aff &multi2) const
5457 {
5458 return isl::multi_aff(*this).plain_is_equal(multi2);
5459 }
5460
plain_is_equal(const isl::multi_pw_aff & multi2)5461 boolean aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
5462 {
5463 return isl::pw_aff(*this).plain_is_equal(multi2);
5464 }
5465
plain_is_equal(const isl::multi_union_pw_aff & multi2)5466 boolean aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
5467 {
5468 return isl::pw_aff(*this).plain_is_equal(multi2);
5469 }
5470
preimage_domain_wrapped_domain(const isl::pw_multi_aff & pma2)5471 isl::pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
5472 {
5473 return isl::pw_aff(*this).preimage_domain_wrapped_domain(pma2);
5474 }
5475
preimage_domain_wrapped_domain(const isl::union_pw_multi_aff & upma2)5476 isl::union_pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
5477 {
5478 return isl::pw_aff(*this).preimage_domain_wrapped_domain(upma2);
5479 }
5480
product(const isl::multi_aff & multi2)5481 isl::multi_aff aff::product(const isl::multi_aff &multi2) const
5482 {
5483 return isl::multi_aff(*this).product(multi2);
5484 }
5485
product(const isl::multi_pw_aff & multi2)5486 isl::multi_pw_aff aff::product(const isl::multi_pw_aff &multi2) const
5487 {
5488 return isl::pw_aff(*this).product(multi2);
5489 }
5490
product(const isl::pw_multi_aff & pma2)5491 isl::pw_multi_aff aff::product(const isl::pw_multi_aff &pma2) const
5492 {
5493 return isl::pw_aff(*this).product(pma2);
5494 }
5495
pullback(isl::multi_aff ma)5496 isl::aff aff::pullback(isl::multi_aff ma) const
5497 {
5498 auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
5499 return manage(res);
5500 }
5501
pullback(const isl::multi_pw_aff & mpa)5502 isl::pw_aff aff::pullback(const isl::multi_pw_aff &mpa) const
5503 {
5504 return isl::pw_aff(*this).pullback(mpa);
5505 }
5506
pullback(const isl::pw_multi_aff & pma)5507 isl::pw_aff aff::pullback(const isl::pw_multi_aff &pma) const
5508 {
5509 return isl::pw_aff(*this).pullback(pma);
5510 }
5511
pullback(const isl::union_pw_multi_aff & upma)5512 isl::union_pw_aff aff::pullback(const isl::union_pw_multi_aff &upma) const
5513 {
5514 return isl::pw_aff(*this).pullback(upma);
5515 }
5516
pullback(const isl::aff & ma)5517 isl::aff aff::pullback(const isl::aff &ma) const
5518 {
5519 return this->pullback(isl::multi_aff(ma));
5520 }
5521
pw_multi_aff_list()5522 isl::pw_multi_aff_list aff::pw_multi_aff_list() const
5523 {
5524 return isl::pw_aff(*this).pw_multi_aff_list();
5525 }
5526
range_factor_domain()5527 isl::pw_multi_aff aff::range_factor_domain() const
5528 {
5529 return isl::pw_aff(*this).range_factor_domain();
5530 }
5531
range_factor_range()5532 isl::pw_multi_aff aff::range_factor_range() const
5533 {
5534 return isl::pw_aff(*this).range_factor_range();
5535 }
5536
range_product(const isl::multi_aff & multi2)5537 isl::multi_aff aff::range_product(const isl::multi_aff &multi2) const
5538 {
5539 return isl::multi_aff(*this).range_product(multi2);
5540 }
5541
range_product(const isl::multi_pw_aff & multi2)5542 isl::multi_pw_aff aff::range_product(const isl::multi_pw_aff &multi2) const
5543 {
5544 return isl::pw_aff(*this).range_product(multi2);
5545 }
5546
range_product(const isl::multi_union_pw_aff & multi2)5547 isl::multi_union_pw_aff aff::range_product(const isl::multi_union_pw_aff &multi2) const
5548 {
5549 return isl::pw_aff(*this).range_product(multi2);
5550 }
5551
range_product(const isl::pw_multi_aff & pma2)5552 isl::pw_multi_aff aff::range_product(const isl::pw_multi_aff &pma2) const
5553 {
5554 return isl::pw_aff(*this).range_product(pma2);
5555 }
5556
range_product(const isl::union_pw_multi_aff & upma2)5557 isl::union_pw_multi_aff aff::range_product(const isl::union_pw_multi_aff &upma2) const
5558 {
5559 return isl::pw_aff(*this).range_product(upma2);
5560 }
5561
range_tuple_id()5562 isl::id aff::range_tuple_id() const
5563 {
5564 return isl::multi_aff(*this).range_tuple_id();
5565 }
5566
reset_range_tuple_id()5567 isl::multi_aff aff::reset_range_tuple_id() const
5568 {
5569 return isl::multi_aff(*this).reset_range_tuple_id();
5570 }
5571
reset_tuple_id(isl::dim type)5572 isl::multi_aff aff::reset_tuple_id(isl::dim type) const
5573 {
5574 return isl::multi_aff(*this).reset_tuple_id(type);
5575 }
5576
scale(isl::val v)5577 isl::aff aff::scale(isl::val v) const
5578 {
5579 auto res = isl_aff_scale_val(copy(), v.release());
5580 return manage(res);
5581 }
5582
scale(long v)5583 isl::aff aff::scale(long v) const
5584 {
5585 return this->scale(isl::val(ctx(), v));
5586 }
5587
scale(const isl::multi_val & mv)5588 isl::multi_aff aff::scale(const isl::multi_val &mv) const
5589 {
5590 return isl::multi_aff(*this).scale(mv);
5591 }
5592
scale_down(isl::val v)5593 isl::aff aff::scale_down(isl::val v) const
5594 {
5595 auto res = isl_aff_scale_down_val(copy(), v.release());
5596 return manage(res);
5597 }
5598
scale_down(long v)5599 isl::aff aff::scale_down(long v) const
5600 {
5601 return this->scale_down(isl::val(ctx(), v));
5602 }
5603
scale_down(const isl::multi_val & mv)5604 isl::multi_aff aff::scale_down(const isl::multi_val &mv) const
5605 {
5606 return isl::multi_aff(*this).scale_down(mv);
5607 }
5608
set_aff(int pos,const isl::aff & el)5609 isl::multi_aff aff::set_aff(int pos, const isl::aff &el) const
5610 {
5611 return isl::multi_aff(*this).set_aff(pos, el);
5612 }
5613
set_at(int pos,const isl::aff & el)5614 isl::multi_aff aff::set_at(int pos, const isl::aff &el) const
5615 {
5616 return isl::multi_aff(*this).set_at(pos, el);
5617 }
5618
set_at(int pos,const isl::pw_aff & el)5619 isl::multi_pw_aff aff::set_at(int pos, const isl::pw_aff &el) const
5620 {
5621 return isl::pw_aff(*this).set_at(pos, el);
5622 }
5623
set_at(int pos,const isl::union_pw_aff & el)5624 isl::multi_union_pw_aff aff::set_at(int pos, const isl::union_pw_aff &el) const
5625 {
5626 return isl::pw_aff(*this).set_at(pos, el);
5627 }
5628
set_constant_si(int v)5629 isl::aff aff::set_constant_si(int v) const
5630 {
5631 auto res = isl_aff_set_constant_si(copy(), v);
5632 return manage(res);
5633 }
5634
set_pw_aff(int pos,const isl::pw_aff & el)5635 isl::multi_pw_aff aff::set_pw_aff(int pos, const isl::pw_aff &el) const
5636 {
5637 return isl::pw_aff(*this).set_pw_aff(pos, el);
5638 }
5639
set_pw_aff(unsigned int pos,const isl::pw_aff & pa)5640 isl::pw_multi_aff aff::set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const
5641 {
5642 return isl::pw_aff(*this).set_pw_aff(pos, pa);
5643 }
5644
set_range_tuple(const isl::id & id)5645 isl::multi_aff aff::set_range_tuple(const isl::id &id) const
5646 {
5647 return isl::multi_aff(*this).set_range_tuple(id);
5648 }
5649
set_range_tuple(const std::string & id)5650 isl::multi_aff aff::set_range_tuple(const std::string &id) const
5651 {
5652 return this->set_range_tuple(isl::id(ctx(), id));
5653 }
5654
set_tuple_id(isl::dim type,const isl::id & id)5655 isl::pw_aff aff::set_tuple_id(isl::dim type, const isl::id &id) const
5656 {
5657 return isl::pw_aff(*this).set_tuple_id(type, id);
5658 }
5659
set_tuple_id(isl::dim type,const std::string & id)5660 isl::pw_aff aff::set_tuple_id(isl::dim type, const std::string &id) const
5661 {
5662 return this->set_tuple_id(type, isl::id(ctx(), id));
5663 }
5664
set_union_pw_aff(int pos,const isl::union_pw_aff & el)5665 isl::multi_union_pw_aff aff::set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
5666 {
5667 return isl::pw_aff(*this).set_union_pw_aff(pos, el);
5668 }
5669
size()5670 class size aff::size() const
5671 {
5672 return isl::multi_aff(*this).size();
5673 }
5674
space()5675 isl::space aff::space() const
5676 {
5677 return isl::pw_aff(*this).space();
5678 }
5679
sub(isl::aff aff2)5680 isl::aff aff::sub(isl::aff aff2) const
5681 {
5682 auto res = isl_aff_sub(copy(), aff2.release());
5683 return manage(res);
5684 }
5685
sub(const isl::multi_aff & multi2)5686 isl::multi_aff aff::sub(const isl::multi_aff &multi2) const
5687 {
5688 return isl::multi_aff(*this).sub(multi2);
5689 }
5690
sub(const isl::multi_pw_aff & multi2)5691 isl::multi_pw_aff aff::sub(const isl::multi_pw_aff &multi2) const
5692 {
5693 return isl::pw_aff(*this).sub(multi2);
5694 }
5695
sub(const isl::multi_union_pw_aff & multi2)5696 isl::multi_union_pw_aff aff::sub(const isl::multi_union_pw_aff &multi2) const
5697 {
5698 return isl::pw_aff(*this).sub(multi2);
5699 }
5700
sub(const isl::pw_aff & pwaff2)5701 isl::pw_aff aff::sub(const isl::pw_aff &pwaff2) const
5702 {
5703 return isl::pw_aff(*this).sub(pwaff2);
5704 }
5705
sub(const isl::pw_multi_aff & pma2)5706 isl::pw_multi_aff aff::sub(const isl::pw_multi_aff &pma2) const
5707 {
5708 return isl::pw_aff(*this).sub(pma2);
5709 }
5710
sub(const isl::union_pw_aff & upa2)5711 isl::union_pw_aff aff::sub(const isl::union_pw_aff &upa2) const
5712 {
5713 return isl::pw_aff(*this).sub(upa2);
5714 }
5715
sub(const isl::union_pw_multi_aff & upma2)5716 isl::union_pw_multi_aff aff::sub(const isl::union_pw_multi_aff &upma2) const
5717 {
5718 return isl::pw_aff(*this).sub(upma2);
5719 }
5720
subtract_domain(const isl::set & set)5721 isl::pw_aff aff::subtract_domain(const isl::set &set) const
5722 {
5723 return isl::pw_aff(*this).subtract_domain(set);
5724 }
5725
subtract_domain(const isl::space & space)5726 isl::union_pw_aff aff::subtract_domain(const isl::space &space) const
5727 {
5728 return isl::pw_aff(*this).subtract_domain(space);
5729 }
5730
subtract_domain(const isl::union_set & uset)5731 isl::union_pw_aff aff::subtract_domain(const isl::union_set &uset) const
5732 {
5733 return isl::pw_aff(*this).subtract_domain(uset);
5734 }
5735
tdiv_q(const isl::pw_aff & pa2)5736 isl::pw_aff aff::tdiv_q(const isl::pw_aff &pa2) const
5737 {
5738 return isl::pw_aff(*this).tdiv_q(pa2);
5739 }
5740
tdiv_r(const isl::pw_aff & pa2)5741 isl::pw_aff aff::tdiv_r(const isl::pw_aff &pa2) const
5742 {
5743 return isl::pw_aff(*this).tdiv_r(pa2);
5744 }
5745
to_list()5746 isl::aff_list aff::to_list() const
5747 {
5748 auto res = isl_aff_to_list(copy());
5749 return manage(res);
5750 }
5751
to_multi_pw_aff()5752 isl::multi_pw_aff aff::to_multi_pw_aff() const
5753 {
5754 return isl::multi_aff(*this).to_multi_pw_aff();
5755 }
5756
to_multi_union_pw_aff()5757 isl::multi_union_pw_aff aff::to_multi_union_pw_aff() const
5758 {
5759 return isl::multi_aff(*this).to_multi_union_pw_aff();
5760 }
5761
to_pw_multi_aff()5762 isl::pw_multi_aff aff::to_pw_multi_aff() const
5763 {
5764 return isl::multi_aff(*this).to_pw_multi_aff();
5765 }
5766
to_union_pw_aff()5767 isl::union_pw_aff aff::to_union_pw_aff() const
5768 {
5769 return isl::pw_aff(*this).to_union_pw_aff();
5770 }
5771
to_union_pw_multi_aff()5772 isl::union_pw_multi_aff aff::to_union_pw_multi_aff() const
5773 {
5774 return isl::pw_aff(*this).to_union_pw_multi_aff();
5775 }
5776
tuple_id(isl::dim type)5777 isl::id aff::tuple_id(isl::dim type) const
5778 {
5779 return isl::pw_aff(*this).tuple_id(type);
5780 }
5781
unbind_params_insert_domain(isl::multi_id domain)5782 isl::aff aff::unbind_params_insert_domain(isl::multi_id domain) const
5783 {
5784 auto res = isl_aff_unbind_params_insert_domain(copy(), domain.release());
5785 return manage(res);
5786 }
5787
union_add(const isl::multi_pw_aff & mpa2)5788 isl::multi_pw_aff aff::union_add(const isl::multi_pw_aff &mpa2) const
5789 {
5790 return isl::pw_aff(*this).union_add(mpa2);
5791 }
5792
union_add(const isl::multi_union_pw_aff & mupa2)5793 isl::multi_union_pw_aff aff::union_add(const isl::multi_union_pw_aff &mupa2) const
5794 {
5795 return isl::pw_aff(*this).union_add(mupa2);
5796 }
5797
union_add(const isl::pw_aff & pwaff2)5798 isl::pw_aff aff::union_add(const isl::pw_aff &pwaff2) const
5799 {
5800 return isl::pw_aff(*this).union_add(pwaff2);
5801 }
5802
union_add(const isl::pw_multi_aff & pma2)5803 isl::pw_multi_aff aff::union_add(const isl::pw_multi_aff &pma2) const
5804 {
5805 return isl::pw_aff(*this).union_add(pma2);
5806 }
5807
union_add(const isl::union_pw_aff & upa2)5808 isl::union_pw_aff aff::union_add(const isl::union_pw_aff &upa2) const
5809 {
5810 return isl::pw_aff(*this).union_add(upa2);
5811 }
5812
union_add(const isl::union_pw_multi_aff & upma2)5813 isl::union_pw_multi_aff aff::union_add(const isl::union_pw_multi_aff &upma2) const
5814 {
5815 return isl::pw_aff(*this).union_add(upma2);
5816 }
5817
var_on_domain(isl::local_space ls,isl::dim type,unsigned int pos)5818 isl::aff aff::var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos)
5819 {
5820 auto res = isl_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
5821 return manage(res);
5822 }
5823
zero_on_domain(isl::space space)5824 isl::aff aff::zero_on_domain(isl::space space)
5825 {
5826 auto res = isl_aff_zero_on_domain_space(space.release());
5827 return manage(res);
5828 }
5829
5830 inline std::ostream &operator<<(std::ostream &os, const aff &obj)
5831 {
5832 char *str = isl_aff_to_str(obj.get());
5833 if (!str) {
5834 os.setstate(std::ios_base::badbit);
5835 return os;
5836 }
5837 os << str;
5838 free(str);
5839 return os;
5840 }
5841
5842 // implementations for isl::aff_list
manage(__isl_take isl_aff_list * ptr)5843 aff_list manage(__isl_take isl_aff_list *ptr) {
5844 return aff_list(ptr);
5845 }
manage_copy(__isl_keep isl_aff_list * ptr)5846 aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
5847 ptr = isl_aff_list_copy(ptr);
5848 return aff_list(ptr);
5849 }
5850
aff_list()5851 aff_list::aff_list()
5852 : ptr(nullptr) {}
5853
aff_list(const aff_list & obj)5854 aff_list::aff_list(const aff_list &obj)
5855 : ptr(nullptr)
5856 {
5857 ptr = obj.copy();
5858 }
5859
aff_list(__isl_take isl_aff_list * ptr)5860 aff_list::aff_list(__isl_take isl_aff_list *ptr)
5861 : ptr(ptr) {}
5862
aff_list(isl::ctx ctx,int n)5863 aff_list::aff_list(isl::ctx ctx, int n)
5864 {
5865 auto res = isl_aff_list_alloc(ctx.release(), n);
5866 ptr = res;
5867 }
5868
aff_list(isl::aff el)5869 aff_list::aff_list(isl::aff el)
5870 {
5871 auto res = isl_aff_list_from_aff(el.release());
5872 ptr = res;
5873 }
5874
aff_list(isl::ctx ctx,const std::string & str)5875 aff_list::aff_list(isl::ctx ctx, const std::string &str)
5876 {
5877 auto res = isl_aff_list_read_from_str(ctx.release(), str.c_str());
5878 ptr = res;
5879 }
5880
5881 aff_list &aff_list::operator=(aff_list obj) {
5882 std::swap(this->ptr, obj.ptr);
5883 return *this;
5884 }
5885
~aff_list()5886 aff_list::~aff_list() {
5887 if (ptr)
5888 isl_aff_list_free(ptr);
5889 }
5890
copy()5891 __isl_give isl_aff_list *aff_list::copy() const & {
5892 return isl_aff_list_copy(ptr);
5893 }
5894
get()5895 __isl_keep isl_aff_list *aff_list::get() const {
5896 return ptr;
5897 }
5898
release()5899 __isl_give isl_aff_list *aff_list::release() {
5900 isl_aff_list *tmp = ptr;
5901 ptr = nullptr;
5902 return tmp;
5903 }
5904
is_null()5905 bool aff_list::is_null() const {
5906 return ptr == nullptr;
5907 }
5908
ctx()5909 isl::ctx aff_list::ctx() const {
5910 return isl::ctx(isl_aff_list_get_ctx(ptr));
5911 }
5912
add(isl::aff el)5913 isl::aff_list aff_list::add(isl::aff el) const
5914 {
5915 auto res = isl_aff_list_add(copy(), el.release());
5916 return manage(res);
5917 }
5918
at(int index)5919 isl::aff aff_list::at(int index) const
5920 {
5921 auto res = isl_aff_list_get_at(get(), index);
5922 return manage(res);
5923 }
5924
get_at(int index)5925 isl::aff aff_list::get_at(int index) const
5926 {
5927 return at(index);
5928 }
5929
clear()5930 isl::aff_list aff_list::clear() const
5931 {
5932 auto res = isl_aff_list_clear(copy());
5933 return manage(res);
5934 }
5935
concat(isl::aff_list list2)5936 isl::aff_list aff_list::concat(isl::aff_list list2) const
5937 {
5938 auto res = isl_aff_list_concat(copy(), list2.release());
5939 return manage(res);
5940 }
5941
drop(unsigned int first,unsigned int n)5942 isl::aff_list aff_list::drop(unsigned int first, unsigned int n) const
5943 {
5944 auto res = isl_aff_list_drop(copy(), first, n);
5945 return manage(res);
5946 }
5947
foreach(const std::function<stat (isl::aff)> & fn)5948 stat aff_list::foreach(const std::function<stat(isl::aff)> &fn) const
5949 {
5950 struct fn_data {
5951 std::function<stat(isl::aff)> func;
5952 } fn_data = { fn };
5953 auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
5954 auto *data = static_cast<struct fn_data *>(arg_1);
5955 auto ret = (data->func)(manage(arg_0));
5956 return ret.release();
5957 };
5958 auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
5959 return manage(res);
5960 }
5961
insert(unsigned int pos,isl::aff el)5962 isl::aff_list aff_list::insert(unsigned int pos, isl::aff el) const
5963 {
5964 auto res = isl_aff_list_insert(copy(), pos, el.release());
5965 return manage(res);
5966 }
5967
size()5968 class size aff_list::size() const
5969 {
5970 auto res = isl_aff_list_size(get());
5971 return manage(res);
5972 }
5973
5974 inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
5975 {
5976 char *str = isl_aff_list_to_str(obj.get());
5977 if (!str) {
5978 os.setstate(std::ios_base::badbit);
5979 return os;
5980 }
5981 os << str;
5982 free(str);
5983 return os;
5984 }
5985
5986 // implementations for isl::ast_build
manage(__isl_take isl_ast_build * ptr)5987 ast_build manage(__isl_take isl_ast_build *ptr) {
5988 return ast_build(ptr);
5989 }
manage_copy(__isl_keep isl_ast_build * ptr)5990 ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
5991 ptr = isl_ast_build_copy(ptr);
5992 return ast_build(ptr);
5993 }
5994
ast_build()5995 ast_build::ast_build()
5996 : ptr(nullptr) {}
5997
ast_build(const ast_build & obj)5998 ast_build::ast_build(const ast_build &obj)
5999 : ptr(nullptr)
6000 {
6001 ptr = obj.copy();
6002 copy_callbacks(obj);
6003 }
6004
ast_build(__isl_take isl_ast_build * ptr)6005 ast_build::ast_build(__isl_take isl_ast_build *ptr)
6006 : ptr(ptr) {}
6007
ast_build(isl::ctx ctx)6008 ast_build::ast_build(isl::ctx ctx)
6009 {
6010 auto res = isl_ast_build_alloc(ctx.release());
6011 ptr = res;
6012 }
6013
6014 ast_build &ast_build::operator=(ast_build obj) {
6015 std::swap(this->ptr, obj.ptr);
6016 copy_callbacks(obj);
6017 return *this;
6018 }
6019
~ast_build()6020 ast_build::~ast_build() {
6021 if (ptr)
6022 isl_ast_build_free(ptr);
6023 }
6024
copy()6025 __isl_give isl_ast_build *ast_build::copy() const & {
6026 return isl_ast_build_copy(ptr);
6027 }
6028
get()6029 __isl_keep isl_ast_build *ast_build::get() const {
6030 return ptr;
6031 }
6032
release()6033 __isl_give isl_ast_build *ast_build::release() {
6034 if (at_each_domain_data)
6035 isl_die(ctx().get(), isl_error_invalid, "cannot release object with persistent callbacks", return nullptr);
6036 isl_ast_build *tmp = ptr;
6037 ptr = nullptr;
6038 return tmp;
6039 }
6040
is_null()6041 bool ast_build::is_null() const {
6042 return ptr == nullptr;
6043 }
6044
ctx()6045 isl::ctx ast_build::ctx() const {
6046 return isl::ctx(isl_ast_build_get_ctx(ptr));
6047 }
6048
copy_callbacks(const ast_build & obj)6049 ast_build &ast_build::copy_callbacks(const ast_build &obj)
6050 {
6051 at_each_domain_data = obj.at_each_domain_data;
6052 return *this;
6053 }
6054
at_each_domain(isl_ast_node * arg_0,isl_ast_build * arg_1,void * arg_2)6055 isl_ast_node *ast_build::at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2)
6056 {
6057 auto *data = static_cast<struct at_each_domain_data *>(arg_2);
6058 auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
6059 return ret.release();
6060 }
6061
set_at_each_domain_data(const std::function<isl::ast_node (isl::ast_node,isl::ast_build)> & fn)6062 void ast_build::set_at_each_domain_data(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn)
6063 {
6064 at_each_domain_data = std::make_shared<struct at_each_domain_data>();
6065 at_each_domain_data->func = fn;
6066 ptr = isl_ast_build_set_at_each_domain(ptr, &at_each_domain, at_each_domain_data.get());
6067 }
6068
set_at_each_domain(const std::function<isl::ast_node (isl::ast_node,isl::ast_build)> & fn)6069 isl::ast_build ast_build::set_at_each_domain(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn) const
6070 {
6071 auto copy = *this;
6072 copy.set_at_each_domain_data(fn);
6073 return copy;
6074 }
6075
access_from(isl::multi_pw_aff mpa)6076 isl::ast_expr ast_build::access_from(isl::multi_pw_aff mpa) const
6077 {
6078 auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
6079 return manage(res);
6080 }
6081
access_from(isl::pw_multi_aff pma)6082 isl::ast_expr ast_build::access_from(isl::pw_multi_aff pma) const
6083 {
6084 auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
6085 return manage(res);
6086 }
6087
call_from(isl::multi_pw_aff mpa)6088 isl::ast_expr ast_build::call_from(isl::multi_pw_aff mpa) const
6089 {
6090 auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
6091 return manage(res);
6092 }
6093
call_from(isl::pw_multi_aff pma)6094 isl::ast_expr ast_build::call_from(isl::pw_multi_aff pma) const
6095 {
6096 auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
6097 return manage(res);
6098 }
6099
expr_from(isl::pw_aff pa)6100 isl::ast_expr ast_build::expr_from(isl::pw_aff pa) const
6101 {
6102 auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
6103 return manage(res);
6104 }
6105
expr_from(isl::set set)6106 isl::ast_expr ast_build::expr_from(isl::set set) const
6107 {
6108 auto res = isl_ast_build_expr_from_set(get(), set.release());
6109 return manage(res);
6110 }
6111
from_context(isl::set set)6112 isl::ast_build ast_build::from_context(isl::set set)
6113 {
6114 auto res = isl_ast_build_from_context(set.release());
6115 return manage(res);
6116 }
6117
node_from(isl::schedule schedule)6118 isl::ast_node ast_build::node_from(isl::schedule schedule) const
6119 {
6120 auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
6121 return manage(res);
6122 }
6123
node_from_schedule_map(isl::union_map schedule)6124 isl::ast_node ast_build::node_from_schedule_map(isl::union_map schedule) const
6125 {
6126 auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
6127 return manage(res);
6128 }
6129
6130 isl::ast_build ast_build::restrict(isl::set set) const
6131 {
6132 auto res = isl_ast_build_restrict(copy(), set.release());
6133 return manage(res).copy_callbacks(*this);
6134 }
6135
schedule()6136 isl::union_map ast_build::schedule() const
6137 {
6138 auto res = isl_ast_build_get_schedule(get());
6139 return manage(res);
6140 }
6141
get_schedule()6142 isl::union_map ast_build::get_schedule() const
6143 {
6144 return schedule();
6145 }
6146
6147 // implementations for isl::ast_expr
manage(__isl_take isl_ast_expr * ptr)6148 ast_expr manage(__isl_take isl_ast_expr *ptr) {
6149 return ast_expr(ptr);
6150 }
manage_copy(__isl_keep isl_ast_expr * ptr)6151 ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
6152 ptr = isl_ast_expr_copy(ptr);
6153 return ast_expr(ptr);
6154 }
6155
ast_expr()6156 ast_expr::ast_expr()
6157 : ptr(nullptr) {}
6158
ast_expr(const ast_expr & obj)6159 ast_expr::ast_expr(const ast_expr &obj)
6160 : ptr(nullptr)
6161 {
6162 ptr = obj.copy();
6163 }
6164
ast_expr(__isl_take isl_ast_expr * ptr)6165 ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
6166 : ptr(ptr) {}
6167
6168 ast_expr &ast_expr::operator=(ast_expr obj) {
6169 std::swap(this->ptr, obj.ptr);
6170 return *this;
6171 }
6172
~ast_expr()6173 ast_expr::~ast_expr() {
6174 if (ptr)
6175 isl_ast_expr_free(ptr);
6176 }
6177
copy()6178 __isl_give isl_ast_expr *ast_expr::copy() const & {
6179 return isl_ast_expr_copy(ptr);
6180 }
6181
get()6182 __isl_keep isl_ast_expr *ast_expr::get() const {
6183 return ptr;
6184 }
6185
release()6186 __isl_give isl_ast_expr *ast_expr::release() {
6187 isl_ast_expr *tmp = ptr;
6188 ptr = nullptr;
6189 return tmp;
6190 }
6191
is_null()6192 bool ast_expr::is_null() const {
6193 return ptr == nullptr;
6194 }
6195
6196 template <typename T, typename>
isa_type(T subtype)6197 boolean ast_expr::isa_type(T subtype) const
6198 {
6199 if (is_null())
6200 return boolean();
6201 return isl_ast_expr_get_type(get()) == subtype;
6202 }
6203 template <class T>
isa()6204 boolean ast_expr::isa() const
6205 {
6206 return isa_type<decltype(T::type)>(T::type);
6207 }
6208 template <class T>
as()6209 T ast_expr::as() const
6210 {
6211 if (isa<T>().is_false())
6212 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6213 return T(copy());
6214 }
6215
ctx()6216 isl::ctx ast_expr::ctx() const {
6217 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6218 }
6219
add(isl::ast_expr expr2)6220 isl::ast_expr ast_expr::add(isl::ast_expr expr2) const
6221 {
6222 auto res = isl_ast_expr_add(copy(), expr2.release());
6223 return manage(res);
6224 }
6225
address_of()6226 isl::ast_expr ast_expr::address_of() const
6227 {
6228 auto res = isl_ast_expr_address_of(copy());
6229 return manage(res);
6230 }
6231
eq(isl::ast_expr expr2)6232 isl::ast_expr ast_expr::eq(isl::ast_expr expr2) const
6233 {
6234 auto res = isl_ast_expr_eq(copy(), expr2.release());
6235 return manage(res);
6236 }
6237
from_val(isl::val v)6238 isl::ast_expr ast_expr::from_val(isl::val v)
6239 {
6240 auto res = isl_ast_expr_from_val(v.release());
6241 return manage(res);
6242 }
6243
id()6244 isl::id ast_expr::id() const
6245 {
6246 auto res = isl_ast_expr_get_id(get());
6247 return manage(res);
6248 }
6249
get_id()6250 isl::id ast_expr::get_id() const
6251 {
6252 return id();
6253 }
6254
le(isl::ast_expr expr2)6255 isl::ast_expr ast_expr::le(isl::ast_expr expr2) const
6256 {
6257 auto res = isl_ast_expr_le(copy(), expr2.release());
6258 return manage(res);
6259 }
6260
mul(isl::ast_expr expr2)6261 isl::ast_expr ast_expr::mul(isl::ast_expr expr2) const
6262 {
6263 auto res = isl_ast_expr_mul(copy(), expr2.release());
6264 return manage(res);
6265 }
6266
op_arg(int pos)6267 isl::ast_expr ast_expr::op_arg(int pos) const
6268 {
6269 auto res = isl_ast_expr_get_op_arg(get(), pos);
6270 return manage(res);
6271 }
6272
get_op_arg(int pos)6273 isl::ast_expr ast_expr::get_op_arg(int pos) const
6274 {
6275 return op_arg(pos);
6276 }
6277
to_C_str()6278 std::string ast_expr::to_C_str() const
6279 {
6280 auto res = isl_ast_expr_to_C_str(get());
6281 std::string tmp(res);
6282 free(res);
6283 return tmp;
6284 }
6285
val()6286 isl::val ast_expr::val() const
6287 {
6288 auto res = isl_ast_expr_get_val(get());
6289 return manage(res);
6290 }
6291
get_val()6292 isl::val ast_expr::get_val() const
6293 {
6294 return val();
6295 }
6296
6297 inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
6298 {
6299 char *str = isl_ast_expr_to_str(obj.get());
6300 if (!str) {
6301 os.setstate(std::ios_base::badbit);
6302 return os;
6303 }
6304 os << str;
6305 free(str);
6306 return os;
6307 }
6308
6309 // implementations for isl::ast_expr_id
ast_expr_id()6310 ast_expr_id::ast_expr_id()
6311 : ast_expr() {}
6312
ast_expr_id(const ast_expr_id & obj)6313 ast_expr_id::ast_expr_id(const ast_expr_id &obj)
6314 : ast_expr(obj)
6315 {
6316 }
6317
ast_expr_id(__isl_take isl_ast_expr * ptr)6318 ast_expr_id::ast_expr_id(__isl_take isl_ast_expr *ptr)
6319 : ast_expr(ptr) {}
6320
6321 ast_expr_id &ast_expr_id::operator=(ast_expr_id obj) {
6322 std::swap(this->ptr, obj.ptr);
6323 return *this;
6324 }
6325
ctx()6326 isl::ctx ast_expr_id::ctx() const {
6327 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6328 }
6329
id()6330 isl::id ast_expr_id::id() const
6331 {
6332 auto res = isl_ast_expr_id_get_id(get());
6333 return manage(res);
6334 }
6335
get_id()6336 isl::id ast_expr_id::get_id() const
6337 {
6338 return id();
6339 }
6340
6341 inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
6342 {
6343 char *str = isl_ast_expr_to_str(obj.get());
6344 if (!str) {
6345 os.setstate(std::ios_base::badbit);
6346 return os;
6347 }
6348 os << str;
6349 free(str);
6350 return os;
6351 }
6352
6353 // implementations for isl::ast_expr_int
ast_expr_int()6354 ast_expr_int::ast_expr_int()
6355 : ast_expr() {}
6356
ast_expr_int(const ast_expr_int & obj)6357 ast_expr_int::ast_expr_int(const ast_expr_int &obj)
6358 : ast_expr(obj)
6359 {
6360 }
6361
ast_expr_int(__isl_take isl_ast_expr * ptr)6362 ast_expr_int::ast_expr_int(__isl_take isl_ast_expr *ptr)
6363 : ast_expr(ptr) {}
6364
6365 ast_expr_int &ast_expr_int::operator=(ast_expr_int obj) {
6366 std::swap(this->ptr, obj.ptr);
6367 return *this;
6368 }
6369
ctx()6370 isl::ctx ast_expr_int::ctx() const {
6371 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6372 }
6373
val()6374 isl::val ast_expr_int::val() const
6375 {
6376 auto res = isl_ast_expr_int_get_val(get());
6377 return manage(res);
6378 }
6379
get_val()6380 isl::val ast_expr_int::get_val() const
6381 {
6382 return val();
6383 }
6384
6385 inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
6386 {
6387 char *str = isl_ast_expr_to_str(obj.get());
6388 if (!str) {
6389 os.setstate(std::ios_base::badbit);
6390 return os;
6391 }
6392 os << str;
6393 free(str);
6394 return os;
6395 }
6396
6397 // implementations for isl::ast_expr_op
ast_expr_op()6398 ast_expr_op::ast_expr_op()
6399 : ast_expr() {}
6400
ast_expr_op(const ast_expr_op & obj)6401 ast_expr_op::ast_expr_op(const ast_expr_op &obj)
6402 : ast_expr(obj)
6403 {
6404 }
6405
ast_expr_op(__isl_take isl_ast_expr * ptr)6406 ast_expr_op::ast_expr_op(__isl_take isl_ast_expr *ptr)
6407 : ast_expr(ptr) {}
6408
6409 ast_expr_op &ast_expr_op::operator=(ast_expr_op obj) {
6410 std::swap(this->ptr, obj.ptr);
6411 return *this;
6412 }
6413
6414 template <typename T, typename>
isa_type(T subtype)6415 boolean ast_expr_op::isa_type(T subtype) const
6416 {
6417 if (is_null())
6418 return boolean();
6419 return isl_ast_expr_op_get_type(get()) == subtype;
6420 }
6421 template <class T>
isa()6422 boolean ast_expr_op::isa() const
6423 {
6424 return isa_type<decltype(T::type)>(T::type);
6425 }
6426 template <class T>
as()6427 T ast_expr_op::as() const
6428 {
6429 if (isa<T>().is_false())
6430 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6431 return T(copy());
6432 }
6433
ctx()6434 isl::ctx ast_expr_op::ctx() const {
6435 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6436 }
6437
arg(int pos)6438 isl::ast_expr ast_expr_op::arg(int pos) const
6439 {
6440 auto res = isl_ast_expr_op_get_arg(get(), pos);
6441 return manage(res);
6442 }
6443
get_arg(int pos)6444 isl::ast_expr ast_expr_op::get_arg(int pos) const
6445 {
6446 return arg(pos);
6447 }
6448
n_arg()6449 class size ast_expr_op::n_arg() const
6450 {
6451 auto res = isl_ast_expr_op_get_n_arg(get());
6452 return manage(res);
6453 }
6454
get_n_arg()6455 class size ast_expr_op::get_n_arg() const
6456 {
6457 return n_arg();
6458 }
6459
6460 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
6461 {
6462 char *str = isl_ast_expr_to_str(obj.get());
6463 if (!str) {
6464 os.setstate(std::ios_base::badbit);
6465 return os;
6466 }
6467 os << str;
6468 free(str);
6469 return os;
6470 }
6471
6472 // implementations for isl::ast_expr_op_access
ast_expr_op_access()6473 ast_expr_op_access::ast_expr_op_access()
6474 : ast_expr_op() {}
6475
ast_expr_op_access(const ast_expr_op_access & obj)6476 ast_expr_op_access::ast_expr_op_access(const ast_expr_op_access &obj)
6477 : ast_expr_op(obj)
6478 {
6479 }
6480
ast_expr_op_access(__isl_take isl_ast_expr * ptr)6481 ast_expr_op_access::ast_expr_op_access(__isl_take isl_ast_expr *ptr)
6482 : ast_expr_op(ptr) {}
6483
6484 ast_expr_op_access &ast_expr_op_access::operator=(ast_expr_op_access obj) {
6485 std::swap(this->ptr, obj.ptr);
6486 return *this;
6487 }
6488
ctx()6489 isl::ctx ast_expr_op_access::ctx() const {
6490 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6491 }
6492
6493 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
6494 {
6495 char *str = isl_ast_expr_to_str(obj.get());
6496 if (!str) {
6497 os.setstate(std::ios_base::badbit);
6498 return os;
6499 }
6500 os << str;
6501 free(str);
6502 return os;
6503 }
6504
6505 // implementations for isl::ast_expr_op_add
ast_expr_op_add()6506 ast_expr_op_add::ast_expr_op_add()
6507 : ast_expr_op() {}
6508
ast_expr_op_add(const ast_expr_op_add & obj)6509 ast_expr_op_add::ast_expr_op_add(const ast_expr_op_add &obj)
6510 : ast_expr_op(obj)
6511 {
6512 }
6513
ast_expr_op_add(__isl_take isl_ast_expr * ptr)6514 ast_expr_op_add::ast_expr_op_add(__isl_take isl_ast_expr *ptr)
6515 : ast_expr_op(ptr) {}
6516
6517 ast_expr_op_add &ast_expr_op_add::operator=(ast_expr_op_add obj) {
6518 std::swap(this->ptr, obj.ptr);
6519 return *this;
6520 }
6521
ctx()6522 isl::ctx ast_expr_op_add::ctx() const {
6523 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6524 }
6525
6526 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
6527 {
6528 char *str = isl_ast_expr_to_str(obj.get());
6529 if (!str) {
6530 os.setstate(std::ios_base::badbit);
6531 return os;
6532 }
6533 os << str;
6534 free(str);
6535 return os;
6536 }
6537
6538 // implementations for isl::ast_expr_op_address_of
ast_expr_op_address_of()6539 ast_expr_op_address_of::ast_expr_op_address_of()
6540 : ast_expr_op() {}
6541
ast_expr_op_address_of(const ast_expr_op_address_of & obj)6542 ast_expr_op_address_of::ast_expr_op_address_of(const ast_expr_op_address_of &obj)
6543 : ast_expr_op(obj)
6544 {
6545 }
6546
ast_expr_op_address_of(__isl_take isl_ast_expr * ptr)6547 ast_expr_op_address_of::ast_expr_op_address_of(__isl_take isl_ast_expr *ptr)
6548 : ast_expr_op(ptr) {}
6549
6550 ast_expr_op_address_of &ast_expr_op_address_of::operator=(ast_expr_op_address_of obj) {
6551 std::swap(this->ptr, obj.ptr);
6552 return *this;
6553 }
6554
ctx()6555 isl::ctx ast_expr_op_address_of::ctx() const {
6556 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6557 }
6558
6559 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
6560 {
6561 char *str = isl_ast_expr_to_str(obj.get());
6562 if (!str) {
6563 os.setstate(std::ios_base::badbit);
6564 return os;
6565 }
6566 os << str;
6567 free(str);
6568 return os;
6569 }
6570
6571 // implementations for isl::ast_expr_op_and
ast_expr_op_and()6572 ast_expr_op_and::ast_expr_op_and()
6573 : ast_expr_op() {}
6574
ast_expr_op_and(const ast_expr_op_and & obj)6575 ast_expr_op_and::ast_expr_op_and(const ast_expr_op_and &obj)
6576 : ast_expr_op(obj)
6577 {
6578 }
6579
ast_expr_op_and(__isl_take isl_ast_expr * ptr)6580 ast_expr_op_and::ast_expr_op_and(__isl_take isl_ast_expr *ptr)
6581 : ast_expr_op(ptr) {}
6582
6583 ast_expr_op_and &ast_expr_op_and::operator=(ast_expr_op_and obj) {
6584 std::swap(this->ptr, obj.ptr);
6585 return *this;
6586 }
6587
ctx()6588 isl::ctx ast_expr_op_and::ctx() const {
6589 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6590 }
6591
6592 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
6593 {
6594 char *str = isl_ast_expr_to_str(obj.get());
6595 if (!str) {
6596 os.setstate(std::ios_base::badbit);
6597 return os;
6598 }
6599 os << str;
6600 free(str);
6601 return os;
6602 }
6603
6604 // implementations for isl::ast_expr_op_and_then
ast_expr_op_and_then()6605 ast_expr_op_and_then::ast_expr_op_and_then()
6606 : ast_expr_op() {}
6607
ast_expr_op_and_then(const ast_expr_op_and_then & obj)6608 ast_expr_op_and_then::ast_expr_op_and_then(const ast_expr_op_and_then &obj)
6609 : ast_expr_op(obj)
6610 {
6611 }
6612
ast_expr_op_and_then(__isl_take isl_ast_expr * ptr)6613 ast_expr_op_and_then::ast_expr_op_and_then(__isl_take isl_ast_expr *ptr)
6614 : ast_expr_op(ptr) {}
6615
6616 ast_expr_op_and_then &ast_expr_op_and_then::operator=(ast_expr_op_and_then obj) {
6617 std::swap(this->ptr, obj.ptr);
6618 return *this;
6619 }
6620
ctx()6621 isl::ctx ast_expr_op_and_then::ctx() const {
6622 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6623 }
6624
6625 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
6626 {
6627 char *str = isl_ast_expr_to_str(obj.get());
6628 if (!str) {
6629 os.setstate(std::ios_base::badbit);
6630 return os;
6631 }
6632 os << str;
6633 free(str);
6634 return os;
6635 }
6636
6637 // implementations for isl::ast_expr_op_call
ast_expr_op_call()6638 ast_expr_op_call::ast_expr_op_call()
6639 : ast_expr_op() {}
6640
ast_expr_op_call(const ast_expr_op_call & obj)6641 ast_expr_op_call::ast_expr_op_call(const ast_expr_op_call &obj)
6642 : ast_expr_op(obj)
6643 {
6644 }
6645
ast_expr_op_call(__isl_take isl_ast_expr * ptr)6646 ast_expr_op_call::ast_expr_op_call(__isl_take isl_ast_expr *ptr)
6647 : ast_expr_op(ptr) {}
6648
6649 ast_expr_op_call &ast_expr_op_call::operator=(ast_expr_op_call obj) {
6650 std::swap(this->ptr, obj.ptr);
6651 return *this;
6652 }
6653
ctx()6654 isl::ctx ast_expr_op_call::ctx() const {
6655 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6656 }
6657
6658 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
6659 {
6660 char *str = isl_ast_expr_to_str(obj.get());
6661 if (!str) {
6662 os.setstate(std::ios_base::badbit);
6663 return os;
6664 }
6665 os << str;
6666 free(str);
6667 return os;
6668 }
6669
6670 // implementations for isl::ast_expr_op_cond
ast_expr_op_cond()6671 ast_expr_op_cond::ast_expr_op_cond()
6672 : ast_expr_op() {}
6673
ast_expr_op_cond(const ast_expr_op_cond & obj)6674 ast_expr_op_cond::ast_expr_op_cond(const ast_expr_op_cond &obj)
6675 : ast_expr_op(obj)
6676 {
6677 }
6678
ast_expr_op_cond(__isl_take isl_ast_expr * ptr)6679 ast_expr_op_cond::ast_expr_op_cond(__isl_take isl_ast_expr *ptr)
6680 : ast_expr_op(ptr) {}
6681
6682 ast_expr_op_cond &ast_expr_op_cond::operator=(ast_expr_op_cond obj) {
6683 std::swap(this->ptr, obj.ptr);
6684 return *this;
6685 }
6686
ctx()6687 isl::ctx ast_expr_op_cond::ctx() const {
6688 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6689 }
6690
6691 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
6692 {
6693 char *str = isl_ast_expr_to_str(obj.get());
6694 if (!str) {
6695 os.setstate(std::ios_base::badbit);
6696 return os;
6697 }
6698 os << str;
6699 free(str);
6700 return os;
6701 }
6702
6703 // implementations for isl::ast_expr_op_div
ast_expr_op_div()6704 ast_expr_op_div::ast_expr_op_div()
6705 : ast_expr_op() {}
6706
ast_expr_op_div(const ast_expr_op_div & obj)6707 ast_expr_op_div::ast_expr_op_div(const ast_expr_op_div &obj)
6708 : ast_expr_op(obj)
6709 {
6710 }
6711
ast_expr_op_div(__isl_take isl_ast_expr * ptr)6712 ast_expr_op_div::ast_expr_op_div(__isl_take isl_ast_expr *ptr)
6713 : ast_expr_op(ptr) {}
6714
6715 ast_expr_op_div &ast_expr_op_div::operator=(ast_expr_op_div obj) {
6716 std::swap(this->ptr, obj.ptr);
6717 return *this;
6718 }
6719
ctx()6720 isl::ctx ast_expr_op_div::ctx() const {
6721 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6722 }
6723
6724 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
6725 {
6726 char *str = isl_ast_expr_to_str(obj.get());
6727 if (!str) {
6728 os.setstate(std::ios_base::badbit);
6729 return os;
6730 }
6731 os << str;
6732 free(str);
6733 return os;
6734 }
6735
6736 // implementations for isl::ast_expr_op_eq
ast_expr_op_eq()6737 ast_expr_op_eq::ast_expr_op_eq()
6738 : ast_expr_op() {}
6739
ast_expr_op_eq(const ast_expr_op_eq & obj)6740 ast_expr_op_eq::ast_expr_op_eq(const ast_expr_op_eq &obj)
6741 : ast_expr_op(obj)
6742 {
6743 }
6744
ast_expr_op_eq(__isl_take isl_ast_expr * ptr)6745 ast_expr_op_eq::ast_expr_op_eq(__isl_take isl_ast_expr *ptr)
6746 : ast_expr_op(ptr) {}
6747
6748 ast_expr_op_eq &ast_expr_op_eq::operator=(ast_expr_op_eq obj) {
6749 std::swap(this->ptr, obj.ptr);
6750 return *this;
6751 }
6752
ctx()6753 isl::ctx ast_expr_op_eq::ctx() const {
6754 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6755 }
6756
6757 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
6758 {
6759 char *str = isl_ast_expr_to_str(obj.get());
6760 if (!str) {
6761 os.setstate(std::ios_base::badbit);
6762 return os;
6763 }
6764 os << str;
6765 free(str);
6766 return os;
6767 }
6768
6769 // implementations for isl::ast_expr_op_fdiv_q
ast_expr_op_fdiv_q()6770 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q()
6771 : ast_expr_op() {}
6772
ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q & obj)6773 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj)
6774 : ast_expr_op(obj)
6775 {
6776 }
6777
ast_expr_op_fdiv_q(__isl_take isl_ast_expr * ptr)6778 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr)
6779 : ast_expr_op(ptr) {}
6780
6781 ast_expr_op_fdiv_q &ast_expr_op_fdiv_q::operator=(ast_expr_op_fdiv_q obj) {
6782 std::swap(this->ptr, obj.ptr);
6783 return *this;
6784 }
6785
ctx()6786 isl::ctx ast_expr_op_fdiv_q::ctx() const {
6787 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6788 }
6789
6790 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
6791 {
6792 char *str = isl_ast_expr_to_str(obj.get());
6793 if (!str) {
6794 os.setstate(std::ios_base::badbit);
6795 return os;
6796 }
6797 os << str;
6798 free(str);
6799 return os;
6800 }
6801
6802 // implementations for isl::ast_expr_op_ge
ast_expr_op_ge()6803 ast_expr_op_ge::ast_expr_op_ge()
6804 : ast_expr_op() {}
6805
ast_expr_op_ge(const ast_expr_op_ge & obj)6806 ast_expr_op_ge::ast_expr_op_ge(const ast_expr_op_ge &obj)
6807 : ast_expr_op(obj)
6808 {
6809 }
6810
ast_expr_op_ge(__isl_take isl_ast_expr * ptr)6811 ast_expr_op_ge::ast_expr_op_ge(__isl_take isl_ast_expr *ptr)
6812 : ast_expr_op(ptr) {}
6813
6814 ast_expr_op_ge &ast_expr_op_ge::operator=(ast_expr_op_ge obj) {
6815 std::swap(this->ptr, obj.ptr);
6816 return *this;
6817 }
6818
ctx()6819 isl::ctx ast_expr_op_ge::ctx() const {
6820 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6821 }
6822
6823 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
6824 {
6825 char *str = isl_ast_expr_to_str(obj.get());
6826 if (!str) {
6827 os.setstate(std::ios_base::badbit);
6828 return os;
6829 }
6830 os << str;
6831 free(str);
6832 return os;
6833 }
6834
6835 // implementations for isl::ast_expr_op_gt
ast_expr_op_gt()6836 ast_expr_op_gt::ast_expr_op_gt()
6837 : ast_expr_op() {}
6838
ast_expr_op_gt(const ast_expr_op_gt & obj)6839 ast_expr_op_gt::ast_expr_op_gt(const ast_expr_op_gt &obj)
6840 : ast_expr_op(obj)
6841 {
6842 }
6843
ast_expr_op_gt(__isl_take isl_ast_expr * ptr)6844 ast_expr_op_gt::ast_expr_op_gt(__isl_take isl_ast_expr *ptr)
6845 : ast_expr_op(ptr) {}
6846
6847 ast_expr_op_gt &ast_expr_op_gt::operator=(ast_expr_op_gt obj) {
6848 std::swap(this->ptr, obj.ptr);
6849 return *this;
6850 }
6851
ctx()6852 isl::ctx ast_expr_op_gt::ctx() const {
6853 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6854 }
6855
6856 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
6857 {
6858 char *str = isl_ast_expr_to_str(obj.get());
6859 if (!str) {
6860 os.setstate(std::ios_base::badbit);
6861 return os;
6862 }
6863 os << str;
6864 free(str);
6865 return os;
6866 }
6867
6868 // implementations for isl::ast_expr_op_le
ast_expr_op_le()6869 ast_expr_op_le::ast_expr_op_le()
6870 : ast_expr_op() {}
6871
ast_expr_op_le(const ast_expr_op_le & obj)6872 ast_expr_op_le::ast_expr_op_le(const ast_expr_op_le &obj)
6873 : ast_expr_op(obj)
6874 {
6875 }
6876
ast_expr_op_le(__isl_take isl_ast_expr * ptr)6877 ast_expr_op_le::ast_expr_op_le(__isl_take isl_ast_expr *ptr)
6878 : ast_expr_op(ptr) {}
6879
6880 ast_expr_op_le &ast_expr_op_le::operator=(ast_expr_op_le obj) {
6881 std::swap(this->ptr, obj.ptr);
6882 return *this;
6883 }
6884
ctx()6885 isl::ctx ast_expr_op_le::ctx() const {
6886 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6887 }
6888
6889 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
6890 {
6891 char *str = isl_ast_expr_to_str(obj.get());
6892 if (!str) {
6893 os.setstate(std::ios_base::badbit);
6894 return os;
6895 }
6896 os << str;
6897 free(str);
6898 return os;
6899 }
6900
6901 // implementations for isl::ast_expr_op_lt
ast_expr_op_lt()6902 ast_expr_op_lt::ast_expr_op_lt()
6903 : ast_expr_op() {}
6904
ast_expr_op_lt(const ast_expr_op_lt & obj)6905 ast_expr_op_lt::ast_expr_op_lt(const ast_expr_op_lt &obj)
6906 : ast_expr_op(obj)
6907 {
6908 }
6909
ast_expr_op_lt(__isl_take isl_ast_expr * ptr)6910 ast_expr_op_lt::ast_expr_op_lt(__isl_take isl_ast_expr *ptr)
6911 : ast_expr_op(ptr) {}
6912
6913 ast_expr_op_lt &ast_expr_op_lt::operator=(ast_expr_op_lt obj) {
6914 std::swap(this->ptr, obj.ptr);
6915 return *this;
6916 }
6917
ctx()6918 isl::ctx ast_expr_op_lt::ctx() const {
6919 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6920 }
6921
6922 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
6923 {
6924 char *str = isl_ast_expr_to_str(obj.get());
6925 if (!str) {
6926 os.setstate(std::ios_base::badbit);
6927 return os;
6928 }
6929 os << str;
6930 free(str);
6931 return os;
6932 }
6933
6934 // implementations for isl::ast_expr_op_max
ast_expr_op_max()6935 ast_expr_op_max::ast_expr_op_max()
6936 : ast_expr_op() {}
6937
ast_expr_op_max(const ast_expr_op_max & obj)6938 ast_expr_op_max::ast_expr_op_max(const ast_expr_op_max &obj)
6939 : ast_expr_op(obj)
6940 {
6941 }
6942
ast_expr_op_max(__isl_take isl_ast_expr * ptr)6943 ast_expr_op_max::ast_expr_op_max(__isl_take isl_ast_expr *ptr)
6944 : ast_expr_op(ptr) {}
6945
6946 ast_expr_op_max &ast_expr_op_max::operator=(ast_expr_op_max obj) {
6947 std::swap(this->ptr, obj.ptr);
6948 return *this;
6949 }
6950
ctx()6951 isl::ctx ast_expr_op_max::ctx() const {
6952 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6953 }
6954
6955 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
6956 {
6957 char *str = isl_ast_expr_to_str(obj.get());
6958 if (!str) {
6959 os.setstate(std::ios_base::badbit);
6960 return os;
6961 }
6962 os << str;
6963 free(str);
6964 return os;
6965 }
6966
6967 // implementations for isl::ast_expr_op_member
ast_expr_op_member()6968 ast_expr_op_member::ast_expr_op_member()
6969 : ast_expr_op() {}
6970
ast_expr_op_member(const ast_expr_op_member & obj)6971 ast_expr_op_member::ast_expr_op_member(const ast_expr_op_member &obj)
6972 : ast_expr_op(obj)
6973 {
6974 }
6975
ast_expr_op_member(__isl_take isl_ast_expr * ptr)6976 ast_expr_op_member::ast_expr_op_member(__isl_take isl_ast_expr *ptr)
6977 : ast_expr_op(ptr) {}
6978
6979 ast_expr_op_member &ast_expr_op_member::operator=(ast_expr_op_member obj) {
6980 std::swap(this->ptr, obj.ptr);
6981 return *this;
6982 }
6983
ctx()6984 isl::ctx ast_expr_op_member::ctx() const {
6985 return isl::ctx(isl_ast_expr_get_ctx(ptr));
6986 }
6987
6988 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
6989 {
6990 char *str = isl_ast_expr_to_str(obj.get());
6991 if (!str) {
6992 os.setstate(std::ios_base::badbit);
6993 return os;
6994 }
6995 os << str;
6996 free(str);
6997 return os;
6998 }
6999
7000 // implementations for isl::ast_expr_op_min
ast_expr_op_min()7001 ast_expr_op_min::ast_expr_op_min()
7002 : ast_expr_op() {}
7003
ast_expr_op_min(const ast_expr_op_min & obj)7004 ast_expr_op_min::ast_expr_op_min(const ast_expr_op_min &obj)
7005 : ast_expr_op(obj)
7006 {
7007 }
7008
ast_expr_op_min(__isl_take isl_ast_expr * ptr)7009 ast_expr_op_min::ast_expr_op_min(__isl_take isl_ast_expr *ptr)
7010 : ast_expr_op(ptr) {}
7011
7012 ast_expr_op_min &ast_expr_op_min::operator=(ast_expr_op_min obj) {
7013 std::swap(this->ptr, obj.ptr);
7014 return *this;
7015 }
7016
ctx()7017 isl::ctx ast_expr_op_min::ctx() const {
7018 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7019 }
7020
7021 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
7022 {
7023 char *str = isl_ast_expr_to_str(obj.get());
7024 if (!str) {
7025 os.setstate(std::ios_base::badbit);
7026 return os;
7027 }
7028 os << str;
7029 free(str);
7030 return os;
7031 }
7032
7033 // implementations for isl::ast_expr_op_minus
ast_expr_op_minus()7034 ast_expr_op_minus::ast_expr_op_minus()
7035 : ast_expr_op() {}
7036
ast_expr_op_minus(const ast_expr_op_minus & obj)7037 ast_expr_op_minus::ast_expr_op_minus(const ast_expr_op_minus &obj)
7038 : ast_expr_op(obj)
7039 {
7040 }
7041
ast_expr_op_minus(__isl_take isl_ast_expr * ptr)7042 ast_expr_op_minus::ast_expr_op_minus(__isl_take isl_ast_expr *ptr)
7043 : ast_expr_op(ptr) {}
7044
7045 ast_expr_op_minus &ast_expr_op_minus::operator=(ast_expr_op_minus obj) {
7046 std::swap(this->ptr, obj.ptr);
7047 return *this;
7048 }
7049
ctx()7050 isl::ctx ast_expr_op_minus::ctx() const {
7051 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7052 }
7053
7054 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
7055 {
7056 char *str = isl_ast_expr_to_str(obj.get());
7057 if (!str) {
7058 os.setstate(std::ios_base::badbit);
7059 return os;
7060 }
7061 os << str;
7062 free(str);
7063 return os;
7064 }
7065
7066 // implementations for isl::ast_expr_op_mul
ast_expr_op_mul()7067 ast_expr_op_mul::ast_expr_op_mul()
7068 : ast_expr_op() {}
7069
ast_expr_op_mul(const ast_expr_op_mul & obj)7070 ast_expr_op_mul::ast_expr_op_mul(const ast_expr_op_mul &obj)
7071 : ast_expr_op(obj)
7072 {
7073 }
7074
ast_expr_op_mul(__isl_take isl_ast_expr * ptr)7075 ast_expr_op_mul::ast_expr_op_mul(__isl_take isl_ast_expr *ptr)
7076 : ast_expr_op(ptr) {}
7077
7078 ast_expr_op_mul &ast_expr_op_mul::operator=(ast_expr_op_mul obj) {
7079 std::swap(this->ptr, obj.ptr);
7080 return *this;
7081 }
7082
ctx()7083 isl::ctx ast_expr_op_mul::ctx() const {
7084 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7085 }
7086
7087 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
7088 {
7089 char *str = isl_ast_expr_to_str(obj.get());
7090 if (!str) {
7091 os.setstate(std::ios_base::badbit);
7092 return os;
7093 }
7094 os << str;
7095 free(str);
7096 return os;
7097 }
7098
7099 // implementations for isl::ast_expr_op_or
ast_expr_op_or()7100 ast_expr_op_or::ast_expr_op_or()
7101 : ast_expr_op() {}
7102
ast_expr_op_or(const ast_expr_op_or & obj)7103 ast_expr_op_or::ast_expr_op_or(const ast_expr_op_or &obj)
7104 : ast_expr_op(obj)
7105 {
7106 }
7107
ast_expr_op_or(__isl_take isl_ast_expr * ptr)7108 ast_expr_op_or::ast_expr_op_or(__isl_take isl_ast_expr *ptr)
7109 : ast_expr_op(ptr) {}
7110
7111 ast_expr_op_or &ast_expr_op_or::operator=(ast_expr_op_or obj) {
7112 std::swap(this->ptr, obj.ptr);
7113 return *this;
7114 }
7115
ctx()7116 isl::ctx ast_expr_op_or::ctx() const {
7117 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7118 }
7119
7120 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
7121 {
7122 char *str = isl_ast_expr_to_str(obj.get());
7123 if (!str) {
7124 os.setstate(std::ios_base::badbit);
7125 return os;
7126 }
7127 os << str;
7128 free(str);
7129 return os;
7130 }
7131
7132 // implementations for isl::ast_expr_op_or_else
ast_expr_op_or_else()7133 ast_expr_op_or_else::ast_expr_op_or_else()
7134 : ast_expr_op() {}
7135
ast_expr_op_or_else(const ast_expr_op_or_else & obj)7136 ast_expr_op_or_else::ast_expr_op_or_else(const ast_expr_op_or_else &obj)
7137 : ast_expr_op(obj)
7138 {
7139 }
7140
ast_expr_op_or_else(__isl_take isl_ast_expr * ptr)7141 ast_expr_op_or_else::ast_expr_op_or_else(__isl_take isl_ast_expr *ptr)
7142 : ast_expr_op(ptr) {}
7143
7144 ast_expr_op_or_else &ast_expr_op_or_else::operator=(ast_expr_op_or_else obj) {
7145 std::swap(this->ptr, obj.ptr);
7146 return *this;
7147 }
7148
ctx()7149 isl::ctx ast_expr_op_or_else::ctx() const {
7150 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7151 }
7152
7153 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
7154 {
7155 char *str = isl_ast_expr_to_str(obj.get());
7156 if (!str) {
7157 os.setstate(std::ios_base::badbit);
7158 return os;
7159 }
7160 os << str;
7161 free(str);
7162 return os;
7163 }
7164
7165 // implementations for isl::ast_expr_op_pdiv_q
ast_expr_op_pdiv_q()7166 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q()
7167 : ast_expr_op() {}
7168
ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q & obj)7169 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj)
7170 : ast_expr_op(obj)
7171 {
7172 }
7173
ast_expr_op_pdiv_q(__isl_take isl_ast_expr * ptr)7174 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr)
7175 : ast_expr_op(ptr) {}
7176
7177 ast_expr_op_pdiv_q &ast_expr_op_pdiv_q::operator=(ast_expr_op_pdiv_q obj) {
7178 std::swap(this->ptr, obj.ptr);
7179 return *this;
7180 }
7181
ctx()7182 isl::ctx ast_expr_op_pdiv_q::ctx() const {
7183 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7184 }
7185
7186 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
7187 {
7188 char *str = isl_ast_expr_to_str(obj.get());
7189 if (!str) {
7190 os.setstate(std::ios_base::badbit);
7191 return os;
7192 }
7193 os << str;
7194 free(str);
7195 return os;
7196 }
7197
7198 // implementations for isl::ast_expr_op_pdiv_r
ast_expr_op_pdiv_r()7199 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r()
7200 : ast_expr_op() {}
7201
ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r & obj)7202 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj)
7203 : ast_expr_op(obj)
7204 {
7205 }
7206
ast_expr_op_pdiv_r(__isl_take isl_ast_expr * ptr)7207 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr)
7208 : ast_expr_op(ptr) {}
7209
7210 ast_expr_op_pdiv_r &ast_expr_op_pdiv_r::operator=(ast_expr_op_pdiv_r obj) {
7211 std::swap(this->ptr, obj.ptr);
7212 return *this;
7213 }
7214
ctx()7215 isl::ctx ast_expr_op_pdiv_r::ctx() const {
7216 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7217 }
7218
7219 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
7220 {
7221 char *str = isl_ast_expr_to_str(obj.get());
7222 if (!str) {
7223 os.setstate(std::ios_base::badbit);
7224 return os;
7225 }
7226 os << str;
7227 free(str);
7228 return os;
7229 }
7230
7231 // implementations for isl::ast_expr_op_select
ast_expr_op_select()7232 ast_expr_op_select::ast_expr_op_select()
7233 : ast_expr_op() {}
7234
ast_expr_op_select(const ast_expr_op_select & obj)7235 ast_expr_op_select::ast_expr_op_select(const ast_expr_op_select &obj)
7236 : ast_expr_op(obj)
7237 {
7238 }
7239
ast_expr_op_select(__isl_take isl_ast_expr * ptr)7240 ast_expr_op_select::ast_expr_op_select(__isl_take isl_ast_expr *ptr)
7241 : ast_expr_op(ptr) {}
7242
7243 ast_expr_op_select &ast_expr_op_select::operator=(ast_expr_op_select obj) {
7244 std::swap(this->ptr, obj.ptr);
7245 return *this;
7246 }
7247
ctx()7248 isl::ctx ast_expr_op_select::ctx() const {
7249 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7250 }
7251
7252 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
7253 {
7254 char *str = isl_ast_expr_to_str(obj.get());
7255 if (!str) {
7256 os.setstate(std::ios_base::badbit);
7257 return os;
7258 }
7259 os << str;
7260 free(str);
7261 return os;
7262 }
7263
7264 // implementations for isl::ast_expr_op_sub
ast_expr_op_sub()7265 ast_expr_op_sub::ast_expr_op_sub()
7266 : ast_expr_op() {}
7267
ast_expr_op_sub(const ast_expr_op_sub & obj)7268 ast_expr_op_sub::ast_expr_op_sub(const ast_expr_op_sub &obj)
7269 : ast_expr_op(obj)
7270 {
7271 }
7272
ast_expr_op_sub(__isl_take isl_ast_expr * ptr)7273 ast_expr_op_sub::ast_expr_op_sub(__isl_take isl_ast_expr *ptr)
7274 : ast_expr_op(ptr) {}
7275
7276 ast_expr_op_sub &ast_expr_op_sub::operator=(ast_expr_op_sub obj) {
7277 std::swap(this->ptr, obj.ptr);
7278 return *this;
7279 }
7280
ctx()7281 isl::ctx ast_expr_op_sub::ctx() const {
7282 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7283 }
7284
7285 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
7286 {
7287 char *str = isl_ast_expr_to_str(obj.get());
7288 if (!str) {
7289 os.setstate(std::ios_base::badbit);
7290 return os;
7291 }
7292 os << str;
7293 free(str);
7294 return os;
7295 }
7296
7297 // implementations for isl::ast_expr_op_zdiv_r
ast_expr_op_zdiv_r()7298 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r()
7299 : ast_expr_op() {}
7300
ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r & obj)7301 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj)
7302 : ast_expr_op(obj)
7303 {
7304 }
7305
ast_expr_op_zdiv_r(__isl_take isl_ast_expr * ptr)7306 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr)
7307 : ast_expr_op(ptr) {}
7308
7309 ast_expr_op_zdiv_r &ast_expr_op_zdiv_r::operator=(ast_expr_op_zdiv_r obj) {
7310 std::swap(this->ptr, obj.ptr);
7311 return *this;
7312 }
7313
ctx()7314 isl::ctx ast_expr_op_zdiv_r::ctx() const {
7315 return isl::ctx(isl_ast_expr_get_ctx(ptr));
7316 }
7317
7318 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
7319 {
7320 char *str = isl_ast_expr_to_str(obj.get());
7321 if (!str) {
7322 os.setstate(std::ios_base::badbit);
7323 return os;
7324 }
7325 os << str;
7326 free(str);
7327 return os;
7328 }
7329
7330 // implementations for isl::ast_node
manage(__isl_take isl_ast_node * ptr)7331 ast_node manage(__isl_take isl_ast_node *ptr) {
7332 return ast_node(ptr);
7333 }
manage_copy(__isl_keep isl_ast_node * ptr)7334 ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
7335 ptr = isl_ast_node_copy(ptr);
7336 return ast_node(ptr);
7337 }
7338
ast_node()7339 ast_node::ast_node()
7340 : ptr(nullptr) {}
7341
ast_node(const ast_node & obj)7342 ast_node::ast_node(const ast_node &obj)
7343 : ptr(nullptr)
7344 {
7345 ptr = obj.copy();
7346 }
7347
ast_node(__isl_take isl_ast_node * ptr)7348 ast_node::ast_node(__isl_take isl_ast_node *ptr)
7349 : ptr(ptr) {}
7350
7351 ast_node &ast_node::operator=(ast_node obj) {
7352 std::swap(this->ptr, obj.ptr);
7353 return *this;
7354 }
7355
~ast_node()7356 ast_node::~ast_node() {
7357 if (ptr)
7358 isl_ast_node_free(ptr);
7359 }
7360
copy()7361 __isl_give isl_ast_node *ast_node::copy() const & {
7362 return isl_ast_node_copy(ptr);
7363 }
7364
get()7365 __isl_keep isl_ast_node *ast_node::get() const {
7366 return ptr;
7367 }
7368
release()7369 __isl_give isl_ast_node *ast_node::release() {
7370 isl_ast_node *tmp = ptr;
7371 ptr = nullptr;
7372 return tmp;
7373 }
7374
is_null()7375 bool ast_node::is_null() const {
7376 return ptr == nullptr;
7377 }
7378
7379 template <typename T, typename>
isa_type(T subtype)7380 boolean ast_node::isa_type(T subtype) const
7381 {
7382 if (is_null())
7383 return boolean();
7384 return isl_ast_node_get_type(get()) == subtype;
7385 }
7386 template <class T>
isa()7387 boolean ast_node::isa() const
7388 {
7389 return isa_type<decltype(T::type)>(T::type);
7390 }
7391 template <class T>
as()7392 T ast_node::as() const
7393 {
7394 if (isa<T>().is_false())
7395 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
7396 return T(copy());
7397 }
7398
ctx()7399 isl::ctx ast_node::ctx() const {
7400 return isl::ctx(isl_ast_node_get_ctx(ptr));
7401 }
7402
annotation()7403 isl::id ast_node::annotation() const
7404 {
7405 auto res = isl_ast_node_get_annotation(get());
7406 return manage(res);
7407 }
7408
get_annotation()7409 isl::id ast_node::get_annotation() const
7410 {
7411 return annotation();
7412 }
7413
to_C_str()7414 std::string ast_node::to_C_str() const
7415 {
7416 auto res = isl_ast_node_to_C_str(get());
7417 std::string tmp(res);
7418 free(res);
7419 return tmp;
7420 }
7421
to_list()7422 isl::ast_node_list ast_node::to_list() const
7423 {
7424 auto res = isl_ast_node_to_list(copy());
7425 return manage(res);
7426 }
7427
7428 inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
7429 {
7430 char *str = isl_ast_node_to_str(obj.get());
7431 if (!str) {
7432 os.setstate(std::ios_base::badbit);
7433 return os;
7434 }
7435 os << str;
7436 free(str);
7437 return os;
7438 }
7439
7440 // implementations for isl::ast_node_block
ast_node_block()7441 ast_node_block::ast_node_block()
7442 : ast_node() {}
7443
ast_node_block(const ast_node_block & obj)7444 ast_node_block::ast_node_block(const ast_node_block &obj)
7445 : ast_node(obj)
7446 {
7447 }
7448
ast_node_block(__isl_take isl_ast_node * ptr)7449 ast_node_block::ast_node_block(__isl_take isl_ast_node *ptr)
7450 : ast_node(ptr) {}
7451
7452 ast_node_block &ast_node_block::operator=(ast_node_block obj) {
7453 std::swap(this->ptr, obj.ptr);
7454 return *this;
7455 }
7456
ctx()7457 isl::ctx ast_node_block::ctx() const {
7458 return isl::ctx(isl_ast_node_get_ctx(ptr));
7459 }
7460
children()7461 isl::ast_node_list ast_node_block::children() const
7462 {
7463 auto res = isl_ast_node_block_get_children(get());
7464 return manage(res);
7465 }
7466
get_children()7467 isl::ast_node_list ast_node_block::get_children() const
7468 {
7469 return children();
7470 }
7471
7472 inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
7473 {
7474 char *str = isl_ast_node_to_str(obj.get());
7475 if (!str) {
7476 os.setstate(std::ios_base::badbit);
7477 return os;
7478 }
7479 os << str;
7480 free(str);
7481 return os;
7482 }
7483
7484 // implementations for isl::ast_node_for
ast_node_for()7485 ast_node_for::ast_node_for()
7486 : ast_node() {}
7487
ast_node_for(const ast_node_for & obj)7488 ast_node_for::ast_node_for(const ast_node_for &obj)
7489 : ast_node(obj)
7490 {
7491 }
7492
ast_node_for(__isl_take isl_ast_node * ptr)7493 ast_node_for::ast_node_for(__isl_take isl_ast_node *ptr)
7494 : ast_node(ptr) {}
7495
7496 ast_node_for &ast_node_for::operator=(ast_node_for obj) {
7497 std::swap(this->ptr, obj.ptr);
7498 return *this;
7499 }
7500
ctx()7501 isl::ctx ast_node_for::ctx() const {
7502 return isl::ctx(isl_ast_node_get_ctx(ptr));
7503 }
7504
body()7505 isl::ast_node ast_node_for::body() const
7506 {
7507 auto res = isl_ast_node_for_get_body(get());
7508 return manage(res);
7509 }
7510
get_body()7511 isl::ast_node ast_node_for::get_body() const
7512 {
7513 return body();
7514 }
7515
cond()7516 isl::ast_expr ast_node_for::cond() const
7517 {
7518 auto res = isl_ast_node_for_get_cond(get());
7519 return manage(res);
7520 }
7521
get_cond()7522 isl::ast_expr ast_node_for::get_cond() const
7523 {
7524 return cond();
7525 }
7526
inc()7527 isl::ast_expr ast_node_for::inc() const
7528 {
7529 auto res = isl_ast_node_for_get_inc(get());
7530 return manage(res);
7531 }
7532
get_inc()7533 isl::ast_expr ast_node_for::get_inc() const
7534 {
7535 return inc();
7536 }
7537
init()7538 isl::ast_expr ast_node_for::init() const
7539 {
7540 auto res = isl_ast_node_for_get_init(get());
7541 return manage(res);
7542 }
7543
get_init()7544 isl::ast_expr ast_node_for::get_init() const
7545 {
7546 return init();
7547 }
7548
is_degenerate()7549 boolean ast_node_for::is_degenerate() const
7550 {
7551 auto res = isl_ast_node_for_is_degenerate(get());
7552 return manage(res);
7553 }
7554
iterator()7555 isl::ast_expr ast_node_for::iterator() const
7556 {
7557 auto res = isl_ast_node_for_get_iterator(get());
7558 return manage(res);
7559 }
7560
get_iterator()7561 isl::ast_expr ast_node_for::get_iterator() const
7562 {
7563 return iterator();
7564 }
7565
7566 inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
7567 {
7568 char *str = isl_ast_node_to_str(obj.get());
7569 if (!str) {
7570 os.setstate(std::ios_base::badbit);
7571 return os;
7572 }
7573 os << str;
7574 free(str);
7575 return os;
7576 }
7577
7578 // implementations for isl::ast_node_if
ast_node_if()7579 ast_node_if::ast_node_if()
7580 : ast_node() {}
7581
ast_node_if(const ast_node_if & obj)7582 ast_node_if::ast_node_if(const ast_node_if &obj)
7583 : ast_node(obj)
7584 {
7585 }
7586
ast_node_if(__isl_take isl_ast_node * ptr)7587 ast_node_if::ast_node_if(__isl_take isl_ast_node *ptr)
7588 : ast_node(ptr) {}
7589
7590 ast_node_if &ast_node_if::operator=(ast_node_if obj) {
7591 std::swap(this->ptr, obj.ptr);
7592 return *this;
7593 }
7594
ctx()7595 isl::ctx ast_node_if::ctx() const {
7596 return isl::ctx(isl_ast_node_get_ctx(ptr));
7597 }
7598
cond()7599 isl::ast_expr ast_node_if::cond() const
7600 {
7601 auto res = isl_ast_node_if_get_cond(get());
7602 return manage(res);
7603 }
7604
get_cond()7605 isl::ast_expr ast_node_if::get_cond() const
7606 {
7607 return cond();
7608 }
7609
else_node()7610 isl::ast_node ast_node_if::else_node() const
7611 {
7612 auto res = isl_ast_node_if_get_else_node(get());
7613 return manage(res);
7614 }
7615
get_else_node()7616 isl::ast_node ast_node_if::get_else_node() const
7617 {
7618 return else_node();
7619 }
7620
has_else_node()7621 boolean ast_node_if::has_else_node() const
7622 {
7623 auto res = isl_ast_node_if_has_else_node(get());
7624 return manage(res);
7625 }
7626
then_node()7627 isl::ast_node ast_node_if::then_node() const
7628 {
7629 auto res = isl_ast_node_if_get_then_node(get());
7630 return manage(res);
7631 }
7632
get_then_node()7633 isl::ast_node ast_node_if::get_then_node() const
7634 {
7635 return then_node();
7636 }
7637
7638 inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
7639 {
7640 char *str = isl_ast_node_to_str(obj.get());
7641 if (!str) {
7642 os.setstate(std::ios_base::badbit);
7643 return os;
7644 }
7645 os << str;
7646 free(str);
7647 return os;
7648 }
7649
7650 // implementations for isl::ast_node_list
manage(__isl_take isl_ast_node_list * ptr)7651 ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
7652 return ast_node_list(ptr);
7653 }
manage_copy(__isl_keep isl_ast_node_list * ptr)7654 ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
7655 ptr = isl_ast_node_list_copy(ptr);
7656 return ast_node_list(ptr);
7657 }
7658
ast_node_list()7659 ast_node_list::ast_node_list()
7660 : ptr(nullptr) {}
7661
ast_node_list(const ast_node_list & obj)7662 ast_node_list::ast_node_list(const ast_node_list &obj)
7663 : ptr(nullptr)
7664 {
7665 ptr = obj.copy();
7666 }
7667
ast_node_list(__isl_take isl_ast_node_list * ptr)7668 ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
7669 : ptr(ptr) {}
7670
ast_node_list(isl::ctx ctx,int n)7671 ast_node_list::ast_node_list(isl::ctx ctx, int n)
7672 {
7673 auto res = isl_ast_node_list_alloc(ctx.release(), n);
7674 ptr = res;
7675 }
7676
ast_node_list(isl::ast_node el)7677 ast_node_list::ast_node_list(isl::ast_node el)
7678 {
7679 auto res = isl_ast_node_list_from_ast_node(el.release());
7680 ptr = res;
7681 }
7682
7683 ast_node_list &ast_node_list::operator=(ast_node_list obj) {
7684 std::swap(this->ptr, obj.ptr);
7685 return *this;
7686 }
7687
~ast_node_list()7688 ast_node_list::~ast_node_list() {
7689 if (ptr)
7690 isl_ast_node_list_free(ptr);
7691 }
7692
copy()7693 __isl_give isl_ast_node_list *ast_node_list::copy() const & {
7694 return isl_ast_node_list_copy(ptr);
7695 }
7696
get()7697 __isl_keep isl_ast_node_list *ast_node_list::get() const {
7698 return ptr;
7699 }
7700
release()7701 __isl_give isl_ast_node_list *ast_node_list::release() {
7702 isl_ast_node_list *tmp = ptr;
7703 ptr = nullptr;
7704 return tmp;
7705 }
7706
is_null()7707 bool ast_node_list::is_null() const {
7708 return ptr == nullptr;
7709 }
7710
ctx()7711 isl::ctx ast_node_list::ctx() const {
7712 return isl::ctx(isl_ast_node_list_get_ctx(ptr));
7713 }
7714
add(isl::ast_node el)7715 isl::ast_node_list ast_node_list::add(isl::ast_node el) const
7716 {
7717 auto res = isl_ast_node_list_add(copy(), el.release());
7718 return manage(res);
7719 }
7720
at(int index)7721 isl::ast_node ast_node_list::at(int index) const
7722 {
7723 auto res = isl_ast_node_list_get_at(get(), index);
7724 return manage(res);
7725 }
7726
get_at(int index)7727 isl::ast_node ast_node_list::get_at(int index) const
7728 {
7729 return at(index);
7730 }
7731
clear()7732 isl::ast_node_list ast_node_list::clear() const
7733 {
7734 auto res = isl_ast_node_list_clear(copy());
7735 return manage(res);
7736 }
7737
concat(isl::ast_node_list list2)7738 isl::ast_node_list ast_node_list::concat(isl::ast_node_list list2) const
7739 {
7740 auto res = isl_ast_node_list_concat(copy(), list2.release());
7741 return manage(res);
7742 }
7743
drop(unsigned int first,unsigned int n)7744 isl::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
7745 {
7746 auto res = isl_ast_node_list_drop(copy(), first, n);
7747 return manage(res);
7748 }
7749
foreach(const std::function<stat (isl::ast_node)> & fn)7750 stat ast_node_list::foreach(const std::function<stat(isl::ast_node)> &fn) const
7751 {
7752 struct fn_data {
7753 std::function<stat(isl::ast_node)> func;
7754 } fn_data = { fn };
7755 auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
7756 auto *data = static_cast<struct fn_data *>(arg_1);
7757 auto ret = (data->func)(manage(arg_0));
7758 return ret.release();
7759 };
7760 auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
7761 return manage(res);
7762 }
7763
insert(unsigned int pos,isl::ast_node el)7764 isl::ast_node_list ast_node_list::insert(unsigned int pos, isl::ast_node el) const
7765 {
7766 auto res = isl_ast_node_list_insert(copy(), pos, el.release());
7767 return manage(res);
7768 }
7769
size()7770 class size ast_node_list::size() const
7771 {
7772 auto res = isl_ast_node_list_size(get());
7773 return manage(res);
7774 }
7775
7776 inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
7777 {
7778 char *str = isl_ast_node_list_to_str(obj.get());
7779 if (!str) {
7780 os.setstate(std::ios_base::badbit);
7781 return os;
7782 }
7783 os << str;
7784 free(str);
7785 return os;
7786 }
7787
7788 // implementations for isl::ast_node_mark
ast_node_mark()7789 ast_node_mark::ast_node_mark()
7790 : ast_node() {}
7791
ast_node_mark(const ast_node_mark & obj)7792 ast_node_mark::ast_node_mark(const ast_node_mark &obj)
7793 : ast_node(obj)
7794 {
7795 }
7796
ast_node_mark(__isl_take isl_ast_node * ptr)7797 ast_node_mark::ast_node_mark(__isl_take isl_ast_node *ptr)
7798 : ast_node(ptr) {}
7799
7800 ast_node_mark &ast_node_mark::operator=(ast_node_mark obj) {
7801 std::swap(this->ptr, obj.ptr);
7802 return *this;
7803 }
7804
ctx()7805 isl::ctx ast_node_mark::ctx() const {
7806 return isl::ctx(isl_ast_node_get_ctx(ptr));
7807 }
7808
id()7809 isl::id ast_node_mark::id() const
7810 {
7811 auto res = isl_ast_node_mark_get_id(get());
7812 return manage(res);
7813 }
7814
get_id()7815 isl::id ast_node_mark::get_id() const
7816 {
7817 return id();
7818 }
7819
node()7820 isl::ast_node ast_node_mark::node() const
7821 {
7822 auto res = isl_ast_node_mark_get_node(get());
7823 return manage(res);
7824 }
7825
get_node()7826 isl::ast_node ast_node_mark::get_node() const
7827 {
7828 return node();
7829 }
7830
7831 inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
7832 {
7833 char *str = isl_ast_node_to_str(obj.get());
7834 if (!str) {
7835 os.setstate(std::ios_base::badbit);
7836 return os;
7837 }
7838 os << str;
7839 free(str);
7840 return os;
7841 }
7842
7843 // implementations for isl::ast_node_user
ast_node_user()7844 ast_node_user::ast_node_user()
7845 : ast_node() {}
7846
ast_node_user(const ast_node_user & obj)7847 ast_node_user::ast_node_user(const ast_node_user &obj)
7848 : ast_node(obj)
7849 {
7850 }
7851
ast_node_user(__isl_take isl_ast_node * ptr)7852 ast_node_user::ast_node_user(__isl_take isl_ast_node *ptr)
7853 : ast_node(ptr) {}
7854
7855 ast_node_user &ast_node_user::operator=(ast_node_user obj) {
7856 std::swap(this->ptr, obj.ptr);
7857 return *this;
7858 }
7859
ctx()7860 isl::ctx ast_node_user::ctx() const {
7861 return isl::ctx(isl_ast_node_get_ctx(ptr));
7862 }
7863
expr()7864 isl::ast_expr ast_node_user::expr() const
7865 {
7866 auto res = isl_ast_node_user_get_expr(get());
7867 return manage(res);
7868 }
7869
get_expr()7870 isl::ast_expr ast_node_user::get_expr() const
7871 {
7872 return expr();
7873 }
7874
7875 inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
7876 {
7877 char *str = isl_ast_node_to_str(obj.get());
7878 if (!str) {
7879 os.setstate(std::ios_base::badbit);
7880 return os;
7881 }
7882 os << str;
7883 free(str);
7884 return os;
7885 }
7886
7887 // implementations for isl::basic_map
manage(__isl_take isl_basic_map * ptr)7888 basic_map manage(__isl_take isl_basic_map *ptr) {
7889 return basic_map(ptr);
7890 }
manage_copy(__isl_keep isl_basic_map * ptr)7891 basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
7892 ptr = isl_basic_map_copy(ptr);
7893 return basic_map(ptr);
7894 }
7895
basic_map()7896 basic_map::basic_map()
7897 : ptr(nullptr) {}
7898
basic_map(const basic_map & obj)7899 basic_map::basic_map(const basic_map &obj)
7900 : ptr(nullptr)
7901 {
7902 ptr = obj.copy();
7903 }
7904
basic_map(__isl_take isl_basic_map * ptr)7905 basic_map::basic_map(__isl_take isl_basic_map *ptr)
7906 : ptr(ptr) {}
7907
basic_map(isl::ctx ctx,const std::string & str)7908 basic_map::basic_map(isl::ctx ctx, const std::string &str)
7909 {
7910 auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
7911 ptr = res;
7912 }
7913
7914 basic_map &basic_map::operator=(basic_map obj) {
7915 std::swap(this->ptr, obj.ptr);
7916 return *this;
7917 }
7918
~basic_map()7919 basic_map::~basic_map() {
7920 if (ptr)
7921 isl_basic_map_free(ptr);
7922 }
7923
copy()7924 __isl_give isl_basic_map *basic_map::copy() const & {
7925 return isl_basic_map_copy(ptr);
7926 }
7927
get()7928 __isl_keep isl_basic_map *basic_map::get() const {
7929 return ptr;
7930 }
7931
release()7932 __isl_give isl_basic_map *basic_map::release() {
7933 isl_basic_map *tmp = ptr;
7934 ptr = nullptr;
7935 return tmp;
7936 }
7937
is_null()7938 bool basic_map::is_null() const {
7939 return ptr == nullptr;
7940 }
7941
ctx()7942 isl::ctx basic_map::ctx() const {
7943 return isl::ctx(isl_basic_map_get_ctx(ptr));
7944 }
7945
add_constraint(const isl::constraint & constraint)7946 isl::map basic_map::add_constraint(const isl::constraint &constraint) const
7947 {
7948 return isl::map(*this).add_constraint(constraint);
7949 }
7950
add_dims(isl::dim type,unsigned int n)7951 isl::map basic_map::add_dims(isl::dim type, unsigned int n) const
7952 {
7953 return isl::map(*this).add_dims(type, n);
7954 }
7955
affine_hull()7956 isl::basic_map basic_map::affine_hull() const
7957 {
7958 auto res = isl_basic_map_affine_hull(copy());
7959 return manage(res);
7960 }
7961
align_params(const isl::space & model)7962 isl::map basic_map::align_params(const isl::space &model) const
7963 {
7964 return isl::map(*this).align_params(model);
7965 }
7966
apply_domain(isl::basic_map bmap2)7967 isl::basic_map basic_map::apply_domain(isl::basic_map bmap2) const
7968 {
7969 auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
7970 return manage(res);
7971 }
7972
apply_domain(const isl::map & map2)7973 isl::map basic_map::apply_domain(const isl::map &map2) const
7974 {
7975 return isl::map(*this).apply_domain(map2);
7976 }
7977
apply_domain(const isl::union_map & umap2)7978 isl::union_map basic_map::apply_domain(const isl::union_map &umap2) const
7979 {
7980 return isl::map(*this).apply_domain(umap2);
7981 }
7982
apply_range(isl::basic_map bmap2)7983 isl::basic_map basic_map::apply_range(isl::basic_map bmap2) const
7984 {
7985 auto res = isl_basic_map_apply_range(copy(), bmap2.release());
7986 return manage(res);
7987 }
7988
apply_range(const isl::map & map2)7989 isl::map basic_map::apply_range(const isl::map &map2) const
7990 {
7991 return isl::map(*this).apply_range(map2);
7992 }
7993
apply_range(const isl::union_map & umap2)7994 isl::union_map basic_map::apply_range(const isl::union_map &umap2) const
7995 {
7996 return isl::map(*this).apply_range(umap2);
7997 }
7998
as_map()7999 isl::map basic_map::as_map() const
8000 {
8001 return isl::map(*this).as_map();
8002 }
8003
as_multi_union_pw_aff()8004 isl::multi_union_pw_aff basic_map::as_multi_union_pw_aff() const
8005 {
8006 return isl::map(*this).as_multi_union_pw_aff();
8007 }
8008
as_pw_multi_aff()8009 isl::pw_multi_aff basic_map::as_pw_multi_aff() const
8010 {
8011 return isl::map(*this).as_pw_multi_aff();
8012 }
8013
as_union_pw_multi_aff()8014 isl::union_pw_multi_aff basic_map::as_union_pw_multi_aff() const
8015 {
8016 return isl::map(*this).as_union_pw_multi_aff();
8017 }
8018
basic_map_list()8019 isl::basic_map_list basic_map::basic_map_list() const
8020 {
8021 return isl::map(*this).basic_map_list();
8022 }
8023
bind_domain(const isl::multi_id & tuple)8024 isl::set basic_map::bind_domain(const isl::multi_id &tuple) const
8025 {
8026 return isl::map(*this).bind_domain(tuple);
8027 }
8028
bind_range(const isl::multi_id & tuple)8029 isl::set basic_map::bind_range(const isl::multi_id &tuple) const
8030 {
8031 return isl::map(*this).bind_range(tuple);
8032 }
8033
can_curry()8034 boolean basic_map::can_curry() const
8035 {
8036 return isl::map(*this).can_curry();
8037 }
8038
coalesce()8039 isl::map basic_map::coalesce() const
8040 {
8041 return isl::map(*this).coalesce();
8042 }
8043
complement()8044 isl::map basic_map::complement() const
8045 {
8046 return isl::map(*this).complement();
8047 }
8048
compute_divs()8049 isl::union_map basic_map::compute_divs() const
8050 {
8051 return isl::map(*this).compute_divs();
8052 }
8053
curry()8054 isl::map basic_map::curry() const
8055 {
8056 return isl::map(*this).curry();
8057 }
8058
deltas()8059 isl::basic_set basic_map::deltas() const
8060 {
8061 auto res = isl_basic_map_deltas(copy());
8062 return manage(res);
8063 }
8064
detect_equalities()8065 isl::basic_map basic_map::detect_equalities() const
8066 {
8067 auto res = isl_basic_map_detect_equalities(copy());
8068 return manage(res);
8069 }
8070
dim(isl::dim type)8071 class size basic_map::dim(isl::dim type) const
8072 {
8073 return isl::map(*this).dim(type);
8074 }
8075
dim_max(int pos)8076 isl::pw_aff basic_map::dim_max(int pos) const
8077 {
8078 return isl::map(*this).dim_max(pos);
8079 }
8080
dim_min(int pos)8081 isl::pw_aff basic_map::dim_min(int pos) const
8082 {
8083 return isl::map(*this).dim_min(pos);
8084 }
8085
domain()8086 isl::basic_set basic_map::domain() const
8087 {
8088 auto res = isl_basic_map_domain(copy());
8089 return manage(res);
8090 }
8091
domain_factor_domain()8092 isl::map basic_map::domain_factor_domain() const
8093 {
8094 return isl::map(*this).domain_factor_domain();
8095 }
8096
domain_factor_range()8097 isl::map basic_map::domain_factor_range() const
8098 {
8099 return isl::map(*this).domain_factor_range();
8100 }
8101
domain_map()8102 isl::map basic_map::domain_map() const
8103 {
8104 return isl::map(*this).domain_map();
8105 }
8106
domain_map_union_pw_multi_aff()8107 isl::union_pw_multi_aff basic_map::domain_map_union_pw_multi_aff() const
8108 {
8109 return isl::map(*this).domain_map_union_pw_multi_aff();
8110 }
8111
domain_product(const isl::map & map2)8112 isl::map basic_map::domain_product(const isl::map &map2) const
8113 {
8114 return isl::map(*this).domain_product(map2);
8115 }
8116
domain_product(const isl::union_map & umap2)8117 isl::union_map basic_map::domain_product(const isl::union_map &umap2) const
8118 {
8119 return isl::map(*this).domain_product(umap2);
8120 }
8121
domain_tuple_dim()8122 class size basic_map::domain_tuple_dim() const
8123 {
8124 return isl::map(*this).domain_tuple_dim();
8125 }
8126
domain_tuple_id()8127 isl::id basic_map::domain_tuple_id() const
8128 {
8129 return isl::map(*this).domain_tuple_id();
8130 }
8131
eq_at(const isl::multi_pw_aff & mpa)8132 isl::map basic_map::eq_at(const isl::multi_pw_aff &mpa) const
8133 {
8134 return isl::map(*this).eq_at(mpa);
8135 }
8136
eq_at(const isl::multi_union_pw_aff & mupa)8137 isl::union_map basic_map::eq_at(const isl::multi_union_pw_aff &mupa) const
8138 {
8139 return isl::map(*this).eq_at(mupa);
8140 }
8141
equal(isl::space space,unsigned int n_equal)8142 isl::basic_map basic_map::equal(isl::space space, unsigned int n_equal)
8143 {
8144 auto res = isl_basic_map_equal(space.release(), n_equal);
8145 return manage(res);
8146 }
8147
equate(isl::dim type1,int pos1,isl::dim type2,int pos2)8148 isl::basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8149 {
8150 auto res = isl_basic_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8151 return manage(res);
8152 }
8153
every_map(const std::function<boolean (isl::map)> & test)8154 boolean basic_map::every_map(const std::function<boolean(isl::map)> &test) const
8155 {
8156 return isl::map(*this).every_map(test);
8157 }
8158
extract_map(const isl::space & space)8159 isl::map basic_map::extract_map(const isl::space &space) const
8160 {
8161 return isl::map(*this).extract_map(space);
8162 }
8163
factor_domain()8164 isl::map basic_map::factor_domain() const
8165 {
8166 return isl::map(*this).factor_domain();
8167 }
8168
factor_range()8169 isl::map basic_map::factor_range() const
8170 {
8171 return isl::map(*this).factor_range();
8172 }
8173
fix_si(isl::dim type,unsigned int pos,int value)8174 isl::basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const
8175 {
8176 auto res = isl_basic_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8177 return manage(res);
8178 }
8179
fix_val(isl::dim type,unsigned int pos,isl::val v)8180 isl::basic_map basic_map::fix_val(isl::dim type, unsigned int pos, isl::val v) const
8181 {
8182 auto res = isl_basic_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
8183 return manage(res);
8184 }
8185
fix_val(isl::dim type,unsigned int pos,long v)8186 isl::basic_map basic_map::fix_val(isl::dim type, unsigned int pos, long v) const
8187 {
8188 return this->fix_val(type, pos, isl::val(ctx(), v));
8189 }
8190
fixed_power(const isl::val & exp)8191 isl::union_map basic_map::fixed_power(const isl::val &exp) const
8192 {
8193 return isl::map(*this).fixed_power(exp);
8194 }
8195
fixed_power(long exp)8196 isl::union_map basic_map::fixed_power(long exp) const
8197 {
8198 return this->fixed_power(isl::val(ctx(), exp));
8199 }
8200
flat_range_product(const isl::map & map2)8201 isl::map basic_map::flat_range_product(const isl::map &map2) const
8202 {
8203 return isl::map(*this).flat_range_product(map2);
8204 }
8205
flat_range_product(const isl::union_map & umap2)8206 isl::union_map basic_map::flat_range_product(const isl::union_map &umap2) const
8207 {
8208 return isl::map(*this).flat_range_product(umap2);
8209 }
8210
flatten()8211 isl::basic_map basic_map::flatten() const
8212 {
8213 auto res = isl_basic_map_flatten(copy());
8214 return manage(res);
8215 }
8216
flatten_domain()8217 isl::basic_map basic_map::flatten_domain() const
8218 {
8219 auto res = isl_basic_map_flatten_domain(copy());
8220 return manage(res);
8221 }
8222
flatten_range()8223 isl::basic_map basic_map::flatten_range() const
8224 {
8225 auto res = isl_basic_map_flatten_range(copy());
8226 return manage(res);
8227 }
8228
floordiv_val(const isl::val & d)8229 isl::map basic_map::floordiv_val(const isl::val &d) const
8230 {
8231 return isl::map(*this).floordiv_val(d);
8232 }
8233
floordiv_val(long d)8234 isl::map basic_map::floordiv_val(long d) const
8235 {
8236 return this->floordiv_val(isl::val(ctx(), d));
8237 }
8238
foreach_basic_map(const std::function<stat (isl::basic_map)> & fn)8239 stat basic_map::foreach_basic_map(const std::function<stat(isl::basic_map)> &fn) const
8240 {
8241 return isl::map(*this).foreach_basic_map(fn);
8242 }
8243
foreach_map(const std::function<stat (isl::map)> & fn)8244 stat basic_map::foreach_map(const std::function<stat(isl::map)> &fn) const
8245 {
8246 return isl::map(*this).foreach_map(fn);
8247 }
8248
from_aff(isl::aff aff)8249 isl::basic_map basic_map::from_aff(isl::aff aff)
8250 {
8251 auto res = isl_basic_map_from_aff(aff.release());
8252 return manage(res);
8253 }
8254
from_domain_and_range(isl::basic_set domain,isl::basic_set range)8255 isl::basic_map basic_map::from_domain_and_range(isl::basic_set domain, isl::basic_set range)
8256 {
8257 auto res = isl_basic_map_from_domain_and_range(domain.release(), range.release());
8258 return manage(res);
8259 }
8260
gist(isl::basic_map context)8261 isl::basic_map basic_map::gist(isl::basic_map context) const
8262 {
8263 auto res = isl_basic_map_gist(copy(), context.release());
8264 return manage(res);
8265 }
8266
gist(const isl::map & context)8267 isl::map basic_map::gist(const isl::map &context) const
8268 {
8269 return isl::map(*this).gist(context);
8270 }
8271
gist(const isl::union_map & context)8272 isl::union_map basic_map::gist(const isl::union_map &context) const
8273 {
8274 return isl::map(*this).gist(context);
8275 }
8276
gist_domain(const isl::set & context)8277 isl::map basic_map::gist_domain(const isl::set &context) const
8278 {
8279 return isl::map(*this).gist_domain(context);
8280 }
8281
gist_domain(const isl::union_set & uset)8282 isl::union_map basic_map::gist_domain(const isl::union_set &uset) const
8283 {
8284 return isl::map(*this).gist_domain(uset);
8285 }
8286
gist_params(const isl::set & context)8287 isl::map basic_map::gist_params(const isl::set &context) const
8288 {
8289 return isl::map(*this).gist_params(context);
8290 }
8291
gist_range(const isl::union_set & uset)8292 isl::union_map basic_map::gist_range(const isl::union_set &uset) const
8293 {
8294 return isl::map(*this).gist_range(uset);
8295 }
8296
has_domain_tuple_id()8297 boolean basic_map::has_domain_tuple_id() const
8298 {
8299 return isl::map(*this).has_domain_tuple_id();
8300 }
8301
has_equal_space(const isl::map & map2)8302 boolean basic_map::has_equal_space(const isl::map &map2) const
8303 {
8304 return isl::map(*this).has_equal_space(map2);
8305 }
8306
has_range_tuple_id()8307 boolean basic_map::has_range_tuple_id() const
8308 {
8309 return isl::map(*this).has_range_tuple_id();
8310 }
8311
has_tuple_id(isl::dim type)8312 boolean basic_map::has_tuple_id(isl::dim type) const
8313 {
8314 return isl::map(*this).has_tuple_id(type);
8315 }
8316
has_tuple_name(isl::dim type)8317 boolean basic_map::has_tuple_name(isl::dim type) const
8318 {
8319 return isl::map(*this).has_tuple_name(type);
8320 }
8321
intersect(isl::basic_map bmap2)8322 isl::basic_map basic_map::intersect(isl::basic_map bmap2) const
8323 {
8324 auto res = isl_basic_map_intersect(copy(), bmap2.release());
8325 return manage(res);
8326 }
8327
intersect(const isl::map & map2)8328 isl::map basic_map::intersect(const isl::map &map2) const
8329 {
8330 return isl::map(*this).intersect(map2);
8331 }
8332
intersect(const isl::union_map & umap2)8333 isl::union_map basic_map::intersect(const isl::union_map &umap2) const
8334 {
8335 return isl::map(*this).intersect(umap2);
8336 }
8337
intersect_domain(isl::basic_set bset)8338 isl::basic_map basic_map::intersect_domain(isl::basic_set bset) const
8339 {
8340 auto res = isl_basic_map_intersect_domain(copy(), bset.release());
8341 return manage(res);
8342 }
8343
intersect_domain(const isl::set & set)8344 isl::map basic_map::intersect_domain(const isl::set &set) const
8345 {
8346 return isl::map(*this).intersect_domain(set);
8347 }
8348
intersect_domain(const isl::space & space)8349 isl::union_map basic_map::intersect_domain(const isl::space &space) const
8350 {
8351 return isl::map(*this).intersect_domain(space);
8352 }
8353
intersect_domain(const isl::union_set & uset)8354 isl::union_map basic_map::intersect_domain(const isl::union_set &uset) const
8355 {
8356 return isl::map(*this).intersect_domain(uset);
8357 }
8358
intersect_domain(const isl::point & bset)8359 isl::basic_map basic_map::intersect_domain(const isl::point &bset) const
8360 {
8361 return this->intersect_domain(isl::basic_set(bset));
8362 }
8363
intersect_domain_factor_domain(const isl::map & factor)8364 isl::map basic_map::intersect_domain_factor_domain(const isl::map &factor) const
8365 {
8366 return isl::map(*this).intersect_domain_factor_domain(factor);
8367 }
8368
intersect_domain_factor_domain(const isl::union_map & factor)8369 isl::union_map basic_map::intersect_domain_factor_domain(const isl::union_map &factor) const
8370 {
8371 return isl::map(*this).intersect_domain_factor_domain(factor);
8372 }
8373
intersect_domain_factor_range(const isl::map & factor)8374 isl::map basic_map::intersect_domain_factor_range(const isl::map &factor) const
8375 {
8376 return isl::map(*this).intersect_domain_factor_range(factor);
8377 }
8378
intersect_domain_factor_range(const isl::union_map & factor)8379 isl::union_map basic_map::intersect_domain_factor_range(const isl::union_map &factor) const
8380 {
8381 return isl::map(*this).intersect_domain_factor_range(factor);
8382 }
8383
intersect_params(const isl::set & params)8384 isl::map basic_map::intersect_params(const isl::set ¶ms) const
8385 {
8386 return isl::map(*this).intersect_params(params);
8387 }
8388
intersect_range(isl::basic_set bset)8389 isl::basic_map basic_map::intersect_range(isl::basic_set bset) const
8390 {
8391 auto res = isl_basic_map_intersect_range(copy(), bset.release());
8392 return manage(res);
8393 }
8394
intersect_range(const isl::set & set)8395 isl::map basic_map::intersect_range(const isl::set &set) const
8396 {
8397 return isl::map(*this).intersect_range(set);
8398 }
8399
intersect_range(const isl::space & space)8400 isl::union_map basic_map::intersect_range(const isl::space &space) const
8401 {
8402 return isl::map(*this).intersect_range(space);
8403 }
8404
intersect_range(const isl::union_set & uset)8405 isl::union_map basic_map::intersect_range(const isl::union_set &uset) const
8406 {
8407 return isl::map(*this).intersect_range(uset);
8408 }
8409
intersect_range(const isl::point & bset)8410 isl::basic_map basic_map::intersect_range(const isl::point &bset) const
8411 {
8412 return this->intersect_range(isl::basic_set(bset));
8413 }
8414
intersect_range_factor_domain(const isl::map & factor)8415 isl::map basic_map::intersect_range_factor_domain(const isl::map &factor) const
8416 {
8417 return isl::map(*this).intersect_range_factor_domain(factor);
8418 }
8419
intersect_range_factor_domain(const isl::union_map & factor)8420 isl::union_map basic_map::intersect_range_factor_domain(const isl::union_map &factor) const
8421 {
8422 return isl::map(*this).intersect_range_factor_domain(factor);
8423 }
8424
intersect_range_factor_range(const isl::map & factor)8425 isl::map basic_map::intersect_range_factor_range(const isl::map &factor) const
8426 {
8427 return isl::map(*this).intersect_range_factor_range(factor);
8428 }
8429
intersect_range_factor_range(const isl::union_map & factor)8430 isl::union_map basic_map::intersect_range_factor_range(const isl::union_map &factor) const
8431 {
8432 return isl::map(*this).intersect_range_factor_range(factor);
8433 }
8434
involves_dims(isl::dim type,unsigned int first,unsigned int n)8435 boolean basic_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
8436 {
8437 return isl::map(*this).involves_dims(type, first, n);
8438 }
8439
is_bijective()8440 boolean basic_map::is_bijective() const
8441 {
8442 return isl::map(*this).is_bijective();
8443 }
8444
is_disjoint(const isl::map & map2)8445 boolean basic_map::is_disjoint(const isl::map &map2) const
8446 {
8447 return isl::map(*this).is_disjoint(map2);
8448 }
8449
is_disjoint(const isl::union_map & umap2)8450 boolean basic_map::is_disjoint(const isl::union_map &umap2) const
8451 {
8452 return isl::map(*this).is_disjoint(umap2);
8453 }
8454
is_empty()8455 boolean basic_map::is_empty() const
8456 {
8457 auto res = isl_basic_map_is_empty(get());
8458 return manage(res);
8459 }
8460
is_equal(const isl::basic_map & bmap2)8461 boolean basic_map::is_equal(const isl::basic_map &bmap2) const
8462 {
8463 auto res = isl_basic_map_is_equal(get(), bmap2.get());
8464 return manage(res);
8465 }
8466
is_equal(const isl::map & map2)8467 boolean basic_map::is_equal(const isl::map &map2) const
8468 {
8469 return isl::map(*this).is_equal(map2);
8470 }
8471
is_equal(const isl::union_map & umap2)8472 boolean basic_map::is_equal(const isl::union_map &umap2) const
8473 {
8474 return isl::map(*this).is_equal(umap2);
8475 }
8476
is_injective()8477 boolean basic_map::is_injective() const
8478 {
8479 return isl::map(*this).is_injective();
8480 }
8481
is_single_valued()8482 boolean basic_map::is_single_valued() const
8483 {
8484 return isl::map(*this).is_single_valued();
8485 }
8486
is_strict_subset(const isl::map & map2)8487 boolean basic_map::is_strict_subset(const isl::map &map2) const
8488 {
8489 return isl::map(*this).is_strict_subset(map2);
8490 }
8491
is_strict_subset(const isl::union_map & umap2)8492 boolean basic_map::is_strict_subset(const isl::union_map &umap2) const
8493 {
8494 return isl::map(*this).is_strict_subset(umap2);
8495 }
8496
is_subset(const isl::basic_map & bmap2)8497 boolean basic_map::is_subset(const isl::basic_map &bmap2) const
8498 {
8499 auto res = isl_basic_map_is_subset(get(), bmap2.get());
8500 return manage(res);
8501 }
8502
is_subset(const isl::map & map2)8503 boolean basic_map::is_subset(const isl::map &map2) const
8504 {
8505 return isl::map(*this).is_subset(map2);
8506 }
8507
is_subset(const isl::union_map & umap2)8508 boolean basic_map::is_subset(const isl::union_map &umap2) const
8509 {
8510 return isl::map(*this).is_subset(umap2);
8511 }
8512
isa_map()8513 boolean basic_map::isa_map() const
8514 {
8515 return isl::map(*this).isa_map();
8516 }
8517
lex_ge_at(const isl::multi_pw_aff & mpa)8518 isl::map basic_map::lex_ge_at(const isl::multi_pw_aff &mpa) const
8519 {
8520 return isl::map(*this).lex_ge_at(mpa);
8521 }
8522
lex_gt_at(const isl::multi_pw_aff & mpa)8523 isl::map basic_map::lex_gt_at(const isl::multi_pw_aff &mpa) const
8524 {
8525 return isl::map(*this).lex_gt_at(mpa);
8526 }
8527
lex_le_at(const isl::multi_pw_aff & mpa)8528 isl::map basic_map::lex_le_at(const isl::multi_pw_aff &mpa) const
8529 {
8530 return isl::map(*this).lex_le_at(mpa);
8531 }
8532
lex_lt_at(const isl::multi_pw_aff & mpa)8533 isl::map basic_map::lex_lt_at(const isl::multi_pw_aff &mpa) const
8534 {
8535 return isl::map(*this).lex_lt_at(mpa);
8536 }
8537
lexmax()8538 isl::map basic_map::lexmax() const
8539 {
8540 auto res = isl_basic_map_lexmax(copy());
8541 return manage(res);
8542 }
8543
lexmax_pw_multi_aff()8544 isl::pw_multi_aff basic_map::lexmax_pw_multi_aff() const
8545 {
8546 return isl::map(*this).lexmax_pw_multi_aff();
8547 }
8548
lexmin()8549 isl::map basic_map::lexmin() const
8550 {
8551 auto res = isl_basic_map_lexmin(copy());
8552 return manage(res);
8553 }
8554
lexmin_pw_multi_aff()8555 isl::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
8556 {
8557 return isl::map(*this).lexmin_pw_multi_aff();
8558 }
8559
lower_bound(const isl::multi_pw_aff & lower)8560 isl::map basic_map::lower_bound(const isl::multi_pw_aff &lower) const
8561 {
8562 return isl::map(*this).lower_bound(lower);
8563 }
8564
lower_bound_si(isl::dim type,unsigned int pos,int value)8565 isl::map basic_map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
8566 {
8567 return isl::map(*this).lower_bound_si(type, pos, value);
8568 }
8569
map_list()8570 isl::map_list basic_map::map_list() const
8571 {
8572 return isl::map(*this).map_list();
8573 }
8574
max_multi_pw_aff()8575 isl::multi_pw_aff basic_map::max_multi_pw_aff() const
8576 {
8577 return isl::map(*this).max_multi_pw_aff();
8578 }
8579
min_multi_pw_aff()8580 isl::multi_pw_aff basic_map::min_multi_pw_aff() const
8581 {
8582 return isl::map(*this).min_multi_pw_aff();
8583 }
8584
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)8585 isl::map basic_map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
8586 {
8587 return isl::map(*this).move_dims(dst_type, dst_pos, src_type, src_pos, n);
8588 }
8589
n_basic_map()8590 class size basic_map::n_basic_map() const
8591 {
8592 return isl::map(*this).n_basic_map();
8593 }
8594
order_lt(isl::dim type1,int pos1,isl::dim type2,int pos2)8595 isl::map basic_map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8596 {
8597 return isl::map(*this).order_lt(type1, pos1, type2, pos2);
8598 }
8599
params()8600 isl::set basic_map::params() const
8601 {
8602 return isl::map(*this).params();
8603 }
8604
plain_get_val_if_fixed(isl::dim type,unsigned int pos)8605 isl::val basic_map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
8606 {
8607 auto res = isl_basic_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
8608 return manage(res);
8609 }
8610
polyhedral_hull()8611 isl::basic_map basic_map::polyhedral_hull() const
8612 {
8613 return isl::map(*this).polyhedral_hull();
8614 }
8615
preimage_domain(const isl::multi_aff & ma)8616 isl::map basic_map::preimage_domain(const isl::multi_aff &ma) const
8617 {
8618 return isl::map(*this).preimage_domain(ma);
8619 }
8620
preimage_domain(const isl::multi_pw_aff & mpa)8621 isl::map basic_map::preimage_domain(const isl::multi_pw_aff &mpa) const
8622 {
8623 return isl::map(*this).preimage_domain(mpa);
8624 }
8625
preimage_domain(const isl::pw_multi_aff & pma)8626 isl::map basic_map::preimage_domain(const isl::pw_multi_aff &pma) const
8627 {
8628 return isl::map(*this).preimage_domain(pma);
8629 }
8630
preimage_domain(const isl::union_pw_multi_aff & upma)8631 isl::union_map basic_map::preimage_domain(const isl::union_pw_multi_aff &upma) const
8632 {
8633 return isl::map(*this).preimage_domain(upma);
8634 }
8635
preimage_range(const isl::multi_aff & ma)8636 isl::map basic_map::preimage_range(const isl::multi_aff &ma) const
8637 {
8638 return isl::map(*this).preimage_range(ma);
8639 }
8640
preimage_range(const isl::pw_multi_aff & pma)8641 isl::map basic_map::preimage_range(const isl::pw_multi_aff &pma) const
8642 {
8643 return isl::map(*this).preimage_range(pma);
8644 }
8645
preimage_range(const isl::union_pw_multi_aff & upma)8646 isl::union_map basic_map::preimage_range(const isl::union_pw_multi_aff &upma) const
8647 {
8648 return isl::map(*this).preimage_range(upma);
8649 }
8650
product(const isl::map & map2)8651 isl::map basic_map::product(const isl::map &map2) const
8652 {
8653 return isl::map(*this).product(map2);
8654 }
8655
product(const isl::union_map & umap2)8656 isl::union_map basic_map::product(const isl::union_map &umap2) const
8657 {
8658 return isl::map(*this).product(umap2);
8659 }
8660
project_out(isl::dim type,unsigned int first,unsigned int n)8661 isl::map basic_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
8662 {
8663 return isl::map(*this).project_out(type, first, n);
8664 }
8665
project_out_all_params()8666 isl::map basic_map::project_out_all_params() const
8667 {
8668 return isl::map(*this).project_out_all_params();
8669 }
8670
range()8671 isl::set basic_map::range() const
8672 {
8673 return isl::map(*this).range();
8674 }
8675
range_factor_domain()8676 isl::map basic_map::range_factor_domain() const
8677 {
8678 return isl::map(*this).range_factor_domain();
8679 }
8680
range_factor_range()8681 isl::map basic_map::range_factor_range() const
8682 {
8683 return isl::map(*this).range_factor_range();
8684 }
8685
range_lattice_tile()8686 isl::fixed_box basic_map::range_lattice_tile() const
8687 {
8688 return isl::map(*this).range_lattice_tile();
8689 }
8690
range_map()8691 isl::map basic_map::range_map() const
8692 {
8693 return isl::map(*this).range_map();
8694 }
8695
range_product(const isl::map & map2)8696 isl::map basic_map::range_product(const isl::map &map2) const
8697 {
8698 return isl::map(*this).range_product(map2);
8699 }
8700
range_product(const isl::union_map & umap2)8701 isl::union_map basic_map::range_product(const isl::union_map &umap2) const
8702 {
8703 return isl::map(*this).range_product(umap2);
8704 }
8705
range_reverse()8706 isl::map basic_map::range_reverse() const
8707 {
8708 return isl::map(*this).range_reverse();
8709 }
8710
range_simple_fixed_box_hull()8711 isl::fixed_box basic_map::range_simple_fixed_box_hull() const
8712 {
8713 return isl::map(*this).range_simple_fixed_box_hull();
8714 }
8715
range_tuple_dim()8716 class size basic_map::range_tuple_dim() const
8717 {
8718 return isl::map(*this).range_tuple_dim();
8719 }
8720
range_tuple_id()8721 isl::id basic_map::range_tuple_id() const
8722 {
8723 return isl::map(*this).range_tuple_id();
8724 }
8725
reverse()8726 isl::basic_map basic_map::reverse() const
8727 {
8728 auto res = isl_basic_map_reverse(copy());
8729 return manage(res);
8730 }
8731
sample()8732 isl::basic_map basic_map::sample() const
8733 {
8734 auto res = isl_basic_map_sample(copy());
8735 return manage(res);
8736 }
8737
set_domain_tuple(const isl::id & id)8738 isl::map basic_map::set_domain_tuple(const isl::id &id) const
8739 {
8740 return isl::map(*this).set_domain_tuple(id);
8741 }
8742
set_domain_tuple(const std::string & id)8743 isl::map basic_map::set_domain_tuple(const std::string &id) const
8744 {
8745 return this->set_domain_tuple(isl::id(ctx(), id));
8746 }
8747
set_range_tuple(const isl::id & id)8748 isl::map basic_map::set_range_tuple(const isl::id &id) const
8749 {
8750 return isl::map(*this).set_range_tuple(id);
8751 }
8752
set_range_tuple(const std::string & id)8753 isl::map basic_map::set_range_tuple(const std::string &id) const
8754 {
8755 return this->set_range_tuple(isl::id(ctx(), id));
8756 }
8757
set_tuple_id(isl::dim type,const isl::id & id)8758 isl::map basic_map::set_tuple_id(isl::dim type, const isl::id &id) const
8759 {
8760 return isl::map(*this).set_tuple_id(type, id);
8761 }
8762
set_tuple_id(isl::dim type,const std::string & id)8763 isl::map basic_map::set_tuple_id(isl::dim type, const std::string &id) const
8764 {
8765 return this->set_tuple_id(type, isl::id(ctx(), id));
8766 }
8767
space()8768 isl::space basic_map::space() const
8769 {
8770 return isl::map(*this).space();
8771 }
8772
subtract(const isl::map & map2)8773 isl::map basic_map::subtract(const isl::map &map2) const
8774 {
8775 return isl::map(*this).subtract(map2);
8776 }
8777
subtract(const isl::union_map & umap2)8778 isl::union_map basic_map::subtract(const isl::union_map &umap2) const
8779 {
8780 return isl::map(*this).subtract(umap2);
8781 }
8782
subtract_domain(const isl::union_set & dom)8783 isl::union_map basic_map::subtract_domain(const isl::union_set &dom) const
8784 {
8785 return isl::map(*this).subtract_domain(dom);
8786 }
8787
subtract_range(const isl::union_set & dom)8788 isl::union_map basic_map::subtract_range(const isl::union_set &dom) const
8789 {
8790 return isl::map(*this).subtract_range(dom);
8791 }
8792
sum(const isl::map & map2)8793 isl::map basic_map::sum(const isl::map &map2) const
8794 {
8795 return isl::map(*this).sum(map2);
8796 }
8797
to_list()8798 isl::basic_map_list basic_map::to_list() const
8799 {
8800 auto res = isl_basic_map_to_list(copy());
8801 return manage(res);
8802 }
8803
to_union_map()8804 isl::union_map basic_map::to_union_map() const
8805 {
8806 return isl::map(*this).to_union_map();
8807 }
8808
tuple_id(isl::dim type)8809 isl::id basic_map::tuple_id(isl::dim type) const
8810 {
8811 return isl::map(*this).tuple_id(type);
8812 }
8813
uncurry()8814 isl::map basic_map::uncurry() const
8815 {
8816 return isl::map(*this).uncurry();
8817 }
8818
unite(isl::basic_map bmap2)8819 isl::map basic_map::unite(isl::basic_map bmap2) const
8820 {
8821 auto res = isl_basic_map_union(copy(), bmap2.release());
8822 return manage(res);
8823 }
8824
unite(const isl::map & map2)8825 isl::map basic_map::unite(const isl::map &map2) const
8826 {
8827 return isl::map(*this).unite(map2);
8828 }
8829
unite(const isl::union_map & umap2)8830 isl::union_map basic_map::unite(const isl::union_map &umap2) const
8831 {
8832 return isl::map(*this).unite(umap2);
8833 }
8834
universe(isl::space space)8835 isl::basic_map basic_map::universe(isl::space space)
8836 {
8837 auto res = isl_basic_map_universe(space.release());
8838 return manage(res);
8839 }
8840
unshifted_simple_hull()8841 isl::basic_map basic_map::unshifted_simple_hull() const
8842 {
8843 return isl::map(*this).unshifted_simple_hull();
8844 }
8845
upper_bound(const isl::multi_pw_aff & upper)8846 isl::map basic_map::upper_bound(const isl::multi_pw_aff &upper) const
8847 {
8848 return isl::map(*this).upper_bound(upper);
8849 }
8850
upper_bound_si(isl::dim type,unsigned int pos,int value)8851 isl::map basic_map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
8852 {
8853 return isl::map(*this).upper_bound_si(type, pos, value);
8854 }
8855
wrap()8856 isl::set basic_map::wrap() const
8857 {
8858 return isl::map(*this).wrap();
8859 }
8860
zip()8861 isl::map basic_map::zip() const
8862 {
8863 return isl::map(*this).zip();
8864 }
8865
8866 inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
8867 {
8868 char *str = isl_basic_map_to_str(obj.get());
8869 if (!str) {
8870 os.setstate(std::ios_base::badbit);
8871 return os;
8872 }
8873 os << str;
8874 free(str);
8875 return os;
8876 }
8877
8878 // implementations for isl::basic_map_list
manage(__isl_take isl_basic_map_list * ptr)8879 basic_map_list manage(__isl_take isl_basic_map_list *ptr) {
8880 return basic_map_list(ptr);
8881 }
manage_copy(__isl_keep isl_basic_map_list * ptr)8882 basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) {
8883 ptr = isl_basic_map_list_copy(ptr);
8884 return basic_map_list(ptr);
8885 }
8886
basic_map_list()8887 basic_map_list::basic_map_list()
8888 : ptr(nullptr) {}
8889
basic_map_list(const basic_map_list & obj)8890 basic_map_list::basic_map_list(const basic_map_list &obj)
8891 : ptr(nullptr)
8892 {
8893 ptr = obj.copy();
8894 }
8895
basic_map_list(__isl_take isl_basic_map_list * ptr)8896 basic_map_list::basic_map_list(__isl_take isl_basic_map_list *ptr)
8897 : ptr(ptr) {}
8898
basic_map_list(isl::ctx ctx,int n)8899 basic_map_list::basic_map_list(isl::ctx ctx, int n)
8900 {
8901 auto res = isl_basic_map_list_alloc(ctx.release(), n);
8902 ptr = res;
8903 }
8904
basic_map_list(isl::basic_map el)8905 basic_map_list::basic_map_list(isl::basic_map el)
8906 {
8907 auto res = isl_basic_map_list_from_basic_map(el.release());
8908 ptr = res;
8909 }
8910
8911 basic_map_list &basic_map_list::operator=(basic_map_list obj) {
8912 std::swap(this->ptr, obj.ptr);
8913 return *this;
8914 }
8915
~basic_map_list()8916 basic_map_list::~basic_map_list() {
8917 if (ptr)
8918 isl_basic_map_list_free(ptr);
8919 }
8920
copy()8921 __isl_give isl_basic_map_list *basic_map_list::copy() const & {
8922 return isl_basic_map_list_copy(ptr);
8923 }
8924
get()8925 __isl_keep isl_basic_map_list *basic_map_list::get() const {
8926 return ptr;
8927 }
8928
release()8929 __isl_give isl_basic_map_list *basic_map_list::release() {
8930 isl_basic_map_list *tmp = ptr;
8931 ptr = nullptr;
8932 return tmp;
8933 }
8934
is_null()8935 bool basic_map_list::is_null() const {
8936 return ptr == nullptr;
8937 }
8938
ctx()8939 isl::ctx basic_map_list::ctx() const {
8940 return isl::ctx(isl_basic_map_list_get_ctx(ptr));
8941 }
8942
add(isl::basic_map el)8943 isl::basic_map_list basic_map_list::add(isl::basic_map el) const
8944 {
8945 auto res = isl_basic_map_list_add(copy(), el.release());
8946 return manage(res);
8947 }
8948
at(int index)8949 isl::basic_map basic_map_list::at(int index) const
8950 {
8951 auto res = isl_basic_map_list_get_at(get(), index);
8952 return manage(res);
8953 }
8954
get_at(int index)8955 isl::basic_map basic_map_list::get_at(int index) const
8956 {
8957 return at(index);
8958 }
8959
clear()8960 isl::basic_map_list basic_map_list::clear() const
8961 {
8962 auto res = isl_basic_map_list_clear(copy());
8963 return manage(res);
8964 }
8965
concat(isl::basic_map_list list2)8966 isl::basic_map_list basic_map_list::concat(isl::basic_map_list list2) const
8967 {
8968 auto res = isl_basic_map_list_concat(copy(), list2.release());
8969 return manage(res);
8970 }
8971
drop(unsigned int first,unsigned int n)8972 isl::basic_map_list basic_map_list::drop(unsigned int first, unsigned int n) const
8973 {
8974 auto res = isl_basic_map_list_drop(copy(), first, n);
8975 return manage(res);
8976 }
8977
foreach(const std::function<stat (isl::basic_map)> & fn)8978 stat basic_map_list::foreach(const std::function<stat(isl::basic_map)> &fn) const
8979 {
8980 struct fn_data {
8981 std::function<stat(isl::basic_map)> func;
8982 } fn_data = { fn };
8983 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
8984 auto *data = static_cast<struct fn_data *>(arg_1);
8985 auto ret = (data->func)(manage(arg_0));
8986 return ret.release();
8987 };
8988 auto res = isl_basic_map_list_foreach(get(), fn_lambda, &fn_data);
8989 return manage(res);
8990 }
8991
insert(unsigned int pos,isl::basic_map el)8992 isl::basic_map_list basic_map_list::insert(unsigned int pos, isl::basic_map el) const
8993 {
8994 auto res = isl_basic_map_list_insert(copy(), pos, el.release());
8995 return manage(res);
8996 }
8997
size()8998 class size basic_map_list::size() const
8999 {
9000 auto res = isl_basic_map_list_size(get());
9001 return manage(res);
9002 }
9003
9004 inline std::ostream &operator<<(std::ostream &os, const basic_map_list &obj)
9005 {
9006 char *str = isl_basic_map_list_to_str(obj.get());
9007 if (!str) {
9008 os.setstate(std::ios_base::badbit);
9009 return os;
9010 }
9011 os << str;
9012 free(str);
9013 return os;
9014 }
9015
9016 // implementations for isl::basic_set
manage(__isl_take isl_basic_set * ptr)9017 basic_set manage(__isl_take isl_basic_set *ptr) {
9018 return basic_set(ptr);
9019 }
manage_copy(__isl_keep isl_basic_set * ptr)9020 basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
9021 ptr = isl_basic_set_copy(ptr);
9022 return basic_set(ptr);
9023 }
9024
basic_set()9025 basic_set::basic_set()
9026 : ptr(nullptr) {}
9027
basic_set(const basic_set & obj)9028 basic_set::basic_set(const basic_set &obj)
9029 : ptr(nullptr)
9030 {
9031 ptr = obj.copy();
9032 }
9033
basic_set(__isl_take isl_basic_set * ptr)9034 basic_set::basic_set(__isl_take isl_basic_set *ptr)
9035 : ptr(ptr) {}
9036
basic_set(isl::point pnt)9037 basic_set::basic_set(isl::point pnt)
9038 {
9039 auto res = isl_basic_set_from_point(pnt.release());
9040 ptr = res;
9041 }
9042
basic_set(isl::ctx ctx,const std::string & str)9043 basic_set::basic_set(isl::ctx ctx, const std::string &str)
9044 {
9045 auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
9046 ptr = res;
9047 }
9048
9049 basic_set &basic_set::operator=(basic_set obj) {
9050 std::swap(this->ptr, obj.ptr);
9051 return *this;
9052 }
9053
~basic_set()9054 basic_set::~basic_set() {
9055 if (ptr)
9056 isl_basic_set_free(ptr);
9057 }
9058
copy()9059 __isl_give isl_basic_set *basic_set::copy() const & {
9060 return isl_basic_set_copy(ptr);
9061 }
9062
get()9063 __isl_keep isl_basic_set *basic_set::get() const {
9064 return ptr;
9065 }
9066
release()9067 __isl_give isl_basic_set *basic_set::release() {
9068 isl_basic_set *tmp = ptr;
9069 ptr = nullptr;
9070 return tmp;
9071 }
9072
is_null()9073 bool basic_set::is_null() const {
9074 return ptr == nullptr;
9075 }
9076
ctx()9077 isl::ctx basic_set::ctx() const {
9078 return isl::ctx(isl_basic_set_get_ctx(ptr));
9079 }
9080
add_constraint(const isl::constraint & constraint)9081 isl::set basic_set::add_constraint(const isl::constraint &constraint) const
9082 {
9083 return isl::set(*this).add_constraint(constraint);
9084 }
9085
add_dims(isl::dim type,unsigned int n)9086 isl::set basic_set::add_dims(isl::dim type, unsigned int n) const
9087 {
9088 return isl::set(*this).add_dims(type, n);
9089 }
9090
affine_hull()9091 isl::basic_set basic_set::affine_hull() const
9092 {
9093 auto res = isl_basic_set_affine_hull(copy());
9094 return manage(res);
9095 }
9096
align_params(const isl::space & model)9097 isl::set basic_set::align_params(const isl::space &model) const
9098 {
9099 return isl::set(*this).align_params(model);
9100 }
9101
apply(isl::basic_map bmap)9102 isl::basic_set basic_set::apply(isl::basic_map bmap) const
9103 {
9104 auto res = isl_basic_set_apply(copy(), bmap.release());
9105 return manage(res);
9106 }
9107
apply(const isl::map & map)9108 isl::set basic_set::apply(const isl::map &map) const
9109 {
9110 return isl::set(*this).apply(map);
9111 }
9112
apply(const isl::union_map & umap)9113 isl::union_set basic_set::apply(const isl::union_map &umap) const
9114 {
9115 return isl::set(*this).apply(umap);
9116 }
9117
as_pw_multi_aff()9118 isl::pw_multi_aff basic_set::as_pw_multi_aff() const
9119 {
9120 return isl::set(*this).as_pw_multi_aff();
9121 }
9122
as_set()9123 isl::set basic_set::as_set() const
9124 {
9125 return isl::set(*this).as_set();
9126 }
9127
basic_set_list()9128 isl::basic_set_list basic_set::basic_set_list() const
9129 {
9130 return isl::set(*this).basic_set_list();
9131 }
9132
bind(const isl::multi_id & tuple)9133 isl::set basic_set::bind(const isl::multi_id &tuple) const
9134 {
9135 return isl::set(*this).bind(tuple);
9136 }
9137
coalesce()9138 isl::set basic_set::coalesce() const
9139 {
9140 return isl::set(*this).coalesce();
9141 }
9142
complement()9143 isl::set basic_set::complement() const
9144 {
9145 return isl::set(*this).complement();
9146 }
9147
compute_divs()9148 isl::union_set basic_set::compute_divs() const
9149 {
9150 return isl::set(*this).compute_divs();
9151 }
9152
contains(const isl::space & space)9153 boolean basic_set::contains(const isl::space &space) const
9154 {
9155 return isl::set(*this).contains(space);
9156 }
9157
convex_hull()9158 isl::basic_set basic_set::convex_hull() const
9159 {
9160 return isl::set(*this).convex_hull();
9161 }
9162
detect_equalities()9163 isl::basic_set basic_set::detect_equalities() const
9164 {
9165 auto res = isl_basic_set_detect_equalities(copy());
9166 return manage(res);
9167 }
9168
dim(isl::dim type)9169 class size basic_set::dim(isl::dim type) const
9170 {
9171 auto res = isl_basic_set_dim(get(), static_cast<enum isl_dim_type>(type));
9172 return manage(res);
9173 }
9174
dim_has_any_lower_bound(isl::dim type,unsigned int pos)9175 boolean basic_set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
9176 {
9177 return isl::set(*this).dim_has_any_lower_bound(type, pos);
9178 }
9179
dim_id(isl::dim type,unsigned int pos)9180 isl::id basic_set::dim_id(isl::dim type, unsigned int pos) const
9181 {
9182 return isl::set(*this).dim_id(type, pos);
9183 }
9184
dim_max(int pos)9185 isl::pw_aff basic_set::dim_max(int pos) const
9186 {
9187 return isl::set(*this).dim_max(pos);
9188 }
9189
dim_max_val(int pos)9190 isl::val basic_set::dim_max_val(int pos) const
9191 {
9192 auto res = isl_basic_set_dim_max_val(copy(), pos);
9193 return manage(res);
9194 }
9195
dim_min(int pos)9196 isl::pw_aff basic_set::dim_min(int pos) const
9197 {
9198 return isl::set(*this).dim_min(pos);
9199 }
9200
dim_min_val(int pos)9201 isl::val basic_set::dim_min_val(int pos) const
9202 {
9203 return isl::set(*this).dim_min_val(pos);
9204 }
9205
dim_name(isl::dim type,unsigned int pos)9206 std::string basic_set::dim_name(isl::dim type, unsigned int pos) const
9207 {
9208 return isl::set(*this).dim_name(type, pos);
9209 }
9210
div(int pos)9211 isl::aff basic_set::div(int pos) const
9212 {
9213 auto res = isl_basic_set_get_div(get(), pos);
9214 return manage(res);
9215 }
9216
get_div(int pos)9217 isl::aff basic_set::get_div(int pos) const
9218 {
9219 return div(pos);
9220 }
9221
drop_constraints_involving_dims(isl::dim type,unsigned int first,unsigned int n)9222 isl::set basic_set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
9223 {
9224 return isl::set(*this).drop_constraints_involving_dims(type, first, n);
9225 }
9226
eliminate(isl::dim type,unsigned int first,unsigned int n)9227 isl::set basic_set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
9228 {
9229 return isl::set(*this).eliminate(type, first, n);
9230 }
9231
every_set(const std::function<boolean (isl::set)> & test)9232 boolean basic_set::every_set(const std::function<boolean(isl::set)> &test) const
9233 {
9234 return isl::set(*this).every_set(test);
9235 }
9236
extract_set(const isl::space & space)9237 isl::set basic_set::extract_set(const isl::space &space) const
9238 {
9239 return isl::set(*this).extract_set(space);
9240 }
9241
find_dim_by_id(isl::dim type,const isl::id & id)9242 int basic_set::find_dim_by_id(isl::dim type, const isl::id &id) const
9243 {
9244 return isl::set(*this).find_dim_by_id(type, id);
9245 }
9246
find_dim_by_id(isl::dim type,const std::string & id)9247 int basic_set::find_dim_by_id(isl::dim type, const std::string &id) const
9248 {
9249 return this->find_dim_by_id(type, isl::id(ctx(), id));
9250 }
9251
fix_si(isl::dim type,unsigned int pos,int value)9252 isl::basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const
9253 {
9254 auto res = isl_basic_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
9255 return manage(res);
9256 }
9257
fix_val(isl::dim type,unsigned int pos,isl::val v)9258 isl::basic_set basic_set::fix_val(isl::dim type, unsigned int pos, isl::val v) const
9259 {
9260 auto res = isl_basic_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
9261 return manage(res);
9262 }
9263
fix_val(isl::dim type,unsigned int pos,long v)9264 isl::basic_set basic_set::fix_val(isl::dim type, unsigned int pos, long v) const
9265 {
9266 return this->fix_val(type, pos, isl::val(ctx(), v));
9267 }
9268
flatten()9269 isl::basic_set basic_set::flatten() const
9270 {
9271 auto res = isl_basic_set_flatten(copy());
9272 return manage(res);
9273 }
9274
foreach_basic_set(const std::function<stat (isl::basic_set)> & fn)9275 stat basic_set::foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const
9276 {
9277 return isl::set(*this).foreach_basic_set(fn);
9278 }
9279
foreach_point(const std::function<stat (isl::point)> & fn)9280 stat basic_set::foreach_point(const std::function<stat(isl::point)> &fn) const
9281 {
9282 return isl::set(*this).foreach_point(fn);
9283 }
9284
foreach_set(const std::function<stat (isl::set)> & fn)9285 stat basic_set::foreach_set(const std::function<stat(isl::set)> &fn) const
9286 {
9287 return isl::set(*this).foreach_set(fn);
9288 }
9289
gist(isl::basic_set context)9290 isl::basic_set basic_set::gist(isl::basic_set context) const
9291 {
9292 auto res = isl_basic_set_gist(copy(), context.release());
9293 return manage(res);
9294 }
9295
gist(const isl::set & context)9296 isl::set basic_set::gist(const isl::set &context) const
9297 {
9298 return isl::set(*this).gist(context);
9299 }
9300
gist(const isl::union_set & context)9301 isl::union_set basic_set::gist(const isl::union_set &context) const
9302 {
9303 return isl::set(*this).gist(context);
9304 }
9305
gist(const isl::point & context)9306 isl::basic_set basic_set::gist(const isl::point &context) const
9307 {
9308 return this->gist(isl::basic_set(context));
9309 }
9310
gist_params(const isl::set & context)9311 isl::set basic_set::gist_params(const isl::set &context) const
9312 {
9313 return isl::set(*this).gist_params(context);
9314 }
9315
has_equal_space(const isl::set & set2)9316 boolean basic_set::has_equal_space(const isl::set &set2) const
9317 {
9318 return isl::set(*this).has_equal_space(set2);
9319 }
9320
identity()9321 isl::map basic_set::identity() const
9322 {
9323 return isl::set(*this).identity();
9324 }
9325
identity_union_pw_multi_aff()9326 isl::union_pw_multi_aff basic_set::identity_union_pw_multi_aff() const
9327 {
9328 return isl::set(*this).identity_union_pw_multi_aff();
9329 }
9330
indicator_function()9331 isl::pw_aff basic_set::indicator_function() const
9332 {
9333 return isl::set(*this).indicator_function();
9334 }
9335
insert_dims(isl::dim type,unsigned int pos,unsigned int n)9336 isl::set basic_set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
9337 {
9338 return isl::set(*this).insert_dims(type, pos, n);
9339 }
9340
insert_domain(const isl::space & domain)9341 isl::map basic_set::insert_domain(const isl::space &domain) const
9342 {
9343 return isl::set(*this).insert_domain(domain);
9344 }
9345
intersect(isl::basic_set bset2)9346 isl::basic_set basic_set::intersect(isl::basic_set bset2) const
9347 {
9348 auto res = isl_basic_set_intersect(copy(), bset2.release());
9349 return manage(res);
9350 }
9351
intersect(const isl::set & set2)9352 isl::set basic_set::intersect(const isl::set &set2) const
9353 {
9354 return isl::set(*this).intersect(set2);
9355 }
9356
intersect(const isl::union_set & uset2)9357 isl::union_set basic_set::intersect(const isl::union_set &uset2) const
9358 {
9359 return isl::set(*this).intersect(uset2);
9360 }
9361
intersect(const isl::point & bset2)9362 isl::basic_set basic_set::intersect(const isl::point &bset2) const
9363 {
9364 return this->intersect(isl::basic_set(bset2));
9365 }
9366
intersect_params(isl::basic_set bset2)9367 isl::basic_set basic_set::intersect_params(isl::basic_set bset2) const
9368 {
9369 auto res = isl_basic_set_intersect_params(copy(), bset2.release());
9370 return manage(res);
9371 }
9372
intersect_params(const isl::set & params)9373 isl::set basic_set::intersect_params(const isl::set ¶ms) const
9374 {
9375 return isl::set(*this).intersect_params(params);
9376 }
9377
intersect_params(const isl::point & bset2)9378 isl::basic_set basic_set::intersect_params(const isl::point &bset2) const
9379 {
9380 return this->intersect_params(isl::basic_set(bset2));
9381 }
9382
involves_dims(isl::dim type,unsigned int first,unsigned int n)9383 boolean basic_set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
9384 {
9385 return isl::set(*this).involves_dims(type, first, n);
9386 }
9387
involves_locals()9388 boolean basic_set::involves_locals() const
9389 {
9390 return isl::set(*this).involves_locals();
9391 }
9392
is_bounded()9393 boolean basic_set::is_bounded() const
9394 {
9395 auto res = isl_basic_set_is_bounded(get());
9396 return manage(res);
9397 }
9398
is_disjoint(const isl::set & set2)9399 boolean basic_set::is_disjoint(const isl::set &set2) const
9400 {
9401 return isl::set(*this).is_disjoint(set2);
9402 }
9403
is_disjoint(const isl::union_set & uset2)9404 boolean basic_set::is_disjoint(const isl::union_set &uset2) const
9405 {
9406 return isl::set(*this).is_disjoint(uset2);
9407 }
9408
is_empty()9409 boolean basic_set::is_empty() const
9410 {
9411 auto res = isl_basic_set_is_empty(get());
9412 return manage(res);
9413 }
9414
is_equal(const isl::basic_set & bset2)9415 boolean basic_set::is_equal(const isl::basic_set &bset2) const
9416 {
9417 auto res = isl_basic_set_is_equal(get(), bset2.get());
9418 return manage(res);
9419 }
9420
is_equal(const isl::set & set2)9421 boolean basic_set::is_equal(const isl::set &set2) const
9422 {
9423 return isl::set(*this).is_equal(set2);
9424 }
9425
is_equal(const isl::union_set & uset2)9426 boolean basic_set::is_equal(const isl::union_set &uset2) const
9427 {
9428 return isl::set(*this).is_equal(uset2);
9429 }
9430
is_equal(const isl::point & bset2)9431 boolean basic_set::is_equal(const isl::point &bset2) const
9432 {
9433 return this->is_equal(isl::basic_set(bset2));
9434 }
9435
is_params()9436 boolean basic_set::is_params() const
9437 {
9438 return isl::set(*this).is_params();
9439 }
9440
is_singleton()9441 boolean basic_set::is_singleton() const
9442 {
9443 return isl::set(*this).is_singleton();
9444 }
9445
is_strict_subset(const isl::set & set2)9446 boolean basic_set::is_strict_subset(const isl::set &set2) const
9447 {
9448 return isl::set(*this).is_strict_subset(set2);
9449 }
9450
is_strict_subset(const isl::union_set & uset2)9451 boolean basic_set::is_strict_subset(const isl::union_set &uset2) const
9452 {
9453 return isl::set(*this).is_strict_subset(uset2);
9454 }
9455
is_subset(const isl::basic_set & bset2)9456 boolean basic_set::is_subset(const isl::basic_set &bset2) const
9457 {
9458 auto res = isl_basic_set_is_subset(get(), bset2.get());
9459 return manage(res);
9460 }
9461
is_subset(const isl::set & set2)9462 boolean basic_set::is_subset(const isl::set &set2) const
9463 {
9464 return isl::set(*this).is_subset(set2);
9465 }
9466
is_subset(const isl::union_set & uset2)9467 boolean basic_set::is_subset(const isl::union_set &uset2) const
9468 {
9469 return isl::set(*this).is_subset(uset2);
9470 }
9471
is_subset(const isl::point & bset2)9472 boolean basic_set::is_subset(const isl::point &bset2) const
9473 {
9474 return this->is_subset(isl::basic_set(bset2));
9475 }
9476
is_wrapping()9477 boolean basic_set::is_wrapping() const
9478 {
9479 auto res = isl_basic_set_is_wrapping(get());
9480 return manage(res);
9481 }
9482
isa_set()9483 boolean basic_set::isa_set() const
9484 {
9485 return isl::set(*this).isa_set();
9486 }
9487
lexmax()9488 isl::set basic_set::lexmax() const
9489 {
9490 auto res = isl_basic_set_lexmax(copy());
9491 return manage(res);
9492 }
9493
lexmax_pw_multi_aff()9494 isl::pw_multi_aff basic_set::lexmax_pw_multi_aff() const
9495 {
9496 return isl::set(*this).lexmax_pw_multi_aff();
9497 }
9498
lexmin()9499 isl::set basic_set::lexmin() const
9500 {
9501 auto res = isl_basic_set_lexmin(copy());
9502 return manage(res);
9503 }
9504
lexmin_pw_multi_aff()9505 isl::pw_multi_aff basic_set::lexmin_pw_multi_aff() const
9506 {
9507 return isl::set(*this).lexmin_pw_multi_aff();
9508 }
9509
lower_bound(const isl::multi_pw_aff & lower)9510 isl::set basic_set::lower_bound(const isl::multi_pw_aff &lower) const
9511 {
9512 return isl::set(*this).lower_bound(lower);
9513 }
9514
lower_bound(const isl::multi_val & lower)9515 isl::set basic_set::lower_bound(const isl::multi_val &lower) const
9516 {
9517 return isl::set(*this).lower_bound(lower);
9518 }
9519
lower_bound_si(isl::dim type,unsigned int pos,int value)9520 isl::set basic_set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
9521 {
9522 return isl::set(*this).lower_bound_si(type, pos, value);
9523 }
9524
lower_bound_val(isl::dim type,unsigned int pos,const isl::val & value)9525 isl::set basic_set::lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
9526 {
9527 return isl::set(*this).lower_bound_val(type, pos, value);
9528 }
9529
lower_bound_val(isl::dim type,unsigned int pos,long value)9530 isl::set basic_set::lower_bound_val(isl::dim type, unsigned int pos, long value) const
9531 {
9532 return this->lower_bound_val(type, pos, isl::val(ctx(), value));
9533 }
9534
max_multi_pw_aff()9535 isl::multi_pw_aff basic_set::max_multi_pw_aff() const
9536 {
9537 return isl::set(*this).max_multi_pw_aff();
9538 }
9539
max_val(const isl::aff & obj)9540 isl::val basic_set::max_val(const isl::aff &obj) const
9541 {
9542 return isl::set(*this).max_val(obj);
9543 }
9544
min_multi_pw_aff()9545 isl::multi_pw_aff basic_set::min_multi_pw_aff() const
9546 {
9547 return isl::set(*this).min_multi_pw_aff();
9548 }
9549
min_val(const isl::aff & obj)9550 isl::val basic_set::min_val(const isl::aff &obj) const
9551 {
9552 return isl::set(*this).min_val(obj);
9553 }
9554
n_basic_set()9555 class size basic_set::n_basic_set() const
9556 {
9557 return isl::set(*this).n_basic_set();
9558 }
9559
params()9560 isl::basic_set basic_set::params() const
9561 {
9562 auto res = isl_basic_set_params(copy());
9563 return manage(res);
9564 }
9565
plain_get_val_if_fixed(isl::dim type,unsigned int pos)9566 isl::val basic_set::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
9567 {
9568 return isl::set(*this).plain_get_val_if_fixed(type, pos);
9569 }
9570
plain_multi_val_if_fixed()9571 isl::multi_val basic_set::plain_multi_val_if_fixed() const
9572 {
9573 return isl::set(*this).plain_multi_val_if_fixed();
9574 }
9575
polyhedral_hull()9576 isl::basic_set basic_set::polyhedral_hull() const
9577 {
9578 return isl::set(*this).polyhedral_hull();
9579 }
9580
preimage(const isl::multi_aff & ma)9581 isl::set basic_set::preimage(const isl::multi_aff &ma) const
9582 {
9583 return isl::set(*this).preimage(ma);
9584 }
9585
preimage(const isl::multi_pw_aff & mpa)9586 isl::set basic_set::preimage(const isl::multi_pw_aff &mpa) const
9587 {
9588 return isl::set(*this).preimage(mpa);
9589 }
9590
preimage(const isl::pw_multi_aff & pma)9591 isl::set basic_set::preimage(const isl::pw_multi_aff &pma) const
9592 {
9593 return isl::set(*this).preimage(pma);
9594 }
9595
preimage(const isl::union_pw_multi_aff & upma)9596 isl::union_set basic_set::preimage(const isl::union_pw_multi_aff &upma) const
9597 {
9598 return isl::set(*this).preimage(upma);
9599 }
9600
product(const isl::set & set2)9601 isl::set basic_set::product(const isl::set &set2) const
9602 {
9603 return isl::set(*this).product(set2);
9604 }
9605
project_out(isl::dim type,unsigned int first,unsigned int n)9606 isl::basic_set basic_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
9607 {
9608 auto res = isl_basic_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
9609 return manage(res);
9610 }
9611
project_out_all_params()9612 isl::set basic_set::project_out_all_params() const
9613 {
9614 return isl::set(*this).project_out_all_params();
9615 }
9616
project_out_param(const isl::id & id)9617 isl::set basic_set::project_out_param(const isl::id &id) const
9618 {
9619 return isl::set(*this).project_out_param(id);
9620 }
9621
project_out_param(const std::string & id)9622 isl::set basic_set::project_out_param(const std::string &id) const
9623 {
9624 return this->project_out_param(isl::id(ctx(), id));
9625 }
9626
project_out_param(const isl::id_list & list)9627 isl::set basic_set::project_out_param(const isl::id_list &list) const
9628 {
9629 return isl::set(*this).project_out_param(list);
9630 }
9631
pw_multi_aff_on_domain(const isl::multi_val & mv)9632 isl::pw_multi_aff basic_set::pw_multi_aff_on_domain(const isl::multi_val &mv) const
9633 {
9634 return isl::set(*this).pw_multi_aff_on_domain(mv);
9635 }
9636
remove_dims(isl::dim type,unsigned int first,unsigned int n)9637 isl::set basic_set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
9638 {
9639 return isl::set(*this).remove_dims(type, first, n);
9640 }
9641
remove_divs()9642 isl::set basic_set::remove_divs() const
9643 {
9644 return isl::set(*this).remove_divs();
9645 }
9646
remove_redundancies()9647 isl::set basic_set::remove_redundancies() const
9648 {
9649 return isl::set(*this).remove_redundancies();
9650 }
9651
reset_tuple_id()9652 isl::set basic_set::reset_tuple_id() const
9653 {
9654 return isl::set(*this).reset_tuple_id();
9655 }
9656
sample()9657 isl::basic_set basic_set::sample() const
9658 {
9659 auto res = isl_basic_set_sample(copy());
9660 return manage(res);
9661 }
9662
sample_point()9663 isl::point basic_set::sample_point() const
9664 {
9665 auto res = isl_basic_set_sample_point(copy());
9666 return manage(res);
9667 }
9668
set_dim_id(isl::dim type,unsigned int pos,const isl::id & id)9669 isl::set basic_set::set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const
9670 {
9671 return isl::set(*this).set_dim_id(type, pos, id);
9672 }
9673
set_dim_id(isl::dim type,unsigned int pos,const std::string & id)9674 isl::set basic_set::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
9675 {
9676 return this->set_dim_id(type, pos, isl::id(ctx(), id));
9677 }
9678
set_list()9679 isl::set_list basic_set::set_list() const
9680 {
9681 return isl::set(*this).set_list();
9682 }
9683
set_tuple_id(const isl::id & id)9684 isl::set basic_set::set_tuple_id(const isl::id &id) const
9685 {
9686 return isl::set(*this).set_tuple_id(id);
9687 }
9688
set_tuple_id(const std::string & id)9689 isl::set basic_set::set_tuple_id(const std::string &id) const
9690 {
9691 return this->set_tuple_id(isl::id(ctx(), id));
9692 }
9693
simple_fixed_box_hull()9694 isl::fixed_box basic_set::simple_fixed_box_hull() const
9695 {
9696 return isl::set(*this).simple_fixed_box_hull();
9697 }
9698
simple_hull()9699 isl::basic_set basic_set::simple_hull() const
9700 {
9701 return isl::set(*this).simple_hull();
9702 }
9703
space()9704 isl::space basic_set::space() const
9705 {
9706 auto res = isl_basic_set_get_space(get());
9707 return manage(res);
9708 }
9709
get_space()9710 isl::space basic_set::get_space() const
9711 {
9712 return space();
9713 }
9714
stride(int pos)9715 isl::val basic_set::stride(int pos) const
9716 {
9717 return isl::set(*this).stride(pos);
9718 }
9719
subtract(const isl::set & set2)9720 isl::set basic_set::subtract(const isl::set &set2) const
9721 {
9722 return isl::set(*this).subtract(set2);
9723 }
9724
subtract(const isl::union_set & uset2)9725 isl::union_set basic_set::subtract(const isl::union_set &uset2) const
9726 {
9727 return isl::set(*this).subtract(uset2);
9728 }
9729
to_list()9730 isl::basic_set_list basic_set::to_list() const
9731 {
9732 auto res = isl_basic_set_to_list(copy());
9733 return manage(res);
9734 }
9735
to_set()9736 isl::set basic_set::to_set() const
9737 {
9738 auto res = isl_basic_set_to_set(copy());
9739 return manage(res);
9740 }
9741
to_union_set()9742 isl::union_set basic_set::to_union_set() const
9743 {
9744 return isl::set(*this).to_union_set();
9745 }
9746
translation()9747 isl::map basic_set::translation() const
9748 {
9749 return isl::set(*this).translation();
9750 }
9751
tuple_dim()9752 class size basic_set::tuple_dim() const
9753 {
9754 return isl::set(*this).tuple_dim();
9755 }
9756
tuple_id()9757 isl::id basic_set::tuple_id() const
9758 {
9759 return isl::set(*this).tuple_id();
9760 }
9761
tuple_name()9762 std::string basic_set::tuple_name() const
9763 {
9764 return isl::set(*this).tuple_name();
9765 }
9766
unbind_params(const isl::multi_id & tuple)9767 isl::set basic_set::unbind_params(const isl::multi_id &tuple) const
9768 {
9769 return isl::set(*this).unbind_params(tuple);
9770 }
9771
unbind_params_insert_domain(const isl::multi_id & domain)9772 isl::map basic_set::unbind_params_insert_domain(const isl::multi_id &domain) const
9773 {
9774 return isl::set(*this).unbind_params_insert_domain(domain);
9775 }
9776
unite(isl::basic_set bset2)9777 isl::set basic_set::unite(isl::basic_set bset2) const
9778 {
9779 auto res = isl_basic_set_union(copy(), bset2.release());
9780 return manage(res);
9781 }
9782
unite(const isl::set & set2)9783 isl::set basic_set::unite(const isl::set &set2) const
9784 {
9785 return isl::set(*this).unite(set2);
9786 }
9787
unite(const isl::union_set & uset2)9788 isl::union_set basic_set::unite(const isl::union_set &uset2) const
9789 {
9790 return isl::set(*this).unite(uset2);
9791 }
9792
unite(const isl::point & bset2)9793 isl::set basic_set::unite(const isl::point &bset2) const
9794 {
9795 return this->unite(isl::basic_set(bset2));
9796 }
9797
universe(isl::space space)9798 isl::basic_set basic_set::universe(isl::space space)
9799 {
9800 auto res = isl_basic_set_universe(space.release());
9801 return manage(res);
9802 }
9803
unshifted_simple_hull()9804 isl::basic_set basic_set::unshifted_simple_hull() const
9805 {
9806 return isl::set(*this).unshifted_simple_hull();
9807 }
9808
unwrap()9809 isl::map basic_set::unwrap() const
9810 {
9811 return isl::set(*this).unwrap();
9812 }
9813
upper_bound(const isl::multi_pw_aff & upper)9814 isl::set basic_set::upper_bound(const isl::multi_pw_aff &upper) const
9815 {
9816 return isl::set(*this).upper_bound(upper);
9817 }
9818
upper_bound(const isl::multi_val & upper)9819 isl::set basic_set::upper_bound(const isl::multi_val &upper) const
9820 {
9821 return isl::set(*this).upper_bound(upper);
9822 }
9823
upper_bound_val(isl::dim type,unsigned int pos,const isl::val & value)9824 isl::set basic_set::upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
9825 {
9826 return isl::set(*this).upper_bound_val(type, pos, value);
9827 }
9828
upper_bound_val(isl::dim type,unsigned int pos,long value)9829 isl::set basic_set::upper_bound_val(isl::dim type, unsigned int pos, long value) const
9830 {
9831 return this->upper_bound_val(type, pos, isl::val(ctx(), value));
9832 }
9833
9834 inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
9835 {
9836 char *str = isl_basic_set_to_str(obj.get());
9837 if (!str) {
9838 os.setstate(std::ios_base::badbit);
9839 return os;
9840 }
9841 os << str;
9842 free(str);
9843 return os;
9844 }
9845
9846 // implementations for isl::basic_set_list
manage(__isl_take isl_basic_set_list * ptr)9847 basic_set_list manage(__isl_take isl_basic_set_list *ptr) {
9848 return basic_set_list(ptr);
9849 }
manage_copy(__isl_keep isl_basic_set_list * ptr)9850 basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr) {
9851 ptr = isl_basic_set_list_copy(ptr);
9852 return basic_set_list(ptr);
9853 }
9854
basic_set_list()9855 basic_set_list::basic_set_list()
9856 : ptr(nullptr) {}
9857
basic_set_list(const basic_set_list & obj)9858 basic_set_list::basic_set_list(const basic_set_list &obj)
9859 : ptr(nullptr)
9860 {
9861 ptr = obj.copy();
9862 }
9863
basic_set_list(__isl_take isl_basic_set_list * ptr)9864 basic_set_list::basic_set_list(__isl_take isl_basic_set_list *ptr)
9865 : ptr(ptr) {}
9866
basic_set_list(isl::ctx ctx,int n)9867 basic_set_list::basic_set_list(isl::ctx ctx, int n)
9868 {
9869 auto res = isl_basic_set_list_alloc(ctx.release(), n);
9870 ptr = res;
9871 }
9872
basic_set_list(isl::basic_set el)9873 basic_set_list::basic_set_list(isl::basic_set el)
9874 {
9875 auto res = isl_basic_set_list_from_basic_set(el.release());
9876 ptr = res;
9877 }
9878
9879 basic_set_list &basic_set_list::operator=(basic_set_list obj) {
9880 std::swap(this->ptr, obj.ptr);
9881 return *this;
9882 }
9883
~basic_set_list()9884 basic_set_list::~basic_set_list() {
9885 if (ptr)
9886 isl_basic_set_list_free(ptr);
9887 }
9888
copy()9889 __isl_give isl_basic_set_list *basic_set_list::copy() const & {
9890 return isl_basic_set_list_copy(ptr);
9891 }
9892
get()9893 __isl_keep isl_basic_set_list *basic_set_list::get() const {
9894 return ptr;
9895 }
9896
release()9897 __isl_give isl_basic_set_list *basic_set_list::release() {
9898 isl_basic_set_list *tmp = ptr;
9899 ptr = nullptr;
9900 return tmp;
9901 }
9902
is_null()9903 bool basic_set_list::is_null() const {
9904 return ptr == nullptr;
9905 }
9906
ctx()9907 isl::ctx basic_set_list::ctx() const {
9908 return isl::ctx(isl_basic_set_list_get_ctx(ptr));
9909 }
9910
add(isl::basic_set el)9911 isl::basic_set_list basic_set_list::add(isl::basic_set el) const
9912 {
9913 auto res = isl_basic_set_list_add(copy(), el.release());
9914 return manage(res);
9915 }
9916
at(int index)9917 isl::basic_set basic_set_list::at(int index) const
9918 {
9919 auto res = isl_basic_set_list_get_at(get(), index);
9920 return manage(res);
9921 }
9922
get_at(int index)9923 isl::basic_set basic_set_list::get_at(int index) const
9924 {
9925 return at(index);
9926 }
9927
clear()9928 isl::basic_set_list basic_set_list::clear() const
9929 {
9930 auto res = isl_basic_set_list_clear(copy());
9931 return manage(res);
9932 }
9933
concat(isl::basic_set_list list2)9934 isl::basic_set_list basic_set_list::concat(isl::basic_set_list list2) const
9935 {
9936 auto res = isl_basic_set_list_concat(copy(), list2.release());
9937 return manage(res);
9938 }
9939
drop(unsigned int first,unsigned int n)9940 isl::basic_set_list basic_set_list::drop(unsigned int first, unsigned int n) const
9941 {
9942 auto res = isl_basic_set_list_drop(copy(), first, n);
9943 return manage(res);
9944 }
9945
foreach(const std::function<stat (isl::basic_set)> & fn)9946 stat basic_set_list::foreach(const std::function<stat(isl::basic_set)> &fn) const
9947 {
9948 struct fn_data {
9949 std::function<stat(isl::basic_set)> func;
9950 } fn_data = { fn };
9951 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
9952 auto *data = static_cast<struct fn_data *>(arg_1);
9953 auto ret = (data->func)(manage(arg_0));
9954 return ret.release();
9955 };
9956 auto res = isl_basic_set_list_foreach(get(), fn_lambda, &fn_data);
9957 return manage(res);
9958 }
9959
insert(unsigned int pos,isl::basic_set el)9960 isl::basic_set_list basic_set_list::insert(unsigned int pos, isl::basic_set el) const
9961 {
9962 auto res = isl_basic_set_list_insert(copy(), pos, el.release());
9963 return manage(res);
9964 }
9965
size()9966 class size basic_set_list::size() const
9967 {
9968 auto res = isl_basic_set_list_size(get());
9969 return manage(res);
9970 }
9971
9972 inline std::ostream &operator<<(std::ostream &os, const basic_set_list &obj)
9973 {
9974 char *str = isl_basic_set_list_to_str(obj.get());
9975 if (!str) {
9976 os.setstate(std::ios_base::badbit);
9977 return os;
9978 }
9979 os << str;
9980 free(str);
9981 return os;
9982 }
9983
9984 // implementations for isl::constraint
manage(__isl_take isl_constraint * ptr)9985 constraint manage(__isl_take isl_constraint *ptr) {
9986 return constraint(ptr);
9987 }
manage_copy(__isl_keep isl_constraint * ptr)9988 constraint manage_copy(__isl_keep isl_constraint *ptr) {
9989 ptr = isl_constraint_copy(ptr);
9990 return constraint(ptr);
9991 }
9992
constraint()9993 constraint::constraint()
9994 : ptr(nullptr) {}
9995
constraint(const constraint & obj)9996 constraint::constraint(const constraint &obj)
9997 : ptr(nullptr)
9998 {
9999 ptr = obj.copy();
10000 }
10001
constraint(__isl_take isl_constraint * ptr)10002 constraint::constraint(__isl_take isl_constraint *ptr)
10003 : ptr(ptr) {}
10004
10005 constraint &constraint::operator=(constraint obj) {
10006 std::swap(this->ptr, obj.ptr);
10007 return *this;
10008 }
10009
~constraint()10010 constraint::~constraint() {
10011 if (ptr)
10012 isl_constraint_free(ptr);
10013 }
10014
copy()10015 __isl_give isl_constraint *constraint::copy() const & {
10016 return isl_constraint_copy(ptr);
10017 }
10018
get()10019 __isl_keep isl_constraint *constraint::get() const {
10020 return ptr;
10021 }
10022
release()10023 __isl_give isl_constraint *constraint::release() {
10024 isl_constraint *tmp = ptr;
10025 ptr = nullptr;
10026 return tmp;
10027 }
10028
is_null()10029 bool constraint::is_null() const {
10030 return ptr == nullptr;
10031 }
10032
ctx()10033 isl::ctx constraint::ctx() const {
10034 return isl::ctx(isl_constraint_get_ctx(ptr));
10035 }
10036
alloc_equality(isl::local_space ls)10037 isl::constraint constraint::alloc_equality(isl::local_space ls)
10038 {
10039 auto res = isl_constraint_alloc_equality(ls.release());
10040 return manage(res);
10041 }
10042
alloc_inequality(isl::local_space ls)10043 isl::constraint constraint::alloc_inequality(isl::local_space ls)
10044 {
10045 auto res = isl_constraint_alloc_inequality(ls.release());
10046 return manage(res);
10047 }
10048
set_coefficient_si(isl::dim type,int pos,int v)10049 isl::constraint constraint::set_coefficient_si(isl::dim type, int pos, int v) const
10050 {
10051 auto res = isl_constraint_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
10052 return manage(res);
10053 }
10054
set_constant_si(int v)10055 isl::constraint constraint::set_constant_si(int v) const
10056 {
10057 auto res = isl_constraint_set_constant_si(copy(), v);
10058 return manage(res);
10059 }
10060
set_constant_val(isl::val v)10061 isl::constraint constraint::set_constant_val(isl::val v) const
10062 {
10063 auto res = isl_constraint_set_constant_val(copy(), v.release());
10064 return manage(res);
10065 }
10066
set_constant_val(long v)10067 isl::constraint constraint::set_constant_val(long v) const
10068 {
10069 return this->set_constant_val(isl::val(ctx(), v));
10070 }
10071
10072 // implementations for isl::fixed_box
manage(__isl_take isl_fixed_box * ptr)10073 fixed_box manage(__isl_take isl_fixed_box *ptr) {
10074 return fixed_box(ptr);
10075 }
manage_copy(__isl_keep isl_fixed_box * ptr)10076 fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
10077 ptr = isl_fixed_box_copy(ptr);
10078 return fixed_box(ptr);
10079 }
10080
fixed_box()10081 fixed_box::fixed_box()
10082 : ptr(nullptr) {}
10083
fixed_box(const fixed_box & obj)10084 fixed_box::fixed_box(const fixed_box &obj)
10085 : ptr(nullptr)
10086 {
10087 ptr = obj.copy();
10088 }
10089
fixed_box(__isl_take isl_fixed_box * ptr)10090 fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
10091 : ptr(ptr) {}
10092
10093 fixed_box &fixed_box::operator=(fixed_box obj) {
10094 std::swap(this->ptr, obj.ptr);
10095 return *this;
10096 }
10097
~fixed_box()10098 fixed_box::~fixed_box() {
10099 if (ptr)
10100 isl_fixed_box_free(ptr);
10101 }
10102
copy()10103 __isl_give isl_fixed_box *fixed_box::copy() const & {
10104 return isl_fixed_box_copy(ptr);
10105 }
10106
get()10107 __isl_keep isl_fixed_box *fixed_box::get() const {
10108 return ptr;
10109 }
10110
release()10111 __isl_give isl_fixed_box *fixed_box::release() {
10112 isl_fixed_box *tmp = ptr;
10113 ptr = nullptr;
10114 return tmp;
10115 }
10116
is_null()10117 bool fixed_box::is_null() const {
10118 return ptr == nullptr;
10119 }
10120
ctx()10121 isl::ctx fixed_box::ctx() const {
10122 return isl::ctx(isl_fixed_box_get_ctx(ptr));
10123 }
10124
is_valid()10125 boolean fixed_box::is_valid() const
10126 {
10127 auto res = isl_fixed_box_is_valid(get());
10128 return manage(res);
10129 }
10130
offset()10131 isl::multi_aff fixed_box::offset() const
10132 {
10133 auto res = isl_fixed_box_get_offset(get());
10134 return manage(res);
10135 }
10136
get_offset()10137 isl::multi_aff fixed_box::get_offset() const
10138 {
10139 return offset();
10140 }
10141
size()10142 isl::multi_val fixed_box::size() const
10143 {
10144 auto res = isl_fixed_box_get_size(get());
10145 return manage(res);
10146 }
10147
get_size()10148 isl::multi_val fixed_box::get_size() const
10149 {
10150 return size();
10151 }
10152
space()10153 isl::space fixed_box::space() const
10154 {
10155 auto res = isl_fixed_box_get_space(get());
10156 return manage(res);
10157 }
10158
get_space()10159 isl::space fixed_box::get_space() const
10160 {
10161 return space();
10162 }
10163
10164 inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
10165 {
10166 char *str = isl_fixed_box_to_str(obj.get());
10167 if (!str) {
10168 os.setstate(std::ios_base::badbit);
10169 return os;
10170 }
10171 os << str;
10172 free(str);
10173 return os;
10174 }
10175
10176 // implementations for isl::id
manage(__isl_take isl_id * ptr)10177 id manage(__isl_take isl_id *ptr) {
10178 return id(ptr);
10179 }
manage_copy(__isl_keep isl_id * ptr)10180 id manage_copy(__isl_keep isl_id *ptr) {
10181 ptr = isl_id_copy(ptr);
10182 return id(ptr);
10183 }
10184
id()10185 id::id()
10186 : ptr(nullptr) {}
10187
id(const id & obj)10188 id::id(const id &obj)
10189 : ptr(nullptr)
10190 {
10191 ptr = obj.copy();
10192 }
10193
id(__isl_take isl_id * ptr)10194 id::id(__isl_take isl_id *ptr)
10195 : ptr(ptr) {}
10196
id(isl::ctx ctx,const std::string & str)10197 id::id(isl::ctx ctx, const std::string &str)
10198 {
10199 auto res = isl_id_read_from_str(ctx.release(), str.c_str());
10200 ptr = res;
10201 }
10202
10203 id &id::operator=(id obj) {
10204 std::swap(this->ptr, obj.ptr);
10205 return *this;
10206 }
10207
~id()10208 id::~id() {
10209 if (ptr)
10210 isl_id_free(ptr);
10211 }
10212
copy()10213 __isl_give isl_id *id::copy() const & {
10214 return isl_id_copy(ptr);
10215 }
10216
get()10217 __isl_keep isl_id *id::get() const {
10218 return ptr;
10219 }
10220
release()10221 __isl_give isl_id *id::release() {
10222 isl_id *tmp = ptr;
10223 ptr = nullptr;
10224 return tmp;
10225 }
10226
is_null()10227 bool id::is_null() const {
10228 return ptr == nullptr;
10229 }
10230
ctx()10231 isl::ctx id::ctx() const {
10232 return isl::ctx(isl_id_get_ctx(ptr));
10233 }
10234
alloc(isl::ctx ctx,const std::string & name,void * user)10235 isl::id id::alloc(isl::ctx ctx, const std::string &name, void * user)
10236 {
10237 auto res = isl_id_alloc(ctx.release(), name.c_str(), user);
10238 return manage(res);
10239 }
10240
name()10241 std::string id::name() const
10242 {
10243 auto res = isl_id_get_name(get());
10244 std::string tmp(res);
10245 return tmp;
10246 }
10247
get_name()10248 std::string id::get_name() const
10249 {
10250 return name();
10251 }
10252
to_list()10253 isl::id_list id::to_list() const
10254 {
10255 auto res = isl_id_to_list(copy());
10256 return manage(res);
10257 }
10258
user()10259 void * id::user() const
10260 {
10261 auto res = isl_id_get_user(get());
10262 return res;
10263 }
10264
get_user()10265 void * id::get_user() const
10266 {
10267 return user();
10268 }
10269
10270 inline std::ostream &operator<<(std::ostream &os, const id &obj)
10271 {
10272 char *str = isl_id_to_str(obj.get());
10273 if (!str) {
10274 os.setstate(std::ios_base::badbit);
10275 return os;
10276 }
10277 os << str;
10278 free(str);
10279 return os;
10280 }
10281
10282 // implementations for isl::id_list
manage(__isl_take isl_id_list * ptr)10283 id_list manage(__isl_take isl_id_list *ptr) {
10284 return id_list(ptr);
10285 }
manage_copy(__isl_keep isl_id_list * ptr)10286 id_list manage_copy(__isl_keep isl_id_list *ptr) {
10287 ptr = isl_id_list_copy(ptr);
10288 return id_list(ptr);
10289 }
10290
id_list()10291 id_list::id_list()
10292 : ptr(nullptr) {}
10293
id_list(const id_list & obj)10294 id_list::id_list(const id_list &obj)
10295 : ptr(nullptr)
10296 {
10297 ptr = obj.copy();
10298 }
10299
id_list(__isl_take isl_id_list * ptr)10300 id_list::id_list(__isl_take isl_id_list *ptr)
10301 : ptr(ptr) {}
10302
id_list(isl::ctx ctx,int n)10303 id_list::id_list(isl::ctx ctx, int n)
10304 {
10305 auto res = isl_id_list_alloc(ctx.release(), n);
10306 ptr = res;
10307 }
10308
id_list(isl::id el)10309 id_list::id_list(isl::id el)
10310 {
10311 auto res = isl_id_list_from_id(el.release());
10312 ptr = res;
10313 }
10314
id_list(isl::ctx ctx,const std::string & str)10315 id_list::id_list(isl::ctx ctx, const std::string &str)
10316 {
10317 auto res = isl_id_list_read_from_str(ctx.release(), str.c_str());
10318 ptr = res;
10319 }
10320
10321 id_list &id_list::operator=(id_list obj) {
10322 std::swap(this->ptr, obj.ptr);
10323 return *this;
10324 }
10325
~id_list()10326 id_list::~id_list() {
10327 if (ptr)
10328 isl_id_list_free(ptr);
10329 }
10330
copy()10331 __isl_give isl_id_list *id_list::copy() const & {
10332 return isl_id_list_copy(ptr);
10333 }
10334
get()10335 __isl_keep isl_id_list *id_list::get() const {
10336 return ptr;
10337 }
10338
release()10339 __isl_give isl_id_list *id_list::release() {
10340 isl_id_list *tmp = ptr;
10341 ptr = nullptr;
10342 return tmp;
10343 }
10344
is_null()10345 bool id_list::is_null() const {
10346 return ptr == nullptr;
10347 }
10348
ctx()10349 isl::ctx id_list::ctx() const {
10350 return isl::ctx(isl_id_list_get_ctx(ptr));
10351 }
10352
add(isl::id el)10353 isl::id_list id_list::add(isl::id el) const
10354 {
10355 auto res = isl_id_list_add(copy(), el.release());
10356 return manage(res);
10357 }
10358
add(const std::string & el)10359 isl::id_list id_list::add(const std::string &el) const
10360 {
10361 return this->add(isl::id(ctx(), el));
10362 }
10363
at(int index)10364 isl::id id_list::at(int index) const
10365 {
10366 auto res = isl_id_list_get_at(get(), index);
10367 return manage(res);
10368 }
10369
get_at(int index)10370 isl::id id_list::get_at(int index) const
10371 {
10372 return at(index);
10373 }
10374
clear()10375 isl::id_list id_list::clear() const
10376 {
10377 auto res = isl_id_list_clear(copy());
10378 return manage(res);
10379 }
10380
concat(isl::id_list list2)10381 isl::id_list id_list::concat(isl::id_list list2) const
10382 {
10383 auto res = isl_id_list_concat(copy(), list2.release());
10384 return manage(res);
10385 }
10386
drop(unsigned int first,unsigned int n)10387 isl::id_list id_list::drop(unsigned int first, unsigned int n) const
10388 {
10389 auto res = isl_id_list_drop(copy(), first, n);
10390 return manage(res);
10391 }
10392
foreach(const std::function<stat (isl::id)> & fn)10393 stat id_list::foreach(const std::function<stat(isl::id)> &fn) const
10394 {
10395 struct fn_data {
10396 std::function<stat(isl::id)> func;
10397 } fn_data = { fn };
10398 auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
10399 auto *data = static_cast<struct fn_data *>(arg_1);
10400 auto ret = (data->func)(manage(arg_0));
10401 return ret.release();
10402 };
10403 auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
10404 return manage(res);
10405 }
10406
insert(unsigned int pos,isl::id el)10407 isl::id_list id_list::insert(unsigned int pos, isl::id el) const
10408 {
10409 auto res = isl_id_list_insert(copy(), pos, el.release());
10410 return manage(res);
10411 }
10412
insert(unsigned int pos,const std::string & el)10413 isl::id_list id_list::insert(unsigned int pos, const std::string &el) const
10414 {
10415 return this->insert(pos, isl::id(ctx(), el));
10416 }
10417
size()10418 class size id_list::size() const
10419 {
10420 auto res = isl_id_list_size(get());
10421 return manage(res);
10422 }
10423
10424 inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
10425 {
10426 char *str = isl_id_list_to_str(obj.get());
10427 if (!str) {
10428 os.setstate(std::ios_base::badbit);
10429 return os;
10430 }
10431 os << str;
10432 free(str);
10433 return os;
10434 }
10435
10436 // implementations for isl::id_to_ast_expr
manage(__isl_take isl_id_to_ast_expr * ptr)10437 id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
10438 return id_to_ast_expr(ptr);
10439 }
manage_copy(__isl_keep isl_id_to_ast_expr * ptr)10440 id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
10441 ptr = isl_id_to_ast_expr_copy(ptr);
10442 return id_to_ast_expr(ptr);
10443 }
10444
id_to_ast_expr()10445 id_to_ast_expr::id_to_ast_expr()
10446 : ptr(nullptr) {}
10447
id_to_ast_expr(const id_to_ast_expr & obj)10448 id_to_ast_expr::id_to_ast_expr(const id_to_ast_expr &obj)
10449 : ptr(nullptr)
10450 {
10451 ptr = obj.copy();
10452 }
10453
id_to_ast_expr(__isl_take isl_id_to_ast_expr * ptr)10454 id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr)
10455 : ptr(ptr) {}
10456
10457 id_to_ast_expr &id_to_ast_expr::operator=(id_to_ast_expr obj) {
10458 std::swap(this->ptr, obj.ptr);
10459 return *this;
10460 }
10461
~id_to_ast_expr()10462 id_to_ast_expr::~id_to_ast_expr() {
10463 if (ptr)
10464 isl_id_to_ast_expr_free(ptr);
10465 }
10466
copy()10467 __isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
10468 return isl_id_to_ast_expr_copy(ptr);
10469 }
10470
get()10471 __isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
10472 return ptr;
10473 }
10474
release()10475 __isl_give isl_id_to_ast_expr *id_to_ast_expr::release() {
10476 isl_id_to_ast_expr *tmp = ptr;
10477 ptr = nullptr;
10478 return tmp;
10479 }
10480
is_null()10481 bool id_to_ast_expr::is_null() const {
10482 return ptr == nullptr;
10483 }
10484
ctx()10485 isl::ctx id_to_ast_expr::ctx() const {
10486 return isl::ctx(isl_id_to_ast_expr_get_ctx(ptr));
10487 }
10488
alloc(isl::ctx ctx,int min_size)10489 isl::id_to_ast_expr id_to_ast_expr::alloc(isl::ctx ctx, int min_size)
10490 {
10491 auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
10492 return manage(res);
10493 }
10494
set(isl::id key,isl::ast_expr val)10495 isl::id_to_ast_expr id_to_ast_expr::set(isl::id key, isl::ast_expr val) const
10496 {
10497 auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
10498 return manage(res);
10499 }
10500
set(const std::string & key,const isl::ast_expr & val)10501 isl::id_to_ast_expr id_to_ast_expr::set(const std::string &key, const isl::ast_expr &val) const
10502 {
10503 return this->set(isl::id(ctx(), key), val);
10504 }
10505
10506 // implementations for isl::local_space
manage(__isl_take isl_local_space * ptr)10507 local_space manage(__isl_take isl_local_space *ptr) {
10508 return local_space(ptr);
10509 }
manage_copy(__isl_keep isl_local_space * ptr)10510 local_space manage_copy(__isl_keep isl_local_space *ptr) {
10511 ptr = isl_local_space_copy(ptr);
10512 return local_space(ptr);
10513 }
10514
local_space()10515 local_space::local_space()
10516 : ptr(nullptr) {}
10517
local_space(const local_space & obj)10518 local_space::local_space(const local_space &obj)
10519 : ptr(nullptr)
10520 {
10521 ptr = obj.copy();
10522 }
10523
local_space(__isl_take isl_local_space * ptr)10524 local_space::local_space(__isl_take isl_local_space *ptr)
10525 : ptr(ptr) {}
10526
local_space(isl::space space)10527 local_space::local_space(isl::space space)
10528 {
10529 auto res = isl_local_space_from_space(space.release());
10530 ptr = res;
10531 }
10532
10533 local_space &local_space::operator=(local_space obj) {
10534 std::swap(this->ptr, obj.ptr);
10535 return *this;
10536 }
10537
~local_space()10538 local_space::~local_space() {
10539 if (ptr)
10540 isl_local_space_free(ptr);
10541 }
10542
copy()10543 __isl_give isl_local_space *local_space::copy() const & {
10544 return isl_local_space_copy(ptr);
10545 }
10546
get()10547 __isl_keep isl_local_space *local_space::get() const {
10548 return ptr;
10549 }
10550
release()10551 __isl_give isl_local_space *local_space::release() {
10552 isl_local_space *tmp = ptr;
10553 ptr = nullptr;
10554 return tmp;
10555 }
10556
is_null()10557 bool local_space::is_null() const {
10558 return ptr == nullptr;
10559 }
10560
ctx()10561 isl::ctx local_space::ctx() const {
10562 return isl::ctx(isl_local_space_get_ctx(ptr));
10563 }
10564
10565 // implementations for isl::map
manage(__isl_take isl_map * ptr)10566 map manage(__isl_take isl_map *ptr) {
10567 return map(ptr);
10568 }
manage_copy(__isl_keep isl_map * ptr)10569 map manage_copy(__isl_keep isl_map *ptr) {
10570 ptr = isl_map_copy(ptr);
10571 return map(ptr);
10572 }
10573
map()10574 map::map()
10575 : ptr(nullptr) {}
10576
map(const map & obj)10577 map::map(const map &obj)
10578 : ptr(nullptr)
10579 {
10580 ptr = obj.copy();
10581 }
10582
map(__isl_take isl_map * ptr)10583 map::map(__isl_take isl_map *ptr)
10584 : ptr(ptr) {}
10585
map(isl::basic_map bmap)10586 map::map(isl::basic_map bmap)
10587 {
10588 auto res = isl_map_from_basic_map(bmap.release());
10589 ptr = res;
10590 }
10591
map(isl::ctx ctx,const std::string & str)10592 map::map(isl::ctx ctx, const std::string &str)
10593 {
10594 auto res = isl_map_read_from_str(ctx.release(), str.c_str());
10595 ptr = res;
10596 }
10597
10598 map &map::operator=(map obj) {
10599 std::swap(this->ptr, obj.ptr);
10600 return *this;
10601 }
10602
~map()10603 map::~map() {
10604 if (ptr)
10605 isl_map_free(ptr);
10606 }
10607
copy()10608 __isl_give isl_map *map::copy() const & {
10609 return isl_map_copy(ptr);
10610 }
10611
get()10612 __isl_keep isl_map *map::get() const {
10613 return ptr;
10614 }
10615
release()10616 __isl_give isl_map *map::release() {
10617 isl_map *tmp = ptr;
10618 ptr = nullptr;
10619 return tmp;
10620 }
10621
is_null()10622 bool map::is_null() const {
10623 return ptr == nullptr;
10624 }
10625
ctx()10626 isl::ctx map::ctx() const {
10627 return isl::ctx(isl_map_get_ctx(ptr));
10628 }
10629
add_constraint(isl::constraint constraint)10630 isl::map map::add_constraint(isl::constraint constraint) const
10631 {
10632 auto res = isl_map_add_constraint(copy(), constraint.release());
10633 return manage(res);
10634 }
10635
add_dims(isl::dim type,unsigned int n)10636 isl::map map::add_dims(isl::dim type, unsigned int n) const
10637 {
10638 auto res = isl_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10639 return manage(res);
10640 }
10641
affine_hull()10642 isl::basic_map map::affine_hull() const
10643 {
10644 auto res = isl_map_affine_hull(copy());
10645 return manage(res);
10646 }
10647
align_params(isl::space model)10648 isl::map map::align_params(isl::space model) const
10649 {
10650 auto res = isl_map_align_params(copy(), model.release());
10651 return manage(res);
10652 }
10653
apply_domain(isl::map map2)10654 isl::map map::apply_domain(isl::map map2) const
10655 {
10656 auto res = isl_map_apply_domain(copy(), map2.release());
10657 return manage(res);
10658 }
10659
apply_domain(const isl::union_map & umap2)10660 isl::union_map map::apply_domain(const isl::union_map &umap2) const
10661 {
10662 return isl::union_map(*this).apply_domain(umap2);
10663 }
10664
apply_domain(const isl::basic_map & map2)10665 isl::map map::apply_domain(const isl::basic_map &map2) const
10666 {
10667 return this->apply_domain(isl::map(map2));
10668 }
10669
apply_range(isl::map map2)10670 isl::map map::apply_range(isl::map map2) const
10671 {
10672 auto res = isl_map_apply_range(copy(), map2.release());
10673 return manage(res);
10674 }
10675
apply_range(const isl::union_map & umap2)10676 isl::union_map map::apply_range(const isl::union_map &umap2) const
10677 {
10678 return isl::union_map(*this).apply_range(umap2);
10679 }
10680
apply_range(const isl::basic_map & map2)10681 isl::map map::apply_range(const isl::basic_map &map2) const
10682 {
10683 return this->apply_range(isl::map(map2));
10684 }
10685
as_map()10686 isl::map map::as_map() const
10687 {
10688 return isl::union_map(*this).as_map();
10689 }
10690
as_multi_union_pw_aff()10691 isl::multi_union_pw_aff map::as_multi_union_pw_aff() const
10692 {
10693 return isl::union_map(*this).as_multi_union_pw_aff();
10694 }
10695
as_pw_multi_aff()10696 isl::pw_multi_aff map::as_pw_multi_aff() const
10697 {
10698 auto res = isl_map_as_pw_multi_aff(copy());
10699 return manage(res);
10700 }
10701
as_union_pw_multi_aff()10702 isl::union_pw_multi_aff map::as_union_pw_multi_aff() const
10703 {
10704 return isl::union_map(*this).as_union_pw_multi_aff();
10705 }
10706
basic_map_list()10707 isl::basic_map_list map::basic_map_list() const
10708 {
10709 auto res = isl_map_get_basic_map_list(get());
10710 return manage(res);
10711 }
10712
get_basic_map_list()10713 isl::basic_map_list map::get_basic_map_list() const
10714 {
10715 return basic_map_list();
10716 }
10717
bind_domain(isl::multi_id tuple)10718 isl::set map::bind_domain(isl::multi_id tuple) const
10719 {
10720 auto res = isl_map_bind_domain(copy(), tuple.release());
10721 return manage(res);
10722 }
10723
bind_range(isl::multi_id tuple)10724 isl::set map::bind_range(isl::multi_id tuple) const
10725 {
10726 auto res = isl_map_bind_range(copy(), tuple.release());
10727 return manage(res);
10728 }
10729
can_curry()10730 boolean map::can_curry() const
10731 {
10732 auto res = isl_map_can_curry(get());
10733 return manage(res);
10734 }
10735
coalesce()10736 isl::map map::coalesce() const
10737 {
10738 auto res = isl_map_coalesce(copy());
10739 return manage(res);
10740 }
10741
complement()10742 isl::map map::complement() const
10743 {
10744 auto res = isl_map_complement(copy());
10745 return manage(res);
10746 }
10747
compute_divs()10748 isl::union_map map::compute_divs() const
10749 {
10750 return isl::union_map(*this).compute_divs();
10751 }
10752
curry()10753 isl::map map::curry() const
10754 {
10755 auto res = isl_map_curry(copy());
10756 return manage(res);
10757 }
10758
deltas()10759 isl::set map::deltas() const
10760 {
10761 auto res = isl_map_deltas(copy());
10762 return manage(res);
10763 }
10764
detect_equalities()10765 isl::map map::detect_equalities() const
10766 {
10767 auto res = isl_map_detect_equalities(copy());
10768 return manage(res);
10769 }
10770
dim(isl::dim type)10771 class size map::dim(isl::dim type) const
10772 {
10773 auto res = isl_map_dim(get(), static_cast<enum isl_dim_type>(type));
10774 return manage(res);
10775 }
10776
dim_max(int pos)10777 isl::pw_aff map::dim_max(int pos) const
10778 {
10779 auto res = isl_map_dim_max(copy(), pos);
10780 return manage(res);
10781 }
10782
dim_min(int pos)10783 isl::pw_aff map::dim_min(int pos) const
10784 {
10785 auto res = isl_map_dim_min(copy(), pos);
10786 return manage(res);
10787 }
10788
domain()10789 isl::set map::domain() const
10790 {
10791 auto res = isl_map_domain(copy());
10792 return manage(res);
10793 }
10794
domain_factor_domain()10795 isl::map map::domain_factor_domain() const
10796 {
10797 auto res = isl_map_domain_factor_domain(copy());
10798 return manage(res);
10799 }
10800
domain_factor_range()10801 isl::map map::domain_factor_range() const
10802 {
10803 auto res = isl_map_domain_factor_range(copy());
10804 return manage(res);
10805 }
10806
domain_map()10807 isl::map map::domain_map() const
10808 {
10809 auto res = isl_map_domain_map(copy());
10810 return manage(res);
10811 }
10812
domain_map_union_pw_multi_aff()10813 isl::union_pw_multi_aff map::domain_map_union_pw_multi_aff() const
10814 {
10815 return isl::union_map(*this).domain_map_union_pw_multi_aff();
10816 }
10817
domain_product(isl::map map2)10818 isl::map map::domain_product(isl::map map2) const
10819 {
10820 auto res = isl_map_domain_product(copy(), map2.release());
10821 return manage(res);
10822 }
10823
domain_product(const isl::union_map & umap2)10824 isl::union_map map::domain_product(const isl::union_map &umap2) const
10825 {
10826 return isl::union_map(*this).domain_product(umap2);
10827 }
10828
domain_product(const isl::basic_map & map2)10829 isl::map map::domain_product(const isl::basic_map &map2) const
10830 {
10831 return this->domain_product(isl::map(map2));
10832 }
10833
domain_tuple_dim()10834 class size map::domain_tuple_dim() const
10835 {
10836 auto res = isl_map_domain_tuple_dim(get());
10837 return manage(res);
10838 }
10839
domain_tuple_id()10840 isl::id map::domain_tuple_id() const
10841 {
10842 auto res = isl_map_get_domain_tuple_id(get());
10843 return manage(res);
10844 }
10845
get_domain_tuple_id()10846 isl::id map::get_domain_tuple_id() const
10847 {
10848 return domain_tuple_id();
10849 }
10850
empty(isl::space space)10851 isl::map map::empty(isl::space space)
10852 {
10853 auto res = isl_map_empty(space.release());
10854 return manage(res);
10855 }
10856
eq_at(isl::multi_pw_aff mpa)10857 isl::map map::eq_at(isl::multi_pw_aff mpa) const
10858 {
10859 auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
10860 return manage(res);
10861 }
10862
eq_at(const isl::multi_union_pw_aff & mupa)10863 isl::union_map map::eq_at(const isl::multi_union_pw_aff &mupa) const
10864 {
10865 return isl::union_map(*this).eq_at(mupa);
10866 }
10867
eq_at(const isl::aff & mpa)10868 isl::map map::eq_at(const isl::aff &mpa) const
10869 {
10870 return this->eq_at(isl::multi_pw_aff(mpa));
10871 }
10872
eq_at(const isl::multi_aff & mpa)10873 isl::map map::eq_at(const isl::multi_aff &mpa) const
10874 {
10875 return this->eq_at(isl::multi_pw_aff(mpa));
10876 }
10877
eq_at(const isl::pw_aff & mpa)10878 isl::map map::eq_at(const isl::pw_aff &mpa) const
10879 {
10880 return this->eq_at(isl::multi_pw_aff(mpa));
10881 }
10882
eq_at(const isl::pw_multi_aff & mpa)10883 isl::map map::eq_at(const isl::pw_multi_aff &mpa) const
10884 {
10885 return this->eq_at(isl::multi_pw_aff(mpa));
10886 }
10887
equate(isl::dim type1,int pos1,isl::dim type2,int pos2)10888 isl::map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
10889 {
10890 auto res = isl_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
10891 return manage(res);
10892 }
10893
every_map(const std::function<boolean (isl::map)> & test)10894 boolean map::every_map(const std::function<boolean(isl::map)> &test) const
10895 {
10896 return isl::union_map(*this).every_map(test);
10897 }
10898
extract_map(const isl::space & space)10899 isl::map map::extract_map(const isl::space &space) const
10900 {
10901 return isl::union_map(*this).extract_map(space);
10902 }
10903
factor_domain()10904 isl::map map::factor_domain() const
10905 {
10906 auto res = isl_map_factor_domain(copy());
10907 return manage(res);
10908 }
10909
factor_range()10910 isl::map map::factor_range() const
10911 {
10912 auto res = isl_map_factor_range(copy());
10913 return manage(res);
10914 }
10915
fix_si(isl::dim type,unsigned int pos,int value)10916 isl::map map::fix_si(isl::dim type, unsigned int pos, int value) const
10917 {
10918 auto res = isl_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
10919 return manage(res);
10920 }
10921
fixed_power(const isl::val & exp)10922 isl::union_map map::fixed_power(const isl::val &exp) const
10923 {
10924 return isl::union_map(*this).fixed_power(exp);
10925 }
10926
fixed_power(long exp)10927 isl::union_map map::fixed_power(long exp) const
10928 {
10929 return this->fixed_power(isl::val(ctx(), exp));
10930 }
10931
flat_range_product(isl::map map2)10932 isl::map map::flat_range_product(isl::map map2) const
10933 {
10934 auto res = isl_map_flat_range_product(copy(), map2.release());
10935 return manage(res);
10936 }
10937
flat_range_product(const isl::union_map & umap2)10938 isl::union_map map::flat_range_product(const isl::union_map &umap2) const
10939 {
10940 return isl::union_map(*this).flat_range_product(umap2);
10941 }
10942
flat_range_product(const isl::basic_map & map2)10943 isl::map map::flat_range_product(const isl::basic_map &map2) const
10944 {
10945 return this->flat_range_product(isl::map(map2));
10946 }
10947
flatten()10948 isl::map map::flatten() const
10949 {
10950 auto res = isl_map_flatten(copy());
10951 return manage(res);
10952 }
10953
flatten_domain()10954 isl::map map::flatten_domain() const
10955 {
10956 auto res = isl_map_flatten_domain(copy());
10957 return manage(res);
10958 }
10959
flatten_range()10960 isl::map map::flatten_range() const
10961 {
10962 auto res = isl_map_flatten_range(copy());
10963 return manage(res);
10964 }
10965
floordiv_val(isl::val d)10966 isl::map map::floordiv_val(isl::val d) const
10967 {
10968 auto res = isl_map_floordiv_val(copy(), d.release());
10969 return manage(res);
10970 }
10971
floordiv_val(long d)10972 isl::map map::floordiv_val(long d) const
10973 {
10974 return this->floordiv_val(isl::val(ctx(), d));
10975 }
10976
foreach_basic_map(const std::function<stat (isl::basic_map)> & fn)10977 stat map::foreach_basic_map(const std::function<stat(isl::basic_map)> &fn) const
10978 {
10979 struct fn_data {
10980 std::function<stat(isl::basic_map)> func;
10981 } fn_data = { fn };
10982 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
10983 auto *data = static_cast<struct fn_data *>(arg_1);
10984 auto ret = (data->func)(manage(arg_0));
10985 return ret.release();
10986 };
10987 auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
10988 return manage(res);
10989 }
10990
foreach_map(const std::function<stat (isl::map)> & fn)10991 stat map::foreach_map(const std::function<stat(isl::map)> &fn) const
10992 {
10993 return isl::union_map(*this).foreach_map(fn);
10994 }
10995
from_aff(isl::aff aff)10996 isl::map map::from_aff(isl::aff aff)
10997 {
10998 auto res = isl_map_from_aff(aff.release());
10999 return manage(res);
11000 }
11001
from_domain(isl::set set)11002 isl::map map::from_domain(isl::set set)
11003 {
11004 auto res = isl_map_from_domain(set.release());
11005 return manage(res);
11006 }
11007
from_domain_and_range(isl::set domain,isl::set range)11008 isl::map map::from_domain_and_range(isl::set domain, isl::set range)
11009 {
11010 auto res = isl_map_from_domain_and_range(domain.release(), range.release());
11011 return manage(res);
11012 }
11013
from_multi_aff(isl::multi_aff maff)11014 isl::map map::from_multi_aff(isl::multi_aff maff)
11015 {
11016 auto res = isl_map_from_multi_aff(maff.release());
11017 return manage(res);
11018 }
11019
from_pw_aff(isl::pw_aff pwaff)11020 isl::map map::from_pw_aff(isl::pw_aff pwaff)
11021 {
11022 auto res = isl_map_from_pw_aff(pwaff.release());
11023 return manage(res);
11024 }
11025
from_range(isl::set set)11026 isl::map map::from_range(isl::set set)
11027 {
11028 auto res = isl_map_from_range(set.release());
11029 return manage(res);
11030 }
11031
from_union_map(isl::union_map umap)11032 isl::map map::from_union_map(isl::union_map umap)
11033 {
11034 auto res = isl_map_from_union_map(umap.release());
11035 return manage(res);
11036 }
11037
gist(isl::map context)11038 isl::map map::gist(isl::map context) const
11039 {
11040 auto res = isl_map_gist(copy(), context.release());
11041 return manage(res);
11042 }
11043
gist(const isl::union_map & context)11044 isl::union_map map::gist(const isl::union_map &context) const
11045 {
11046 return isl::union_map(*this).gist(context);
11047 }
11048
gist(const isl::basic_map & context)11049 isl::map map::gist(const isl::basic_map &context) const
11050 {
11051 return this->gist(isl::map(context));
11052 }
11053
gist_domain(isl::set context)11054 isl::map map::gist_domain(isl::set context) const
11055 {
11056 auto res = isl_map_gist_domain(copy(), context.release());
11057 return manage(res);
11058 }
11059
gist_domain(const isl::union_set & uset)11060 isl::union_map map::gist_domain(const isl::union_set &uset) const
11061 {
11062 return isl::union_map(*this).gist_domain(uset);
11063 }
11064
gist_domain(const isl::basic_set & context)11065 isl::map map::gist_domain(const isl::basic_set &context) const
11066 {
11067 return this->gist_domain(isl::set(context));
11068 }
11069
gist_domain(const isl::point & context)11070 isl::map map::gist_domain(const isl::point &context) const
11071 {
11072 return this->gist_domain(isl::set(context));
11073 }
11074
gist_params(isl::set context)11075 isl::map map::gist_params(isl::set context) const
11076 {
11077 auto res = isl_map_gist_params(copy(), context.release());
11078 return manage(res);
11079 }
11080
gist_range(const isl::union_set & uset)11081 isl::union_map map::gist_range(const isl::union_set &uset) const
11082 {
11083 return isl::union_map(*this).gist_range(uset);
11084 }
11085
has_domain_tuple_id()11086 boolean map::has_domain_tuple_id() const
11087 {
11088 auto res = isl_map_has_domain_tuple_id(get());
11089 return manage(res);
11090 }
11091
has_equal_space(const isl::map & map2)11092 boolean map::has_equal_space(const isl::map &map2) const
11093 {
11094 auto res = isl_map_has_equal_space(get(), map2.get());
11095 return manage(res);
11096 }
11097
has_range_tuple_id()11098 boolean map::has_range_tuple_id() const
11099 {
11100 auto res = isl_map_has_range_tuple_id(get());
11101 return manage(res);
11102 }
11103
has_tuple_id(isl::dim type)11104 boolean map::has_tuple_id(isl::dim type) const
11105 {
11106 auto res = isl_map_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11107 return manage(res);
11108 }
11109
has_tuple_name(isl::dim type)11110 boolean map::has_tuple_name(isl::dim type) const
11111 {
11112 auto res = isl_map_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
11113 return manage(res);
11114 }
11115
identity(isl::space space)11116 isl::map map::identity(isl::space space)
11117 {
11118 auto res = isl_map_identity(space.release());
11119 return manage(res);
11120 }
11121
intersect(isl::map map2)11122 isl::map map::intersect(isl::map map2) const
11123 {
11124 auto res = isl_map_intersect(copy(), map2.release());
11125 return manage(res);
11126 }
11127
intersect(const isl::union_map & umap2)11128 isl::union_map map::intersect(const isl::union_map &umap2) const
11129 {
11130 return isl::union_map(*this).intersect(umap2);
11131 }
11132
intersect(const isl::basic_map & map2)11133 isl::map map::intersect(const isl::basic_map &map2) const
11134 {
11135 return this->intersect(isl::map(map2));
11136 }
11137
intersect_domain(isl::set set)11138 isl::map map::intersect_domain(isl::set set) const
11139 {
11140 auto res = isl_map_intersect_domain(copy(), set.release());
11141 return manage(res);
11142 }
11143
intersect_domain(const isl::space & space)11144 isl::union_map map::intersect_domain(const isl::space &space) const
11145 {
11146 return isl::union_map(*this).intersect_domain(space);
11147 }
11148
intersect_domain(const isl::union_set & uset)11149 isl::union_map map::intersect_domain(const isl::union_set &uset) const
11150 {
11151 return isl::union_map(*this).intersect_domain(uset);
11152 }
11153
intersect_domain(const isl::basic_set & set)11154 isl::map map::intersect_domain(const isl::basic_set &set) const
11155 {
11156 return this->intersect_domain(isl::set(set));
11157 }
11158
intersect_domain(const isl::point & set)11159 isl::map map::intersect_domain(const isl::point &set) const
11160 {
11161 return this->intersect_domain(isl::set(set));
11162 }
11163
intersect_domain_factor_domain(isl::map factor)11164 isl::map map::intersect_domain_factor_domain(isl::map factor) const
11165 {
11166 auto res = isl_map_intersect_domain_factor_domain(copy(), factor.release());
11167 return manage(res);
11168 }
11169
intersect_domain_factor_domain(const isl::union_map & factor)11170 isl::union_map map::intersect_domain_factor_domain(const isl::union_map &factor) const
11171 {
11172 return isl::union_map(*this).intersect_domain_factor_domain(factor);
11173 }
11174
intersect_domain_factor_domain(const isl::basic_map & factor)11175 isl::map map::intersect_domain_factor_domain(const isl::basic_map &factor) const
11176 {
11177 return this->intersect_domain_factor_domain(isl::map(factor));
11178 }
11179
intersect_domain_factor_range(isl::map factor)11180 isl::map map::intersect_domain_factor_range(isl::map factor) const
11181 {
11182 auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
11183 return manage(res);
11184 }
11185
intersect_domain_factor_range(const isl::union_map & factor)11186 isl::union_map map::intersect_domain_factor_range(const isl::union_map &factor) const
11187 {
11188 return isl::union_map(*this).intersect_domain_factor_range(factor);
11189 }
11190
intersect_domain_factor_range(const isl::basic_map & factor)11191 isl::map map::intersect_domain_factor_range(const isl::basic_map &factor) const
11192 {
11193 return this->intersect_domain_factor_range(isl::map(factor));
11194 }
11195
intersect_params(isl::set params)11196 isl::map map::intersect_params(isl::set params) const
11197 {
11198 auto res = isl_map_intersect_params(copy(), params.release());
11199 return manage(res);
11200 }
11201
intersect_range(isl::set set)11202 isl::map map::intersect_range(isl::set set) const
11203 {
11204 auto res = isl_map_intersect_range(copy(), set.release());
11205 return manage(res);
11206 }
11207
intersect_range(const isl::space & space)11208 isl::union_map map::intersect_range(const isl::space &space) const
11209 {
11210 return isl::union_map(*this).intersect_range(space);
11211 }
11212
intersect_range(const isl::union_set & uset)11213 isl::union_map map::intersect_range(const isl::union_set &uset) const
11214 {
11215 return isl::union_map(*this).intersect_range(uset);
11216 }
11217
intersect_range(const isl::basic_set & set)11218 isl::map map::intersect_range(const isl::basic_set &set) const
11219 {
11220 return this->intersect_range(isl::set(set));
11221 }
11222
intersect_range(const isl::point & set)11223 isl::map map::intersect_range(const isl::point &set) const
11224 {
11225 return this->intersect_range(isl::set(set));
11226 }
11227
intersect_range_factor_domain(isl::map factor)11228 isl::map map::intersect_range_factor_domain(isl::map factor) const
11229 {
11230 auto res = isl_map_intersect_range_factor_domain(copy(), factor.release());
11231 return manage(res);
11232 }
11233
intersect_range_factor_domain(const isl::union_map & factor)11234 isl::union_map map::intersect_range_factor_domain(const isl::union_map &factor) const
11235 {
11236 return isl::union_map(*this).intersect_range_factor_domain(factor);
11237 }
11238
intersect_range_factor_domain(const isl::basic_map & factor)11239 isl::map map::intersect_range_factor_domain(const isl::basic_map &factor) const
11240 {
11241 return this->intersect_range_factor_domain(isl::map(factor));
11242 }
11243
intersect_range_factor_range(isl::map factor)11244 isl::map map::intersect_range_factor_range(isl::map factor) const
11245 {
11246 auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
11247 return manage(res);
11248 }
11249
intersect_range_factor_range(const isl::union_map & factor)11250 isl::union_map map::intersect_range_factor_range(const isl::union_map &factor) const
11251 {
11252 return isl::union_map(*this).intersect_range_factor_range(factor);
11253 }
11254
intersect_range_factor_range(const isl::basic_map & factor)11255 isl::map map::intersect_range_factor_range(const isl::basic_map &factor) const
11256 {
11257 return this->intersect_range_factor_range(isl::map(factor));
11258 }
11259
involves_dims(isl::dim type,unsigned int first,unsigned int n)11260 boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11261 {
11262 auto res = isl_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
11263 return manage(res);
11264 }
11265
is_bijective()11266 boolean map::is_bijective() const
11267 {
11268 auto res = isl_map_is_bijective(get());
11269 return manage(res);
11270 }
11271
is_disjoint(const isl::map & map2)11272 boolean map::is_disjoint(const isl::map &map2) const
11273 {
11274 auto res = isl_map_is_disjoint(get(), map2.get());
11275 return manage(res);
11276 }
11277
is_disjoint(const isl::union_map & umap2)11278 boolean map::is_disjoint(const isl::union_map &umap2) const
11279 {
11280 return isl::union_map(*this).is_disjoint(umap2);
11281 }
11282
is_disjoint(const isl::basic_map & map2)11283 boolean map::is_disjoint(const isl::basic_map &map2) const
11284 {
11285 return this->is_disjoint(isl::map(map2));
11286 }
11287
is_empty()11288 boolean map::is_empty() const
11289 {
11290 auto res = isl_map_is_empty(get());
11291 return manage(res);
11292 }
11293
is_equal(const isl::map & map2)11294 boolean map::is_equal(const isl::map &map2) const
11295 {
11296 auto res = isl_map_is_equal(get(), map2.get());
11297 return manage(res);
11298 }
11299
is_equal(const isl::union_map & umap2)11300 boolean map::is_equal(const isl::union_map &umap2) const
11301 {
11302 return isl::union_map(*this).is_equal(umap2);
11303 }
11304
is_equal(const isl::basic_map & map2)11305 boolean map::is_equal(const isl::basic_map &map2) const
11306 {
11307 return this->is_equal(isl::map(map2));
11308 }
11309
is_injective()11310 boolean map::is_injective() const
11311 {
11312 auto res = isl_map_is_injective(get());
11313 return manage(res);
11314 }
11315
is_single_valued()11316 boolean map::is_single_valued() const
11317 {
11318 auto res = isl_map_is_single_valued(get());
11319 return manage(res);
11320 }
11321
is_strict_subset(const isl::map & map2)11322 boolean map::is_strict_subset(const isl::map &map2) const
11323 {
11324 auto res = isl_map_is_strict_subset(get(), map2.get());
11325 return manage(res);
11326 }
11327
is_strict_subset(const isl::union_map & umap2)11328 boolean map::is_strict_subset(const isl::union_map &umap2) const
11329 {
11330 return isl::union_map(*this).is_strict_subset(umap2);
11331 }
11332
is_strict_subset(const isl::basic_map & map2)11333 boolean map::is_strict_subset(const isl::basic_map &map2) const
11334 {
11335 return this->is_strict_subset(isl::map(map2));
11336 }
11337
is_subset(const isl::map & map2)11338 boolean map::is_subset(const isl::map &map2) const
11339 {
11340 auto res = isl_map_is_subset(get(), map2.get());
11341 return manage(res);
11342 }
11343
is_subset(const isl::union_map & umap2)11344 boolean map::is_subset(const isl::union_map &umap2) const
11345 {
11346 return isl::union_map(*this).is_subset(umap2);
11347 }
11348
is_subset(const isl::basic_map & map2)11349 boolean map::is_subset(const isl::basic_map &map2) const
11350 {
11351 return this->is_subset(isl::map(map2));
11352 }
11353
isa_map()11354 boolean map::isa_map() const
11355 {
11356 return isl::union_map(*this).isa_map();
11357 }
11358
lex_ge(isl::space set_space)11359 isl::map map::lex_ge(isl::space set_space)
11360 {
11361 auto res = isl_map_lex_ge(set_space.release());
11362 return manage(res);
11363 }
11364
lex_ge_at(isl::multi_pw_aff mpa)11365 isl::map map::lex_ge_at(isl::multi_pw_aff mpa) const
11366 {
11367 auto res = isl_map_lex_ge_at_multi_pw_aff(copy(), mpa.release());
11368 return manage(res);
11369 }
11370
lex_gt(isl::space set_space)11371 isl::map map::lex_gt(isl::space set_space)
11372 {
11373 auto res = isl_map_lex_gt(set_space.release());
11374 return manage(res);
11375 }
11376
lex_gt_at(isl::multi_pw_aff mpa)11377 isl::map map::lex_gt_at(isl::multi_pw_aff mpa) const
11378 {
11379 auto res = isl_map_lex_gt_at_multi_pw_aff(copy(), mpa.release());
11380 return manage(res);
11381 }
11382
lex_le(isl::space set_space)11383 isl::map map::lex_le(isl::space set_space)
11384 {
11385 auto res = isl_map_lex_le(set_space.release());
11386 return manage(res);
11387 }
11388
lex_le_at(isl::multi_pw_aff mpa)11389 isl::map map::lex_le_at(isl::multi_pw_aff mpa) const
11390 {
11391 auto res = isl_map_lex_le_at_multi_pw_aff(copy(), mpa.release());
11392 return manage(res);
11393 }
11394
lex_lt(isl::space set_space)11395 isl::map map::lex_lt(isl::space set_space)
11396 {
11397 auto res = isl_map_lex_lt(set_space.release());
11398 return manage(res);
11399 }
11400
lex_lt_at(isl::multi_pw_aff mpa)11401 isl::map map::lex_lt_at(isl::multi_pw_aff mpa) const
11402 {
11403 auto res = isl_map_lex_lt_at_multi_pw_aff(copy(), mpa.release());
11404 return manage(res);
11405 }
11406
lexmax()11407 isl::map map::lexmax() const
11408 {
11409 auto res = isl_map_lexmax(copy());
11410 return manage(res);
11411 }
11412
lexmax_pw_multi_aff()11413 isl::pw_multi_aff map::lexmax_pw_multi_aff() const
11414 {
11415 auto res = isl_map_lexmax_pw_multi_aff(copy());
11416 return manage(res);
11417 }
11418
lexmin()11419 isl::map map::lexmin() const
11420 {
11421 auto res = isl_map_lexmin(copy());
11422 return manage(res);
11423 }
11424
lexmin_pw_multi_aff()11425 isl::pw_multi_aff map::lexmin_pw_multi_aff() const
11426 {
11427 auto res = isl_map_lexmin_pw_multi_aff(copy());
11428 return manage(res);
11429 }
11430
lower_bound(isl::multi_pw_aff lower)11431 isl::map map::lower_bound(isl::multi_pw_aff lower) const
11432 {
11433 auto res = isl_map_lower_bound_multi_pw_aff(copy(), lower.release());
11434 return manage(res);
11435 }
11436
lower_bound_si(isl::dim type,unsigned int pos,int value)11437 isl::map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
11438 {
11439 auto res = isl_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
11440 return manage(res);
11441 }
11442
map_list()11443 isl::map_list map::map_list() const
11444 {
11445 return isl::union_map(*this).map_list();
11446 }
11447
max_multi_pw_aff()11448 isl::multi_pw_aff map::max_multi_pw_aff() const
11449 {
11450 auto res = isl_map_max_multi_pw_aff(copy());
11451 return manage(res);
11452 }
11453
min_multi_pw_aff()11454 isl::multi_pw_aff map::min_multi_pw_aff() const
11455 {
11456 auto res = isl_map_min_multi_pw_aff(copy());
11457 return manage(res);
11458 }
11459
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)11460 isl::map map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
11461 {
11462 auto res = isl_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
11463 return manage(res);
11464 }
11465
n_basic_map()11466 class size map::n_basic_map() const
11467 {
11468 auto res = isl_map_n_basic_map(get());
11469 return manage(res);
11470 }
11471
order_lt(isl::dim type1,int pos1,isl::dim type2,int pos2)11472 isl::map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
11473 {
11474 auto res = isl_map_order_lt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
11475 return manage(res);
11476 }
11477
params()11478 isl::set map::params() const
11479 {
11480 return isl::union_map(*this).params();
11481 }
11482
polyhedral_hull()11483 isl::basic_map map::polyhedral_hull() const
11484 {
11485 auto res = isl_map_polyhedral_hull(copy());
11486 return manage(res);
11487 }
11488
preimage_domain(isl::multi_aff ma)11489 isl::map map::preimage_domain(isl::multi_aff ma) const
11490 {
11491 auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
11492 return manage(res);
11493 }
11494
preimage_domain(isl::multi_pw_aff mpa)11495 isl::map map::preimage_domain(isl::multi_pw_aff mpa) const
11496 {
11497 auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
11498 return manage(res);
11499 }
11500
preimage_domain(isl::pw_multi_aff pma)11501 isl::map map::preimage_domain(isl::pw_multi_aff pma) const
11502 {
11503 auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
11504 return manage(res);
11505 }
11506
preimage_domain(const isl::union_pw_multi_aff & upma)11507 isl::union_map map::preimage_domain(const isl::union_pw_multi_aff &upma) const
11508 {
11509 return isl::union_map(*this).preimage_domain(upma);
11510 }
11511
preimage_range(isl::multi_aff ma)11512 isl::map map::preimage_range(isl::multi_aff ma) const
11513 {
11514 auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
11515 return manage(res);
11516 }
11517
preimage_range(isl::pw_multi_aff pma)11518 isl::map map::preimage_range(isl::pw_multi_aff pma) const
11519 {
11520 auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
11521 return manage(res);
11522 }
11523
preimage_range(const isl::union_pw_multi_aff & upma)11524 isl::union_map map::preimage_range(const isl::union_pw_multi_aff &upma) const
11525 {
11526 return isl::union_map(*this).preimage_range(upma);
11527 }
11528
product(isl::map map2)11529 isl::map map::product(isl::map map2) const
11530 {
11531 auto res = isl_map_product(copy(), map2.release());
11532 return manage(res);
11533 }
11534
product(const isl::union_map & umap2)11535 isl::union_map map::product(const isl::union_map &umap2) const
11536 {
11537 return isl::union_map(*this).product(umap2);
11538 }
11539
product(const isl::basic_map & map2)11540 isl::map map::product(const isl::basic_map &map2) const
11541 {
11542 return this->product(isl::map(map2));
11543 }
11544
project_out(isl::dim type,unsigned int first,unsigned int n)11545 isl::map map::project_out(isl::dim type, unsigned int first, unsigned int n) const
11546 {
11547 auto res = isl_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
11548 return manage(res);
11549 }
11550
project_out_all_params()11551 isl::map map::project_out_all_params() const
11552 {
11553 auto res = isl_map_project_out_all_params(copy());
11554 return manage(res);
11555 }
11556
range()11557 isl::set map::range() const
11558 {
11559 auto res = isl_map_range(copy());
11560 return manage(res);
11561 }
11562
range_factor_domain()11563 isl::map map::range_factor_domain() const
11564 {
11565 auto res = isl_map_range_factor_domain(copy());
11566 return manage(res);
11567 }
11568
range_factor_range()11569 isl::map map::range_factor_range() const
11570 {
11571 auto res = isl_map_range_factor_range(copy());
11572 return manage(res);
11573 }
11574
range_lattice_tile()11575 isl::fixed_box map::range_lattice_tile() const
11576 {
11577 auto res = isl_map_get_range_lattice_tile(get());
11578 return manage(res);
11579 }
11580
get_range_lattice_tile()11581 isl::fixed_box map::get_range_lattice_tile() const
11582 {
11583 return range_lattice_tile();
11584 }
11585
range_map()11586 isl::map map::range_map() const
11587 {
11588 auto res = isl_map_range_map(copy());
11589 return manage(res);
11590 }
11591
range_product(isl::map map2)11592 isl::map map::range_product(isl::map map2) const
11593 {
11594 auto res = isl_map_range_product(copy(), map2.release());
11595 return manage(res);
11596 }
11597
range_product(const isl::union_map & umap2)11598 isl::union_map map::range_product(const isl::union_map &umap2) const
11599 {
11600 return isl::union_map(*this).range_product(umap2);
11601 }
11602
range_product(const isl::basic_map & map2)11603 isl::map map::range_product(const isl::basic_map &map2) const
11604 {
11605 return this->range_product(isl::map(map2));
11606 }
11607
range_reverse()11608 isl::map map::range_reverse() const
11609 {
11610 auto res = isl_map_range_reverse(copy());
11611 return manage(res);
11612 }
11613
range_simple_fixed_box_hull()11614 isl::fixed_box map::range_simple_fixed_box_hull() const
11615 {
11616 auto res = isl_map_get_range_simple_fixed_box_hull(get());
11617 return manage(res);
11618 }
11619
get_range_simple_fixed_box_hull()11620 isl::fixed_box map::get_range_simple_fixed_box_hull() const
11621 {
11622 return range_simple_fixed_box_hull();
11623 }
11624
range_tuple_dim()11625 class size map::range_tuple_dim() const
11626 {
11627 auto res = isl_map_range_tuple_dim(get());
11628 return manage(res);
11629 }
11630
range_tuple_id()11631 isl::id map::range_tuple_id() const
11632 {
11633 auto res = isl_map_get_range_tuple_id(get());
11634 return manage(res);
11635 }
11636
get_range_tuple_id()11637 isl::id map::get_range_tuple_id() const
11638 {
11639 return range_tuple_id();
11640 }
11641
reverse()11642 isl::map map::reverse() const
11643 {
11644 auto res = isl_map_reverse(copy());
11645 return manage(res);
11646 }
11647
sample()11648 isl::basic_map map::sample() const
11649 {
11650 auto res = isl_map_sample(copy());
11651 return manage(res);
11652 }
11653
set_domain_tuple(isl::id id)11654 isl::map map::set_domain_tuple(isl::id id) const
11655 {
11656 auto res = isl_map_set_domain_tuple_id(copy(), id.release());
11657 return manage(res);
11658 }
11659
set_domain_tuple(const std::string & id)11660 isl::map map::set_domain_tuple(const std::string &id) const
11661 {
11662 return this->set_domain_tuple(isl::id(ctx(), id));
11663 }
11664
set_range_tuple(isl::id id)11665 isl::map map::set_range_tuple(isl::id id) const
11666 {
11667 auto res = isl_map_set_range_tuple_id(copy(), id.release());
11668 return manage(res);
11669 }
11670
set_range_tuple(const std::string & id)11671 isl::map map::set_range_tuple(const std::string &id) const
11672 {
11673 return this->set_range_tuple(isl::id(ctx(), id));
11674 }
11675
set_tuple_id(isl::dim type,isl::id id)11676 isl::map map::set_tuple_id(isl::dim type, isl::id id) const
11677 {
11678 auto res = isl_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11679 return manage(res);
11680 }
11681
set_tuple_id(isl::dim type,const std::string & id)11682 isl::map map::set_tuple_id(isl::dim type, const std::string &id) const
11683 {
11684 return this->set_tuple_id(type, isl::id(ctx(), id));
11685 }
11686
space()11687 isl::space map::space() const
11688 {
11689 auto res = isl_map_get_space(get());
11690 return manage(res);
11691 }
11692
get_space()11693 isl::space map::get_space() const
11694 {
11695 return space();
11696 }
11697
subtract(isl::map map2)11698 isl::map map::subtract(isl::map map2) const
11699 {
11700 auto res = isl_map_subtract(copy(), map2.release());
11701 return manage(res);
11702 }
11703
subtract(const isl::union_map & umap2)11704 isl::union_map map::subtract(const isl::union_map &umap2) const
11705 {
11706 return isl::union_map(*this).subtract(umap2);
11707 }
11708
subtract(const isl::basic_map & map2)11709 isl::map map::subtract(const isl::basic_map &map2) const
11710 {
11711 return this->subtract(isl::map(map2));
11712 }
11713
subtract_domain(const isl::union_set & dom)11714 isl::union_map map::subtract_domain(const isl::union_set &dom) const
11715 {
11716 return isl::union_map(*this).subtract_domain(dom);
11717 }
11718
subtract_range(const isl::union_set & dom)11719 isl::union_map map::subtract_range(const isl::union_set &dom) const
11720 {
11721 return isl::union_map(*this).subtract_range(dom);
11722 }
11723
sum(isl::map map2)11724 isl::map map::sum(isl::map map2) const
11725 {
11726 auto res = isl_map_sum(copy(), map2.release());
11727 return manage(res);
11728 }
11729
to_list()11730 isl::map_list map::to_list() const
11731 {
11732 auto res = isl_map_to_list(copy());
11733 return manage(res);
11734 }
11735
to_union_map()11736 isl::union_map map::to_union_map() const
11737 {
11738 auto res = isl_map_to_union_map(copy());
11739 return manage(res);
11740 }
11741
tuple_id(isl::dim type)11742 isl::id map::tuple_id(isl::dim type) const
11743 {
11744 auto res = isl_map_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11745 return manage(res);
11746 }
11747
get_tuple_id(isl::dim type)11748 isl::id map::get_tuple_id(isl::dim type) const
11749 {
11750 return tuple_id(type);
11751 }
11752
uncurry()11753 isl::map map::uncurry() const
11754 {
11755 auto res = isl_map_uncurry(copy());
11756 return manage(res);
11757 }
11758
unite(isl::map map2)11759 isl::map map::unite(isl::map map2) const
11760 {
11761 auto res = isl_map_union(copy(), map2.release());
11762 return manage(res);
11763 }
11764
unite(const isl::union_map & umap2)11765 isl::union_map map::unite(const isl::union_map &umap2) const
11766 {
11767 return isl::union_map(*this).unite(umap2);
11768 }
11769
unite(const isl::basic_map & map2)11770 isl::map map::unite(const isl::basic_map &map2) const
11771 {
11772 return this->unite(isl::map(map2));
11773 }
11774
universe(isl::space space)11775 isl::map map::universe(isl::space space)
11776 {
11777 auto res = isl_map_universe(space.release());
11778 return manage(res);
11779 }
11780
unshifted_simple_hull()11781 isl::basic_map map::unshifted_simple_hull() const
11782 {
11783 auto res = isl_map_unshifted_simple_hull(copy());
11784 return manage(res);
11785 }
11786
upper_bound(isl::multi_pw_aff upper)11787 isl::map map::upper_bound(isl::multi_pw_aff upper) const
11788 {
11789 auto res = isl_map_upper_bound_multi_pw_aff(copy(), upper.release());
11790 return manage(res);
11791 }
11792
upper_bound_si(isl::dim type,unsigned int pos,int value)11793 isl::map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
11794 {
11795 auto res = isl_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
11796 return manage(res);
11797 }
11798
wrap()11799 isl::set map::wrap() const
11800 {
11801 auto res = isl_map_wrap(copy());
11802 return manage(res);
11803 }
11804
zip()11805 isl::map map::zip() const
11806 {
11807 auto res = isl_map_zip(copy());
11808 return manage(res);
11809 }
11810
11811 inline std::ostream &operator<<(std::ostream &os, const map &obj)
11812 {
11813 char *str = isl_map_to_str(obj.get());
11814 if (!str) {
11815 os.setstate(std::ios_base::badbit);
11816 return os;
11817 }
11818 os << str;
11819 free(str);
11820 return os;
11821 }
11822
11823 // implementations for isl::map_list
manage(__isl_take isl_map_list * ptr)11824 map_list manage(__isl_take isl_map_list *ptr) {
11825 return map_list(ptr);
11826 }
manage_copy(__isl_keep isl_map_list * ptr)11827 map_list manage_copy(__isl_keep isl_map_list *ptr) {
11828 ptr = isl_map_list_copy(ptr);
11829 return map_list(ptr);
11830 }
11831
map_list()11832 map_list::map_list()
11833 : ptr(nullptr) {}
11834
map_list(const map_list & obj)11835 map_list::map_list(const map_list &obj)
11836 : ptr(nullptr)
11837 {
11838 ptr = obj.copy();
11839 }
11840
map_list(__isl_take isl_map_list * ptr)11841 map_list::map_list(__isl_take isl_map_list *ptr)
11842 : ptr(ptr) {}
11843
map_list(isl::ctx ctx,int n)11844 map_list::map_list(isl::ctx ctx, int n)
11845 {
11846 auto res = isl_map_list_alloc(ctx.release(), n);
11847 ptr = res;
11848 }
11849
map_list(isl::map el)11850 map_list::map_list(isl::map el)
11851 {
11852 auto res = isl_map_list_from_map(el.release());
11853 ptr = res;
11854 }
11855
map_list(isl::ctx ctx,const std::string & str)11856 map_list::map_list(isl::ctx ctx, const std::string &str)
11857 {
11858 auto res = isl_map_list_read_from_str(ctx.release(), str.c_str());
11859 ptr = res;
11860 }
11861
11862 map_list &map_list::operator=(map_list obj) {
11863 std::swap(this->ptr, obj.ptr);
11864 return *this;
11865 }
11866
~map_list()11867 map_list::~map_list() {
11868 if (ptr)
11869 isl_map_list_free(ptr);
11870 }
11871
copy()11872 __isl_give isl_map_list *map_list::copy() const & {
11873 return isl_map_list_copy(ptr);
11874 }
11875
get()11876 __isl_keep isl_map_list *map_list::get() const {
11877 return ptr;
11878 }
11879
release()11880 __isl_give isl_map_list *map_list::release() {
11881 isl_map_list *tmp = ptr;
11882 ptr = nullptr;
11883 return tmp;
11884 }
11885
is_null()11886 bool map_list::is_null() const {
11887 return ptr == nullptr;
11888 }
11889
ctx()11890 isl::ctx map_list::ctx() const {
11891 return isl::ctx(isl_map_list_get_ctx(ptr));
11892 }
11893
add(isl::map el)11894 isl::map_list map_list::add(isl::map el) const
11895 {
11896 auto res = isl_map_list_add(copy(), el.release());
11897 return manage(res);
11898 }
11899
at(int index)11900 isl::map map_list::at(int index) const
11901 {
11902 auto res = isl_map_list_get_at(get(), index);
11903 return manage(res);
11904 }
11905
get_at(int index)11906 isl::map map_list::get_at(int index) const
11907 {
11908 return at(index);
11909 }
11910
clear()11911 isl::map_list map_list::clear() const
11912 {
11913 auto res = isl_map_list_clear(copy());
11914 return manage(res);
11915 }
11916
concat(isl::map_list list2)11917 isl::map_list map_list::concat(isl::map_list list2) const
11918 {
11919 auto res = isl_map_list_concat(copy(), list2.release());
11920 return manage(res);
11921 }
11922
drop(unsigned int first,unsigned int n)11923 isl::map_list map_list::drop(unsigned int first, unsigned int n) const
11924 {
11925 auto res = isl_map_list_drop(copy(), first, n);
11926 return manage(res);
11927 }
11928
foreach(const std::function<stat (isl::map)> & fn)11929 stat map_list::foreach(const std::function<stat(isl::map)> &fn) const
11930 {
11931 struct fn_data {
11932 std::function<stat(isl::map)> func;
11933 } fn_data = { fn };
11934 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
11935 auto *data = static_cast<struct fn_data *>(arg_1);
11936 auto ret = (data->func)(manage(arg_0));
11937 return ret.release();
11938 };
11939 auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
11940 return manage(res);
11941 }
11942
insert(unsigned int pos,isl::map el)11943 isl::map_list map_list::insert(unsigned int pos, isl::map el) const
11944 {
11945 auto res = isl_map_list_insert(copy(), pos, el.release());
11946 return manage(res);
11947 }
11948
size()11949 class size map_list::size() const
11950 {
11951 auto res = isl_map_list_size(get());
11952 return manage(res);
11953 }
11954
11955 inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
11956 {
11957 char *str = isl_map_list_to_str(obj.get());
11958 if (!str) {
11959 os.setstate(std::ios_base::badbit);
11960 return os;
11961 }
11962 os << str;
11963 free(str);
11964 return os;
11965 }
11966
11967 // implementations for isl::multi_aff
manage(__isl_take isl_multi_aff * ptr)11968 multi_aff manage(__isl_take isl_multi_aff *ptr) {
11969 return multi_aff(ptr);
11970 }
manage_copy(__isl_keep isl_multi_aff * ptr)11971 multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
11972 ptr = isl_multi_aff_copy(ptr);
11973 return multi_aff(ptr);
11974 }
11975
multi_aff()11976 multi_aff::multi_aff()
11977 : ptr(nullptr) {}
11978
multi_aff(const multi_aff & obj)11979 multi_aff::multi_aff(const multi_aff &obj)
11980 : ptr(nullptr)
11981 {
11982 ptr = obj.copy();
11983 }
11984
multi_aff(__isl_take isl_multi_aff * ptr)11985 multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
11986 : ptr(ptr) {}
11987
multi_aff(isl::aff aff)11988 multi_aff::multi_aff(isl::aff aff)
11989 {
11990 auto res = isl_multi_aff_from_aff(aff.release());
11991 ptr = res;
11992 }
11993
multi_aff(isl::space space,isl::aff_list list)11994 multi_aff::multi_aff(isl::space space, isl::aff_list list)
11995 {
11996 auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
11997 ptr = res;
11998 }
11999
multi_aff(isl::ctx ctx,const std::string & str)12000 multi_aff::multi_aff(isl::ctx ctx, const std::string &str)
12001 {
12002 auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
12003 ptr = res;
12004 }
12005
12006 multi_aff &multi_aff::operator=(multi_aff obj) {
12007 std::swap(this->ptr, obj.ptr);
12008 return *this;
12009 }
12010
~multi_aff()12011 multi_aff::~multi_aff() {
12012 if (ptr)
12013 isl_multi_aff_free(ptr);
12014 }
12015
copy()12016 __isl_give isl_multi_aff *multi_aff::copy() const & {
12017 return isl_multi_aff_copy(ptr);
12018 }
12019
get()12020 __isl_keep isl_multi_aff *multi_aff::get() const {
12021 return ptr;
12022 }
12023
release()12024 __isl_give isl_multi_aff *multi_aff::release() {
12025 isl_multi_aff *tmp = ptr;
12026 ptr = nullptr;
12027 return tmp;
12028 }
12029
is_null()12030 bool multi_aff::is_null() const {
12031 return ptr == nullptr;
12032 }
12033
ctx()12034 isl::ctx multi_aff::ctx() const {
12035 return isl::ctx(isl_multi_aff_get_ctx(ptr));
12036 }
12037
add(isl::multi_aff multi2)12038 isl::multi_aff multi_aff::add(isl::multi_aff multi2) const
12039 {
12040 auto res = isl_multi_aff_add(copy(), multi2.release());
12041 return manage(res);
12042 }
12043
add(const isl::multi_pw_aff & multi2)12044 isl::multi_pw_aff multi_aff::add(const isl::multi_pw_aff &multi2) const
12045 {
12046 return isl::pw_multi_aff(*this).add(multi2);
12047 }
12048
add(const isl::multi_union_pw_aff & multi2)12049 isl::multi_union_pw_aff multi_aff::add(const isl::multi_union_pw_aff &multi2) const
12050 {
12051 return isl::pw_multi_aff(*this).add(multi2);
12052 }
12053
add(const isl::pw_multi_aff & pma2)12054 isl::pw_multi_aff multi_aff::add(const isl::pw_multi_aff &pma2) const
12055 {
12056 return isl::pw_multi_aff(*this).add(pma2);
12057 }
12058
add(const isl::union_pw_multi_aff & upma2)12059 isl::union_pw_multi_aff multi_aff::add(const isl::union_pw_multi_aff &upma2) const
12060 {
12061 return isl::pw_multi_aff(*this).add(upma2);
12062 }
12063
add(const isl::aff & multi2)12064 isl::multi_aff multi_aff::add(const isl::aff &multi2) const
12065 {
12066 return this->add(isl::multi_aff(multi2));
12067 }
12068
add_constant(isl::multi_val mv)12069 isl::multi_aff multi_aff::add_constant(isl::multi_val mv) const
12070 {
12071 auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
12072 return manage(res);
12073 }
12074
add_constant(isl::val v)12075 isl::multi_aff multi_aff::add_constant(isl::val v) const
12076 {
12077 auto res = isl_multi_aff_add_constant_val(copy(), v.release());
12078 return manage(res);
12079 }
12080
add_constant(long v)12081 isl::multi_aff multi_aff::add_constant(long v) const
12082 {
12083 return this->add_constant(isl::val(ctx(), v));
12084 }
12085
add_pw_multi_aff(const isl::pw_multi_aff & pma)12086 isl::union_pw_multi_aff multi_aff::add_pw_multi_aff(const isl::pw_multi_aff &pma) const
12087 {
12088 return isl::pw_multi_aff(*this).add_pw_multi_aff(pma);
12089 }
12090
apply(const isl::union_pw_multi_aff & upma2)12091 isl::union_pw_multi_aff multi_aff::apply(const isl::union_pw_multi_aff &upma2) const
12092 {
12093 return isl::pw_multi_aff(*this).apply(upma2);
12094 }
12095
as_map()12096 isl::map multi_aff::as_map() const
12097 {
12098 auto res = isl_multi_aff_as_map(copy());
12099 return manage(res);
12100 }
12101
as_multi_aff()12102 isl::multi_aff multi_aff::as_multi_aff() const
12103 {
12104 return isl::pw_multi_aff(*this).as_multi_aff();
12105 }
12106
as_multi_union_pw_aff()12107 isl::multi_union_pw_aff multi_aff::as_multi_union_pw_aff() const
12108 {
12109 return isl::pw_multi_aff(*this).as_multi_union_pw_aff();
12110 }
12111
as_pw_multi_aff()12112 isl::pw_multi_aff multi_aff::as_pw_multi_aff() const
12113 {
12114 return isl::pw_multi_aff(*this).as_pw_multi_aff();
12115 }
12116
as_set()12117 isl::set multi_aff::as_set() const
12118 {
12119 auto res = isl_multi_aff_as_set(copy());
12120 return manage(res);
12121 }
12122
as_union_map()12123 isl::union_map multi_aff::as_union_map() const
12124 {
12125 return isl::pw_multi_aff(*this).as_union_map();
12126 }
12127
at(int pos)12128 isl::aff multi_aff::at(int pos) const
12129 {
12130 auto res = isl_multi_aff_get_at(get(), pos);
12131 return manage(res);
12132 }
12133
get_at(int pos)12134 isl::aff multi_aff::get_at(int pos) const
12135 {
12136 return at(pos);
12137 }
12138
bind(isl::multi_id tuple)12139 isl::basic_set multi_aff::bind(isl::multi_id tuple) const
12140 {
12141 auto res = isl_multi_aff_bind(copy(), tuple.release());
12142 return manage(res);
12143 }
12144
bind_domain(isl::multi_id tuple)12145 isl::multi_aff multi_aff::bind_domain(isl::multi_id tuple) const
12146 {
12147 auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
12148 return manage(res);
12149 }
12150
bind_domain_wrapped_domain(isl::multi_id tuple)12151 isl::multi_aff multi_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
12152 {
12153 auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
12154 return manage(res);
12155 }
12156
coalesce()12157 isl::pw_multi_aff multi_aff::coalesce() const
12158 {
12159 return isl::pw_multi_aff(*this).coalesce();
12160 }
12161
constant_multi_val()12162 isl::multi_val multi_aff::constant_multi_val() const
12163 {
12164 auto res = isl_multi_aff_get_constant_multi_val(get());
12165 return manage(res);
12166 }
12167
get_constant_multi_val()12168 isl::multi_val multi_aff::get_constant_multi_val() const
12169 {
12170 return constant_multi_val();
12171 }
12172
dim(isl::dim type)12173 class size multi_aff::dim(isl::dim type) const
12174 {
12175 auto res = isl_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
12176 return manage(res);
12177 }
12178
domain()12179 isl::set multi_aff::domain() const
12180 {
12181 return isl::pw_multi_aff(*this).domain();
12182 }
12183
domain_map(isl::space space)12184 isl::multi_aff multi_aff::domain_map(isl::space space)
12185 {
12186 auto res = isl_multi_aff_domain_map(space.release());
12187 return manage(res);
12188 }
12189
drop_dims(isl::dim type,unsigned int first,unsigned int n)12190 isl::pw_multi_aff multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
12191 {
12192 return isl::pw_multi_aff(*this).drop_dims(type, first, n);
12193 }
12194
extract_pw_multi_aff(const isl::space & space)12195 isl::pw_multi_aff multi_aff::extract_pw_multi_aff(const isl::space &space) const
12196 {
12197 return isl::pw_multi_aff(*this).extract_pw_multi_aff(space);
12198 }
12199
flat_range_product(isl::multi_aff multi2)12200 isl::multi_aff multi_aff::flat_range_product(isl::multi_aff multi2) const
12201 {
12202 auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
12203 return manage(res);
12204 }
12205
flat_range_product(const isl::multi_pw_aff & multi2)12206 isl::multi_pw_aff multi_aff::flat_range_product(const isl::multi_pw_aff &multi2) const
12207 {
12208 return isl::pw_multi_aff(*this).flat_range_product(multi2);
12209 }
12210
flat_range_product(const isl::multi_union_pw_aff & multi2)12211 isl::multi_union_pw_aff multi_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
12212 {
12213 return isl::pw_multi_aff(*this).flat_range_product(multi2);
12214 }
12215
flat_range_product(const isl::pw_multi_aff & pma2)12216 isl::pw_multi_aff multi_aff::flat_range_product(const isl::pw_multi_aff &pma2) const
12217 {
12218 return isl::pw_multi_aff(*this).flat_range_product(pma2);
12219 }
12220
flat_range_product(const isl::union_pw_multi_aff & upma2)12221 isl::union_pw_multi_aff multi_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
12222 {
12223 return isl::pw_multi_aff(*this).flat_range_product(upma2);
12224 }
12225
flat_range_product(const isl::aff & multi2)12226 isl::multi_aff multi_aff::flat_range_product(const isl::aff &multi2) const
12227 {
12228 return this->flat_range_product(isl::multi_aff(multi2));
12229 }
12230
floor()12231 isl::multi_aff multi_aff::floor() const
12232 {
12233 auto res = isl_multi_aff_floor(copy());
12234 return manage(res);
12235 }
12236
foreach_piece(const std::function<stat (isl::set,isl::multi_aff)> & fn)12237 stat multi_aff::foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const
12238 {
12239 return isl::pw_multi_aff(*this).foreach_piece(fn);
12240 }
12241
gist(isl::set context)12242 isl::multi_aff multi_aff::gist(isl::set context) const
12243 {
12244 auto res = isl_multi_aff_gist(copy(), context.release());
12245 return manage(res);
12246 }
12247
gist(const isl::union_set & context)12248 isl::union_pw_multi_aff multi_aff::gist(const isl::union_set &context) const
12249 {
12250 return isl::pw_multi_aff(*this).gist(context);
12251 }
12252
gist(const isl::basic_set & context)12253 isl::multi_aff multi_aff::gist(const isl::basic_set &context) const
12254 {
12255 return this->gist(isl::set(context));
12256 }
12257
gist(const isl::point & context)12258 isl::multi_aff multi_aff::gist(const isl::point &context) const
12259 {
12260 return this->gist(isl::set(context));
12261 }
12262
has_range_tuple_id()12263 boolean multi_aff::has_range_tuple_id() const
12264 {
12265 auto res = isl_multi_aff_has_range_tuple_id(get());
12266 return manage(res);
12267 }
12268
identity(isl::space space)12269 isl::multi_aff multi_aff::identity(isl::space space)
12270 {
12271 auto res = isl_multi_aff_identity(space.release());
12272 return manage(res);
12273 }
12274
identity()12275 isl::multi_aff multi_aff::identity() const
12276 {
12277 auto res = isl_multi_aff_identity_multi_aff(copy());
12278 return manage(res);
12279 }
12280
identity_on_domain(isl::space space)12281 isl::multi_aff multi_aff::identity_on_domain(isl::space space)
12282 {
12283 auto res = isl_multi_aff_identity_on_domain_space(space.release());
12284 return manage(res);
12285 }
12286
insert_domain(isl::space domain)12287 isl::multi_aff multi_aff::insert_domain(isl::space domain) const
12288 {
12289 auto res = isl_multi_aff_insert_domain(copy(), domain.release());
12290 return manage(res);
12291 }
12292
intersect_domain(const isl::set & set)12293 isl::pw_multi_aff multi_aff::intersect_domain(const isl::set &set) const
12294 {
12295 return isl::pw_multi_aff(*this).intersect_domain(set);
12296 }
12297
intersect_domain(const isl::space & space)12298 isl::union_pw_multi_aff multi_aff::intersect_domain(const isl::space &space) const
12299 {
12300 return isl::pw_multi_aff(*this).intersect_domain(space);
12301 }
12302
intersect_domain(const isl::union_set & uset)12303 isl::union_pw_multi_aff multi_aff::intersect_domain(const isl::union_set &uset) const
12304 {
12305 return isl::pw_multi_aff(*this).intersect_domain(uset);
12306 }
12307
intersect_domain_wrapped_domain(const isl::union_set & uset)12308 isl::union_pw_multi_aff multi_aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
12309 {
12310 return isl::pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
12311 }
12312
intersect_domain_wrapped_range(const isl::union_set & uset)12313 isl::union_pw_multi_aff multi_aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
12314 {
12315 return isl::pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
12316 }
12317
intersect_params(const isl::set & set)12318 isl::pw_multi_aff multi_aff::intersect_params(const isl::set &set) const
12319 {
12320 return isl::pw_multi_aff(*this).intersect_params(set);
12321 }
12322
involves_locals()12323 boolean multi_aff::involves_locals() const
12324 {
12325 auto res = isl_multi_aff_involves_locals(get());
12326 return manage(res);
12327 }
12328
involves_nan()12329 boolean multi_aff::involves_nan() const
12330 {
12331 auto res = isl_multi_aff_involves_nan(get());
12332 return manage(res);
12333 }
12334
involves_param(const isl::id & id)12335 boolean multi_aff::involves_param(const isl::id &id) const
12336 {
12337 return isl::pw_multi_aff(*this).involves_param(id);
12338 }
12339
involves_param(const std::string & id)12340 boolean multi_aff::involves_param(const std::string &id) const
12341 {
12342 return this->involves_param(isl::id(ctx(), id));
12343 }
12344
involves_param(const isl::id_list & list)12345 boolean multi_aff::involves_param(const isl::id_list &list) const
12346 {
12347 return isl::pw_multi_aff(*this).involves_param(list);
12348 }
12349
isa_multi_aff()12350 boolean multi_aff::isa_multi_aff() const
12351 {
12352 return isl::pw_multi_aff(*this).isa_multi_aff();
12353 }
12354
isa_pw_multi_aff()12355 boolean multi_aff::isa_pw_multi_aff() const
12356 {
12357 return isl::pw_multi_aff(*this).isa_pw_multi_aff();
12358 }
12359
list()12360 isl::aff_list multi_aff::list() const
12361 {
12362 auto res = isl_multi_aff_get_list(get());
12363 return manage(res);
12364 }
12365
get_list()12366 isl::aff_list multi_aff::get_list() const
12367 {
12368 return list();
12369 }
12370
max(const isl::multi_pw_aff & multi2)12371 isl::multi_pw_aff multi_aff::max(const isl::multi_pw_aff &multi2) const
12372 {
12373 return isl::pw_multi_aff(*this).max(multi2);
12374 }
12375
max_multi_val()12376 isl::multi_val multi_aff::max_multi_val() const
12377 {
12378 return isl::pw_multi_aff(*this).max_multi_val();
12379 }
12380
min(const isl::multi_pw_aff & multi2)12381 isl::multi_pw_aff multi_aff::min(const isl::multi_pw_aff &multi2) const
12382 {
12383 return isl::pw_multi_aff(*this).min(multi2);
12384 }
12385
min_multi_val()12386 isl::multi_val multi_aff::min_multi_val() const
12387 {
12388 return isl::pw_multi_aff(*this).min_multi_val();
12389 }
12390
multi_val_on_domain(isl::space space,isl::multi_val mv)12391 isl::multi_aff multi_aff::multi_val_on_domain(isl::space space, isl::multi_val mv)
12392 {
12393 auto res = isl_multi_aff_multi_val_on_domain_space(space.release(), mv.release());
12394 return manage(res);
12395 }
12396
n_piece()12397 class size multi_aff::n_piece() const
12398 {
12399 return isl::pw_multi_aff(*this).n_piece();
12400 }
12401
neg()12402 isl::multi_aff multi_aff::neg() const
12403 {
12404 auto res = isl_multi_aff_neg(copy());
12405 return manage(res);
12406 }
12407
plain_is_empty()12408 boolean multi_aff::plain_is_empty() const
12409 {
12410 return isl::pw_multi_aff(*this).plain_is_empty();
12411 }
12412
plain_is_equal(const isl::multi_aff & multi2)12413 boolean multi_aff::plain_is_equal(const isl::multi_aff &multi2) const
12414 {
12415 auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
12416 return manage(res);
12417 }
12418
plain_is_equal(const isl::multi_pw_aff & multi2)12419 boolean multi_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
12420 {
12421 return isl::pw_multi_aff(*this).plain_is_equal(multi2);
12422 }
12423
plain_is_equal(const isl::multi_union_pw_aff & multi2)12424 boolean multi_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
12425 {
12426 return isl::pw_multi_aff(*this).plain_is_equal(multi2);
12427 }
12428
plain_is_equal(const isl::aff & multi2)12429 boolean multi_aff::plain_is_equal(const isl::aff &multi2) const
12430 {
12431 return this->plain_is_equal(isl::multi_aff(multi2));
12432 }
12433
preimage_domain_wrapped_domain(const isl::pw_multi_aff & pma2)12434 isl::pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
12435 {
12436 return isl::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
12437 }
12438
preimage_domain_wrapped_domain(const isl::union_pw_multi_aff & upma2)12439 isl::union_pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
12440 {
12441 return isl::pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
12442 }
12443
product(isl::multi_aff multi2)12444 isl::multi_aff multi_aff::product(isl::multi_aff multi2) const
12445 {
12446 auto res = isl_multi_aff_product(copy(), multi2.release());
12447 return manage(res);
12448 }
12449
product(const isl::multi_pw_aff & multi2)12450 isl::multi_pw_aff multi_aff::product(const isl::multi_pw_aff &multi2) const
12451 {
12452 return isl::pw_multi_aff(*this).product(multi2);
12453 }
12454
product(const isl::pw_multi_aff & pma2)12455 isl::pw_multi_aff multi_aff::product(const isl::pw_multi_aff &pma2) const
12456 {
12457 return isl::pw_multi_aff(*this).product(pma2);
12458 }
12459
product(const isl::aff & multi2)12460 isl::multi_aff multi_aff::product(const isl::aff &multi2) const
12461 {
12462 return this->product(isl::multi_aff(multi2));
12463 }
12464
pullback(isl::multi_aff ma2)12465 isl::multi_aff multi_aff::pullback(isl::multi_aff ma2) const
12466 {
12467 auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
12468 return manage(res);
12469 }
12470
pullback(const isl::multi_pw_aff & mpa2)12471 isl::multi_pw_aff multi_aff::pullback(const isl::multi_pw_aff &mpa2) const
12472 {
12473 return isl::pw_multi_aff(*this).pullback(mpa2);
12474 }
12475
pullback(const isl::pw_multi_aff & pma2)12476 isl::pw_multi_aff multi_aff::pullback(const isl::pw_multi_aff &pma2) const
12477 {
12478 return isl::pw_multi_aff(*this).pullback(pma2);
12479 }
12480
pullback(const isl::union_pw_multi_aff & upma2)12481 isl::union_pw_multi_aff multi_aff::pullback(const isl::union_pw_multi_aff &upma2) const
12482 {
12483 return isl::pw_multi_aff(*this).pullback(upma2);
12484 }
12485
pullback(const isl::aff & ma2)12486 isl::multi_aff multi_aff::pullback(const isl::aff &ma2) const
12487 {
12488 return this->pullback(isl::multi_aff(ma2));
12489 }
12490
pw_multi_aff_list()12491 isl::pw_multi_aff_list multi_aff::pw_multi_aff_list() const
12492 {
12493 return isl::pw_multi_aff(*this).pw_multi_aff_list();
12494 }
12495
range_factor_domain()12496 isl::pw_multi_aff multi_aff::range_factor_domain() const
12497 {
12498 return isl::pw_multi_aff(*this).range_factor_domain();
12499 }
12500
range_factor_range()12501 isl::pw_multi_aff multi_aff::range_factor_range() const
12502 {
12503 return isl::pw_multi_aff(*this).range_factor_range();
12504 }
12505
range_map(isl::space space)12506 isl::multi_aff multi_aff::range_map(isl::space space)
12507 {
12508 auto res = isl_multi_aff_range_map(space.release());
12509 return manage(res);
12510 }
12511
range_product(isl::multi_aff multi2)12512 isl::multi_aff multi_aff::range_product(isl::multi_aff multi2) const
12513 {
12514 auto res = isl_multi_aff_range_product(copy(), multi2.release());
12515 return manage(res);
12516 }
12517
range_product(const isl::multi_pw_aff & multi2)12518 isl::multi_pw_aff multi_aff::range_product(const isl::multi_pw_aff &multi2) const
12519 {
12520 return isl::pw_multi_aff(*this).range_product(multi2);
12521 }
12522
range_product(const isl::multi_union_pw_aff & multi2)12523 isl::multi_union_pw_aff multi_aff::range_product(const isl::multi_union_pw_aff &multi2) const
12524 {
12525 return isl::pw_multi_aff(*this).range_product(multi2);
12526 }
12527
range_product(const isl::pw_multi_aff & pma2)12528 isl::pw_multi_aff multi_aff::range_product(const isl::pw_multi_aff &pma2) const
12529 {
12530 return isl::pw_multi_aff(*this).range_product(pma2);
12531 }
12532
range_product(const isl::union_pw_multi_aff & upma2)12533 isl::union_pw_multi_aff multi_aff::range_product(const isl::union_pw_multi_aff &upma2) const
12534 {
12535 return isl::pw_multi_aff(*this).range_product(upma2);
12536 }
12537
range_product(const isl::aff & multi2)12538 isl::multi_aff multi_aff::range_product(const isl::aff &multi2) const
12539 {
12540 return this->range_product(isl::multi_aff(multi2));
12541 }
12542
range_tuple_id()12543 isl::id multi_aff::range_tuple_id() const
12544 {
12545 auto res = isl_multi_aff_get_range_tuple_id(get());
12546 return manage(res);
12547 }
12548
get_range_tuple_id()12549 isl::id multi_aff::get_range_tuple_id() const
12550 {
12551 return range_tuple_id();
12552 }
12553
reset_range_tuple_id()12554 isl::multi_aff multi_aff::reset_range_tuple_id() const
12555 {
12556 auto res = isl_multi_aff_reset_range_tuple_id(copy());
12557 return manage(res);
12558 }
12559
reset_tuple_id(isl::dim type)12560 isl::multi_aff multi_aff::reset_tuple_id(isl::dim type) const
12561 {
12562 auto res = isl_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
12563 return manage(res);
12564 }
12565
scale(isl::multi_val mv)12566 isl::multi_aff multi_aff::scale(isl::multi_val mv) const
12567 {
12568 auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
12569 return manage(res);
12570 }
12571
scale(isl::val v)12572 isl::multi_aff multi_aff::scale(isl::val v) const
12573 {
12574 auto res = isl_multi_aff_scale_val(copy(), v.release());
12575 return manage(res);
12576 }
12577
scale(long v)12578 isl::multi_aff multi_aff::scale(long v) const
12579 {
12580 return this->scale(isl::val(ctx(), v));
12581 }
12582
scale_down(isl::multi_val mv)12583 isl::multi_aff multi_aff::scale_down(isl::multi_val mv) const
12584 {
12585 auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
12586 return manage(res);
12587 }
12588
scale_down(isl::val v)12589 isl::multi_aff multi_aff::scale_down(isl::val v) const
12590 {
12591 auto res = isl_multi_aff_scale_down_val(copy(), v.release());
12592 return manage(res);
12593 }
12594
scale_down(long v)12595 isl::multi_aff multi_aff::scale_down(long v) const
12596 {
12597 return this->scale_down(isl::val(ctx(), v));
12598 }
12599
set_aff(int pos,isl::aff el)12600 isl::multi_aff multi_aff::set_aff(int pos, isl::aff el) const
12601 {
12602 auto res = isl_multi_aff_set_aff(copy(), pos, el.release());
12603 return manage(res);
12604 }
12605
set_at(int pos,isl::aff el)12606 isl::multi_aff multi_aff::set_at(int pos, isl::aff el) const
12607 {
12608 auto res = isl_multi_aff_set_at(copy(), pos, el.release());
12609 return manage(res);
12610 }
12611
set_at(int pos,const isl::pw_aff & el)12612 isl::multi_pw_aff multi_aff::set_at(int pos, const isl::pw_aff &el) const
12613 {
12614 return isl::pw_multi_aff(*this).set_at(pos, el);
12615 }
12616
set_at(int pos,const isl::union_pw_aff & el)12617 isl::multi_union_pw_aff multi_aff::set_at(int pos, const isl::union_pw_aff &el) const
12618 {
12619 return isl::pw_multi_aff(*this).set_at(pos, el);
12620 }
12621
set_pw_aff(int pos,const isl::pw_aff & el)12622 isl::multi_pw_aff multi_aff::set_pw_aff(int pos, const isl::pw_aff &el) const
12623 {
12624 return isl::pw_multi_aff(*this).set_pw_aff(pos, el);
12625 }
12626
set_pw_aff(unsigned int pos,const isl::pw_aff & pa)12627 isl::pw_multi_aff multi_aff::set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const
12628 {
12629 return isl::pw_multi_aff(*this).set_pw_aff(pos, pa);
12630 }
12631
set_range_tuple(isl::id id)12632 isl::multi_aff multi_aff::set_range_tuple(isl::id id) const
12633 {
12634 auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
12635 return manage(res);
12636 }
12637
set_range_tuple(const std::string & id)12638 isl::multi_aff multi_aff::set_range_tuple(const std::string &id) const
12639 {
12640 return this->set_range_tuple(isl::id(ctx(), id));
12641 }
12642
set_union_pw_aff(int pos,const isl::union_pw_aff & el)12643 isl::multi_union_pw_aff multi_aff::set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
12644 {
12645 return isl::pw_multi_aff(*this).set_union_pw_aff(pos, el);
12646 }
12647
size()12648 class size multi_aff::size() const
12649 {
12650 auto res = isl_multi_aff_size(get());
12651 return manage(res);
12652 }
12653
space()12654 isl::space multi_aff::space() const
12655 {
12656 auto res = isl_multi_aff_get_space(get());
12657 return manage(res);
12658 }
12659
get_space()12660 isl::space multi_aff::get_space() const
12661 {
12662 return space();
12663 }
12664
sub(isl::multi_aff multi2)12665 isl::multi_aff multi_aff::sub(isl::multi_aff multi2) const
12666 {
12667 auto res = isl_multi_aff_sub(copy(), multi2.release());
12668 return manage(res);
12669 }
12670
sub(const isl::multi_pw_aff & multi2)12671 isl::multi_pw_aff multi_aff::sub(const isl::multi_pw_aff &multi2) const
12672 {
12673 return isl::pw_multi_aff(*this).sub(multi2);
12674 }
12675
sub(const isl::multi_union_pw_aff & multi2)12676 isl::multi_union_pw_aff multi_aff::sub(const isl::multi_union_pw_aff &multi2) const
12677 {
12678 return isl::pw_multi_aff(*this).sub(multi2);
12679 }
12680
sub(const isl::pw_multi_aff & pma2)12681 isl::pw_multi_aff multi_aff::sub(const isl::pw_multi_aff &pma2) const
12682 {
12683 return isl::pw_multi_aff(*this).sub(pma2);
12684 }
12685
sub(const isl::union_pw_multi_aff & upma2)12686 isl::union_pw_multi_aff multi_aff::sub(const isl::union_pw_multi_aff &upma2) const
12687 {
12688 return isl::pw_multi_aff(*this).sub(upma2);
12689 }
12690
sub(const isl::aff & multi2)12691 isl::multi_aff multi_aff::sub(const isl::aff &multi2) const
12692 {
12693 return this->sub(isl::multi_aff(multi2));
12694 }
12695
subtract_domain(const isl::set & set)12696 isl::pw_multi_aff multi_aff::subtract_domain(const isl::set &set) const
12697 {
12698 return isl::pw_multi_aff(*this).subtract_domain(set);
12699 }
12700
subtract_domain(const isl::space & space)12701 isl::union_pw_multi_aff multi_aff::subtract_domain(const isl::space &space) const
12702 {
12703 return isl::pw_multi_aff(*this).subtract_domain(space);
12704 }
12705
subtract_domain(const isl::union_set & uset)12706 isl::union_pw_multi_aff multi_aff::subtract_domain(const isl::union_set &uset) const
12707 {
12708 return isl::pw_multi_aff(*this).subtract_domain(uset);
12709 }
12710
to_list()12711 isl::pw_multi_aff_list multi_aff::to_list() const
12712 {
12713 return isl::pw_multi_aff(*this).to_list();
12714 }
12715
to_multi_pw_aff()12716 isl::multi_pw_aff multi_aff::to_multi_pw_aff() const
12717 {
12718 auto res = isl_multi_aff_to_multi_pw_aff(copy());
12719 return manage(res);
12720 }
12721
to_multi_union_pw_aff()12722 isl::multi_union_pw_aff multi_aff::to_multi_union_pw_aff() const
12723 {
12724 auto res = isl_multi_aff_to_multi_union_pw_aff(copy());
12725 return manage(res);
12726 }
12727
to_pw_multi_aff()12728 isl::pw_multi_aff multi_aff::to_pw_multi_aff() const
12729 {
12730 auto res = isl_multi_aff_to_pw_multi_aff(copy());
12731 return manage(res);
12732 }
12733
to_union_pw_multi_aff()12734 isl::union_pw_multi_aff multi_aff::to_union_pw_multi_aff() const
12735 {
12736 return isl::pw_multi_aff(*this).to_union_pw_multi_aff();
12737 }
12738
tuple_id(isl::dim type)12739 isl::id multi_aff::tuple_id(isl::dim type) const
12740 {
12741 return isl::pw_multi_aff(*this).tuple_id(type);
12742 }
12743
unbind_params_insert_domain(isl::multi_id domain)12744 isl::multi_aff multi_aff::unbind_params_insert_domain(isl::multi_id domain) const
12745 {
12746 auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
12747 return manage(res);
12748 }
12749
union_add(const isl::multi_pw_aff & mpa2)12750 isl::multi_pw_aff multi_aff::union_add(const isl::multi_pw_aff &mpa2) const
12751 {
12752 return isl::pw_multi_aff(*this).union_add(mpa2);
12753 }
12754
union_add(const isl::multi_union_pw_aff & mupa2)12755 isl::multi_union_pw_aff multi_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
12756 {
12757 return isl::pw_multi_aff(*this).union_add(mupa2);
12758 }
12759
union_add(const isl::pw_multi_aff & pma2)12760 isl::pw_multi_aff multi_aff::union_add(const isl::pw_multi_aff &pma2) const
12761 {
12762 return isl::pw_multi_aff(*this).union_add(pma2);
12763 }
12764
union_add(const isl::union_pw_multi_aff & upma2)12765 isl::union_pw_multi_aff multi_aff::union_add(const isl::union_pw_multi_aff &upma2) const
12766 {
12767 return isl::pw_multi_aff(*this).union_add(upma2);
12768 }
12769
zero(isl::space space)12770 isl::multi_aff multi_aff::zero(isl::space space)
12771 {
12772 auto res = isl_multi_aff_zero(space.release());
12773 return manage(res);
12774 }
12775
12776 inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
12777 {
12778 char *str = isl_multi_aff_to_str(obj.get());
12779 if (!str) {
12780 os.setstate(std::ios_base::badbit);
12781 return os;
12782 }
12783 os << str;
12784 free(str);
12785 return os;
12786 }
12787
12788 // implementations for isl::multi_id
manage(__isl_take isl_multi_id * ptr)12789 multi_id manage(__isl_take isl_multi_id *ptr) {
12790 return multi_id(ptr);
12791 }
manage_copy(__isl_keep isl_multi_id * ptr)12792 multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
12793 ptr = isl_multi_id_copy(ptr);
12794 return multi_id(ptr);
12795 }
12796
multi_id()12797 multi_id::multi_id()
12798 : ptr(nullptr) {}
12799
multi_id(const multi_id & obj)12800 multi_id::multi_id(const multi_id &obj)
12801 : ptr(nullptr)
12802 {
12803 ptr = obj.copy();
12804 }
12805
multi_id(__isl_take isl_multi_id * ptr)12806 multi_id::multi_id(__isl_take isl_multi_id *ptr)
12807 : ptr(ptr) {}
12808
multi_id(isl::space space,isl::id_list list)12809 multi_id::multi_id(isl::space space, isl::id_list list)
12810 {
12811 auto res = isl_multi_id_from_id_list(space.release(), list.release());
12812 ptr = res;
12813 }
12814
multi_id(isl::ctx ctx,const std::string & str)12815 multi_id::multi_id(isl::ctx ctx, const std::string &str)
12816 {
12817 auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
12818 ptr = res;
12819 }
12820
12821 multi_id &multi_id::operator=(multi_id obj) {
12822 std::swap(this->ptr, obj.ptr);
12823 return *this;
12824 }
12825
~multi_id()12826 multi_id::~multi_id() {
12827 if (ptr)
12828 isl_multi_id_free(ptr);
12829 }
12830
copy()12831 __isl_give isl_multi_id *multi_id::copy() const & {
12832 return isl_multi_id_copy(ptr);
12833 }
12834
get()12835 __isl_keep isl_multi_id *multi_id::get() const {
12836 return ptr;
12837 }
12838
release()12839 __isl_give isl_multi_id *multi_id::release() {
12840 isl_multi_id *tmp = ptr;
12841 ptr = nullptr;
12842 return tmp;
12843 }
12844
is_null()12845 bool multi_id::is_null() const {
12846 return ptr == nullptr;
12847 }
12848
ctx()12849 isl::ctx multi_id::ctx() const {
12850 return isl::ctx(isl_multi_id_get_ctx(ptr));
12851 }
12852
at(int pos)12853 isl::id multi_id::at(int pos) const
12854 {
12855 auto res = isl_multi_id_get_at(get(), pos);
12856 return manage(res);
12857 }
12858
get_at(int pos)12859 isl::id multi_id::get_at(int pos) const
12860 {
12861 return at(pos);
12862 }
12863
flat_range_product(isl::multi_id multi2)12864 isl::multi_id multi_id::flat_range_product(isl::multi_id multi2) const
12865 {
12866 auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
12867 return manage(res);
12868 }
12869
list()12870 isl::id_list multi_id::list() const
12871 {
12872 auto res = isl_multi_id_get_list(get());
12873 return manage(res);
12874 }
12875
get_list()12876 isl::id_list multi_id::get_list() const
12877 {
12878 return list();
12879 }
12880
plain_is_equal(const isl::multi_id & multi2)12881 boolean multi_id::plain_is_equal(const isl::multi_id &multi2) const
12882 {
12883 auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
12884 return manage(res);
12885 }
12886
range_product(isl::multi_id multi2)12887 isl::multi_id multi_id::range_product(isl::multi_id multi2) const
12888 {
12889 auto res = isl_multi_id_range_product(copy(), multi2.release());
12890 return manage(res);
12891 }
12892
set_at(int pos,isl::id el)12893 isl::multi_id multi_id::set_at(int pos, isl::id el) const
12894 {
12895 auto res = isl_multi_id_set_at(copy(), pos, el.release());
12896 return manage(res);
12897 }
12898
set_at(int pos,const std::string & el)12899 isl::multi_id multi_id::set_at(int pos, const std::string &el) const
12900 {
12901 return this->set_at(pos, isl::id(ctx(), el));
12902 }
12903
set_id(int pos,isl::id el)12904 isl::multi_id multi_id::set_id(int pos, isl::id el) const
12905 {
12906 auto res = isl_multi_id_set_id(copy(), pos, el.release());
12907 return manage(res);
12908 }
12909
set_id(int pos,const std::string & el)12910 isl::multi_id multi_id::set_id(int pos, const std::string &el) const
12911 {
12912 return this->set_id(pos, isl::id(ctx(), el));
12913 }
12914
size()12915 class size multi_id::size() const
12916 {
12917 auto res = isl_multi_id_size(get());
12918 return manage(res);
12919 }
12920
space()12921 isl::space multi_id::space() const
12922 {
12923 auto res = isl_multi_id_get_space(get());
12924 return manage(res);
12925 }
12926
get_space()12927 isl::space multi_id::get_space() const
12928 {
12929 return space();
12930 }
12931
12932 inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
12933 {
12934 char *str = isl_multi_id_to_str(obj.get());
12935 if (!str) {
12936 os.setstate(std::ios_base::badbit);
12937 return os;
12938 }
12939 os << str;
12940 free(str);
12941 return os;
12942 }
12943
12944 // implementations for isl::multi_pw_aff
manage(__isl_take isl_multi_pw_aff * ptr)12945 multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
12946 return multi_pw_aff(ptr);
12947 }
manage_copy(__isl_keep isl_multi_pw_aff * ptr)12948 multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
12949 ptr = isl_multi_pw_aff_copy(ptr);
12950 return multi_pw_aff(ptr);
12951 }
12952
multi_pw_aff()12953 multi_pw_aff::multi_pw_aff()
12954 : ptr(nullptr) {}
12955
multi_pw_aff(const multi_pw_aff & obj)12956 multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
12957 : ptr(nullptr)
12958 {
12959 ptr = obj.copy();
12960 }
12961
multi_pw_aff(__isl_take isl_multi_pw_aff * ptr)12962 multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
12963 : ptr(ptr) {}
12964
multi_pw_aff(isl::aff aff)12965 multi_pw_aff::multi_pw_aff(isl::aff aff)
12966 {
12967 auto res = isl_multi_pw_aff_from_aff(aff.release());
12968 ptr = res;
12969 }
12970
multi_pw_aff(isl::multi_aff ma)12971 multi_pw_aff::multi_pw_aff(isl::multi_aff ma)
12972 {
12973 auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
12974 ptr = res;
12975 }
12976
multi_pw_aff(isl::pw_aff pa)12977 multi_pw_aff::multi_pw_aff(isl::pw_aff pa)
12978 {
12979 auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
12980 ptr = res;
12981 }
12982
multi_pw_aff(isl::space space,isl::pw_aff_list list)12983 multi_pw_aff::multi_pw_aff(isl::space space, isl::pw_aff_list list)
12984 {
12985 auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
12986 ptr = res;
12987 }
12988
multi_pw_aff(isl::pw_multi_aff pma)12989 multi_pw_aff::multi_pw_aff(isl::pw_multi_aff pma)
12990 {
12991 auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
12992 ptr = res;
12993 }
12994
multi_pw_aff(isl::ctx ctx,const std::string & str)12995 multi_pw_aff::multi_pw_aff(isl::ctx ctx, const std::string &str)
12996 {
12997 auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
12998 ptr = res;
12999 }
13000
13001 multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
13002 std::swap(this->ptr, obj.ptr);
13003 return *this;
13004 }
13005
~multi_pw_aff()13006 multi_pw_aff::~multi_pw_aff() {
13007 if (ptr)
13008 isl_multi_pw_aff_free(ptr);
13009 }
13010
copy()13011 __isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
13012 return isl_multi_pw_aff_copy(ptr);
13013 }
13014
get()13015 __isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
13016 return ptr;
13017 }
13018
release()13019 __isl_give isl_multi_pw_aff *multi_pw_aff::release() {
13020 isl_multi_pw_aff *tmp = ptr;
13021 ptr = nullptr;
13022 return tmp;
13023 }
13024
is_null()13025 bool multi_pw_aff::is_null() const {
13026 return ptr == nullptr;
13027 }
13028
ctx()13029 isl::ctx multi_pw_aff::ctx() const {
13030 return isl::ctx(isl_multi_pw_aff_get_ctx(ptr));
13031 }
13032
add(isl::multi_pw_aff multi2)13033 isl::multi_pw_aff multi_pw_aff::add(isl::multi_pw_aff multi2) const
13034 {
13035 auto res = isl_multi_pw_aff_add(copy(), multi2.release());
13036 return manage(res);
13037 }
13038
add(const isl::multi_union_pw_aff & multi2)13039 isl::multi_union_pw_aff multi_pw_aff::add(const isl::multi_union_pw_aff &multi2) const
13040 {
13041 return isl::multi_union_pw_aff(*this).add(multi2);
13042 }
13043
add(const isl::aff & multi2)13044 isl::multi_pw_aff multi_pw_aff::add(const isl::aff &multi2) const
13045 {
13046 return this->add(isl::multi_pw_aff(multi2));
13047 }
13048
add(const isl::multi_aff & multi2)13049 isl::multi_pw_aff multi_pw_aff::add(const isl::multi_aff &multi2) const
13050 {
13051 return this->add(isl::multi_pw_aff(multi2));
13052 }
13053
add(const isl::pw_aff & multi2)13054 isl::multi_pw_aff multi_pw_aff::add(const isl::pw_aff &multi2) const
13055 {
13056 return this->add(isl::multi_pw_aff(multi2));
13057 }
13058
add(const isl::pw_multi_aff & multi2)13059 isl::multi_pw_aff multi_pw_aff::add(const isl::pw_multi_aff &multi2) const
13060 {
13061 return this->add(isl::multi_pw_aff(multi2));
13062 }
13063
add_constant(isl::multi_val mv)13064 isl::multi_pw_aff multi_pw_aff::add_constant(isl::multi_val mv) const
13065 {
13066 auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
13067 return manage(res);
13068 }
13069
add_constant(isl::val v)13070 isl::multi_pw_aff multi_pw_aff::add_constant(isl::val v) const
13071 {
13072 auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
13073 return manage(res);
13074 }
13075
add_constant(long v)13076 isl::multi_pw_aff multi_pw_aff::add_constant(long v) const
13077 {
13078 return this->add_constant(isl::val(ctx(), v));
13079 }
13080
as_map()13081 isl::map multi_pw_aff::as_map() const
13082 {
13083 auto res = isl_multi_pw_aff_as_map(copy());
13084 return manage(res);
13085 }
13086
as_multi_aff()13087 isl::multi_aff multi_pw_aff::as_multi_aff() const
13088 {
13089 auto res = isl_multi_pw_aff_as_multi_aff(copy());
13090 return manage(res);
13091 }
13092
as_set()13093 isl::set multi_pw_aff::as_set() const
13094 {
13095 auto res = isl_multi_pw_aff_as_set(copy());
13096 return manage(res);
13097 }
13098
at(int pos)13099 isl::pw_aff multi_pw_aff::at(int pos) const
13100 {
13101 auto res = isl_multi_pw_aff_get_at(get(), pos);
13102 return manage(res);
13103 }
13104
get_at(int pos)13105 isl::pw_aff multi_pw_aff::get_at(int pos) const
13106 {
13107 return at(pos);
13108 }
13109
bind(isl::multi_id tuple)13110 isl::set multi_pw_aff::bind(isl::multi_id tuple) const
13111 {
13112 auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
13113 return manage(res);
13114 }
13115
bind_domain(isl::multi_id tuple)13116 isl::multi_pw_aff multi_pw_aff::bind_domain(isl::multi_id tuple) const
13117 {
13118 auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
13119 return manage(res);
13120 }
13121
bind_domain_wrapped_domain(isl::multi_id tuple)13122 isl::multi_pw_aff multi_pw_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
13123 {
13124 auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
13125 return manage(res);
13126 }
13127
coalesce()13128 isl::multi_pw_aff multi_pw_aff::coalesce() const
13129 {
13130 auto res = isl_multi_pw_aff_coalesce(copy());
13131 return manage(res);
13132 }
13133
dim(isl::dim type)13134 class size multi_pw_aff::dim(isl::dim type) const
13135 {
13136 auto res = isl_multi_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
13137 return manage(res);
13138 }
13139
domain()13140 isl::set multi_pw_aff::domain() const
13141 {
13142 auto res = isl_multi_pw_aff_domain(copy());
13143 return manage(res);
13144 }
13145
flat_range_product(isl::multi_pw_aff multi2)13146 isl::multi_pw_aff multi_pw_aff::flat_range_product(isl::multi_pw_aff multi2) const
13147 {
13148 auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
13149 return manage(res);
13150 }
13151
flat_range_product(const isl::multi_union_pw_aff & multi2)13152 isl::multi_union_pw_aff multi_pw_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
13153 {
13154 return isl::multi_union_pw_aff(*this).flat_range_product(multi2);
13155 }
13156
flat_range_product(const isl::aff & multi2)13157 isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::aff &multi2) const
13158 {
13159 return this->flat_range_product(isl::multi_pw_aff(multi2));
13160 }
13161
flat_range_product(const isl::multi_aff & multi2)13162 isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::multi_aff &multi2) const
13163 {
13164 return this->flat_range_product(isl::multi_pw_aff(multi2));
13165 }
13166
flat_range_product(const isl::pw_aff & multi2)13167 isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::pw_aff &multi2) const
13168 {
13169 return this->flat_range_product(isl::multi_pw_aff(multi2));
13170 }
13171
flat_range_product(const isl::pw_multi_aff & multi2)13172 isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::pw_multi_aff &multi2) const
13173 {
13174 return this->flat_range_product(isl::multi_pw_aff(multi2));
13175 }
13176
gist(isl::set set)13177 isl::multi_pw_aff multi_pw_aff::gist(isl::set set) const
13178 {
13179 auto res = isl_multi_pw_aff_gist(copy(), set.release());
13180 return manage(res);
13181 }
13182
gist(const isl::union_set & context)13183 isl::multi_union_pw_aff multi_pw_aff::gist(const isl::union_set &context) const
13184 {
13185 return isl::multi_union_pw_aff(*this).gist(context);
13186 }
13187
gist(const isl::basic_set & set)13188 isl::multi_pw_aff multi_pw_aff::gist(const isl::basic_set &set) const
13189 {
13190 return this->gist(isl::set(set));
13191 }
13192
gist(const isl::point & set)13193 isl::multi_pw_aff multi_pw_aff::gist(const isl::point &set) const
13194 {
13195 return this->gist(isl::set(set));
13196 }
13197
has_range_tuple_id()13198 boolean multi_pw_aff::has_range_tuple_id() const
13199 {
13200 auto res = isl_multi_pw_aff_has_range_tuple_id(get());
13201 return manage(res);
13202 }
13203
identity(isl::space space)13204 isl::multi_pw_aff multi_pw_aff::identity(isl::space space)
13205 {
13206 auto res = isl_multi_pw_aff_identity(space.release());
13207 return manage(res);
13208 }
13209
identity()13210 isl::multi_pw_aff multi_pw_aff::identity() const
13211 {
13212 auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
13213 return manage(res);
13214 }
13215
identity_on_domain(isl::space space)13216 isl::multi_pw_aff multi_pw_aff::identity_on_domain(isl::space space)
13217 {
13218 auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
13219 return manage(res);
13220 }
13221
insert_domain(isl::space domain)13222 isl::multi_pw_aff multi_pw_aff::insert_domain(isl::space domain) const
13223 {
13224 auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
13225 return manage(res);
13226 }
13227
intersect_domain(isl::set domain)13228 isl::multi_pw_aff multi_pw_aff::intersect_domain(isl::set domain) const
13229 {
13230 auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
13231 return manage(res);
13232 }
13233
intersect_domain(const isl::union_set & uset)13234 isl::multi_union_pw_aff multi_pw_aff::intersect_domain(const isl::union_set &uset) const
13235 {
13236 return isl::multi_union_pw_aff(*this).intersect_domain(uset);
13237 }
13238
intersect_domain(const isl::basic_set & domain)13239 isl::multi_pw_aff multi_pw_aff::intersect_domain(const isl::basic_set &domain) const
13240 {
13241 return this->intersect_domain(isl::set(domain));
13242 }
13243
intersect_domain(const isl::point & domain)13244 isl::multi_pw_aff multi_pw_aff::intersect_domain(const isl::point &domain) const
13245 {
13246 return this->intersect_domain(isl::set(domain));
13247 }
13248
intersect_params(isl::set set)13249 isl::multi_pw_aff multi_pw_aff::intersect_params(isl::set set) const
13250 {
13251 auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
13252 return manage(res);
13253 }
13254
involves_nan()13255 boolean multi_pw_aff::involves_nan() const
13256 {
13257 auto res = isl_multi_pw_aff_involves_nan(get());
13258 return manage(res);
13259 }
13260
involves_param(const isl::id & id)13261 boolean multi_pw_aff::involves_param(const isl::id &id) const
13262 {
13263 auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
13264 return manage(res);
13265 }
13266
involves_param(const std::string & id)13267 boolean multi_pw_aff::involves_param(const std::string &id) const
13268 {
13269 return this->involves_param(isl::id(ctx(), id));
13270 }
13271
involves_param(const isl::id_list & list)13272 boolean multi_pw_aff::involves_param(const isl::id_list &list) const
13273 {
13274 auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
13275 return manage(res);
13276 }
13277
isa_multi_aff()13278 boolean multi_pw_aff::isa_multi_aff() const
13279 {
13280 auto res = isl_multi_pw_aff_isa_multi_aff(get());
13281 return manage(res);
13282 }
13283
list()13284 isl::pw_aff_list multi_pw_aff::list() const
13285 {
13286 auto res = isl_multi_pw_aff_get_list(get());
13287 return manage(res);
13288 }
13289
get_list()13290 isl::pw_aff_list multi_pw_aff::get_list() const
13291 {
13292 return list();
13293 }
13294
max(isl::multi_pw_aff multi2)13295 isl::multi_pw_aff multi_pw_aff::max(isl::multi_pw_aff multi2) const
13296 {
13297 auto res = isl_multi_pw_aff_max(copy(), multi2.release());
13298 return manage(res);
13299 }
13300
max_multi_val()13301 isl::multi_val multi_pw_aff::max_multi_val() const
13302 {
13303 auto res = isl_multi_pw_aff_max_multi_val(copy());
13304 return manage(res);
13305 }
13306
min(isl::multi_pw_aff multi2)13307 isl::multi_pw_aff multi_pw_aff::min(isl::multi_pw_aff multi2) const
13308 {
13309 auto res = isl_multi_pw_aff_min(copy(), multi2.release());
13310 return manage(res);
13311 }
13312
min_multi_val()13313 isl::multi_val multi_pw_aff::min_multi_val() const
13314 {
13315 auto res = isl_multi_pw_aff_min_multi_val(copy());
13316 return manage(res);
13317 }
13318
neg()13319 isl::multi_pw_aff multi_pw_aff::neg() const
13320 {
13321 auto res = isl_multi_pw_aff_neg(copy());
13322 return manage(res);
13323 }
13324
plain_is_equal(const isl::multi_pw_aff & multi2)13325 boolean multi_pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
13326 {
13327 auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
13328 return manage(res);
13329 }
13330
plain_is_equal(const isl::multi_union_pw_aff & multi2)13331 boolean multi_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
13332 {
13333 return isl::multi_union_pw_aff(*this).plain_is_equal(multi2);
13334 }
13335
plain_is_equal(const isl::aff & multi2)13336 boolean multi_pw_aff::plain_is_equal(const isl::aff &multi2) const
13337 {
13338 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13339 }
13340
plain_is_equal(const isl::multi_aff & multi2)13341 boolean multi_pw_aff::plain_is_equal(const isl::multi_aff &multi2) const
13342 {
13343 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13344 }
13345
plain_is_equal(const isl::pw_aff & multi2)13346 boolean multi_pw_aff::plain_is_equal(const isl::pw_aff &multi2) const
13347 {
13348 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13349 }
13350
plain_is_equal(const isl::pw_multi_aff & multi2)13351 boolean multi_pw_aff::plain_is_equal(const isl::pw_multi_aff &multi2) const
13352 {
13353 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13354 }
13355
product(isl::multi_pw_aff multi2)13356 isl::multi_pw_aff multi_pw_aff::product(isl::multi_pw_aff multi2) const
13357 {
13358 auto res = isl_multi_pw_aff_product(copy(), multi2.release());
13359 return manage(res);
13360 }
13361
pullback(isl::multi_aff ma)13362 isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_aff ma) const
13363 {
13364 auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
13365 return manage(res);
13366 }
13367
pullback(isl::multi_pw_aff mpa2)13368 isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_pw_aff mpa2) const
13369 {
13370 auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
13371 return manage(res);
13372 }
13373
pullback(isl::pw_multi_aff pma)13374 isl::multi_pw_aff multi_pw_aff::pullback(isl::pw_multi_aff pma) const
13375 {
13376 auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
13377 return manage(res);
13378 }
13379
pullback(const isl::union_pw_multi_aff & upma)13380 isl::multi_union_pw_aff multi_pw_aff::pullback(const isl::union_pw_multi_aff &upma) const
13381 {
13382 return isl::multi_union_pw_aff(*this).pullback(upma);
13383 }
13384
range_product(isl::multi_pw_aff multi2)13385 isl::multi_pw_aff multi_pw_aff::range_product(isl::multi_pw_aff multi2) const
13386 {
13387 auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
13388 return manage(res);
13389 }
13390
range_product(const isl::multi_union_pw_aff & multi2)13391 isl::multi_union_pw_aff multi_pw_aff::range_product(const isl::multi_union_pw_aff &multi2) const
13392 {
13393 return isl::multi_union_pw_aff(*this).range_product(multi2);
13394 }
13395
range_product(const isl::aff & multi2)13396 isl::multi_pw_aff multi_pw_aff::range_product(const isl::aff &multi2) const
13397 {
13398 return this->range_product(isl::multi_pw_aff(multi2));
13399 }
13400
range_product(const isl::multi_aff & multi2)13401 isl::multi_pw_aff multi_pw_aff::range_product(const isl::multi_aff &multi2) const
13402 {
13403 return this->range_product(isl::multi_pw_aff(multi2));
13404 }
13405
range_product(const isl::pw_aff & multi2)13406 isl::multi_pw_aff multi_pw_aff::range_product(const isl::pw_aff &multi2) const
13407 {
13408 return this->range_product(isl::multi_pw_aff(multi2));
13409 }
13410
range_product(const isl::pw_multi_aff & multi2)13411 isl::multi_pw_aff multi_pw_aff::range_product(const isl::pw_multi_aff &multi2) const
13412 {
13413 return this->range_product(isl::multi_pw_aff(multi2));
13414 }
13415
range_tuple_id()13416 isl::id multi_pw_aff::range_tuple_id() const
13417 {
13418 auto res = isl_multi_pw_aff_get_range_tuple_id(get());
13419 return manage(res);
13420 }
13421
get_range_tuple_id()13422 isl::id multi_pw_aff::get_range_tuple_id() const
13423 {
13424 return range_tuple_id();
13425 }
13426
reset_range_tuple_id()13427 isl::multi_pw_aff multi_pw_aff::reset_range_tuple_id() const
13428 {
13429 auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
13430 return manage(res);
13431 }
13432
reset_tuple_id(isl::dim type)13433 isl::multi_pw_aff multi_pw_aff::reset_tuple_id(isl::dim type) const
13434 {
13435 auto res = isl_multi_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
13436 return manage(res);
13437 }
13438
scale(isl::multi_val mv)13439 isl::multi_pw_aff multi_pw_aff::scale(isl::multi_val mv) const
13440 {
13441 auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
13442 return manage(res);
13443 }
13444
scale(isl::val v)13445 isl::multi_pw_aff multi_pw_aff::scale(isl::val v) const
13446 {
13447 auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
13448 return manage(res);
13449 }
13450
scale(long v)13451 isl::multi_pw_aff multi_pw_aff::scale(long v) const
13452 {
13453 return this->scale(isl::val(ctx(), v));
13454 }
13455
scale_down(isl::multi_val mv)13456 isl::multi_pw_aff multi_pw_aff::scale_down(isl::multi_val mv) const
13457 {
13458 auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
13459 return manage(res);
13460 }
13461
scale_down(isl::val v)13462 isl::multi_pw_aff multi_pw_aff::scale_down(isl::val v) const
13463 {
13464 auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
13465 return manage(res);
13466 }
13467
scale_down(long v)13468 isl::multi_pw_aff multi_pw_aff::scale_down(long v) const
13469 {
13470 return this->scale_down(isl::val(ctx(), v));
13471 }
13472
set_at(int pos,isl::pw_aff el)13473 isl::multi_pw_aff multi_pw_aff::set_at(int pos, isl::pw_aff el) const
13474 {
13475 auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
13476 return manage(res);
13477 }
13478
set_at(int pos,const isl::union_pw_aff & el)13479 isl::multi_union_pw_aff multi_pw_aff::set_at(int pos, const isl::union_pw_aff &el) const
13480 {
13481 return isl::multi_union_pw_aff(*this).set_at(pos, el);
13482 }
13483
set_pw_aff(int pos,isl::pw_aff el)13484 isl::multi_pw_aff multi_pw_aff::set_pw_aff(int pos, isl::pw_aff el) const
13485 {
13486 auto res = isl_multi_pw_aff_set_pw_aff(copy(), pos, el.release());
13487 return manage(res);
13488 }
13489
set_range_tuple(isl::id id)13490 isl::multi_pw_aff multi_pw_aff::set_range_tuple(isl::id id) const
13491 {
13492 auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
13493 return manage(res);
13494 }
13495
set_range_tuple(const std::string & id)13496 isl::multi_pw_aff multi_pw_aff::set_range_tuple(const std::string &id) const
13497 {
13498 return this->set_range_tuple(isl::id(ctx(), id));
13499 }
13500
set_union_pw_aff(int pos,const isl::union_pw_aff & el)13501 isl::multi_union_pw_aff multi_pw_aff::set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
13502 {
13503 return isl::multi_union_pw_aff(*this).set_union_pw_aff(pos, el);
13504 }
13505
size()13506 class size multi_pw_aff::size() const
13507 {
13508 auto res = isl_multi_pw_aff_size(get());
13509 return manage(res);
13510 }
13511
space()13512 isl::space multi_pw_aff::space() const
13513 {
13514 auto res = isl_multi_pw_aff_get_space(get());
13515 return manage(res);
13516 }
13517
get_space()13518 isl::space multi_pw_aff::get_space() const
13519 {
13520 return space();
13521 }
13522
sub(isl::multi_pw_aff multi2)13523 isl::multi_pw_aff multi_pw_aff::sub(isl::multi_pw_aff multi2) const
13524 {
13525 auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
13526 return manage(res);
13527 }
13528
sub(const isl::multi_union_pw_aff & multi2)13529 isl::multi_union_pw_aff multi_pw_aff::sub(const isl::multi_union_pw_aff &multi2) const
13530 {
13531 return isl::multi_union_pw_aff(*this).sub(multi2);
13532 }
13533
sub(const isl::aff & multi2)13534 isl::multi_pw_aff multi_pw_aff::sub(const isl::aff &multi2) const
13535 {
13536 return this->sub(isl::multi_pw_aff(multi2));
13537 }
13538
sub(const isl::multi_aff & multi2)13539 isl::multi_pw_aff multi_pw_aff::sub(const isl::multi_aff &multi2) const
13540 {
13541 return this->sub(isl::multi_pw_aff(multi2));
13542 }
13543
sub(const isl::pw_aff & multi2)13544 isl::multi_pw_aff multi_pw_aff::sub(const isl::pw_aff &multi2) const
13545 {
13546 return this->sub(isl::multi_pw_aff(multi2));
13547 }
13548
sub(const isl::pw_multi_aff & multi2)13549 isl::multi_pw_aff multi_pw_aff::sub(const isl::pw_multi_aff &multi2) const
13550 {
13551 return this->sub(isl::multi_pw_aff(multi2));
13552 }
13553
unbind_params_insert_domain(isl::multi_id domain)13554 isl::multi_pw_aff multi_pw_aff::unbind_params_insert_domain(isl::multi_id domain) const
13555 {
13556 auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
13557 return manage(res);
13558 }
13559
union_add(isl::multi_pw_aff mpa2)13560 isl::multi_pw_aff multi_pw_aff::union_add(isl::multi_pw_aff mpa2) const
13561 {
13562 auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
13563 return manage(res);
13564 }
13565
union_add(const isl::multi_union_pw_aff & mupa2)13566 isl::multi_union_pw_aff multi_pw_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
13567 {
13568 return isl::multi_union_pw_aff(*this).union_add(mupa2);
13569 }
13570
union_add(const isl::aff & mpa2)13571 isl::multi_pw_aff multi_pw_aff::union_add(const isl::aff &mpa2) const
13572 {
13573 return this->union_add(isl::multi_pw_aff(mpa2));
13574 }
13575
union_add(const isl::multi_aff & mpa2)13576 isl::multi_pw_aff multi_pw_aff::union_add(const isl::multi_aff &mpa2) const
13577 {
13578 return this->union_add(isl::multi_pw_aff(mpa2));
13579 }
13580
union_add(const isl::pw_aff & mpa2)13581 isl::multi_pw_aff multi_pw_aff::union_add(const isl::pw_aff &mpa2) const
13582 {
13583 return this->union_add(isl::multi_pw_aff(mpa2));
13584 }
13585
union_add(const isl::pw_multi_aff & mpa2)13586 isl::multi_pw_aff multi_pw_aff::union_add(const isl::pw_multi_aff &mpa2) const
13587 {
13588 return this->union_add(isl::multi_pw_aff(mpa2));
13589 }
13590
zero(isl::space space)13591 isl::multi_pw_aff multi_pw_aff::zero(isl::space space)
13592 {
13593 auto res = isl_multi_pw_aff_zero(space.release());
13594 return manage(res);
13595 }
13596
13597 inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
13598 {
13599 char *str = isl_multi_pw_aff_to_str(obj.get());
13600 if (!str) {
13601 os.setstate(std::ios_base::badbit);
13602 return os;
13603 }
13604 os << str;
13605 free(str);
13606 return os;
13607 }
13608
13609 // implementations for isl::multi_union_pw_aff
manage(__isl_take isl_multi_union_pw_aff * ptr)13610 multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
13611 return multi_union_pw_aff(ptr);
13612 }
manage_copy(__isl_keep isl_multi_union_pw_aff * ptr)13613 multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
13614 ptr = isl_multi_union_pw_aff_copy(ptr);
13615 return multi_union_pw_aff(ptr);
13616 }
13617
multi_union_pw_aff()13618 multi_union_pw_aff::multi_union_pw_aff()
13619 : ptr(nullptr) {}
13620
multi_union_pw_aff(const multi_union_pw_aff & obj)13621 multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
13622 : ptr(nullptr)
13623 {
13624 ptr = obj.copy();
13625 }
13626
multi_union_pw_aff(__isl_take isl_multi_union_pw_aff * ptr)13627 multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
13628 : ptr(ptr) {}
13629
multi_union_pw_aff(isl::multi_pw_aff mpa)13630 multi_union_pw_aff::multi_union_pw_aff(isl::multi_pw_aff mpa)
13631 {
13632 auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
13633 ptr = res;
13634 }
13635
multi_union_pw_aff(isl::union_pw_aff upa)13636 multi_union_pw_aff::multi_union_pw_aff(isl::union_pw_aff upa)
13637 {
13638 auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
13639 ptr = res;
13640 }
13641
multi_union_pw_aff(isl::space space,isl::union_pw_aff_list list)13642 multi_union_pw_aff::multi_union_pw_aff(isl::space space, isl::union_pw_aff_list list)
13643 {
13644 auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
13645 ptr = res;
13646 }
13647
multi_union_pw_aff(isl::union_pw_multi_aff upma)13648 multi_union_pw_aff::multi_union_pw_aff(isl::union_pw_multi_aff upma)
13649 {
13650 auto res = isl_multi_union_pw_aff_from_union_pw_multi_aff(upma.release());
13651 ptr = res;
13652 }
13653
multi_union_pw_aff(isl::ctx ctx,const std::string & str)13654 multi_union_pw_aff::multi_union_pw_aff(isl::ctx ctx, const std::string &str)
13655 {
13656 auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
13657 ptr = res;
13658 }
13659
13660 multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
13661 std::swap(this->ptr, obj.ptr);
13662 return *this;
13663 }
13664
~multi_union_pw_aff()13665 multi_union_pw_aff::~multi_union_pw_aff() {
13666 if (ptr)
13667 isl_multi_union_pw_aff_free(ptr);
13668 }
13669
copy()13670 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
13671 return isl_multi_union_pw_aff_copy(ptr);
13672 }
13673
get()13674 __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
13675 return ptr;
13676 }
13677
release()13678 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
13679 isl_multi_union_pw_aff *tmp = ptr;
13680 ptr = nullptr;
13681 return tmp;
13682 }
13683
is_null()13684 bool multi_union_pw_aff::is_null() const {
13685 return ptr == nullptr;
13686 }
13687
ctx()13688 isl::ctx multi_union_pw_aff::ctx() const {
13689 return isl::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
13690 }
13691
add(isl::multi_union_pw_aff multi2)13692 isl::multi_union_pw_aff multi_union_pw_aff::add(isl::multi_union_pw_aff multi2) const
13693 {
13694 auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
13695 return manage(res);
13696 }
13697
at(int pos)13698 isl::union_pw_aff multi_union_pw_aff::at(int pos) const
13699 {
13700 auto res = isl_multi_union_pw_aff_get_at(get(), pos);
13701 return manage(res);
13702 }
13703
get_at(int pos)13704 isl::union_pw_aff multi_union_pw_aff::get_at(int pos) const
13705 {
13706 return at(pos);
13707 }
13708
bind(isl::multi_id tuple)13709 isl::union_set multi_union_pw_aff::bind(isl::multi_id tuple) const
13710 {
13711 auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
13712 return manage(res);
13713 }
13714
coalesce()13715 isl::multi_union_pw_aff multi_union_pw_aff::coalesce() const
13716 {
13717 auto res = isl_multi_union_pw_aff_coalesce(copy());
13718 return manage(res);
13719 }
13720
dim(isl::dim type)13721 class size multi_union_pw_aff::dim(isl::dim type) const
13722 {
13723 auto res = isl_multi_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
13724 return manage(res);
13725 }
13726
domain()13727 isl::union_set multi_union_pw_aff::domain() const
13728 {
13729 auto res = isl_multi_union_pw_aff_domain(copy());
13730 return manage(res);
13731 }
13732
flat_range_product(isl::multi_union_pw_aff multi2)13733 isl::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::multi_union_pw_aff multi2) const
13734 {
13735 auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
13736 return manage(res);
13737 }
13738
from_union_map(isl::union_map umap)13739 isl::multi_union_pw_aff multi_union_pw_aff::from_union_map(isl::union_map umap)
13740 {
13741 auto res = isl_multi_union_pw_aff_from_union_map(umap.release());
13742 return manage(res);
13743 }
13744
gist(isl::union_set context)13745 isl::multi_union_pw_aff multi_union_pw_aff::gist(isl::union_set context) const
13746 {
13747 auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
13748 return manage(res);
13749 }
13750
has_range_tuple_id()13751 boolean multi_union_pw_aff::has_range_tuple_id() const
13752 {
13753 auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
13754 return manage(res);
13755 }
13756
intersect_domain(isl::union_set uset)13757 isl::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::union_set uset) const
13758 {
13759 auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
13760 return manage(res);
13761 }
13762
intersect_params(isl::set params)13763 isl::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::set params) const
13764 {
13765 auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
13766 return manage(res);
13767 }
13768
involves_nan()13769 boolean multi_union_pw_aff::involves_nan() const
13770 {
13771 auto res = isl_multi_union_pw_aff_involves_nan(get());
13772 return manage(res);
13773 }
13774
list()13775 isl::union_pw_aff_list multi_union_pw_aff::list() const
13776 {
13777 auto res = isl_multi_union_pw_aff_get_list(get());
13778 return manage(res);
13779 }
13780
get_list()13781 isl::union_pw_aff_list multi_union_pw_aff::get_list() const
13782 {
13783 return list();
13784 }
13785
neg()13786 isl::multi_union_pw_aff multi_union_pw_aff::neg() const
13787 {
13788 auto res = isl_multi_union_pw_aff_neg(copy());
13789 return manage(res);
13790 }
13791
plain_is_equal(const isl::multi_union_pw_aff & multi2)13792 boolean multi_union_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
13793 {
13794 auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
13795 return manage(res);
13796 }
13797
pullback(isl::union_pw_multi_aff upma)13798 isl::multi_union_pw_aff multi_union_pw_aff::pullback(isl::union_pw_multi_aff upma) const
13799 {
13800 auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
13801 return manage(res);
13802 }
13803
range_product(isl::multi_union_pw_aff multi2)13804 isl::multi_union_pw_aff multi_union_pw_aff::range_product(isl::multi_union_pw_aff multi2) const
13805 {
13806 auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
13807 return manage(res);
13808 }
13809
range_tuple_id()13810 isl::id multi_union_pw_aff::range_tuple_id() const
13811 {
13812 auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
13813 return manage(res);
13814 }
13815
get_range_tuple_id()13816 isl::id multi_union_pw_aff::get_range_tuple_id() const
13817 {
13818 return range_tuple_id();
13819 }
13820
reset_range_tuple_id()13821 isl::multi_union_pw_aff multi_union_pw_aff::reset_range_tuple_id() const
13822 {
13823 auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
13824 return manage(res);
13825 }
13826
reset_tuple_id(isl::dim type)13827 isl::multi_union_pw_aff multi_union_pw_aff::reset_tuple_id(isl::dim type) const
13828 {
13829 auto res = isl_multi_union_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
13830 return manage(res);
13831 }
13832
scale(isl::multi_val mv)13833 isl::multi_union_pw_aff multi_union_pw_aff::scale(isl::multi_val mv) const
13834 {
13835 auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
13836 return manage(res);
13837 }
13838
scale(isl::val v)13839 isl::multi_union_pw_aff multi_union_pw_aff::scale(isl::val v) const
13840 {
13841 auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
13842 return manage(res);
13843 }
13844
scale(long v)13845 isl::multi_union_pw_aff multi_union_pw_aff::scale(long v) const
13846 {
13847 return this->scale(isl::val(ctx(), v));
13848 }
13849
scale_down(isl::multi_val mv)13850 isl::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::multi_val mv) const
13851 {
13852 auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
13853 return manage(res);
13854 }
13855
scale_down(isl::val v)13856 isl::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::val v) const
13857 {
13858 auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
13859 return manage(res);
13860 }
13861
scale_down(long v)13862 isl::multi_union_pw_aff multi_union_pw_aff::scale_down(long v) const
13863 {
13864 return this->scale_down(isl::val(ctx(), v));
13865 }
13866
set_at(int pos,isl::union_pw_aff el)13867 isl::multi_union_pw_aff multi_union_pw_aff::set_at(int pos, isl::union_pw_aff el) const
13868 {
13869 auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
13870 return manage(res);
13871 }
13872
set_range_tuple(isl::id id)13873 isl::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(isl::id id) const
13874 {
13875 auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
13876 return manage(res);
13877 }
13878
set_range_tuple(const std::string & id)13879 isl::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(const std::string &id) const
13880 {
13881 return this->set_range_tuple(isl::id(ctx(), id));
13882 }
13883
set_union_pw_aff(int pos,isl::union_pw_aff el)13884 isl::multi_union_pw_aff multi_union_pw_aff::set_union_pw_aff(int pos, isl::union_pw_aff el) const
13885 {
13886 auto res = isl_multi_union_pw_aff_set_union_pw_aff(copy(), pos, el.release());
13887 return manage(res);
13888 }
13889
size()13890 class size multi_union_pw_aff::size() const
13891 {
13892 auto res = isl_multi_union_pw_aff_size(get());
13893 return manage(res);
13894 }
13895
space()13896 isl::space multi_union_pw_aff::space() const
13897 {
13898 auto res = isl_multi_union_pw_aff_get_space(get());
13899 return manage(res);
13900 }
13901
get_space()13902 isl::space multi_union_pw_aff::get_space() const
13903 {
13904 return space();
13905 }
13906
sub(isl::multi_union_pw_aff multi2)13907 isl::multi_union_pw_aff multi_union_pw_aff::sub(isl::multi_union_pw_aff multi2) const
13908 {
13909 auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
13910 return manage(res);
13911 }
13912
union_add(isl::multi_union_pw_aff mupa2)13913 isl::multi_union_pw_aff multi_union_pw_aff::union_add(isl::multi_union_pw_aff mupa2) const
13914 {
13915 auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
13916 return manage(res);
13917 }
13918
zero(isl::space space)13919 isl::multi_union_pw_aff multi_union_pw_aff::zero(isl::space space)
13920 {
13921 auto res = isl_multi_union_pw_aff_zero(space.release());
13922 return manage(res);
13923 }
13924
13925 inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
13926 {
13927 char *str = isl_multi_union_pw_aff_to_str(obj.get());
13928 if (!str) {
13929 os.setstate(std::ios_base::badbit);
13930 return os;
13931 }
13932 os << str;
13933 free(str);
13934 return os;
13935 }
13936
13937 // implementations for isl::multi_val
manage(__isl_take isl_multi_val * ptr)13938 multi_val manage(__isl_take isl_multi_val *ptr) {
13939 return multi_val(ptr);
13940 }
manage_copy(__isl_keep isl_multi_val * ptr)13941 multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
13942 ptr = isl_multi_val_copy(ptr);
13943 return multi_val(ptr);
13944 }
13945
multi_val()13946 multi_val::multi_val()
13947 : ptr(nullptr) {}
13948
multi_val(const multi_val & obj)13949 multi_val::multi_val(const multi_val &obj)
13950 : ptr(nullptr)
13951 {
13952 ptr = obj.copy();
13953 }
13954
multi_val(__isl_take isl_multi_val * ptr)13955 multi_val::multi_val(__isl_take isl_multi_val *ptr)
13956 : ptr(ptr) {}
13957
multi_val(isl::space space,isl::val_list list)13958 multi_val::multi_val(isl::space space, isl::val_list list)
13959 {
13960 auto res = isl_multi_val_from_val_list(space.release(), list.release());
13961 ptr = res;
13962 }
13963
multi_val(isl::ctx ctx,const std::string & str)13964 multi_val::multi_val(isl::ctx ctx, const std::string &str)
13965 {
13966 auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
13967 ptr = res;
13968 }
13969
13970 multi_val &multi_val::operator=(multi_val obj) {
13971 std::swap(this->ptr, obj.ptr);
13972 return *this;
13973 }
13974
~multi_val()13975 multi_val::~multi_val() {
13976 if (ptr)
13977 isl_multi_val_free(ptr);
13978 }
13979
copy()13980 __isl_give isl_multi_val *multi_val::copy() const & {
13981 return isl_multi_val_copy(ptr);
13982 }
13983
get()13984 __isl_keep isl_multi_val *multi_val::get() const {
13985 return ptr;
13986 }
13987
release()13988 __isl_give isl_multi_val *multi_val::release() {
13989 isl_multi_val *tmp = ptr;
13990 ptr = nullptr;
13991 return tmp;
13992 }
13993
is_null()13994 bool multi_val::is_null() const {
13995 return ptr == nullptr;
13996 }
13997
ctx()13998 isl::ctx multi_val::ctx() const {
13999 return isl::ctx(isl_multi_val_get_ctx(ptr));
14000 }
14001
add(isl::multi_val multi2)14002 isl::multi_val multi_val::add(isl::multi_val multi2) const
14003 {
14004 auto res = isl_multi_val_add(copy(), multi2.release());
14005 return manage(res);
14006 }
14007
add(isl::val v)14008 isl::multi_val multi_val::add(isl::val v) const
14009 {
14010 auto res = isl_multi_val_add_val(copy(), v.release());
14011 return manage(res);
14012 }
14013
add(long v)14014 isl::multi_val multi_val::add(long v) const
14015 {
14016 return this->add(isl::val(ctx(), v));
14017 }
14018
at(int pos)14019 isl::val multi_val::at(int pos) const
14020 {
14021 auto res = isl_multi_val_get_at(get(), pos);
14022 return manage(res);
14023 }
14024
get_at(int pos)14025 isl::val multi_val::get_at(int pos) const
14026 {
14027 return at(pos);
14028 }
14029
dim(isl::dim type)14030 class size multi_val::dim(isl::dim type) const
14031 {
14032 auto res = isl_multi_val_dim(get(), static_cast<enum isl_dim_type>(type));
14033 return manage(res);
14034 }
14035
flat_range_product(isl::multi_val multi2)14036 isl::multi_val multi_val::flat_range_product(isl::multi_val multi2) const
14037 {
14038 auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
14039 return manage(res);
14040 }
14041
has_range_tuple_id()14042 boolean multi_val::has_range_tuple_id() const
14043 {
14044 auto res = isl_multi_val_has_range_tuple_id(get());
14045 return manage(res);
14046 }
14047
involves_nan()14048 boolean multi_val::involves_nan() const
14049 {
14050 auto res = isl_multi_val_involves_nan(get());
14051 return manage(res);
14052 }
14053
list()14054 isl::val_list multi_val::list() const
14055 {
14056 auto res = isl_multi_val_get_list(get());
14057 return manage(res);
14058 }
14059
get_list()14060 isl::val_list multi_val::get_list() const
14061 {
14062 return list();
14063 }
14064
max(isl::multi_val multi2)14065 isl::multi_val multi_val::max(isl::multi_val multi2) const
14066 {
14067 auto res = isl_multi_val_max(copy(), multi2.release());
14068 return manage(res);
14069 }
14070
min(isl::multi_val multi2)14071 isl::multi_val multi_val::min(isl::multi_val multi2) const
14072 {
14073 auto res = isl_multi_val_min(copy(), multi2.release());
14074 return manage(res);
14075 }
14076
neg()14077 isl::multi_val multi_val::neg() const
14078 {
14079 auto res = isl_multi_val_neg(copy());
14080 return manage(res);
14081 }
14082
plain_is_equal(const isl::multi_val & multi2)14083 boolean multi_val::plain_is_equal(const isl::multi_val &multi2) const
14084 {
14085 auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
14086 return manage(res);
14087 }
14088
product(isl::multi_val multi2)14089 isl::multi_val multi_val::product(isl::multi_val multi2) const
14090 {
14091 auto res = isl_multi_val_product(copy(), multi2.release());
14092 return manage(res);
14093 }
14094
range_product(isl::multi_val multi2)14095 isl::multi_val multi_val::range_product(isl::multi_val multi2) const
14096 {
14097 auto res = isl_multi_val_range_product(copy(), multi2.release());
14098 return manage(res);
14099 }
14100
range_tuple_id()14101 isl::id multi_val::range_tuple_id() const
14102 {
14103 auto res = isl_multi_val_get_range_tuple_id(get());
14104 return manage(res);
14105 }
14106
get_range_tuple_id()14107 isl::id multi_val::get_range_tuple_id() const
14108 {
14109 return range_tuple_id();
14110 }
14111
reset_range_tuple_id()14112 isl::multi_val multi_val::reset_range_tuple_id() const
14113 {
14114 auto res = isl_multi_val_reset_range_tuple_id(copy());
14115 return manage(res);
14116 }
14117
reset_tuple_id(isl::dim type)14118 isl::multi_val multi_val::reset_tuple_id(isl::dim type) const
14119 {
14120 auto res = isl_multi_val_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
14121 return manage(res);
14122 }
14123
scale(isl::multi_val mv)14124 isl::multi_val multi_val::scale(isl::multi_val mv) const
14125 {
14126 auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
14127 return manage(res);
14128 }
14129
scale(isl::val v)14130 isl::multi_val multi_val::scale(isl::val v) const
14131 {
14132 auto res = isl_multi_val_scale_val(copy(), v.release());
14133 return manage(res);
14134 }
14135
scale(long v)14136 isl::multi_val multi_val::scale(long v) const
14137 {
14138 return this->scale(isl::val(ctx(), v));
14139 }
14140
scale_down(isl::multi_val mv)14141 isl::multi_val multi_val::scale_down(isl::multi_val mv) const
14142 {
14143 auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
14144 return manage(res);
14145 }
14146
scale_down(isl::val v)14147 isl::multi_val multi_val::scale_down(isl::val v) const
14148 {
14149 auto res = isl_multi_val_scale_down_val(copy(), v.release());
14150 return manage(res);
14151 }
14152
scale_down(long v)14153 isl::multi_val multi_val::scale_down(long v) const
14154 {
14155 return this->scale_down(isl::val(ctx(), v));
14156 }
14157
set_at(int pos,isl::val el)14158 isl::multi_val multi_val::set_at(int pos, isl::val el) const
14159 {
14160 auto res = isl_multi_val_set_at(copy(), pos, el.release());
14161 return manage(res);
14162 }
14163
set_at(int pos,long el)14164 isl::multi_val multi_val::set_at(int pos, long el) const
14165 {
14166 return this->set_at(pos, isl::val(ctx(), el));
14167 }
14168
set_range_tuple(isl::id id)14169 isl::multi_val multi_val::set_range_tuple(isl::id id) const
14170 {
14171 auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
14172 return manage(res);
14173 }
14174
set_range_tuple(const std::string & id)14175 isl::multi_val multi_val::set_range_tuple(const std::string &id) const
14176 {
14177 return this->set_range_tuple(isl::id(ctx(), id));
14178 }
14179
set_val(int pos,isl::val el)14180 isl::multi_val multi_val::set_val(int pos, isl::val el) const
14181 {
14182 auto res = isl_multi_val_set_val(copy(), pos, el.release());
14183 return manage(res);
14184 }
14185
set_val(int pos,long el)14186 isl::multi_val multi_val::set_val(int pos, long el) const
14187 {
14188 return this->set_val(pos, isl::val(ctx(), el));
14189 }
14190
size()14191 class size multi_val::size() const
14192 {
14193 auto res = isl_multi_val_size(get());
14194 return manage(res);
14195 }
14196
space()14197 isl::space multi_val::space() const
14198 {
14199 auto res = isl_multi_val_get_space(get());
14200 return manage(res);
14201 }
14202
get_space()14203 isl::space multi_val::get_space() const
14204 {
14205 return space();
14206 }
14207
sub(isl::multi_val multi2)14208 isl::multi_val multi_val::sub(isl::multi_val multi2) const
14209 {
14210 auto res = isl_multi_val_sub(copy(), multi2.release());
14211 return manage(res);
14212 }
14213
zero(isl::space space)14214 isl::multi_val multi_val::zero(isl::space space)
14215 {
14216 auto res = isl_multi_val_zero(space.release());
14217 return manage(res);
14218 }
14219
14220 inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
14221 {
14222 char *str = isl_multi_val_to_str(obj.get());
14223 if (!str) {
14224 os.setstate(std::ios_base::badbit);
14225 return os;
14226 }
14227 os << str;
14228 free(str);
14229 return os;
14230 }
14231
14232 // implementations for isl::point
manage(__isl_take isl_point * ptr)14233 point manage(__isl_take isl_point *ptr) {
14234 return point(ptr);
14235 }
manage_copy(__isl_keep isl_point * ptr)14236 point manage_copy(__isl_keep isl_point *ptr) {
14237 ptr = isl_point_copy(ptr);
14238 return point(ptr);
14239 }
14240
point()14241 point::point()
14242 : ptr(nullptr) {}
14243
point(const point & obj)14244 point::point(const point &obj)
14245 : ptr(nullptr)
14246 {
14247 ptr = obj.copy();
14248 }
14249
point(__isl_take isl_point * ptr)14250 point::point(__isl_take isl_point *ptr)
14251 : ptr(ptr) {}
14252
point(isl::space space)14253 point::point(isl::space space)
14254 {
14255 auto res = isl_point_zero(space.release());
14256 ptr = res;
14257 }
14258
14259 point &point::operator=(point obj) {
14260 std::swap(this->ptr, obj.ptr);
14261 return *this;
14262 }
14263
~point()14264 point::~point() {
14265 if (ptr)
14266 isl_point_free(ptr);
14267 }
14268
copy()14269 __isl_give isl_point *point::copy() const & {
14270 return isl_point_copy(ptr);
14271 }
14272
get()14273 __isl_keep isl_point *point::get() const {
14274 return ptr;
14275 }
14276
release()14277 __isl_give isl_point *point::release() {
14278 isl_point *tmp = ptr;
14279 ptr = nullptr;
14280 return tmp;
14281 }
14282
is_null()14283 bool point::is_null() const {
14284 return ptr == nullptr;
14285 }
14286
ctx()14287 isl::ctx point::ctx() const {
14288 return isl::ctx(isl_point_get_ctx(ptr));
14289 }
14290
add_constraint(const isl::constraint & constraint)14291 isl::set point::add_constraint(const isl::constraint &constraint) const
14292 {
14293 return isl::basic_set(*this).add_constraint(constraint);
14294 }
14295
add_dims(isl::dim type,unsigned int n)14296 isl::set point::add_dims(isl::dim type, unsigned int n) const
14297 {
14298 return isl::basic_set(*this).add_dims(type, n);
14299 }
14300
affine_hull()14301 isl::basic_set point::affine_hull() const
14302 {
14303 return isl::basic_set(*this).affine_hull();
14304 }
14305
align_params(const isl::space & model)14306 isl::set point::align_params(const isl::space &model) const
14307 {
14308 return isl::basic_set(*this).align_params(model);
14309 }
14310
apply(const isl::basic_map & bmap)14311 isl::basic_set point::apply(const isl::basic_map &bmap) const
14312 {
14313 return isl::basic_set(*this).apply(bmap);
14314 }
14315
apply(const isl::map & map)14316 isl::set point::apply(const isl::map &map) const
14317 {
14318 return isl::basic_set(*this).apply(map);
14319 }
14320
apply(const isl::union_map & umap)14321 isl::union_set point::apply(const isl::union_map &umap) const
14322 {
14323 return isl::basic_set(*this).apply(umap);
14324 }
14325
as_pw_multi_aff()14326 isl::pw_multi_aff point::as_pw_multi_aff() const
14327 {
14328 return isl::basic_set(*this).as_pw_multi_aff();
14329 }
14330
as_set()14331 isl::set point::as_set() const
14332 {
14333 return isl::basic_set(*this).as_set();
14334 }
14335
basic_set_list()14336 isl::basic_set_list point::basic_set_list() const
14337 {
14338 return isl::basic_set(*this).basic_set_list();
14339 }
14340
bind(const isl::multi_id & tuple)14341 isl::set point::bind(const isl::multi_id &tuple) const
14342 {
14343 return isl::basic_set(*this).bind(tuple);
14344 }
14345
coalesce()14346 isl::set point::coalesce() const
14347 {
14348 return isl::basic_set(*this).coalesce();
14349 }
14350
complement()14351 isl::set point::complement() const
14352 {
14353 return isl::basic_set(*this).complement();
14354 }
14355
compute_divs()14356 isl::union_set point::compute_divs() const
14357 {
14358 return isl::basic_set(*this).compute_divs();
14359 }
14360
contains(const isl::space & space)14361 boolean point::contains(const isl::space &space) const
14362 {
14363 return isl::basic_set(*this).contains(space);
14364 }
14365
convex_hull()14366 isl::basic_set point::convex_hull() const
14367 {
14368 return isl::basic_set(*this).convex_hull();
14369 }
14370
coordinate_val(isl::dim type,int pos)14371 isl::val point::coordinate_val(isl::dim type, int pos) const
14372 {
14373 auto res = isl_point_get_coordinate_val(get(), static_cast<enum isl_dim_type>(type), pos);
14374 return manage(res);
14375 }
14376
get_coordinate_val(isl::dim type,int pos)14377 isl::val point::get_coordinate_val(isl::dim type, int pos) const
14378 {
14379 return coordinate_val(type, pos);
14380 }
14381
detect_equalities()14382 isl::basic_set point::detect_equalities() const
14383 {
14384 return isl::basic_set(*this).detect_equalities();
14385 }
14386
dim(isl::dim type)14387 class size point::dim(isl::dim type) const
14388 {
14389 return isl::basic_set(*this).dim(type);
14390 }
14391
dim_has_any_lower_bound(isl::dim type,unsigned int pos)14392 boolean point::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
14393 {
14394 return isl::basic_set(*this).dim_has_any_lower_bound(type, pos);
14395 }
14396
dim_id(isl::dim type,unsigned int pos)14397 isl::id point::dim_id(isl::dim type, unsigned int pos) const
14398 {
14399 return isl::basic_set(*this).dim_id(type, pos);
14400 }
14401
dim_max(int pos)14402 isl::pw_aff point::dim_max(int pos) const
14403 {
14404 return isl::basic_set(*this).dim_max(pos);
14405 }
14406
dim_max_val(int pos)14407 isl::val point::dim_max_val(int pos) const
14408 {
14409 return isl::basic_set(*this).dim_max_val(pos);
14410 }
14411
dim_min(int pos)14412 isl::pw_aff point::dim_min(int pos) const
14413 {
14414 return isl::basic_set(*this).dim_min(pos);
14415 }
14416
dim_min_val(int pos)14417 isl::val point::dim_min_val(int pos) const
14418 {
14419 return isl::basic_set(*this).dim_min_val(pos);
14420 }
14421
dim_name(isl::dim type,unsigned int pos)14422 std::string point::dim_name(isl::dim type, unsigned int pos) const
14423 {
14424 return isl::basic_set(*this).dim_name(type, pos);
14425 }
14426
div(int pos)14427 isl::aff point::div(int pos) const
14428 {
14429 return isl::basic_set(*this).div(pos);
14430 }
14431
drop_constraints_involving_dims(isl::dim type,unsigned int first,unsigned int n)14432 isl::set point::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
14433 {
14434 return isl::basic_set(*this).drop_constraints_involving_dims(type, first, n);
14435 }
14436
eliminate(isl::dim type,unsigned int first,unsigned int n)14437 isl::set point::eliminate(isl::dim type, unsigned int first, unsigned int n) const
14438 {
14439 return isl::basic_set(*this).eliminate(type, first, n);
14440 }
14441
every_set(const std::function<boolean (isl::set)> & test)14442 boolean point::every_set(const std::function<boolean(isl::set)> &test) const
14443 {
14444 return isl::basic_set(*this).every_set(test);
14445 }
14446
extract_set(const isl::space & space)14447 isl::set point::extract_set(const isl::space &space) const
14448 {
14449 return isl::basic_set(*this).extract_set(space);
14450 }
14451
find_dim_by_id(isl::dim type,const isl::id & id)14452 int point::find_dim_by_id(isl::dim type, const isl::id &id) const
14453 {
14454 return isl::basic_set(*this).find_dim_by_id(type, id);
14455 }
14456
find_dim_by_id(isl::dim type,const std::string & id)14457 int point::find_dim_by_id(isl::dim type, const std::string &id) const
14458 {
14459 return this->find_dim_by_id(type, isl::id(ctx(), id));
14460 }
14461
fix_si(isl::dim type,unsigned int pos,int value)14462 isl::basic_set point::fix_si(isl::dim type, unsigned int pos, int value) const
14463 {
14464 return isl::basic_set(*this).fix_si(type, pos, value);
14465 }
14466
fix_val(isl::dim type,unsigned int pos,const isl::val & v)14467 isl::basic_set point::fix_val(isl::dim type, unsigned int pos, const isl::val &v) const
14468 {
14469 return isl::basic_set(*this).fix_val(type, pos, v);
14470 }
14471
fix_val(isl::dim type,unsigned int pos,long v)14472 isl::basic_set point::fix_val(isl::dim type, unsigned int pos, long v) const
14473 {
14474 return this->fix_val(type, pos, isl::val(ctx(), v));
14475 }
14476
flatten()14477 isl::basic_set point::flatten() const
14478 {
14479 return isl::basic_set(*this).flatten();
14480 }
14481
foreach_basic_set(const std::function<stat (isl::basic_set)> & fn)14482 stat point::foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const
14483 {
14484 return isl::basic_set(*this).foreach_basic_set(fn);
14485 }
14486
foreach_point(const std::function<stat (isl::point)> & fn)14487 stat point::foreach_point(const std::function<stat(isl::point)> &fn) const
14488 {
14489 return isl::basic_set(*this).foreach_point(fn);
14490 }
14491
foreach_set(const std::function<stat (isl::set)> & fn)14492 stat point::foreach_set(const std::function<stat(isl::set)> &fn) const
14493 {
14494 return isl::basic_set(*this).foreach_set(fn);
14495 }
14496
gist(const isl::basic_set & context)14497 isl::basic_set point::gist(const isl::basic_set &context) const
14498 {
14499 return isl::basic_set(*this).gist(context);
14500 }
14501
gist(const isl::set & context)14502 isl::set point::gist(const isl::set &context) const
14503 {
14504 return isl::basic_set(*this).gist(context);
14505 }
14506
gist(const isl::union_set & context)14507 isl::union_set point::gist(const isl::union_set &context) const
14508 {
14509 return isl::basic_set(*this).gist(context);
14510 }
14511
gist_params(const isl::set & context)14512 isl::set point::gist_params(const isl::set &context) const
14513 {
14514 return isl::basic_set(*this).gist_params(context);
14515 }
14516
has_equal_space(const isl::set & set2)14517 boolean point::has_equal_space(const isl::set &set2) const
14518 {
14519 return isl::basic_set(*this).has_equal_space(set2);
14520 }
14521
identity()14522 isl::map point::identity() const
14523 {
14524 return isl::basic_set(*this).identity();
14525 }
14526
identity_union_pw_multi_aff()14527 isl::union_pw_multi_aff point::identity_union_pw_multi_aff() const
14528 {
14529 return isl::basic_set(*this).identity_union_pw_multi_aff();
14530 }
14531
indicator_function()14532 isl::pw_aff point::indicator_function() const
14533 {
14534 return isl::basic_set(*this).indicator_function();
14535 }
14536
insert_dims(isl::dim type,unsigned int pos,unsigned int n)14537 isl::set point::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
14538 {
14539 return isl::basic_set(*this).insert_dims(type, pos, n);
14540 }
14541
insert_domain(const isl::space & domain)14542 isl::map point::insert_domain(const isl::space &domain) const
14543 {
14544 return isl::basic_set(*this).insert_domain(domain);
14545 }
14546
intersect(const isl::basic_set & bset2)14547 isl::basic_set point::intersect(const isl::basic_set &bset2) const
14548 {
14549 return isl::basic_set(*this).intersect(bset2);
14550 }
14551
intersect(const isl::set & set2)14552 isl::set point::intersect(const isl::set &set2) const
14553 {
14554 return isl::basic_set(*this).intersect(set2);
14555 }
14556
intersect(const isl::union_set & uset2)14557 isl::union_set point::intersect(const isl::union_set &uset2) const
14558 {
14559 return isl::basic_set(*this).intersect(uset2);
14560 }
14561
intersect_params(const isl::basic_set & bset2)14562 isl::basic_set point::intersect_params(const isl::basic_set &bset2) const
14563 {
14564 return isl::basic_set(*this).intersect_params(bset2);
14565 }
14566
intersect_params(const isl::set & params)14567 isl::set point::intersect_params(const isl::set ¶ms) const
14568 {
14569 return isl::basic_set(*this).intersect_params(params);
14570 }
14571
involves_dims(isl::dim type,unsigned int first,unsigned int n)14572 boolean point::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
14573 {
14574 return isl::basic_set(*this).involves_dims(type, first, n);
14575 }
14576
involves_locals()14577 boolean point::involves_locals() const
14578 {
14579 return isl::basic_set(*this).involves_locals();
14580 }
14581
is_bounded()14582 boolean point::is_bounded() const
14583 {
14584 return isl::basic_set(*this).is_bounded();
14585 }
14586
is_disjoint(const isl::set & set2)14587 boolean point::is_disjoint(const isl::set &set2) const
14588 {
14589 return isl::basic_set(*this).is_disjoint(set2);
14590 }
14591
is_disjoint(const isl::union_set & uset2)14592 boolean point::is_disjoint(const isl::union_set &uset2) const
14593 {
14594 return isl::basic_set(*this).is_disjoint(uset2);
14595 }
14596
is_empty()14597 boolean point::is_empty() const
14598 {
14599 return isl::basic_set(*this).is_empty();
14600 }
14601
is_equal(const isl::basic_set & bset2)14602 boolean point::is_equal(const isl::basic_set &bset2) const
14603 {
14604 return isl::basic_set(*this).is_equal(bset2);
14605 }
14606
is_equal(const isl::set & set2)14607 boolean point::is_equal(const isl::set &set2) const
14608 {
14609 return isl::basic_set(*this).is_equal(set2);
14610 }
14611
is_equal(const isl::union_set & uset2)14612 boolean point::is_equal(const isl::union_set &uset2) const
14613 {
14614 return isl::basic_set(*this).is_equal(uset2);
14615 }
14616
is_params()14617 boolean point::is_params() const
14618 {
14619 return isl::basic_set(*this).is_params();
14620 }
14621
is_singleton()14622 boolean point::is_singleton() const
14623 {
14624 return isl::basic_set(*this).is_singleton();
14625 }
14626
is_strict_subset(const isl::set & set2)14627 boolean point::is_strict_subset(const isl::set &set2) const
14628 {
14629 return isl::basic_set(*this).is_strict_subset(set2);
14630 }
14631
is_strict_subset(const isl::union_set & uset2)14632 boolean point::is_strict_subset(const isl::union_set &uset2) const
14633 {
14634 return isl::basic_set(*this).is_strict_subset(uset2);
14635 }
14636
is_subset(const isl::basic_set & bset2)14637 boolean point::is_subset(const isl::basic_set &bset2) const
14638 {
14639 return isl::basic_set(*this).is_subset(bset2);
14640 }
14641
is_subset(const isl::set & set2)14642 boolean point::is_subset(const isl::set &set2) const
14643 {
14644 return isl::basic_set(*this).is_subset(set2);
14645 }
14646
is_subset(const isl::union_set & uset2)14647 boolean point::is_subset(const isl::union_set &uset2) const
14648 {
14649 return isl::basic_set(*this).is_subset(uset2);
14650 }
14651
is_wrapping()14652 boolean point::is_wrapping() const
14653 {
14654 return isl::basic_set(*this).is_wrapping();
14655 }
14656
isa_set()14657 boolean point::isa_set() const
14658 {
14659 return isl::basic_set(*this).isa_set();
14660 }
14661
lexmax()14662 isl::set point::lexmax() const
14663 {
14664 return isl::basic_set(*this).lexmax();
14665 }
14666
lexmax_pw_multi_aff()14667 isl::pw_multi_aff point::lexmax_pw_multi_aff() const
14668 {
14669 return isl::basic_set(*this).lexmax_pw_multi_aff();
14670 }
14671
lexmin()14672 isl::set point::lexmin() const
14673 {
14674 return isl::basic_set(*this).lexmin();
14675 }
14676
lexmin_pw_multi_aff()14677 isl::pw_multi_aff point::lexmin_pw_multi_aff() const
14678 {
14679 return isl::basic_set(*this).lexmin_pw_multi_aff();
14680 }
14681
lower_bound(const isl::multi_pw_aff & lower)14682 isl::set point::lower_bound(const isl::multi_pw_aff &lower) const
14683 {
14684 return isl::basic_set(*this).lower_bound(lower);
14685 }
14686
lower_bound(const isl::multi_val & lower)14687 isl::set point::lower_bound(const isl::multi_val &lower) const
14688 {
14689 return isl::basic_set(*this).lower_bound(lower);
14690 }
14691
lower_bound_si(isl::dim type,unsigned int pos,int value)14692 isl::set point::lower_bound_si(isl::dim type, unsigned int pos, int value) const
14693 {
14694 return isl::basic_set(*this).lower_bound_si(type, pos, value);
14695 }
14696
lower_bound_val(isl::dim type,unsigned int pos,const isl::val & value)14697 isl::set point::lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
14698 {
14699 return isl::basic_set(*this).lower_bound_val(type, pos, value);
14700 }
14701
lower_bound_val(isl::dim type,unsigned int pos,long value)14702 isl::set point::lower_bound_val(isl::dim type, unsigned int pos, long value) const
14703 {
14704 return this->lower_bound_val(type, pos, isl::val(ctx(), value));
14705 }
14706
max_multi_pw_aff()14707 isl::multi_pw_aff point::max_multi_pw_aff() const
14708 {
14709 return isl::basic_set(*this).max_multi_pw_aff();
14710 }
14711
max_val(const isl::aff & obj)14712 isl::val point::max_val(const isl::aff &obj) const
14713 {
14714 return isl::basic_set(*this).max_val(obj);
14715 }
14716
min_multi_pw_aff()14717 isl::multi_pw_aff point::min_multi_pw_aff() const
14718 {
14719 return isl::basic_set(*this).min_multi_pw_aff();
14720 }
14721
min_val(const isl::aff & obj)14722 isl::val point::min_val(const isl::aff &obj) const
14723 {
14724 return isl::basic_set(*this).min_val(obj);
14725 }
14726
multi_val()14727 isl::multi_val point::multi_val() const
14728 {
14729 auto res = isl_point_get_multi_val(get());
14730 return manage(res);
14731 }
14732
get_multi_val()14733 isl::multi_val point::get_multi_val() const
14734 {
14735 return multi_val();
14736 }
14737
n_basic_set()14738 class size point::n_basic_set() const
14739 {
14740 return isl::basic_set(*this).n_basic_set();
14741 }
14742
params()14743 isl::basic_set point::params() const
14744 {
14745 return isl::basic_set(*this).params();
14746 }
14747
plain_get_val_if_fixed(isl::dim type,unsigned int pos)14748 isl::val point::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
14749 {
14750 return isl::basic_set(*this).plain_get_val_if_fixed(type, pos);
14751 }
14752
plain_multi_val_if_fixed()14753 isl::multi_val point::plain_multi_val_if_fixed() const
14754 {
14755 return isl::basic_set(*this).plain_multi_val_if_fixed();
14756 }
14757
polyhedral_hull()14758 isl::basic_set point::polyhedral_hull() const
14759 {
14760 return isl::basic_set(*this).polyhedral_hull();
14761 }
14762
preimage(const isl::multi_aff & ma)14763 isl::set point::preimage(const isl::multi_aff &ma) const
14764 {
14765 return isl::basic_set(*this).preimage(ma);
14766 }
14767
preimage(const isl::multi_pw_aff & mpa)14768 isl::set point::preimage(const isl::multi_pw_aff &mpa) const
14769 {
14770 return isl::basic_set(*this).preimage(mpa);
14771 }
14772
preimage(const isl::pw_multi_aff & pma)14773 isl::set point::preimage(const isl::pw_multi_aff &pma) const
14774 {
14775 return isl::basic_set(*this).preimage(pma);
14776 }
14777
preimage(const isl::union_pw_multi_aff & upma)14778 isl::union_set point::preimage(const isl::union_pw_multi_aff &upma) const
14779 {
14780 return isl::basic_set(*this).preimage(upma);
14781 }
14782
product(const isl::set & set2)14783 isl::set point::product(const isl::set &set2) const
14784 {
14785 return isl::basic_set(*this).product(set2);
14786 }
14787
project_out(isl::dim type,unsigned int first,unsigned int n)14788 isl::basic_set point::project_out(isl::dim type, unsigned int first, unsigned int n) const
14789 {
14790 return isl::basic_set(*this).project_out(type, first, n);
14791 }
14792
project_out_all_params()14793 isl::set point::project_out_all_params() const
14794 {
14795 return isl::basic_set(*this).project_out_all_params();
14796 }
14797
project_out_param(const isl::id & id)14798 isl::set point::project_out_param(const isl::id &id) const
14799 {
14800 return isl::basic_set(*this).project_out_param(id);
14801 }
14802
project_out_param(const std::string & id)14803 isl::set point::project_out_param(const std::string &id) const
14804 {
14805 return this->project_out_param(isl::id(ctx(), id));
14806 }
14807
project_out_param(const isl::id_list & list)14808 isl::set point::project_out_param(const isl::id_list &list) const
14809 {
14810 return isl::basic_set(*this).project_out_param(list);
14811 }
14812
pw_multi_aff_on_domain(const isl::multi_val & mv)14813 isl::pw_multi_aff point::pw_multi_aff_on_domain(const isl::multi_val &mv) const
14814 {
14815 return isl::basic_set(*this).pw_multi_aff_on_domain(mv);
14816 }
14817
remove_dims(isl::dim type,unsigned int first,unsigned int n)14818 isl::set point::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
14819 {
14820 return isl::basic_set(*this).remove_dims(type, first, n);
14821 }
14822
remove_divs()14823 isl::set point::remove_divs() const
14824 {
14825 return isl::basic_set(*this).remove_divs();
14826 }
14827
remove_redundancies()14828 isl::set point::remove_redundancies() const
14829 {
14830 return isl::basic_set(*this).remove_redundancies();
14831 }
14832
reset_tuple_id()14833 isl::set point::reset_tuple_id() const
14834 {
14835 return isl::basic_set(*this).reset_tuple_id();
14836 }
14837
sample()14838 isl::basic_set point::sample() const
14839 {
14840 return isl::basic_set(*this).sample();
14841 }
14842
sample_point()14843 isl::point point::sample_point() const
14844 {
14845 return isl::basic_set(*this).sample_point();
14846 }
14847
set_dim_id(isl::dim type,unsigned int pos,const isl::id & id)14848 isl::set point::set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const
14849 {
14850 return isl::basic_set(*this).set_dim_id(type, pos, id);
14851 }
14852
set_dim_id(isl::dim type,unsigned int pos,const std::string & id)14853 isl::set point::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
14854 {
14855 return this->set_dim_id(type, pos, isl::id(ctx(), id));
14856 }
14857
set_list()14858 isl::set_list point::set_list() const
14859 {
14860 return isl::basic_set(*this).set_list();
14861 }
14862
set_tuple_id(const isl::id & id)14863 isl::set point::set_tuple_id(const isl::id &id) const
14864 {
14865 return isl::basic_set(*this).set_tuple_id(id);
14866 }
14867
set_tuple_id(const std::string & id)14868 isl::set point::set_tuple_id(const std::string &id) const
14869 {
14870 return this->set_tuple_id(isl::id(ctx(), id));
14871 }
14872
simple_fixed_box_hull()14873 isl::fixed_box point::simple_fixed_box_hull() const
14874 {
14875 return isl::basic_set(*this).simple_fixed_box_hull();
14876 }
14877
simple_hull()14878 isl::basic_set point::simple_hull() const
14879 {
14880 return isl::basic_set(*this).simple_hull();
14881 }
14882
space()14883 isl::space point::space() const
14884 {
14885 return isl::basic_set(*this).space();
14886 }
14887
stride(int pos)14888 isl::val point::stride(int pos) const
14889 {
14890 return isl::basic_set(*this).stride(pos);
14891 }
14892
subtract(const isl::set & set2)14893 isl::set point::subtract(const isl::set &set2) const
14894 {
14895 return isl::basic_set(*this).subtract(set2);
14896 }
14897
subtract(const isl::union_set & uset2)14898 isl::union_set point::subtract(const isl::union_set &uset2) const
14899 {
14900 return isl::basic_set(*this).subtract(uset2);
14901 }
14902
to_list()14903 isl::basic_set_list point::to_list() const
14904 {
14905 return isl::basic_set(*this).to_list();
14906 }
14907
to_set()14908 isl::set point::to_set() const
14909 {
14910 auto res = isl_point_to_set(copy());
14911 return manage(res);
14912 }
14913
to_union_set()14914 isl::union_set point::to_union_set() const
14915 {
14916 return isl::basic_set(*this).to_union_set();
14917 }
14918
translation()14919 isl::map point::translation() const
14920 {
14921 return isl::basic_set(*this).translation();
14922 }
14923
tuple_dim()14924 class size point::tuple_dim() const
14925 {
14926 return isl::basic_set(*this).tuple_dim();
14927 }
14928
tuple_id()14929 isl::id point::tuple_id() const
14930 {
14931 return isl::basic_set(*this).tuple_id();
14932 }
14933
tuple_name()14934 std::string point::tuple_name() const
14935 {
14936 return isl::basic_set(*this).tuple_name();
14937 }
14938
unbind_params(const isl::multi_id & tuple)14939 isl::set point::unbind_params(const isl::multi_id &tuple) const
14940 {
14941 return isl::basic_set(*this).unbind_params(tuple);
14942 }
14943
unbind_params_insert_domain(const isl::multi_id & domain)14944 isl::map point::unbind_params_insert_domain(const isl::multi_id &domain) const
14945 {
14946 return isl::basic_set(*this).unbind_params_insert_domain(domain);
14947 }
14948
unite(const isl::basic_set & bset2)14949 isl::set point::unite(const isl::basic_set &bset2) const
14950 {
14951 return isl::basic_set(*this).unite(bset2);
14952 }
14953
unite(const isl::set & set2)14954 isl::set point::unite(const isl::set &set2) const
14955 {
14956 return isl::basic_set(*this).unite(set2);
14957 }
14958
unite(const isl::union_set & uset2)14959 isl::union_set point::unite(const isl::union_set &uset2) const
14960 {
14961 return isl::basic_set(*this).unite(uset2);
14962 }
14963
unshifted_simple_hull()14964 isl::basic_set point::unshifted_simple_hull() const
14965 {
14966 return isl::basic_set(*this).unshifted_simple_hull();
14967 }
14968
unwrap()14969 isl::map point::unwrap() const
14970 {
14971 return isl::basic_set(*this).unwrap();
14972 }
14973
upper_bound(const isl::multi_pw_aff & upper)14974 isl::set point::upper_bound(const isl::multi_pw_aff &upper) const
14975 {
14976 return isl::basic_set(*this).upper_bound(upper);
14977 }
14978
upper_bound(const isl::multi_val & upper)14979 isl::set point::upper_bound(const isl::multi_val &upper) const
14980 {
14981 return isl::basic_set(*this).upper_bound(upper);
14982 }
14983
upper_bound_val(isl::dim type,unsigned int pos,const isl::val & value)14984 isl::set point::upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
14985 {
14986 return isl::basic_set(*this).upper_bound_val(type, pos, value);
14987 }
14988
upper_bound_val(isl::dim type,unsigned int pos,long value)14989 isl::set point::upper_bound_val(isl::dim type, unsigned int pos, long value) const
14990 {
14991 return this->upper_bound_val(type, pos, isl::val(ctx(), value));
14992 }
14993
14994 inline std::ostream &operator<<(std::ostream &os, const point &obj)
14995 {
14996 char *str = isl_point_to_str(obj.get());
14997 if (!str) {
14998 os.setstate(std::ios_base::badbit);
14999 return os;
15000 }
15001 os << str;
15002 free(str);
15003 return os;
15004 }
15005
15006 // implementations for isl::pw_aff
manage(__isl_take isl_pw_aff * ptr)15007 pw_aff manage(__isl_take isl_pw_aff *ptr) {
15008 return pw_aff(ptr);
15009 }
manage_copy(__isl_keep isl_pw_aff * ptr)15010 pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
15011 ptr = isl_pw_aff_copy(ptr);
15012 return pw_aff(ptr);
15013 }
15014
pw_aff()15015 pw_aff::pw_aff()
15016 : ptr(nullptr) {}
15017
pw_aff(const pw_aff & obj)15018 pw_aff::pw_aff(const pw_aff &obj)
15019 : ptr(nullptr)
15020 {
15021 ptr = obj.copy();
15022 }
15023
pw_aff(__isl_take isl_pw_aff * ptr)15024 pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
15025 : ptr(ptr) {}
15026
pw_aff(isl::aff aff)15027 pw_aff::pw_aff(isl::aff aff)
15028 {
15029 auto res = isl_pw_aff_from_aff(aff.release());
15030 ptr = res;
15031 }
15032
pw_aff(isl::ctx ctx,const std::string & str)15033 pw_aff::pw_aff(isl::ctx ctx, const std::string &str)
15034 {
15035 auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
15036 ptr = res;
15037 }
15038
pw_aff(isl::set domain,isl::val v)15039 pw_aff::pw_aff(isl::set domain, isl::val v)
15040 {
15041 auto res = isl_pw_aff_val_on_domain(domain.release(), v.release());
15042 ptr = res;
15043 }
15044
pw_aff(isl::local_space ls)15045 pw_aff::pw_aff(isl::local_space ls)
15046 {
15047 auto res = isl_pw_aff_zero_on_domain(ls.release());
15048 ptr = res;
15049 }
15050
15051 pw_aff &pw_aff::operator=(pw_aff obj) {
15052 std::swap(this->ptr, obj.ptr);
15053 return *this;
15054 }
15055
~pw_aff()15056 pw_aff::~pw_aff() {
15057 if (ptr)
15058 isl_pw_aff_free(ptr);
15059 }
15060
copy()15061 __isl_give isl_pw_aff *pw_aff::copy() const & {
15062 return isl_pw_aff_copy(ptr);
15063 }
15064
get()15065 __isl_keep isl_pw_aff *pw_aff::get() const {
15066 return ptr;
15067 }
15068
release()15069 __isl_give isl_pw_aff *pw_aff::release() {
15070 isl_pw_aff *tmp = ptr;
15071 ptr = nullptr;
15072 return tmp;
15073 }
15074
is_null()15075 bool pw_aff::is_null() const {
15076 return ptr == nullptr;
15077 }
15078
ctx()15079 isl::ctx pw_aff::ctx() const {
15080 return isl::ctx(isl_pw_aff_get_ctx(ptr));
15081 }
15082
add(const isl::multi_pw_aff & multi2)15083 isl::multi_pw_aff pw_aff::add(const isl::multi_pw_aff &multi2) const
15084 {
15085 return isl::pw_multi_aff(*this).add(multi2);
15086 }
15087
add(const isl::multi_union_pw_aff & multi2)15088 isl::multi_union_pw_aff pw_aff::add(const isl::multi_union_pw_aff &multi2) const
15089 {
15090 return isl::union_pw_aff(*this).add(multi2);
15091 }
15092
add(isl::pw_aff pwaff2)15093 isl::pw_aff pw_aff::add(isl::pw_aff pwaff2) const
15094 {
15095 auto res = isl_pw_aff_add(copy(), pwaff2.release());
15096 return manage(res);
15097 }
15098
add(const isl::pw_multi_aff & pma2)15099 isl::pw_multi_aff pw_aff::add(const isl::pw_multi_aff &pma2) const
15100 {
15101 return isl::pw_multi_aff(*this).add(pma2);
15102 }
15103
add(const isl::union_pw_aff & upa2)15104 isl::union_pw_aff pw_aff::add(const isl::union_pw_aff &upa2) const
15105 {
15106 return isl::union_pw_aff(*this).add(upa2);
15107 }
15108
add(const isl::union_pw_multi_aff & upma2)15109 isl::union_pw_multi_aff pw_aff::add(const isl::union_pw_multi_aff &upma2) const
15110 {
15111 return isl::union_pw_aff(*this).add(upma2);
15112 }
15113
add(const isl::aff & pwaff2)15114 isl::pw_aff pw_aff::add(const isl::aff &pwaff2) const
15115 {
15116 return this->add(isl::pw_aff(pwaff2));
15117 }
15118
add_constant(isl::val v)15119 isl::pw_aff pw_aff::add_constant(isl::val v) const
15120 {
15121 auto res = isl_pw_aff_add_constant_val(copy(), v.release());
15122 return manage(res);
15123 }
15124
add_constant(long v)15125 isl::pw_aff pw_aff::add_constant(long v) const
15126 {
15127 return this->add_constant(isl::val(ctx(), v));
15128 }
15129
add_constant(const isl::multi_val & mv)15130 isl::pw_multi_aff pw_aff::add_constant(const isl::multi_val &mv) const
15131 {
15132 return isl::pw_multi_aff(*this).add_constant(mv);
15133 }
15134
add_dims(isl::dim type,unsigned int n)15135 isl::pw_aff pw_aff::add_dims(isl::dim type, unsigned int n) const
15136 {
15137 auto res = isl_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
15138 return manage(res);
15139 }
15140
add_pw_multi_aff(const isl::pw_multi_aff & pma)15141 isl::union_pw_multi_aff pw_aff::add_pw_multi_aff(const isl::pw_multi_aff &pma) const
15142 {
15143 return isl::union_pw_aff(*this).add_pw_multi_aff(pma);
15144 }
15145
apply(const isl::union_pw_multi_aff & upma2)15146 isl::union_pw_multi_aff pw_aff::apply(const isl::union_pw_multi_aff &upma2) const
15147 {
15148 return isl::union_pw_aff(*this).apply(upma2);
15149 }
15150
as_aff()15151 isl::aff pw_aff::as_aff() const
15152 {
15153 auto res = isl_pw_aff_as_aff(copy());
15154 return manage(res);
15155 }
15156
as_map()15157 isl::map pw_aff::as_map() const
15158 {
15159 auto res = isl_pw_aff_as_map(copy());
15160 return manage(res);
15161 }
15162
as_multi_aff()15163 isl::multi_aff pw_aff::as_multi_aff() const
15164 {
15165 return isl::pw_multi_aff(*this).as_multi_aff();
15166 }
15167
as_multi_union_pw_aff()15168 isl::multi_union_pw_aff pw_aff::as_multi_union_pw_aff() const
15169 {
15170 return isl::union_pw_aff(*this).as_multi_union_pw_aff();
15171 }
15172
as_pw_multi_aff()15173 isl::pw_multi_aff pw_aff::as_pw_multi_aff() const
15174 {
15175 return isl::union_pw_aff(*this).as_pw_multi_aff();
15176 }
15177
as_set()15178 isl::set pw_aff::as_set() const
15179 {
15180 return isl::pw_multi_aff(*this).as_set();
15181 }
15182
as_union_map()15183 isl::union_map pw_aff::as_union_map() const
15184 {
15185 return isl::union_pw_aff(*this).as_union_map();
15186 }
15187
at(int pos)15188 isl::pw_aff pw_aff::at(int pos) const
15189 {
15190 return isl::pw_multi_aff(*this).at(pos);
15191 }
15192
bind(const isl::multi_id & tuple)15193 isl::set pw_aff::bind(const isl::multi_id &tuple) const
15194 {
15195 return isl::multi_pw_aff(*this).bind(tuple);
15196 }
15197
bind(isl::id id)15198 isl::set pw_aff::bind(isl::id id) const
15199 {
15200 auto res = isl_pw_aff_bind_id(copy(), id.release());
15201 return manage(res);
15202 }
15203
bind(const std::string & id)15204 isl::set pw_aff::bind(const std::string &id) const
15205 {
15206 return this->bind(isl::id(ctx(), id));
15207 }
15208
bind_domain(isl::multi_id tuple)15209 isl::pw_aff pw_aff::bind_domain(isl::multi_id tuple) const
15210 {
15211 auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
15212 return manage(res);
15213 }
15214
bind_domain_wrapped_domain(isl::multi_id tuple)15215 isl::pw_aff pw_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
15216 {
15217 auto res = isl_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
15218 return manage(res);
15219 }
15220
ceil()15221 isl::pw_aff pw_aff::ceil() const
15222 {
15223 auto res = isl_pw_aff_ceil(copy());
15224 return manage(res);
15225 }
15226
coalesce()15227 isl::pw_aff pw_aff::coalesce() const
15228 {
15229 auto res = isl_pw_aff_coalesce(copy());
15230 return manage(res);
15231 }
15232
cond(isl::pw_aff pwaff_true,isl::pw_aff pwaff_false)15233 isl::pw_aff pw_aff::cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const
15234 {
15235 auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
15236 return manage(res);
15237 }
15238
dim(isl::dim type)15239 class size pw_aff::dim(isl::dim type) const
15240 {
15241 return isl::pw_multi_aff(*this).dim(type);
15242 }
15243
dim_id(isl::dim type,unsigned int pos)15244 isl::id pw_aff::dim_id(isl::dim type, unsigned int pos) const
15245 {
15246 auto res = isl_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15247 return manage(res);
15248 }
15249
get_dim_id(isl::dim type,unsigned int pos)15250 isl::id pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
15251 {
15252 return dim_id(type, pos);
15253 }
15254
div(isl::pw_aff pa2)15255 isl::pw_aff pw_aff::div(isl::pw_aff pa2) const
15256 {
15257 auto res = isl_pw_aff_div(copy(), pa2.release());
15258 return manage(res);
15259 }
15260
domain()15261 isl::set pw_aff::domain() const
15262 {
15263 auto res = isl_pw_aff_domain(copy());
15264 return manage(res);
15265 }
15266
domain_space()15267 isl::space pw_aff::domain_space() const
15268 {
15269 auto res = isl_pw_aff_get_domain_space(get());
15270 return manage(res);
15271 }
15272
get_domain_space()15273 isl::space pw_aff::get_domain_space() const
15274 {
15275 return domain_space();
15276 }
15277
drop_dims(isl::dim type,unsigned int first,unsigned int n)15278 isl::pw_multi_aff pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
15279 {
15280 return isl::pw_multi_aff(*this).drop_dims(type, first, n);
15281 }
15282
eq_set(isl::pw_aff pwaff2)15283 isl::set pw_aff::eq_set(isl::pw_aff pwaff2) const
15284 {
15285 auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
15286 return manage(res);
15287 }
15288
eval(isl::point pnt)15289 isl::val pw_aff::eval(isl::point pnt) const
15290 {
15291 auto res = isl_pw_aff_eval(copy(), pnt.release());
15292 return manage(res);
15293 }
15294
extract_pw_multi_aff(const isl::space & space)15295 isl::pw_multi_aff pw_aff::extract_pw_multi_aff(const isl::space &space) const
15296 {
15297 return isl::union_pw_aff(*this).extract_pw_multi_aff(space);
15298 }
15299
flat_range_product(const isl::multi_pw_aff & multi2)15300 isl::multi_pw_aff pw_aff::flat_range_product(const isl::multi_pw_aff &multi2) const
15301 {
15302 return isl::pw_multi_aff(*this).flat_range_product(multi2);
15303 }
15304
flat_range_product(const isl::multi_union_pw_aff & multi2)15305 isl::multi_union_pw_aff pw_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
15306 {
15307 return isl::union_pw_aff(*this).flat_range_product(multi2);
15308 }
15309
flat_range_product(const isl::pw_multi_aff & pma2)15310 isl::pw_multi_aff pw_aff::flat_range_product(const isl::pw_multi_aff &pma2) const
15311 {
15312 return isl::pw_multi_aff(*this).flat_range_product(pma2);
15313 }
15314
flat_range_product(const isl::union_pw_multi_aff & upma2)15315 isl::union_pw_multi_aff pw_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
15316 {
15317 return isl::union_pw_aff(*this).flat_range_product(upma2);
15318 }
15319
floor()15320 isl::pw_aff pw_aff::floor() const
15321 {
15322 auto res = isl_pw_aff_floor(copy());
15323 return manage(res);
15324 }
15325
foreach_piece(const std::function<stat (isl::set,isl::aff)> & fn)15326 stat pw_aff::foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const
15327 {
15328 struct fn_data {
15329 std::function<stat(isl::set, isl::aff)> func;
15330 } fn_data = { fn };
15331 auto fn_lambda = [](isl_set *arg_0, isl_aff *arg_1, void *arg_2) -> isl_stat {
15332 auto *data = static_cast<struct fn_data *>(arg_2);
15333 auto ret = (data->func)(manage(arg_0), manage(arg_1));
15334 return ret.release();
15335 };
15336 auto res = isl_pw_aff_foreach_piece(get(), fn_lambda, &fn_data);
15337 return manage(res);
15338 }
15339
foreach_piece(const std::function<stat (isl::set,isl::multi_aff)> & fn)15340 stat pw_aff::foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const
15341 {
15342 return isl::pw_multi_aff(*this).foreach_piece(fn);
15343 }
15344
foreach_pw_aff(const std::function<stat (isl::pw_aff)> & fn)15345 stat pw_aff::foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const
15346 {
15347 return isl::union_pw_aff(*this).foreach_pw_aff(fn);
15348 }
15349
ge_set(isl::pw_aff pwaff2)15350 isl::set pw_aff::ge_set(isl::pw_aff pwaff2) const
15351 {
15352 auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
15353 return manage(res);
15354 }
15355
gist(isl::set context)15356 isl::pw_aff pw_aff::gist(isl::set context) const
15357 {
15358 auto res = isl_pw_aff_gist(copy(), context.release());
15359 return manage(res);
15360 }
15361
gist(const isl::union_set & context)15362 isl::union_pw_aff pw_aff::gist(const isl::union_set &context) const
15363 {
15364 return isl::union_pw_aff(*this).gist(context);
15365 }
15366
gist(const isl::basic_set & context)15367 isl::pw_aff pw_aff::gist(const isl::basic_set &context) const
15368 {
15369 return this->gist(isl::set(context));
15370 }
15371
gist(const isl::point & context)15372 isl::pw_aff pw_aff::gist(const isl::point &context) const
15373 {
15374 return this->gist(isl::set(context));
15375 }
15376
gt_set(isl::pw_aff pwaff2)15377 isl::set pw_aff::gt_set(isl::pw_aff pwaff2) const
15378 {
15379 auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
15380 return manage(res);
15381 }
15382
has_range_tuple_id()15383 boolean pw_aff::has_range_tuple_id() const
15384 {
15385 return isl::pw_multi_aff(*this).has_range_tuple_id();
15386 }
15387
identity()15388 isl::multi_pw_aff pw_aff::identity() const
15389 {
15390 return isl::pw_multi_aff(*this).identity();
15391 }
15392
insert_domain(isl::space domain)15393 isl::pw_aff pw_aff::insert_domain(isl::space domain) const
15394 {
15395 auto res = isl_pw_aff_insert_domain(copy(), domain.release());
15396 return manage(res);
15397 }
15398
intersect_domain(isl::set set)15399 isl::pw_aff pw_aff::intersect_domain(isl::set set) const
15400 {
15401 auto res = isl_pw_aff_intersect_domain(copy(), set.release());
15402 return manage(res);
15403 }
15404
intersect_domain(const isl::space & space)15405 isl::union_pw_aff pw_aff::intersect_domain(const isl::space &space) const
15406 {
15407 return isl::union_pw_aff(*this).intersect_domain(space);
15408 }
15409
intersect_domain(const isl::union_set & uset)15410 isl::union_pw_aff pw_aff::intersect_domain(const isl::union_set &uset) const
15411 {
15412 return isl::union_pw_aff(*this).intersect_domain(uset);
15413 }
15414
intersect_domain(const isl::basic_set & set)15415 isl::pw_aff pw_aff::intersect_domain(const isl::basic_set &set) const
15416 {
15417 return this->intersect_domain(isl::set(set));
15418 }
15419
intersect_domain(const isl::point & set)15420 isl::pw_aff pw_aff::intersect_domain(const isl::point &set) const
15421 {
15422 return this->intersect_domain(isl::set(set));
15423 }
15424
intersect_domain_wrapped_domain(const isl::union_set & uset)15425 isl::union_pw_aff pw_aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
15426 {
15427 return isl::union_pw_aff(*this).intersect_domain_wrapped_domain(uset);
15428 }
15429
intersect_domain_wrapped_range(const isl::union_set & uset)15430 isl::union_pw_aff pw_aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
15431 {
15432 return isl::union_pw_aff(*this).intersect_domain_wrapped_range(uset);
15433 }
15434
intersect_params(isl::set set)15435 isl::pw_aff pw_aff::intersect_params(isl::set set) const
15436 {
15437 auto res = isl_pw_aff_intersect_params(copy(), set.release());
15438 return manage(res);
15439 }
15440
involves_locals()15441 boolean pw_aff::involves_locals() const
15442 {
15443 return isl::pw_multi_aff(*this).involves_locals();
15444 }
15445
involves_nan()15446 boolean pw_aff::involves_nan() const
15447 {
15448 return isl::multi_pw_aff(*this).involves_nan();
15449 }
15450
involves_param(const isl::id & id)15451 boolean pw_aff::involves_param(const isl::id &id) const
15452 {
15453 return isl::pw_multi_aff(*this).involves_param(id);
15454 }
15455
involves_param(const std::string & id)15456 boolean pw_aff::involves_param(const std::string &id) const
15457 {
15458 return this->involves_param(isl::id(ctx(), id));
15459 }
15460
involves_param(const isl::id_list & list)15461 boolean pw_aff::involves_param(const isl::id_list &list) const
15462 {
15463 return isl::pw_multi_aff(*this).involves_param(list);
15464 }
15465
is_cst()15466 boolean pw_aff::is_cst() const
15467 {
15468 auto res = isl_pw_aff_is_cst(get());
15469 return manage(res);
15470 }
15471
is_equal(const isl::pw_aff & pa2)15472 boolean pw_aff::is_equal(const isl::pw_aff &pa2) const
15473 {
15474 auto res = isl_pw_aff_is_equal(get(), pa2.get());
15475 return manage(res);
15476 }
15477
isa_aff()15478 boolean pw_aff::isa_aff() const
15479 {
15480 auto res = isl_pw_aff_isa_aff(get());
15481 return manage(res);
15482 }
15483
isa_multi_aff()15484 boolean pw_aff::isa_multi_aff() const
15485 {
15486 return isl::pw_multi_aff(*this).isa_multi_aff();
15487 }
15488
isa_pw_multi_aff()15489 boolean pw_aff::isa_pw_multi_aff() const
15490 {
15491 return isl::union_pw_aff(*this).isa_pw_multi_aff();
15492 }
15493
le_set(isl::pw_aff pwaff2)15494 isl::set pw_aff::le_set(isl::pw_aff pwaff2) const
15495 {
15496 auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
15497 return manage(res);
15498 }
15499
list()15500 isl::pw_aff_list pw_aff::list() const
15501 {
15502 return isl::multi_pw_aff(*this).list();
15503 }
15504
lt_set(isl::pw_aff pwaff2)15505 isl::set pw_aff::lt_set(isl::pw_aff pwaff2) const
15506 {
15507 auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
15508 return manage(res);
15509 }
15510
max(const isl::multi_pw_aff & multi2)15511 isl::multi_pw_aff pw_aff::max(const isl::multi_pw_aff &multi2) const
15512 {
15513 return isl::pw_multi_aff(*this).max(multi2);
15514 }
15515
max(isl::pw_aff pwaff2)15516 isl::pw_aff pw_aff::max(isl::pw_aff pwaff2) const
15517 {
15518 auto res = isl_pw_aff_max(copy(), pwaff2.release());
15519 return manage(res);
15520 }
15521
max(const isl::aff & pwaff2)15522 isl::pw_aff pw_aff::max(const isl::aff &pwaff2) const
15523 {
15524 return this->max(isl::pw_aff(pwaff2));
15525 }
15526
max_multi_val()15527 isl::multi_val pw_aff::max_multi_val() const
15528 {
15529 return isl::pw_multi_aff(*this).max_multi_val();
15530 }
15531
min(const isl::multi_pw_aff & multi2)15532 isl::multi_pw_aff pw_aff::min(const isl::multi_pw_aff &multi2) const
15533 {
15534 return isl::pw_multi_aff(*this).min(multi2);
15535 }
15536
min(isl::pw_aff pwaff2)15537 isl::pw_aff pw_aff::min(isl::pw_aff pwaff2) const
15538 {
15539 auto res = isl_pw_aff_min(copy(), pwaff2.release());
15540 return manage(res);
15541 }
15542
min(const isl::aff & pwaff2)15543 isl::pw_aff pw_aff::min(const isl::aff &pwaff2) const
15544 {
15545 return this->min(isl::pw_aff(pwaff2));
15546 }
15547
min_multi_val()15548 isl::multi_val pw_aff::min_multi_val() const
15549 {
15550 return isl::pw_multi_aff(*this).min_multi_val();
15551 }
15552
mod(isl::val mod)15553 isl::pw_aff pw_aff::mod(isl::val mod) const
15554 {
15555 auto res = isl_pw_aff_mod_val(copy(), mod.release());
15556 return manage(res);
15557 }
15558
mod(long mod)15559 isl::pw_aff pw_aff::mod(long mod) const
15560 {
15561 return this->mod(isl::val(ctx(), mod));
15562 }
15563
mul(isl::pw_aff pwaff2)15564 isl::pw_aff pw_aff::mul(isl::pw_aff pwaff2) const
15565 {
15566 auto res = isl_pw_aff_mul(copy(), pwaff2.release());
15567 return manage(res);
15568 }
15569
n_piece()15570 class size pw_aff::n_piece() const
15571 {
15572 return isl::pw_multi_aff(*this).n_piece();
15573 }
15574
ne_set(isl::pw_aff pwaff2)15575 isl::set pw_aff::ne_set(isl::pw_aff pwaff2) const
15576 {
15577 auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
15578 return manage(res);
15579 }
15580
neg()15581 isl::pw_aff pw_aff::neg() const
15582 {
15583 auto res = isl_pw_aff_neg(copy());
15584 return manage(res);
15585 }
15586
param_on_domain(isl::set domain,isl::id id)15587 isl::pw_aff pw_aff::param_on_domain(isl::set domain, isl::id id)
15588 {
15589 auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
15590 return manage(res);
15591 }
15592
plain_is_empty()15593 boolean pw_aff::plain_is_empty() const
15594 {
15595 return isl::union_pw_aff(*this).plain_is_empty();
15596 }
15597
plain_is_equal(const isl::multi_pw_aff & multi2)15598 boolean pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
15599 {
15600 return isl::pw_multi_aff(*this).plain_is_equal(multi2);
15601 }
15602
plain_is_equal(const isl::multi_union_pw_aff & multi2)15603 boolean pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
15604 {
15605 return isl::union_pw_aff(*this).plain_is_equal(multi2);
15606 }
15607
preimage_domain_wrapped_domain(const isl::pw_multi_aff & pma2)15608 isl::pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
15609 {
15610 return isl::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
15611 }
15612
preimage_domain_wrapped_domain(const isl::union_pw_multi_aff & upma2)15613 isl::union_pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
15614 {
15615 return isl::union_pw_aff(*this).preimage_domain_wrapped_domain(upma2);
15616 }
15617
product(const isl::multi_pw_aff & multi2)15618 isl::multi_pw_aff pw_aff::product(const isl::multi_pw_aff &multi2) const
15619 {
15620 return isl::pw_multi_aff(*this).product(multi2);
15621 }
15622
product(const isl::pw_multi_aff & pma2)15623 isl::pw_multi_aff pw_aff::product(const isl::pw_multi_aff &pma2) const
15624 {
15625 return isl::pw_multi_aff(*this).product(pma2);
15626 }
15627
pullback(isl::multi_aff ma)15628 isl::pw_aff pw_aff::pullback(isl::multi_aff ma) const
15629 {
15630 auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
15631 return manage(res);
15632 }
15633
pullback(isl::multi_pw_aff mpa)15634 isl::pw_aff pw_aff::pullback(isl::multi_pw_aff mpa) const
15635 {
15636 auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
15637 return manage(res);
15638 }
15639
pullback(isl::pw_multi_aff pma)15640 isl::pw_aff pw_aff::pullback(isl::pw_multi_aff pma) const
15641 {
15642 auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
15643 return manage(res);
15644 }
15645
pullback(const isl::union_pw_multi_aff & upma)15646 isl::union_pw_aff pw_aff::pullback(const isl::union_pw_multi_aff &upma) const
15647 {
15648 return isl::union_pw_aff(*this).pullback(upma);
15649 }
15650
pw_multi_aff_list()15651 isl::pw_multi_aff_list pw_aff::pw_multi_aff_list() const
15652 {
15653 return isl::union_pw_aff(*this).pw_multi_aff_list();
15654 }
15655
range_factor_domain()15656 isl::pw_multi_aff pw_aff::range_factor_domain() const
15657 {
15658 return isl::pw_multi_aff(*this).range_factor_domain();
15659 }
15660
range_factor_range()15661 isl::pw_multi_aff pw_aff::range_factor_range() const
15662 {
15663 return isl::pw_multi_aff(*this).range_factor_range();
15664 }
15665
range_product(const isl::multi_pw_aff & multi2)15666 isl::multi_pw_aff pw_aff::range_product(const isl::multi_pw_aff &multi2) const
15667 {
15668 return isl::pw_multi_aff(*this).range_product(multi2);
15669 }
15670
range_product(const isl::multi_union_pw_aff & multi2)15671 isl::multi_union_pw_aff pw_aff::range_product(const isl::multi_union_pw_aff &multi2) const
15672 {
15673 return isl::union_pw_aff(*this).range_product(multi2);
15674 }
15675
range_product(const isl::pw_multi_aff & pma2)15676 isl::pw_multi_aff pw_aff::range_product(const isl::pw_multi_aff &pma2) const
15677 {
15678 return isl::pw_multi_aff(*this).range_product(pma2);
15679 }
15680
range_product(const isl::union_pw_multi_aff & upma2)15681 isl::union_pw_multi_aff pw_aff::range_product(const isl::union_pw_multi_aff &upma2) const
15682 {
15683 return isl::union_pw_aff(*this).range_product(upma2);
15684 }
15685
range_tuple_id()15686 isl::id pw_aff::range_tuple_id() const
15687 {
15688 return isl::pw_multi_aff(*this).range_tuple_id();
15689 }
15690
reset_range_tuple_id()15691 isl::multi_pw_aff pw_aff::reset_range_tuple_id() const
15692 {
15693 return isl::multi_pw_aff(*this).reset_range_tuple_id();
15694 }
15695
reset_tuple_id(isl::dim type)15696 isl::multi_pw_aff pw_aff::reset_tuple_id(isl::dim type) const
15697 {
15698 return isl::multi_pw_aff(*this).reset_tuple_id(type);
15699 }
15700
scale(const isl::multi_val & mv)15701 isl::multi_pw_aff pw_aff::scale(const isl::multi_val &mv) const
15702 {
15703 return isl::multi_pw_aff(*this).scale(mv);
15704 }
15705
scale(isl::val v)15706 isl::pw_aff pw_aff::scale(isl::val v) const
15707 {
15708 auto res = isl_pw_aff_scale_val(copy(), v.release());
15709 return manage(res);
15710 }
15711
scale(long v)15712 isl::pw_aff pw_aff::scale(long v) const
15713 {
15714 return this->scale(isl::val(ctx(), v));
15715 }
15716
scale_down(const isl::multi_val & mv)15717 isl::multi_pw_aff pw_aff::scale_down(const isl::multi_val &mv) const
15718 {
15719 return isl::multi_pw_aff(*this).scale_down(mv);
15720 }
15721
scale_down(isl::val f)15722 isl::pw_aff pw_aff::scale_down(isl::val f) const
15723 {
15724 auto res = isl_pw_aff_scale_down_val(copy(), f.release());
15725 return manage(res);
15726 }
15727
scale_down(long f)15728 isl::pw_aff pw_aff::scale_down(long f) const
15729 {
15730 return this->scale_down(isl::val(ctx(), f));
15731 }
15732
set_at(int pos,const isl::pw_aff & el)15733 isl::multi_pw_aff pw_aff::set_at(int pos, const isl::pw_aff &el) const
15734 {
15735 return isl::pw_multi_aff(*this).set_at(pos, el);
15736 }
15737
set_at(int pos,const isl::union_pw_aff & el)15738 isl::multi_union_pw_aff pw_aff::set_at(int pos, const isl::union_pw_aff &el) const
15739 {
15740 return isl::union_pw_aff(*this).set_at(pos, el);
15741 }
15742
set_pw_aff(int pos,const isl::pw_aff & el)15743 isl::multi_pw_aff pw_aff::set_pw_aff(int pos, const isl::pw_aff &el) const
15744 {
15745 return isl::pw_multi_aff(*this).set_pw_aff(pos, el);
15746 }
15747
set_pw_aff(unsigned int pos,const isl::pw_aff & pa)15748 isl::pw_multi_aff pw_aff::set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const
15749 {
15750 return isl::pw_multi_aff(*this).set_pw_aff(pos, pa);
15751 }
15752
set_range_tuple(const isl::id & id)15753 isl::pw_multi_aff pw_aff::set_range_tuple(const isl::id &id) const
15754 {
15755 return isl::pw_multi_aff(*this).set_range_tuple(id);
15756 }
15757
set_range_tuple(const std::string & id)15758 isl::pw_multi_aff pw_aff::set_range_tuple(const std::string &id) const
15759 {
15760 return this->set_range_tuple(isl::id(ctx(), id));
15761 }
15762
set_tuple_id(isl::dim type,isl::id id)15763 isl::pw_aff pw_aff::set_tuple_id(isl::dim type, isl::id id) const
15764 {
15765 auto res = isl_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
15766 return manage(res);
15767 }
15768
set_tuple_id(isl::dim type,const std::string & id)15769 isl::pw_aff pw_aff::set_tuple_id(isl::dim type, const std::string &id) const
15770 {
15771 return this->set_tuple_id(type, isl::id(ctx(), id));
15772 }
15773
set_union_pw_aff(int pos,const isl::union_pw_aff & el)15774 isl::multi_union_pw_aff pw_aff::set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
15775 {
15776 return isl::union_pw_aff(*this).set_union_pw_aff(pos, el);
15777 }
15778
size()15779 class size pw_aff::size() const
15780 {
15781 return isl::multi_pw_aff(*this).size();
15782 }
15783
space()15784 isl::space pw_aff::space() const
15785 {
15786 auto res = isl_pw_aff_get_space(get());
15787 return manage(res);
15788 }
15789
get_space()15790 isl::space pw_aff::get_space() const
15791 {
15792 return space();
15793 }
15794
sub(const isl::multi_pw_aff & multi2)15795 isl::multi_pw_aff pw_aff::sub(const isl::multi_pw_aff &multi2) const
15796 {
15797 return isl::pw_multi_aff(*this).sub(multi2);
15798 }
15799
sub(const isl::multi_union_pw_aff & multi2)15800 isl::multi_union_pw_aff pw_aff::sub(const isl::multi_union_pw_aff &multi2) const
15801 {
15802 return isl::union_pw_aff(*this).sub(multi2);
15803 }
15804
sub(isl::pw_aff pwaff2)15805 isl::pw_aff pw_aff::sub(isl::pw_aff pwaff2) const
15806 {
15807 auto res = isl_pw_aff_sub(copy(), pwaff2.release());
15808 return manage(res);
15809 }
15810
sub(const isl::pw_multi_aff & pma2)15811 isl::pw_multi_aff pw_aff::sub(const isl::pw_multi_aff &pma2) const
15812 {
15813 return isl::pw_multi_aff(*this).sub(pma2);
15814 }
15815
sub(const isl::union_pw_aff & upa2)15816 isl::union_pw_aff pw_aff::sub(const isl::union_pw_aff &upa2) const
15817 {
15818 return isl::union_pw_aff(*this).sub(upa2);
15819 }
15820
sub(const isl::union_pw_multi_aff & upma2)15821 isl::union_pw_multi_aff pw_aff::sub(const isl::union_pw_multi_aff &upma2) const
15822 {
15823 return isl::union_pw_aff(*this).sub(upma2);
15824 }
15825
sub(const isl::aff & pwaff2)15826 isl::pw_aff pw_aff::sub(const isl::aff &pwaff2) const
15827 {
15828 return this->sub(isl::pw_aff(pwaff2));
15829 }
15830
subtract_domain(isl::set set)15831 isl::pw_aff pw_aff::subtract_domain(isl::set set) const
15832 {
15833 auto res = isl_pw_aff_subtract_domain(copy(), set.release());
15834 return manage(res);
15835 }
15836
subtract_domain(const isl::space & space)15837 isl::union_pw_aff pw_aff::subtract_domain(const isl::space &space) const
15838 {
15839 return isl::union_pw_aff(*this).subtract_domain(space);
15840 }
15841
subtract_domain(const isl::union_set & uset)15842 isl::union_pw_aff pw_aff::subtract_domain(const isl::union_set &uset) const
15843 {
15844 return isl::union_pw_aff(*this).subtract_domain(uset);
15845 }
15846
subtract_domain(const isl::basic_set & set)15847 isl::pw_aff pw_aff::subtract_domain(const isl::basic_set &set) const
15848 {
15849 return this->subtract_domain(isl::set(set));
15850 }
15851
subtract_domain(const isl::point & set)15852 isl::pw_aff pw_aff::subtract_domain(const isl::point &set) const
15853 {
15854 return this->subtract_domain(isl::set(set));
15855 }
15856
tdiv_q(isl::pw_aff pa2)15857 isl::pw_aff pw_aff::tdiv_q(isl::pw_aff pa2) const
15858 {
15859 auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
15860 return manage(res);
15861 }
15862
tdiv_r(isl::pw_aff pa2)15863 isl::pw_aff pw_aff::tdiv_r(isl::pw_aff pa2) const
15864 {
15865 auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
15866 return manage(res);
15867 }
15868
to_list()15869 isl::pw_aff_list pw_aff::to_list() const
15870 {
15871 auto res = isl_pw_aff_to_list(copy());
15872 return manage(res);
15873 }
15874
to_multi_pw_aff()15875 isl::multi_pw_aff pw_aff::to_multi_pw_aff() const
15876 {
15877 return isl::pw_multi_aff(*this).to_multi_pw_aff();
15878 }
15879
to_union_pw_aff()15880 isl::union_pw_aff pw_aff::to_union_pw_aff() const
15881 {
15882 auto res = isl_pw_aff_to_union_pw_aff(copy());
15883 return manage(res);
15884 }
15885
to_union_pw_multi_aff()15886 isl::union_pw_multi_aff pw_aff::to_union_pw_multi_aff() const
15887 {
15888 return isl::pw_multi_aff(*this).to_union_pw_multi_aff();
15889 }
15890
tuple_id(isl::dim type)15891 isl::id pw_aff::tuple_id(isl::dim type) const
15892 {
15893 auto res = isl_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
15894 return manage(res);
15895 }
15896
get_tuple_id(isl::dim type)15897 isl::id pw_aff::get_tuple_id(isl::dim type) const
15898 {
15899 return tuple_id(type);
15900 }
15901
unbind_params_insert_domain(const isl::multi_id & domain)15902 isl::multi_pw_aff pw_aff::unbind_params_insert_domain(const isl::multi_id &domain) const
15903 {
15904 return isl::pw_multi_aff(*this).unbind_params_insert_domain(domain);
15905 }
15906
union_add(const isl::multi_pw_aff & mpa2)15907 isl::multi_pw_aff pw_aff::union_add(const isl::multi_pw_aff &mpa2) const
15908 {
15909 return isl::pw_multi_aff(*this).union_add(mpa2);
15910 }
15911
union_add(const isl::multi_union_pw_aff & mupa2)15912 isl::multi_union_pw_aff pw_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
15913 {
15914 return isl::union_pw_aff(*this).union_add(mupa2);
15915 }
15916
union_add(isl::pw_aff pwaff2)15917 isl::pw_aff pw_aff::union_add(isl::pw_aff pwaff2) const
15918 {
15919 auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
15920 return manage(res);
15921 }
15922
union_add(const isl::pw_multi_aff & pma2)15923 isl::pw_multi_aff pw_aff::union_add(const isl::pw_multi_aff &pma2) const
15924 {
15925 return isl::pw_multi_aff(*this).union_add(pma2);
15926 }
15927
union_add(const isl::union_pw_aff & upa2)15928 isl::union_pw_aff pw_aff::union_add(const isl::union_pw_aff &upa2) const
15929 {
15930 return isl::union_pw_aff(*this).union_add(upa2);
15931 }
15932
union_add(const isl::union_pw_multi_aff & upma2)15933 isl::union_pw_multi_aff pw_aff::union_add(const isl::union_pw_multi_aff &upma2) const
15934 {
15935 return isl::union_pw_aff(*this).union_add(upma2);
15936 }
15937
union_add(const isl::aff & pwaff2)15938 isl::pw_aff pw_aff::union_add(const isl::aff &pwaff2) const
15939 {
15940 return this->union_add(isl::pw_aff(pwaff2));
15941 }
15942
var_on_domain(isl::local_space ls,isl::dim type,unsigned int pos)15943 isl::pw_aff pw_aff::var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos)
15944 {
15945 auto res = isl_pw_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
15946 return manage(res);
15947 }
15948
15949 inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
15950 {
15951 char *str = isl_pw_aff_to_str(obj.get());
15952 if (!str) {
15953 os.setstate(std::ios_base::badbit);
15954 return os;
15955 }
15956 os << str;
15957 free(str);
15958 return os;
15959 }
15960
15961 // implementations for isl::pw_aff_list
manage(__isl_take isl_pw_aff_list * ptr)15962 pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
15963 return pw_aff_list(ptr);
15964 }
manage_copy(__isl_keep isl_pw_aff_list * ptr)15965 pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
15966 ptr = isl_pw_aff_list_copy(ptr);
15967 return pw_aff_list(ptr);
15968 }
15969
pw_aff_list()15970 pw_aff_list::pw_aff_list()
15971 : ptr(nullptr) {}
15972
pw_aff_list(const pw_aff_list & obj)15973 pw_aff_list::pw_aff_list(const pw_aff_list &obj)
15974 : ptr(nullptr)
15975 {
15976 ptr = obj.copy();
15977 }
15978
pw_aff_list(__isl_take isl_pw_aff_list * ptr)15979 pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
15980 : ptr(ptr) {}
15981
pw_aff_list(isl::ctx ctx,int n)15982 pw_aff_list::pw_aff_list(isl::ctx ctx, int n)
15983 {
15984 auto res = isl_pw_aff_list_alloc(ctx.release(), n);
15985 ptr = res;
15986 }
15987
pw_aff_list(isl::pw_aff el)15988 pw_aff_list::pw_aff_list(isl::pw_aff el)
15989 {
15990 auto res = isl_pw_aff_list_from_pw_aff(el.release());
15991 ptr = res;
15992 }
15993
pw_aff_list(isl::ctx ctx,const std::string & str)15994 pw_aff_list::pw_aff_list(isl::ctx ctx, const std::string &str)
15995 {
15996 auto res = isl_pw_aff_list_read_from_str(ctx.release(), str.c_str());
15997 ptr = res;
15998 }
15999
16000 pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
16001 std::swap(this->ptr, obj.ptr);
16002 return *this;
16003 }
16004
~pw_aff_list()16005 pw_aff_list::~pw_aff_list() {
16006 if (ptr)
16007 isl_pw_aff_list_free(ptr);
16008 }
16009
copy()16010 __isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
16011 return isl_pw_aff_list_copy(ptr);
16012 }
16013
get()16014 __isl_keep isl_pw_aff_list *pw_aff_list::get() const {
16015 return ptr;
16016 }
16017
release()16018 __isl_give isl_pw_aff_list *pw_aff_list::release() {
16019 isl_pw_aff_list *tmp = ptr;
16020 ptr = nullptr;
16021 return tmp;
16022 }
16023
is_null()16024 bool pw_aff_list::is_null() const {
16025 return ptr == nullptr;
16026 }
16027
ctx()16028 isl::ctx pw_aff_list::ctx() const {
16029 return isl::ctx(isl_pw_aff_list_get_ctx(ptr));
16030 }
16031
add(isl::pw_aff el)16032 isl::pw_aff_list pw_aff_list::add(isl::pw_aff el) const
16033 {
16034 auto res = isl_pw_aff_list_add(copy(), el.release());
16035 return manage(res);
16036 }
16037
at(int index)16038 isl::pw_aff pw_aff_list::at(int index) const
16039 {
16040 auto res = isl_pw_aff_list_get_at(get(), index);
16041 return manage(res);
16042 }
16043
get_at(int index)16044 isl::pw_aff pw_aff_list::get_at(int index) const
16045 {
16046 return at(index);
16047 }
16048
clear()16049 isl::pw_aff_list pw_aff_list::clear() const
16050 {
16051 auto res = isl_pw_aff_list_clear(copy());
16052 return manage(res);
16053 }
16054
concat(isl::pw_aff_list list2)16055 isl::pw_aff_list pw_aff_list::concat(isl::pw_aff_list list2) const
16056 {
16057 auto res = isl_pw_aff_list_concat(copy(), list2.release());
16058 return manage(res);
16059 }
16060
drop(unsigned int first,unsigned int n)16061 isl::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
16062 {
16063 auto res = isl_pw_aff_list_drop(copy(), first, n);
16064 return manage(res);
16065 }
16066
foreach(const std::function<stat (isl::pw_aff)> & fn)16067 stat pw_aff_list::foreach(const std::function<stat(isl::pw_aff)> &fn) const
16068 {
16069 struct fn_data {
16070 std::function<stat(isl::pw_aff)> func;
16071 } fn_data = { fn };
16072 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
16073 auto *data = static_cast<struct fn_data *>(arg_1);
16074 auto ret = (data->func)(manage(arg_0));
16075 return ret.release();
16076 };
16077 auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
16078 return manage(res);
16079 }
16080
insert(unsigned int pos,isl::pw_aff el)16081 isl::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::pw_aff el) const
16082 {
16083 auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
16084 return manage(res);
16085 }
16086
size()16087 class size pw_aff_list::size() const
16088 {
16089 auto res = isl_pw_aff_list_size(get());
16090 return manage(res);
16091 }
16092
16093 inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
16094 {
16095 char *str = isl_pw_aff_list_to_str(obj.get());
16096 if (!str) {
16097 os.setstate(std::ios_base::badbit);
16098 return os;
16099 }
16100 os << str;
16101 free(str);
16102 return os;
16103 }
16104
16105 // implementations for isl::pw_multi_aff
manage(__isl_take isl_pw_multi_aff * ptr)16106 pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
16107 return pw_multi_aff(ptr);
16108 }
manage_copy(__isl_keep isl_pw_multi_aff * ptr)16109 pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
16110 ptr = isl_pw_multi_aff_copy(ptr);
16111 return pw_multi_aff(ptr);
16112 }
16113
pw_multi_aff()16114 pw_multi_aff::pw_multi_aff()
16115 : ptr(nullptr) {}
16116
pw_multi_aff(const pw_multi_aff & obj)16117 pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
16118 : ptr(nullptr)
16119 {
16120 ptr = obj.copy();
16121 }
16122
pw_multi_aff(__isl_take isl_pw_multi_aff * ptr)16123 pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
16124 : ptr(ptr) {}
16125
pw_multi_aff(isl::multi_aff ma)16126 pw_multi_aff::pw_multi_aff(isl::multi_aff ma)
16127 {
16128 auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
16129 ptr = res;
16130 }
16131
pw_multi_aff(isl::pw_aff pa)16132 pw_multi_aff::pw_multi_aff(isl::pw_aff pa)
16133 {
16134 auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
16135 ptr = res;
16136 }
16137
pw_multi_aff(isl::ctx ctx,const std::string & str)16138 pw_multi_aff::pw_multi_aff(isl::ctx ctx, const std::string &str)
16139 {
16140 auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
16141 ptr = res;
16142 }
16143
16144 pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
16145 std::swap(this->ptr, obj.ptr);
16146 return *this;
16147 }
16148
~pw_multi_aff()16149 pw_multi_aff::~pw_multi_aff() {
16150 if (ptr)
16151 isl_pw_multi_aff_free(ptr);
16152 }
16153
copy()16154 __isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
16155 return isl_pw_multi_aff_copy(ptr);
16156 }
16157
get()16158 __isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
16159 return ptr;
16160 }
16161
release()16162 __isl_give isl_pw_multi_aff *pw_multi_aff::release() {
16163 isl_pw_multi_aff *tmp = ptr;
16164 ptr = nullptr;
16165 return tmp;
16166 }
16167
is_null()16168 bool pw_multi_aff::is_null() const {
16169 return ptr == nullptr;
16170 }
16171
ctx()16172 isl::ctx pw_multi_aff::ctx() const {
16173 return isl::ctx(isl_pw_multi_aff_get_ctx(ptr));
16174 }
16175
add(const isl::multi_pw_aff & multi2)16176 isl::multi_pw_aff pw_multi_aff::add(const isl::multi_pw_aff &multi2) const
16177 {
16178 return isl::multi_pw_aff(*this).add(multi2);
16179 }
16180
add(const isl::multi_union_pw_aff & multi2)16181 isl::multi_union_pw_aff pw_multi_aff::add(const isl::multi_union_pw_aff &multi2) const
16182 {
16183 return isl::multi_pw_aff(*this).add(multi2);
16184 }
16185
add(isl::pw_multi_aff pma2)16186 isl::pw_multi_aff pw_multi_aff::add(isl::pw_multi_aff pma2) const
16187 {
16188 auto res = isl_pw_multi_aff_add(copy(), pma2.release());
16189 return manage(res);
16190 }
16191
add(const isl::union_pw_multi_aff & upma2)16192 isl::union_pw_multi_aff pw_multi_aff::add(const isl::union_pw_multi_aff &upma2) const
16193 {
16194 return isl::union_pw_multi_aff(*this).add(upma2);
16195 }
16196
add(const isl::multi_aff & pma2)16197 isl::pw_multi_aff pw_multi_aff::add(const isl::multi_aff &pma2) const
16198 {
16199 return this->add(isl::pw_multi_aff(pma2));
16200 }
16201
add(const isl::pw_aff & pma2)16202 isl::pw_multi_aff pw_multi_aff::add(const isl::pw_aff &pma2) const
16203 {
16204 return this->add(isl::pw_multi_aff(pma2));
16205 }
16206
add_constant(isl::multi_val mv)16207 isl::pw_multi_aff pw_multi_aff::add_constant(isl::multi_val mv) const
16208 {
16209 auto res = isl_pw_multi_aff_add_constant_multi_val(copy(), mv.release());
16210 return manage(res);
16211 }
16212
add_constant(isl::val v)16213 isl::pw_multi_aff pw_multi_aff::add_constant(isl::val v) const
16214 {
16215 auto res = isl_pw_multi_aff_add_constant_val(copy(), v.release());
16216 return manage(res);
16217 }
16218
add_constant(long v)16219 isl::pw_multi_aff pw_multi_aff::add_constant(long v) const
16220 {
16221 return this->add_constant(isl::val(ctx(), v));
16222 }
16223
add_pw_multi_aff(const isl::pw_multi_aff & pma)16224 isl::union_pw_multi_aff pw_multi_aff::add_pw_multi_aff(const isl::pw_multi_aff &pma) const
16225 {
16226 return isl::union_pw_multi_aff(*this).add_pw_multi_aff(pma);
16227 }
16228
apply(const isl::union_pw_multi_aff & upma2)16229 isl::union_pw_multi_aff pw_multi_aff::apply(const isl::union_pw_multi_aff &upma2) const
16230 {
16231 return isl::union_pw_multi_aff(*this).apply(upma2);
16232 }
16233
as_map()16234 isl::map pw_multi_aff::as_map() const
16235 {
16236 auto res = isl_pw_multi_aff_as_map(copy());
16237 return manage(res);
16238 }
16239
as_multi_aff()16240 isl::multi_aff pw_multi_aff::as_multi_aff() const
16241 {
16242 auto res = isl_pw_multi_aff_as_multi_aff(copy());
16243 return manage(res);
16244 }
16245
as_multi_union_pw_aff()16246 isl::multi_union_pw_aff pw_multi_aff::as_multi_union_pw_aff() const
16247 {
16248 return isl::union_pw_multi_aff(*this).as_multi_union_pw_aff();
16249 }
16250
as_pw_multi_aff()16251 isl::pw_multi_aff pw_multi_aff::as_pw_multi_aff() const
16252 {
16253 return isl::union_pw_multi_aff(*this).as_pw_multi_aff();
16254 }
16255
as_set()16256 isl::set pw_multi_aff::as_set() const
16257 {
16258 auto res = isl_pw_multi_aff_as_set(copy());
16259 return manage(res);
16260 }
16261
as_union_map()16262 isl::union_map pw_multi_aff::as_union_map() const
16263 {
16264 return isl::union_pw_multi_aff(*this).as_union_map();
16265 }
16266
at(int pos)16267 isl::pw_aff pw_multi_aff::at(int pos) const
16268 {
16269 auto res = isl_pw_multi_aff_get_at(get(), pos);
16270 return manage(res);
16271 }
16272
get_at(int pos)16273 isl::pw_aff pw_multi_aff::get_at(int pos) const
16274 {
16275 return at(pos);
16276 }
16277
bind(const isl::multi_id & tuple)16278 isl::set pw_multi_aff::bind(const isl::multi_id &tuple) const
16279 {
16280 return isl::multi_pw_aff(*this).bind(tuple);
16281 }
16282
bind_domain(isl::multi_id tuple)16283 isl::pw_multi_aff pw_multi_aff::bind_domain(isl::multi_id tuple) const
16284 {
16285 auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
16286 return manage(res);
16287 }
16288
bind_domain_wrapped_domain(isl::multi_id tuple)16289 isl::pw_multi_aff pw_multi_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
16290 {
16291 auto res = isl_pw_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
16292 return manage(res);
16293 }
16294
coalesce()16295 isl::pw_multi_aff pw_multi_aff::coalesce() const
16296 {
16297 auto res = isl_pw_multi_aff_coalesce(copy());
16298 return manage(res);
16299 }
16300
dim(isl::dim type)16301 class size pw_multi_aff::dim(isl::dim type) const
16302 {
16303 auto res = isl_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
16304 return manage(res);
16305 }
16306
domain()16307 isl::set pw_multi_aff::domain() const
16308 {
16309 auto res = isl_pw_multi_aff_domain(copy());
16310 return manage(res);
16311 }
16312
domain_map(isl::space space)16313 isl::pw_multi_aff pw_multi_aff::domain_map(isl::space space)
16314 {
16315 auto res = isl_pw_multi_aff_domain_map(space.release());
16316 return manage(res);
16317 }
16318
drop_dims(isl::dim type,unsigned int first,unsigned int n)16319 isl::pw_multi_aff pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
16320 {
16321 auto res = isl_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
16322 return manage(res);
16323 }
16324
extract_pw_multi_aff(const isl::space & space)16325 isl::pw_multi_aff pw_multi_aff::extract_pw_multi_aff(const isl::space &space) const
16326 {
16327 return isl::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
16328 }
16329
flat_range_product(const isl::multi_pw_aff & multi2)16330 isl::multi_pw_aff pw_multi_aff::flat_range_product(const isl::multi_pw_aff &multi2) const
16331 {
16332 return isl::multi_pw_aff(*this).flat_range_product(multi2);
16333 }
16334
flat_range_product(const isl::multi_union_pw_aff & multi2)16335 isl::multi_union_pw_aff pw_multi_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
16336 {
16337 return isl::multi_pw_aff(*this).flat_range_product(multi2);
16338 }
16339
flat_range_product(isl::pw_multi_aff pma2)16340 isl::pw_multi_aff pw_multi_aff::flat_range_product(isl::pw_multi_aff pma2) const
16341 {
16342 auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
16343 return manage(res);
16344 }
16345
flat_range_product(const isl::union_pw_multi_aff & upma2)16346 isl::union_pw_multi_aff pw_multi_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
16347 {
16348 return isl::union_pw_multi_aff(*this).flat_range_product(upma2);
16349 }
16350
flat_range_product(const isl::multi_aff & pma2)16351 isl::pw_multi_aff pw_multi_aff::flat_range_product(const isl::multi_aff &pma2) const
16352 {
16353 return this->flat_range_product(isl::pw_multi_aff(pma2));
16354 }
16355
flat_range_product(const isl::pw_aff & pma2)16356 isl::pw_multi_aff pw_multi_aff::flat_range_product(const isl::pw_aff &pma2) const
16357 {
16358 return this->flat_range_product(isl::pw_multi_aff(pma2));
16359 }
16360
foreach_piece(const std::function<stat (isl::set,isl::multi_aff)> & fn)16361 stat pw_multi_aff::foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const
16362 {
16363 struct fn_data {
16364 std::function<stat(isl::set, isl::multi_aff)> func;
16365 } fn_data = { fn };
16366 auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
16367 auto *data = static_cast<struct fn_data *>(arg_2);
16368 auto ret = (data->func)(manage(arg_0), manage(arg_1));
16369 return ret.release();
16370 };
16371 auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
16372 return manage(res);
16373 }
16374
from_map(isl::map map)16375 isl::pw_multi_aff pw_multi_aff::from_map(isl::map map)
16376 {
16377 auto res = isl_pw_multi_aff_from_map(map.release());
16378 return manage(res);
16379 }
16380
gist(isl::set set)16381 isl::pw_multi_aff pw_multi_aff::gist(isl::set set) const
16382 {
16383 auto res = isl_pw_multi_aff_gist(copy(), set.release());
16384 return manage(res);
16385 }
16386
gist(const isl::union_set & context)16387 isl::union_pw_multi_aff pw_multi_aff::gist(const isl::union_set &context) const
16388 {
16389 return isl::union_pw_multi_aff(*this).gist(context);
16390 }
16391
gist(const isl::basic_set & set)16392 isl::pw_multi_aff pw_multi_aff::gist(const isl::basic_set &set) const
16393 {
16394 return this->gist(isl::set(set));
16395 }
16396
gist(const isl::point & set)16397 isl::pw_multi_aff pw_multi_aff::gist(const isl::point &set) const
16398 {
16399 return this->gist(isl::set(set));
16400 }
16401
has_range_tuple_id()16402 boolean pw_multi_aff::has_range_tuple_id() const
16403 {
16404 auto res = isl_pw_multi_aff_has_range_tuple_id(get());
16405 return manage(res);
16406 }
16407
identity()16408 isl::multi_pw_aff pw_multi_aff::identity() const
16409 {
16410 return isl::multi_pw_aff(*this).identity();
16411 }
16412
identity_on_domain(isl::space space)16413 isl::pw_multi_aff pw_multi_aff::identity_on_domain(isl::space space)
16414 {
16415 auto res = isl_pw_multi_aff_identity_on_domain_space(space.release());
16416 return manage(res);
16417 }
16418
insert_domain(isl::space domain)16419 isl::pw_multi_aff pw_multi_aff::insert_domain(isl::space domain) const
16420 {
16421 auto res = isl_pw_multi_aff_insert_domain(copy(), domain.release());
16422 return manage(res);
16423 }
16424
intersect_domain(isl::set set)16425 isl::pw_multi_aff pw_multi_aff::intersect_domain(isl::set set) const
16426 {
16427 auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
16428 return manage(res);
16429 }
16430
intersect_domain(const isl::space & space)16431 isl::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::space &space) const
16432 {
16433 return isl::union_pw_multi_aff(*this).intersect_domain(space);
16434 }
16435
intersect_domain(const isl::union_set & uset)16436 isl::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::union_set &uset) const
16437 {
16438 return isl::union_pw_multi_aff(*this).intersect_domain(uset);
16439 }
16440
intersect_domain(const isl::basic_set & set)16441 isl::pw_multi_aff pw_multi_aff::intersect_domain(const isl::basic_set &set) const
16442 {
16443 return this->intersect_domain(isl::set(set));
16444 }
16445
intersect_domain(const isl::point & set)16446 isl::pw_multi_aff pw_multi_aff::intersect_domain(const isl::point &set) const
16447 {
16448 return this->intersect_domain(isl::set(set));
16449 }
16450
intersect_domain_wrapped_domain(const isl::union_set & uset)16451 isl::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_domain(const isl::union_set &uset) const
16452 {
16453 return isl::union_pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
16454 }
16455
intersect_domain_wrapped_range(const isl::union_set & uset)16456 isl::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_range(const isl::union_set &uset) const
16457 {
16458 return isl::union_pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
16459 }
16460
intersect_params(isl::set set)16461 isl::pw_multi_aff pw_multi_aff::intersect_params(isl::set set) const
16462 {
16463 auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
16464 return manage(res);
16465 }
16466
involves_locals()16467 boolean pw_multi_aff::involves_locals() const
16468 {
16469 auto res = isl_pw_multi_aff_involves_locals(get());
16470 return manage(res);
16471 }
16472
involves_nan()16473 boolean pw_multi_aff::involves_nan() const
16474 {
16475 return isl::multi_pw_aff(*this).involves_nan();
16476 }
16477
involves_param(const isl::id & id)16478 boolean pw_multi_aff::involves_param(const isl::id &id) const
16479 {
16480 return isl::multi_pw_aff(*this).involves_param(id);
16481 }
16482
involves_param(const std::string & id)16483 boolean pw_multi_aff::involves_param(const std::string &id) const
16484 {
16485 return this->involves_param(isl::id(ctx(), id));
16486 }
16487
involves_param(const isl::id_list & list)16488 boolean pw_multi_aff::involves_param(const isl::id_list &list) const
16489 {
16490 return isl::multi_pw_aff(*this).involves_param(list);
16491 }
16492
isa_multi_aff()16493 boolean pw_multi_aff::isa_multi_aff() const
16494 {
16495 auto res = isl_pw_multi_aff_isa_multi_aff(get());
16496 return manage(res);
16497 }
16498
isa_pw_multi_aff()16499 boolean pw_multi_aff::isa_pw_multi_aff() const
16500 {
16501 return isl::union_pw_multi_aff(*this).isa_pw_multi_aff();
16502 }
16503
list()16504 isl::pw_aff_list pw_multi_aff::list() const
16505 {
16506 return isl::multi_pw_aff(*this).list();
16507 }
16508
max(const isl::multi_pw_aff & multi2)16509 isl::multi_pw_aff pw_multi_aff::max(const isl::multi_pw_aff &multi2) const
16510 {
16511 return isl::multi_pw_aff(*this).max(multi2);
16512 }
16513
max_multi_val()16514 isl::multi_val pw_multi_aff::max_multi_val() const
16515 {
16516 auto res = isl_pw_multi_aff_max_multi_val(copy());
16517 return manage(res);
16518 }
16519
min(const isl::multi_pw_aff & multi2)16520 isl::multi_pw_aff pw_multi_aff::min(const isl::multi_pw_aff &multi2) const
16521 {
16522 return isl::multi_pw_aff(*this).min(multi2);
16523 }
16524
min_multi_val()16525 isl::multi_val pw_multi_aff::min_multi_val() const
16526 {
16527 auto res = isl_pw_multi_aff_min_multi_val(copy());
16528 return manage(res);
16529 }
16530
multi_val_on_domain(isl::set domain,isl::multi_val mv)16531 isl::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::set domain, isl::multi_val mv)
16532 {
16533 auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
16534 return manage(res);
16535 }
16536
n_piece()16537 class size pw_multi_aff::n_piece() const
16538 {
16539 auto res = isl_pw_multi_aff_n_piece(get());
16540 return manage(res);
16541 }
16542
neg()16543 isl::multi_pw_aff pw_multi_aff::neg() const
16544 {
16545 return isl::multi_pw_aff(*this).neg();
16546 }
16547
plain_is_empty()16548 boolean pw_multi_aff::plain_is_empty() const
16549 {
16550 return isl::union_pw_multi_aff(*this).plain_is_empty();
16551 }
16552
plain_is_equal(const isl::multi_pw_aff & multi2)16553 boolean pw_multi_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
16554 {
16555 return isl::multi_pw_aff(*this).plain_is_equal(multi2);
16556 }
16557
plain_is_equal(const isl::multi_union_pw_aff & multi2)16558 boolean pw_multi_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
16559 {
16560 return isl::multi_pw_aff(*this).plain_is_equal(multi2);
16561 }
16562
preimage_domain_wrapped_domain(isl::pw_multi_aff pma2)16563 isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const
16564 {
16565 auto res = isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(copy(), pma2.release());
16566 return manage(res);
16567 }
16568
preimage_domain_wrapped_domain(const isl::union_pw_multi_aff & upma2)16569 isl::union_pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
16570 {
16571 return isl::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
16572 }
16573
preimage_domain_wrapped_domain(const isl::multi_aff & pma2)16574 isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::multi_aff &pma2) const
16575 {
16576 return this->preimage_domain_wrapped_domain(isl::pw_multi_aff(pma2));
16577 }
16578
preimage_domain_wrapped_domain(const isl::pw_aff & pma2)16579 isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::pw_aff &pma2) const
16580 {
16581 return this->preimage_domain_wrapped_domain(isl::pw_multi_aff(pma2));
16582 }
16583
product(const isl::multi_pw_aff & multi2)16584 isl::multi_pw_aff pw_multi_aff::product(const isl::multi_pw_aff &multi2) const
16585 {
16586 return isl::multi_pw_aff(*this).product(multi2);
16587 }
16588
product(isl::pw_multi_aff pma2)16589 isl::pw_multi_aff pw_multi_aff::product(isl::pw_multi_aff pma2) const
16590 {
16591 auto res = isl_pw_multi_aff_product(copy(), pma2.release());
16592 return manage(res);
16593 }
16594
product(const isl::multi_aff & pma2)16595 isl::pw_multi_aff pw_multi_aff::product(const isl::multi_aff &pma2) const
16596 {
16597 return this->product(isl::pw_multi_aff(pma2));
16598 }
16599
product(const isl::pw_aff & pma2)16600 isl::pw_multi_aff pw_multi_aff::product(const isl::pw_aff &pma2) const
16601 {
16602 return this->product(isl::pw_multi_aff(pma2));
16603 }
16604
project_out_map(isl::space space,isl::dim type,unsigned int first,unsigned int n)16605 isl::pw_multi_aff pw_multi_aff::project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n)
16606 {
16607 auto res = isl_pw_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
16608 return manage(res);
16609 }
16610
pullback(const isl::multi_pw_aff & mpa2)16611 isl::multi_pw_aff pw_multi_aff::pullback(const isl::multi_pw_aff &mpa2) const
16612 {
16613 return isl::multi_pw_aff(*this).pullback(mpa2);
16614 }
16615
pullback(isl::multi_aff ma)16616 isl::pw_multi_aff pw_multi_aff::pullback(isl::multi_aff ma) const
16617 {
16618 auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
16619 return manage(res);
16620 }
16621
pullback(isl::pw_multi_aff pma2)16622 isl::pw_multi_aff pw_multi_aff::pullback(isl::pw_multi_aff pma2) const
16623 {
16624 auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
16625 return manage(res);
16626 }
16627
pullback(const isl::union_pw_multi_aff & upma2)16628 isl::union_pw_multi_aff pw_multi_aff::pullback(const isl::union_pw_multi_aff &upma2) const
16629 {
16630 return isl::union_pw_multi_aff(*this).pullback(upma2);
16631 }
16632
pw_multi_aff_list()16633 isl::pw_multi_aff_list pw_multi_aff::pw_multi_aff_list() const
16634 {
16635 return isl::union_pw_multi_aff(*this).pw_multi_aff_list();
16636 }
16637
range_factor_domain()16638 isl::pw_multi_aff pw_multi_aff::range_factor_domain() const
16639 {
16640 auto res = isl_pw_multi_aff_range_factor_domain(copy());
16641 return manage(res);
16642 }
16643
range_factor_range()16644 isl::pw_multi_aff pw_multi_aff::range_factor_range() const
16645 {
16646 auto res = isl_pw_multi_aff_range_factor_range(copy());
16647 return manage(res);
16648 }
16649
range_map(isl::space space)16650 isl::pw_multi_aff pw_multi_aff::range_map(isl::space space)
16651 {
16652 auto res = isl_pw_multi_aff_range_map(space.release());
16653 return manage(res);
16654 }
16655
range_product(const isl::multi_pw_aff & multi2)16656 isl::multi_pw_aff pw_multi_aff::range_product(const isl::multi_pw_aff &multi2) const
16657 {
16658 return isl::multi_pw_aff(*this).range_product(multi2);
16659 }
16660
range_product(const isl::multi_union_pw_aff & multi2)16661 isl::multi_union_pw_aff pw_multi_aff::range_product(const isl::multi_union_pw_aff &multi2) const
16662 {
16663 return isl::multi_pw_aff(*this).range_product(multi2);
16664 }
16665
range_product(isl::pw_multi_aff pma2)16666 isl::pw_multi_aff pw_multi_aff::range_product(isl::pw_multi_aff pma2) const
16667 {
16668 auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
16669 return manage(res);
16670 }
16671
range_product(const isl::union_pw_multi_aff & upma2)16672 isl::union_pw_multi_aff pw_multi_aff::range_product(const isl::union_pw_multi_aff &upma2) const
16673 {
16674 return isl::union_pw_multi_aff(*this).range_product(upma2);
16675 }
16676
range_product(const isl::multi_aff & pma2)16677 isl::pw_multi_aff pw_multi_aff::range_product(const isl::multi_aff &pma2) const
16678 {
16679 return this->range_product(isl::pw_multi_aff(pma2));
16680 }
16681
range_product(const isl::pw_aff & pma2)16682 isl::pw_multi_aff pw_multi_aff::range_product(const isl::pw_aff &pma2) const
16683 {
16684 return this->range_product(isl::pw_multi_aff(pma2));
16685 }
16686
range_tuple_id()16687 isl::id pw_multi_aff::range_tuple_id() const
16688 {
16689 auto res = isl_pw_multi_aff_get_range_tuple_id(get());
16690 return manage(res);
16691 }
16692
get_range_tuple_id()16693 isl::id pw_multi_aff::get_range_tuple_id() const
16694 {
16695 return range_tuple_id();
16696 }
16697
reset_range_tuple_id()16698 isl::multi_pw_aff pw_multi_aff::reset_range_tuple_id() const
16699 {
16700 return isl::multi_pw_aff(*this).reset_range_tuple_id();
16701 }
16702
reset_tuple_id(isl::dim type)16703 isl::multi_pw_aff pw_multi_aff::reset_tuple_id(isl::dim type) const
16704 {
16705 return isl::multi_pw_aff(*this).reset_tuple_id(type);
16706 }
16707
scale(const isl::multi_val & mv)16708 isl::multi_pw_aff pw_multi_aff::scale(const isl::multi_val &mv) const
16709 {
16710 return isl::multi_pw_aff(*this).scale(mv);
16711 }
16712
scale(isl::val v)16713 isl::pw_multi_aff pw_multi_aff::scale(isl::val v) const
16714 {
16715 auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
16716 return manage(res);
16717 }
16718
scale(long v)16719 isl::pw_multi_aff pw_multi_aff::scale(long v) const
16720 {
16721 return this->scale(isl::val(ctx(), v));
16722 }
16723
scale_down(const isl::multi_val & mv)16724 isl::multi_pw_aff pw_multi_aff::scale_down(const isl::multi_val &mv) const
16725 {
16726 return isl::multi_pw_aff(*this).scale_down(mv);
16727 }
16728
scale_down(isl::val v)16729 isl::pw_multi_aff pw_multi_aff::scale_down(isl::val v) const
16730 {
16731 auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
16732 return manage(res);
16733 }
16734
scale_down(long v)16735 isl::pw_multi_aff pw_multi_aff::scale_down(long v) const
16736 {
16737 return this->scale_down(isl::val(ctx(), v));
16738 }
16739
set_at(int pos,const isl::pw_aff & el)16740 isl::multi_pw_aff pw_multi_aff::set_at(int pos, const isl::pw_aff &el) const
16741 {
16742 return isl::multi_pw_aff(*this).set_at(pos, el);
16743 }
16744
set_at(int pos,const isl::union_pw_aff & el)16745 isl::multi_union_pw_aff pw_multi_aff::set_at(int pos, const isl::union_pw_aff &el) const
16746 {
16747 return isl::multi_pw_aff(*this).set_at(pos, el);
16748 }
16749
set_pw_aff(int pos,const isl::pw_aff & el)16750 isl::multi_pw_aff pw_multi_aff::set_pw_aff(int pos, const isl::pw_aff &el) const
16751 {
16752 return isl::multi_pw_aff(*this).set_pw_aff(pos, el);
16753 }
16754
set_pw_aff(unsigned int pos,isl::pw_aff pa)16755 isl::pw_multi_aff pw_multi_aff::set_pw_aff(unsigned int pos, isl::pw_aff pa) const
16756 {
16757 auto res = isl_pw_multi_aff_set_pw_aff(copy(), pos, pa.release());
16758 return manage(res);
16759 }
16760
set_range_tuple(isl::id id)16761 isl::pw_multi_aff pw_multi_aff::set_range_tuple(isl::id id) const
16762 {
16763 auto res = isl_pw_multi_aff_set_range_tuple_id(copy(), id.release());
16764 return manage(res);
16765 }
16766
set_range_tuple(const std::string & id)16767 isl::pw_multi_aff pw_multi_aff::set_range_tuple(const std::string &id) const
16768 {
16769 return this->set_range_tuple(isl::id(ctx(), id));
16770 }
16771
set_union_pw_aff(int pos,const isl::union_pw_aff & el)16772 isl::multi_union_pw_aff pw_multi_aff::set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
16773 {
16774 return isl::multi_pw_aff(*this).set_union_pw_aff(pos, el);
16775 }
16776
size()16777 class size pw_multi_aff::size() const
16778 {
16779 return isl::multi_pw_aff(*this).size();
16780 }
16781
space()16782 isl::space pw_multi_aff::space() const
16783 {
16784 auto res = isl_pw_multi_aff_get_space(get());
16785 return manage(res);
16786 }
16787
get_space()16788 isl::space pw_multi_aff::get_space() const
16789 {
16790 return space();
16791 }
16792
sub(const isl::multi_pw_aff & multi2)16793 isl::multi_pw_aff pw_multi_aff::sub(const isl::multi_pw_aff &multi2) const
16794 {
16795 return isl::multi_pw_aff(*this).sub(multi2);
16796 }
16797
sub(const isl::multi_union_pw_aff & multi2)16798 isl::multi_union_pw_aff pw_multi_aff::sub(const isl::multi_union_pw_aff &multi2) const
16799 {
16800 return isl::multi_pw_aff(*this).sub(multi2);
16801 }
16802
sub(isl::pw_multi_aff pma2)16803 isl::pw_multi_aff pw_multi_aff::sub(isl::pw_multi_aff pma2) const
16804 {
16805 auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
16806 return manage(res);
16807 }
16808
sub(const isl::union_pw_multi_aff & upma2)16809 isl::union_pw_multi_aff pw_multi_aff::sub(const isl::union_pw_multi_aff &upma2) const
16810 {
16811 return isl::union_pw_multi_aff(*this).sub(upma2);
16812 }
16813
sub(const isl::multi_aff & pma2)16814 isl::pw_multi_aff pw_multi_aff::sub(const isl::multi_aff &pma2) const
16815 {
16816 return this->sub(isl::pw_multi_aff(pma2));
16817 }
16818
sub(const isl::pw_aff & pma2)16819 isl::pw_multi_aff pw_multi_aff::sub(const isl::pw_aff &pma2) const
16820 {
16821 return this->sub(isl::pw_multi_aff(pma2));
16822 }
16823
subtract_domain(isl::set set)16824 isl::pw_multi_aff pw_multi_aff::subtract_domain(isl::set set) const
16825 {
16826 auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
16827 return manage(res);
16828 }
16829
subtract_domain(const isl::space & space)16830 isl::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::space &space) const
16831 {
16832 return isl::union_pw_multi_aff(*this).subtract_domain(space);
16833 }
16834
subtract_domain(const isl::union_set & uset)16835 isl::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::union_set &uset) const
16836 {
16837 return isl::union_pw_multi_aff(*this).subtract_domain(uset);
16838 }
16839
subtract_domain(const isl::basic_set & set)16840 isl::pw_multi_aff pw_multi_aff::subtract_domain(const isl::basic_set &set) const
16841 {
16842 return this->subtract_domain(isl::set(set));
16843 }
16844
subtract_domain(const isl::point & set)16845 isl::pw_multi_aff pw_multi_aff::subtract_domain(const isl::point &set) const
16846 {
16847 return this->subtract_domain(isl::set(set));
16848 }
16849
to_list()16850 isl::pw_multi_aff_list pw_multi_aff::to_list() const
16851 {
16852 auto res = isl_pw_multi_aff_to_list(copy());
16853 return manage(res);
16854 }
16855
to_multi_pw_aff()16856 isl::multi_pw_aff pw_multi_aff::to_multi_pw_aff() const
16857 {
16858 auto res = isl_pw_multi_aff_to_multi_pw_aff(copy());
16859 return manage(res);
16860 }
16861
to_union_pw_multi_aff()16862 isl::union_pw_multi_aff pw_multi_aff::to_union_pw_multi_aff() const
16863 {
16864 auto res = isl_pw_multi_aff_to_union_pw_multi_aff(copy());
16865 return manage(res);
16866 }
16867
tuple_id(isl::dim type)16868 isl::id pw_multi_aff::tuple_id(isl::dim type) const
16869 {
16870 auto res = isl_pw_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
16871 return manage(res);
16872 }
16873
get_tuple_id(isl::dim type)16874 isl::id pw_multi_aff::get_tuple_id(isl::dim type) const
16875 {
16876 return tuple_id(type);
16877 }
16878
unbind_params_insert_domain(const isl::multi_id & domain)16879 isl::multi_pw_aff pw_multi_aff::unbind_params_insert_domain(const isl::multi_id &domain) const
16880 {
16881 return isl::multi_pw_aff(*this).unbind_params_insert_domain(domain);
16882 }
16883
union_add(const isl::multi_pw_aff & mpa2)16884 isl::multi_pw_aff pw_multi_aff::union_add(const isl::multi_pw_aff &mpa2) const
16885 {
16886 return isl::multi_pw_aff(*this).union_add(mpa2);
16887 }
16888
union_add(const isl::multi_union_pw_aff & mupa2)16889 isl::multi_union_pw_aff pw_multi_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
16890 {
16891 return isl::multi_pw_aff(*this).union_add(mupa2);
16892 }
16893
union_add(isl::pw_multi_aff pma2)16894 isl::pw_multi_aff pw_multi_aff::union_add(isl::pw_multi_aff pma2) const
16895 {
16896 auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
16897 return manage(res);
16898 }
16899
union_add(const isl::union_pw_multi_aff & upma2)16900 isl::union_pw_multi_aff pw_multi_aff::union_add(const isl::union_pw_multi_aff &upma2) const
16901 {
16902 return isl::union_pw_multi_aff(*this).union_add(upma2);
16903 }
16904
union_add(const isl::multi_aff & pma2)16905 isl::pw_multi_aff pw_multi_aff::union_add(const isl::multi_aff &pma2) const
16906 {
16907 return this->union_add(isl::pw_multi_aff(pma2));
16908 }
16909
union_add(const isl::pw_aff & pma2)16910 isl::pw_multi_aff pw_multi_aff::union_add(const isl::pw_aff &pma2) const
16911 {
16912 return this->union_add(isl::pw_multi_aff(pma2));
16913 }
16914
zero(isl::space space)16915 isl::pw_multi_aff pw_multi_aff::zero(isl::space space)
16916 {
16917 auto res = isl_pw_multi_aff_zero(space.release());
16918 return manage(res);
16919 }
16920
16921 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
16922 {
16923 char *str = isl_pw_multi_aff_to_str(obj.get());
16924 if (!str) {
16925 os.setstate(std::ios_base::badbit);
16926 return os;
16927 }
16928 os << str;
16929 free(str);
16930 return os;
16931 }
16932
16933 // implementations for isl::pw_multi_aff_list
manage(__isl_take isl_pw_multi_aff_list * ptr)16934 pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
16935 return pw_multi_aff_list(ptr);
16936 }
manage_copy(__isl_keep isl_pw_multi_aff_list * ptr)16937 pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
16938 ptr = isl_pw_multi_aff_list_copy(ptr);
16939 return pw_multi_aff_list(ptr);
16940 }
16941
pw_multi_aff_list()16942 pw_multi_aff_list::pw_multi_aff_list()
16943 : ptr(nullptr) {}
16944
pw_multi_aff_list(const pw_multi_aff_list & obj)16945 pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
16946 : ptr(nullptr)
16947 {
16948 ptr = obj.copy();
16949 }
16950
pw_multi_aff_list(__isl_take isl_pw_multi_aff_list * ptr)16951 pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
16952 : ptr(ptr) {}
16953
pw_multi_aff_list(isl::ctx ctx,int n)16954 pw_multi_aff_list::pw_multi_aff_list(isl::ctx ctx, int n)
16955 {
16956 auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
16957 ptr = res;
16958 }
16959
pw_multi_aff_list(isl::pw_multi_aff el)16960 pw_multi_aff_list::pw_multi_aff_list(isl::pw_multi_aff el)
16961 {
16962 auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
16963 ptr = res;
16964 }
16965
pw_multi_aff_list(isl::ctx ctx,const std::string & str)16966 pw_multi_aff_list::pw_multi_aff_list(isl::ctx ctx, const std::string &str)
16967 {
16968 auto res = isl_pw_multi_aff_list_read_from_str(ctx.release(), str.c_str());
16969 ptr = res;
16970 }
16971
16972 pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
16973 std::swap(this->ptr, obj.ptr);
16974 return *this;
16975 }
16976
~pw_multi_aff_list()16977 pw_multi_aff_list::~pw_multi_aff_list() {
16978 if (ptr)
16979 isl_pw_multi_aff_list_free(ptr);
16980 }
16981
copy()16982 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
16983 return isl_pw_multi_aff_list_copy(ptr);
16984 }
16985
get()16986 __isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
16987 return ptr;
16988 }
16989
release()16990 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
16991 isl_pw_multi_aff_list *tmp = ptr;
16992 ptr = nullptr;
16993 return tmp;
16994 }
16995
is_null()16996 bool pw_multi_aff_list::is_null() const {
16997 return ptr == nullptr;
16998 }
16999
ctx()17000 isl::ctx pw_multi_aff_list::ctx() const {
17001 return isl::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
17002 }
17003
add(isl::pw_multi_aff el)17004 isl::pw_multi_aff_list pw_multi_aff_list::add(isl::pw_multi_aff el) const
17005 {
17006 auto res = isl_pw_multi_aff_list_add(copy(), el.release());
17007 return manage(res);
17008 }
17009
at(int index)17010 isl::pw_multi_aff pw_multi_aff_list::at(int index) const
17011 {
17012 auto res = isl_pw_multi_aff_list_get_at(get(), index);
17013 return manage(res);
17014 }
17015
get_at(int index)17016 isl::pw_multi_aff pw_multi_aff_list::get_at(int index) const
17017 {
17018 return at(index);
17019 }
17020
clear()17021 isl::pw_multi_aff_list pw_multi_aff_list::clear() const
17022 {
17023 auto res = isl_pw_multi_aff_list_clear(copy());
17024 return manage(res);
17025 }
17026
concat(isl::pw_multi_aff_list list2)17027 isl::pw_multi_aff_list pw_multi_aff_list::concat(isl::pw_multi_aff_list list2) const
17028 {
17029 auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
17030 return manage(res);
17031 }
17032
drop(unsigned int first,unsigned int n)17033 isl::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
17034 {
17035 auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
17036 return manage(res);
17037 }
17038
foreach(const std::function<stat (isl::pw_multi_aff)> & fn)17039 stat pw_multi_aff_list::foreach(const std::function<stat(isl::pw_multi_aff)> &fn) const
17040 {
17041 struct fn_data {
17042 std::function<stat(isl::pw_multi_aff)> func;
17043 } fn_data = { fn };
17044 auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
17045 auto *data = static_cast<struct fn_data *>(arg_1);
17046 auto ret = (data->func)(manage(arg_0));
17047 return ret.release();
17048 };
17049 auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
17050 return manage(res);
17051 }
17052
insert(unsigned int pos,isl::pw_multi_aff el)17053 isl::pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, isl::pw_multi_aff el) const
17054 {
17055 auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
17056 return manage(res);
17057 }
17058
size()17059 class size pw_multi_aff_list::size() const
17060 {
17061 auto res = isl_pw_multi_aff_list_size(get());
17062 return manage(res);
17063 }
17064
17065 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
17066 {
17067 char *str = isl_pw_multi_aff_list_to_str(obj.get());
17068 if (!str) {
17069 os.setstate(std::ios_base::badbit);
17070 return os;
17071 }
17072 os << str;
17073 free(str);
17074 return os;
17075 }
17076
17077 // implementations for isl::schedule
manage(__isl_take isl_schedule * ptr)17078 schedule manage(__isl_take isl_schedule *ptr) {
17079 return schedule(ptr);
17080 }
manage_copy(__isl_keep isl_schedule * ptr)17081 schedule manage_copy(__isl_keep isl_schedule *ptr) {
17082 ptr = isl_schedule_copy(ptr);
17083 return schedule(ptr);
17084 }
17085
schedule()17086 schedule::schedule()
17087 : ptr(nullptr) {}
17088
schedule(const schedule & obj)17089 schedule::schedule(const schedule &obj)
17090 : ptr(nullptr)
17091 {
17092 ptr = obj.copy();
17093 }
17094
schedule(__isl_take isl_schedule * ptr)17095 schedule::schedule(__isl_take isl_schedule *ptr)
17096 : ptr(ptr) {}
17097
schedule(isl::ctx ctx,const std::string & str)17098 schedule::schedule(isl::ctx ctx, const std::string &str)
17099 {
17100 auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
17101 ptr = res;
17102 }
17103
17104 schedule &schedule::operator=(schedule obj) {
17105 std::swap(this->ptr, obj.ptr);
17106 return *this;
17107 }
17108
~schedule()17109 schedule::~schedule() {
17110 if (ptr)
17111 isl_schedule_free(ptr);
17112 }
17113
copy()17114 __isl_give isl_schedule *schedule::copy() const & {
17115 return isl_schedule_copy(ptr);
17116 }
17117
get()17118 __isl_keep isl_schedule *schedule::get() const {
17119 return ptr;
17120 }
17121
release()17122 __isl_give isl_schedule *schedule::release() {
17123 isl_schedule *tmp = ptr;
17124 ptr = nullptr;
17125 return tmp;
17126 }
17127
is_null()17128 bool schedule::is_null() const {
17129 return ptr == nullptr;
17130 }
17131
ctx()17132 isl::ctx schedule::ctx() const {
17133 return isl::ctx(isl_schedule_get_ctx(ptr));
17134 }
17135
align_params(isl::space space)17136 isl::schedule schedule::align_params(isl::space space) const
17137 {
17138 auto res = isl_schedule_align_params(copy(), space.release());
17139 return manage(res);
17140 }
17141
domain()17142 isl::union_set schedule::domain() const
17143 {
17144 auto res = isl_schedule_get_domain(get());
17145 return manage(res);
17146 }
17147
get_domain()17148 isl::union_set schedule::get_domain() const
17149 {
17150 return domain();
17151 }
17152
from_domain(isl::union_set domain)17153 isl::schedule schedule::from_domain(isl::union_set domain)
17154 {
17155 auto res = isl_schedule_from_domain(domain.release());
17156 return manage(res);
17157 }
17158
gist_domain_params(isl::set context)17159 isl::schedule schedule::gist_domain_params(isl::set context) const
17160 {
17161 auto res = isl_schedule_gist_domain_params(copy(), context.release());
17162 return manage(res);
17163 }
17164
insert_partial_schedule(isl::multi_union_pw_aff partial)17165 isl::schedule schedule::insert_partial_schedule(isl::multi_union_pw_aff partial) const
17166 {
17167 auto res = isl_schedule_insert_partial_schedule(copy(), partial.release());
17168 return manage(res);
17169 }
17170
intersect_domain(isl::union_set domain)17171 isl::schedule schedule::intersect_domain(isl::union_set domain) const
17172 {
17173 auto res = isl_schedule_intersect_domain(copy(), domain.release());
17174 return manage(res);
17175 }
17176
map()17177 isl::union_map schedule::map() const
17178 {
17179 auto res = isl_schedule_get_map(get());
17180 return manage(res);
17181 }
17182
get_map()17183 isl::union_map schedule::get_map() const
17184 {
17185 return map();
17186 }
17187
pullback(isl::union_pw_multi_aff upma)17188 isl::schedule schedule::pullback(isl::union_pw_multi_aff upma) const
17189 {
17190 auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
17191 return manage(res);
17192 }
17193
root()17194 isl::schedule_node schedule::root() const
17195 {
17196 auto res = isl_schedule_get_root(get());
17197 return manage(res);
17198 }
17199
get_root()17200 isl::schedule_node schedule::get_root() const
17201 {
17202 return root();
17203 }
17204
sequence(isl::schedule schedule2)17205 isl::schedule schedule::sequence(isl::schedule schedule2) const
17206 {
17207 auto res = isl_schedule_sequence(copy(), schedule2.release());
17208 return manage(res);
17209 }
17210
17211 inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
17212 {
17213 char *str = isl_schedule_to_str(obj.get());
17214 if (!str) {
17215 os.setstate(std::ios_base::badbit);
17216 return os;
17217 }
17218 os << str;
17219 free(str);
17220 return os;
17221 }
17222
17223 // implementations for isl::schedule_constraints
manage(__isl_take isl_schedule_constraints * ptr)17224 schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
17225 return schedule_constraints(ptr);
17226 }
manage_copy(__isl_keep isl_schedule_constraints * ptr)17227 schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
17228 ptr = isl_schedule_constraints_copy(ptr);
17229 return schedule_constraints(ptr);
17230 }
17231
schedule_constraints()17232 schedule_constraints::schedule_constraints()
17233 : ptr(nullptr) {}
17234
schedule_constraints(const schedule_constraints & obj)17235 schedule_constraints::schedule_constraints(const schedule_constraints &obj)
17236 : ptr(nullptr)
17237 {
17238 ptr = obj.copy();
17239 }
17240
schedule_constraints(__isl_take isl_schedule_constraints * ptr)17241 schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
17242 : ptr(ptr) {}
17243
schedule_constraints(isl::ctx ctx,const std::string & str)17244 schedule_constraints::schedule_constraints(isl::ctx ctx, const std::string &str)
17245 {
17246 auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
17247 ptr = res;
17248 }
17249
17250 schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
17251 std::swap(this->ptr, obj.ptr);
17252 return *this;
17253 }
17254
~schedule_constraints()17255 schedule_constraints::~schedule_constraints() {
17256 if (ptr)
17257 isl_schedule_constraints_free(ptr);
17258 }
17259
copy()17260 __isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
17261 return isl_schedule_constraints_copy(ptr);
17262 }
17263
get()17264 __isl_keep isl_schedule_constraints *schedule_constraints::get() const {
17265 return ptr;
17266 }
17267
release()17268 __isl_give isl_schedule_constraints *schedule_constraints::release() {
17269 isl_schedule_constraints *tmp = ptr;
17270 ptr = nullptr;
17271 return tmp;
17272 }
17273
is_null()17274 bool schedule_constraints::is_null() const {
17275 return ptr == nullptr;
17276 }
17277
ctx()17278 isl::ctx schedule_constraints::ctx() const {
17279 return isl::ctx(isl_schedule_constraints_get_ctx(ptr));
17280 }
17281
coincidence()17282 isl::union_map schedule_constraints::coincidence() const
17283 {
17284 auto res = isl_schedule_constraints_get_coincidence(get());
17285 return manage(res);
17286 }
17287
get_coincidence()17288 isl::union_map schedule_constraints::get_coincidence() const
17289 {
17290 return coincidence();
17291 }
17292
compute_schedule()17293 isl::schedule schedule_constraints::compute_schedule() const
17294 {
17295 auto res = isl_schedule_constraints_compute_schedule(copy());
17296 return manage(res);
17297 }
17298
conditional_validity()17299 isl::union_map schedule_constraints::conditional_validity() const
17300 {
17301 auto res = isl_schedule_constraints_get_conditional_validity(get());
17302 return manage(res);
17303 }
17304
get_conditional_validity()17305 isl::union_map schedule_constraints::get_conditional_validity() const
17306 {
17307 return conditional_validity();
17308 }
17309
conditional_validity_condition()17310 isl::union_map schedule_constraints::conditional_validity_condition() const
17311 {
17312 auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
17313 return manage(res);
17314 }
17315
get_conditional_validity_condition()17316 isl::union_map schedule_constraints::get_conditional_validity_condition() const
17317 {
17318 return conditional_validity_condition();
17319 }
17320
context()17321 isl::set schedule_constraints::context() const
17322 {
17323 auto res = isl_schedule_constraints_get_context(get());
17324 return manage(res);
17325 }
17326
get_context()17327 isl::set schedule_constraints::get_context() const
17328 {
17329 return context();
17330 }
17331
domain()17332 isl::union_set schedule_constraints::domain() const
17333 {
17334 auto res = isl_schedule_constraints_get_domain(get());
17335 return manage(res);
17336 }
17337
get_domain()17338 isl::union_set schedule_constraints::get_domain() const
17339 {
17340 return domain();
17341 }
17342
on_domain(isl::union_set domain)17343 isl::schedule_constraints schedule_constraints::on_domain(isl::union_set domain)
17344 {
17345 auto res = isl_schedule_constraints_on_domain(domain.release());
17346 return manage(res);
17347 }
17348
proximity()17349 isl::union_map schedule_constraints::proximity() const
17350 {
17351 auto res = isl_schedule_constraints_get_proximity(get());
17352 return manage(res);
17353 }
17354
get_proximity()17355 isl::union_map schedule_constraints::get_proximity() const
17356 {
17357 return proximity();
17358 }
17359
set_coincidence(isl::union_map coincidence)17360 isl::schedule_constraints schedule_constraints::set_coincidence(isl::union_map coincidence) const
17361 {
17362 auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
17363 return manage(res);
17364 }
17365
set_conditional_validity(isl::union_map condition,isl::union_map validity)17366 isl::schedule_constraints schedule_constraints::set_conditional_validity(isl::union_map condition, isl::union_map validity) const
17367 {
17368 auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
17369 return manage(res);
17370 }
17371
set_context(isl::set context)17372 isl::schedule_constraints schedule_constraints::set_context(isl::set context) const
17373 {
17374 auto res = isl_schedule_constraints_set_context(copy(), context.release());
17375 return manage(res);
17376 }
17377
set_proximity(isl::union_map proximity)17378 isl::schedule_constraints schedule_constraints::set_proximity(isl::union_map proximity) const
17379 {
17380 auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
17381 return manage(res);
17382 }
17383
set_validity(isl::union_map validity)17384 isl::schedule_constraints schedule_constraints::set_validity(isl::union_map validity) const
17385 {
17386 auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
17387 return manage(res);
17388 }
17389
validity()17390 isl::union_map schedule_constraints::validity() const
17391 {
17392 auto res = isl_schedule_constraints_get_validity(get());
17393 return manage(res);
17394 }
17395
get_validity()17396 isl::union_map schedule_constraints::get_validity() const
17397 {
17398 return validity();
17399 }
17400
17401 inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
17402 {
17403 char *str = isl_schedule_constraints_to_str(obj.get());
17404 if (!str) {
17405 os.setstate(std::ios_base::badbit);
17406 return os;
17407 }
17408 os << str;
17409 free(str);
17410 return os;
17411 }
17412
17413 // implementations for isl::schedule_node
manage(__isl_take isl_schedule_node * ptr)17414 schedule_node manage(__isl_take isl_schedule_node *ptr) {
17415 return schedule_node(ptr);
17416 }
manage_copy(__isl_keep isl_schedule_node * ptr)17417 schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
17418 ptr = isl_schedule_node_copy(ptr);
17419 return schedule_node(ptr);
17420 }
17421
schedule_node()17422 schedule_node::schedule_node()
17423 : ptr(nullptr) {}
17424
schedule_node(const schedule_node & obj)17425 schedule_node::schedule_node(const schedule_node &obj)
17426 : ptr(nullptr)
17427 {
17428 ptr = obj.copy();
17429 }
17430
schedule_node(__isl_take isl_schedule_node * ptr)17431 schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
17432 : ptr(ptr) {}
17433
17434 schedule_node &schedule_node::operator=(schedule_node obj) {
17435 std::swap(this->ptr, obj.ptr);
17436 return *this;
17437 }
17438
~schedule_node()17439 schedule_node::~schedule_node() {
17440 if (ptr)
17441 isl_schedule_node_free(ptr);
17442 }
17443
copy()17444 __isl_give isl_schedule_node *schedule_node::copy() const & {
17445 return isl_schedule_node_copy(ptr);
17446 }
17447
get()17448 __isl_keep isl_schedule_node *schedule_node::get() const {
17449 return ptr;
17450 }
17451
release()17452 __isl_give isl_schedule_node *schedule_node::release() {
17453 isl_schedule_node *tmp = ptr;
17454 ptr = nullptr;
17455 return tmp;
17456 }
17457
is_null()17458 bool schedule_node::is_null() const {
17459 return ptr == nullptr;
17460 }
17461
17462 template <typename T, typename>
isa_type(T subtype)17463 boolean schedule_node::isa_type(T subtype) const
17464 {
17465 if (is_null())
17466 return boolean();
17467 return isl_schedule_node_get_type(get()) == subtype;
17468 }
17469 template <class T>
isa()17470 boolean schedule_node::isa() const
17471 {
17472 return isa_type<decltype(T::type)>(T::type);
17473 }
17474 template <class T>
as()17475 T schedule_node::as() const
17476 {
17477 if (isa<T>().is_false())
17478 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
17479 return T(copy());
17480 }
17481
ctx()17482 isl::ctx schedule_node::ctx() const {
17483 return isl::ctx(isl_schedule_node_get_ctx(ptr));
17484 }
17485
ancestor(int generation)17486 isl::schedule_node schedule_node::ancestor(int generation) const
17487 {
17488 auto res = isl_schedule_node_ancestor(copy(), generation);
17489 return manage(res);
17490 }
17491
ancestor_child_position(const isl::schedule_node & ancestor)17492 class size schedule_node::ancestor_child_position(const isl::schedule_node &ancestor) const
17493 {
17494 auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
17495 return manage(res);
17496 }
17497
get_ancestor_child_position(const isl::schedule_node & ancestor)17498 class size schedule_node::get_ancestor_child_position(const isl::schedule_node &ancestor) const
17499 {
17500 return ancestor_child_position(ancestor);
17501 }
17502
child(int pos)17503 isl::schedule_node schedule_node::child(int pos) const
17504 {
17505 auto res = isl_schedule_node_child(copy(), pos);
17506 return manage(res);
17507 }
17508
child_position()17509 class size schedule_node::child_position() const
17510 {
17511 auto res = isl_schedule_node_get_child_position(get());
17512 return manage(res);
17513 }
17514
get_child_position()17515 class size schedule_node::get_child_position() const
17516 {
17517 return child_position();
17518 }
17519
domain()17520 isl::union_set schedule_node::domain() const
17521 {
17522 auto res = isl_schedule_node_get_domain(get());
17523 return manage(res);
17524 }
17525
get_domain()17526 isl::union_set schedule_node::get_domain() const
17527 {
17528 return domain();
17529 }
17530
every_descendant(const std::function<boolean (isl::schedule_node)> & test)17531 boolean schedule_node::every_descendant(const std::function<boolean(isl::schedule_node)> &test) const
17532 {
17533 struct test_data {
17534 std::function<boolean(isl::schedule_node)> func;
17535 } test_data = { test };
17536 auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
17537 auto *data = static_cast<struct test_data *>(arg_1);
17538 auto ret = (data->func)(manage_copy(arg_0));
17539 return ret.release();
17540 };
17541 auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
17542 return manage(res);
17543 }
17544
first_child()17545 isl::schedule_node schedule_node::first_child() const
17546 {
17547 auto res = isl_schedule_node_first_child(copy());
17548 return manage(res);
17549 }
17550
foreach_ancestor_top_down(const std::function<stat (isl::schedule_node)> & fn)17551 stat schedule_node::foreach_ancestor_top_down(const std::function<stat(isl::schedule_node)> &fn) const
17552 {
17553 struct fn_data {
17554 std::function<stat(isl::schedule_node)> func;
17555 } fn_data = { fn };
17556 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
17557 auto *data = static_cast<struct fn_data *>(arg_1);
17558 auto ret = (data->func)(manage_copy(arg_0));
17559 return ret.release();
17560 };
17561 auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
17562 return manage(res);
17563 }
17564
foreach_descendant_top_down(const std::function<boolean (isl::schedule_node)> & fn)17565 stat schedule_node::foreach_descendant_top_down(const std::function<boolean(isl::schedule_node)> &fn) const
17566 {
17567 struct fn_data {
17568 std::function<boolean(isl::schedule_node)> func;
17569 } fn_data = { fn };
17570 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
17571 auto *data = static_cast<struct fn_data *>(arg_1);
17572 auto ret = (data->func)(manage_copy(arg_0));
17573 return ret.release();
17574 };
17575 auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
17576 return manage(res);
17577 }
17578
from_domain(isl::union_set domain)17579 isl::schedule_node schedule_node::from_domain(isl::union_set domain)
17580 {
17581 auto res = isl_schedule_node_from_domain(domain.release());
17582 return manage(res);
17583 }
17584
from_extension(isl::union_map extension)17585 isl::schedule_node schedule_node::from_extension(isl::union_map extension)
17586 {
17587 auto res = isl_schedule_node_from_extension(extension.release());
17588 return manage(res);
17589 }
17590
graft_after(isl::schedule_node graft)17591 isl::schedule_node schedule_node::graft_after(isl::schedule_node graft) const
17592 {
17593 auto res = isl_schedule_node_graft_after(copy(), graft.release());
17594 return manage(res);
17595 }
17596
graft_before(isl::schedule_node graft)17597 isl::schedule_node schedule_node::graft_before(isl::schedule_node graft) const
17598 {
17599 auto res = isl_schedule_node_graft_before(copy(), graft.release());
17600 return manage(res);
17601 }
17602
has_children()17603 boolean schedule_node::has_children() const
17604 {
17605 auto res = isl_schedule_node_has_children(get());
17606 return manage(res);
17607 }
17608
has_next_sibling()17609 boolean schedule_node::has_next_sibling() const
17610 {
17611 auto res = isl_schedule_node_has_next_sibling(get());
17612 return manage(res);
17613 }
17614
has_parent()17615 boolean schedule_node::has_parent() const
17616 {
17617 auto res = isl_schedule_node_has_parent(get());
17618 return manage(res);
17619 }
17620
has_previous_sibling()17621 boolean schedule_node::has_previous_sibling() const
17622 {
17623 auto res = isl_schedule_node_has_previous_sibling(get());
17624 return manage(res);
17625 }
17626
insert_context(isl::set context)17627 isl::schedule_node schedule_node::insert_context(isl::set context) const
17628 {
17629 auto res = isl_schedule_node_insert_context(copy(), context.release());
17630 return manage(res);
17631 }
17632
insert_filter(isl::union_set filter)17633 isl::schedule_node schedule_node::insert_filter(isl::union_set filter) const
17634 {
17635 auto res = isl_schedule_node_insert_filter(copy(), filter.release());
17636 return manage(res);
17637 }
17638
insert_guard(isl::set context)17639 isl::schedule_node schedule_node::insert_guard(isl::set context) const
17640 {
17641 auto res = isl_schedule_node_insert_guard(copy(), context.release());
17642 return manage(res);
17643 }
17644
insert_mark(isl::id mark)17645 isl::schedule_node schedule_node::insert_mark(isl::id mark) const
17646 {
17647 auto res = isl_schedule_node_insert_mark(copy(), mark.release());
17648 return manage(res);
17649 }
17650
insert_mark(const std::string & mark)17651 isl::schedule_node schedule_node::insert_mark(const std::string &mark) const
17652 {
17653 return this->insert_mark(isl::id(ctx(), mark));
17654 }
17655
insert_partial_schedule(isl::multi_union_pw_aff schedule)17656 isl::schedule_node schedule_node::insert_partial_schedule(isl::multi_union_pw_aff schedule) const
17657 {
17658 auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
17659 return manage(res);
17660 }
17661
insert_sequence(isl::union_set_list filters)17662 isl::schedule_node schedule_node::insert_sequence(isl::union_set_list filters) const
17663 {
17664 auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
17665 return manage(res);
17666 }
17667
insert_set(isl::union_set_list filters)17668 isl::schedule_node schedule_node::insert_set(isl::union_set_list filters) const
17669 {
17670 auto res = isl_schedule_node_insert_set(copy(), filters.release());
17671 return manage(res);
17672 }
17673
is_equal(const isl::schedule_node & node2)17674 boolean schedule_node::is_equal(const isl::schedule_node &node2) const
17675 {
17676 auto res = isl_schedule_node_is_equal(get(), node2.get());
17677 return manage(res);
17678 }
17679
is_subtree_anchored()17680 boolean schedule_node::is_subtree_anchored() const
17681 {
17682 auto res = isl_schedule_node_is_subtree_anchored(get());
17683 return manage(res);
17684 }
17685
map_descendant_bottom_up(const std::function<isl::schedule_node (isl::schedule_node)> & fn)17686 isl::schedule_node schedule_node::map_descendant_bottom_up(const std::function<isl::schedule_node(isl::schedule_node)> &fn) const
17687 {
17688 struct fn_data {
17689 std::function<isl::schedule_node(isl::schedule_node)> func;
17690 } fn_data = { fn };
17691 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_schedule_node * {
17692 auto *data = static_cast<struct fn_data *>(arg_1);
17693 auto ret = (data->func)(manage(arg_0));
17694 return ret.release();
17695 };
17696 auto res = isl_schedule_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
17697 return manage(res);
17698 }
17699
n_children()17700 class size schedule_node::n_children() const
17701 {
17702 auto res = isl_schedule_node_n_children(get());
17703 return manage(res);
17704 }
17705
next_sibling()17706 isl::schedule_node schedule_node::next_sibling() const
17707 {
17708 auto res = isl_schedule_node_next_sibling(copy());
17709 return manage(res);
17710 }
17711
order_after(isl::union_set filter)17712 isl::schedule_node schedule_node::order_after(isl::union_set filter) const
17713 {
17714 auto res = isl_schedule_node_order_after(copy(), filter.release());
17715 return manage(res);
17716 }
17717
order_before(isl::union_set filter)17718 isl::schedule_node schedule_node::order_before(isl::union_set filter) const
17719 {
17720 auto res = isl_schedule_node_order_before(copy(), filter.release());
17721 return manage(res);
17722 }
17723
parent()17724 isl::schedule_node schedule_node::parent() const
17725 {
17726 auto res = isl_schedule_node_parent(copy());
17727 return manage(res);
17728 }
17729
prefix_schedule_multi_union_pw_aff()17730 isl::multi_union_pw_aff schedule_node::prefix_schedule_multi_union_pw_aff() const
17731 {
17732 auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
17733 return manage(res);
17734 }
17735
get_prefix_schedule_multi_union_pw_aff()17736 isl::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
17737 {
17738 return prefix_schedule_multi_union_pw_aff();
17739 }
17740
prefix_schedule_relation()17741 isl::union_map schedule_node::prefix_schedule_relation() const
17742 {
17743 auto res = isl_schedule_node_get_prefix_schedule_relation(get());
17744 return manage(res);
17745 }
17746
get_prefix_schedule_relation()17747 isl::union_map schedule_node::get_prefix_schedule_relation() const
17748 {
17749 return prefix_schedule_relation();
17750 }
17751
prefix_schedule_union_map()17752 isl::union_map schedule_node::prefix_schedule_union_map() const
17753 {
17754 auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
17755 return manage(res);
17756 }
17757
get_prefix_schedule_union_map()17758 isl::union_map schedule_node::get_prefix_schedule_union_map() const
17759 {
17760 return prefix_schedule_union_map();
17761 }
17762
prefix_schedule_union_pw_multi_aff()17763 isl::union_pw_multi_aff schedule_node::prefix_schedule_union_pw_multi_aff() const
17764 {
17765 auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
17766 return manage(res);
17767 }
17768
get_prefix_schedule_union_pw_multi_aff()17769 isl::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
17770 {
17771 return prefix_schedule_union_pw_multi_aff();
17772 }
17773
previous_sibling()17774 isl::schedule_node schedule_node::previous_sibling() const
17775 {
17776 auto res = isl_schedule_node_previous_sibling(copy());
17777 return manage(res);
17778 }
17779
root()17780 isl::schedule_node schedule_node::root() const
17781 {
17782 auto res = isl_schedule_node_root(copy());
17783 return manage(res);
17784 }
17785
schedule()17786 isl::schedule schedule_node::schedule() const
17787 {
17788 auto res = isl_schedule_node_get_schedule(get());
17789 return manage(res);
17790 }
17791
get_schedule()17792 isl::schedule schedule_node::get_schedule() const
17793 {
17794 return schedule();
17795 }
17796
schedule_depth()17797 class size schedule_node::schedule_depth() const
17798 {
17799 auto res = isl_schedule_node_get_schedule_depth(get());
17800 return manage(res);
17801 }
17802
get_schedule_depth()17803 class size schedule_node::get_schedule_depth() const
17804 {
17805 return schedule_depth();
17806 }
17807
shared_ancestor(const isl::schedule_node & node2)17808 isl::schedule_node schedule_node::shared_ancestor(const isl::schedule_node &node2) const
17809 {
17810 auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
17811 return manage(res);
17812 }
17813
get_shared_ancestor(const isl::schedule_node & node2)17814 isl::schedule_node schedule_node::get_shared_ancestor(const isl::schedule_node &node2) const
17815 {
17816 return shared_ancestor(node2);
17817 }
17818
tree_depth()17819 class size schedule_node::tree_depth() const
17820 {
17821 auto res = isl_schedule_node_get_tree_depth(get());
17822 return manage(res);
17823 }
17824
get_tree_depth()17825 class size schedule_node::get_tree_depth() const
17826 {
17827 return tree_depth();
17828 }
17829
universe_domain()17830 isl::union_set schedule_node::universe_domain() const
17831 {
17832 auto res = isl_schedule_node_get_universe_domain(get());
17833 return manage(res);
17834 }
17835
get_universe_domain()17836 isl::union_set schedule_node::get_universe_domain() const
17837 {
17838 return universe_domain();
17839 }
17840
17841 inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
17842 {
17843 char *str = isl_schedule_node_to_str(obj.get());
17844 if (!str) {
17845 os.setstate(std::ios_base::badbit);
17846 return os;
17847 }
17848 os << str;
17849 free(str);
17850 return os;
17851 }
17852
17853 // implementations for isl::schedule_node_band
schedule_node_band()17854 schedule_node_band::schedule_node_band()
17855 : schedule_node() {}
17856
schedule_node_band(const schedule_node_band & obj)17857 schedule_node_band::schedule_node_band(const schedule_node_band &obj)
17858 : schedule_node(obj)
17859 {
17860 }
17861
schedule_node_band(__isl_take isl_schedule_node * ptr)17862 schedule_node_band::schedule_node_band(__isl_take isl_schedule_node *ptr)
17863 : schedule_node(ptr) {}
17864
17865 schedule_node_band &schedule_node_band::operator=(schedule_node_band obj) {
17866 std::swap(this->ptr, obj.ptr);
17867 return *this;
17868 }
17869
ctx()17870 isl::ctx schedule_node_band::ctx() const {
17871 return isl::ctx(isl_schedule_node_get_ctx(ptr));
17872 }
17873
ast_build_options()17874 isl::union_set schedule_node_band::ast_build_options() const
17875 {
17876 auto res = isl_schedule_node_band_get_ast_build_options(get());
17877 return manage(res);
17878 }
17879
get_ast_build_options()17880 isl::union_set schedule_node_band::get_ast_build_options() const
17881 {
17882 return ast_build_options();
17883 }
17884
ast_isolate_option()17885 isl::set schedule_node_band::ast_isolate_option() const
17886 {
17887 auto res = isl_schedule_node_band_get_ast_isolate_option(get());
17888 return manage(res);
17889 }
17890
get_ast_isolate_option()17891 isl::set schedule_node_band::get_ast_isolate_option() const
17892 {
17893 return ast_isolate_option();
17894 }
17895
member_get_coincident(int pos)17896 boolean schedule_node_band::member_get_coincident(int pos) const
17897 {
17898 auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
17899 return manage(res);
17900 }
17901
member_set_coincident(int pos,int coincident)17902 schedule_node_band schedule_node_band::member_set_coincident(int pos, int coincident) const
17903 {
17904 auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
17905 return manage(res).as<schedule_node_band>();
17906 }
17907
mod(isl::multi_val mv)17908 schedule_node_band schedule_node_band::mod(isl::multi_val mv) const
17909 {
17910 auto res = isl_schedule_node_band_mod(copy(), mv.release());
17911 return manage(res).as<schedule_node_band>();
17912 }
17913
n_member()17914 class size schedule_node_band::n_member() const
17915 {
17916 auto res = isl_schedule_node_band_n_member(get());
17917 return manage(res);
17918 }
17919
partial_schedule()17920 isl::multi_union_pw_aff schedule_node_band::partial_schedule() const
17921 {
17922 auto res = isl_schedule_node_band_get_partial_schedule(get());
17923 return manage(res);
17924 }
17925
get_partial_schedule()17926 isl::multi_union_pw_aff schedule_node_band::get_partial_schedule() const
17927 {
17928 return partial_schedule();
17929 }
17930
permutable()17931 boolean schedule_node_band::permutable() const
17932 {
17933 auto res = isl_schedule_node_band_get_permutable(get());
17934 return manage(res);
17935 }
17936
get_permutable()17937 boolean schedule_node_band::get_permutable() const
17938 {
17939 return permutable();
17940 }
17941
scale(isl::multi_val mv)17942 schedule_node_band schedule_node_band::scale(isl::multi_val mv) const
17943 {
17944 auto res = isl_schedule_node_band_scale(copy(), mv.release());
17945 return manage(res).as<schedule_node_band>();
17946 }
17947
scale_down(isl::multi_val mv)17948 schedule_node_band schedule_node_band::scale_down(isl::multi_val mv) const
17949 {
17950 auto res = isl_schedule_node_band_scale_down(copy(), mv.release());
17951 return manage(res).as<schedule_node_band>();
17952 }
17953
set_ast_build_options(isl::union_set options)17954 schedule_node_band schedule_node_band::set_ast_build_options(isl::union_set options) const
17955 {
17956 auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
17957 return manage(res).as<schedule_node_band>();
17958 }
17959
set_permutable(int permutable)17960 schedule_node_band schedule_node_band::set_permutable(int permutable) const
17961 {
17962 auto res = isl_schedule_node_band_set_permutable(copy(), permutable);
17963 return manage(res).as<schedule_node_band>();
17964 }
17965
shift(isl::multi_union_pw_aff shift)17966 schedule_node_band schedule_node_band::shift(isl::multi_union_pw_aff shift) const
17967 {
17968 auto res = isl_schedule_node_band_shift(copy(), shift.release());
17969 return manage(res).as<schedule_node_band>();
17970 }
17971
split(int pos)17972 schedule_node_band schedule_node_band::split(int pos) const
17973 {
17974 auto res = isl_schedule_node_band_split(copy(), pos);
17975 return manage(res).as<schedule_node_band>();
17976 }
17977
tile(isl::multi_val sizes)17978 schedule_node_band schedule_node_band::tile(isl::multi_val sizes) const
17979 {
17980 auto res = isl_schedule_node_band_tile(copy(), sizes.release());
17981 return manage(res).as<schedule_node_band>();
17982 }
17983
member_set_ast_loop_default(int pos)17984 schedule_node_band schedule_node_band::member_set_ast_loop_default(int pos) const
17985 {
17986 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_default);
17987 return manage(res).as<schedule_node_band>();
17988 }
17989
member_set_ast_loop_atomic(int pos)17990 schedule_node_band schedule_node_band::member_set_ast_loop_atomic(int pos) const
17991 {
17992 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_atomic);
17993 return manage(res).as<schedule_node_band>();
17994 }
17995
member_set_ast_loop_unroll(int pos)17996 schedule_node_band schedule_node_band::member_set_ast_loop_unroll(int pos) const
17997 {
17998 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_unroll);
17999 return manage(res).as<schedule_node_band>();
18000 }
18001
member_set_ast_loop_separate(int pos)18002 schedule_node_band schedule_node_band::member_set_ast_loop_separate(int pos) const
18003 {
18004 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_separate);
18005 return manage(res).as<schedule_node_band>();
18006 }
18007
18008 inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
18009 {
18010 char *str = isl_schedule_node_to_str(obj.get());
18011 if (!str) {
18012 os.setstate(std::ios_base::badbit);
18013 return os;
18014 }
18015 os << str;
18016 free(str);
18017 return os;
18018 }
18019
18020 // implementations for isl::schedule_node_context
schedule_node_context()18021 schedule_node_context::schedule_node_context()
18022 : schedule_node() {}
18023
schedule_node_context(const schedule_node_context & obj)18024 schedule_node_context::schedule_node_context(const schedule_node_context &obj)
18025 : schedule_node(obj)
18026 {
18027 }
18028
schedule_node_context(__isl_take isl_schedule_node * ptr)18029 schedule_node_context::schedule_node_context(__isl_take isl_schedule_node *ptr)
18030 : schedule_node(ptr) {}
18031
18032 schedule_node_context &schedule_node_context::operator=(schedule_node_context obj) {
18033 std::swap(this->ptr, obj.ptr);
18034 return *this;
18035 }
18036
ctx()18037 isl::ctx schedule_node_context::ctx() const {
18038 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18039 }
18040
context()18041 isl::set schedule_node_context::context() const
18042 {
18043 auto res = isl_schedule_node_context_get_context(get());
18044 return manage(res);
18045 }
18046
get_context()18047 isl::set schedule_node_context::get_context() const
18048 {
18049 return context();
18050 }
18051
18052 inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
18053 {
18054 char *str = isl_schedule_node_to_str(obj.get());
18055 if (!str) {
18056 os.setstate(std::ios_base::badbit);
18057 return os;
18058 }
18059 os << str;
18060 free(str);
18061 return os;
18062 }
18063
18064 // implementations for isl::schedule_node_domain
schedule_node_domain()18065 schedule_node_domain::schedule_node_domain()
18066 : schedule_node() {}
18067
schedule_node_domain(const schedule_node_domain & obj)18068 schedule_node_domain::schedule_node_domain(const schedule_node_domain &obj)
18069 : schedule_node(obj)
18070 {
18071 }
18072
schedule_node_domain(__isl_take isl_schedule_node * ptr)18073 schedule_node_domain::schedule_node_domain(__isl_take isl_schedule_node *ptr)
18074 : schedule_node(ptr) {}
18075
18076 schedule_node_domain &schedule_node_domain::operator=(schedule_node_domain obj) {
18077 std::swap(this->ptr, obj.ptr);
18078 return *this;
18079 }
18080
ctx()18081 isl::ctx schedule_node_domain::ctx() const {
18082 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18083 }
18084
domain()18085 isl::union_set schedule_node_domain::domain() const
18086 {
18087 auto res = isl_schedule_node_domain_get_domain(get());
18088 return manage(res);
18089 }
18090
get_domain()18091 isl::union_set schedule_node_domain::get_domain() const
18092 {
18093 return domain();
18094 }
18095
18096 inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
18097 {
18098 char *str = isl_schedule_node_to_str(obj.get());
18099 if (!str) {
18100 os.setstate(std::ios_base::badbit);
18101 return os;
18102 }
18103 os << str;
18104 free(str);
18105 return os;
18106 }
18107
18108 // implementations for isl::schedule_node_expansion
schedule_node_expansion()18109 schedule_node_expansion::schedule_node_expansion()
18110 : schedule_node() {}
18111
schedule_node_expansion(const schedule_node_expansion & obj)18112 schedule_node_expansion::schedule_node_expansion(const schedule_node_expansion &obj)
18113 : schedule_node(obj)
18114 {
18115 }
18116
schedule_node_expansion(__isl_take isl_schedule_node * ptr)18117 schedule_node_expansion::schedule_node_expansion(__isl_take isl_schedule_node *ptr)
18118 : schedule_node(ptr) {}
18119
18120 schedule_node_expansion &schedule_node_expansion::operator=(schedule_node_expansion obj) {
18121 std::swap(this->ptr, obj.ptr);
18122 return *this;
18123 }
18124
ctx()18125 isl::ctx schedule_node_expansion::ctx() const {
18126 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18127 }
18128
contraction()18129 isl::union_pw_multi_aff schedule_node_expansion::contraction() const
18130 {
18131 auto res = isl_schedule_node_expansion_get_contraction(get());
18132 return manage(res);
18133 }
18134
get_contraction()18135 isl::union_pw_multi_aff schedule_node_expansion::get_contraction() const
18136 {
18137 return contraction();
18138 }
18139
expansion()18140 isl::union_map schedule_node_expansion::expansion() const
18141 {
18142 auto res = isl_schedule_node_expansion_get_expansion(get());
18143 return manage(res);
18144 }
18145
get_expansion()18146 isl::union_map schedule_node_expansion::get_expansion() const
18147 {
18148 return expansion();
18149 }
18150
18151 inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
18152 {
18153 char *str = isl_schedule_node_to_str(obj.get());
18154 if (!str) {
18155 os.setstate(std::ios_base::badbit);
18156 return os;
18157 }
18158 os << str;
18159 free(str);
18160 return os;
18161 }
18162
18163 // implementations for isl::schedule_node_extension
schedule_node_extension()18164 schedule_node_extension::schedule_node_extension()
18165 : schedule_node() {}
18166
schedule_node_extension(const schedule_node_extension & obj)18167 schedule_node_extension::schedule_node_extension(const schedule_node_extension &obj)
18168 : schedule_node(obj)
18169 {
18170 }
18171
schedule_node_extension(__isl_take isl_schedule_node * ptr)18172 schedule_node_extension::schedule_node_extension(__isl_take isl_schedule_node *ptr)
18173 : schedule_node(ptr) {}
18174
18175 schedule_node_extension &schedule_node_extension::operator=(schedule_node_extension obj) {
18176 std::swap(this->ptr, obj.ptr);
18177 return *this;
18178 }
18179
ctx()18180 isl::ctx schedule_node_extension::ctx() const {
18181 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18182 }
18183
extension()18184 isl::union_map schedule_node_extension::extension() const
18185 {
18186 auto res = isl_schedule_node_extension_get_extension(get());
18187 return manage(res);
18188 }
18189
get_extension()18190 isl::union_map schedule_node_extension::get_extension() const
18191 {
18192 return extension();
18193 }
18194
18195 inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
18196 {
18197 char *str = isl_schedule_node_to_str(obj.get());
18198 if (!str) {
18199 os.setstate(std::ios_base::badbit);
18200 return os;
18201 }
18202 os << str;
18203 free(str);
18204 return os;
18205 }
18206
18207 // implementations for isl::schedule_node_filter
schedule_node_filter()18208 schedule_node_filter::schedule_node_filter()
18209 : schedule_node() {}
18210
schedule_node_filter(const schedule_node_filter & obj)18211 schedule_node_filter::schedule_node_filter(const schedule_node_filter &obj)
18212 : schedule_node(obj)
18213 {
18214 }
18215
schedule_node_filter(__isl_take isl_schedule_node * ptr)18216 schedule_node_filter::schedule_node_filter(__isl_take isl_schedule_node *ptr)
18217 : schedule_node(ptr) {}
18218
18219 schedule_node_filter &schedule_node_filter::operator=(schedule_node_filter obj) {
18220 std::swap(this->ptr, obj.ptr);
18221 return *this;
18222 }
18223
ctx()18224 isl::ctx schedule_node_filter::ctx() const {
18225 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18226 }
18227
filter()18228 isl::union_set schedule_node_filter::filter() const
18229 {
18230 auto res = isl_schedule_node_filter_get_filter(get());
18231 return manage(res);
18232 }
18233
get_filter()18234 isl::union_set schedule_node_filter::get_filter() const
18235 {
18236 return filter();
18237 }
18238
18239 inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
18240 {
18241 char *str = isl_schedule_node_to_str(obj.get());
18242 if (!str) {
18243 os.setstate(std::ios_base::badbit);
18244 return os;
18245 }
18246 os << str;
18247 free(str);
18248 return os;
18249 }
18250
18251 // implementations for isl::schedule_node_guard
schedule_node_guard()18252 schedule_node_guard::schedule_node_guard()
18253 : schedule_node() {}
18254
schedule_node_guard(const schedule_node_guard & obj)18255 schedule_node_guard::schedule_node_guard(const schedule_node_guard &obj)
18256 : schedule_node(obj)
18257 {
18258 }
18259
schedule_node_guard(__isl_take isl_schedule_node * ptr)18260 schedule_node_guard::schedule_node_guard(__isl_take isl_schedule_node *ptr)
18261 : schedule_node(ptr) {}
18262
18263 schedule_node_guard &schedule_node_guard::operator=(schedule_node_guard obj) {
18264 std::swap(this->ptr, obj.ptr);
18265 return *this;
18266 }
18267
ctx()18268 isl::ctx schedule_node_guard::ctx() const {
18269 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18270 }
18271
guard()18272 isl::set schedule_node_guard::guard() const
18273 {
18274 auto res = isl_schedule_node_guard_get_guard(get());
18275 return manage(res);
18276 }
18277
get_guard()18278 isl::set schedule_node_guard::get_guard() const
18279 {
18280 return guard();
18281 }
18282
18283 inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
18284 {
18285 char *str = isl_schedule_node_to_str(obj.get());
18286 if (!str) {
18287 os.setstate(std::ios_base::badbit);
18288 return os;
18289 }
18290 os << str;
18291 free(str);
18292 return os;
18293 }
18294
18295 // implementations for isl::schedule_node_leaf
schedule_node_leaf()18296 schedule_node_leaf::schedule_node_leaf()
18297 : schedule_node() {}
18298
schedule_node_leaf(const schedule_node_leaf & obj)18299 schedule_node_leaf::schedule_node_leaf(const schedule_node_leaf &obj)
18300 : schedule_node(obj)
18301 {
18302 }
18303
schedule_node_leaf(__isl_take isl_schedule_node * ptr)18304 schedule_node_leaf::schedule_node_leaf(__isl_take isl_schedule_node *ptr)
18305 : schedule_node(ptr) {}
18306
18307 schedule_node_leaf &schedule_node_leaf::operator=(schedule_node_leaf obj) {
18308 std::swap(this->ptr, obj.ptr);
18309 return *this;
18310 }
18311
ctx()18312 isl::ctx schedule_node_leaf::ctx() const {
18313 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18314 }
18315
18316 inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
18317 {
18318 char *str = isl_schedule_node_to_str(obj.get());
18319 if (!str) {
18320 os.setstate(std::ios_base::badbit);
18321 return os;
18322 }
18323 os << str;
18324 free(str);
18325 return os;
18326 }
18327
18328 // implementations for isl::schedule_node_mark
schedule_node_mark()18329 schedule_node_mark::schedule_node_mark()
18330 : schedule_node() {}
18331
schedule_node_mark(const schedule_node_mark & obj)18332 schedule_node_mark::schedule_node_mark(const schedule_node_mark &obj)
18333 : schedule_node(obj)
18334 {
18335 }
18336
schedule_node_mark(__isl_take isl_schedule_node * ptr)18337 schedule_node_mark::schedule_node_mark(__isl_take isl_schedule_node *ptr)
18338 : schedule_node(ptr) {}
18339
18340 schedule_node_mark &schedule_node_mark::operator=(schedule_node_mark obj) {
18341 std::swap(this->ptr, obj.ptr);
18342 return *this;
18343 }
18344
ctx()18345 isl::ctx schedule_node_mark::ctx() const {
18346 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18347 }
18348
id()18349 isl::id schedule_node_mark::id() const
18350 {
18351 auto res = isl_schedule_node_mark_get_id(get());
18352 return manage(res);
18353 }
18354
get_id()18355 isl::id schedule_node_mark::get_id() const
18356 {
18357 return id();
18358 }
18359
18360 inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
18361 {
18362 char *str = isl_schedule_node_to_str(obj.get());
18363 if (!str) {
18364 os.setstate(std::ios_base::badbit);
18365 return os;
18366 }
18367 os << str;
18368 free(str);
18369 return os;
18370 }
18371
18372 // implementations for isl::schedule_node_sequence
schedule_node_sequence()18373 schedule_node_sequence::schedule_node_sequence()
18374 : schedule_node() {}
18375
schedule_node_sequence(const schedule_node_sequence & obj)18376 schedule_node_sequence::schedule_node_sequence(const schedule_node_sequence &obj)
18377 : schedule_node(obj)
18378 {
18379 }
18380
schedule_node_sequence(__isl_take isl_schedule_node * ptr)18381 schedule_node_sequence::schedule_node_sequence(__isl_take isl_schedule_node *ptr)
18382 : schedule_node(ptr) {}
18383
18384 schedule_node_sequence &schedule_node_sequence::operator=(schedule_node_sequence obj) {
18385 std::swap(this->ptr, obj.ptr);
18386 return *this;
18387 }
18388
ctx()18389 isl::ctx schedule_node_sequence::ctx() const {
18390 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18391 }
18392
18393 inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
18394 {
18395 char *str = isl_schedule_node_to_str(obj.get());
18396 if (!str) {
18397 os.setstate(std::ios_base::badbit);
18398 return os;
18399 }
18400 os << str;
18401 free(str);
18402 return os;
18403 }
18404
18405 // implementations for isl::schedule_node_set
schedule_node_set()18406 schedule_node_set::schedule_node_set()
18407 : schedule_node() {}
18408
schedule_node_set(const schedule_node_set & obj)18409 schedule_node_set::schedule_node_set(const schedule_node_set &obj)
18410 : schedule_node(obj)
18411 {
18412 }
18413
schedule_node_set(__isl_take isl_schedule_node * ptr)18414 schedule_node_set::schedule_node_set(__isl_take isl_schedule_node *ptr)
18415 : schedule_node(ptr) {}
18416
18417 schedule_node_set &schedule_node_set::operator=(schedule_node_set obj) {
18418 std::swap(this->ptr, obj.ptr);
18419 return *this;
18420 }
18421
ctx()18422 isl::ctx schedule_node_set::ctx() const {
18423 return isl::ctx(isl_schedule_node_get_ctx(ptr));
18424 }
18425
18426 inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
18427 {
18428 char *str = isl_schedule_node_to_str(obj.get());
18429 if (!str) {
18430 os.setstate(std::ios_base::badbit);
18431 return os;
18432 }
18433 os << str;
18434 free(str);
18435 return os;
18436 }
18437
18438 // implementations for isl::set
manage(__isl_take isl_set * ptr)18439 set manage(__isl_take isl_set *ptr) {
18440 return set(ptr);
18441 }
manage_copy(__isl_keep isl_set * ptr)18442 set manage_copy(__isl_keep isl_set *ptr) {
18443 ptr = isl_set_copy(ptr);
18444 return set(ptr);
18445 }
18446
set()18447 set::set()
18448 : ptr(nullptr) {}
18449
set(const set & obj)18450 set::set(const set &obj)
18451 : ptr(nullptr)
18452 {
18453 ptr = obj.copy();
18454 }
18455
set(__isl_take isl_set * ptr)18456 set::set(__isl_take isl_set *ptr)
18457 : ptr(ptr) {}
18458
set(isl::basic_set bset)18459 set::set(isl::basic_set bset)
18460 {
18461 auto res = isl_set_from_basic_set(bset.release());
18462 ptr = res;
18463 }
18464
set(isl::point pnt)18465 set::set(isl::point pnt)
18466 {
18467 auto res = isl_set_from_point(pnt.release());
18468 ptr = res;
18469 }
18470
set(isl::union_set uset)18471 set::set(isl::union_set uset)
18472 {
18473 auto res = isl_set_from_union_set(uset.release());
18474 ptr = res;
18475 }
18476
set(isl::ctx ctx,const std::string & str)18477 set::set(isl::ctx ctx, const std::string &str)
18478 {
18479 auto res = isl_set_read_from_str(ctx.release(), str.c_str());
18480 ptr = res;
18481 }
18482
18483 set &set::operator=(set obj) {
18484 std::swap(this->ptr, obj.ptr);
18485 return *this;
18486 }
18487
~set()18488 set::~set() {
18489 if (ptr)
18490 isl_set_free(ptr);
18491 }
18492
copy()18493 __isl_give isl_set *set::copy() const & {
18494 return isl_set_copy(ptr);
18495 }
18496
get()18497 __isl_keep isl_set *set::get() const {
18498 return ptr;
18499 }
18500
release()18501 __isl_give isl_set *set::release() {
18502 isl_set *tmp = ptr;
18503 ptr = nullptr;
18504 return tmp;
18505 }
18506
is_null()18507 bool set::is_null() const {
18508 return ptr == nullptr;
18509 }
18510
ctx()18511 isl::ctx set::ctx() const {
18512 return isl::ctx(isl_set_get_ctx(ptr));
18513 }
18514
add_constraint(isl::constraint constraint)18515 isl::set set::add_constraint(isl::constraint constraint) const
18516 {
18517 auto res = isl_set_add_constraint(copy(), constraint.release());
18518 return manage(res);
18519 }
18520
add_dims(isl::dim type,unsigned int n)18521 isl::set set::add_dims(isl::dim type, unsigned int n) const
18522 {
18523 auto res = isl_set_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
18524 return manage(res);
18525 }
18526
affine_hull()18527 isl::basic_set set::affine_hull() const
18528 {
18529 auto res = isl_set_affine_hull(copy());
18530 return manage(res);
18531 }
18532
align_params(isl::space model)18533 isl::set set::align_params(isl::space model) const
18534 {
18535 auto res = isl_set_align_params(copy(), model.release());
18536 return manage(res);
18537 }
18538
apply(isl::map map)18539 isl::set set::apply(isl::map map) const
18540 {
18541 auto res = isl_set_apply(copy(), map.release());
18542 return manage(res);
18543 }
18544
apply(const isl::union_map & umap)18545 isl::union_set set::apply(const isl::union_map &umap) const
18546 {
18547 return isl::union_set(*this).apply(umap);
18548 }
18549
apply(const isl::basic_map & map)18550 isl::set set::apply(const isl::basic_map &map) const
18551 {
18552 return this->apply(isl::map(map));
18553 }
18554
as_pw_multi_aff()18555 isl::pw_multi_aff set::as_pw_multi_aff() const
18556 {
18557 auto res = isl_set_as_pw_multi_aff(copy());
18558 return manage(res);
18559 }
18560
as_set()18561 isl::set set::as_set() const
18562 {
18563 return isl::union_set(*this).as_set();
18564 }
18565
basic_set_list()18566 isl::basic_set_list set::basic_set_list() const
18567 {
18568 auto res = isl_set_get_basic_set_list(get());
18569 return manage(res);
18570 }
18571
get_basic_set_list()18572 isl::basic_set_list set::get_basic_set_list() const
18573 {
18574 return basic_set_list();
18575 }
18576
bind(isl::multi_id tuple)18577 isl::set set::bind(isl::multi_id tuple) const
18578 {
18579 auto res = isl_set_bind(copy(), tuple.release());
18580 return manage(res);
18581 }
18582
coalesce()18583 isl::set set::coalesce() const
18584 {
18585 auto res = isl_set_coalesce(copy());
18586 return manage(res);
18587 }
18588
complement()18589 isl::set set::complement() const
18590 {
18591 auto res = isl_set_complement(copy());
18592 return manage(res);
18593 }
18594
compute_divs()18595 isl::union_set set::compute_divs() const
18596 {
18597 return isl::union_set(*this).compute_divs();
18598 }
18599
contains(const isl::space & space)18600 boolean set::contains(const isl::space &space) const
18601 {
18602 return isl::union_set(*this).contains(space);
18603 }
18604
convex_hull()18605 isl::basic_set set::convex_hull() const
18606 {
18607 auto res = isl_set_convex_hull(copy());
18608 return manage(res);
18609 }
18610
detect_equalities()18611 isl::set set::detect_equalities() const
18612 {
18613 auto res = isl_set_detect_equalities(copy());
18614 return manage(res);
18615 }
18616
dim(isl::dim type)18617 class size set::dim(isl::dim type) const
18618 {
18619 auto res = isl_set_dim(get(), static_cast<enum isl_dim_type>(type));
18620 return manage(res);
18621 }
18622
dim_has_any_lower_bound(isl::dim type,unsigned int pos)18623 boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
18624 {
18625 auto res = isl_set_dim_has_any_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
18626 return manage(res);
18627 }
18628
dim_id(isl::dim type,unsigned int pos)18629 isl::id set::dim_id(isl::dim type, unsigned int pos) const
18630 {
18631 auto res = isl_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
18632 return manage(res);
18633 }
18634
get_dim_id(isl::dim type,unsigned int pos)18635 isl::id set::get_dim_id(isl::dim type, unsigned int pos) const
18636 {
18637 return dim_id(type, pos);
18638 }
18639
dim_max(int pos)18640 isl::pw_aff set::dim_max(int pos) const
18641 {
18642 auto res = isl_set_dim_max(copy(), pos);
18643 return manage(res);
18644 }
18645
dim_max_val(int pos)18646 isl::val set::dim_max_val(int pos) const
18647 {
18648 auto res = isl_set_dim_max_val(copy(), pos);
18649 return manage(res);
18650 }
18651
dim_min(int pos)18652 isl::pw_aff set::dim_min(int pos) const
18653 {
18654 auto res = isl_set_dim_min(copy(), pos);
18655 return manage(res);
18656 }
18657
dim_min_val(int pos)18658 isl::val set::dim_min_val(int pos) const
18659 {
18660 auto res = isl_set_dim_min_val(copy(), pos);
18661 return manage(res);
18662 }
18663
dim_name(isl::dim type,unsigned int pos)18664 std::string set::dim_name(isl::dim type, unsigned int pos) const
18665 {
18666 auto res = isl_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
18667 std::string tmp(res);
18668 return tmp;
18669 }
18670
get_dim_name(isl::dim type,unsigned int pos)18671 std::string set::get_dim_name(isl::dim type, unsigned int pos) const
18672 {
18673 return dim_name(type, pos);
18674 }
18675
drop_constraints_involving_dims(isl::dim type,unsigned int first,unsigned int n)18676 isl::set set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
18677 {
18678 auto res = isl_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
18679 return manage(res);
18680 }
18681
eliminate(isl::dim type,unsigned int first,unsigned int n)18682 isl::set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
18683 {
18684 auto res = isl_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
18685 return manage(res);
18686 }
18687
empty(isl::space space)18688 isl::set set::empty(isl::space space)
18689 {
18690 auto res = isl_set_empty(space.release());
18691 return manage(res);
18692 }
18693
every_set(const std::function<boolean (isl::set)> & test)18694 boolean set::every_set(const std::function<boolean(isl::set)> &test) const
18695 {
18696 return isl::union_set(*this).every_set(test);
18697 }
18698
extract_set(const isl::space & space)18699 isl::set set::extract_set(const isl::space &space) const
18700 {
18701 return isl::union_set(*this).extract_set(space);
18702 }
18703
find_dim_by_id(isl::dim type,const isl::id & id)18704 int set::find_dim_by_id(isl::dim type, const isl::id &id) const
18705 {
18706 auto res = isl_set_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
18707 return res;
18708 }
18709
find_dim_by_id(isl::dim type,const std::string & id)18710 int set::find_dim_by_id(isl::dim type, const std::string &id) const
18711 {
18712 return this->find_dim_by_id(type, isl::id(ctx(), id));
18713 }
18714
fix_si(isl::dim type,unsigned int pos,int value)18715 isl::set set::fix_si(isl::dim type, unsigned int pos, int value) const
18716 {
18717 auto res = isl_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
18718 return manage(res);
18719 }
18720
flatten()18721 isl::set set::flatten() const
18722 {
18723 auto res = isl_set_flatten(copy());
18724 return manage(res);
18725 }
18726
foreach_basic_set(const std::function<stat (isl::basic_set)> & fn)18727 stat set::foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const
18728 {
18729 struct fn_data {
18730 std::function<stat(isl::basic_set)> func;
18731 } fn_data = { fn };
18732 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
18733 auto *data = static_cast<struct fn_data *>(arg_1);
18734 auto ret = (data->func)(manage(arg_0));
18735 return ret.release();
18736 };
18737 auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
18738 return manage(res);
18739 }
18740
foreach_point(const std::function<stat (isl::point)> & fn)18741 stat set::foreach_point(const std::function<stat(isl::point)> &fn) const
18742 {
18743 struct fn_data {
18744 std::function<stat(isl::point)> func;
18745 } fn_data = { fn };
18746 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
18747 auto *data = static_cast<struct fn_data *>(arg_1);
18748 auto ret = (data->func)(manage(arg_0));
18749 return ret.release();
18750 };
18751 auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
18752 return manage(res);
18753 }
18754
foreach_set(const std::function<stat (isl::set)> & fn)18755 stat set::foreach_set(const std::function<stat(isl::set)> &fn) const
18756 {
18757 return isl::union_set(*this).foreach_set(fn);
18758 }
18759
gist(isl::set context)18760 isl::set set::gist(isl::set context) const
18761 {
18762 auto res = isl_set_gist(copy(), context.release());
18763 return manage(res);
18764 }
18765
gist(const isl::union_set & context)18766 isl::union_set set::gist(const isl::union_set &context) const
18767 {
18768 return isl::union_set(*this).gist(context);
18769 }
18770
gist(const isl::basic_set & context)18771 isl::set set::gist(const isl::basic_set &context) const
18772 {
18773 return this->gist(isl::set(context));
18774 }
18775
gist(const isl::point & context)18776 isl::set set::gist(const isl::point &context) const
18777 {
18778 return this->gist(isl::set(context));
18779 }
18780
gist_params(isl::set context)18781 isl::set set::gist_params(isl::set context) const
18782 {
18783 auto res = isl_set_gist_params(copy(), context.release());
18784 return manage(res);
18785 }
18786
has_equal_space(const isl::set & set2)18787 boolean set::has_equal_space(const isl::set &set2) const
18788 {
18789 auto res = isl_set_has_equal_space(get(), set2.get());
18790 return manage(res);
18791 }
18792
identity()18793 isl::map set::identity() const
18794 {
18795 auto res = isl_set_identity(copy());
18796 return manage(res);
18797 }
18798
identity_union_pw_multi_aff()18799 isl::union_pw_multi_aff set::identity_union_pw_multi_aff() const
18800 {
18801 return isl::union_set(*this).identity_union_pw_multi_aff();
18802 }
18803
indicator_function()18804 isl::pw_aff set::indicator_function() const
18805 {
18806 auto res = isl_set_indicator_function(copy());
18807 return manage(res);
18808 }
18809
insert_dims(isl::dim type,unsigned int pos,unsigned int n)18810 isl::set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
18811 {
18812 auto res = isl_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
18813 return manage(res);
18814 }
18815
insert_domain(isl::space domain)18816 isl::map set::insert_domain(isl::space domain) const
18817 {
18818 auto res = isl_set_insert_domain(copy(), domain.release());
18819 return manage(res);
18820 }
18821
intersect(isl::set set2)18822 isl::set set::intersect(isl::set set2) const
18823 {
18824 auto res = isl_set_intersect(copy(), set2.release());
18825 return manage(res);
18826 }
18827
intersect(const isl::union_set & uset2)18828 isl::union_set set::intersect(const isl::union_set &uset2) const
18829 {
18830 return isl::union_set(*this).intersect(uset2);
18831 }
18832
intersect(const isl::basic_set & set2)18833 isl::set set::intersect(const isl::basic_set &set2) const
18834 {
18835 return this->intersect(isl::set(set2));
18836 }
18837
intersect(const isl::point & set2)18838 isl::set set::intersect(const isl::point &set2) const
18839 {
18840 return this->intersect(isl::set(set2));
18841 }
18842
intersect_params(isl::set params)18843 isl::set set::intersect_params(isl::set params) const
18844 {
18845 auto res = isl_set_intersect_params(copy(), params.release());
18846 return manage(res);
18847 }
18848
involves_dims(isl::dim type,unsigned int first,unsigned int n)18849 boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
18850 {
18851 auto res = isl_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
18852 return manage(res);
18853 }
18854
involves_locals()18855 boolean set::involves_locals() const
18856 {
18857 auto res = isl_set_involves_locals(get());
18858 return manage(res);
18859 }
18860
is_bounded()18861 boolean set::is_bounded() const
18862 {
18863 auto res = isl_set_is_bounded(get());
18864 return manage(res);
18865 }
18866
is_disjoint(const isl::set & set2)18867 boolean set::is_disjoint(const isl::set &set2) const
18868 {
18869 auto res = isl_set_is_disjoint(get(), set2.get());
18870 return manage(res);
18871 }
18872
is_disjoint(const isl::union_set & uset2)18873 boolean set::is_disjoint(const isl::union_set &uset2) const
18874 {
18875 return isl::union_set(*this).is_disjoint(uset2);
18876 }
18877
is_disjoint(const isl::basic_set & set2)18878 boolean set::is_disjoint(const isl::basic_set &set2) const
18879 {
18880 return this->is_disjoint(isl::set(set2));
18881 }
18882
is_disjoint(const isl::point & set2)18883 boolean set::is_disjoint(const isl::point &set2) const
18884 {
18885 return this->is_disjoint(isl::set(set2));
18886 }
18887
is_empty()18888 boolean set::is_empty() const
18889 {
18890 auto res = isl_set_is_empty(get());
18891 return manage(res);
18892 }
18893
is_equal(const isl::set & set2)18894 boolean set::is_equal(const isl::set &set2) const
18895 {
18896 auto res = isl_set_is_equal(get(), set2.get());
18897 return manage(res);
18898 }
18899
is_equal(const isl::union_set & uset2)18900 boolean set::is_equal(const isl::union_set &uset2) const
18901 {
18902 return isl::union_set(*this).is_equal(uset2);
18903 }
18904
is_equal(const isl::basic_set & set2)18905 boolean set::is_equal(const isl::basic_set &set2) const
18906 {
18907 return this->is_equal(isl::set(set2));
18908 }
18909
is_equal(const isl::point & set2)18910 boolean set::is_equal(const isl::point &set2) const
18911 {
18912 return this->is_equal(isl::set(set2));
18913 }
18914
is_params()18915 boolean set::is_params() const
18916 {
18917 auto res = isl_set_is_params(get());
18918 return manage(res);
18919 }
18920
is_singleton()18921 boolean set::is_singleton() const
18922 {
18923 auto res = isl_set_is_singleton(get());
18924 return manage(res);
18925 }
18926
is_strict_subset(const isl::set & set2)18927 boolean set::is_strict_subset(const isl::set &set2) const
18928 {
18929 auto res = isl_set_is_strict_subset(get(), set2.get());
18930 return manage(res);
18931 }
18932
is_strict_subset(const isl::union_set & uset2)18933 boolean set::is_strict_subset(const isl::union_set &uset2) const
18934 {
18935 return isl::union_set(*this).is_strict_subset(uset2);
18936 }
18937
is_strict_subset(const isl::basic_set & set2)18938 boolean set::is_strict_subset(const isl::basic_set &set2) const
18939 {
18940 return this->is_strict_subset(isl::set(set2));
18941 }
18942
is_strict_subset(const isl::point & set2)18943 boolean set::is_strict_subset(const isl::point &set2) const
18944 {
18945 return this->is_strict_subset(isl::set(set2));
18946 }
18947
is_subset(const isl::set & set2)18948 boolean set::is_subset(const isl::set &set2) const
18949 {
18950 auto res = isl_set_is_subset(get(), set2.get());
18951 return manage(res);
18952 }
18953
is_subset(const isl::union_set & uset2)18954 boolean set::is_subset(const isl::union_set &uset2) const
18955 {
18956 return isl::union_set(*this).is_subset(uset2);
18957 }
18958
is_subset(const isl::basic_set & set2)18959 boolean set::is_subset(const isl::basic_set &set2) const
18960 {
18961 return this->is_subset(isl::set(set2));
18962 }
18963
is_subset(const isl::point & set2)18964 boolean set::is_subset(const isl::point &set2) const
18965 {
18966 return this->is_subset(isl::set(set2));
18967 }
18968
is_wrapping()18969 boolean set::is_wrapping() const
18970 {
18971 auto res = isl_set_is_wrapping(get());
18972 return manage(res);
18973 }
18974
isa_set()18975 boolean set::isa_set() const
18976 {
18977 return isl::union_set(*this).isa_set();
18978 }
18979
lexmax()18980 isl::set set::lexmax() const
18981 {
18982 auto res = isl_set_lexmax(copy());
18983 return manage(res);
18984 }
18985
lexmax_pw_multi_aff()18986 isl::pw_multi_aff set::lexmax_pw_multi_aff() const
18987 {
18988 auto res = isl_set_lexmax_pw_multi_aff(copy());
18989 return manage(res);
18990 }
18991
lexmin()18992 isl::set set::lexmin() const
18993 {
18994 auto res = isl_set_lexmin(copy());
18995 return manage(res);
18996 }
18997
lexmin_pw_multi_aff()18998 isl::pw_multi_aff set::lexmin_pw_multi_aff() const
18999 {
19000 auto res = isl_set_lexmin_pw_multi_aff(copy());
19001 return manage(res);
19002 }
19003
lower_bound(isl::multi_pw_aff lower)19004 isl::set set::lower_bound(isl::multi_pw_aff lower) const
19005 {
19006 auto res = isl_set_lower_bound_multi_pw_aff(copy(), lower.release());
19007 return manage(res);
19008 }
19009
lower_bound(isl::multi_val lower)19010 isl::set set::lower_bound(isl::multi_val lower) const
19011 {
19012 auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
19013 return manage(res);
19014 }
19015
lower_bound_si(isl::dim type,unsigned int pos,int value)19016 isl::set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
19017 {
19018 auto res = isl_set_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
19019 return manage(res);
19020 }
19021
lower_bound_val(isl::dim type,unsigned int pos,isl::val value)19022 isl::set set::lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const
19023 {
19024 auto res = isl_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
19025 return manage(res);
19026 }
19027
lower_bound_val(isl::dim type,unsigned int pos,long value)19028 isl::set set::lower_bound_val(isl::dim type, unsigned int pos, long value) const
19029 {
19030 return this->lower_bound_val(type, pos, isl::val(ctx(), value));
19031 }
19032
max_multi_pw_aff()19033 isl::multi_pw_aff set::max_multi_pw_aff() const
19034 {
19035 auto res = isl_set_max_multi_pw_aff(copy());
19036 return manage(res);
19037 }
19038
max_val(const isl::aff & obj)19039 isl::val set::max_val(const isl::aff &obj) const
19040 {
19041 auto res = isl_set_max_val(get(), obj.get());
19042 return manage(res);
19043 }
19044
min_multi_pw_aff()19045 isl::multi_pw_aff set::min_multi_pw_aff() const
19046 {
19047 auto res = isl_set_min_multi_pw_aff(copy());
19048 return manage(res);
19049 }
19050
min_val(const isl::aff & obj)19051 isl::val set::min_val(const isl::aff &obj) const
19052 {
19053 auto res = isl_set_min_val(get(), obj.get());
19054 return manage(res);
19055 }
19056
n_basic_set()19057 class size set::n_basic_set() const
19058 {
19059 auto res = isl_set_n_basic_set(get());
19060 return manage(res);
19061 }
19062
params()19063 isl::set set::params() const
19064 {
19065 auto res = isl_set_params(copy());
19066 return manage(res);
19067 }
19068
plain_get_val_if_fixed(isl::dim type,unsigned int pos)19069 isl::val set::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
19070 {
19071 auto res = isl_set_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
19072 return manage(res);
19073 }
19074
plain_multi_val_if_fixed()19075 isl::multi_val set::plain_multi_val_if_fixed() const
19076 {
19077 auto res = isl_set_get_plain_multi_val_if_fixed(get());
19078 return manage(res);
19079 }
19080
get_plain_multi_val_if_fixed()19081 isl::multi_val set::get_plain_multi_val_if_fixed() const
19082 {
19083 return plain_multi_val_if_fixed();
19084 }
19085
polyhedral_hull()19086 isl::basic_set set::polyhedral_hull() const
19087 {
19088 auto res = isl_set_polyhedral_hull(copy());
19089 return manage(res);
19090 }
19091
preimage(isl::multi_aff ma)19092 isl::set set::preimage(isl::multi_aff ma) const
19093 {
19094 auto res = isl_set_preimage_multi_aff(copy(), ma.release());
19095 return manage(res);
19096 }
19097
preimage(isl::multi_pw_aff mpa)19098 isl::set set::preimage(isl::multi_pw_aff mpa) const
19099 {
19100 auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
19101 return manage(res);
19102 }
19103
preimage(isl::pw_multi_aff pma)19104 isl::set set::preimage(isl::pw_multi_aff pma) const
19105 {
19106 auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
19107 return manage(res);
19108 }
19109
preimage(const isl::union_pw_multi_aff & upma)19110 isl::union_set set::preimage(const isl::union_pw_multi_aff &upma) const
19111 {
19112 return isl::union_set(*this).preimage(upma);
19113 }
19114
product(isl::set set2)19115 isl::set set::product(isl::set set2) const
19116 {
19117 auto res = isl_set_product(copy(), set2.release());
19118 return manage(res);
19119 }
19120
project_out(isl::dim type,unsigned int first,unsigned int n)19121 isl::set set::project_out(isl::dim type, unsigned int first, unsigned int n) const
19122 {
19123 auto res = isl_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
19124 return manage(res);
19125 }
19126
project_out_all_params()19127 isl::set set::project_out_all_params() const
19128 {
19129 auto res = isl_set_project_out_all_params(copy());
19130 return manage(res);
19131 }
19132
project_out_param(isl::id id)19133 isl::set set::project_out_param(isl::id id) const
19134 {
19135 auto res = isl_set_project_out_param_id(copy(), id.release());
19136 return manage(res);
19137 }
19138
project_out_param(const std::string & id)19139 isl::set set::project_out_param(const std::string &id) const
19140 {
19141 return this->project_out_param(isl::id(ctx(), id));
19142 }
19143
project_out_param(isl::id_list list)19144 isl::set set::project_out_param(isl::id_list list) const
19145 {
19146 auto res = isl_set_project_out_param_id_list(copy(), list.release());
19147 return manage(res);
19148 }
19149
pw_multi_aff_on_domain(isl::multi_val mv)19150 isl::pw_multi_aff set::pw_multi_aff_on_domain(isl::multi_val mv) const
19151 {
19152 auto res = isl_set_pw_multi_aff_on_domain_multi_val(copy(), mv.release());
19153 return manage(res);
19154 }
19155
remove_dims(isl::dim type,unsigned int first,unsigned int n)19156 isl::set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
19157 {
19158 auto res = isl_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
19159 return manage(res);
19160 }
19161
remove_divs()19162 isl::set set::remove_divs() const
19163 {
19164 auto res = isl_set_remove_divs(copy());
19165 return manage(res);
19166 }
19167
remove_redundancies()19168 isl::set set::remove_redundancies() const
19169 {
19170 auto res = isl_set_remove_redundancies(copy());
19171 return manage(res);
19172 }
19173
reset_tuple_id()19174 isl::set set::reset_tuple_id() const
19175 {
19176 auto res = isl_set_reset_tuple_id(copy());
19177 return manage(res);
19178 }
19179
sample()19180 isl::basic_set set::sample() const
19181 {
19182 auto res = isl_set_sample(copy());
19183 return manage(res);
19184 }
19185
sample_point()19186 isl::point set::sample_point() const
19187 {
19188 auto res = isl_set_sample_point(copy());
19189 return manage(res);
19190 }
19191
set_dim_id(isl::dim type,unsigned int pos,isl::id id)19192 isl::set set::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
19193 {
19194 auto res = isl_set_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
19195 return manage(res);
19196 }
19197
set_dim_id(isl::dim type,unsigned int pos,const std::string & id)19198 isl::set set::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
19199 {
19200 return this->set_dim_id(type, pos, isl::id(ctx(), id));
19201 }
19202
set_list()19203 isl::set_list set::set_list() const
19204 {
19205 return isl::union_set(*this).set_list();
19206 }
19207
set_tuple_id(isl::id id)19208 isl::set set::set_tuple_id(isl::id id) const
19209 {
19210 auto res = isl_set_set_tuple_id(copy(), id.release());
19211 return manage(res);
19212 }
19213
set_tuple_id(const std::string & id)19214 isl::set set::set_tuple_id(const std::string &id) const
19215 {
19216 return this->set_tuple_id(isl::id(ctx(), id));
19217 }
19218
simple_fixed_box_hull()19219 isl::fixed_box set::simple_fixed_box_hull() const
19220 {
19221 auto res = isl_set_get_simple_fixed_box_hull(get());
19222 return manage(res);
19223 }
19224
get_simple_fixed_box_hull()19225 isl::fixed_box set::get_simple_fixed_box_hull() const
19226 {
19227 return simple_fixed_box_hull();
19228 }
19229
simple_hull()19230 isl::basic_set set::simple_hull() const
19231 {
19232 auto res = isl_set_simple_hull(copy());
19233 return manage(res);
19234 }
19235
space()19236 isl::space set::space() const
19237 {
19238 auto res = isl_set_get_space(get());
19239 return manage(res);
19240 }
19241
get_space()19242 isl::space set::get_space() const
19243 {
19244 return space();
19245 }
19246
stride(int pos)19247 isl::val set::stride(int pos) const
19248 {
19249 auto res = isl_set_get_stride(get(), pos);
19250 return manage(res);
19251 }
19252
get_stride(int pos)19253 isl::val set::get_stride(int pos) const
19254 {
19255 return stride(pos);
19256 }
19257
subtract(isl::set set2)19258 isl::set set::subtract(isl::set set2) const
19259 {
19260 auto res = isl_set_subtract(copy(), set2.release());
19261 return manage(res);
19262 }
19263
subtract(const isl::union_set & uset2)19264 isl::union_set set::subtract(const isl::union_set &uset2) const
19265 {
19266 return isl::union_set(*this).subtract(uset2);
19267 }
19268
subtract(const isl::basic_set & set2)19269 isl::set set::subtract(const isl::basic_set &set2) const
19270 {
19271 return this->subtract(isl::set(set2));
19272 }
19273
subtract(const isl::point & set2)19274 isl::set set::subtract(const isl::point &set2) const
19275 {
19276 return this->subtract(isl::set(set2));
19277 }
19278
to_list()19279 isl::set_list set::to_list() const
19280 {
19281 auto res = isl_set_to_list(copy());
19282 return manage(res);
19283 }
19284
to_union_set()19285 isl::union_set set::to_union_set() const
19286 {
19287 auto res = isl_set_to_union_set(copy());
19288 return manage(res);
19289 }
19290
translation()19291 isl::map set::translation() const
19292 {
19293 auto res = isl_set_translation(copy());
19294 return manage(res);
19295 }
19296
tuple_dim()19297 class size set::tuple_dim() const
19298 {
19299 auto res = isl_set_tuple_dim(get());
19300 return manage(res);
19301 }
19302
tuple_id()19303 isl::id set::tuple_id() const
19304 {
19305 auto res = isl_set_get_tuple_id(get());
19306 return manage(res);
19307 }
19308
get_tuple_id()19309 isl::id set::get_tuple_id() const
19310 {
19311 return tuple_id();
19312 }
19313
tuple_name()19314 std::string set::tuple_name() const
19315 {
19316 auto res = isl_set_get_tuple_name(get());
19317 std::string tmp(res);
19318 return tmp;
19319 }
19320
get_tuple_name()19321 std::string set::get_tuple_name() const
19322 {
19323 return tuple_name();
19324 }
19325
unbind_params(isl::multi_id tuple)19326 isl::set set::unbind_params(isl::multi_id tuple) const
19327 {
19328 auto res = isl_set_unbind_params(copy(), tuple.release());
19329 return manage(res);
19330 }
19331
unbind_params_insert_domain(isl::multi_id domain)19332 isl::map set::unbind_params_insert_domain(isl::multi_id domain) const
19333 {
19334 auto res = isl_set_unbind_params_insert_domain(copy(), domain.release());
19335 return manage(res);
19336 }
19337
unite(isl::set set2)19338 isl::set set::unite(isl::set set2) const
19339 {
19340 auto res = isl_set_union(copy(), set2.release());
19341 return manage(res);
19342 }
19343
unite(const isl::union_set & uset2)19344 isl::union_set set::unite(const isl::union_set &uset2) const
19345 {
19346 return isl::union_set(*this).unite(uset2);
19347 }
19348
unite(const isl::basic_set & set2)19349 isl::set set::unite(const isl::basic_set &set2) const
19350 {
19351 return this->unite(isl::set(set2));
19352 }
19353
unite(const isl::point & set2)19354 isl::set set::unite(const isl::point &set2) const
19355 {
19356 return this->unite(isl::set(set2));
19357 }
19358
universe(isl::space space)19359 isl::set set::universe(isl::space space)
19360 {
19361 auto res = isl_set_universe(space.release());
19362 return manage(res);
19363 }
19364
unshifted_simple_hull()19365 isl::basic_set set::unshifted_simple_hull() const
19366 {
19367 auto res = isl_set_unshifted_simple_hull(copy());
19368 return manage(res);
19369 }
19370
unwrap()19371 isl::map set::unwrap() const
19372 {
19373 auto res = isl_set_unwrap(copy());
19374 return manage(res);
19375 }
19376
upper_bound(isl::multi_pw_aff upper)19377 isl::set set::upper_bound(isl::multi_pw_aff upper) const
19378 {
19379 auto res = isl_set_upper_bound_multi_pw_aff(copy(), upper.release());
19380 return manage(res);
19381 }
19382
upper_bound(isl::multi_val upper)19383 isl::set set::upper_bound(isl::multi_val upper) const
19384 {
19385 auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
19386 return manage(res);
19387 }
19388
upper_bound_val(isl::dim type,unsigned int pos,isl::val value)19389 isl::set set::upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const
19390 {
19391 auto res = isl_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
19392 return manage(res);
19393 }
19394
upper_bound_val(isl::dim type,unsigned int pos,long value)19395 isl::set set::upper_bound_val(isl::dim type, unsigned int pos, long value) const
19396 {
19397 return this->upper_bound_val(type, pos, isl::val(ctx(), value));
19398 }
19399
19400 inline std::ostream &operator<<(std::ostream &os, const set &obj)
19401 {
19402 char *str = isl_set_to_str(obj.get());
19403 if (!str) {
19404 os.setstate(std::ios_base::badbit);
19405 return os;
19406 }
19407 os << str;
19408 free(str);
19409 return os;
19410 }
19411
19412 // implementations for isl::set_list
manage(__isl_take isl_set_list * ptr)19413 set_list manage(__isl_take isl_set_list *ptr) {
19414 return set_list(ptr);
19415 }
manage_copy(__isl_keep isl_set_list * ptr)19416 set_list manage_copy(__isl_keep isl_set_list *ptr) {
19417 ptr = isl_set_list_copy(ptr);
19418 return set_list(ptr);
19419 }
19420
set_list()19421 set_list::set_list()
19422 : ptr(nullptr) {}
19423
set_list(const set_list & obj)19424 set_list::set_list(const set_list &obj)
19425 : ptr(nullptr)
19426 {
19427 ptr = obj.copy();
19428 }
19429
set_list(__isl_take isl_set_list * ptr)19430 set_list::set_list(__isl_take isl_set_list *ptr)
19431 : ptr(ptr) {}
19432
set_list(isl::ctx ctx,int n)19433 set_list::set_list(isl::ctx ctx, int n)
19434 {
19435 auto res = isl_set_list_alloc(ctx.release(), n);
19436 ptr = res;
19437 }
19438
set_list(isl::set el)19439 set_list::set_list(isl::set el)
19440 {
19441 auto res = isl_set_list_from_set(el.release());
19442 ptr = res;
19443 }
19444
set_list(isl::ctx ctx,const std::string & str)19445 set_list::set_list(isl::ctx ctx, const std::string &str)
19446 {
19447 auto res = isl_set_list_read_from_str(ctx.release(), str.c_str());
19448 ptr = res;
19449 }
19450
19451 set_list &set_list::operator=(set_list obj) {
19452 std::swap(this->ptr, obj.ptr);
19453 return *this;
19454 }
19455
~set_list()19456 set_list::~set_list() {
19457 if (ptr)
19458 isl_set_list_free(ptr);
19459 }
19460
copy()19461 __isl_give isl_set_list *set_list::copy() const & {
19462 return isl_set_list_copy(ptr);
19463 }
19464
get()19465 __isl_keep isl_set_list *set_list::get() const {
19466 return ptr;
19467 }
19468
release()19469 __isl_give isl_set_list *set_list::release() {
19470 isl_set_list *tmp = ptr;
19471 ptr = nullptr;
19472 return tmp;
19473 }
19474
is_null()19475 bool set_list::is_null() const {
19476 return ptr == nullptr;
19477 }
19478
ctx()19479 isl::ctx set_list::ctx() const {
19480 return isl::ctx(isl_set_list_get_ctx(ptr));
19481 }
19482
add(isl::set el)19483 isl::set_list set_list::add(isl::set el) const
19484 {
19485 auto res = isl_set_list_add(copy(), el.release());
19486 return manage(res);
19487 }
19488
at(int index)19489 isl::set set_list::at(int index) const
19490 {
19491 auto res = isl_set_list_get_at(get(), index);
19492 return manage(res);
19493 }
19494
get_at(int index)19495 isl::set set_list::get_at(int index) const
19496 {
19497 return at(index);
19498 }
19499
clear()19500 isl::set_list set_list::clear() const
19501 {
19502 auto res = isl_set_list_clear(copy());
19503 return manage(res);
19504 }
19505
concat(isl::set_list list2)19506 isl::set_list set_list::concat(isl::set_list list2) const
19507 {
19508 auto res = isl_set_list_concat(copy(), list2.release());
19509 return manage(res);
19510 }
19511
drop(unsigned int first,unsigned int n)19512 isl::set_list set_list::drop(unsigned int first, unsigned int n) const
19513 {
19514 auto res = isl_set_list_drop(copy(), first, n);
19515 return manage(res);
19516 }
19517
foreach(const std::function<stat (isl::set)> & fn)19518 stat set_list::foreach(const std::function<stat(isl::set)> &fn) const
19519 {
19520 struct fn_data {
19521 std::function<stat(isl::set)> func;
19522 } fn_data = { fn };
19523 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
19524 auto *data = static_cast<struct fn_data *>(arg_1);
19525 auto ret = (data->func)(manage(arg_0));
19526 return ret.release();
19527 };
19528 auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
19529 return manage(res);
19530 }
19531
insert(unsigned int pos,isl::set el)19532 isl::set_list set_list::insert(unsigned int pos, isl::set el) const
19533 {
19534 auto res = isl_set_list_insert(copy(), pos, el.release());
19535 return manage(res);
19536 }
19537
size()19538 class size set_list::size() const
19539 {
19540 auto res = isl_set_list_size(get());
19541 return manage(res);
19542 }
19543
19544 inline std::ostream &operator<<(std::ostream &os, const set_list &obj)
19545 {
19546 char *str = isl_set_list_to_str(obj.get());
19547 if (!str) {
19548 os.setstate(std::ios_base::badbit);
19549 return os;
19550 }
19551 os << str;
19552 free(str);
19553 return os;
19554 }
19555
19556 // implementations for isl::space
manage(__isl_take isl_space * ptr)19557 space manage(__isl_take isl_space *ptr) {
19558 return space(ptr);
19559 }
manage_copy(__isl_keep isl_space * ptr)19560 space manage_copy(__isl_keep isl_space *ptr) {
19561 ptr = isl_space_copy(ptr);
19562 return space(ptr);
19563 }
19564
space()19565 space::space()
19566 : ptr(nullptr) {}
19567
space(const space & obj)19568 space::space(const space &obj)
19569 : ptr(nullptr)
19570 {
19571 ptr = obj.copy();
19572 }
19573
space(__isl_take isl_space * ptr)19574 space::space(__isl_take isl_space *ptr)
19575 : ptr(ptr) {}
19576
space(isl::ctx ctx,unsigned int nparam,unsigned int n_in,unsigned int n_out)19577 space::space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out)
19578 {
19579 auto res = isl_space_alloc(ctx.release(), nparam, n_in, n_out);
19580 ptr = res;
19581 }
19582
space(isl::ctx ctx,unsigned int nparam,unsigned int dim)19583 space::space(isl::ctx ctx, unsigned int nparam, unsigned int dim)
19584 {
19585 auto res = isl_space_set_alloc(ctx.release(), nparam, dim);
19586 ptr = res;
19587 }
19588
19589 space &space::operator=(space obj) {
19590 std::swap(this->ptr, obj.ptr);
19591 return *this;
19592 }
19593
~space()19594 space::~space() {
19595 if (ptr)
19596 isl_space_free(ptr);
19597 }
19598
copy()19599 __isl_give isl_space *space::copy() const & {
19600 return isl_space_copy(ptr);
19601 }
19602
get()19603 __isl_keep isl_space *space::get() const {
19604 return ptr;
19605 }
19606
release()19607 __isl_give isl_space *space::release() {
19608 isl_space *tmp = ptr;
19609 ptr = nullptr;
19610 return tmp;
19611 }
19612
is_null()19613 bool space::is_null() const {
19614 return ptr == nullptr;
19615 }
19616
ctx()19617 isl::ctx space::ctx() const {
19618 return isl::ctx(isl_space_get_ctx(ptr));
19619 }
19620
add_dims(isl::dim type,unsigned int n)19621 isl::space space::add_dims(isl::dim type, unsigned int n) const
19622 {
19623 auto res = isl_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
19624 return manage(res);
19625 }
19626
add_named_tuple(isl::id tuple_id,unsigned int dim)19627 isl::space space::add_named_tuple(isl::id tuple_id, unsigned int dim) const
19628 {
19629 auto res = isl_space_add_named_tuple_id_ui(copy(), tuple_id.release(), dim);
19630 return manage(res);
19631 }
19632
add_named_tuple(const std::string & tuple_id,unsigned int dim)19633 isl::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
19634 {
19635 return this->add_named_tuple(isl::id(ctx(), tuple_id), dim);
19636 }
19637
add_param(isl::id id)19638 isl::space space::add_param(isl::id id) const
19639 {
19640 auto res = isl_space_add_param_id(copy(), id.release());
19641 return manage(res);
19642 }
19643
add_param(const std::string & id)19644 isl::space space::add_param(const std::string &id) const
19645 {
19646 return this->add_param(isl::id(ctx(), id));
19647 }
19648
add_unnamed_tuple(unsigned int dim)19649 isl::space space::add_unnamed_tuple(unsigned int dim) const
19650 {
19651 auto res = isl_space_add_unnamed_tuple_ui(copy(), dim);
19652 return manage(res);
19653 }
19654
align_params(isl::space space2)19655 isl::space space::align_params(isl::space space2) const
19656 {
19657 auto res = isl_space_align_params(copy(), space2.release());
19658 return manage(res);
19659 }
19660
curry()19661 isl::space space::curry() const
19662 {
19663 auto res = isl_space_curry(copy());
19664 return manage(res);
19665 }
19666
dim(isl::dim type)19667 class size space::dim(isl::dim type) const
19668 {
19669 auto res = isl_space_dim(get(), static_cast<enum isl_dim_type>(type));
19670 return manage(res);
19671 }
19672
dim_id(isl::dim type,unsigned int pos)19673 isl::id space::dim_id(isl::dim type, unsigned int pos) const
19674 {
19675 auto res = isl_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
19676 return manage(res);
19677 }
19678
get_dim_id(isl::dim type,unsigned int pos)19679 isl::id space::get_dim_id(isl::dim type, unsigned int pos) const
19680 {
19681 return dim_id(type, pos);
19682 }
19683
domain()19684 isl::space space::domain() const
19685 {
19686 auto res = isl_space_domain(copy());
19687 return manage(res);
19688 }
19689
domain_map_multi_aff()19690 isl::multi_aff space::domain_map_multi_aff() const
19691 {
19692 auto res = isl_space_domain_map_multi_aff(copy());
19693 return manage(res);
19694 }
19695
domain_map_pw_multi_aff()19696 isl::pw_multi_aff space::domain_map_pw_multi_aff() const
19697 {
19698 auto res = isl_space_domain_map_pw_multi_aff(copy());
19699 return manage(res);
19700 }
19701
domain_tuple_id()19702 isl::id space::domain_tuple_id() const
19703 {
19704 auto res = isl_space_get_domain_tuple_id(get());
19705 return manage(res);
19706 }
19707
get_domain_tuple_id()19708 isl::id space::get_domain_tuple_id() const
19709 {
19710 return domain_tuple_id();
19711 }
19712
drop_dims(isl::dim type,unsigned int first,unsigned int num)19713 isl::space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const
19714 {
19715 auto res = isl_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, num);
19716 return manage(res);
19717 }
19718
find_dim_by_id(isl::dim type,const isl::id & id)19719 int space::find_dim_by_id(isl::dim type, const isl::id &id) const
19720 {
19721 auto res = isl_space_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
19722 return res;
19723 }
19724
find_dim_by_id(isl::dim type,const std::string & id)19725 int space::find_dim_by_id(isl::dim type, const std::string &id) const
19726 {
19727 return this->find_dim_by_id(type, isl::id(ctx(), id));
19728 }
19729
flatten_domain()19730 isl::space space::flatten_domain() const
19731 {
19732 auto res = isl_space_flatten_domain(copy());
19733 return manage(res);
19734 }
19735
flatten_range()19736 isl::space space::flatten_range() const
19737 {
19738 auto res = isl_space_flatten_range(copy());
19739 return manage(res);
19740 }
19741
has_domain_tuple_id()19742 boolean space::has_domain_tuple_id() const
19743 {
19744 auto res = isl_space_has_domain_tuple_id(get());
19745 return manage(res);
19746 }
19747
has_equal_tuples(const isl::space & space2)19748 boolean space::has_equal_tuples(const isl::space &space2) const
19749 {
19750 auto res = isl_space_has_equal_tuples(get(), space2.get());
19751 return manage(res);
19752 }
19753
has_range_tuple_id()19754 boolean space::has_range_tuple_id() const
19755 {
19756 auto res = isl_space_has_range_tuple_id(get());
19757 return manage(res);
19758 }
19759
has_tuple_id(isl::dim type)19760 boolean space::has_tuple_id(isl::dim type) const
19761 {
19762 auto res = isl_space_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
19763 return manage(res);
19764 }
19765
has_tuple_name(isl::dim type)19766 boolean space::has_tuple_name(isl::dim type) const
19767 {
19768 auto res = isl_space_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
19769 return manage(res);
19770 }
19771
identity_multi_aff_on_domain()19772 isl::multi_aff space::identity_multi_aff_on_domain() const
19773 {
19774 auto res = isl_space_identity_multi_aff_on_domain(copy());
19775 return manage(res);
19776 }
19777
identity_multi_pw_aff_on_domain()19778 isl::multi_pw_aff space::identity_multi_pw_aff_on_domain() const
19779 {
19780 auto res = isl_space_identity_multi_pw_aff_on_domain(copy());
19781 return manage(res);
19782 }
19783
identity_pw_multi_aff_on_domain()19784 isl::pw_multi_aff space::identity_pw_multi_aff_on_domain() const
19785 {
19786 auto res = isl_space_identity_pw_multi_aff_on_domain(copy());
19787 return manage(res);
19788 }
19789
is_equal(const isl::space & space2)19790 boolean space::is_equal(const isl::space &space2) const
19791 {
19792 auto res = isl_space_is_equal(get(), space2.get());
19793 return manage(res);
19794 }
19795
is_params()19796 boolean space::is_params() const
19797 {
19798 auto res = isl_space_is_params(get());
19799 return manage(res);
19800 }
19801
is_set()19802 boolean space::is_set() const
19803 {
19804 auto res = isl_space_is_set(get());
19805 return manage(res);
19806 }
19807
is_wrapping()19808 boolean space::is_wrapping() const
19809 {
19810 auto res = isl_space_is_wrapping(get());
19811 return manage(res);
19812 }
19813
map_from_domain_and_range(isl::space range)19814 isl::space space::map_from_domain_and_range(isl::space range) const
19815 {
19816 auto res = isl_space_map_from_domain_and_range(copy(), range.release());
19817 return manage(res);
19818 }
19819
map_from_set()19820 isl::space space::map_from_set() const
19821 {
19822 auto res = isl_space_map_from_set(copy());
19823 return manage(res);
19824 }
19825
multi_aff(isl::aff_list list)19826 isl::multi_aff space::multi_aff(isl::aff_list list) const
19827 {
19828 auto res = isl_space_multi_aff(copy(), list.release());
19829 return manage(res);
19830 }
19831
multi_aff_on_domain(isl::multi_val mv)19832 isl::multi_aff space::multi_aff_on_domain(isl::multi_val mv) const
19833 {
19834 auto res = isl_space_multi_aff_on_domain_multi_val(copy(), mv.release());
19835 return manage(res);
19836 }
19837
multi_id(isl::id_list list)19838 isl::multi_id space::multi_id(isl::id_list list) const
19839 {
19840 auto res = isl_space_multi_id(copy(), list.release());
19841 return manage(res);
19842 }
19843
multi_pw_aff(isl::pw_aff_list list)19844 isl::multi_pw_aff space::multi_pw_aff(isl::pw_aff_list list) const
19845 {
19846 auto res = isl_space_multi_pw_aff(copy(), list.release());
19847 return manage(res);
19848 }
19849
multi_union_pw_aff(isl::union_pw_aff_list list)19850 isl::multi_union_pw_aff space::multi_union_pw_aff(isl::union_pw_aff_list list) const
19851 {
19852 auto res = isl_space_multi_union_pw_aff(copy(), list.release());
19853 return manage(res);
19854 }
19855
multi_val(isl::val_list list)19856 isl::multi_val space::multi_val(isl::val_list list) const
19857 {
19858 auto res = isl_space_multi_val(copy(), list.release());
19859 return manage(res);
19860 }
19861
param_aff_on_domain(isl::id id)19862 isl::aff space::param_aff_on_domain(isl::id id) const
19863 {
19864 auto res = isl_space_param_aff_on_domain_id(copy(), id.release());
19865 return manage(res);
19866 }
19867
param_aff_on_domain(const std::string & id)19868 isl::aff space::param_aff_on_domain(const std::string &id) const
19869 {
19870 return this->param_aff_on_domain(isl::id(ctx(), id));
19871 }
19872
params()19873 isl::space space::params() const
19874 {
19875 auto res = isl_space_params(copy());
19876 return manage(res);
19877 }
19878
params_alloc(isl::ctx ctx,unsigned int nparam)19879 isl::space space::params_alloc(isl::ctx ctx, unsigned int nparam)
19880 {
19881 auto res = isl_space_params_alloc(ctx.release(), nparam);
19882 return manage(res);
19883 }
19884
product(isl::space right)19885 isl::space space::product(isl::space right) const
19886 {
19887 auto res = isl_space_product(copy(), right.release());
19888 return manage(res);
19889 }
19890
range()19891 isl::space space::range() const
19892 {
19893 auto res = isl_space_range(copy());
19894 return manage(res);
19895 }
19896
range_map_multi_aff()19897 isl::multi_aff space::range_map_multi_aff() const
19898 {
19899 auto res = isl_space_range_map_multi_aff(copy());
19900 return manage(res);
19901 }
19902
range_map_pw_multi_aff()19903 isl::pw_multi_aff space::range_map_pw_multi_aff() const
19904 {
19905 auto res = isl_space_range_map_pw_multi_aff(copy());
19906 return manage(res);
19907 }
19908
range_reverse()19909 isl::space space::range_reverse() const
19910 {
19911 auto res = isl_space_range_reverse(copy());
19912 return manage(res);
19913 }
19914
range_tuple_id()19915 isl::id space::range_tuple_id() const
19916 {
19917 auto res = isl_space_get_range_tuple_id(get());
19918 return manage(res);
19919 }
19920
get_range_tuple_id()19921 isl::id space::get_range_tuple_id() const
19922 {
19923 return range_tuple_id();
19924 }
19925
reverse()19926 isl::space space::reverse() const
19927 {
19928 auto res = isl_space_reverse(copy());
19929 return manage(res);
19930 }
19931
set_dim_id(isl::dim type,unsigned int pos,isl::id id)19932 isl::space space::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
19933 {
19934 auto res = isl_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
19935 return manage(res);
19936 }
19937
set_dim_id(isl::dim type,unsigned int pos,const std::string & id)19938 isl::space space::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
19939 {
19940 return this->set_dim_id(type, pos, isl::id(ctx(), id));
19941 }
19942
set_domain_tuple(isl::id id)19943 isl::space space::set_domain_tuple(isl::id id) const
19944 {
19945 auto res = isl_space_set_domain_tuple_id(copy(), id.release());
19946 return manage(res);
19947 }
19948
set_domain_tuple(const std::string & id)19949 isl::space space::set_domain_tuple(const std::string &id) const
19950 {
19951 return this->set_domain_tuple(isl::id(ctx(), id));
19952 }
19953
set_from_params()19954 isl::space space::set_from_params() const
19955 {
19956 auto res = isl_space_set_from_params(copy());
19957 return manage(res);
19958 }
19959
set_range_tuple(isl::id id)19960 isl::space space::set_range_tuple(isl::id id) const
19961 {
19962 auto res = isl_space_set_range_tuple_id(copy(), id.release());
19963 return manage(res);
19964 }
19965
set_range_tuple(const std::string & id)19966 isl::space space::set_range_tuple(const std::string &id) const
19967 {
19968 return this->set_range_tuple(isl::id(ctx(), id));
19969 }
19970
set_tuple_id(isl::dim type,isl::id id)19971 isl::space space::set_tuple_id(isl::dim type, isl::id id) const
19972 {
19973 auto res = isl_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
19974 return manage(res);
19975 }
19976
set_tuple_id(isl::dim type,const std::string & id)19977 isl::space space::set_tuple_id(isl::dim type, const std::string &id) const
19978 {
19979 return this->set_tuple_id(type, isl::id(ctx(), id));
19980 }
19981
tuple_id(isl::dim type)19982 isl::id space::tuple_id(isl::dim type) const
19983 {
19984 auto res = isl_space_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
19985 return manage(res);
19986 }
19987
get_tuple_id(isl::dim type)19988 isl::id space::get_tuple_id(isl::dim type) const
19989 {
19990 return tuple_id(type);
19991 }
19992
tuple_name(isl::dim type)19993 std::string space::tuple_name(isl::dim type) const
19994 {
19995 auto res = isl_space_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
19996 std::string tmp(res);
19997 return tmp;
19998 }
19999
get_tuple_name(isl::dim type)20000 std::string space::get_tuple_name(isl::dim type) const
20001 {
20002 return tuple_name(type);
20003 }
20004
uncurry()20005 isl::space space::uncurry() const
20006 {
20007 auto res = isl_space_uncurry(copy());
20008 return manage(res);
20009 }
20010
unit(isl::ctx ctx)20011 isl::space space::unit(isl::ctx ctx)
20012 {
20013 auto res = isl_space_unit(ctx.release());
20014 return manage(res);
20015 }
20016
universe_map()20017 isl::map space::universe_map() const
20018 {
20019 auto res = isl_space_universe_map(copy());
20020 return manage(res);
20021 }
20022
universe_set()20023 isl::set space::universe_set() const
20024 {
20025 auto res = isl_space_universe_set(copy());
20026 return manage(res);
20027 }
20028
unwrap()20029 isl::space space::unwrap() const
20030 {
20031 auto res = isl_space_unwrap(copy());
20032 return manage(res);
20033 }
20034
wrap()20035 isl::space space::wrap() const
20036 {
20037 auto res = isl_space_wrap(copy());
20038 return manage(res);
20039 }
20040
zero_aff_on_domain()20041 isl::aff space::zero_aff_on_domain() const
20042 {
20043 auto res = isl_space_zero_aff_on_domain(copy());
20044 return manage(res);
20045 }
20046
zero_multi_aff()20047 isl::multi_aff space::zero_multi_aff() const
20048 {
20049 auto res = isl_space_zero_multi_aff(copy());
20050 return manage(res);
20051 }
20052
zero_multi_pw_aff()20053 isl::multi_pw_aff space::zero_multi_pw_aff() const
20054 {
20055 auto res = isl_space_zero_multi_pw_aff(copy());
20056 return manage(res);
20057 }
20058
zero_multi_union_pw_aff()20059 isl::multi_union_pw_aff space::zero_multi_union_pw_aff() const
20060 {
20061 auto res = isl_space_zero_multi_union_pw_aff(copy());
20062 return manage(res);
20063 }
20064
zero_multi_val()20065 isl::multi_val space::zero_multi_val() const
20066 {
20067 auto res = isl_space_zero_multi_val(copy());
20068 return manage(res);
20069 }
20070
20071 inline std::ostream &operator<<(std::ostream &os, const space &obj)
20072 {
20073 char *str = isl_space_to_str(obj.get());
20074 if (!str) {
20075 os.setstate(std::ios_base::badbit);
20076 return os;
20077 }
20078 os << str;
20079 free(str);
20080 return os;
20081 }
20082
20083 // implementations for isl::union_access_info
manage(__isl_take isl_union_access_info * ptr)20084 union_access_info manage(__isl_take isl_union_access_info *ptr) {
20085 return union_access_info(ptr);
20086 }
manage_copy(__isl_keep isl_union_access_info * ptr)20087 union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
20088 ptr = isl_union_access_info_copy(ptr);
20089 return union_access_info(ptr);
20090 }
20091
union_access_info()20092 union_access_info::union_access_info()
20093 : ptr(nullptr) {}
20094
union_access_info(const union_access_info & obj)20095 union_access_info::union_access_info(const union_access_info &obj)
20096 : ptr(nullptr)
20097 {
20098 ptr = obj.copy();
20099 }
20100
union_access_info(__isl_take isl_union_access_info * ptr)20101 union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
20102 : ptr(ptr) {}
20103
union_access_info(isl::union_map sink)20104 union_access_info::union_access_info(isl::union_map sink)
20105 {
20106 auto res = isl_union_access_info_from_sink(sink.release());
20107 ptr = res;
20108 }
20109
20110 union_access_info &union_access_info::operator=(union_access_info obj) {
20111 std::swap(this->ptr, obj.ptr);
20112 return *this;
20113 }
20114
~union_access_info()20115 union_access_info::~union_access_info() {
20116 if (ptr)
20117 isl_union_access_info_free(ptr);
20118 }
20119
copy()20120 __isl_give isl_union_access_info *union_access_info::copy() const & {
20121 return isl_union_access_info_copy(ptr);
20122 }
20123
get()20124 __isl_keep isl_union_access_info *union_access_info::get() const {
20125 return ptr;
20126 }
20127
release()20128 __isl_give isl_union_access_info *union_access_info::release() {
20129 isl_union_access_info *tmp = ptr;
20130 ptr = nullptr;
20131 return tmp;
20132 }
20133
is_null()20134 bool union_access_info::is_null() const {
20135 return ptr == nullptr;
20136 }
20137
ctx()20138 isl::ctx union_access_info::ctx() const {
20139 return isl::ctx(isl_union_access_info_get_ctx(ptr));
20140 }
20141
compute_flow()20142 isl::union_flow union_access_info::compute_flow() const
20143 {
20144 auto res = isl_union_access_info_compute_flow(copy());
20145 return manage(res);
20146 }
20147
set_kill(isl::union_map kill)20148 isl::union_access_info union_access_info::set_kill(isl::union_map kill) const
20149 {
20150 auto res = isl_union_access_info_set_kill(copy(), kill.release());
20151 return manage(res);
20152 }
20153
set_may_source(isl::union_map may_source)20154 isl::union_access_info union_access_info::set_may_source(isl::union_map may_source) const
20155 {
20156 auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
20157 return manage(res);
20158 }
20159
set_must_source(isl::union_map must_source)20160 isl::union_access_info union_access_info::set_must_source(isl::union_map must_source) const
20161 {
20162 auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
20163 return manage(res);
20164 }
20165
set_schedule(isl::schedule schedule)20166 isl::union_access_info union_access_info::set_schedule(isl::schedule schedule) const
20167 {
20168 auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
20169 return manage(res);
20170 }
20171
set_schedule_map(isl::union_map schedule_map)20172 isl::union_access_info union_access_info::set_schedule_map(isl::union_map schedule_map) const
20173 {
20174 auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
20175 return manage(res);
20176 }
20177
20178 inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
20179 {
20180 char *str = isl_union_access_info_to_str(obj.get());
20181 if (!str) {
20182 os.setstate(std::ios_base::badbit);
20183 return os;
20184 }
20185 os << str;
20186 free(str);
20187 return os;
20188 }
20189
20190 // implementations for isl::union_flow
manage(__isl_take isl_union_flow * ptr)20191 union_flow manage(__isl_take isl_union_flow *ptr) {
20192 return union_flow(ptr);
20193 }
manage_copy(__isl_keep isl_union_flow * ptr)20194 union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
20195 ptr = isl_union_flow_copy(ptr);
20196 return union_flow(ptr);
20197 }
20198
union_flow()20199 union_flow::union_flow()
20200 : ptr(nullptr) {}
20201
union_flow(const union_flow & obj)20202 union_flow::union_flow(const union_flow &obj)
20203 : ptr(nullptr)
20204 {
20205 ptr = obj.copy();
20206 }
20207
union_flow(__isl_take isl_union_flow * ptr)20208 union_flow::union_flow(__isl_take isl_union_flow *ptr)
20209 : ptr(ptr) {}
20210
20211 union_flow &union_flow::operator=(union_flow obj) {
20212 std::swap(this->ptr, obj.ptr);
20213 return *this;
20214 }
20215
~union_flow()20216 union_flow::~union_flow() {
20217 if (ptr)
20218 isl_union_flow_free(ptr);
20219 }
20220
copy()20221 __isl_give isl_union_flow *union_flow::copy() const & {
20222 return isl_union_flow_copy(ptr);
20223 }
20224
get()20225 __isl_keep isl_union_flow *union_flow::get() const {
20226 return ptr;
20227 }
20228
release()20229 __isl_give isl_union_flow *union_flow::release() {
20230 isl_union_flow *tmp = ptr;
20231 ptr = nullptr;
20232 return tmp;
20233 }
20234
is_null()20235 bool union_flow::is_null() const {
20236 return ptr == nullptr;
20237 }
20238
ctx()20239 isl::ctx union_flow::ctx() const {
20240 return isl::ctx(isl_union_flow_get_ctx(ptr));
20241 }
20242
full_may_dependence()20243 isl::union_map union_flow::full_may_dependence() const
20244 {
20245 auto res = isl_union_flow_get_full_may_dependence(get());
20246 return manage(res);
20247 }
20248
get_full_may_dependence()20249 isl::union_map union_flow::get_full_may_dependence() const
20250 {
20251 return full_may_dependence();
20252 }
20253
full_must_dependence()20254 isl::union_map union_flow::full_must_dependence() const
20255 {
20256 auto res = isl_union_flow_get_full_must_dependence(get());
20257 return manage(res);
20258 }
20259
get_full_must_dependence()20260 isl::union_map union_flow::get_full_must_dependence() const
20261 {
20262 return full_must_dependence();
20263 }
20264
may_dependence()20265 isl::union_map union_flow::may_dependence() const
20266 {
20267 auto res = isl_union_flow_get_may_dependence(get());
20268 return manage(res);
20269 }
20270
get_may_dependence()20271 isl::union_map union_flow::get_may_dependence() const
20272 {
20273 return may_dependence();
20274 }
20275
may_no_source()20276 isl::union_map union_flow::may_no_source() const
20277 {
20278 auto res = isl_union_flow_get_may_no_source(get());
20279 return manage(res);
20280 }
20281
get_may_no_source()20282 isl::union_map union_flow::get_may_no_source() const
20283 {
20284 return may_no_source();
20285 }
20286
must_dependence()20287 isl::union_map union_flow::must_dependence() const
20288 {
20289 auto res = isl_union_flow_get_must_dependence(get());
20290 return manage(res);
20291 }
20292
get_must_dependence()20293 isl::union_map union_flow::get_must_dependence() const
20294 {
20295 return must_dependence();
20296 }
20297
must_no_source()20298 isl::union_map union_flow::must_no_source() const
20299 {
20300 auto res = isl_union_flow_get_must_no_source(get());
20301 return manage(res);
20302 }
20303
get_must_no_source()20304 isl::union_map union_flow::get_must_no_source() const
20305 {
20306 return must_no_source();
20307 }
20308
20309 inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
20310 {
20311 char *str = isl_union_flow_to_str(obj.get());
20312 if (!str) {
20313 os.setstate(std::ios_base::badbit);
20314 return os;
20315 }
20316 os << str;
20317 free(str);
20318 return os;
20319 }
20320
20321 // implementations for isl::union_map
manage(__isl_take isl_union_map * ptr)20322 union_map manage(__isl_take isl_union_map *ptr) {
20323 return union_map(ptr);
20324 }
manage_copy(__isl_keep isl_union_map * ptr)20325 union_map manage_copy(__isl_keep isl_union_map *ptr) {
20326 ptr = isl_union_map_copy(ptr);
20327 return union_map(ptr);
20328 }
20329
union_map()20330 union_map::union_map()
20331 : ptr(nullptr) {}
20332
union_map(const union_map & obj)20333 union_map::union_map(const union_map &obj)
20334 : ptr(nullptr)
20335 {
20336 ptr = obj.copy();
20337 }
20338
union_map(__isl_take isl_union_map * ptr)20339 union_map::union_map(__isl_take isl_union_map *ptr)
20340 : ptr(ptr) {}
20341
union_map(isl::basic_map bmap)20342 union_map::union_map(isl::basic_map bmap)
20343 {
20344 auto res = isl_union_map_from_basic_map(bmap.release());
20345 ptr = res;
20346 }
20347
union_map(isl::map map)20348 union_map::union_map(isl::map map)
20349 {
20350 auto res = isl_union_map_from_map(map.release());
20351 ptr = res;
20352 }
20353
union_map(isl::ctx ctx,const std::string & str)20354 union_map::union_map(isl::ctx ctx, const std::string &str)
20355 {
20356 auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
20357 ptr = res;
20358 }
20359
20360 union_map &union_map::operator=(union_map obj) {
20361 std::swap(this->ptr, obj.ptr);
20362 return *this;
20363 }
20364
~union_map()20365 union_map::~union_map() {
20366 if (ptr)
20367 isl_union_map_free(ptr);
20368 }
20369
copy()20370 __isl_give isl_union_map *union_map::copy() const & {
20371 return isl_union_map_copy(ptr);
20372 }
20373
get()20374 __isl_keep isl_union_map *union_map::get() const {
20375 return ptr;
20376 }
20377
release()20378 __isl_give isl_union_map *union_map::release() {
20379 isl_union_map *tmp = ptr;
20380 ptr = nullptr;
20381 return tmp;
20382 }
20383
is_null()20384 bool union_map::is_null() const {
20385 return ptr == nullptr;
20386 }
20387
ctx()20388 isl::ctx union_map::ctx() const {
20389 return isl::ctx(isl_union_map_get_ctx(ptr));
20390 }
20391
affine_hull()20392 isl::union_map union_map::affine_hull() const
20393 {
20394 auto res = isl_union_map_affine_hull(copy());
20395 return manage(res);
20396 }
20397
apply_domain(isl::union_map umap2)20398 isl::union_map union_map::apply_domain(isl::union_map umap2) const
20399 {
20400 auto res = isl_union_map_apply_domain(copy(), umap2.release());
20401 return manage(res);
20402 }
20403
apply_range(isl::union_map umap2)20404 isl::union_map union_map::apply_range(isl::union_map umap2) const
20405 {
20406 auto res = isl_union_map_apply_range(copy(), umap2.release());
20407 return manage(res);
20408 }
20409
as_map()20410 isl::map union_map::as_map() const
20411 {
20412 auto res = isl_union_map_as_map(copy());
20413 return manage(res);
20414 }
20415
as_multi_union_pw_aff()20416 isl::multi_union_pw_aff union_map::as_multi_union_pw_aff() const
20417 {
20418 auto res = isl_union_map_as_multi_union_pw_aff(copy());
20419 return manage(res);
20420 }
20421
as_union_pw_multi_aff()20422 isl::union_pw_multi_aff union_map::as_union_pw_multi_aff() const
20423 {
20424 auto res = isl_union_map_as_union_pw_multi_aff(copy());
20425 return manage(res);
20426 }
20427
bind_range(isl::multi_id tuple)20428 isl::union_set union_map::bind_range(isl::multi_id tuple) const
20429 {
20430 auto res = isl_union_map_bind_range(copy(), tuple.release());
20431 return manage(res);
20432 }
20433
coalesce()20434 isl::union_map union_map::coalesce() const
20435 {
20436 auto res = isl_union_map_coalesce(copy());
20437 return manage(res);
20438 }
20439
compute_divs()20440 isl::union_map union_map::compute_divs() const
20441 {
20442 auto res = isl_union_map_compute_divs(copy());
20443 return manage(res);
20444 }
20445
curry()20446 isl::union_map union_map::curry() const
20447 {
20448 auto res = isl_union_map_curry(copy());
20449 return manage(res);
20450 }
20451
deltas()20452 isl::union_set union_map::deltas() const
20453 {
20454 auto res = isl_union_map_deltas(copy());
20455 return manage(res);
20456 }
20457
detect_equalities()20458 isl::union_map union_map::detect_equalities() const
20459 {
20460 auto res = isl_union_map_detect_equalities(copy());
20461 return manage(res);
20462 }
20463
domain()20464 isl::union_set union_map::domain() const
20465 {
20466 auto res = isl_union_map_domain(copy());
20467 return manage(res);
20468 }
20469
domain_factor_domain()20470 isl::union_map union_map::domain_factor_domain() const
20471 {
20472 auto res = isl_union_map_domain_factor_domain(copy());
20473 return manage(res);
20474 }
20475
domain_factor_range()20476 isl::union_map union_map::domain_factor_range() const
20477 {
20478 auto res = isl_union_map_domain_factor_range(copy());
20479 return manage(res);
20480 }
20481
domain_map()20482 isl::union_map union_map::domain_map() const
20483 {
20484 auto res = isl_union_map_domain_map(copy());
20485 return manage(res);
20486 }
20487
domain_map_union_pw_multi_aff()20488 isl::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
20489 {
20490 auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
20491 return manage(res);
20492 }
20493
domain_product(isl::union_map umap2)20494 isl::union_map union_map::domain_product(isl::union_map umap2) const
20495 {
20496 auto res = isl_union_map_domain_product(copy(), umap2.release());
20497 return manage(res);
20498 }
20499
empty(isl::ctx ctx)20500 isl::union_map union_map::empty(isl::ctx ctx)
20501 {
20502 auto res = isl_union_map_empty_ctx(ctx.release());
20503 return manage(res);
20504 }
20505
eq_at(isl::multi_union_pw_aff mupa)20506 isl::union_map union_map::eq_at(isl::multi_union_pw_aff mupa) const
20507 {
20508 auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
20509 return manage(res);
20510 }
20511
every_map(const std::function<boolean (isl::map)> & test)20512 boolean union_map::every_map(const std::function<boolean(isl::map)> &test) const
20513 {
20514 struct test_data {
20515 std::function<boolean(isl::map)> func;
20516 } test_data = { test };
20517 auto test_lambda = [](isl_map *arg_0, void *arg_1) -> isl_bool {
20518 auto *data = static_cast<struct test_data *>(arg_1);
20519 auto ret = (data->func)(manage_copy(arg_0));
20520 return ret.release();
20521 };
20522 auto res = isl_union_map_every_map(get(), test_lambda, &test_data);
20523 return manage(res);
20524 }
20525
extract_map(isl::space space)20526 isl::map union_map::extract_map(isl::space space) const
20527 {
20528 auto res = isl_union_map_extract_map(get(), space.release());
20529 return manage(res);
20530 }
20531
factor_domain()20532 isl::union_map union_map::factor_domain() const
20533 {
20534 auto res = isl_union_map_factor_domain(copy());
20535 return manage(res);
20536 }
20537
factor_range()20538 isl::union_map union_map::factor_range() const
20539 {
20540 auto res = isl_union_map_factor_range(copy());
20541 return manage(res);
20542 }
20543
fixed_power(isl::val exp)20544 isl::union_map union_map::fixed_power(isl::val exp) const
20545 {
20546 auto res = isl_union_map_fixed_power_val(copy(), exp.release());
20547 return manage(res);
20548 }
20549
fixed_power(long exp)20550 isl::union_map union_map::fixed_power(long exp) const
20551 {
20552 return this->fixed_power(isl::val(ctx(), exp));
20553 }
20554
flat_range_product(isl::union_map umap2)20555 isl::union_map union_map::flat_range_product(isl::union_map umap2) const
20556 {
20557 auto res = isl_union_map_flat_range_product(copy(), umap2.release());
20558 return manage(res);
20559 }
20560
foreach_map(const std::function<stat (isl::map)> & fn)20561 stat union_map::foreach_map(const std::function<stat(isl::map)> &fn) const
20562 {
20563 struct fn_data {
20564 std::function<stat(isl::map)> func;
20565 } fn_data = { fn };
20566 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
20567 auto *data = static_cast<struct fn_data *>(arg_1);
20568 auto ret = (data->func)(manage(arg_0));
20569 return ret.release();
20570 };
20571 auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
20572 return manage(res);
20573 }
20574
from(isl::multi_union_pw_aff mupa)20575 isl::union_map union_map::from(isl::multi_union_pw_aff mupa)
20576 {
20577 auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
20578 return manage(res);
20579 }
20580
from(isl::union_pw_multi_aff upma)20581 isl::union_map union_map::from(isl::union_pw_multi_aff upma)
20582 {
20583 auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
20584 return manage(res);
20585 }
20586
from_domain(isl::union_set uset)20587 isl::union_map union_map::from_domain(isl::union_set uset)
20588 {
20589 auto res = isl_union_map_from_domain(uset.release());
20590 return manage(res);
20591 }
20592
from_domain_and_range(isl::union_set domain,isl::union_set range)20593 isl::union_map union_map::from_domain_and_range(isl::union_set domain, isl::union_set range)
20594 {
20595 auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
20596 return manage(res);
20597 }
20598
from_range(isl::union_set uset)20599 isl::union_map union_map::from_range(isl::union_set uset)
20600 {
20601 auto res = isl_union_map_from_range(uset.release());
20602 return manage(res);
20603 }
20604
gist(isl::union_map context)20605 isl::union_map union_map::gist(isl::union_map context) const
20606 {
20607 auto res = isl_union_map_gist(copy(), context.release());
20608 return manage(res);
20609 }
20610
gist_domain(isl::union_set uset)20611 isl::union_map union_map::gist_domain(isl::union_set uset) const
20612 {
20613 auto res = isl_union_map_gist_domain(copy(), uset.release());
20614 return manage(res);
20615 }
20616
gist_params(isl::set set)20617 isl::union_map union_map::gist_params(isl::set set) const
20618 {
20619 auto res = isl_union_map_gist_params(copy(), set.release());
20620 return manage(res);
20621 }
20622
gist_range(isl::union_set uset)20623 isl::union_map union_map::gist_range(isl::union_set uset) const
20624 {
20625 auto res = isl_union_map_gist_range(copy(), uset.release());
20626 return manage(res);
20627 }
20628
intersect(isl::union_map umap2)20629 isl::union_map union_map::intersect(isl::union_map umap2) const
20630 {
20631 auto res = isl_union_map_intersect(copy(), umap2.release());
20632 return manage(res);
20633 }
20634
intersect_domain(isl::space space)20635 isl::union_map union_map::intersect_domain(isl::space space) const
20636 {
20637 auto res = isl_union_map_intersect_domain_space(copy(), space.release());
20638 return manage(res);
20639 }
20640
intersect_domain(isl::union_set uset)20641 isl::union_map union_map::intersect_domain(isl::union_set uset) const
20642 {
20643 auto res = isl_union_map_intersect_domain_union_set(copy(), uset.release());
20644 return manage(res);
20645 }
20646
intersect_domain_factor_domain(isl::union_map factor)20647 isl::union_map union_map::intersect_domain_factor_domain(isl::union_map factor) const
20648 {
20649 auto res = isl_union_map_intersect_domain_factor_domain(copy(), factor.release());
20650 return manage(res);
20651 }
20652
intersect_domain_factor_range(isl::union_map factor)20653 isl::union_map union_map::intersect_domain_factor_range(isl::union_map factor) const
20654 {
20655 auto res = isl_union_map_intersect_domain_factor_range(copy(), factor.release());
20656 return manage(res);
20657 }
20658
intersect_params(isl::set set)20659 isl::union_map union_map::intersect_params(isl::set set) const
20660 {
20661 auto res = isl_union_map_intersect_params(copy(), set.release());
20662 return manage(res);
20663 }
20664
intersect_range(isl::space space)20665 isl::union_map union_map::intersect_range(isl::space space) const
20666 {
20667 auto res = isl_union_map_intersect_range_space(copy(), space.release());
20668 return manage(res);
20669 }
20670
intersect_range(isl::union_set uset)20671 isl::union_map union_map::intersect_range(isl::union_set uset) const
20672 {
20673 auto res = isl_union_map_intersect_range_union_set(copy(), uset.release());
20674 return manage(res);
20675 }
20676
intersect_range_factor_domain(isl::union_map factor)20677 isl::union_map union_map::intersect_range_factor_domain(isl::union_map factor) const
20678 {
20679 auto res = isl_union_map_intersect_range_factor_domain(copy(), factor.release());
20680 return manage(res);
20681 }
20682
intersect_range_factor_range(isl::union_map factor)20683 isl::union_map union_map::intersect_range_factor_range(isl::union_map factor) const
20684 {
20685 auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
20686 return manage(res);
20687 }
20688
is_bijective()20689 boolean union_map::is_bijective() const
20690 {
20691 auto res = isl_union_map_is_bijective(get());
20692 return manage(res);
20693 }
20694
is_disjoint(const isl::union_map & umap2)20695 boolean union_map::is_disjoint(const isl::union_map &umap2) const
20696 {
20697 auto res = isl_union_map_is_disjoint(get(), umap2.get());
20698 return manage(res);
20699 }
20700
is_empty()20701 boolean union_map::is_empty() const
20702 {
20703 auto res = isl_union_map_is_empty(get());
20704 return manage(res);
20705 }
20706
is_equal(const isl::union_map & umap2)20707 boolean union_map::is_equal(const isl::union_map &umap2) const
20708 {
20709 auto res = isl_union_map_is_equal(get(), umap2.get());
20710 return manage(res);
20711 }
20712
is_injective()20713 boolean union_map::is_injective() const
20714 {
20715 auto res = isl_union_map_is_injective(get());
20716 return manage(res);
20717 }
20718
is_single_valued()20719 boolean union_map::is_single_valued() const
20720 {
20721 auto res = isl_union_map_is_single_valued(get());
20722 return manage(res);
20723 }
20724
is_strict_subset(const isl::union_map & umap2)20725 boolean union_map::is_strict_subset(const isl::union_map &umap2) const
20726 {
20727 auto res = isl_union_map_is_strict_subset(get(), umap2.get());
20728 return manage(res);
20729 }
20730
is_subset(const isl::union_map & umap2)20731 boolean union_map::is_subset(const isl::union_map &umap2) const
20732 {
20733 auto res = isl_union_map_is_subset(get(), umap2.get());
20734 return manage(res);
20735 }
20736
isa_map()20737 boolean union_map::isa_map() const
20738 {
20739 auto res = isl_union_map_isa_map(get());
20740 return manage(res);
20741 }
20742
lexmax()20743 isl::union_map union_map::lexmax() const
20744 {
20745 auto res = isl_union_map_lexmax(copy());
20746 return manage(res);
20747 }
20748
lexmin()20749 isl::union_map union_map::lexmin() const
20750 {
20751 auto res = isl_union_map_lexmin(copy());
20752 return manage(res);
20753 }
20754
map_list()20755 isl::map_list union_map::map_list() const
20756 {
20757 auto res = isl_union_map_get_map_list(get());
20758 return manage(res);
20759 }
20760
get_map_list()20761 isl::map_list union_map::get_map_list() const
20762 {
20763 return map_list();
20764 }
20765
params()20766 isl::set union_map::params() const
20767 {
20768 auto res = isl_union_map_params(copy());
20769 return manage(res);
20770 }
20771
polyhedral_hull()20772 isl::union_map union_map::polyhedral_hull() const
20773 {
20774 auto res = isl_union_map_polyhedral_hull(copy());
20775 return manage(res);
20776 }
20777
preimage_domain(isl::multi_aff ma)20778 isl::union_map union_map::preimage_domain(isl::multi_aff ma) const
20779 {
20780 auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
20781 return manage(res);
20782 }
20783
preimage_domain(isl::multi_pw_aff mpa)20784 isl::union_map union_map::preimage_domain(isl::multi_pw_aff mpa) const
20785 {
20786 auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
20787 return manage(res);
20788 }
20789
preimage_domain(isl::pw_multi_aff pma)20790 isl::union_map union_map::preimage_domain(isl::pw_multi_aff pma) const
20791 {
20792 auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
20793 return manage(res);
20794 }
20795
preimage_domain(isl::union_pw_multi_aff upma)20796 isl::union_map union_map::preimage_domain(isl::union_pw_multi_aff upma) const
20797 {
20798 auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
20799 return manage(res);
20800 }
20801
preimage_range(isl::multi_aff ma)20802 isl::union_map union_map::preimage_range(isl::multi_aff ma) const
20803 {
20804 auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
20805 return manage(res);
20806 }
20807
preimage_range(isl::pw_multi_aff pma)20808 isl::union_map union_map::preimage_range(isl::pw_multi_aff pma) const
20809 {
20810 auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
20811 return manage(res);
20812 }
20813
preimage_range(isl::union_pw_multi_aff upma)20814 isl::union_map union_map::preimage_range(isl::union_pw_multi_aff upma) const
20815 {
20816 auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
20817 return manage(res);
20818 }
20819
product(isl::union_map umap2)20820 isl::union_map union_map::product(isl::union_map umap2) const
20821 {
20822 auto res = isl_union_map_product(copy(), umap2.release());
20823 return manage(res);
20824 }
20825
project_out_all_params()20826 isl::union_map union_map::project_out_all_params() const
20827 {
20828 auto res = isl_union_map_project_out_all_params(copy());
20829 return manage(res);
20830 }
20831
range()20832 isl::union_set union_map::range() const
20833 {
20834 auto res = isl_union_map_range(copy());
20835 return manage(res);
20836 }
20837
range_factor_domain()20838 isl::union_map union_map::range_factor_domain() const
20839 {
20840 auto res = isl_union_map_range_factor_domain(copy());
20841 return manage(res);
20842 }
20843
range_factor_range()20844 isl::union_map union_map::range_factor_range() const
20845 {
20846 auto res = isl_union_map_range_factor_range(copy());
20847 return manage(res);
20848 }
20849
range_map()20850 isl::union_map union_map::range_map() const
20851 {
20852 auto res = isl_union_map_range_map(copy());
20853 return manage(res);
20854 }
20855
range_product(isl::union_map umap2)20856 isl::union_map union_map::range_product(isl::union_map umap2) const
20857 {
20858 auto res = isl_union_map_range_product(copy(), umap2.release());
20859 return manage(res);
20860 }
20861
range_reverse()20862 isl::union_map union_map::range_reverse() const
20863 {
20864 auto res = isl_union_map_range_reverse(copy());
20865 return manage(res);
20866 }
20867
reverse()20868 isl::union_map union_map::reverse() const
20869 {
20870 auto res = isl_union_map_reverse(copy());
20871 return manage(res);
20872 }
20873
space()20874 isl::space union_map::space() const
20875 {
20876 auto res = isl_union_map_get_space(get());
20877 return manage(res);
20878 }
20879
get_space()20880 isl::space union_map::get_space() const
20881 {
20882 return space();
20883 }
20884
subtract(isl::union_map umap2)20885 isl::union_map union_map::subtract(isl::union_map umap2) const
20886 {
20887 auto res = isl_union_map_subtract(copy(), umap2.release());
20888 return manage(res);
20889 }
20890
subtract_domain(isl::union_set dom)20891 isl::union_map union_map::subtract_domain(isl::union_set dom) const
20892 {
20893 auto res = isl_union_map_subtract_domain(copy(), dom.release());
20894 return manage(res);
20895 }
20896
subtract_range(isl::union_set dom)20897 isl::union_map union_map::subtract_range(isl::union_set dom) const
20898 {
20899 auto res = isl_union_map_subtract_range(copy(), dom.release());
20900 return manage(res);
20901 }
20902
uncurry()20903 isl::union_map union_map::uncurry() const
20904 {
20905 auto res = isl_union_map_uncurry(copy());
20906 return manage(res);
20907 }
20908
unite(isl::union_map umap2)20909 isl::union_map union_map::unite(isl::union_map umap2) const
20910 {
20911 auto res = isl_union_map_union(copy(), umap2.release());
20912 return manage(res);
20913 }
20914
universe()20915 isl::union_map union_map::universe() const
20916 {
20917 auto res = isl_union_map_universe(copy());
20918 return manage(res);
20919 }
20920
wrap()20921 isl::union_set union_map::wrap() const
20922 {
20923 auto res = isl_union_map_wrap(copy());
20924 return manage(res);
20925 }
20926
zip()20927 isl::union_map union_map::zip() const
20928 {
20929 auto res = isl_union_map_zip(copy());
20930 return manage(res);
20931 }
20932
20933 inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
20934 {
20935 char *str = isl_union_map_to_str(obj.get());
20936 if (!str) {
20937 os.setstate(std::ios_base::badbit);
20938 return os;
20939 }
20940 os << str;
20941 free(str);
20942 return os;
20943 }
20944
20945 // implementations for isl::union_pw_aff
manage(__isl_take isl_union_pw_aff * ptr)20946 union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
20947 return union_pw_aff(ptr);
20948 }
manage_copy(__isl_keep isl_union_pw_aff * ptr)20949 union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
20950 ptr = isl_union_pw_aff_copy(ptr);
20951 return union_pw_aff(ptr);
20952 }
20953
union_pw_aff()20954 union_pw_aff::union_pw_aff()
20955 : ptr(nullptr) {}
20956
union_pw_aff(const union_pw_aff & obj)20957 union_pw_aff::union_pw_aff(const union_pw_aff &obj)
20958 : ptr(nullptr)
20959 {
20960 ptr = obj.copy();
20961 }
20962
union_pw_aff(__isl_take isl_union_pw_aff * ptr)20963 union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
20964 : ptr(ptr) {}
20965
union_pw_aff(isl::aff aff)20966 union_pw_aff::union_pw_aff(isl::aff aff)
20967 {
20968 auto res = isl_union_pw_aff_from_aff(aff.release());
20969 ptr = res;
20970 }
20971
union_pw_aff(isl::pw_aff pa)20972 union_pw_aff::union_pw_aff(isl::pw_aff pa)
20973 {
20974 auto res = isl_union_pw_aff_from_pw_aff(pa.release());
20975 ptr = res;
20976 }
20977
union_pw_aff(isl::ctx ctx,const std::string & str)20978 union_pw_aff::union_pw_aff(isl::ctx ctx, const std::string &str)
20979 {
20980 auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
20981 ptr = res;
20982 }
20983
union_pw_aff(isl::union_set domain,isl::val v)20984 union_pw_aff::union_pw_aff(isl::union_set domain, isl::val v)
20985 {
20986 auto res = isl_union_pw_aff_val_on_domain(domain.release(), v.release());
20987 ptr = res;
20988 }
20989
20990 union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
20991 std::swap(this->ptr, obj.ptr);
20992 return *this;
20993 }
20994
~union_pw_aff()20995 union_pw_aff::~union_pw_aff() {
20996 if (ptr)
20997 isl_union_pw_aff_free(ptr);
20998 }
20999
copy()21000 __isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
21001 return isl_union_pw_aff_copy(ptr);
21002 }
21003
get()21004 __isl_keep isl_union_pw_aff *union_pw_aff::get() const {
21005 return ptr;
21006 }
21007
release()21008 __isl_give isl_union_pw_aff *union_pw_aff::release() {
21009 isl_union_pw_aff *tmp = ptr;
21010 ptr = nullptr;
21011 return tmp;
21012 }
21013
is_null()21014 bool union_pw_aff::is_null() const {
21015 return ptr == nullptr;
21016 }
21017
ctx()21018 isl::ctx union_pw_aff::ctx() const {
21019 return isl::ctx(isl_union_pw_aff_get_ctx(ptr));
21020 }
21021
add(const isl::multi_union_pw_aff & multi2)21022 isl::multi_union_pw_aff union_pw_aff::add(const isl::multi_union_pw_aff &multi2) const
21023 {
21024 return isl::multi_union_pw_aff(*this).add(multi2);
21025 }
21026
add(isl::union_pw_aff upa2)21027 isl::union_pw_aff union_pw_aff::add(isl::union_pw_aff upa2) const
21028 {
21029 auto res = isl_union_pw_aff_add(copy(), upa2.release());
21030 return manage(res);
21031 }
21032
add(const isl::union_pw_multi_aff & upma2)21033 isl::union_pw_multi_aff union_pw_aff::add(const isl::union_pw_multi_aff &upma2) const
21034 {
21035 return isl::union_pw_multi_aff(*this).add(upma2);
21036 }
21037
add(const isl::aff & upa2)21038 isl::union_pw_aff union_pw_aff::add(const isl::aff &upa2) const
21039 {
21040 return this->add(isl::union_pw_aff(upa2));
21041 }
21042
add(const isl::pw_aff & upa2)21043 isl::union_pw_aff union_pw_aff::add(const isl::pw_aff &upa2) const
21044 {
21045 return this->add(isl::union_pw_aff(upa2));
21046 }
21047
add_pw_multi_aff(const isl::pw_multi_aff & pma)21048 isl::union_pw_multi_aff union_pw_aff::add_pw_multi_aff(const isl::pw_multi_aff &pma) const
21049 {
21050 return isl::union_pw_multi_aff(*this).add_pw_multi_aff(pma);
21051 }
21052
apply(const isl::union_pw_multi_aff & upma2)21053 isl::union_pw_multi_aff union_pw_aff::apply(const isl::union_pw_multi_aff &upma2) const
21054 {
21055 return isl::union_pw_multi_aff(*this).apply(upma2);
21056 }
21057
as_multi_union_pw_aff()21058 isl::multi_union_pw_aff union_pw_aff::as_multi_union_pw_aff() const
21059 {
21060 return isl::union_pw_multi_aff(*this).as_multi_union_pw_aff();
21061 }
21062
as_pw_multi_aff()21063 isl::pw_multi_aff union_pw_aff::as_pw_multi_aff() const
21064 {
21065 return isl::union_pw_multi_aff(*this).as_pw_multi_aff();
21066 }
21067
as_union_map()21068 isl::union_map union_pw_aff::as_union_map() const
21069 {
21070 return isl::union_pw_multi_aff(*this).as_union_map();
21071 }
21072
at(int pos)21073 isl::union_pw_aff union_pw_aff::at(int pos) const
21074 {
21075 return isl::multi_union_pw_aff(*this).at(pos);
21076 }
21077
bind(const isl::multi_id & tuple)21078 isl::union_set union_pw_aff::bind(const isl::multi_id &tuple) const
21079 {
21080 return isl::multi_union_pw_aff(*this).bind(tuple);
21081 }
21082
bind(isl::id id)21083 isl::union_set union_pw_aff::bind(isl::id id) const
21084 {
21085 auto res = isl_union_pw_aff_bind_id(copy(), id.release());
21086 return manage(res);
21087 }
21088
bind(const std::string & id)21089 isl::union_set union_pw_aff::bind(const std::string &id) const
21090 {
21091 return this->bind(isl::id(ctx(), id));
21092 }
21093
coalesce()21094 isl::union_pw_aff union_pw_aff::coalesce() const
21095 {
21096 auto res = isl_union_pw_aff_coalesce(copy());
21097 return manage(res);
21098 }
21099
dim(isl::dim type)21100 class size union_pw_aff::dim(isl::dim type) const
21101 {
21102 return isl::multi_union_pw_aff(*this).dim(type);
21103 }
21104
domain()21105 isl::union_set union_pw_aff::domain() const
21106 {
21107 auto res = isl_union_pw_aff_domain(copy());
21108 return manage(res);
21109 }
21110
empty(isl::space space)21111 isl::union_pw_aff union_pw_aff::empty(isl::space space)
21112 {
21113 auto res = isl_union_pw_aff_empty(space.release());
21114 return manage(res);
21115 }
21116
extract_pw_multi_aff(const isl::space & space)21117 isl::pw_multi_aff union_pw_aff::extract_pw_multi_aff(const isl::space &space) const
21118 {
21119 return isl::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
21120 }
21121
flat_range_product(const isl::multi_union_pw_aff & multi2)21122 isl::multi_union_pw_aff union_pw_aff::flat_range_product(const isl::multi_union_pw_aff &multi2) const
21123 {
21124 return isl::multi_union_pw_aff(*this).flat_range_product(multi2);
21125 }
21126
flat_range_product(const isl::union_pw_multi_aff & upma2)21127 isl::union_pw_multi_aff union_pw_aff::flat_range_product(const isl::union_pw_multi_aff &upma2) const
21128 {
21129 return isl::union_pw_multi_aff(*this).flat_range_product(upma2);
21130 }
21131
foreach_pw_aff(const std::function<stat (isl::pw_aff)> & fn)21132 stat union_pw_aff::foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const
21133 {
21134 struct fn_data {
21135 std::function<stat(isl::pw_aff)> func;
21136 } fn_data = { fn };
21137 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
21138 auto *data = static_cast<struct fn_data *>(arg_1);
21139 auto ret = (data->func)(manage(arg_0));
21140 return ret.release();
21141 };
21142 auto res = isl_union_pw_aff_foreach_pw_aff(get(), fn_lambda, &fn_data);
21143 return manage(res);
21144 }
21145
gist(isl::union_set context)21146 isl::union_pw_aff union_pw_aff::gist(isl::union_set context) const
21147 {
21148 auto res = isl_union_pw_aff_gist(copy(), context.release());
21149 return manage(res);
21150 }
21151
has_range_tuple_id()21152 boolean union_pw_aff::has_range_tuple_id() const
21153 {
21154 return isl::multi_union_pw_aff(*this).has_range_tuple_id();
21155 }
21156
intersect_domain(isl::space space)21157 isl::union_pw_aff union_pw_aff::intersect_domain(isl::space space) const
21158 {
21159 auto res = isl_union_pw_aff_intersect_domain_space(copy(), space.release());
21160 return manage(res);
21161 }
21162
intersect_domain(isl::union_set uset)21163 isl::union_pw_aff union_pw_aff::intersect_domain(isl::union_set uset) const
21164 {
21165 auto res = isl_union_pw_aff_intersect_domain_union_set(copy(), uset.release());
21166 return manage(res);
21167 }
21168
intersect_domain_wrapped_domain(isl::union_set uset)21169 isl::union_pw_aff union_pw_aff::intersect_domain_wrapped_domain(isl::union_set uset) const
21170 {
21171 auto res = isl_union_pw_aff_intersect_domain_wrapped_domain(copy(), uset.release());
21172 return manage(res);
21173 }
21174
intersect_domain_wrapped_range(isl::union_set uset)21175 isl::union_pw_aff union_pw_aff::intersect_domain_wrapped_range(isl::union_set uset) const
21176 {
21177 auto res = isl_union_pw_aff_intersect_domain_wrapped_range(copy(), uset.release());
21178 return manage(res);
21179 }
21180
intersect_params(isl::set set)21181 isl::union_pw_aff union_pw_aff::intersect_params(isl::set set) const
21182 {
21183 auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
21184 return manage(res);
21185 }
21186
involves_locals()21187 boolean union_pw_aff::involves_locals() const
21188 {
21189 return isl::union_pw_multi_aff(*this).involves_locals();
21190 }
21191
involves_nan()21192 boolean union_pw_aff::involves_nan() const
21193 {
21194 return isl::multi_union_pw_aff(*this).involves_nan();
21195 }
21196
isa_pw_multi_aff()21197 boolean union_pw_aff::isa_pw_multi_aff() const
21198 {
21199 return isl::union_pw_multi_aff(*this).isa_pw_multi_aff();
21200 }
21201
list()21202 isl::union_pw_aff_list union_pw_aff::list() const
21203 {
21204 return isl::multi_union_pw_aff(*this).list();
21205 }
21206
neg()21207 isl::multi_union_pw_aff union_pw_aff::neg() const
21208 {
21209 return isl::multi_union_pw_aff(*this).neg();
21210 }
21211
plain_is_empty()21212 boolean union_pw_aff::plain_is_empty() const
21213 {
21214 return isl::union_pw_multi_aff(*this).plain_is_empty();
21215 }
21216
plain_is_equal(const isl::multi_union_pw_aff & multi2)21217 boolean union_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
21218 {
21219 return isl::multi_union_pw_aff(*this).plain_is_equal(multi2);
21220 }
21221
preimage_domain_wrapped_domain(const isl::union_pw_multi_aff & upma2)21222 isl::union_pw_multi_aff union_pw_aff::preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
21223 {
21224 return isl::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
21225 }
21226
pullback(isl::union_pw_multi_aff upma)21227 isl::union_pw_aff union_pw_aff::pullback(isl::union_pw_multi_aff upma) const
21228 {
21229 auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
21230 return manage(res);
21231 }
21232
pw_multi_aff_list()21233 isl::pw_multi_aff_list union_pw_aff::pw_multi_aff_list() const
21234 {
21235 return isl::union_pw_multi_aff(*this).pw_multi_aff_list();
21236 }
21237
range_factor_domain()21238 isl::union_pw_multi_aff union_pw_aff::range_factor_domain() const
21239 {
21240 return isl::union_pw_multi_aff(*this).range_factor_domain();
21241 }
21242
range_factor_range()21243 isl::union_pw_multi_aff union_pw_aff::range_factor_range() const
21244 {
21245 return isl::union_pw_multi_aff(*this).range_factor_range();
21246 }
21247
range_product(const isl::multi_union_pw_aff & multi2)21248 isl::multi_union_pw_aff union_pw_aff::range_product(const isl::multi_union_pw_aff &multi2) const
21249 {
21250 return isl::multi_union_pw_aff(*this).range_product(multi2);
21251 }
21252
range_product(const isl::union_pw_multi_aff & upma2)21253 isl::union_pw_multi_aff union_pw_aff::range_product(const isl::union_pw_multi_aff &upma2) const
21254 {
21255 return isl::union_pw_multi_aff(*this).range_product(upma2);
21256 }
21257
range_tuple_id()21258 isl::id union_pw_aff::range_tuple_id() const
21259 {
21260 return isl::multi_union_pw_aff(*this).range_tuple_id();
21261 }
21262
reset_range_tuple_id()21263 isl::multi_union_pw_aff union_pw_aff::reset_range_tuple_id() const
21264 {
21265 return isl::multi_union_pw_aff(*this).reset_range_tuple_id();
21266 }
21267
reset_tuple_id(isl::dim type)21268 isl::multi_union_pw_aff union_pw_aff::reset_tuple_id(isl::dim type) const
21269 {
21270 return isl::multi_union_pw_aff(*this).reset_tuple_id(type);
21271 }
21272
scale(const isl::multi_val & mv)21273 isl::multi_union_pw_aff union_pw_aff::scale(const isl::multi_val &mv) const
21274 {
21275 return isl::multi_union_pw_aff(*this).scale(mv);
21276 }
21277
scale(const isl::val & v)21278 isl::multi_union_pw_aff union_pw_aff::scale(const isl::val &v) const
21279 {
21280 return isl::multi_union_pw_aff(*this).scale(v);
21281 }
21282
scale(long v)21283 isl::multi_union_pw_aff union_pw_aff::scale(long v) const
21284 {
21285 return this->scale(isl::val(ctx(), v));
21286 }
21287
scale_down(const isl::multi_val & mv)21288 isl::multi_union_pw_aff union_pw_aff::scale_down(const isl::multi_val &mv) const
21289 {
21290 return isl::multi_union_pw_aff(*this).scale_down(mv);
21291 }
21292
scale_down(const isl::val & v)21293 isl::multi_union_pw_aff union_pw_aff::scale_down(const isl::val &v) const
21294 {
21295 return isl::multi_union_pw_aff(*this).scale_down(v);
21296 }
21297
scale_down(long v)21298 isl::multi_union_pw_aff union_pw_aff::scale_down(long v) const
21299 {
21300 return this->scale_down(isl::val(ctx(), v));
21301 }
21302
set_at(int pos,const isl::union_pw_aff & el)21303 isl::multi_union_pw_aff union_pw_aff::set_at(int pos, const isl::union_pw_aff &el) const
21304 {
21305 return isl::multi_union_pw_aff(*this).set_at(pos, el);
21306 }
21307
set_range_tuple(const isl::id & id)21308 isl::multi_union_pw_aff union_pw_aff::set_range_tuple(const isl::id &id) const
21309 {
21310 return isl::multi_union_pw_aff(*this).set_range_tuple(id);
21311 }
21312
set_range_tuple(const std::string & id)21313 isl::multi_union_pw_aff union_pw_aff::set_range_tuple(const std::string &id) const
21314 {
21315 return this->set_range_tuple(isl::id(ctx(), id));
21316 }
21317
set_union_pw_aff(int pos,const isl::union_pw_aff & el)21318 isl::multi_union_pw_aff union_pw_aff::set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
21319 {
21320 return isl::multi_union_pw_aff(*this).set_union_pw_aff(pos, el);
21321 }
21322
size()21323 class size union_pw_aff::size() const
21324 {
21325 return isl::multi_union_pw_aff(*this).size();
21326 }
21327
space()21328 isl::space union_pw_aff::space() const
21329 {
21330 auto res = isl_union_pw_aff_get_space(get());
21331 return manage(res);
21332 }
21333
get_space()21334 isl::space union_pw_aff::get_space() const
21335 {
21336 return space();
21337 }
21338
sub(const isl::multi_union_pw_aff & multi2)21339 isl::multi_union_pw_aff union_pw_aff::sub(const isl::multi_union_pw_aff &multi2) const
21340 {
21341 return isl::multi_union_pw_aff(*this).sub(multi2);
21342 }
21343
sub(isl::union_pw_aff upa2)21344 isl::union_pw_aff union_pw_aff::sub(isl::union_pw_aff upa2) const
21345 {
21346 auto res = isl_union_pw_aff_sub(copy(), upa2.release());
21347 return manage(res);
21348 }
21349
sub(const isl::union_pw_multi_aff & upma2)21350 isl::union_pw_multi_aff union_pw_aff::sub(const isl::union_pw_multi_aff &upma2) const
21351 {
21352 return isl::union_pw_multi_aff(*this).sub(upma2);
21353 }
21354
sub(const isl::aff & upa2)21355 isl::union_pw_aff union_pw_aff::sub(const isl::aff &upa2) const
21356 {
21357 return this->sub(isl::union_pw_aff(upa2));
21358 }
21359
sub(const isl::pw_aff & upa2)21360 isl::union_pw_aff union_pw_aff::sub(const isl::pw_aff &upa2) const
21361 {
21362 return this->sub(isl::union_pw_aff(upa2));
21363 }
21364
subtract_domain(isl::space space)21365 isl::union_pw_aff union_pw_aff::subtract_domain(isl::space space) const
21366 {
21367 auto res = isl_union_pw_aff_subtract_domain_space(copy(), space.release());
21368 return manage(res);
21369 }
21370
subtract_domain(isl::union_set uset)21371 isl::union_pw_aff union_pw_aff::subtract_domain(isl::union_set uset) const
21372 {
21373 auto res = isl_union_pw_aff_subtract_domain_union_set(copy(), uset.release());
21374 return manage(res);
21375 }
21376
to_list()21377 isl::union_pw_aff_list union_pw_aff::to_list() const
21378 {
21379 auto res = isl_union_pw_aff_to_list(copy());
21380 return manage(res);
21381 }
21382
union_add(const isl::multi_union_pw_aff & mupa2)21383 isl::multi_union_pw_aff union_pw_aff::union_add(const isl::multi_union_pw_aff &mupa2) const
21384 {
21385 return isl::multi_union_pw_aff(*this).union_add(mupa2);
21386 }
21387
union_add(isl::union_pw_aff upa2)21388 isl::union_pw_aff union_pw_aff::union_add(isl::union_pw_aff upa2) const
21389 {
21390 auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
21391 return manage(res);
21392 }
21393
union_add(const isl::union_pw_multi_aff & upma2)21394 isl::union_pw_multi_aff union_pw_aff::union_add(const isl::union_pw_multi_aff &upma2) const
21395 {
21396 return isl::union_pw_multi_aff(*this).union_add(upma2);
21397 }
21398
union_add(const isl::aff & upa2)21399 isl::union_pw_aff union_pw_aff::union_add(const isl::aff &upa2) const
21400 {
21401 return this->union_add(isl::union_pw_aff(upa2));
21402 }
21403
union_add(const isl::pw_aff & upa2)21404 isl::union_pw_aff union_pw_aff::union_add(const isl::pw_aff &upa2) const
21405 {
21406 return this->union_add(isl::union_pw_aff(upa2));
21407 }
21408
21409 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
21410 {
21411 char *str = isl_union_pw_aff_to_str(obj.get());
21412 if (!str) {
21413 os.setstate(std::ios_base::badbit);
21414 return os;
21415 }
21416 os << str;
21417 free(str);
21418 return os;
21419 }
21420
21421 // implementations for isl::union_pw_aff_list
manage(__isl_take isl_union_pw_aff_list * ptr)21422 union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
21423 return union_pw_aff_list(ptr);
21424 }
manage_copy(__isl_keep isl_union_pw_aff_list * ptr)21425 union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
21426 ptr = isl_union_pw_aff_list_copy(ptr);
21427 return union_pw_aff_list(ptr);
21428 }
21429
union_pw_aff_list()21430 union_pw_aff_list::union_pw_aff_list()
21431 : ptr(nullptr) {}
21432
union_pw_aff_list(const union_pw_aff_list & obj)21433 union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
21434 : ptr(nullptr)
21435 {
21436 ptr = obj.copy();
21437 }
21438
union_pw_aff_list(__isl_take isl_union_pw_aff_list * ptr)21439 union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
21440 : ptr(ptr) {}
21441
union_pw_aff_list(isl::ctx ctx,int n)21442 union_pw_aff_list::union_pw_aff_list(isl::ctx ctx, int n)
21443 {
21444 auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
21445 ptr = res;
21446 }
21447
union_pw_aff_list(isl::union_pw_aff el)21448 union_pw_aff_list::union_pw_aff_list(isl::union_pw_aff el)
21449 {
21450 auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
21451 ptr = res;
21452 }
21453
union_pw_aff_list(isl::ctx ctx,const std::string & str)21454 union_pw_aff_list::union_pw_aff_list(isl::ctx ctx, const std::string &str)
21455 {
21456 auto res = isl_union_pw_aff_list_read_from_str(ctx.release(), str.c_str());
21457 ptr = res;
21458 }
21459
21460 union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
21461 std::swap(this->ptr, obj.ptr);
21462 return *this;
21463 }
21464
~union_pw_aff_list()21465 union_pw_aff_list::~union_pw_aff_list() {
21466 if (ptr)
21467 isl_union_pw_aff_list_free(ptr);
21468 }
21469
copy()21470 __isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
21471 return isl_union_pw_aff_list_copy(ptr);
21472 }
21473
get()21474 __isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
21475 return ptr;
21476 }
21477
release()21478 __isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
21479 isl_union_pw_aff_list *tmp = ptr;
21480 ptr = nullptr;
21481 return tmp;
21482 }
21483
is_null()21484 bool union_pw_aff_list::is_null() const {
21485 return ptr == nullptr;
21486 }
21487
ctx()21488 isl::ctx union_pw_aff_list::ctx() const {
21489 return isl::ctx(isl_union_pw_aff_list_get_ctx(ptr));
21490 }
21491
add(isl::union_pw_aff el)21492 isl::union_pw_aff_list union_pw_aff_list::add(isl::union_pw_aff el) const
21493 {
21494 auto res = isl_union_pw_aff_list_add(copy(), el.release());
21495 return manage(res);
21496 }
21497
at(int index)21498 isl::union_pw_aff union_pw_aff_list::at(int index) const
21499 {
21500 auto res = isl_union_pw_aff_list_get_at(get(), index);
21501 return manage(res);
21502 }
21503
get_at(int index)21504 isl::union_pw_aff union_pw_aff_list::get_at(int index) const
21505 {
21506 return at(index);
21507 }
21508
clear()21509 isl::union_pw_aff_list union_pw_aff_list::clear() const
21510 {
21511 auto res = isl_union_pw_aff_list_clear(copy());
21512 return manage(res);
21513 }
21514
concat(isl::union_pw_aff_list list2)21515 isl::union_pw_aff_list union_pw_aff_list::concat(isl::union_pw_aff_list list2) const
21516 {
21517 auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
21518 return manage(res);
21519 }
21520
drop(unsigned int first,unsigned int n)21521 isl::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
21522 {
21523 auto res = isl_union_pw_aff_list_drop(copy(), first, n);
21524 return manage(res);
21525 }
21526
foreach(const std::function<stat (isl::union_pw_aff)> & fn)21527 stat union_pw_aff_list::foreach(const std::function<stat(isl::union_pw_aff)> &fn) const
21528 {
21529 struct fn_data {
21530 std::function<stat(isl::union_pw_aff)> func;
21531 } fn_data = { fn };
21532 auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
21533 auto *data = static_cast<struct fn_data *>(arg_1);
21534 auto ret = (data->func)(manage(arg_0));
21535 return ret.release();
21536 };
21537 auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
21538 return manage(res);
21539 }
21540
insert(unsigned int pos,isl::union_pw_aff el)21541 isl::union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, isl::union_pw_aff el) const
21542 {
21543 auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
21544 return manage(res);
21545 }
21546
size()21547 class size union_pw_aff_list::size() const
21548 {
21549 auto res = isl_union_pw_aff_list_size(get());
21550 return manage(res);
21551 }
21552
21553 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
21554 {
21555 char *str = isl_union_pw_aff_list_to_str(obj.get());
21556 if (!str) {
21557 os.setstate(std::ios_base::badbit);
21558 return os;
21559 }
21560 os << str;
21561 free(str);
21562 return os;
21563 }
21564
21565 // implementations for isl::union_pw_multi_aff
manage(__isl_take isl_union_pw_multi_aff * ptr)21566 union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
21567 return union_pw_multi_aff(ptr);
21568 }
manage_copy(__isl_keep isl_union_pw_multi_aff * ptr)21569 union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
21570 ptr = isl_union_pw_multi_aff_copy(ptr);
21571 return union_pw_multi_aff(ptr);
21572 }
21573
union_pw_multi_aff()21574 union_pw_multi_aff::union_pw_multi_aff()
21575 : ptr(nullptr) {}
21576
union_pw_multi_aff(const union_pw_multi_aff & obj)21577 union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
21578 : ptr(nullptr)
21579 {
21580 ptr = obj.copy();
21581 }
21582
union_pw_multi_aff(__isl_take isl_union_pw_multi_aff * ptr)21583 union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
21584 : ptr(ptr) {}
21585
union_pw_multi_aff(isl::union_set uset)21586 union_pw_multi_aff::union_pw_multi_aff(isl::union_set uset)
21587 {
21588 auto res = isl_union_pw_multi_aff_from_domain(uset.release());
21589 ptr = res;
21590 }
21591
union_pw_multi_aff(isl::multi_aff ma)21592 union_pw_multi_aff::union_pw_multi_aff(isl::multi_aff ma)
21593 {
21594 auto res = isl_union_pw_multi_aff_from_multi_aff(ma.release());
21595 ptr = res;
21596 }
21597
union_pw_multi_aff(isl::pw_multi_aff pma)21598 union_pw_multi_aff::union_pw_multi_aff(isl::pw_multi_aff pma)
21599 {
21600 auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
21601 ptr = res;
21602 }
21603
union_pw_multi_aff(isl::union_map umap)21604 union_pw_multi_aff::union_pw_multi_aff(isl::union_map umap)
21605 {
21606 auto res = isl_union_pw_multi_aff_from_union_map(umap.release());
21607 ptr = res;
21608 }
21609
union_pw_multi_aff(isl::union_pw_aff upa)21610 union_pw_multi_aff::union_pw_multi_aff(isl::union_pw_aff upa)
21611 {
21612 auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
21613 ptr = res;
21614 }
21615
union_pw_multi_aff(isl::ctx ctx,const std::string & str)21616 union_pw_multi_aff::union_pw_multi_aff(isl::ctx ctx, const std::string &str)
21617 {
21618 auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
21619 ptr = res;
21620 }
21621
21622 union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
21623 std::swap(this->ptr, obj.ptr);
21624 return *this;
21625 }
21626
~union_pw_multi_aff()21627 union_pw_multi_aff::~union_pw_multi_aff() {
21628 if (ptr)
21629 isl_union_pw_multi_aff_free(ptr);
21630 }
21631
copy()21632 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
21633 return isl_union_pw_multi_aff_copy(ptr);
21634 }
21635
get()21636 __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
21637 return ptr;
21638 }
21639
release()21640 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
21641 isl_union_pw_multi_aff *tmp = ptr;
21642 ptr = nullptr;
21643 return tmp;
21644 }
21645
is_null()21646 bool union_pw_multi_aff::is_null() const {
21647 return ptr == nullptr;
21648 }
21649
ctx()21650 isl::ctx union_pw_multi_aff::ctx() const {
21651 return isl::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
21652 }
21653
add(isl::union_pw_multi_aff upma2)21654 isl::union_pw_multi_aff union_pw_multi_aff::add(isl::union_pw_multi_aff upma2) const
21655 {
21656 auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
21657 return manage(res);
21658 }
21659
add_pw_multi_aff(isl::pw_multi_aff pma)21660 isl::union_pw_multi_aff union_pw_multi_aff::add_pw_multi_aff(isl::pw_multi_aff pma) const
21661 {
21662 auto res = isl_union_pw_multi_aff_add_pw_multi_aff(copy(), pma.release());
21663 return manage(res);
21664 }
21665
apply(isl::union_pw_multi_aff upma2)21666 isl::union_pw_multi_aff union_pw_multi_aff::apply(isl::union_pw_multi_aff upma2) const
21667 {
21668 auto res = isl_union_pw_multi_aff_apply_union_pw_multi_aff(copy(), upma2.release());
21669 return manage(res);
21670 }
21671
as_multi_union_pw_aff()21672 isl::multi_union_pw_aff union_pw_multi_aff::as_multi_union_pw_aff() const
21673 {
21674 auto res = isl_union_pw_multi_aff_as_multi_union_pw_aff(copy());
21675 return manage(res);
21676 }
21677
as_pw_multi_aff()21678 isl::pw_multi_aff union_pw_multi_aff::as_pw_multi_aff() const
21679 {
21680 auto res = isl_union_pw_multi_aff_as_pw_multi_aff(copy());
21681 return manage(res);
21682 }
21683
as_union_map()21684 isl::union_map union_pw_multi_aff::as_union_map() const
21685 {
21686 auto res = isl_union_pw_multi_aff_as_union_map(copy());
21687 return manage(res);
21688 }
21689
coalesce()21690 isl::union_pw_multi_aff union_pw_multi_aff::coalesce() const
21691 {
21692 auto res = isl_union_pw_multi_aff_coalesce(copy());
21693 return manage(res);
21694 }
21695
domain()21696 isl::union_set union_pw_multi_aff::domain() const
21697 {
21698 auto res = isl_union_pw_multi_aff_domain(copy());
21699 return manage(res);
21700 }
21701
empty(isl::space space)21702 isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::space space)
21703 {
21704 auto res = isl_union_pw_multi_aff_empty(space.release());
21705 return manage(res);
21706 }
21707
empty(isl::ctx ctx)21708 isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::ctx ctx)
21709 {
21710 auto res = isl_union_pw_multi_aff_empty_ctx(ctx.release());
21711 return manage(res);
21712 }
21713
extract_pw_multi_aff(isl::space space)21714 isl::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::space space) const
21715 {
21716 auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
21717 return manage(res);
21718 }
21719
flat_range_product(isl::union_pw_multi_aff upma2)21720 isl::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::union_pw_multi_aff upma2) const
21721 {
21722 auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
21723 return manage(res);
21724 }
21725
gist(isl::union_set context)21726 isl::union_pw_multi_aff union_pw_multi_aff::gist(isl::union_set context) const
21727 {
21728 auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
21729 return manage(res);
21730 }
21731
intersect_domain(isl::space space)21732 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::space space) const
21733 {
21734 auto res = isl_union_pw_multi_aff_intersect_domain_space(copy(), space.release());
21735 return manage(res);
21736 }
21737
intersect_domain(isl::union_set uset)21738 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::union_set uset) const
21739 {
21740 auto res = isl_union_pw_multi_aff_intersect_domain_union_set(copy(), uset.release());
21741 return manage(res);
21742 }
21743
intersect_domain_wrapped_domain(isl::union_set uset)21744 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_domain(isl::union_set uset) const
21745 {
21746 auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_domain(copy(), uset.release());
21747 return manage(res);
21748 }
21749
intersect_domain_wrapped_range(isl::union_set uset)21750 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_range(isl::union_set uset) const
21751 {
21752 auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_range(copy(), uset.release());
21753 return manage(res);
21754 }
21755
intersect_params(isl::set set)21756 isl::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::set set) const
21757 {
21758 auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
21759 return manage(res);
21760 }
21761
involves_locals()21762 boolean union_pw_multi_aff::involves_locals() const
21763 {
21764 auto res = isl_union_pw_multi_aff_involves_locals(get());
21765 return manage(res);
21766 }
21767
isa_pw_multi_aff()21768 boolean union_pw_multi_aff::isa_pw_multi_aff() const
21769 {
21770 auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(get());
21771 return manage(res);
21772 }
21773
plain_is_empty()21774 boolean union_pw_multi_aff::plain_is_empty() const
21775 {
21776 auto res = isl_union_pw_multi_aff_plain_is_empty(get());
21777 return manage(res);
21778 }
21779
preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2)21780 isl::union_pw_multi_aff union_pw_multi_aff::preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const
21781 {
21782 auto res = isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(copy(), upma2.release());
21783 return manage(res);
21784 }
21785
pullback(isl::union_pw_multi_aff upma2)21786 isl::union_pw_multi_aff union_pw_multi_aff::pullback(isl::union_pw_multi_aff upma2) const
21787 {
21788 auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
21789 return manage(res);
21790 }
21791
pw_multi_aff_list()21792 isl::pw_multi_aff_list union_pw_multi_aff::pw_multi_aff_list() const
21793 {
21794 auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
21795 return manage(res);
21796 }
21797
get_pw_multi_aff_list()21798 isl::pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
21799 {
21800 return pw_multi_aff_list();
21801 }
21802
range_factor_domain()21803 isl::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
21804 {
21805 auto res = isl_union_pw_multi_aff_range_factor_domain(copy());
21806 return manage(res);
21807 }
21808
range_factor_range()21809 isl::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
21810 {
21811 auto res = isl_union_pw_multi_aff_range_factor_range(copy());
21812 return manage(res);
21813 }
21814
range_product(isl::union_pw_multi_aff upma2)21815 isl::union_pw_multi_aff union_pw_multi_aff::range_product(isl::union_pw_multi_aff upma2) const
21816 {
21817 auto res = isl_union_pw_multi_aff_range_product(copy(), upma2.release());
21818 return manage(res);
21819 }
21820
space()21821 isl::space union_pw_multi_aff::space() const
21822 {
21823 auto res = isl_union_pw_multi_aff_get_space(get());
21824 return manage(res);
21825 }
21826
get_space()21827 isl::space union_pw_multi_aff::get_space() const
21828 {
21829 return space();
21830 }
21831
sub(isl::union_pw_multi_aff upma2)21832 isl::union_pw_multi_aff union_pw_multi_aff::sub(isl::union_pw_multi_aff upma2) const
21833 {
21834 auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
21835 return manage(res);
21836 }
21837
subtract_domain(isl::space space)21838 isl::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::space space) const
21839 {
21840 auto res = isl_union_pw_multi_aff_subtract_domain_space(copy(), space.release());
21841 return manage(res);
21842 }
21843
subtract_domain(isl::union_set uset)21844 isl::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::union_set uset) const
21845 {
21846 auto res = isl_union_pw_multi_aff_subtract_domain_union_set(copy(), uset.release());
21847 return manage(res);
21848 }
21849
union_add(isl::union_pw_multi_aff upma2)21850 isl::union_pw_multi_aff union_pw_multi_aff::union_add(isl::union_pw_multi_aff upma2) const
21851 {
21852 auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
21853 return manage(res);
21854 }
21855
21856 inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
21857 {
21858 char *str = isl_union_pw_multi_aff_to_str(obj.get());
21859 if (!str) {
21860 os.setstate(std::ios_base::badbit);
21861 return os;
21862 }
21863 os << str;
21864 free(str);
21865 return os;
21866 }
21867
21868 // implementations for isl::union_set
manage(__isl_take isl_union_set * ptr)21869 union_set manage(__isl_take isl_union_set *ptr) {
21870 return union_set(ptr);
21871 }
manage_copy(__isl_keep isl_union_set * ptr)21872 union_set manage_copy(__isl_keep isl_union_set *ptr) {
21873 ptr = isl_union_set_copy(ptr);
21874 return union_set(ptr);
21875 }
21876
union_set()21877 union_set::union_set()
21878 : ptr(nullptr) {}
21879
union_set(const union_set & obj)21880 union_set::union_set(const union_set &obj)
21881 : ptr(nullptr)
21882 {
21883 ptr = obj.copy();
21884 }
21885
union_set(__isl_take isl_union_set * ptr)21886 union_set::union_set(__isl_take isl_union_set *ptr)
21887 : ptr(ptr) {}
21888
union_set(isl::basic_set bset)21889 union_set::union_set(isl::basic_set bset)
21890 {
21891 auto res = isl_union_set_from_basic_set(bset.release());
21892 ptr = res;
21893 }
21894
union_set(isl::point pnt)21895 union_set::union_set(isl::point pnt)
21896 {
21897 auto res = isl_union_set_from_point(pnt.release());
21898 ptr = res;
21899 }
21900
union_set(isl::set set)21901 union_set::union_set(isl::set set)
21902 {
21903 auto res = isl_union_set_from_set(set.release());
21904 ptr = res;
21905 }
21906
union_set(isl::ctx ctx,const std::string & str)21907 union_set::union_set(isl::ctx ctx, const std::string &str)
21908 {
21909 auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
21910 ptr = res;
21911 }
21912
21913 union_set &union_set::operator=(union_set obj) {
21914 std::swap(this->ptr, obj.ptr);
21915 return *this;
21916 }
21917
~union_set()21918 union_set::~union_set() {
21919 if (ptr)
21920 isl_union_set_free(ptr);
21921 }
21922
copy()21923 __isl_give isl_union_set *union_set::copy() const & {
21924 return isl_union_set_copy(ptr);
21925 }
21926
get()21927 __isl_keep isl_union_set *union_set::get() const {
21928 return ptr;
21929 }
21930
release()21931 __isl_give isl_union_set *union_set::release() {
21932 isl_union_set *tmp = ptr;
21933 ptr = nullptr;
21934 return tmp;
21935 }
21936
is_null()21937 bool union_set::is_null() const {
21938 return ptr == nullptr;
21939 }
21940
ctx()21941 isl::ctx union_set::ctx() const {
21942 return isl::ctx(isl_union_set_get_ctx(ptr));
21943 }
21944
affine_hull()21945 isl::union_set union_set::affine_hull() const
21946 {
21947 auto res = isl_union_set_affine_hull(copy());
21948 return manage(res);
21949 }
21950
apply(isl::union_map umap)21951 isl::union_set union_set::apply(isl::union_map umap) const
21952 {
21953 auto res = isl_union_set_apply(copy(), umap.release());
21954 return manage(res);
21955 }
21956
as_set()21957 isl::set union_set::as_set() const
21958 {
21959 auto res = isl_union_set_as_set(copy());
21960 return manage(res);
21961 }
21962
coalesce()21963 isl::union_set union_set::coalesce() const
21964 {
21965 auto res = isl_union_set_coalesce(copy());
21966 return manage(res);
21967 }
21968
compute_divs()21969 isl::union_set union_set::compute_divs() const
21970 {
21971 auto res = isl_union_set_compute_divs(copy());
21972 return manage(res);
21973 }
21974
contains(const isl::space & space)21975 boolean union_set::contains(const isl::space &space) const
21976 {
21977 auto res = isl_union_set_contains(get(), space.get());
21978 return manage(res);
21979 }
21980
detect_equalities()21981 isl::union_set union_set::detect_equalities() const
21982 {
21983 auto res = isl_union_set_detect_equalities(copy());
21984 return manage(res);
21985 }
21986
empty(isl::ctx ctx)21987 isl::union_set union_set::empty(isl::ctx ctx)
21988 {
21989 auto res = isl_union_set_empty_ctx(ctx.release());
21990 return manage(res);
21991 }
21992
every_set(const std::function<boolean (isl::set)> & test)21993 boolean union_set::every_set(const std::function<boolean(isl::set)> &test) const
21994 {
21995 struct test_data {
21996 std::function<boolean(isl::set)> func;
21997 } test_data = { test };
21998 auto test_lambda = [](isl_set *arg_0, void *arg_1) -> isl_bool {
21999 auto *data = static_cast<struct test_data *>(arg_1);
22000 auto ret = (data->func)(manage_copy(arg_0));
22001 return ret.release();
22002 };
22003 auto res = isl_union_set_every_set(get(), test_lambda, &test_data);
22004 return manage(res);
22005 }
22006
extract_set(isl::space space)22007 isl::set union_set::extract_set(isl::space space) const
22008 {
22009 auto res = isl_union_set_extract_set(get(), space.release());
22010 return manage(res);
22011 }
22012
foreach_point(const std::function<stat (isl::point)> & fn)22013 stat union_set::foreach_point(const std::function<stat(isl::point)> &fn) const
22014 {
22015 struct fn_data {
22016 std::function<stat(isl::point)> func;
22017 } fn_data = { fn };
22018 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
22019 auto *data = static_cast<struct fn_data *>(arg_1);
22020 auto ret = (data->func)(manage(arg_0));
22021 return ret.release();
22022 };
22023 auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
22024 return manage(res);
22025 }
22026
foreach_set(const std::function<stat (isl::set)> & fn)22027 stat union_set::foreach_set(const std::function<stat(isl::set)> &fn) const
22028 {
22029 struct fn_data {
22030 std::function<stat(isl::set)> func;
22031 } fn_data = { fn };
22032 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
22033 auto *data = static_cast<struct fn_data *>(arg_1);
22034 auto ret = (data->func)(manage(arg_0));
22035 return ret.release();
22036 };
22037 auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
22038 return manage(res);
22039 }
22040
gist(isl::union_set context)22041 isl::union_set union_set::gist(isl::union_set context) const
22042 {
22043 auto res = isl_union_set_gist(copy(), context.release());
22044 return manage(res);
22045 }
22046
gist_params(isl::set set)22047 isl::union_set union_set::gist_params(isl::set set) const
22048 {
22049 auto res = isl_union_set_gist_params(copy(), set.release());
22050 return manage(res);
22051 }
22052
identity()22053 isl::union_map union_set::identity() const
22054 {
22055 auto res = isl_union_set_identity(copy());
22056 return manage(res);
22057 }
22058
identity_union_pw_multi_aff()22059 isl::union_pw_multi_aff union_set::identity_union_pw_multi_aff() const
22060 {
22061 auto res = isl_union_set_identity_union_pw_multi_aff(copy());
22062 return manage(res);
22063 }
22064
intersect(isl::union_set uset2)22065 isl::union_set union_set::intersect(isl::union_set uset2) const
22066 {
22067 auto res = isl_union_set_intersect(copy(), uset2.release());
22068 return manage(res);
22069 }
22070
intersect_params(isl::set set)22071 isl::union_set union_set::intersect_params(isl::set set) const
22072 {
22073 auto res = isl_union_set_intersect_params(copy(), set.release());
22074 return manage(res);
22075 }
22076
is_disjoint(const isl::union_set & uset2)22077 boolean union_set::is_disjoint(const isl::union_set &uset2) const
22078 {
22079 auto res = isl_union_set_is_disjoint(get(), uset2.get());
22080 return manage(res);
22081 }
22082
is_empty()22083 boolean union_set::is_empty() const
22084 {
22085 auto res = isl_union_set_is_empty(get());
22086 return manage(res);
22087 }
22088
is_equal(const isl::union_set & uset2)22089 boolean union_set::is_equal(const isl::union_set &uset2) const
22090 {
22091 auto res = isl_union_set_is_equal(get(), uset2.get());
22092 return manage(res);
22093 }
22094
is_strict_subset(const isl::union_set & uset2)22095 boolean union_set::is_strict_subset(const isl::union_set &uset2) const
22096 {
22097 auto res = isl_union_set_is_strict_subset(get(), uset2.get());
22098 return manage(res);
22099 }
22100
is_subset(const isl::union_set & uset2)22101 boolean union_set::is_subset(const isl::union_set &uset2) const
22102 {
22103 auto res = isl_union_set_is_subset(get(), uset2.get());
22104 return manage(res);
22105 }
22106
isa_set()22107 boolean union_set::isa_set() const
22108 {
22109 auto res = isl_union_set_isa_set(get());
22110 return manage(res);
22111 }
22112
lexmax()22113 isl::union_set union_set::lexmax() const
22114 {
22115 auto res = isl_union_set_lexmax(copy());
22116 return manage(res);
22117 }
22118
lexmin()22119 isl::union_set union_set::lexmin() const
22120 {
22121 auto res = isl_union_set_lexmin(copy());
22122 return manage(res);
22123 }
22124
params()22125 isl::set union_set::params() const
22126 {
22127 auto res = isl_union_set_params(copy());
22128 return manage(res);
22129 }
22130
polyhedral_hull()22131 isl::union_set union_set::polyhedral_hull() const
22132 {
22133 auto res = isl_union_set_polyhedral_hull(copy());
22134 return manage(res);
22135 }
22136
preimage(isl::multi_aff ma)22137 isl::union_set union_set::preimage(isl::multi_aff ma) const
22138 {
22139 auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
22140 return manage(res);
22141 }
22142
preimage(isl::pw_multi_aff pma)22143 isl::union_set union_set::preimage(isl::pw_multi_aff pma) const
22144 {
22145 auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
22146 return manage(res);
22147 }
22148
preimage(isl::union_pw_multi_aff upma)22149 isl::union_set union_set::preimage(isl::union_pw_multi_aff upma) const
22150 {
22151 auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
22152 return manage(res);
22153 }
22154
sample_point()22155 isl::point union_set::sample_point() const
22156 {
22157 auto res = isl_union_set_sample_point(copy());
22158 return manage(res);
22159 }
22160
set_list()22161 isl::set_list union_set::set_list() const
22162 {
22163 auto res = isl_union_set_get_set_list(get());
22164 return manage(res);
22165 }
22166
get_set_list()22167 isl::set_list union_set::get_set_list() const
22168 {
22169 return set_list();
22170 }
22171
space()22172 isl::space union_set::space() const
22173 {
22174 auto res = isl_union_set_get_space(get());
22175 return manage(res);
22176 }
22177
get_space()22178 isl::space union_set::get_space() const
22179 {
22180 return space();
22181 }
22182
subtract(isl::union_set uset2)22183 isl::union_set union_set::subtract(isl::union_set uset2) const
22184 {
22185 auto res = isl_union_set_subtract(copy(), uset2.release());
22186 return manage(res);
22187 }
22188
to_list()22189 isl::union_set_list union_set::to_list() const
22190 {
22191 auto res = isl_union_set_to_list(copy());
22192 return manage(res);
22193 }
22194
unite(isl::union_set uset2)22195 isl::union_set union_set::unite(isl::union_set uset2) const
22196 {
22197 auto res = isl_union_set_union(copy(), uset2.release());
22198 return manage(res);
22199 }
22200
universe()22201 isl::union_set union_set::universe() const
22202 {
22203 auto res = isl_union_set_universe(copy());
22204 return manage(res);
22205 }
22206
unwrap()22207 isl::union_map union_set::unwrap() const
22208 {
22209 auto res = isl_union_set_unwrap(copy());
22210 return manage(res);
22211 }
22212
22213 inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
22214 {
22215 char *str = isl_union_set_to_str(obj.get());
22216 if (!str) {
22217 os.setstate(std::ios_base::badbit);
22218 return os;
22219 }
22220 os << str;
22221 free(str);
22222 return os;
22223 }
22224
22225 // implementations for isl::union_set_list
manage(__isl_take isl_union_set_list * ptr)22226 union_set_list manage(__isl_take isl_union_set_list *ptr) {
22227 return union_set_list(ptr);
22228 }
manage_copy(__isl_keep isl_union_set_list * ptr)22229 union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
22230 ptr = isl_union_set_list_copy(ptr);
22231 return union_set_list(ptr);
22232 }
22233
union_set_list()22234 union_set_list::union_set_list()
22235 : ptr(nullptr) {}
22236
union_set_list(const union_set_list & obj)22237 union_set_list::union_set_list(const union_set_list &obj)
22238 : ptr(nullptr)
22239 {
22240 ptr = obj.copy();
22241 }
22242
union_set_list(__isl_take isl_union_set_list * ptr)22243 union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
22244 : ptr(ptr) {}
22245
union_set_list(isl::ctx ctx,int n)22246 union_set_list::union_set_list(isl::ctx ctx, int n)
22247 {
22248 auto res = isl_union_set_list_alloc(ctx.release(), n);
22249 ptr = res;
22250 }
22251
union_set_list(isl::union_set el)22252 union_set_list::union_set_list(isl::union_set el)
22253 {
22254 auto res = isl_union_set_list_from_union_set(el.release());
22255 ptr = res;
22256 }
22257
union_set_list(isl::ctx ctx,const std::string & str)22258 union_set_list::union_set_list(isl::ctx ctx, const std::string &str)
22259 {
22260 auto res = isl_union_set_list_read_from_str(ctx.release(), str.c_str());
22261 ptr = res;
22262 }
22263
22264 union_set_list &union_set_list::operator=(union_set_list obj) {
22265 std::swap(this->ptr, obj.ptr);
22266 return *this;
22267 }
22268
~union_set_list()22269 union_set_list::~union_set_list() {
22270 if (ptr)
22271 isl_union_set_list_free(ptr);
22272 }
22273
copy()22274 __isl_give isl_union_set_list *union_set_list::copy() const & {
22275 return isl_union_set_list_copy(ptr);
22276 }
22277
get()22278 __isl_keep isl_union_set_list *union_set_list::get() const {
22279 return ptr;
22280 }
22281
release()22282 __isl_give isl_union_set_list *union_set_list::release() {
22283 isl_union_set_list *tmp = ptr;
22284 ptr = nullptr;
22285 return tmp;
22286 }
22287
is_null()22288 bool union_set_list::is_null() const {
22289 return ptr == nullptr;
22290 }
22291
ctx()22292 isl::ctx union_set_list::ctx() const {
22293 return isl::ctx(isl_union_set_list_get_ctx(ptr));
22294 }
22295
add(isl::union_set el)22296 isl::union_set_list union_set_list::add(isl::union_set el) const
22297 {
22298 auto res = isl_union_set_list_add(copy(), el.release());
22299 return manage(res);
22300 }
22301
at(int index)22302 isl::union_set union_set_list::at(int index) const
22303 {
22304 auto res = isl_union_set_list_get_at(get(), index);
22305 return manage(res);
22306 }
22307
get_at(int index)22308 isl::union_set union_set_list::get_at(int index) const
22309 {
22310 return at(index);
22311 }
22312
clear()22313 isl::union_set_list union_set_list::clear() const
22314 {
22315 auto res = isl_union_set_list_clear(copy());
22316 return manage(res);
22317 }
22318
concat(isl::union_set_list list2)22319 isl::union_set_list union_set_list::concat(isl::union_set_list list2) const
22320 {
22321 auto res = isl_union_set_list_concat(copy(), list2.release());
22322 return manage(res);
22323 }
22324
drop(unsigned int first,unsigned int n)22325 isl::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
22326 {
22327 auto res = isl_union_set_list_drop(copy(), first, n);
22328 return manage(res);
22329 }
22330
foreach(const std::function<stat (isl::union_set)> & fn)22331 stat union_set_list::foreach(const std::function<stat(isl::union_set)> &fn) const
22332 {
22333 struct fn_data {
22334 std::function<stat(isl::union_set)> func;
22335 } fn_data = { fn };
22336 auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
22337 auto *data = static_cast<struct fn_data *>(arg_1);
22338 auto ret = (data->func)(manage(arg_0));
22339 return ret.release();
22340 };
22341 auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
22342 return manage(res);
22343 }
22344
insert(unsigned int pos,isl::union_set el)22345 isl::union_set_list union_set_list::insert(unsigned int pos, isl::union_set el) const
22346 {
22347 auto res = isl_union_set_list_insert(copy(), pos, el.release());
22348 return manage(res);
22349 }
22350
size()22351 class size union_set_list::size() const
22352 {
22353 auto res = isl_union_set_list_size(get());
22354 return manage(res);
22355 }
22356
22357 inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
22358 {
22359 char *str = isl_union_set_list_to_str(obj.get());
22360 if (!str) {
22361 os.setstate(std::ios_base::badbit);
22362 return os;
22363 }
22364 os << str;
22365 free(str);
22366 return os;
22367 }
22368
22369 // implementations for isl::val
manage(__isl_take isl_val * ptr)22370 val manage(__isl_take isl_val *ptr) {
22371 return val(ptr);
22372 }
manage_copy(__isl_keep isl_val * ptr)22373 val manage_copy(__isl_keep isl_val *ptr) {
22374 ptr = isl_val_copy(ptr);
22375 return val(ptr);
22376 }
22377
val()22378 val::val()
22379 : ptr(nullptr) {}
22380
val(const val & obj)22381 val::val(const val &obj)
22382 : ptr(nullptr)
22383 {
22384 ptr = obj.copy();
22385 }
22386
val(__isl_take isl_val * ptr)22387 val::val(__isl_take isl_val *ptr)
22388 : ptr(ptr) {}
22389
val(isl::ctx ctx,long i)22390 val::val(isl::ctx ctx, long i)
22391 {
22392 auto res = isl_val_int_from_si(ctx.release(), i);
22393 ptr = res;
22394 }
22395
val(isl::ctx ctx,const std::string & str)22396 val::val(isl::ctx ctx, const std::string &str)
22397 {
22398 auto res = isl_val_read_from_str(ctx.release(), str.c_str());
22399 ptr = res;
22400 }
22401
22402 val &val::operator=(val obj) {
22403 std::swap(this->ptr, obj.ptr);
22404 return *this;
22405 }
22406
~val()22407 val::~val() {
22408 if (ptr)
22409 isl_val_free(ptr);
22410 }
22411
copy()22412 __isl_give isl_val *val::copy() const & {
22413 return isl_val_copy(ptr);
22414 }
22415
get()22416 __isl_keep isl_val *val::get() const {
22417 return ptr;
22418 }
22419
release()22420 __isl_give isl_val *val::release() {
22421 isl_val *tmp = ptr;
22422 ptr = nullptr;
22423 return tmp;
22424 }
22425
is_null()22426 bool val::is_null() const {
22427 return ptr == nullptr;
22428 }
22429
ctx()22430 isl::ctx val::ctx() const {
22431 return isl::ctx(isl_val_get_ctx(ptr));
22432 }
22433
abs()22434 isl::val val::abs() const
22435 {
22436 auto res = isl_val_abs(copy());
22437 return manage(res);
22438 }
22439
abs_eq(const isl::val & v2)22440 boolean val::abs_eq(const isl::val &v2) const
22441 {
22442 auto res = isl_val_abs_eq(get(), v2.get());
22443 return manage(res);
22444 }
22445
abs_eq(long v2)22446 boolean val::abs_eq(long v2) const
22447 {
22448 return this->abs_eq(isl::val(ctx(), v2));
22449 }
22450
add(isl::val v2)22451 isl::val val::add(isl::val v2) const
22452 {
22453 auto res = isl_val_add(copy(), v2.release());
22454 return manage(res);
22455 }
22456
add(long v2)22457 isl::val val::add(long v2) const
22458 {
22459 return this->add(isl::val(ctx(), v2));
22460 }
22461
ceil()22462 isl::val val::ceil() const
22463 {
22464 auto res = isl_val_ceil(copy());
22465 return manage(res);
22466 }
22467
cmp_si(long i)22468 int val::cmp_si(long i) const
22469 {
22470 auto res = isl_val_cmp_si(get(), i);
22471 return res;
22472 }
22473
den_si()22474 long val::den_si() const
22475 {
22476 auto res = isl_val_get_den_si(get());
22477 return res;
22478 }
22479
get_den_si()22480 long val::get_den_si() const
22481 {
22482 return den_si();
22483 }
22484
div(isl::val v2)22485 isl::val val::div(isl::val v2) const
22486 {
22487 auto res = isl_val_div(copy(), v2.release());
22488 return manage(res);
22489 }
22490
div(long v2)22491 isl::val val::div(long v2) const
22492 {
22493 return this->div(isl::val(ctx(), v2));
22494 }
22495
eq(const isl::val & v2)22496 boolean val::eq(const isl::val &v2) const
22497 {
22498 auto res = isl_val_eq(get(), v2.get());
22499 return manage(res);
22500 }
22501
eq(long v2)22502 boolean val::eq(long v2) const
22503 {
22504 return this->eq(isl::val(ctx(), v2));
22505 }
22506
floor()22507 isl::val val::floor() const
22508 {
22509 auto res = isl_val_floor(copy());
22510 return manage(res);
22511 }
22512
gcd(isl::val v2)22513 isl::val val::gcd(isl::val v2) const
22514 {
22515 auto res = isl_val_gcd(copy(), v2.release());
22516 return manage(res);
22517 }
22518
gcd(long v2)22519 isl::val val::gcd(long v2) const
22520 {
22521 return this->gcd(isl::val(ctx(), v2));
22522 }
22523
ge(const isl::val & v2)22524 boolean val::ge(const isl::val &v2) const
22525 {
22526 auto res = isl_val_ge(get(), v2.get());
22527 return manage(res);
22528 }
22529
ge(long v2)22530 boolean val::ge(long v2) const
22531 {
22532 return this->ge(isl::val(ctx(), v2));
22533 }
22534
gt(const isl::val & v2)22535 boolean val::gt(const isl::val &v2) const
22536 {
22537 auto res = isl_val_gt(get(), v2.get());
22538 return manage(res);
22539 }
22540
gt(long v2)22541 boolean val::gt(long v2) const
22542 {
22543 return this->gt(isl::val(ctx(), v2));
22544 }
22545
infty(isl::ctx ctx)22546 isl::val val::infty(isl::ctx ctx)
22547 {
22548 auto res = isl_val_infty(ctx.release());
22549 return manage(res);
22550 }
22551
int_from_ui(isl::ctx ctx,unsigned long u)22552 isl::val val::int_from_ui(isl::ctx ctx, unsigned long u)
22553 {
22554 auto res = isl_val_int_from_ui(ctx.release(), u);
22555 return manage(res);
22556 }
22557
inv()22558 isl::val val::inv() const
22559 {
22560 auto res = isl_val_inv(copy());
22561 return manage(res);
22562 }
22563
is_divisible_by(const isl::val & v2)22564 boolean val::is_divisible_by(const isl::val &v2) const
22565 {
22566 auto res = isl_val_is_divisible_by(get(), v2.get());
22567 return manage(res);
22568 }
22569
is_divisible_by(long v2)22570 boolean val::is_divisible_by(long v2) const
22571 {
22572 return this->is_divisible_by(isl::val(ctx(), v2));
22573 }
22574
is_infty()22575 boolean val::is_infty() const
22576 {
22577 auto res = isl_val_is_infty(get());
22578 return manage(res);
22579 }
22580
is_int()22581 boolean val::is_int() const
22582 {
22583 auto res = isl_val_is_int(get());
22584 return manage(res);
22585 }
22586
is_nan()22587 boolean val::is_nan() const
22588 {
22589 auto res = isl_val_is_nan(get());
22590 return manage(res);
22591 }
22592
is_neg()22593 boolean val::is_neg() const
22594 {
22595 auto res = isl_val_is_neg(get());
22596 return manage(res);
22597 }
22598
is_neginfty()22599 boolean val::is_neginfty() const
22600 {
22601 auto res = isl_val_is_neginfty(get());
22602 return manage(res);
22603 }
22604
is_negone()22605 boolean val::is_negone() const
22606 {
22607 auto res = isl_val_is_negone(get());
22608 return manage(res);
22609 }
22610
is_nonneg()22611 boolean val::is_nonneg() const
22612 {
22613 auto res = isl_val_is_nonneg(get());
22614 return manage(res);
22615 }
22616
is_nonpos()22617 boolean val::is_nonpos() const
22618 {
22619 auto res = isl_val_is_nonpos(get());
22620 return manage(res);
22621 }
22622
is_one()22623 boolean val::is_one() const
22624 {
22625 auto res = isl_val_is_one(get());
22626 return manage(res);
22627 }
22628
is_pos()22629 boolean val::is_pos() const
22630 {
22631 auto res = isl_val_is_pos(get());
22632 return manage(res);
22633 }
22634
is_rat()22635 boolean val::is_rat() const
22636 {
22637 auto res = isl_val_is_rat(get());
22638 return manage(res);
22639 }
22640
is_zero()22641 boolean val::is_zero() const
22642 {
22643 auto res = isl_val_is_zero(get());
22644 return manage(res);
22645 }
22646
le(const isl::val & v2)22647 boolean val::le(const isl::val &v2) const
22648 {
22649 auto res = isl_val_le(get(), v2.get());
22650 return manage(res);
22651 }
22652
le(long v2)22653 boolean val::le(long v2) const
22654 {
22655 return this->le(isl::val(ctx(), v2));
22656 }
22657
lt(const isl::val & v2)22658 boolean val::lt(const isl::val &v2) const
22659 {
22660 auto res = isl_val_lt(get(), v2.get());
22661 return manage(res);
22662 }
22663
lt(long v2)22664 boolean val::lt(long v2) const
22665 {
22666 return this->lt(isl::val(ctx(), v2));
22667 }
22668
max(isl::val v2)22669 isl::val val::max(isl::val v2) const
22670 {
22671 auto res = isl_val_max(copy(), v2.release());
22672 return manage(res);
22673 }
22674
max(long v2)22675 isl::val val::max(long v2) const
22676 {
22677 return this->max(isl::val(ctx(), v2));
22678 }
22679
min(isl::val v2)22680 isl::val val::min(isl::val v2) const
22681 {
22682 auto res = isl_val_min(copy(), v2.release());
22683 return manage(res);
22684 }
22685
min(long v2)22686 isl::val val::min(long v2) const
22687 {
22688 return this->min(isl::val(ctx(), v2));
22689 }
22690
mod(isl::val v2)22691 isl::val val::mod(isl::val v2) const
22692 {
22693 auto res = isl_val_mod(copy(), v2.release());
22694 return manage(res);
22695 }
22696
mod(long v2)22697 isl::val val::mod(long v2) const
22698 {
22699 return this->mod(isl::val(ctx(), v2));
22700 }
22701
mul(isl::val v2)22702 isl::val val::mul(isl::val v2) const
22703 {
22704 auto res = isl_val_mul(copy(), v2.release());
22705 return manage(res);
22706 }
22707
mul(long v2)22708 isl::val val::mul(long v2) const
22709 {
22710 return this->mul(isl::val(ctx(), v2));
22711 }
22712
nan(isl::ctx ctx)22713 isl::val val::nan(isl::ctx ctx)
22714 {
22715 auto res = isl_val_nan(ctx.release());
22716 return manage(res);
22717 }
22718
ne(const isl::val & v2)22719 boolean val::ne(const isl::val &v2) const
22720 {
22721 auto res = isl_val_ne(get(), v2.get());
22722 return manage(res);
22723 }
22724
ne(long v2)22725 boolean val::ne(long v2) const
22726 {
22727 return this->ne(isl::val(ctx(), v2));
22728 }
22729
neg()22730 isl::val val::neg() const
22731 {
22732 auto res = isl_val_neg(copy());
22733 return manage(res);
22734 }
22735
neginfty(isl::ctx ctx)22736 isl::val val::neginfty(isl::ctx ctx)
22737 {
22738 auto res = isl_val_neginfty(ctx.release());
22739 return manage(res);
22740 }
22741
negone(isl::ctx ctx)22742 isl::val val::negone(isl::ctx ctx)
22743 {
22744 auto res = isl_val_negone(ctx.release());
22745 return manage(res);
22746 }
22747
num_si()22748 long val::num_si() const
22749 {
22750 auto res = isl_val_get_num_si(get());
22751 return res;
22752 }
22753
get_num_si()22754 long val::get_num_si() const
22755 {
22756 return num_si();
22757 }
22758
one(isl::ctx ctx)22759 isl::val val::one(isl::ctx ctx)
22760 {
22761 auto res = isl_val_one(ctx.release());
22762 return manage(res);
22763 }
22764
pow2()22765 isl::val val::pow2() const
22766 {
22767 auto res = isl_val_pow2(copy());
22768 return manage(res);
22769 }
22770
sgn()22771 int val::sgn() const
22772 {
22773 auto res = isl_val_sgn(get());
22774 return res;
22775 }
22776
sub(isl::val v2)22777 isl::val val::sub(isl::val v2) const
22778 {
22779 auto res = isl_val_sub(copy(), v2.release());
22780 return manage(res);
22781 }
22782
sub(long v2)22783 isl::val val::sub(long v2) const
22784 {
22785 return this->sub(isl::val(ctx(), v2));
22786 }
22787
to_list()22788 isl::val_list val::to_list() const
22789 {
22790 auto res = isl_val_to_list(copy());
22791 return manage(res);
22792 }
22793
trunc()22794 isl::val val::trunc() const
22795 {
22796 auto res = isl_val_trunc(copy());
22797 return manage(res);
22798 }
22799
zero(isl::ctx ctx)22800 isl::val val::zero(isl::ctx ctx)
22801 {
22802 auto res = isl_val_zero(ctx.release());
22803 return manage(res);
22804 }
22805
22806 inline std::ostream &operator<<(std::ostream &os, const val &obj)
22807 {
22808 char *str = isl_val_to_str(obj.get());
22809 if (!str) {
22810 os.setstate(std::ios_base::badbit);
22811 return os;
22812 }
22813 os << str;
22814 free(str);
22815 return os;
22816 }
22817
22818 // implementations for isl::val_list
manage(__isl_take isl_val_list * ptr)22819 val_list manage(__isl_take isl_val_list *ptr) {
22820 return val_list(ptr);
22821 }
manage_copy(__isl_keep isl_val_list * ptr)22822 val_list manage_copy(__isl_keep isl_val_list *ptr) {
22823 ptr = isl_val_list_copy(ptr);
22824 return val_list(ptr);
22825 }
22826
val_list()22827 val_list::val_list()
22828 : ptr(nullptr) {}
22829
val_list(const val_list & obj)22830 val_list::val_list(const val_list &obj)
22831 : ptr(nullptr)
22832 {
22833 ptr = obj.copy();
22834 }
22835
val_list(__isl_take isl_val_list * ptr)22836 val_list::val_list(__isl_take isl_val_list *ptr)
22837 : ptr(ptr) {}
22838
val_list(isl::ctx ctx,int n)22839 val_list::val_list(isl::ctx ctx, int n)
22840 {
22841 auto res = isl_val_list_alloc(ctx.release(), n);
22842 ptr = res;
22843 }
22844
val_list(isl::val el)22845 val_list::val_list(isl::val el)
22846 {
22847 auto res = isl_val_list_from_val(el.release());
22848 ptr = res;
22849 }
22850
val_list(isl::ctx ctx,const std::string & str)22851 val_list::val_list(isl::ctx ctx, const std::string &str)
22852 {
22853 auto res = isl_val_list_read_from_str(ctx.release(), str.c_str());
22854 ptr = res;
22855 }
22856
22857 val_list &val_list::operator=(val_list obj) {
22858 std::swap(this->ptr, obj.ptr);
22859 return *this;
22860 }
22861
~val_list()22862 val_list::~val_list() {
22863 if (ptr)
22864 isl_val_list_free(ptr);
22865 }
22866
copy()22867 __isl_give isl_val_list *val_list::copy() const & {
22868 return isl_val_list_copy(ptr);
22869 }
22870
get()22871 __isl_keep isl_val_list *val_list::get() const {
22872 return ptr;
22873 }
22874
release()22875 __isl_give isl_val_list *val_list::release() {
22876 isl_val_list *tmp = ptr;
22877 ptr = nullptr;
22878 return tmp;
22879 }
22880
is_null()22881 bool val_list::is_null() const {
22882 return ptr == nullptr;
22883 }
22884
ctx()22885 isl::ctx val_list::ctx() const {
22886 return isl::ctx(isl_val_list_get_ctx(ptr));
22887 }
22888
add(isl::val el)22889 isl::val_list val_list::add(isl::val el) const
22890 {
22891 auto res = isl_val_list_add(copy(), el.release());
22892 return manage(res);
22893 }
22894
add(long el)22895 isl::val_list val_list::add(long el) const
22896 {
22897 return this->add(isl::val(ctx(), el));
22898 }
22899
at(int index)22900 isl::val val_list::at(int index) const
22901 {
22902 auto res = isl_val_list_get_at(get(), index);
22903 return manage(res);
22904 }
22905
get_at(int index)22906 isl::val val_list::get_at(int index) const
22907 {
22908 return at(index);
22909 }
22910
clear()22911 isl::val_list val_list::clear() const
22912 {
22913 auto res = isl_val_list_clear(copy());
22914 return manage(res);
22915 }
22916
concat(isl::val_list list2)22917 isl::val_list val_list::concat(isl::val_list list2) const
22918 {
22919 auto res = isl_val_list_concat(copy(), list2.release());
22920 return manage(res);
22921 }
22922
drop(unsigned int first,unsigned int n)22923 isl::val_list val_list::drop(unsigned int first, unsigned int n) const
22924 {
22925 auto res = isl_val_list_drop(copy(), first, n);
22926 return manage(res);
22927 }
22928
foreach(const std::function<stat (isl::val)> & fn)22929 stat val_list::foreach(const std::function<stat(isl::val)> &fn) const
22930 {
22931 struct fn_data {
22932 std::function<stat(isl::val)> func;
22933 } fn_data = { fn };
22934 auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
22935 auto *data = static_cast<struct fn_data *>(arg_1);
22936 auto ret = (data->func)(manage(arg_0));
22937 return ret.release();
22938 };
22939 auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
22940 return manage(res);
22941 }
22942
insert(unsigned int pos,isl::val el)22943 isl::val_list val_list::insert(unsigned int pos, isl::val el) const
22944 {
22945 auto res = isl_val_list_insert(copy(), pos, el.release());
22946 return manage(res);
22947 }
22948
insert(unsigned int pos,long el)22949 isl::val_list val_list::insert(unsigned int pos, long el) const
22950 {
22951 return this->insert(pos, isl::val(ctx(), el));
22952 }
22953
size()22954 class size val_list::size() const
22955 {
22956 auto res = isl_val_list_size(get());
22957 return manage(res);
22958 }
22959
22960 inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
22961 {
22962 char *str = isl_val_list_to_str(obj.get());
22963 if (!str) {
22964 os.setstate(std::ios_base::badbit);
22965 return os;
22966 }
22967 os << str;
22968 free(str);
22969 return os;
22970 }
22971 } // namespace isl
22972
22973 #endif /* ISL_CPP_CHECKED */
22974