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
23namespace 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 */
41struct checker {
42 bool checked = false;
43 ~checker() {
44 //ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
45 }
46};
47
48class boolean {
49private:
50 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
51 isl_bool val;
52
53 friend boolean manage(isl_bool val);
54 boolean(isl_bool val): val(val) {}
55public:
56 static boolean error() {
57 return boolean(isl_bool_error);
58 }
59 boolean()
60 : val(isl_bool_error) {}
61
62 /* implicit */ boolean(bool val)
63 : val(val ? isl_bool_true : isl_bool_false) {}
64
65 isl_bool release() {
66 auto tmp = val;
67 val = isl_bool_error;
68 check->checked = true;
69 return tmp;
70 }
71
72 bool is_error() const { check->checked = true; return val == isl_bool_error; }
73 bool is_false() const { check->checked = true; return val == isl_bool_false; }
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
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
95inline boolean manage(isl_bool val) {
96 return boolean(val);
97}
98
99class ctx {
100 isl_ctx *ptr;
101public:
102 /* implicit */ ctx(isl_ctx *ctx)
103 : ptr(ctx) {}
104 isl_ctx *release() {
105 auto tmp = ptr;
106 ptr = nullptr;
107 return tmp;
108 }
109 isl_ctx *get() {
110 return ptr;
111 }
112};
113
114/* Class encapsulating an isl_stat value.
115 */
116class stat {
117private:
118 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
119 isl_stat val;
120
121 friend stat manage(isl_stat val);
122 stat(isl_stat val) : val(val) {}
123public:
124 static stat ok() {
125 return stat(isl_stat_ok);
126 }
127 static stat error() {
128 return stat(isl_stat_error);
129 }
130 stat() : val(isl_stat_error) {}
131
132 isl_stat release() {
133 check->checked = true;
134 return val;
135 }
136
137 bool is_error() const {
138 check->checked = true;
139 return val == isl_stat_error;
140 }
141 bool is_ok() const {
142 check->checked = true;
143 return val == isl_stat_ok;
144 }
145};
146
147inline stat manage(isl_stat val)
148{
149 return stat(val);
150}
151
152/* Class encapsulating an isl_size value.
153 */
154class size {
155private:
156 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
157 isl_size val;
158
159 friend size manage(isl_size val);
160 size(isl_size val) : val(val) {}
161public:
162 size() : val(isl_size_error) {}
163
164 isl_size release() {
165 auto tmp = val;
166 val = isl_size_error;
167 check->checked = true;
168 return tmp;
169 }
170
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
185inline size manage(isl_size val)
186{
187 return size(val);
188}
189
190enum 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
217namespace isl {
218
219// forward declarations
220class aff;
221class aff_list;
222class ast_build;
223class ast_expr;
224class ast_expr_id;
225class ast_expr_int;
226class ast_expr_op;
227class ast_expr_op_access;
228class ast_expr_op_add;
229class ast_expr_op_address_of;
230class ast_expr_op_and;
231class ast_expr_op_and_then;
232class ast_expr_op_call;
233class ast_expr_op_cond;
234class ast_expr_op_div;
235class ast_expr_op_eq;
236class ast_expr_op_fdiv_q;
237class ast_expr_op_ge;
238class ast_expr_op_gt;
239class ast_expr_op_le;
240class ast_expr_op_lt;
241class ast_expr_op_max;
242class ast_expr_op_member;
243class ast_expr_op_min;
244class ast_expr_op_minus;
245class ast_expr_op_mul;
246class ast_expr_op_or;
247class ast_expr_op_or_else;
248class ast_expr_op_pdiv_q;
249class ast_expr_op_pdiv_r;
250class ast_expr_op_select;
251class ast_expr_op_sub;
252class ast_expr_op_zdiv_r;
253class ast_node;
254class ast_node_block;
255class ast_node_for;
256class ast_node_if;
257class ast_node_list;
258class ast_node_mark;
259class ast_node_user;
260class basic_map;
261class basic_map_list;
262class basic_set;
263class basic_set_list;
264class constraint;
265class fixed_box;
266class id;
267class id_list;
268class id_to_ast_expr;
269class local_space;
270class map;
271class map_list;
272class multi_aff;
273class multi_id;
274class multi_pw_aff;
275class multi_union_pw_aff;
276class multi_val;
277class point;
278class pw_aff;
279class pw_aff_list;
280class pw_multi_aff;
281class pw_multi_aff_list;
282class schedule;
283class schedule_constraints;
284class schedule_node;
285class schedule_node_band;
286class schedule_node_context;
287class schedule_node_domain;
288class schedule_node_expansion;
289class schedule_node_extension;
290class schedule_node_filter;
291class schedule_node_guard;
292class schedule_node_leaf;
293class schedule_node_mark;
294class schedule_node_sequence;
295class schedule_node_set;
296class set;
297class set_list;
298class space;
299class union_access_info;
300class union_flow;
301class union_map;
302class union_pw_aff;
303class union_pw_aff_list;
304class union_pw_multi_aff;
305class union_set;
306class union_set_list;
307class val;
308class val_list;
309
310// declarations for isl::aff
311inline aff manage(__isl_take isl_aff *ptr);
312inline aff manage_copy(__isl_keep isl_aff *ptr);
313
314class aff {
315 friend inline aff manage(__isl_take isl_aff *ptr);
316 friend inline aff manage_copy(__isl_keep isl_aff *ptr);
317
318protected:
319 isl_aff *ptr = nullptr;
320
321 inline explicit aff(__isl_take isl_aff *ptr);
322
323public:
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
517inline aff_list manage(__isl_take isl_aff_list *ptr);
518inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
519
520class 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
524protected:
525 isl_aff_list *ptr = nullptr;
526
527 inline explicit aff_list(__isl_take isl_aff_list *ptr);
528
529public:
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
556inline ast_build manage(__isl_take isl_ast_build *ptr);
557inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
558
559class 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
563protected:
564 isl_ast_build *ptr = nullptr;
565
566 inline explicit ast_build(__isl_take isl_ast_build *ptr);
567
568public:
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
581private:
582 inline ast_build &copy_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);
589public:
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
606inline ast_expr manage(__isl_take isl_ast_expr *ptr);
607inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
608
609class 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
613protected:
614 isl_ast_expr *ptr = nullptr;
615
616 inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
617
618public:
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;
628private:
629 template <typename T,
630 typename = typename std::enable_if<std::is_same<
631 const decltype(isl_ast_expr_get_type(expr: nullptr)),
632 const T>::value>::type>
633 inline boolean isa_type(T subtype) const;
634public:
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
656class 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
662protected:
663 inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
664
665public:
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
677class 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
683protected:
684 inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
685
686public:
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
698class 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
704protected:
705 inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
706
707public:
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);
711private:
712 template <typename T,
713 typename = typename std::enable_if<std::is_same<
714 const decltype(isl_ast_expr_op_get_type(expr: nullptr)),
715 const T>::value>::type>
716 inline boolean isa_type(T subtype) const;
717public:
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
730class 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
736protected:
737 inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
738
739public:
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
749class 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
755protected:
756 inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
757
758public:
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
768class 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
774protected:
775 inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
776
777public:
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
787class 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
793protected:
794 inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
795
796public:
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
806class 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
812protected:
813 inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
814
815public:
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
825class 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
831protected:
832 inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
833
834public:
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
844class 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
850protected:
851 inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
852
853public:
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
863class 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
869protected:
870 inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
871
872public:
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
882class 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
888protected:
889 inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
890
891public:
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
901class 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
907protected:
908 inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
909
910public:
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
920class 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
926protected:
927 inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
928
929public:
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
939class 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
945protected:
946 inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
947
948public:
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
958class 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
964protected:
965 inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
966
967public:
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
977class 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
983protected:
984 inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
985
986public:
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
996class 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
1002protected:
1003 inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
1004
1005public:
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
1015class 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
1021protected:
1022 inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
1023
1024public:
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
1034class 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
1040protected:
1041 inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
1042
1043public:
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
1053class 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
1059protected:
1060 inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
1061
1062public:
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
1072class 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
1078protected:
1079 inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
1080
1081public:
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
1091class 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
1097protected:
1098 inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
1099
1100public:
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
1110class 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
1116protected:
1117 inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
1118
1119public:
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
1129class 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
1135protected:
1136 inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
1137
1138public:
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
1148class 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
1154protected:
1155 inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
1156
1157public:
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
1167class 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
1173protected:
1174 inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
1175
1176public:
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
1186class 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
1192protected:
1193 inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
1194
1195public:
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
1205class 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
1211protected:
1212 inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
1213
1214public:
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
1223inline ast_node manage(__isl_take isl_ast_node *ptr);
1224inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1225
1226class 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
1230protected:
1231 isl_ast_node *ptr = nullptr;
1232
1233 inline explicit ast_node(__isl_take isl_ast_node *ptr);
1234
1235public:
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;
1245private:
1246 template <typename T,
1247 typename = typename std::enable_if<std::is_same<
1248 const decltype(isl_ast_node_get_type(node: nullptr)),
1249 const T>::value>::type>
1250 inline boolean isa_type(T subtype) const;
1251public:
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
1264class 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
1270protected:
1271 inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
1272
1273public:
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
1285class 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
1291protected:
1292 inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
1293
1294public:
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
1315class 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
1321protected:
1322 inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
1323
1324public:
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
1340inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1341inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1342
1343class 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
1347protected:
1348 isl_ast_node_list *ptr = nullptr;
1349
1350 inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
1351
1352public:
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
1379class 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
1385protected:
1386 inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
1387
1388public:
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
1402class 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
1408protected:
1409 inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
1410
1411public:
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
1422inline basic_map manage(__isl_take isl_basic_map *ptr);
1423inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1424
1425class 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
1429protected:
1430 isl_basic_map *ptr = nullptr;
1431
1432 inline explicit basic_map(__isl_take isl_basic_map *ptr);
1433
1434public:
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 &params) 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
1628inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
1629inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
1630
1631class 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
1635protected:
1636 isl_basic_map_list *ptr = nullptr;
1637
1638 inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
1639
1640public:
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
1666inline basic_set manage(__isl_take isl_basic_set *ptr);
1667inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1668
1669class 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
1673protected:
1674 isl_basic_set *ptr = nullptr;
1675
1676 inline explicit basic_set(__isl_take isl_basic_set *ptr);
1677
1678public:
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 &params) 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
1840inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
1841inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
1842
1843class 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
1847protected:
1848 isl_basic_set_list *ptr = nullptr;
1849
1850 inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
1851
1852public:
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
1878inline constraint manage(__isl_take isl_constraint *ptr);
1879inline constraint manage_copy(__isl_keep isl_constraint *ptr);
1880
1881class constraint {
1882 friend inline constraint manage(__isl_take isl_constraint *ptr);
1883 friend inline constraint manage_copy(__isl_keep isl_constraint *ptr);
1884
1885protected:
1886 isl_constraint *ptr = nullptr;
1887
1888 inline explicit constraint(__isl_take isl_constraint *ptr);
1889
1890public:
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
1911inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1912inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1913
1914class 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
1918protected:
1919 isl_fixed_box *ptr = nullptr;
1920
1921 inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1922
1923public:
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
1945inline id manage(__isl_take isl_id *ptr);
1946inline id manage_copy(__isl_keep isl_id *ptr);
1947
1948class id {
1949 friend inline id manage(__isl_take isl_id *ptr);
1950 friend inline id manage_copy(__isl_keep isl_id *ptr);
1951
1952protected:
1953 isl_id *ptr = nullptr;
1954
1955 inline explicit id(__isl_take isl_id *ptr);
1956
1957public:
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
1979inline id_list manage(__isl_take isl_id_list *ptr);
1980inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1981
1982class 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
1986protected:
1987 isl_id_list *ptr = nullptr;
1988
1989 inline explicit id_list(__isl_take isl_id_list *ptr);
1990
1991public:
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
2020inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
2021inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
2022
2023class 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
2027protected:
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
2032public:
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
2050inline local_space manage(__isl_take isl_local_space *ptr);
2051inline local_space manage_copy(__isl_keep isl_local_space *ptr);
2052
2053class 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
2057protected:
2058 isl_local_space *ptr = nullptr;
2059
2060 inline explicit local_space(__isl_take isl_local_space *ptr);
2061
2062public:
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
2078inline map manage(__isl_take isl_map *ptr);
2079inline map manage_copy(__isl_keep isl_map *ptr);
2080
2081class map {
2082 friend inline map manage(__isl_take isl_map *ptr);
2083 friend inline map manage_copy(__isl_keep isl_map *ptr);
2084
2085protected:
2086 isl_map *ptr = nullptr;
2087
2088 inline explicit map(__isl_take isl_map *ptr);
2089
2090public:
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
2316inline map_list manage(__isl_take isl_map_list *ptr);
2317inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2318
2319class 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
2323protected:
2324 isl_map_list *ptr = nullptr;
2325
2326 inline explicit map_list(__isl_take isl_map_list *ptr);
2327
2328public:
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
2355inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2356inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2357
2358class 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
2362protected:
2363 isl_multi_aff *ptr = nullptr;
2364
2365 inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
2366
2367public:
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
2523inline multi_id manage(__isl_take isl_multi_id *ptr);
2524inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2525
2526class 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
2530protected:
2531 isl_multi_id *ptr = nullptr;
2532
2533 inline explicit multi_id(__isl_take isl_multi_id *ptr);
2534
2535public:
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
2566inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2567inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2568
2569class 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
2573protected:
2574 isl_multi_pw_aff *ptr = nullptr;
2575
2576 inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
2577
2578public:
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
2701inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2702inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2703
2704class 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
2708protected:
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
2713public:
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
2773inline multi_val manage(__isl_take isl_multi_val *ptr);
2774inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2775
2776class 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
2780protected:
2781 isl_multi_val *ptr = nullptr;
2782
2783 inline explicit multi_val(__isl_take isl_multi_val *ptr);
2784
2785public:
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
2840inline point manage(__isl_take isl_point *ptr);
2841inline point manage_copy(__isl_keep isl_point *ptr);
2842
2843class point {
2844 friend inline point manage(__isl_take isl_point *ptr);
2845 friend inline point manage_copy(__isl_keep isl_point *ptr);
2846
2847protected:
2848 isl_point *ptr = nullptr;
2849
2850 inline explicit point(__isl_take isl_point *ptr);
2851
2852public:
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 &params) 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
3008inline pw_aff manage(__isl_take isl_pw_aff *ptr);
3009inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
3010
3011class 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
3015protected:
3016 isl_pw_aff *ptr = nullptr;
3017
3018 inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
3019
3020public:
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
3200inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
3201inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
3202
3203class 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
3207protected:
3208 isl_pw_aff_list *ptr = nullptr;
3209
3210 inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
3211
3212public:
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
3239inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
3240inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
3241
3242class 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
3246protected:
3247 isl_pw_multi_aff *ptr = nullptr;
3248
3249 inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
3250
3251public:
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
3406inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3407inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3408
3409class 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
3413protected:
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
3418public:
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
3445inline schedule manage(__isl_take isl_schedule *ptr);
3446inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3447
3448class schedule {
3449 friend inline schedule manage(__isl_take isl_schedule *ptr);
3450 friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3451
3452protected:
3453 isl_schedule *ptr = nullptr;
3454
3455 inline explicit schedule(__isl_take isl_schedule *ptr);
3456
3457public:
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
3486inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
3487inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
3488
3489class 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
3493protected:
3494 isl_schedule_constraints *ptr = nullptr;
3495
3496 inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
3497
3498public:
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
3535inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3536inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3537
3538class 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
3542protected:
3543 isl_schedule_node *ptr = nullptr;
3544
3545 inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
3546
3547public:
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;
3557private:
3558 template <typename T,
3559 typename = typename std::enable_if<std::is_same<
3560 const decltype(isl_schedule_node_get_type(node: nullptr)),
3561 const T>::value>::type>
3562 inline boolean isa_type(T subtype) const;
3563public:
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
3628class 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
3634protected:
3635 inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
3636
3637public:
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
3670class 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
3676protected:
3677 inline explicit schedule_node_context(__isl_take isl_schedule_node *ptr);
3678
3679public:
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
3691class 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
3697protected:
3698 inline explicit schedule_node_domain(__isl_take isl_schedule_node *ptr);
3699
3700public:
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
3712class 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
3718protected:
3719 inline explicit schedule_node_expansion(__isl_take isl_schedule_node *ptr);
3720
3721public:
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
3735class 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
3741protected:
3742 inline explicit schedule_node_extension(__isl_take isl_schedule_node *ptr);
3743
3744public:
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
3756class 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
3762protected:
3763 inline explicit schedule_node_filter(__isl_take isl_schedule_node *ptr);
3764
3765public:
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
3777class 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
3783protected:
3784 inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
3785
3786public:
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
3798class 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
3804protected:
3805 inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
3806
3807public:
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
3817class 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
3823protected:
3824 inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
3825
3826public:
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
3838class 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
3844protected:
3845 inline explicit schedule_node_sequence(__isl_take isl_schedule_node *ptr);
3846
3847public:
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
3857class 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
3863protected:
3864 inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
3865
3866public:
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
3875inline set manage(__isl_take isl_set *ptr);
3876inline set manage_copy(__isl_keep isl_set *ptr);
3877
3878class set {
3879 friend inline set manage(__isl_take isl_set *ptr);
3880 friend inline set manage_copy(__isl_keep isl_set *ptr);
3881
3882protected:
3883 isl_set *ptr = nullptr;
3884
3885 inline explicit set(__isl_take isl_set *ptr);
3886
3887public:
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
4059inline set_list manage(__isl_take isl_set_list *ptr);
4060inline set_list manage_copy(__isl_keep isl_set_list *ptr);
4061
4062class 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
4066protected:
4067 isl_set_list *ptr = nullptr;
4068
4069 inline explicit set_list(__isl_take isl_set_list *ptr);
4070
4071public:
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
4098inline space manage(__isl_take isl_space *ptr);
4099inline space manage_copy(__isl_keep isl_space *ptr);
4100
4101class space {
4102 friend inline space manage(__isl_take isl_space *ptr);
4103 friend inline space manage_copy(__isl_keep isl_space *ptr);
4104
4105protected:
4106 isl_space *ptr = nullptr;
4107
4108 inline explicit space(__isl_take isl_space *ptr);
4109
4110public:
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
4204inline union_access_info manage(__isl_take isl_union_access_info *ptr);
4205inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
4206
4207class 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
4211protected:
4212 isl_union_access_info *ptr = nullptr;
4213
4214 inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
4215
4216public:
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
4238inline union_flow manage(__isl_take isl_union_flow *ptr);
4239inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
4240
4241class 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
4245protected:
4246 isl_union_flow *ptr = nullptr;
4247
4248 inline explicit union_flow(__isl_take isl_union_flow *ptr);
4249
4250public:
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
4277inline union_map manage(__isl_take isl_union_map *ptr);
4278inline union_map manage_copy(__isl_keep isl_union_map *ptr);
4279
4280class 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
4284protected:
4285 isl_union_map *ptr = nullptr;
4286
4287 inline explicit union_map(__isl_take isl_union_map *ptr);
4288
4289public:
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
4395inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
4396inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
4397
4398class 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
4402protected:
4403 isl_union_pw_aff *ptr = nullptr;
4404
4405 inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
4406
4407public:
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
4498inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4499inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4500
4501class 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
4505protected:
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
4510public:
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
4537inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
4538inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
4539
4540class 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
4544protected:
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
4549public:
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
4604inline union_set manage(__isl_take isl_union_set *ptr);
4605inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4606
4607class 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
4611protected:
4612 isl_union_set *ptr = nullptr;
4613
4614 inline explicit union_set(__isl_take isl_union_set *ptr);
4615
4616public:
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
4676inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4677inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4678
4679class 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
4683protected:
4684 isl_union_set_list *ptr = nullptr;
4685
4686 inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
4687
4688public:
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
4715inline val manage(__isl_take isl_val *ptr);
4716inline val manage_copy(__isl_keep isl_val *ptr);
4717
4718class val {
4719 friend inline val manage(__isl_take isl_val *ptr);
4720 friend inline val manage_copy(__isl_keep isl_val *ptr);
4721
4722protected:
4723 isl_val *ptr = nullptr;
4724
4725 inline explicit val(__isl_take isl_val *ptr);
4726
4727public:
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
4809inline val_list manage(__isl_take isl_val_list *ptr);
4810inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4811
4812class 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
4816protected:
4817 isl_val_list *ptr = nullptr;
4818
4819 inline explicit val_list(__isl_take isl_val_list *ptr);
4820
4821public:
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
4850aff manage(__isl_take isl_aff *ptr) {
4851 return aff(ptr);
4852}
4853aff manage_copy(__isl_keep isl_aff *ptr) {
4854 ptr = isl_aff_copy(aff: ptr);
4855 return aff(ptr);
4856}
4857
4858aff::aff()
4859 : ptr(nullptr) {}
4860
4861aff::aff(const aff &obj)
4862 : ptr(nullptr)
4863{
4864 ptr = obj.copy();
4865}
4866
4867aff::aff(__isl_take isl_aff *ptr)
4868 : ptr(ptr) {}
4869
4870aff::aff(isl::ctx ctx, const std::string &str)
4871{
4872 auto res = isl_aff_read_from_str(ctx: ctx.release(), str: str.c_str());
4873 ptr = res;
4874}
4875
4876aff::aff(isl::local_space ls, isl::val val)
4877{
4878 auto res = isl_aff_val_on_domain(ls: ls.release(), val: val.release());
4879 ptr = res;
4880}
4881
4882aff::aff(isl::local_space ls)
4883{
4884 auto res = isl_aff_zero_on_domain(ls: ls.release());
4885 ptr = res;
4886}
4887
4888aff &aff::operator=(aff obj) {
4889 std::swap(a&: this->ptr, b&: obj.ptr);
4890 return *this;
4891}
4892
4893aff::~aff() {
4894 if (ptr)
4895 isl_aff_free(aff: ptr);
4896}
4897
4898__isl_give isl_aff *aff::copy() const & {
4899 return isl_aff_copy(aff: ptr);
4900}
4901
4902__isl_keep isl_aff *aff::get() const {
4903 return ptr;
4904}
4905
4906__isl_give isl_aff *aff::release() {
4907 isl_aff *tmp = ptr;
4908 ptr = nullptr;
4909 return tmp;
4910}
4911
4912bool aff::is_null() const {
4913 return ptr == nullptr;
4914}
4915
4916isl::ctx aff::ctx() const {
4917 return isl::ctx(isl_aff_get_ctx(aff: ptr));
4918}
4919
4920isl::aff aff::add(isl::aff aff2) const
4921{
4922 auto res = isl_aff_add(aff1: copy(), aff2: aff2.release());
4923 return manage(ptr: res);
4924}
4925
4926isl::multi_aff aff::add(const isl::multi_aff &multi2) const
4927{
4928 return isl::multi_aff(*this).add(multi2);
4929}
4930
4931isl::multi_pw_aff aff::add(const isl::multi_pw_aff &multi2) const
4932{
4933 return isl::pw_aff(*this).add(multi2);
4934}
4935
4936isl::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
4941isl::pw_aff aff::add(const isl::pw_aff &pwaff2) const
4942{
4943 return isl::pw_aff(*this).add(pwaff2);
4944}
4945
4946isl::pw_multi_aff aff::add(const isl::pw_multi_aff &pma2) const
4947{
4948 return isl::pw_aff(*this).add(pma2);
4949}
4950
4951isl::union_pw_aff aff::add(const isl::union_pw_aff &upa2) const
4952{
4953 return isl::pw_aff(*this).add(upa2);
4954}
4955
4956isl::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
4961isl::aff aff::add_constant(isl::val v) const
4962{
4963 auto res = isl_aff_add_constant_val(aff: copy(), v: v.release());
4964 return manage(ptr: res);
4965}
4966
4967isl::aff aff::add_constant(long v) const
4968{
4969 return this->add_constant(v: isl::val(ctx(), v));
4970}
4971
4972isl::multi_aff aff::add_constant(const isl::multi_val &mv) const
4973{
4974 return isl::multi_aff(*this).add_constant(mv);
4975}
4976
4977isl::aff aff::add_constant_si(int v) const
4978{
4979 auto res = isl_aff_add_constant_si(aff: copy(), v);
4980 return manage(ptr: res);
4981}
4982
4983isl::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
4988isl::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
4993isl::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
4998isl::aff aff::as_aff() const
4999{
5000 return isl::pw_aff(*this).as_aff();
5001}
5002
5003isl::map aff::as_map() const
5004{
5005 return isl::pw_aff(*this).as_map();
5006}
5007
5008isl::multi_aff aff::as_multi_aff() const
5009{
5010 return isl::pw_aff(*this).as_multi_aff();
5011}
5012
5013isl::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
5018isl::pw_multi_aff aff::as_pw_multi_aff() const
5019{
5020 return isl::pw_aff(*this).as_pw_multi_aff();
5021}
5022
5023isl::set aff::as_set() const
5024{
5025 return isl::multi_aff(*this).as_set();
5026}
5027
5028isl::union_map aff::as_union_map() const
5029{
5030 return isl::pw_aff(*this).as_union_map();
5031}
5032
5033isl::aff aff::at(int pos) const
5034{
5035 return isl::multi_aff(*this).at(pos);
5036}
5037
5038isl::basic_set aff::bind(isl::id id) const
5039{
5040 auto res = isl_aff_bind_id(aff: copy(), id: id.release());
5041 return manage(ptr: res);
5042}
5043
5044isl::basic_set aff::bind(const std::string &id) const
5045{
5046 return this->bind(id: isl::id(ctx(), id));
5047}
5048
5049isl::basic_set aff::bind(const isl::multi_id &tuple) const
5050{
5051 return isl::multi_aff(*this).bind(tuple);
5052}
5053
5054isl::pw_aff aff::bind_domain(const isl::multi_id &tuple) const
5055{
5056 return isl::pw_aff(*this).bind_domain(tuple);
5057}
5058
5059isl::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
5064isl::aff aff::ceil() const
5065{
5066 auto res = isl_aff_ceil(aff: copy());
5067 return manage(ptr: res);
5068}
5069
5070isl::pw_aff aff::coalesce() const
5071{
5072 return isl::pw_aff(*this).coalesce();
5073}
5074
5075isl::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
5080isl::multi_val aff::constant_multi_val() const
5081{
5082 return isl::multi_aff(*this).constant_multi_val();
5083}
5084
5085isl::val aff::constant_val() const
5086{
5087 auto res = isl_aff_get_constant_val(aff: get());
5088 return manage(ptr: res);
5089}
5090
5091isl::val aff::get_constant_val() const
5092{
5093 return constant_val();
5094}
5095
5096isl::val aff::denominator_val() const
5097{
5098 auto res = isl_aff_get_denominator_val(aff: get());
5099 return manage(ptr: res);
5100}
5101
5102isl::val aff::get_denominator_val() const
5103{
5104 return denominator_val();
5105}
5106
5107class size aff::dim(isl::dim type) const
5108{
5109 return isl::multi_aff(*this).dim(type);
5110}
5111
5112isl::id aff::dim_id(isl::dim type, unsigned int pos) const
5113{
5114 return isl::pw_aff(*this).dim_id(type, pos);
5115}
5116
5117isl::aff aff::div(isl::aff aff2) const
5118{
5119 auto res = isl_aff_div(aff1: copy(), aff2: aff2.release());
5120 return manage(ptr: res);
5121}
5122
5123isl::pw_aff aff::div(const isl::pw_aff &pa2) const
5124{
5125 return isl::pw_aff(*this).div(pa2);
5126}
5127
5128isl::set aff::domain() const
5129{
5130 return isl::pw_aff(*this).domain();
5131}
5132
5133isl::space aff::domain_space() const
5134{
5135 return isl::pw_aff(*this).domain_space();
5136}
5137
5138isl::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
5143isl::set aff::eq_set(isl::aff aff2) const
5144{
5145 auto res = isl_aff_eq_set(aff1: copy(), aff2: aff2.release());
5146 return manage(ptr: res);
5147}
5148
5149isl::set aff::eq_set(const isl::pw_aff &pwaff2) const
5150{
5151 return isl::pw_aff(*this).eq_set(pwaff2);
5152}
5153
5154isl::val aff::eval(isl::point pnt) const
5155{
5156 auto res = isl_aff_eval(aff: copy(), pnt: pnt.release());
5157 return manage(ptr: res);
5158}
5159
5160isl::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
5165isl::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
5170isl::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
5175isl::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
5180isl::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
5185isl::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
5190isl::aff aff::floor() const
5191{
5192 auto res = isl_aff_floor(aff: copy());
5193 return manage(ptr: res);
5194}
5195
5196stat 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
5201stat 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
5206stat 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
5211isl::set aff::ge_set(isl::aff aff2) const
5212{
5213 auto res = isl_aff_ge_set(aff1: copy(), aff2: aff2.release());
5214 return manage(ptr: res);
5215}
5216
5217isl::set aff::ge_set(const isl::pw_aff &pwaff2) const
5218{
5219 return isl::pw_aff(*this).ge_set(pwaff2);
5220}
5221
5222isl::aff aff::gist(isl::set context) const
5223{
5224 auto res = isl_aff_gist(aff: copy(), context: context.release());
5225 return manage(ptr: res);
5226}
5227
5228isl::union_pw_aff aff::gist(const isl::union_set &context) const
5229{
5230 return isl::pw_aff(*this).gist(context);
5231}
5232
5233isl::aff aff::gist(const isl::basic_set &context) const
5234{
5235 return this->gist(context: isl::set(context));
5236}
5237
5238isl::aff aff::gist(const isl::point &context) const
5239{
5240 return this->gist(context: isl::set(context));
5241}
5242
5243isl::set aff::gt_set(isl::aff aff2) const
5244{
5245 auto res = isl_aff_gt_set(aff1: copy(), aff2: aff2.release());
5246 return manage(ptr: res);
5247}
5248
5249isl::set aff::gt_set(const isl::pw_aff &pwaff2) const
5250{
5251 return isl::pw_aff(*this).gt_set(pwaff2);
5252}
5253
5254boolean aff::has_range_tuple_id() const
5255{
5256 return isl::multi_aff(*this).has_range_tuple_id();
5257}
5258
5259isl::multi_aff aff::identity() const
5260{
5261 return isl::multi_aff(*this).identity();
5262}
5263
5264isl::pw_aff aff::insert_domain(const isl::space &domain) const
5265{
5266 return isl::pw_aff(*this).insert_domain(domain);
5267}
5268
5269isl::pw_aff aff::intersect_domain(const isl::set &set) const
5270{
5271 return isl::pw_aff(*this).intersect_domain(set);
5272}
5273
5274isl::union_pw_aff aff::intersect_domain(const isl::space &space) const
5275{
5276 return isl::pw_aff(*this).intersect_domain(space);
5277}
5278
5279isl::union_pw_aff aff::intersect_domain(const isl::union_set &uset) const
5280{
5281 return isl::pw_aff(*this).intersect_domain(uset);
5282}
5283
5284isl::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
5289isl::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
5294isl::pw_aff aff::intersect_params(const isl::set &set) const
5295{
5296 return isl::pw_aff(*this).intersect_params(set);
5297}
5298
5299boolean aff::involves_locals() const
5300{
5301 return isl::multi_aff(*this).involves_locals();
5302}
5303
5304boolean aff::involves_nan() const
5305{
5306 return isl::multi_aff(*this).involves_nan();
5307}
5308
5309boolean aff::involves_param(const isl::id &id) const
5310{
5311 return isl::pw_aff(*this).involves_param(id);
5312}
5313
5314boolean aff::involves_param(const std::string &id) const
5315{
5316 return this->involves_param(id: isl::id(ctx(), id));
5317}
5318
5319boolean aff::involves_param(const isl::id_list &list) const
5320{
5321 return isl::pw_aff(*this).involves_param(list);
5322}
5323
5324boolean aff::is_cst() const
5325{
5326 auto res = isl_aff_is_cst(aff: get());
5327 return manage(val: res);
5328}
5329
5330boolean aff::is_equal(const isl::pw_aff &pa2) const
5331{
5332 return isl::pw_aff(*this).is_equal(pa2);
5333}
5334
5335boolean aff::isa_aff() const
5336{
5337 return isl::pw_aff(*this).isa_aff();
5338}
5339
5340boolean aff::isa_multi_aff() const
5341{
5342 return isl::pw_aff(*this).isa_multi_aff();
5343}
5344
5345boolean aff::isa_pw_multi_aff() const
5346{
5347 return isl::pw_aff(*this).isa_pw_multi_aff();
5348}
5349
5350isl::set aff::le_set(isl::aff aff2) const
5351{
5352 auto res = isl_aff_le_set(aff1: copy(), aff2: aff2.release());
5353 return manage(ptr: res);
5354}
5355
5356isl::set aff::le_set(const isl::pw_aff &pwaff2) const
5357{
5358 return isl::pw_aff(*this).le_set(pwaff2);
5359}
5360
5361isl::aff_list aff::list() const
5362{
5363 return isl::multi_aff(*this).list();
5364}
5365
5366isl::set aff::lt_set(isl::aff aff2) const
5367{
5368 auto res = isl_aff_lt_set(aff1: copy(), aff2: aff2.release());
5369 return manage(ptr: res);
5370}
5371
5372isl::set aff::lt_set(const isl::pw_aff &pwaff2) const
5373{
5374 return isl::pw_aff(*this).lt_set(pwaff2);
5375}
5376
5377isl::multi_pw_aff aff::max(const isl::multi_pw_aff &multi2) const
5378{
5379 return isl::pw_aff(*this).max(multi2);
5380}
5381
5382isl::pw_aff aff::max(const isl::pw_aff &pwaff2) const
5383{
5384 return isl::pw_aff(*this).max(pwaff2);
5385}
5386
5387isl::multi_val aff::max_multi_val() const
5388{
5389 return isl::pw_aff(*this).max_multi_val();
5390}
5391
5392isl::multi_pw_aff aff::min(const isl::multi_pw_aff &multi2) const
5393{
5394 return isl::pw_aff(*this).min(multi2);
5395}
5396
5397isl::pw_aff aff::min(const isl::pw_aff &pwaff2) const
5398{
5399 return isl::pw_aff(*this).min(pwaff2);
5400}
5401
5402isl::multi_val aff::min_multi_val() const
5403{
5404 return isl::pw_aff(*this).min_multi_val();
5405}
5406
5407isl::aff aff::mod(isl::val mod) const
5408{
5409 auto res = isl_aff_mod_val(aff: copy(), mod: mod.release());
5410 return manage(ptr: res);
5411}
5412
5413isl::aff aff::mod(long mod) const
5414{
5415 return this->mod(mod: isl::val(ctx(), mod));
5416}
5417
5418isl::aff aff::mul(isl::aff aff2) const
5419{
5420 auto res = isl_aff_mul(aff1: copy(), aff2: aff2.release());
5421 return manage(ptr: res);
5422}
5423
5424isl::pw_aff aff::mul(const isl::pw_aff &pwaff2) const
5425{
5426 return isl::pw_aff(*this).mul(pwaff2);
5427}
5428
5429class size aff::n_piece() const
5430{
5431 return isl::pw_aff(*this).n_piece();
5432}
5433
5434isl::set aff::ne_set(isl::aff aff2) const
5435{
5436 auto res = isl_aff_ne_set(aff1: copy(), aff2: aff2.release());
5437 return manage(ptr: res);
5438}
5439
5440isl::set aff::ne_set(const isl::pw_aff &pwaff2) const
5441{
5442 return isl::pw_aff(*this).ne_set(pwaff2);
5443}
5444
5445isl::aff aff::neg() const
5446{
5447 auto res = isl_aff_neg(aff: copy());
5448 return manage(ptr: res);
5449}
5450
5451boolean aff::plain_is_empty() const
5452{
5453 return isl::pw_aff(*this).plain_is_empty();
5454}
5455
5456boolean aff::plain_is_equal(const isl::multi_aff &multi2) const
5457{
5458 return isl::multi_aff(*this).plain_is_equal(multi2);
5459}
5460
5461boolean aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
5462{
5463 return isl::pw_aff(*this).plain_is_equal(multi2);
5464}
5465
5466boolean 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
5471isl::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
5476isl::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
5481isl::multi_aff aff::product(const isl::multi_aff &multi2) const
5482{
5483 return isl::multi_aff(*this).product(multi2);
5484}
5485
5486isl::multi_pw_aff aff::product(const isl::multi_pw_aff &multi2) const
5487{
5488 return isl::pw_aff(*this).product(multi2);
5489}
5490
5491isl::pw_multi_aff aff::product(const isl::pw_multi_aff &pma2) const
5492{
5493 return isl::pw_aff(*this).product(pma2);
5494}
5495
5496isl::aff aff::pullback(isl::multi_aff ma) const
5497{
5498 auto res = isl_aff_pullback_multi_aff(aff: copy(), ma: ma.release());
5499 return manage(ptr: res);
5500}
5501
5502isl::pw_aff aff::pullback(const isl::multi_pw_aff &mpa) const
5503{
5504 return isl::pw_aff(*this).pullback(mpa);
5505}
5506
5507isl::pw_aff aff::pullback(const isl::pw_multi_aff &pma) const
5508{
5509 return isl::pw_aff(*this).pullback(pma);
5510}
5511
5512isl::union_pw_aff aff::pullback(const isl::union_pw_multi_aff &upma) const
5513{
5514 return isl::pw_aff(*this).pullback(upma);
5515}
5516
5517isl::aff aff::pullback(const isl::aff &ma) const
5518{
5519 return this->pullback(ma: isl::multi_aff(ma));
5520}
5521
5522isl::pw_multi_aff_list aff::pw_multi_aff_list() const
5523{
5524 return isl::pw_aff(*this).pw_multi_aff_list();
5525}
5526
5527isl::pw_multi_aff aff::range_factor_domain() const
5528{
5529 return isl::pw_aff(*this).range_factor_domain();
5530}
5531
5532isl::pw_multi_aff aff::range_factor_range() const
5533{
5534 return isl::pw_aff(*this).range_factor_range();
5535}
5536
5537isl::multi_aff aff::range_product(const isl::multi_aff &multi2) const
5538{
5539 return isl::multi_aff(*this).range_product(multi2);
5540}
5541
5542isl::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
5547isl::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
5552isl::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
5557isl::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
5562isl::id aff::range_tuple_id() const
5563{
5564 return isl::multi_aff(*this).range_tuple_id();
5565}
5566
5567isl::multi_aff aff::reset_range_tuple_id() const
5568{
5569 return isl::multi_aff(*this).reset_range_tuple_id();
5570}
5571
5572isl::multi_aff aff::reset_tuple_id(isl::dim type) const
5573{
5574 return isl::multi_aff(*this).reset_tuple_id(type);
5575}
5576
5577isl::aff aff::scale(isl::val v) const
5578{
5579 auto res = isl_aff_scale_val(aff: copy(), v: v.release());
5580 return manage(ptr: res);
5581}
5582
5583isl::aff aff::scale(long v) const
5584{
5585 return this->scale(v: isl::val(ctx(), v));
5586}
5587
5588isl::multi_aff aff::scale(const isl::multi_val &mv) const
5589{
5590 return isl::multi_aff(*this).scale(mv);
5591}
5592
5593isl::aff aff::scale_down(isl::val v) const
5594{
5595 auto res = isl_aff_scale_down_val(aff: copy(), v: v.release());
5596 return manage(ptr: res);
5597}
5598
5599isl::aff aff::scale_down(long v) const
5600{
5601 return this->scale_down(v: isl::val(ctx(), v));
5602}
5603
5604isl::multi_aff aff::scale_down(const isl::multi_val &mv) const
5605{
5606 return isl::multi_aff(*this).scale_down(mv);
5607}
5608
5609isl::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
5614isl::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
5619isl::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
5624isl::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
5629isl::aff aff::set_constant_si(int v) const
5630{
5631 auto res = isl_aff_set_constant_si(aff: copy(), v);
5632 return manage(ptr: res);
5633}
5634
5635isl::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
5640isl::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
5645isl::multi_aff aff::set_range_tuple(const isl::id &id) const
5646{
5647 return isl::multi_aff(*this).set_range_tuple(id);
5648}
5649
5650isl::multi_aff aff::set_range_tuple(const std::string &id) const
5651{
5652 return this->set_range_tuple(isl::id(ctx(), id));
5653}
5654
5655isl::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
5660isl::pw_aff aff::set_tuple_id(isl::dim type, const std::string &id) const
5661{
5662 return this->set_tuple_id(type, id: isl::id(ctx(), id));
5663}
5664
5665isl::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
5670class size aff::size() const
5671{
5672 return isl::multi_aff(*this).size();
5673}
5674
5675isl::space aff::space() const
5676{
5677 return isl::pw_aff(*this).space();
5678}
5679
5680isl::aff aff::sub(isl::aff aff2) const
5681{
5682 auto res = isl_aff_sub(aff1: copy(), aff2: aff2.release());
5683 return manage(ptr: res);
5684}
5685
5686isl::multi_aff aff::sub(const isl::multi_aff &multi2) const
5687{
5688 return isl::multi_aff(*this).sub(multi2);
5689}
5690
5691isl::multi_pw_aff aff::sub(const isl::multi_pw_aff &multi2) const
5692{
5693 return isl::pw_aff(*this).sub(multi2);
5694}
5695
5696isl::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
5701isl::pw_aff aff::sub(const isl::pw_aff &pwaff2) const
5702{
5703 return isl::pw_aff(*this).sub(pwaff2);
5704}
5705
5706isl::pw_multi_aff aff::sub(const isl::pw_multi_aff &pma2) const
5707{
5708 return isl::pw_aff(*this).sub(pma2);
5709}
5710
5711isl::union_pw_aff aff::sub(const isl::union_pw_aff &upa2) const
5712{
5713 return isl::pw_aff(*this).sub(upa2);
5714}
5715
5716isl::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
5721isl::pw_aff aff::subtract_domain(const isl::set &set) const
5722{
5723 return isl::pw_aff(*this).subtract_domain(set);
5724}
5725
5726isl::union_pw_aff aff::subtract_domain(const isl::space &space) const
5727{
5728 return isl::pw_aff(*this).subtract_domain(space);
5729}
5730
5731isl::union_pw_aff aff::subtract_domain(const isl::union_set &uset) const
5732{
5733 return isl::pw_aff(*this).subtract_domain(uset);
5734}
5735
5736isl::pw_aff aff::tdiv_q(const isl::pw_aff &pa2) const
5737{
5738 return isl::pw_aff(*this).tdiv_q(pa2);
5739}
5740
5741isl::pw_aff aff::tdiv_r(const isl::pw_aff &pa2) const
5742{
5743 return isl::pw_aff(*this).tdiv_r(pa2);
5744}
5745
5746isl::aff_list aff::to_list() const
5747{
5748 auto res = isl_aff_to_list(el: copy());
5749 return manage(ptr: res);
5750}
5751
5752isl::multi_pw_aff aff::to_multi_pw_aff() const
5753{
5754 return isl::multi_aff(*this).to_multi_pw_aff();
5755}
5756
5757isl::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
5762isl::pw_multi_aff aff::to_pw_multi_aff() const
5763{
5764 return isl::multi_aff(*this).to_pw_multi_aff();
5765}
5766
5767isl::union_pw_aff aff::to_union_pw_aff() const
5768{
5769 return isl::pw_aff(*this).to_union_pw_aff();
5770}
5771
5772isl::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
5777isl::id aff::tuple_id(isl::dim type) const
5778{
5779 return isl::pw_aff(*this).tuple_id(type);
5780}
5781
5782isl::aff aff::unbind_params_insert_domain(isl::multi_id domain) const
5783{
5784 auto res = isl_aff_unbind_params_insert_domain(aff: copy(), domain: domain.release());
5785 return manage(ptr: res);
5786}
5787
5788isl::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
5793isl::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
5798isl::pw_aff aff::union_add(const isl::pw_aff &pwaff2) const
5799{
5800 return isl::pw_aff(*this).union_add(pwaff2);
5801}
5802
5803isl::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
5808isl::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
5813isl::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
5818isl::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: ls.release(), type: static_cast<enum isl_dim_type>(type), pos);
5821 return manage(ptr: res);
5822}
5823
5824isl::aff aff::zero_on_domain(isl::space space)
5825{
5826 auto res = isl_aff_zero_on_domain_space(space: space.release());
5827 return manage(ptr: res);
5828}
5829
5830inline std::ostream &operator<<(std::ostream &os, const aff &obj)
5831{
5832 char *str = isl_aff_to_str(aff: obj.get());
5833 if (!str) {
5834 os.setstate(std::ios_base::badbit);
5835 return os;
5836 }
5837 os << str;
5838 free(ptr: str);
5839 return os;
5840}
5841
5842// implementations for isl::aff_list
5843aff_list manage(__isl_take isl_aff_list *ptr) {
5844 return aff_list(ptr);
5845}
5846aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
5847 ptr = isl_aff_list_copy(list: ptr);
5848 return aff_list(ptr);
5849}
5850
5851aff_list::aff_list()
5852 : ptr(nullptr) {}
5853
5854aff_list::aff_list(const aff_list &obj)
5855 : ptr(nullptr)
5856{
5857 ptr = obj.copy();
5858}
5859
5860aff_list::aff_list(__isl_take isl_aff_list *ptr)
5861 : ptr(ptr) {}
5862
5863aff_list::aff_list(isl::ctx ctx, int n)
5864{
5865 auto res = isl_aff_list_alloc(ctx: ctx.release(), n);
5866 ptr = res;
5867}
5868
5869aff_list::aff_list(isl::aff el)
5870{
5871 auto res = isl_aff_list_from_aff(el: el.release());
5872 ptr = res;
5873}
5874
5875aff_list::aff_list(isl::ctx ctx, const std::string &str)
5876{
5877 auto res = isl_aff_list_read_from_str(ctx: ctx.release(), str: str.c_str());
5878 ptr = res;
5879}
5880
5881aff_list &aff_list::operator=(aff_list obj) {
5882 std::swap(a&: this->ptr, b&: obj.ptr);
5883 return *this;
5884}
5885
5886aff_list::~aff_list() {
5887 if (ptr)
5888 isl_aff_list_free(list: ptr);
5889}
5890
5891__isl_give isl_aff_list *aff_list::copy() const & {
5892 return isl_aff_list_copy(list: ptr);
5893}
5894
5895__isl_keep isl_aff_list *aff_list::get() const {
5896 return ptr;
5897}
5898
5899__isl_give isl_aff_list *aff_list::release() {
5900 isl_aff_list *tmp = ptr;
5901 ptr = nullptr;
5902 return tmp;
5903}
5904
5905bool aff_list::is_null() const {
5906 return ptr == nullptr;
5907}
5908
5909isl::ctx aff_list::ctx() const {
5910 return isl::ctx(isl_aff_list_get_ctx(list: ptr));
5911}
5912
5913isl::aff_list aff_list::add(isl::aff el) const
5914{
5915 auto res = isl_aff_list_add(list: copy(), el: el.release());
5916 return manage(ptr: res);
5917}
5918
5919isl::aff aff_list::at(int index) const
5920{
5921 auto res = isl_aff_list_get_at(list: get(), index);
5922 return manage(ptr: res);
5923}
5924
5925isl::aff aff_list::get_at(int index) const
5926{
5927 return at(index);
5928}
5929
5930isl::aff_list aff_list::clear() const
5931{
5932 auto res = isl_aff_list_clear(list: copy());
5933 return manage(ptr: res);
5934}
5935
5936isl::aff_list aff_list::concat(isl::aff_list list2) const
5937{
5938 auto res = isl_aff_list_concat(list1: copy(), list2: list2.release());
5939 return manage(ptr: res);
5940}
5941
5942isl::aff_list aff_list::drop(unsigned int first, unsigned int n) const
5943{
5944 auto res = isl_aff_list_drop(list: copy(), first, n);
5945 return manage(ptr: res);
5946}
5947
5948stat 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 = { .func: 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(ptr: arg_0));
5956 return ret.release();
5957 };
5958 auto res = isl_aff_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
5959 return manage(val: res);
5960}
5961
5962isl::aff_list aff_list::insert(unsigned int pos, isl::aff el) const
5963{
5964 auto res = isl_aff_list_insert(list: copy(), pos, el: el.release());
5965 return manage(ptr: res);
5966}
5967
5968class size aff_list::size() const
5969{
5970 auto res = isl_aff_list_size(list: get());
5971 return manage(val: res);
5972}
5973
5974inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
5975{
5976 char *str = isl_aff_list_to_str(list: obj.get());
5977 if (!str) {
5978 os.setstate(std::ios_base::badbit);
5979 return os;
5980 }
5981 os << str;
5982 free(ptr: str);
5983 return os;
5984}
5985
5986// implementations for isl::ast_build
5987ast_build manage(__isl_take isl_ast_build *ptr) {
5988 return ast_build(ptr);
5989}
5990ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
5991 ptr = isl_ast_build_copy(build: ptr);
5992 return ast_build(ptr);
5993}
5994
5995ast_build::ast_build()
5996 : ptr(nullptr) {}
5997
5998ast_build::ast_build(const ast_build &obj)
5999 : ptr(nullptr)
6000{
6001 ptr = obj.copy();
6002 copy_callbacks(obj);
6003}
6004
6005ast_build::ast_build(__isl_take isl_ast_build *ptr)
6006 : ptr(ptr) {}
6007
6008ast_build::ast_build(isl::ctx ctx)
6009{
6010 auto res = isl_ast_build_alloc(ctx: ctx.release());
6011 ptr = res;
6012}
6013
6014ast_build &ast_build::operator=(ast_build obj) {
6015 std::swap(a&: this->ptr, b&: obj.ptr);
6016 copy_callbacks(obj);
6017 return *this;
6018}
6019
6020ast_build::~ast_build() {
6021 if (ptr)
6022 isl_ast_build_free(build: ptr);
6023}
6024
6025__isl_give isl_ast_build *ast_build::copy() const & {
6026 return isl_ast_build_copy(build: ptr);
6027}
6028
6029__isl_keep isl_ast_build *ast_build::get() const {
6030 return ptr;
6031}
6032
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
6041bool ast_build::is_null() const {
6042 return ptr == nullptr;
6043}
6044
6045isl::ctx ast_build::ctx() const {
6046 return isl::ctx(isl_ast_build_get_ctx(build: ptr));
6047}
6048
6049ast_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
6055isl_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(ptr: arg_0), manage_copy(ptr: arg_1));
6059 return ret.release();
6060}
6061
6062void 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(build: ptr, fn: &at_each_domain, user: at_each_domain_data.get());
6067}
6068
6069isl::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
6076isl::ast_expr ast_build::access_from(isl::multi_pw_aff mpa) const
6077{
6078 auto res = isl_ast_build_access_from_multi_pw_aff(build: get(), mpa: mpa.release());
6079 return manage(ptr: res);
6080}
6081
6082isl::ast_expr ast_build::access_from(isl::pw_multi_aff pma) const
6083{
6084 auto res = isl_ast_build_access_from_pw_multi_aff(build: get(), pma: pma.release());
6085 return manage(ptr: res);
6086}
6087
6088isl::ast_expr ast_build::call_from(isl::multi_pw_aff mpa) const
6089{
6090 auto res = isl_ast_build_call_from_multi_pw_aff(build: get(), mpa: mpa.release());
6091 return manage(ptr: res);
6092}
6093
6094isl::ast_expr ast_build::call_from(isl::pw_multi_aff pma) const
6095{
6096 auto res = isl_ast_build_call_from_pw_multi_aff(build: get(), pma: pma.release());
6097 return manage(ptr: res);
6098}
6099
6100isl::ast_expr ast_build::expr_from(isl::pw_aff pa) const
6101{
6102 auto res = isl_ast_build_expr_from_pw_aff(build: get(), pa: pa.release());
6103 return manage(ptr: res);
6104}
6105
6106isl::ast_expr ast_build::expr_from(isl::set set) const
6107{
6108 auto res = isl_ast_build_expr_from_set(build: get(), set: set.release());
6109 return manage(ptr: res);
6110}
6111
6112isl::ast_build ast_build::from_context(isl::set set)
6113{
6114 auto res = isl_ast_build_from_context(set: set.release());
6115 return manage(ptr: res);
6116}
6117
6118isl::ast_node ast_build::node_from(isl::schedule schedule) const
6119{
6120 auto res = isl_ast_build_node_from_schedule(build: get(), schedule: schedule.release());
6121 return manage(ptr: res);
6122}
6123
6124isl::ast_node ast_build::node_from_schedule_map(isl::union_map schedule) const
6125{
6126 auto res = isl_ast_build_node_from_schedule_map(build: get(), schedule: schedule.release());
6127 return manage(ptr: res);
6128}
6129
6130isl::ast_build ast_build::restrict(isl::set set) const
6131{
6132 auto res = isl_ast_build_restrict(build: copy(), set: set.release());
6133 return manage(ptr: res).copy_callbacks(obj: *this);
6134}
6135
6136isl::union_map ast_build::schedule() const
6137{
6138 auto res = isl_ast_build_get_schedule(build: get());
6139 return manage(ptr: res);
6140}
6141
6142isl::union_map ast_build::get_schedule() const
6143{
6144 return schedule();
6145}
6146
6147// implementations for isl::ast_expr
6148ast_expr manage(__isl_take isl_ast_expr *ptr) {
6149 return ast_expr(ptr);
6150}
6151ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
6152 ptr = isl_ast_expr_copy(expr: ptr);
6153 return ast_expr(ptr);
6154}
6155
6156ast_expr::ast_expr()
6157 : ptr(nullptr) {}
6158
6159ast_expr::ast_expr(const ast_expr &obj)
6160 : ptr(nullptr)
6161{
6162 ptr = obj.copy();
6163}
6164
6165ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
6166 : ptr(ptr) {}
6167
6168ast_expr &ast_expr::operator=(ast_expr obj) {
6169 std::swap(a&: this->ptr, b&: obj.ptr);
6170 return *this;
6171}
6172
6173ast_expr::~ast_expr() {
6174 if (ptr)
6175 isl_ast_expr_free(expr: ptr);
6176}
6177
6178__isl_give isl_ast_expr *ast_expr::copy() const & {
6179 return isl_ast_expr_copy(expr: ptr);
6180}
6181
6182__isl_keep isl_ast_expr *ast_expr::get() const {
6183 return ptr;
6184}
6185
6186__isl_give isl_ast_expr *ast_expr::release() {
6187 isl_ast_expr *tmp = ptr;
6188 ptr = nullptr;
6189 return tmp;
6190}
6191
6192bool ast_expr::is_null() const {
6193 return ptr == nullptr;
6194}
6195
6196template <typename T, typename>
6197boolean ast_expr::isa_type(T subtype) const
6198{
6199 if (is_null())
6200 return boolean();
6201 return isl_ast_expr_get_type(expr: get()) == subtype;
6202}
6203template <class T>
6204boolean ast_expr::isa() const
6205{
6206 return isa_type<decltype(T::type)>(T::type);
6207}
6208template <class T>
6209T 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
6216isl::ctx ast_expr::ctx() const {
6217 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6218}
6219
6220isl::ast_expr ast_expr::add(isl::ast_expr expr2) const
6221{
6222 auto res = isl_ast_expr_add(expr1: copy(), expr2: expr2.release());
6223 return manage(ptr: res);
6224}
6225
6226isl::ast_expr ast_expr::address_of() const
6227{
6228 auto res = isl_ast_expr_address_of(expr: copy());
6229 return manage(ptr: res);
6230}
6231
6232isl::ast_expr ast_expr::eq(isl::ast_expr expr2) const
6233{
6234 auto res = isl_ast_expr_eq(expr1: copy(), expr2: expr2.release());
6235 return manage(ptr: res);
6236}
6237
6238isl::ast_expr ast_expr::from_val(isl::val v)
6239{
6240 auto res = isl_ast_expr_from_val(v: v.release());
6241 return manage(ptr: res);
6242}
6243
6244isl::id ast_expr::id() const
6245{
6246 auto res = isl_ast_expr_get_id(expr: get());
6247 return manage(ptr: res);
6248}
6249
6250isl::id ast_expr::get_id() const
6251{
6252 return id();
6253}
6254
6255isl::ast_expr ast_expr::le(isl::ast_expr expr2) const
6256{
6257 auto res = isl_ast_expr_le(expr1: copy(), expr2: expr2.release());
6258 return manage(ptr: res);
6259}
6260
6261isl::ast_expr ast_expr::mul(isl::ast_expr expr2) const
6262{
6263 auto res = isl_ast_expr_mul(expr1: copy(), expr2: expr2.release());
6264 return manage(ptr: res);
6265}
6266
6267isl::ast_expr ast_expr::op_arg(int pos) const
6268{
6269 auto res = isl_ast_expr_get_op_arg(expr: get(), pos);
6270 return manage(ptr: res);
6271}
6272
6273isl::ast_expr ast_expr::get_op_arg(int pos) const
6274{
6275 return op_arg(pos);
6276}
6277
6278std::string ast_expr::to_C_str() const
6279{
6280 auto res = isl_ast_expr_to_C_str(expr: get());
6281 std::string tmp(res);
6282 free(ptr: res);
6283 return tmp;
6284}
6285
6286isl::val ast_expr::val() const
6287{
6288 auto res = isl_ast_expr_get_val(expr: get());
6289 return manage(ptr: res);
6290}
6291
6292isl::val ast_expr::get_val() const
6293{
6294 return val();
6295}
6296
6297inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
6298{
6299 char *str = isl_ast_expr_to_str(expr: obj.get());
6300 if (!str) {
6301 os.setstate(std::ios_base::badbit);
6302 return os;
6303 }
6304 os << str;
6305 free(ptr: str);
6306 return os;
6307}
6308
6309// implementations for isl::ast_expr_id
6310ast_expr_id::ast_expr_id()
6311 : ast_expr() {}
6312
6313ast_expr_id::ast_expr_id(const ast_expr_id &obj)
6314 : ast_expr(obj)
6315{
6316}
6317
6318ast_expr_id::ast_expr_id(__isl_take isl_ast_expr *ptr)
6319 : ast_expr(ptr) {}
6320
6321ast_expr_id &ast_expr_id::operator=(ast_expr_id obj) {
6322 std::swap(a&: this->ptr, b&: obj.ptr);
6323 return *this;
6324}
6325
6326isl::ctx ast_expr_id::ctx() const {
6327 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6328}
6329
6330isl::id ast_expr_id::id() const
6331{
6332 auto res = isl_ast_expr_id_get_id(expr: get());
6333 return manage(ptr: res);
6334}
6335
6336isl::id ast_expr_id::get_id() const
6337{
6338 return id();
6339}
6340
6341inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
6342{
6343 char *str = isl_ast_expr_to_str(expr: obj.get());
6344 if (!str) {
6345 os.setstate(std::ios_base::badbit);
6346 return os;
6347 }
6348 os << str;
6349 free(ptr: str);
6350 return os;
6351}
6352
6353// implementations for isl::ast_expr_int
6354ast_expr_int::ast_expr_int()
6355 : ast_expr() {}
6356
6357ast_expr_int::ast_expr_int(const ast_expr_int &obj)
6358 : ast_expr(obj)
6359{
6360}
6361
6362ast_expr_int::ast_expr_int(__isl_take isl_ast_expr *ptr)
6363 : ast_expr(ptr) {}
6364
6365ast_expr_int &ast_expr_int::operator=(ast_expr_int obj) {
6366 std::swap(a&: this->ptr, b&: obj.ptr);
6367 return *this;
6368}
6369
6370isl::ctx ast_expr_int::ctx() const {
6371 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6372}
6373
6374isl::val ast_expr_int::val() const
6375{
6376 auto res = isl_ast_expr_int_get_val(expr: get());
6377 return manage(ptr: res);
6378}
6379
6380isl::val ast_expr_int::get_val() const
6381{
6382 return val();
6383}
6384
6385inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
6386{
6387 char *str = isl_ast_expr_to_str(expr: obj.get());
6388 if (!str) {
6389 os.setstate(std::ios_base::badbit);
6390 return os;
6391 }
6392 os << str;
6393 free(ptr: str);
6394 return os;
6395}
6396
6397// implementations for isl::ast_expr_op
6398ast_expr_op::ast_expr_op()
6399 : ast_expr() {}
6400
6401ast_expr_op::ast_expr_op(const ast_expr_op &obj)
6402 : ast_expr(obj)
6403{
6404}
6405
6406ast_expr_op::ast_expr_op(__isl_take isl_ast_expr *ptr)
6407 : ast_expr(ptr) {}
6408
6409ast_expr_op &ast_expr_op::operator=(ast_expr_op obj) {
6410 std::swap(a&: this->ptr, b&: obj.ptr);
6411 return *this;
6412}
6413
6414template <typename T, typename>
6415boolean ast_expr_op::isa_type(T subtype) const
6416{
6417 if (is_null())
6418 return boolean();
6419 return isl_ast_expr_op_get_type(expr: get()) == subtype;
6420}
6421template <class T>
6422boolean ast_expr_op::isa() const
6423{
6424 return isa_type<decltype(T::type)>(T::type);
6425}
6426template <class T>
6427T 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
6434isl::ctx ast_expr_op::ctx() const {
6435 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6436}
6437
6438isl::ast_expr ast_expr_op::arg(int pos) const
6439{
6440 auto res = isl_ast_expr_op_get_arg(expr: get(), pos);
6441 return manage(ptr: res);
6442}
6443
6444isl::ast_expr ast_expr_op::get_arg(int pos) const
6445{
6446 return arg(pos);
6447}
6448
6449class size ast_expr_op::n_arg() const
6450{
6451 auto res = isl_ast_expr_op_get_n_arg(expr: get());
6452 return manage(val: res);
6453}
6454
6455class size ast_expr_op::get_n_arg() const
6456{
6457 return n_arg();
6458}
6459
6460inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
6461{
6462 char *str = isl_ast_expr_to_str(expr: obj.get());
6463 if (!str) {
6464 os.setstate(std::ios_base::badbit);
6465 return os;
6466 }
6467 os << str;
6468 free(ptr: str);
6469 return os;
6470}
6471
6472// implementations for isl::ast_expr_op_access
6473ast_expr_op_access::ast_expr_op_access()
6474 : ast_expr_op() {}
6475
6476ast_expr_op_access::ast_expr_op_access(const ast_expr_op_access &obj)
6477 : ast_expr_op(obj)
6478{
6479}
6480
6481ast_expr_op_access::ast_expr_op_access(__isl_take isl_ast_expr *ptr)
6482 : ast_expr_op(ptr) {}
6483
6484ast_expr_op_access &ast_expr_op_access::operator=(ast_expr_op_access obj) {
6485 std::swap(a&: this->ptr, b&: obj.ptr);
6486 return *this;
6487}
6488
6489isl::ctx ast_expr_op_access::ctx() const {
6490 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6491}
6492
6493inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
6494{
6495 char *str = isl_ast_expr_to_str(expr: obj.get());
6496 if (!str) {
6497 os.setstate(std::ios_base::badbit);
6498 return os;
6499 }
6500 os << str;
6501 free(ptr: str);
6502 return os;
6503}
6504
6505// implementations for isl::ast_expr_op_add
6506ast_expr_op_add::ast_expr_op_add()
6507 : ast_expr_op() {}
6508
6509ast_expr_op_add::ast_expr_op_add(const ast_expr_op_add &obj)
6510 : ast_expr_op(obj)
6511{
6512}
6513
6514ast_expr_op_add::ast_expr_op_add(__isl_take isl_ast_expr *ptr)
6515 : ast_expr_op(ptr) {}
6516
6517ast_expr_op_add &ast_expr_op_add::operator=(ast_expr_op_add obj) {
6518 std::swap(a&: this->ptr, b&: obj.ptr);
6519 return *this;
6520}
6521
6522isl::ctx ast_expr_op_add::ctx() const {
6523 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6524}
6525
6526inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
6527{
6528 char *str = isl_ast_expr_to_str(expr: obj.get());
6529 if (!str) {
6530 os.setstate(std::ios_base::badbit);
6531 return os;
6532 }
6533 os << str;
6534 free(ptr: str);
6535 return os;
6536}
6537
6538// implementations for isl::ast_expr_op_address_of
6539ast_expr_op_address_of::ast_expr_op_address_of()
6540 : ast_expr_op() {}
6541
6542ast_expr_op_address_of::ast_expr_op_address_of(const ast_expr_op_address_of &obj)
6543 : ast_expr_op(obj)
6544{
6545}
6546
6547ast_expr_op_address_of::ast_expr_op_address_of(__isl_take isl_ast_expr *ptr)
6548 : ast_expr_op(ptr) {}
6549
6550ast_expr_op_address_of &ast_expr_op_address_of::operator=(ast_expr_op_address_of obj) {
6551 std::swap(a&: this->ptr, b&: obj.ptr);
6552 return *this;
6553}
6554
6555isl::ctx ast_expr_op_address_of::ctx() const {
6556 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6557}
6558
6559inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
6560{
6561 char *str = isl_ast_expr_to_str(expr: obj.get());
6562 if (!str) {
6563 os.setstate(std::ios_base::badbit);
6564 return os;
6565 }
6566 os << str;
6567 free(ptr: str);
6568 return os;
6569}
6570
6571// implementations for isl::ast_expr_op_and
6572ast_expr_op_and::ast_expr_op_and()
6573 : ast_expr_op() {}
6574
6575ast_expr_op_and::ast_expr_op_and(const ast_expr_op_and &obj)
6576 : ast_expr_op(obj)
6577{
6578}
6579
6580ast_expr_op_and::ast_expr_op_and(__isl_take isl_ast_expr *ptr)
6581 : ast_expr_op(ptr) {}
6582
6583ast_expr_op_and &ast_expr_op_and::operator=(ast_expr_op_and obj) {
6584 std::swap(a&: this->ptr, b&: obj.ptr);
6585 return *this;
6586}
6587
6588isl::ctx ast_expr_op_and::ctx() const {
6589 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6590}
6591
6592inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
6593{
6594 char *str = isl_ast_expr_to_str(expr: obj.get());
6595 if (!str) {
6596 os.setstate(std::ios_base::badbit);
6597 return os;
6598 }
6599 os << str;
6600 free(ptr: str);
6601 return os;
6602}
6603
6604// implementations for isl::ast_expr_op_and_then
6605ast_expr_op_and_then::ast_expr_op_and_then()
6606 : ast_expr_op() {}
6607
6608ast_expr_op_and_then::ast_expr_op_and_then(const ast_expr_op_and_then &obj)
6609 : ast_expr_op(obj)
6610{
6611}
6612
6613ast_expr_op_and_then::ast_expr_op_and_then(__isl_take isl_ast_expr *ptr)
6614 : ast_expr_op(ptr) {}
6615
6616ast_expr_op_and_then &ast_expr_op_and_then::operator=(ast_expr_op_and_then obj) {
6617 std::swap(a&: this->ptr, b&: obj.ptr);
6618 return *this;
6619}
6620
6621isl::ctx ast_expr_op_and_then::ctx() const {
6622 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6623}
6624
6625inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
6626{
6627 char *str = isl_ast_expr_to_str(expr: obj.get());
6628 if (!str) {
6629 os.setstate(std::ios_base::badbit);
6630 return os;
6631 }
6632 os << str;
6633 free(ptr: str);
6634 return os;
6635}
6636
6637// implementations for isl::ast_expr_op_call
6638ast_expr_op_call::ast_expr_op_call()
6639 : ast_expr_op() {}
6640
6641ast_expr_op_call::ast_expr_op_call(const ast_expr_op_call &obj)
6642 : ast_expr_op(obj)
6643{
6644}
6645
6646ast_expr_op_call::ast_expr_op_call(__isl_take isl_ast_expr *ptr)
6647 : ast_expr_op(ptr) {}
6648
6649ast_expr_op_call &ast_expr_op_call::operator=(ast_expr_op_call obj) {
6650 std::swap(a&: this->ptr, b&: obj.ptr);
6651 return *this;
6652}
6653
6654isl::ctx ast_expr_op_call::ctx() const {
6655 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6656}
6657
6658inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
6659{
6660 char *str = isl_ast_expr_to_str(expr: obj.get());
6661 if (!str) {
6662 os.setstate(std::ios_base::badbit);
6663 return os;
6664 }
6665 os << str;
6666 free(ptr: str);
6667 return os;
6668}
6669
6670// implementations for isl::ast_expr_op_cond
6671ast_expr_op_cond::ast_expr_op_cond()
6672 : ast_expr_op() {}
6673
6674ast_expr_op_cond::ast_expr_op_cond(const ast_expr_op_cond &obj)
6675 : ast_expr_op(obj)
6676{
6677}
6678
6679ast_expr_op_cond::ast_expr_op_cond(__isl_take isl_ast_expr *ptr)
6680 : ast_expr_op(ptr) {}
6681
6682ast_expr_op_cond &ast_expr_op_cond::operator=(ast_expr_op_cond obj) {
6683 std::swap(a&: this->ptr, b&: obj.ptr);
6684 return *this;
6685}
6686
6687isl::ctx ast_expr_op_cond::ctx() const {
6688 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6689}
6690
6691inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
6692{
6693 char *str = isl_ast_expr_to_str(expr: obj.get());
6694 if (!str) {
6695 os.setstate(std::ios_base::badbit);
6696 return os;
6697 }
6698 os << str;
6699 free(ptr: str);
6700 return os;
6701}
6702
6703// implementations for isl::ast_expr_op_div
6704ast_expr_op_div::ast_expr_op_div()
6705 : ast_expr_op() {}
6706
6707ast_expr_op_div::ast_expr_op_div(const ast_expr_op_div &obj)
6708 : ast_expr_op(obj)
6709{
6710}
6711
6712ast_expr_op_div::ast_expr_op_div(__isl_take isl_ast_expr *ptr)
6713 : ast_expr_op(ptr) {}
6714
6715ast_expr_op_div &ast_expr_op_div::operator=(ast_expr_op_div obj) {
6716 std::swap(a&: this->ptr, b&: obj.ptr);
6717 return *this;
6718}
6719
6720isl::ctx ast_expr_op_div::ctx() const {
6721 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6722}
6723
6724inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
6725{
6726 char *str = isl_ast_expr_to_str(expr: obj.get());
6727 if (!str) {
6728 os.setstate(std::ios_base::badbit);
6729 return os;
6730 }
6731 os << str;
6732 free(ptr: str);
6733 return os;
6734}
6735
6736// implementations for isl::ast_expr_op_eq
6737ast_expr_op_eq::ast_expr_op_eq()
6738 : ast_expr_op() {}
6739
6740ast_expr_op_eq::ast_expr_op_eq(const ast_expr_op_eq &obj)
6741 : ast_expr_op(obj)
6742{
6743}
6744
6745ast_expr_op_eq::ast_expr_op_eq(__isl_take isl_ast_expr *ptr)
6746 : ast_expr_op(ptr) {}
6747
6748ast_expr_op_eq &ast_expr_op_eq::operator=(ast_expr_op_eq obj) {
6749 std::swap(a&: this->ptr, b&: obj.ptr);
6750 return *this;
6751}
6752
6753isl::ctx ast_expr_op_eq::ctx() const {
6754 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6755}
6756
6757inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
6758{
6759 char *str = isl_ast_expr_to_str(expr: obj.get());
6760 if (!str) {
6761 os.setstate(std::ios_base::badbit);
6762 return os;
6763 }
6764 os << str;
6765 free(ptr: str);
6766 return os;
6767}
6768
6769// implementations for isl::ast_expr_op_fdiv_q
6770ast_expr_op_fdiv_q::ast_expr_op_fdiv_q()
6771 : ast_expr_op() {}
6772
6773ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj)
6774 : ast_expr_op(obj)
6775{
6776}
6777
6778ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr)
6779 : ast_expr_op(ptr) {}
6780
6781ast_expr_op_fdiv_q &ast_expr_op_fdiv_q::operator=(ast_expr_op_fdiv_q obj) {
6782 std::swap(a&: this->ptr, b&: obj.ptr);
6783 return *this;
6784}
6785
6786isl::ctx ast_expr_op_fdiv_q::ctx() const {
6787 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6788}
6789
6790inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
6791{
6792 char *str = isl_ast_expr_to_str(expr: obj.get());
6793 if (!str) {
6794 os.setstate(std::ios_base::badbit);
6795 return os;
6796 }
6797 os << str;
6798 free(ptr: str);
6799 return os;
6800}
6801
6802// implementations for isl::ast_expr_op_ge
6803ast_expr_op_ge::ast_expr_op_ge()
6804 : ast_expr_op() {}
6805
6806ast_expr_op_ge::ast_expr_op_ge(const ast_expr_op_ge &obj)
6807 : ast_expr_op(obj)
6808{
6809}
6810
6811ast_expr_op_ge::ast_expr_op_ge(__isl_take isl_ast_expr *ptr)
6812 : ast_expr_op(ptr) {}
6813
6814ast_expr_op_ge &ast_expr_op_ge::operator=(ast_expr_op_ge obj) {
6815 std::swap(a&: this->ptr, b&: obj.ptr);
6816 return *this;
6817}
6818
6819isl::ctx ast_expr_op_ge::ctx() const {
6820 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6821}
6822
6823inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
6824{
6825 char *str = isl_ast_expr_to_str(expr: obj.get());
6826 if (!str) {
6827 os.setstate(std::ios_base::badbit);
6828 return os;
6829 }
6830 os << str;
6831 free(ptr: str);
6832 return os;
6833}
6834
6835// implementations for isl::ast_expr_op_gt
6836ast_expr_op_gt::ast_expr_op_gt()
6837 : ast_expr_op() {}
6838
6839ast_expr_op_gt::ast_expr_op_gt(const ast_expr_op_gt &obj)
6840 : ast_expr_op(obj)
6841{
6842}
6843
6844ast_expr_op_gt::ast_expr_op_gt(__isl_take isl_ast_expr *ptr)
6845 : ast_expr_op(ptr) {}
6846
6847ast_expr_op_gt &ast_expr_op_gt::operator=(ast_expr_op_gt obj) {
6848 std::swap(a&: this->ptr, b&: obj.ptr);
6849 return *this;
6850}
6851
6852isl::ctx ast_expr_op_gt::ctx() const {
6853 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6854}
6855
6856inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
6857{
6858 char *str = isl_ast_expr_to_str(expr: obj.get());
6859 if (!str) {
6860 os.setstate(std::ios_base::badbit);
6861 return os;
6862 }
6863 os << str;
6864 free(ptr: str);
6865 return os;
6866}
6867
6868// implementations for isl::ast_expr_op_le
6869ast_expr_op_le::ast_expr_op_le()
6870 : ast_expr_op() {}
6871
6872ast_expr_op_le::ast_expr_op_le(const ast_expr_op_le &obj)
6873 : ast_expr_op(obj)
6874{
6875}
6876
6877ast_expr_op_le::ast_expr_op_le(__isl_take isl_ast_expr *ptr)
6878 : ast_expr_op(ptr) {}
6879
6880ast_expr_op_le &ast_expr_op_le::operator=(ast_expr_op_le obj) {
6881 std::swap(a&: this->ptr, b&: obj.ptr);
6882 return *this;
6883}
6884
6885isl::ctx ast_expr_op_le::ctx() const {
6886 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6887}
6888
6889inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
6890{
6891 char *str = isl_ast_expr_to_str(expr: obj.get());
6892 if (!str) {
6893 os.setstate(std::ios_base::badbit);
6894 return os;
6895 }
6896 os << str;
6897 free(ptr: str);
6898 return os;
6899}
6900
6901// implementations for isl::ast_expr_op_lt
6902ast_expr_op_lt::ast_expr_op_lt()
6903 : ast_expr_op() {}
6904
6905ast_expr_op_lt::ast_expr_op_lt(const ast_expr_op_lt &obj)
6906 : ast_expr_op(obj)
6907{
6908}
6909
6910ast_expr_op_lt::ast_expr_op_lt(__isl_take isl_ast_expr *ptr)
6911 : ast_expr_op(ptr) {}
6912
6913ast_expr_op_lt &ast_expr_op_lt::operator=(ast_expr_op_lt obj) {
6914 std::swap(a&: this->ptr, b&: obj.ptr);
6915 return *this;
6916}
6917
6918isl::ctx ast_expr_op_lt::ctx() const {
6919 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6920}
6921
6922inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
6923{
6924 char *str = isl_ast_expr_to_str(expr: obj.get());
6925 if (!str) {
6926 os.setstate(std::ios_base::badbit);
6927 return os;
6928 }
6929 os << str;
6930 free(ptr: str);
6931 return os;
6932}
6933
6934// implementations for isl::ast_expr_op_max
6935ast_expr_op_max::ast_expr_op_max()
6936 : ast_expr_op() {}
6937
6938ast_expr_op_max::ast_expr_op_max(const ast_expr_op_max &obj)
6939 : ast_expr_op(obj)
6940{
6941}
6942
6943ast_expr_op_max::ast_expr_op_max(__isl_take isl_ast_expr *ptr)
6944 : ast_expr_op(ptr) {}
6945
6946ast_expr_op_max &ast_expr_op_max::operator=(ast_expr_op_max obj) {
6947 std::swap(a&: this->ptr, b&: obj.ptr);
6948 return *this;
6949}
6950
6951isl::ctx ast_expr_op_max::ctx() const {
6952 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6953}
6954
6955inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
6956{
6957 char *str = isl_ast_expr_to_str(expr: obj.get());
6958 if (!str) {
6959 os.setstate(std::ios_base::badbit);
6960 return os;
6961 }
6962 os << str;
6963 free(ptr: str);
6964 return os;
6965}
6966
6967// implementations for isl::ast_expr_op_member
6968ast_expr_op_member::ast_expr_op_member()
6969 : ast_expr_op() {}
6970
6971ast_expr_op_member::ast_expr_op_member(const ast_expr_op_member &obj)
6972 : ast_expr_op(obj)
6973{
6974}
6975
6976ast_expr_op_member::ast_expr_op_member(__isl_take isl_ast_expr *ptr)
6977 : ast_expr_op(ptr) {}
6978
6979ast_expr_op_member &ast_expr_op_member::operator=(ast_expr_op_member obj) {
6980 std::swap(a&: this->ptr, b&: obj.ptr);
6981 return *this;
6982}
6983
6984isl::ctx ast_expr_op_member::ctx() const {
6985 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
6986}
6987
6988inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
6989{
6990 char *str = isl_ast_expr_to_str(expr: obj.get());
6991 if (!str) {
6992 os.setstate(std::ios_base::badbit);
6993 return os;
6994 }
6995 os << str;
6996 free(ptr: str);
6997 return os;
6998}
6999
7000// implementations for isl::ast_expr_op_min
7001ast_expr_op_min::ast_expr_op_min()
7002 : ast_expr_op() {}
7003
7004ast_expr_op_min::ast_expr_op_min(const ast_expr_op_min &obj)
7005 : ast_expr_op(obj)
7006{
7007}
7008
7009ast_expr_op_min::ast_expr_op_min(__isl_take isl_ast_expr *ptr)
7010 : ast_expr_op(ptr) {}
7011
7012ast_expr_op_min &ast_expr_op_min::operator=(ast_expr_op_min obj) {
7013 std::swap(a&: this->ptr, b&: obj.ptr);
7014 return *this;
7015}
7016
7017isl::ctx ast_expr_op_min::ctx() const {
7018 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7019}
7020
7021inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
7022{
7023 char *str = isl_ast_expr_to_str(expr: obj.get());
7024 if (!str) {
7025 os.setstate(std::ios_base::badbit);
7026 return os;
7027 }
7028 os << str;
7029 free(ptr: str);
7030 return os;
7031}
7032
7033// implementations for isl::ast_expr_op_minus
7034ast_expr_op_minus::ast_expr_op_minus()
7035 : ast_expr_op() {}
7036
7037ast_expr_op_minus::ast_expr_op_minus(const ast_expr_op_minus &obj)
7038 : ast_expr_op(obj)
7039{
7040}
7041
7042ast_expr_op_minus::ast_expr_op_minus(__isl_take isl_ast_expr *ptr)
7043 : ast_expr_op(ptr) {}
7044
7045ast_expr_op_minus &ast_expr_op_minus::operator=(ast_expr_op_minus obj) {
7046 std::swap(a&: this->ptr, b&: obj.ptr);
7047 return *this;
7048}
7049
7050isl::ctx ast_expr_op_minus::ctx() const {
7051 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7052}
7053
7054inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
7055{
7056 char *str = isl_ast_expr_to_str(expr: obj.get());
7057 if (!str) {
7058 os.setstate(std::ios_base::badbit);
7059 return os;
7060 }
7061 os << str;
7062 free(ptr: str);
7063 return os;
7064}
7065
7066// implementations for isl::ast_expr_op_mul
7067ast_expr_op_mul::ast_expr_op_mul()
7068 : ast_expr_op() {}
7069
7070ast_expr_op_mul::ast_expr_op_mul(const ast_expr_op_mul &obj)
7071 : ast_expr_op(obj)
7072{
7073}
7074
7075ast_expr_op_mul::ast_expr_op_mul(__isl_take isl_ast_expr *ptr)
7076 : ast_expr_op(ptr) {}
7077
7078ast_expr_op_mul &ast_expr_op_mul::operator=(ast_expr_op_mul obj) {
7079 std::swap(a&: this->ptr, b&: obj.ptr);
7080 return *this;
7081}
7082
7083isl::ctx ast_expr_op_mul::ctx() const {
7084 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7085}
7086
7087inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
7088{
7089 char *str = isl_ast_expr_to_str(expr: obj.get());
7090 if (!str) {
7091 os.setstate(std::ios_base::badbit);
7092 return os;
7093 }
7094 os << str;
7095 free(ptr: str);
7096 return os;
7097}
7098
7099// implementations for isl::ast_expr_op_or
7100ast_expr_op_or::ast_expr_op_or()
7101 : ast_expr_op() {}
7102
7103ast_expr_op_or::ast_expr_op_or(const ast_expr_op_or &obj)
7104 : ast_expr_op(obj)
7105{
7106}
7107
7108ast_expr_op_or::ast_expr_op_or(__isl_take isl_ast_expr *ptr)
7109 : ast_expr_op(ptr) {}
7110
7111ast_expr_op_or &ast_expr_op_or::operator=(ast_expr_op_or obj) {
7112 std::swap(a&: this->ptr, b&: obj.ptr);
7113 return *this;
7114}
7115
7116isl::ctx ast_expr_op_or::ctx() const {
7117 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7118}
7119
7120inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
7121{
7122 char *str = isl_ast_expr_to_str(expr: obj.get());
7123 if (!str) {
7124 os.setstate(std::ios_base::badbit);
7125 return os;
7126 }
7127 os << str;
7128 free(ptr: str);
7129 return os;
7130}
7131
7132// implementations for isl::ast_expr_op_or_else
7133ast_expr_op_or_else::ast_expr_op_or_else()
7134 : ast_expr_op() {}
7135
7136ast_expr_op_or_else::ast_expr_op_or_else(const ast_expr_op_or_else &obj)
7137 : ast_expr_op(obj)
7138{
7139}
7140
7141ast_expr_op_or_else::ast_expr_op_or_else(__isl_take isl_ast_expr *ptr)
7142 : ast_expr_op(ptr) {}
7143
7144ast_expr_op_or_else &ast_expr_op_or_else::operator=(ast_expr_op_or_else obj) {
7145 std::swap(a&: this->ptr, b&: obj.ptr);
7146 return *this;
7147}
7148
7149isl::ctx ast_expr_op_or_else::ctx() const {
7150 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7151}
7152
7153inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
7154{
7155 char *str = isl_ast_expr_to_str(expr: obj.get());
7156 if (!str) {
7157 os.setstate(std::ios_base::badbit);
7158 return os;
7159 }
7160 os << str;
7161 free(ptr: str);
7162 return os;
7163}
7164
7165// implementations for isl::ast_expr_op_pdiv_q
7166ast_expr_op_pdiv_q::ast_expr_op_pdiv_q()
7167 : ast_expr_op() {}
7168
7169ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj)
7170 : ast_expr_op(obj)
7171{
7172}
7173
7174ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr)
7175 : ast_expr_op(ptr) {}
7176
7177ast_expr_op_pdiv_q &ast_expr_op_pdiv_q::operator=(ast_expr_op_pdiv_q obj) {
7178 std::swap(a&: this->ptr, b&: obj.ptr);
7179 return *this;
7180}
7181
7182isl::ctx ast_expr_op_pdiv_q::ctx() const {
7183 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7184}
7185
7186inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
7187{
7188 char *str = isl_ast_expr_to_str(expr: obj.get());
7189 if (!str) {
7190 os.setstate(std::ios_base::badbit);
7191 return os;
7192 }
7193 os << str;
7194 free(ptr: str);
7195 return os;
7196}
7197
7198// implementations for isl::ast_expr_op_pdiv_r
7199ast_expr_op_pdiv_r::ast_expr_op_pdiv_r()
7200 : ast_expr_op() {}
7201
7202ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj)
7203 : ast_expr_op(obj)
7204{
7205}
7206
7207ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr)
7208 : ast_expr_op(ptr) {}
7209
7210ast_expr_op_pdiv_r &ast_expr_op_pdiv_r::operator=(ast_expr_op_pdiv_r obj) {
7211 std::swap(a&: this->ptr, b&: obj.ptr);
7212 return *this;
7213}
7214
7215isl::ctx ast_expr_op_pdiv_r::ctx() const {
7216 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7217}
7218
7219inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
7220{
7221 char *str = isl_ast_expr_to_str(expr: obj.get());
7222 if (!str) {
7223 os.setstate(std::ios_base::badbit);
7224 return os;
7225 }
7226 os << str;
7227 free(ptr: str);
7228 return os;
7229}
7230
7231// implementations for isl::ast_expr_op_select
7232ast_expr_op_select::ast_expr_op_select()
7233 : ast_expr_op() {}
7234
7235ast_expr_op_select::ast_expr_op_select(const ast_expr_op_select &obj)
7236 : ast_expr_op(obj)
7237{
7238}
7239
7240ast_expr_op_select::ast_expr_op_select(__isl_take isl_ast_expr *ptr)
7241 : ast_expr_op(ptr) {}
7242
7243ast_expr_op_select &ast_expr_op_select::operator=(ast_expr_op_select obj) {
7244 std::swap(a&: this->ptr, b&: obj.ptr);
7245 return *this;
7246}
7247
7248isl::ctx ast_expr_op_select::ctx() const {
7249 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7250}
7251
7252inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
7253{
7254 char *str = isl_ast_expr_to_str(expr: obj.get());
7255 if (!str) {
7256 os.setstate(std::ios_base::badbit);
7257 return os;
7258 }
7259 os << str;
7260 free(ptr: str);
7261 return os;
7262}
7263
7264// implementations for isl::ast_expr_op_sub
7265ast_expr_op_sub::ast_expr_op_sub()
7266 : ast_expr_op() {}
7267
7268ast_expr_op_sub::ast_expr_op_sub(const ast_expr_op_sub &obj)
7269 : ast_expr_op(obj)
7270{
7271}
7272
7273ast_expr_op_sub::ast_expr_op_sub(__isl_take isl_ast_expr *ptr)
7274 : ast_expr_op(ptr) {}
7275
7276ast_expr_op_sub &ast_expr_op_sub::operator=(ast_expr_op_sub obj) {
7277 std::swap(a&: this->ptr, b&: obj.ptr);
7278 return *this;
7279}
7280
7281isl::ctx ast_expr_op_sub::ctx() const {
7282 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7283}
7284
7285inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
7286{
7287 char *str = isl_ast_expr_to_str(expr: obj.get());
7288 if (!str) {
7289 os.setstate(std::ios_base::badbit);
7290 return os;
7291 }
7292 os << str;
7293 free(ptr: str);
7294 return os;
7295}
7296
7297// implementations for isl::ast_expr_op_zdiv_r
7298ast_expr_op_zdiv_r::ast_expr_op_zdiv_r()
7299 : ast_expr_op() {}
7300
7301ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj)
7302 : ast_expr_op(obj)
7303{
7304}
7305
7306ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr)
7307 : ast_expr_op(ptr) {}
7308
7309ast_expr_op_zdiv_r &ast_expr_op_zdiv_r::operator=(ast_expr_op_zdiv_r obj) {
7310 std::swap(a&: this->ptr, b&: obj.ptr);
7311 return *this;
7312}
7313
7314isl::ctx ast_expr_op_zdiv_r::ctx() const {
7315 return isl::ctx(isl_ast_expr_get_ctx(expr: ptr));
7316}
7317
7318inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
7319{
7320 char *str = isl_ast_expr_to_str(expr: obj.get());
7321 if (!str) {
7322 os.setstate(std::ios_base::badbit);
7323 return os;
7324 }
7325 os << str;
7326 free(ptr: str);
7327 return os;
7328}
7329
7330// implementations for isl::ast_node
7331ast_node manage(__isl_take isl_ast_node *ptr) {
7332 return ast_node(ptr);
7333}
7334ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
7335 ptr = isl_ast_node_copy(node: ptr);
7336 return ast_node(ptr);
7337}
7338
7339ast_node::ast_node()
7340 : ptr(nullptr) {}
7341
7342ast_node::ast_node(const ast_node &obj)
7343 : ptr(nullptr)
7344{
7345 ptr = obj.copy();
7346}
7347
7348ast_node::ast_node(__isl_take isl_ast_node *ptr)
7349 : ptr(ptr) {}
7350
7351ast_node &ast_node::operator=(ast_node obj) {
7352 std::swap(a&: this->ptr, b&: obj.ptr);
7353 return *this;
7354}
7355
7356ast_node::~ast_node() {
7357 if (ptr)
7358 isl_ast_node_free(node: ptr);
7359}
7360
7361__isl_give isl_ast_node *ast_node::copy() const & {
7362 return isl_ast_node_copy(node: ptr);
7363}
7364
7365__isl_keep isl_ast_node *ast_node::get() const {
7366 return ptr;
7367}
7368
7369__isl_give isl_ast_node *ast_node::release() {
7370 isl_ast_node *tmp = ptr;
7371 ptr = nullptr;
7372 return tmp;
7373}
7374
7375bool ast_node::is_null() const {
7376 return ptr == nullptr;
7377}
7378
7379template <typename T, typename>
7380boolean ast_node::isa_type(T subtype) const
7381{
7382 if (is_null())
7383 return boolean();
7384 return isl_ast_node_get_type(node: get()) == subtype;
7385}
7386template <class T>
7387boolean ast_node::isa() const
7388{
7389 return isa_type<decltype(T::type)>(T::type);
7390}
7391template <class T>
7392T 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
7399isl::ctx ast_node::ctx() const {
7400 return isl::ctx(isl_ast_node_get_ctx(node: ptr));
7401}
7402
7403isl::id ast_node::annotation() const
7404{
7405 auto res = isl_ast_node_get_annotation(node: get());
7406 return manage(ptr: res);
7407}
7408
7409isl::id ast_node::get_annotation() const
7410{
7411 return annotation();
7412}
7413
7414std::string ast_node::to_C_str() const
7415{
7416 auto res = isl_ast_node_to_C_str(node: get());
7417 std::string tmp(res);
7418 free(ptr: res);
7419 return tmp;
7420}
7421
7422isl::ast_node_list ast_node::to_list() const
7423{
7424 auto res = isl_ast_node_to_list(el: copy());
7425 return manage(ptr: res);
7426}
7427
7428inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
7429{
7430 char *str = isl_ast_node_to_str(node: obj.get());
7431 if (!str) {
7432 os.setstate(std::ios_base::badbit);
7433 return os;
7434 }
7435 os << str;
7436 free(ptr: str);
7437 return os;
7438}
7439
7440// implementations for isl::ast_node_block
7441ast_node_block::ast_node_block()
7442 : ast_node() {}
7443
7444ast_node_block::ast_node_block(const ast_node_block &obj)
7445 : ast_node(obj)
7446{
7447}
7448
7449ast_node_block::ast_node_block(__isl_take isl_ast_node *ptr)
7450 : ast_node(ptr) {}
7451
7452ast_node_block &ast_node_block::operator=(ast_node_block obj) {
7453 std::swap(a&: this->ptr, b&: obj.ptr);
7454 return *this;
7455}
7456
7457isl::ctx ast_node_block::ctx() const {
7458 return isl::ctx(isl_ast_node_get_ctx(node: ptr));
7459}
7460
7461isl::ast_node_list ast_node_block::children() const
7462{
7463 auto res = isl_ast_node_block_get_children(node: get());
7464 return manage(ptr: res);
7465}
7466
7467isl::ast_node_list ast_node_block::get_children() const
7468{
7469 return children();
7470}
7471
7472inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
7473{
7474 char *str = isl_ast_node_to_str(node: obj.get());
7475 if (!str) {
7476 os.setstate(std::ios_base::badbit);
7477 return os;
7478 }
7479 os << str;
7480 free(ptr: str);
7481 return os;
7482}
7483
7484// implementations for isl::ast_node_for
7485ast_node_for::ast_node_for()
7486 : ast_node() {}
7487
7488ast_node_for::ast_node_for(const ast_node_for &obj)
7489 : ast_node(obj)
7490{
7491}
7492
7493ast_node_for::ast_node_for(__isl_take isl_ast_node *ptr)
7494 : ast_node(ptr) {}
7495
7496ast_node_for &ast_node_for::operator=(ast_node_for obj) {
7497 std::swap(a&: this->ptr, b&: obj.ptr);
7498 return *this;
7499}
7500
7501isl::ctx ast_node_for::ctx() const {
7502 return isl::ctx(isl_ast_node_get_ctx(node: ptr));
7503}
7504
7505isl::ast_node ast_node_for::body() const
7506{
7507 auto res = isl_ast_node_for_get_body(node: get());
7508 return manage(ptr: res);
7509}
7510
7511isl::ast_node ast_node_for::get_body() const
7512{
7513 return body();
7514}
7515
7516isl::ast_expr ast_node_for::cond() const
7517{
7518 auto res = isl_ast_node_for_get_cond(node: get());
7519 return manage(ptr: res);
7520}
7521
7522isl::ast_expr ast_node_for::get_cond() const
7523{
7524 return cond();
7525}
7526
7527isl::ast_expr ast_node_for::inc() const
7528{
7529 auto res = isl_ast_node_for_get_inc(node: get());
7530 return manage(ptr: res);
7531}
7532
7533isl::ast_expr ast_node_for::get_inc() const
7534{
7535 return inc();
7536}
7537
7538isl::ast_expr ast_node_for::init() const
7539{
7540 auto res = isl_ast_node_for_get_init(node: get());
7541 return manage(ptr: res);
7542}
7543
7544isl::ast_expr ast_node_for::get_init() const
7545{
7546 return init();
7547}
7548
7549boolean ast_node_for::is_degenerate() const
7550{
7551 auto res = isl_ast_node_for_is_degenerate(node: get());
7552 return manage(val: res);
7553}
7554
7555isl::ast_expr ast_node_for::iterator() const
7556{
7557 auto res = isl_ast_node_for_get_iterator(node: get());
7558 return manage(ptr: res);
7559}
7560
7561isl::ast_expr ast_node_for::get_iterator() const
7562{
7563 return iterator();
7564}
7565
7566inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
7567{
7568 char *str = isl_ast_node_to_str(node: obj.get());
7569 if (!str) {
7570 os.setstate(std::ios_base::badbit);
7571 return os;
7572 }
7573 os << str;
7574 free(ptr: str);
7575 return os;
7576}
7577
7578// implementations for isl::ast_node_if
7579ast_node_if::ast_node_if()
7580 : ast_node() {}
7581
7582ast_node_if::ast_node_if(const ast_node_if &obj)
7583 : ast_node(obj)
7584{
7585}
7586
7587ast_node_if::ast_node_if(__isl_take isl_ast_node *ptr)
7588 : ast_node(ptr) {}
7589
7590ast_node_if &ast_node_if::operator=(ast_node_if obj) {
7591 std::swap(a&: this->ptr, b&: obj.ptr);
7592 return *this;
7593}
7594
7595isl::ctx ast_node_if::ctx() const {
7596 return isl::ctx(isl_ast_node_get_ctx(node: ptr));
7597}
7598
7599isl::ast_expr ast_node_if::cond() const
7600{
7601 auto res = isl_ast_node_if_get_cond(node: get());
7602 return manage(ptr: res);
7603}
7604
7605isl::ast_expr ast_node_if::get_cond() const
7606{
7607 return cond();
7608}
7609
7610isl::ast_node ast_node_if::else_node() const
7611{
7612 auto res = isl_ast_node_if_get_else_node(node: get());
7613 return manage(ptr: res);
7614}
7615
7616isl::ast_node ast_node_if::get_else_node() const
7617{
7618 return else_node();
7619}
7620
7621boolean ast_node_if::has_else_node() const
7622{
7623 auto res = isl_ast_node_if_has_else_node(node: get());
7624 return manage(val: res);
7625}
7626
7627isl::ast_node ast_node_if::then_node() const
7628{
7629 auto res = isl_ast_node_if_get_then_node(node: get());
7630 return manage(ptr: res);
7631}
7632
7633isl::ast_node ast_node_if::get_then_node() const
7634{
7635 return then_node();
7636}
7637
7638inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
7639{
7640 char *str = isl_ast_node_to_str(node: obj.get());
7641 if (!str) {
7642 os.setstate(std::ios_base::badbit);
7643 return os;
7644 }
7645 os << str;
7646 free(ptr: str);
7647 return os;
7648}
7649
7650// implementations for isl::ast_node_list
7651ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
7652 return ast_node_list(ptr);
7653}
7654ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
7655 ptr = isl_ast_node_list_copy(list: ptr);
7656 return ast_node_list(ptr);
7657}
7658
7659ast_node_list::ast_node_list()
7660 : ptr(nullptr) {}
7661
7662ast_node_list::ast_node_list(const ast_node_list &obj)
7663 : ptr(nullptr)
7664{
7665 ptr = obj.copy();
7666}
7667
7668ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
7669 : ptr(ptr) {}
7670
7671ast_node_list::ast_node_list(isl::ctx ctx, int n)
7672{
7673 auto res = isl_ast_node_list_alloc(ctx: ctx.release(), n);
7674 ptr = res;
7675}
7676
7677ast_node_list::ast_node_list(isl::ast_node el)
7678{
7679 auto res = isl_ast_node_list_from_ast_node(el: el.release());
7680 ptr = res;
7681}
7682
7683ast_node_list &ast_node_list::operator=(ast_node_list obj) {
7684 std::swap(a&: this->ptr, b&: obj.ptr);
7685 return *this;
7686}
7687
7688ast_node_list::~ast_node_list() {
7689 if (ptr)
7690 isl_ast_node_list_free(list: ptr);
7691}
7692
7693__isl_give isl_ast_node_list *ast_node_list::copy() const & {
7694 return isl_ast_node_list_copy(list: ptr);
7695}
7696
7697__isl_keep isl_ast_node_list *ast_node_list::get() const {
7698 return ptr;
7699}
7700
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
7707bool ast_node_list::is_null() const {
7708 return ptr == nullptr;
7709}
7710
7711isl::ctx ast_node_list::ctx() const {
7712 return isl::ctx(isl_ast_node_list_get_ctx(list: ptr));
7713}
7714
7715isl::ast_node_list ast_node_list::add(isl::ast_node el) const
7716{
7717 auto res = isl_ast_node_list_add(list: copy(), el: el.release());
7718 return manage(ptr: res);
7719}
7720
7721isl::ast_node ast_node_list::at(int index) const
7722{
7723 auto res = isl_ast_node_list_get_at(list: get(), index);
7724 return manage(ptr: res);
7725}
7726
7727isl::ast_node ast_node_list::get_at(int index) const
7728{
7729 return at(index);
7730}
7731
7732isl::ast_node_list ast_node_list::clear() const
7733{
7734 auto res = isl_ast_node_list_clear(list: copy());
7735 return manage(ptr: res);
7736}
7737
7738isl::ast_node_list ast_node_list::concat(isl::ast_node_list list2) const
7739{
7740 auto res = isl_ast_node_list_concat(list1: copy(), list2: list2.release());
7741 return manage(ptr: res);
7742}
7743
7744isl::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
7745{
7746 auto res = isl_ast_node_list_drop(list: copy(), first, n);
7747 return manage(ptr: res);
7748}
7749
7750stat 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 = { .func: 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(ptr: arg_0));
7758 return ret.release();
7759 };
7760 auto res = isl_ast_node_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
7761 return manage(val: res);
7762}
7763
7764isl::ast_node_list ast_node_list::insert(unsigned int pos, isl::ast_node el) const
7765{
7766 auto res = isl_ast_node_list_insert(list: copy(), pos, el: el.release());
7767 return manage(ptr: res);
7768}
7769
7770class size ast_node_list::size() const
7771{
7772 auto res = isl_ast_node_list_size(list: get());
7773 return manage(val: res);
7774}
7775
7776inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
7777{
7778 char *str = isl_ast_node_list_to_str(list: obj.get());
7779 if (!str) {
7780 os.setstate(std::ios_base::badbit);
7781 return os;
7782 }
7783 os << str;
7784 free(ptr: str);
7785 return os;
7786}
7787
7788// implementations for isl::ast_node_mark
7789ast_node_mark::ast_node_mark()
7790 : ast_node() {}
7791
7792ast_node_mark::ast_node_mark(const ast_node_mark &obj)
7793 : ast_node(obj)
7794{
7795}
7796
7797ast_node_mark::ast_node_mark(__isl_take isl_ast_node *ptr)
7798 : ast_node(ptr) {}
7799
7800ast_node_mark &ast_node_mark::operator=(ast_node_mark obj) {
7801 std::swap(a&: this->ptr, b&: obj.ptr);
7802 return *this;
7803}
7804
7805isl::ctx ast_node_mark::ctx() const {
7806 return isl::ctx(isl_ast_node_get_ctx(node: ptr));
7807}
7808
7809isl::id ast_node_mark::id() const
7810{
7811 auto res = isl_ast_node_mark_get_id(node: get());
7812 return manage(ptr: res);
7813}
7814
7815isl::id ast_node_mark::get_id() const
7816{
7817 return id();
7818}
7819
7820isl::ast_node ast_node_mark::node() const
7821{
7822 auto res = isl_ast_node_mark_get_node(node: get());
7823 return manage(ptr: res);
7824}
7825
7826isl::ast_node ast_node_mark::get_node() const
7827{
7828 return node();
7829}
7830
7831inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
7832{
7833 char *str = isl_ast_node_to_str(node: obj.get());
7834 if (!str) {
7835 os.setstate(std::ios_base::badbit);
7836 return os;
7837 }
7838 os << str;
7839 free(ptr: str);
7840 return os;
7841}
7842
7843// implementations for isl::ast_node_user
7844ast_node_user::ast_node_user()
7845 : ast_node() {}
7846
7847ast_node_user::ast_node_user(const ast_node_user &obj)
7848 : ast_node(obj)
7849{
7850}
7851
7852ast_node_user::ast_node_user(__isl_take isl_ast_node *ptr)
7853 : ast_node(ptr) {}
7854
7855ast_node_user &ast_node_user::operator=(ast_node_user obj) {
7856 std::swap(a&: this->ptr, b&: obj.ptr);
7857 return *this;
7858}
7859
7860isl::ctx ast_node_user::ctx() const {
7861 return isl::ctx(isl_ast_node_get_ctx(node: ptr));
7862}
7863
7864isl::ast_expr ast_node_user::expr() const
7865{
7866 auto res = isl_ast_node_user_get_expr(node: get());
7867 return manage(ptr: res);
7868}
7869
7870isl::ast_expr ast_node_user::get_expr() const
7871{
7872 return expr();
7873}
7874
7875inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
7876{
7877 char *str = isl_ast_node_to_str(node: obj.get());
7878 if (!str) {
7879 os.setstate(std::ios_base::badbit);
7880 return os;
7881 }
7882 os << str;
7883 free(ptr: str);
7884 return os;
7885}
7886
7887// implementations for isl::basic_map
7888basic_map manage(__isl_take isl_basic_map *ptr) {
7889 return basic_map(ptr);
7890}
7891basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
7892 ptr = isl_basic_map_copy(bmap: ptr);
7893 return basic_map(ptr);
7894}
7895
7896basic_map::basic_map()
7897 : ptr(nullptr) {}
7898
7899basic_map::basic_map(const basic_map &obj)
7900 : ptr(nullptr)
7901{
7902 ptr = obj.copy();
7903}
7904
7905basic_map::basic_map(__isl_take isl_basic_map *ptr)
7906 : ptr(ptr) {}
7907
7908basic_map::basic_map(isl::ctx ctx, const std::string &str)
7909{
7910 auto res = isl_basic_map_read_from_str(ctx: ctx.release(), str: str.c_str());
7911 ptr = res;
7912}
7913
7914basic_map &basic_map::operator=(basic_map obj) {
7915 std::swap(a&: this->ptr, b&: obj.ptr);
7916 return *this;
7917}
7918
7919basic_map::~basic_map() {
7920 if (ptr)
7921 isl_basic_map_free(bmap: ptr);
7922}
7923
7924__isl_give isl_basic_map *basic_map::copy() const & {
7925 return isl_basic_map_copy(bmap: ptr);
7926}
7927
7928__isl_keep isl_basic_map *basic_map::get() const {
7929 return ptr;
7930}
7931
7932__isl_give isl_basic_map *basic_map::release() {
7933 isl_basic_map *tmp = ptr;
7934 ptr = nullptr;
7935 return tmp;
7936}
7937
7938bool basic_map::is_null() const {
7939 return ptr == nullptr;
7940}
7941
7942isl::ctx basic_map::ctx() const {
7943 return isl::ctx(isl_basic_map_get_ctx(bmap: ptr));
7944}
7945
7946isl::map basic_map::add_constraint(const isl::constraint &constraint) const
7947{
7948 return isl::map(*this).add_constraint(constraint);
7949}
7950
7951isl::map basic_map::add_dims(isl::dim type, unsigned int n) const
7952{
7953 return isl::map(*this).add_dims(type, n);
7954}
7955
7956isl::basic_map basic_map::affine_hull() const
7957{
7958 auto res = isl_basic_map_affine_hull(bmap: copy());
7959 return manage(ptr: res);
7960}
7961
7962isl::map basic_map::align_params(const isl::space &model) const
7963{
7964 return isl::map(*this).align_params(model);
7965}
7966
7967isl::basic_map basic_map::apply_domain(isl::basic_map bmap2) const
7968{
7969 auto res = isl_basic_map_apply_domain(bmap1: copy(), bmap2: bmap2.release());
7970 return manage(ptr: res);
7971}
7972
7973isl::map basic_map::apply_domain(const isl::map &map2) const
7974{
7975 return isl::map(*this).apply_domain(map2);
7976}
7977
7978isl::union_map basic_map::apply_domain(const isl::union_map &umap2) const
7979{
7980 return isl::map(*this).apply_domain(umap2);
7981}
7982
7983isl::basic_map basic_map::apply_range(isl::basic_map bmap2) const
7984{
7985 auto res = isl_basic_map_apply_range(bmap1: copy(), bmap2: bmap2.release());
7986 return manage(ptr: res);
7987}
7988
7989isl::map basic_map::apply_range(const isl::map &map2) const
7990{
7991 return isl::map(*this).apply_range(map2);
7992}
7993
7994isl::union_map basic_map::apply_range(const isl::union_map &umap2) const
7995{
7996 return isl::map(*this).apply_range(umap2);
7997}
7998
7999isl::map basic_map::as_map() const
8000{
8001 return isl::map(*this).as_map();
8002}
8003
8004isl::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
8009isl::pw_multi_aff basic_map::as_pw_multi_aff() const
8010{
8011 return isl::map(*this).as_pw_multi_aff();
8012}
8013
8014isl::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
8019isl::basic_map_list basic_map::basic_map_list() const
8020{
8021 return isl::map(*this).basic_map_list();
8022}
8023
8024isl::set basic_map::bind_domain(const isl::multi_id &tuple) const
8025{
8026 return isl::map(*this).bind_domain(tuple);
8027}
8028
8029isl::set basic_map::bind_range(const isl::multi_id &tuple) const
8030{
8031 return isl::map(*this).bind_range(tuple);
8032}
8033
8034boolean basic_map::can_curry() const
8035{
8036 return isl::map(*this).can_curry();
8037}
8038
8039isl::map basic_map::coalesce() const
8040{
8041 return isl::map(*this).coalesce();
8042}
8043
8044isl::map basic_map::complement() const
8045{
8046 return isl::map(*this).complement();
8047}
8048
8049isl::union_map basic_map::compute_divs() const
8050{
8051 return isl::map(*this).compute_divs();
8052}
8053
8054isl::map basic_map::curry() const
8055{
8056 return isl::map(*this).curry();
8057}
8058
8059isl::basic_set basic_map::deltas() const
8060{
8061 auto res = isl_basic_map_deltas(bmap: copy());
8062 return manage(ptr: res);
8063}
8064
8065isl::basic_map basic_map::detect_equalities() const
8066{
8067 auto res = isl_basic_map_detect_equalities(bmap: copy());
8068 return manage(ptr: res);
8069}
8070
8071class size basic_map::dim(isl::dim type) const
8072{
8073 return isl::map(*this).dim(type);
8074}
8075
8076isl::pw_aff basic_map::dim_max(int pos) const
8077{
8078 return isl::map(*this).dim_max(pos);
8079}
8080
8081isl::pw_aff basic_map::dim_min(int pos) const
8082{
8083 return isl::map(*this).dim_min(pos);
8084}
8085
8086isl::basic_set basic_map::domain() const
8087{
8088 auto res = isl_basic_map_domain(bmap: copy());
8089 return manage(ptr: res);
8090}
8091
8092isl::map basic_map::domain_factor_domain() const
8093{
8094 return isl::map(*this).domain_factor_domain();
8095}
8096
8097isl::map basic_map::domain_factor_range() const
8098{
8099 return isl::map(*this).domain_factor_range();
8100}
8101
8102isl::map basic_map::domain_map() const
8103{
8104 return isl::map(*this).domain_map();
8105}
8106
8107isl::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
8112isl::map basic_map::domain_product(const isl::map &map2) const
8113{
8114 return isl::map(*this).domain_product(map2);
8115}
8116
8117isl::union_map basic_map::domain_product(const isl::union_map &umap2) const
8118{
8119 return isl::map(*this).domain_product(umap2);
8120}
8121
8122class size basic_map::domain_tuple_dim() const
8123{
8124 return isl::map(*this).domain_tuple_dim();
8125}
8126
8127isl::id basic_map::domain_tuple_id() const
8128{
8129 return isl::map(*this).domain_tuple_id();
8130}
8131
8132isl::map basic_map::eq_at(const isl::multi_pw_aff &mpa) const
8133{
8134 return isl::map(*this).eq_at(mpa);
8135}
8136
8137isl::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
8142isl::basic_map basic_map::equal(isl::space space, unsigned int n_equal)
8143{
8144 auto res = isl_basic_map_equal(space: space.release(), n_equal);
8145 return manage(ptr: res);
8146}
8147
8148isl::basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8149{
8150 auto res = isl_basic_map_equate(bmap: copy(), type1: static_cast<enum isl_dim_type>(type1), pos1, type2: static_cast<enum isl_dim_type>(type2), pos2);
8151 return manage(ptr: res);
8152}
8153
8154boolean basic_map::every_map(const std::function<boolean(isl::map)> &test) const
8155{
8156 return isl::map(*this).every_map(test);
8157}
8158
8159isl::map basic_map::extract_map(const isl::space &space) const
8160{
8161 return isl::map(*this).extract_map(space);
8162}
8163
8164isl::map basic_map::factor_domain() const
8165{
8166 return isl::map(*this).factor_domain();
8167}
8168
8169isl::map basic_map::factor_range() const
8170{
8171 return isl::map(*this).factor_range();
8172}
8173
8174isl::basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const
8175{
8176 auto res = isl_basic_map_fix_si(bmap: copy(), type: static_cast<enum isl_dim_type>(type), pos, value);
8177 return manage(ptr: res);
8178}
8179
8180isl::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(bmap: copy(), type: static_cast<enum isl_dim_type>(type), pos, v: v.release());
8183 return manage(ptr: res);
8184}
8185
8186isl::basic_map basic_map::fix_val(isl::dim type, unsigned int pos, long v) const
8187{
8188 return this->fix_val(type, pos, v: isl::val(ctx(), v));
8189}
8190
8191isl::union_map basic_map::fixed_power(const isl::val &exp) const
8192{
8193 return isl::map(*this).fixed_power(exp);
8194}
8195
8196isl::union_map basic_map::fixed_power(long exp) const
8197{
8198 return this->fixed_power(exp: isl::val(ctx(), exp));
8199}
8200
8201isl::map basic_map::flat_range_product(const isl::map &map2) const
8202{
8203 return isl::map(*this).flat_range_product(map2);
8204}
8205
8206isl::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
8211isl::basic_map basic_map::flatten() const
8212{
8213 auto res = isl_basic_map_flatten(bmap: copy());
8214 return manage(ptr: res);
8215}
8216
8217isl::basic_map basic_map::flatten_domain() const
8218{
8219 auto res = isl_basic_map_flatten_domain(bmap: copy());
8220 return manage(ptr: res);
8221}
8222
8223isl::basic_map basic_map::flatten_range() const
8224{
8225 auto res = isl_basic_map_flatten_range(bmap: copy());
8226 return manage(ptr: res);
8227}
8228
8229isl::map basic_map::floordiv_val(const isl::val &d) const
8230{
8231 return isl::map(*this).floordiv_val(d);
8232}
8233
8234isl::map basic_map::floordiv_val(long d) const
8235{
8236 return this->floordiv_val(d: isl::val(ctx(), d));
8237}
8238
8239stat 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
8244stat basic_map::foreach_map(const std::function<stat(isl::map)> &fn) const
8245{
8246 return isl::map(*this).foreach_map(fn);
8247}
8248
8249isl::basic_map basic_map::from_aff(isl::aff aff)
8250{
8251 auto res = isl_basic_map_from_aff(aff: aff.release());
8252 return manage(ptr: res);
8253}
8254
8255isl::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: domain.release(), range: range.release());
8258 return manage(ptr: res);
8259}
8260
8261isl::basic_map basic_map::gist(isl::basic_map context) const
8262{
8263 auto res = isl_basic_map_gist(bmap: copy(), context: context.release());
8264 return manage(ptr: res);
8265}
8266
8267isl::map basic_map::gist(const isl::map &context) const
8268{
8269 return isl::map(*this).gist(context);
8270}
8271
8272isl::union_map basic_map::gist(const isl::union_map &context) const
8273{
8274 return isl::map(*this).gist(context);
8275}
8276
8277isl::map basic_map::gist_domain(const isl::set &context) const
8278{
8279 return isl::map(*this).gist_domain(context);
8280}
8281
8282isl::union_map basic_map::gist_domain(const isl::union_set &uset) const
8283{
8284 return isl::map(*this).gist_domain(uset);
8285}
8286
8287isl::map basic_map::gist_params(const isl::set &context) const
8288{
8289 return isl::map(*this).gist_params(context);
8290}
8291
8292isl::union_map basic_map::gist_range(const isl::union_set &uset) const
8293{
8294 return isl::map(*this).gist_range(uset);
8295}
8296
8297boolean basic_map::has_domain_tuple_id() const
8298{
8299 return isl::map(*this).has_domain_tuple_id();
8300}
8301
8302boolean basic_map::has_equal_space(const isl::map &map2) const
8303{
8304 return isl::map(*this).has_equal_space(map2);
8305}
8306
8307boolean basic_map::has_range_tuple_id() const
8308{
8309 return isl::map(*this).has_range_tuple_id();
8310}
8311
8312boolean basic_map::has_tuple_id(isl::dim type) const
8313{
8314 return isl::map(*this).has_tuple_id(type);
8315}
8316
8317boolean basic_map::has_tuple_name(isl::dim type) const
8318{
8319 return isl::map(*this).has_tuple_name(type);
8320}
8321
8322isl::basic_map basic_map::intersect(isl::basic_map bmap2) const
8323{
8324 auto res = isl_basic_map_intersect(bmap1: copy(), bmap2: bmap2.release());
8325 return manage(ptr: res);
8326}
8327
8328isl::map basic_map::intersect(const isl::map &map2) const
8329{
8330 return isl::map(*this).intersect(map2);
8331}
8332
8333isl::union_map basic_map::intersect(const isl::union_map &umap2) const
8334{
8335 return isl::map(*this).intersect(umap2);
8336}
8337
8338isl::basic_map basic_map::intersect_domain(isl::basic_set bset) const
8339{
8340 auto res = isl_basic_map_intersect_domain(bmap: copy(), bset: bset.release());
8341 return manage(ptr: res);
8342}
8343
8344isl::map basic_map::intersect_domain(const isl::set &set) const
8345{
8346 return isl::map(*this).intersect_domain(set);
8347}
8348
8349isl::union_map basic_map::intersect_domain(const isl::space &space) const
8350{
8351 return isl::map(*this).intersect_domain(space);
8352}
8353
8354isl::union_map basic_map::intersect_domain(const isl::union_set &uset) const
8355{
8356 return isl::map(*this).intersect_domain(uset);
8357}
8358
8359isl::basic_map basic_map::intersect_domain(const isl::point &bset) const
8360{
8361 return this->intersect_domain(bset: isl::basic_set(bset));
8362}
8363
8364isl::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
8369isl::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
8374isl::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
8379isl::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
8384isl::map basic_map::intersect_params(const isl::set &params) const
8385{
8386 return isl::map(*this).intersect_params(params);
8387}
8388
8389isl::basic_map basic_map::intersect_range(isl::basic_set bset) const
8390{
8391 auto res = isl_basic_map_intersect_range(bmap: copy(), bset: bset.release());
8392 return manage(ptr: res);
8393}
8394
8395isl::map basic_map::intersect_range(const isl::set &set) const
8396{
8397 return isl::map(*this).intersect_range(set);
8398}
8399
8400isl::union_map basic_map::intersect_range(const isl::space &space) const
8401{
8402 return isl::map(*this).intersect_range(space);
8403}
8404
8405isl::union_map basic_map::intersect_range(const isl::union_set &uset) const
8406{
8407 return isl::map(*this).intersect_range(uset);
8408}
8409
8410isl::basic_map basic_map::intersect_range(const isl::point &bset) const
8411{
8412 return this->intersect_range(bset: isl::basic_set(bset));
8413}
8414
8415isl::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
8420isl::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
8425isl::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
8430isl::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
8435boolean 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
8440boolean basic_map::is_bijective() const
8441{
8442 return isl::map(*this).is_bijective();
8443}
8444
8445boolean basic_map::is_disjoint(const isl::map &map2) const
8446{
8447 return isl::map(*this).is_disjoint(map2);
8448}
8449
8450boolean basic_map::is_disjoint(const isl::union_map &umap2) const
8451{
8452 return isl::map(*this).is_disjoint(umap2);
8453}
8454
8455boolean basic_map::is_empty() const
8456{
8457 auto res = isl_basic_map_is_empty(bmap: get());
8458 return manage(val: res);
8459}
8460
8461boolean basic_map::is_equal(const isl::basic_map &bmap2) const
8462{
8463 auto res = isl_basic_map_is_equal(bmap1: get(), bmap2: bmap2.get());
8464 return manage(val: res);
8465}
8466
8467boolean basic_map::is_equal(const isl::map &map2) const
8468{
8469 return isl::map(*this).is_equal(map2);
8470}
8471
8472boolean basic_map::is_equal(const isl::union_map &umap2) const
8473{
8474 return isl::map(*this).is_equal(umap2);
8475}
8476
8477boolean basic_map::is_injective() const
8478{
8479 return isl::map(*this).is_injective();
8480}
8481
8482boolean basic_map::is_single_valued() const
8483{
8484 return isl::map(*this).is_single_valued();
8485}
8486
8487boolean basic_map::is_strict_subset(const isl::map &map2) const
8488{
8489 return isl::map(*this).is_strict_subset(map2);
8490}
8491
8492boolean basic_map::is_strict_subset(const isl::union_map &umap2) const
8493{
8494 return isl::map(*this).is_strict_subset(umap2);
8495}
8496
8497boolean basic_map::is_subset(const isl::basic_map &bmap2) const
8498{
8499 auto res = isl_basic_map_is_subset(bmap1: get(), bmap2: bmap2.get());
8500 return manage(val: res);
8501}
8502
8503boolean basic_map::is_subset(const isl::map &map2) const
8504{
8505 return isl::map(*this).is_subset(map2);
8506}
8507
8508boolean basic_map::is_subset(const isl::union_map &umap2) const
8509{
8510 return isl::map(*this).is_subset(umap2);
8511}
8512
8513boolean basic_map::isa_map() const
8514{
8515 return isl::map(*this).isa_map();
8516}
8517
8518isl::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
8523isl::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
8528isl::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
8533isl::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
8538isl::map basic_map::lexmax() const
8539{
8540 auto res = isl_basic_map_lexmax(bmap: copy());
8541 return manage(ptr: res);
8542}
8543
8544isl::pw_multi_aff basic_map::lexmax_pw_multi_aff() const
8545{
8546 return isl::map(*this).lexmax_pw_multi_aff();
8547}
8548
8549isl::map basic_map::lexmin() const
8550{
8551 auto res = isl_basic_map_lexmin(bmap: copy());
8552 return manage(ptr: res);
8553}
8554
8555isl::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
8556{
8557 return isl::map(*this).lexmin_pw_multi_aff();
8558}
8559
8560isl::map basic_map::lower_bound(const isl::multi_pw_aff &lower) const
8561{
8562 return isl::map(*this).lower_bound(lower);
8563}
8564
8565isl::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
8570isl::map_list basic_map::map_list() const
8571{
8572 return isl::map(*this).map_list();
8573}
8574
8575isl::multi_pw_aff basic_map::max_multi_pw_aff() const
8576{
8577 return isl::map(*this).max_multi_pw_aff();
8578}
8579
8580isl::multi_pw_aff basic_map::min_multi_pw_aff() const
8581{
8582 return isl::map(*this).min_multi_pw_aff();
8583}
8584
8585isl::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
8590class size basic_map::n_basic_map() const
8591{
8592 return isl::map(*this).n_basic_map();
8593}
8594
8595isl::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
8600isl::set basic_map::params() const
8601{
8602 return isl::map(*this).params();
8603}
8604
8605isl::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(bmap: get(), type: static_cast<enum isl_dim_type>(type), pos);
8608 return manage(ptr: res);
8609}
8610
8611isl::basic_map basic_map::polyhedral_hull() const
8612{
8613 return isl::map(*this).polyhedral_hull();
8614}
8615
8616isl::map basic_map::preimage_domain(const isl::multi_aff &ma) const
8617{
8618 return isl::map(*this).preimage_domain(ma);
8619}
8620
8621isl::map basic_map::preimage_domain(const isl::multi_pw_aff &mpa) const
8622{
8623 return isl::map(*this).preimage_domain(mpa);
8624}
8625
8626isl::map basic_map::preimage_domain(const isl::pw_multi_aff &pma) const
8627{
8628 return isl::map(*this).preimage_domain(pma);
8629}
8630
8631isl::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
8636isl::map basic_map::preimage_range(const isl::multi_aff &ma) const
8637{
8638 return isl::map(*this).preimage_range(ma);
8639}
8640
8641isl::map basic_map::preimage_range(const isl::pw_multi_aff &pma) const
8642{
8643 return isl::map(*this).preimage_range(pma);
8644}
8645
8646isl::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
8651isl::map basic_map::product(const isl::map &map2) const
8652{
8653 return isl::map(*this).product(map2);
8654}
8655
8656isl::union_map basic_map::product(const isl::union_map &umap2) const
8657{
8658 return isl::map(*this).product(umap2);
8659}
8660
8661isl::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
8666isl::map basic_map::project_out_all_params() const
8667{
8668 return isl::map(*this).project_out_all_params();
8669}
8670
8671isl::set basic_map::range() const
8672{
8673 return isl::map(*this).range();
8674}
8675
8676isl::map basic_map::range_factor_domain() const
8677{
8678 return isl::map(*this).range_factor_domain();
8679}
8680
8681isl::map basic_map::range_factor_range() const
8682{
8683 return isl::map(*this).range_factor_range();
8684}
8685
8686isl::fixed_box basic_map::range_lattice_tile() const
8687{
8688 return isl::map(*this).range_lattice_tile();
8689}
8690
8691isl::map basic_map::range_map() const
8692{
8693 return isl::map(*this).range_map();
8694}
8695
8696isl::map basic_map::range_product(const isl::map &map2) const
8697{
8698 return isl::map(*this).range_product(map2);
8699}
8700
8701isl::union_map basic_map::range_product(const isl::union_map &umap2) const
8702{
8703 return isl::map(*this).range_product(umap2);
8704}
8705
8706isl::map basic_map::range_reverse() const
8707{
8708 return isl::map(*this).range_reverse();
8709}
8710
8711isl::fixed_box basic_map::range_simple_fixed_box_hull() const
8712{
8713 return isl::map(*this).range_simple_fixed_box_hull();
8714}
8715
8716class size basic_map::range_tuple_dim() const
8717{
8718 return isl::map(*this).range_tuple_dim();
8719}
8720
8721isl::id basic_map::range_tuple_id() const
8722{
8723 return isl::map(*this).range_tuple_id();
8724}
8725
8726isl::basic_map basic_map::reverse() const
8727{
8728 auto res = isl_basic_map_reverse(bmap: copy());
8729 return manage(ptr: res);
8730}
8731
8732isl::basic_map basic_map::sample() const
8733{
8734 auto res = isl_basic_map_sample(bmap: copy());
8735 return manage(ptr: res);
8736}
8737
8738isl::map basic_map::set_domain_tuple(const isl::id &id) const
8739{
8740 return isl::map(*this).set_domain_tuple(id);
8741}
8742
8743isl::map basic_map::set_domain_tuple(const std::string &id) const
8744{
8745 return this->set_domain_tuple(isl::id(ctx(), id));
8746}
8747
8748isl::map basic_map::set_range_tuple(const isl::id &id) const
8749{
8750 return isl::map(*this).set_range_tuple(id);
8751}
8752
8753isl::map basic_map::set_range_tuple(const std::string &id) const
8754{
8755 return this->set_range_tuple(isl::id(ctx(), id));
8756}
8757
8758isl::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
8763isl::map basic_map::set_tuple_id(isl::dim type, const std::string &id) const
8764{
8765 return this->set_tuple_id(type, id: isl::id(ctx(), id));
8766}
8767
8768isl::space basic_map::space() const
8769{
8770 return isl::map(*this).space();
8771}
8772
8773isl::map basic_map::subtract(const isl::map &map2) const
8774{
8775 return isl::map(*this).subtract(map2);
8776}
8777
8778isl::union_map basic_map::subtract(const isl::union_map &umap2) const
8779{
8780 return isl::map(*this).subtract(umap2);
8781}
8782
8783isl::union_map basic_map::subtract_domain(const isl::union_set &dom) const
8784{
8785 return isl::map(*this).subtract_domain(dom);
8786}
8787
8788isl::union_map basic_map::subtract_range(const isl::union_set &dom) const
8789{
8790 return isl::map(*this).subtract_range(dom);
8791}
8792
8793isl::map basic_map::sum(const isl::map &map2) const
8794{
8795 return isl::map(*this).sum(map2);
8796}
8797
8798isl::basic_map_list basic_map::to_list() const
8799{
8800 auto res = isl_basic_map_to_list(el: copy());
8801 return manage(ptr: res);
8802}
8803
8804isl::union_map basic_map::to_union_map() const
8805{
8806 return isl::map(*this).to_union_map();
8807}
8808
8809isl::id basic_map::tuple_id(isl::dim type) const
8810{
8811 return isl::map(*this).tuple_id(type);
8812}
8813
8814isl::map basic_map::uncurry() const
8815{
8816 return isl::map(*this).uncurry();
8817}
8818
8819isl::map basic_map::unite(isl::basic_map bmap2) const
8820{
8821 auto res = isl_basic_map_union(bmap1: copy(), bmap2: bmap2.release());
8822 return manage(ptr: res);
8823}
8824
8825isl::map basic_map::unite(const isl::map &map2) const
8826{
8827 return isl::map(*this).unite(map2);
8828}
8829
8830isl::union_map basic_map::unite(const isl::union_map &umap2) const
8831{
8832 return isl::map(*this).unite(umap2);
8833}
8834
8835isl::basic_map basic_map::universe(isl::space space)
8836{
8837 auto res = isl_basic_map_universe(space: space.release());
8838 return manage(ptr: res);
8839}
8840
8841isl::basic_map basic_map::unshifted_simple_hull() const
8842{
8843 return isl::map(*this).unshifted_simple_hull();
8844}
8845
8846isl::map basic_map::upper_bound(const isl::multi_pw_aff &upper) const
8847{
8848 return isl::map(*this).upper_bound(upper);
8849}
8850
8851isl::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
8856isl::set basic_map::wrap() const
8857{
8858 return isl::map(*this).wrap();
8859}
8860
8861isl::map basic_map::zip() const
8862{
8863 return isl::map(*this).zip();
8864}
8865
8866inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
8867{
8868 char *str = isl_basic_map_to_str(bmap: obj.get());
8869 if (!str) {
8870 os.setstate(std::ios_base::badbit);
8871 return os;
8872 }
8873 os << str;
8874 free(ptr: str);
8875 return os;
8876}
8877
8878// implementations for isl::basic_map_list
8879basic_map_list manage(__isl_take isl_basic_map_list *ptr) {
8880 return basic_map_list(ptr);
8881}
8882basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) {
8883 ptr = isl_basic_map_list_copy(list: ptr);
8884 return basic_map_list(ptr);
8885}
8886
8887basic_map_list::basic_map_list()
8888 : ptr(nullptr) {}
8889
8890basic_map_list::basic_map_list(const basic_map_list &obj)
8891 : ptr(nullptr)
8892{
8893 ptr = obj.copy();
8894}
8895
8896basic_map_list::basic_map_list(__isl_take isl_basic_map_list *ptr)
8897 : ptr(ptr) {}
8898
8899basic_map_list::basic_map_list(isl::ctx ctx, int n)
8900{
8901 auto res = isl_basic_map_list_alloc(ctx: ctx.release(), n);
8902 ptr = res;
8903}
8904
8905basic_map_list::basic_map_list(isl::basic_map el)
8906{
8907 auto res = isl_basic_map_list_from_basic_map(el: el.release());
8908 ptr = res;
8909}
8910
8911basic_map_list &basic_map_list::operator=(basic_map_list obj) {
8912 std::swap(a&: this->ptr, b&: obj.ptr);
8913 return *this;
8914}
8915
8916basic_map_list::~basic_map_list() {
8917 if (ptr)
8918 isl_basic_map_list_free(list: ptr);
8919}
8920
8921__isl_give isl_basic_map_list *basic_map_list::copy() const & {
8922 return isl_basic_map_list_copy(list: ptr);
8923}
8924
8925__isl_keep isl_basic_map_list *basic_map_list::get() const {
8926 return ptr;
8927}
8928
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
8935bool basic_map_list::is_null() const {
8936 return ptr == nullptr;
8937}
8938
8939isl::ctx basic_map_list::ctx() const {
8940 return isl::ctx(isl_basic_map_list_get_ctx(list: ptr));
8941}
8942
8943isl::basic_map_list basic_map_list::add(isl::basic_map el) const
8944{
8945 auto res = isl_basic_map_list_add(list: copy(), el: el.release());
8946 return manage(ptr: res);
8947}
8948
8949isl::basic_map basic_map_list::at(int index) const
8950{
8951 auto res = isl_basic_map_list_get_at(list: get(), index);
8952 return manage(ptr: res);
8953}
8954
8955isl::basic_map basic_map_list::get_at(int index) const
8956{
8957 return at(index);
8958}
8959
8960isl::basic_map_list basic_map_list::clear() const
8961{
8962 auto res = isl_basic_map_list_clear(list: copy());
8963 return manage(ptr: res);
8964}
8965
8966isl::basic_map_list basic_map_list::concat(isl::basic_map_list list2) const
8967{
8968 auto res = isl_basic_map_list_concat(list1: copy(), list2: list2.release());
8969 return manage(ptr: res);
8970}
8971
8972isl::basic_map_list basic_map_list::drop(unsigned int first, unsigned int n) const
8973{
8974 auto res = isl_basic_map_list_drop(list: copy(), first, n);
8975 return manage(ptr: res);
8976}
8977
8978stat 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 = { .func: 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(ptr: arg_0));
8986 return ret.release();
8987 };
8988 auto res = isl_basic_map_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
8989 return manage(val: res);
8990}
8991
8992isl::basic_map_list basic_map_list::insert(unsigned int pos, isl::basic_map el) const
8993{
8994 auto res = isl_basic_map_list_insert(list: copy(), pos, el: el.release());
8995 return manage(ptr: res);
8996}
8997
8998class size basic_map_list::size() const
8999{
9000 auto res = isl_basic_map_list_size(list: get());
9001 return manage(val: res);
9002}
9003
9004inline std::ostream &operator<<(std::ostream &os, const basic_map_list &obj)
9005{
9006 char *str = isl_basic_map_list_to_str(list: obj.get());
9007 if (!str) {
9008 os.setstate(std::ios_base::badbit);
9009 return os;
9010 }
9011 os << str;
9012 free(ptr: str);
9013 return os;
9014}
9015
9016// implementations for isl::basic_set
9017basic_set manage(__isl_take isl_basic_set *ptr) {
9018 return basic_set(ptr);
9019}
9020basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
9021 ptr = isl_basic_set_copy(bset: ptr);
9022 return basic_set(ptr);
9023}
9024
9025basic_set::basic_set()
9026 : ptr(nullptr) {}
9027
9028basic_set::basic_set(const basic_set &obj)
9029 : ptr(nullptr)
9030{
9031 ptr = obj.copy();
9032}
9033
9034basic_set::basic_set(__isl_take isl_basic_set *ptr)
9035 : ptr(ptr) {}
9036
9037basic_set::basic_set(isl::point pnt)
9038{
9039 auto res = isl_basic_set_from_point(pnt: pnt.release());
9040 ptr = res;
9041}
9042
9043basic_set::basic_set(isl::ctx ctx, const std::string &str)
9044{
9045 auto res = isl_basic_set_read_from_str(ctx: ctx.release(), str: str.c_str());
9046 ptr = res;
9047}
9048
9049basic_set &basic_set::operator=(basic_set obj) {
9050 std::swap(a&: this->ptr, b&: obj.ptr);
9051 return *this;
9052}
9053
9054basic_set::~basic_set() {
9055 if (ptr)
9056 isl_basic_set_free(bset: ptr);
9057}
9058
9059__isl_give isl_basic_set *basic_set::copy() const & {
9060 return isl_basic_set_copy(bset: ptr);
9061}
9062
9063__isl_keep isl_basic_set *basic_set::get() const {
9064 return ptr;
9065}
9066
9067__isl_give isl_basic_set *basic_set::release() {
9068 isl_basic_set *tmp = ptr;
9069 ptr = nullptr;
9070 return tmp;
9071}
9072
9073bool basic_set::is_null() const {
9074 return ptr == nullptr;
9075}
9076
9077isl::ctx basic_set::ctx() const {
9078 return isl::ctx(isl_basic_set_get_ctx(bset: ptr));
9079}
9080
9081isl::set basic_set::add_constraint(const isl::constraint &constraint) const
9082{
9083 return isl::set(*this).add_constraint(constraint);
9084}
9085
9086isl::set basic_set::add_dims(isl::dim type, unsigned int n) const
9087{
9088 return isl::set(*this).add_dims(type, n);
9089}
9090
9091isl::basic_set basic_set::affine_hull() const
9092{
9093 auto res = isl_basic_set_affine_hull(bset: copy());
9094 return manage(ptr: res);
9095}
9096
9097isl::set basic_set::align_params(const isl::space &model) const
9098{
9099 return isl::set(*this).align_params(model);
9100}
9101
9102isl::basic_set basic_set::apply(isl::basic_map bmap) const
9103{
9104 auto res = isl_basic_set_apply(bset: copy(), bmap: bmap.release());
9105 return manage(ptr: res);
9106}
9107
9108isl::set basic_set::apply(const isl::map &map) const
9109{
9110 return isl::set(*this).apply(map);
9111}
9112
9113isl::union_set basic_set::apply(const isl::union_map &umap) const
9114{
9115 return isl::set(*this).apply(umap);
9116}
9117
9118isl::pw_multi_aff basic_set::as_pw_multi_aff() const
9119{
9120 return isl::set(*this).as_pw_multi_aff();
9121}
9122
9123isl::set basic_set::as_set() const
9124{
9125 return isl::set(*this).as_set();
9126}
9127
9128isl::basic_set_list basic_set::basic_set_list() const
9129{
9130 return isl::set(*this).basic_set_list();
9131}
9132
9133isl::set basic_set::bind(const isl::multi_id &tuple) const
9134{
9135 return isl::set(*this).bind(tuple);
9136}
9137
9138isl::set basic_set::coalesce() const
9139{
9140 return isl::set(*this).coalesce();
9141}
9142
9143isl::set basic_set::complement() const
9144{
9145 return isl::set(*this).complement();
9146}
9147
9148isl::union_set basic_set::compute_divs() const
9149{
9150 return isl::set(*this).compute_divs();
9151}
9152
9153boolean basic_set::contains(const isl::space &space) const
9154{
9155 return isl::set(*this).contains(space);
9156}
9157
9158isl::basic_set basic_set::convex_hull() const
9159{
9160 return isl::set(*this).convex_hull();
9161}
9162
9163isl::basic_set basic_set::detect_equalities() const
9164{
9165 auto res = isl_basic_set_detect_equalities(bset: copy());
9166 return manage(ptr: res);
9167}
9168
9169class size basic_set::dim(isl::dim type) const
9170{
9171 auto res = isl_basic_set_dim(bset: get(), type: static_cast<enum isl_dim_type>(type));
9172 return manage(val: res);
9173}
9174
9175boolean 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
9180isl::id basic_set::dim_id(isl::dim type, unsigned int pos) const
9181{
9182 return isl::set(*this).dim_id(type, pos);
9183}
9184
9185isl::pw_aff basic_set::dim_max(int pos) const
9186{
9187 return isl::set(*this).dim_max(pos);
9188}
9189
9190isl::val basic_set::dim_max_val(int pos) const
9191{
9192 auto res = isl_basic_set_dim_max_val(bset: copy(), pos);
9193 return manage(ptr: res);
9194}
9195
9196isl::pw_aff basic_set::dim_min(int pos) const
9197{
9198 return isl::set(*this).dim_min(pos);
9199}
9200
9201isl::val basic_set::dim_min_val(int pos) const
9202{
9203 return isl::set(*this).dim_min_val(pos);
9204}
9205
9206std::string basic_set::dim_name(isl::dim type, unsigned int pos) const
9207{
9208 return isl::set(*this).dim_name(type, pos);
9209}
9210
9211isl::aff basic_set::div(int pos) const
9212{
9213 auto res = isl_basic_set_get_div(bset: get(), pos);
9214 return manage(ptr: res);
9215}
9216
9217isl::aff basic_set::get_div(int pos) const
9218{
9219 return div(pos);
9220}
9221
9222isl::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
9227isl::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
9232boolean basic_set::every_set(const std::function<boolean(isl::set)> &test) const
9233{
9234 return isl::set(*this).every_set(test);
9235}
9236
9237isl::set basic_set::extract_set(const isl::space &space) const
9238{
9239 return isl::set(*this).extract_set(space);
9240}
9241
9242int 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
9247int basic_set::find_dim_by_id(isl::dim type, const std::string &id) const
9248{
9249 return this->find_dim_by_id(type, id: isl::id(ctx(), id));
9250}
9251
9252isl::basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const
9253{
9254 auto res = isl_basic_set_fix_si(bset: copy(), type: static_cast<enum isl_dim_type>(type), pos, value);
9255 return manage(ptr: res);
9256}
9257
9258isl::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(bset: copy(), type: static_cast<enum isl_dim_type>(type), pos, v: v.release());
9261 return manage(ptr: res);
9262}
9263
9264isl::basic_set basic_set::fix_val(isl::dim type, unsigned int pos, long v) const
9265{
9266 return this->fix_val(type, pos, v: isl::val(ctx(), v));
9267}
9268
9269isl::basic_set basic_set::flatten() const
9270{
9271 auto res = isl_basic_set_flatten(bset: copy());
9272 return manage(ptr: res);
9273}
9274
9275stat 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
9280stat basic_set::foreach_point(const std::function<stat(isl::point)> &fn) const
9281{
9282 return isl::set(*this).foreach_point(fn);
9283}
9284
9285stat basic_set::foreach_set(const std::function<stat(isl::set)> &fn) const
9286{
9287 return isl::set(*this).foreach_set(fn);
9288}
9289
9290isl::basic_set basic_set::gist(isl::basic_set context) const
9291{
9292 auto res = isl_basic_set_gist(bset: copy(), context: context.release());
9293 return manage(ptr: res);
9294}
9295
9296isl::set basic_set::gist(const isl::set &context) const
9297{
9298 return isl::set(*this).gist(context);
9299}
9300
9301isl::union_set basic_set::gist(const isl::union_set &context) const
9302{
9303 return isl::set(*this).gist(context);
9304}
9305
9306isl::basic_set basic_set::gist(const isl::point &context) const
9307{
9308 return this->gist(context: isl::basic_set(context));
9309}
9310
9311isl::set basic_set::gist_params(const isl::set &context) const
9312{
9313 return isl::set(*this).gist_params(context);
9314}
9315
9316boolean basic_set::has_equal_space(const isl::set &set2) const
9317{
9318 return isl::set(*this).has_equal_space(set2);
9319}
9320
9321isl::map basic_set::identity() const
9322{
9323 return isl::set(*this).identity();
9324}
9325
9326isl::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
9331isl::pw_aff basic_set::indicator_function() const
9332{
9333 return isl::set(*this).indicator_function();
9334}
9335
9336isl::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
9341isl::map basic_set::insert_domain(const isl::space &domain) const
9342{
9343 return isl::set(*this).insert_domain(domain);
9344}
9345
9346isl::basic_set basic_set::intersect(isl::basic_set bset2) const
9347{
9348 auto res = isl_basic_set_intersect(bset1: copy(), bset2: bset2.release());
9349 return manage(ptr: res);
9350}
9351
9352isl::set basic_set::intersect(const isl::set &set2) const
9353{
9354 return isl::set(*this).intersect(set2);
9355}
9356
9357isl::union_set basic_set::intersect(const isl::union_set &uset2) const
9358{
9359 return isl::set(*this).intersect(uset2);
9360}
9361
9362isl::basic_set basic_set::intersect(const isl::point &bset2) const
9363{
9364 return this->intersect(bset2: isl::basic_set(bset2));
9365}
9366
9367isl::basic_set basic_set::intersect_params(isl::basic_set bset2) const
9368{
9369 auto res = isl_basic_set_intersect_params(bset1: copy(), bset2: bset2.release());
9370 return manage(ptr: res);
9371}
9372
9373isl::set basic_set::intersect_params(const isl::set &params) const
9374{
9375 return isl::set(*this).intersect_params(params);
9376}
9377
9378isl::basic_set basic_set::intersect_params(const isl::point &bset2) const
9379{
9380 return this->intersect_params(bset2: isl::basic_set(bset2));
9381}
9382
9383boolean 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
9388boolean basic_set::involves_locals() const
9389{
9390 return isl::set(*this).involves_locals();
9391}
9392
9393boolean basic_set::is_bounded() const
9394{
9395 auto res = isl_basic_set_is_bounded(bset: get());
9396 return manage(val: res);
9397}
9398
9399boolean basic_set::is_disjoint(const isl::set &set2) const
9400{
9401 return isl::set(*this).is_disjoint(set2);
9402}
9403
9404boolean basic_set::is_disjoint(const isl::union_set &uset2) const
9405{
9406 return isl::set(*this).is_disjoint(uset2);
9407}
9408
9409boolean basic_set::is_empty() const
9410{
9411 auto res = isl_basic_set_is_empty(bset: get());
9412 return manage(val: res);
9413}
9414
9415boolean basic_set::is_equal(const isl::basic_set &bset2) const
9416{
9417 auto res = isl_basic_set_is_equal(bset1: get(), bset2: bset2.get());
9418 return manage(val: res);
9419}
9420
9421boolean basic_set::is_equal(const isl::set &set2) const
9422{
9423 return isl::set(*this).is_equal(set2);
9424}
9425
9426boolean basic_set::is_equal(const isl::union_set &uset2) const
9427{
9428 return isl::set(*this).is_equal(uset2);
9429}
9430
9431boolean basic_set::is_equal(const isl::point &bset2) const
9432{
9433 return this->is_equal(bset2: isl::basic_set(bset2));
9434}
9435
9436boolean basic_set::is_params() const
9437{
9438 return isl::set(*this).is_params();
9439}
9440
9441boolean basic_set::is_singleton() const
9442{
9443 return isl::set(*this).is_singleton();
9444}
9445
9446boolean basic_set::is_strict_subset(const isl::set &set2) const
9447{
9448 return isl::set(*this).is_strict_subset(set2);
9449}
9450
9451boolean basic_set::is_strict_subset(const isl::union_set &uset2) const
9452{
9453 return isl::set(*this).is_strict_subset(uset2);
9454}
9455
9456boolean basic_set::is_subset(const isl::basic_set &bset2) const
9457{
9458 auto res = isl_basic_set_is_subset(bset1: get(), bset2: bset2.get());
9459 return manage(val: res);
9460}
9461
9462boolean basic_set::is_subset(const isl::set &set2) const
9463{
9464 return isl::set(*this).is_subset(set2);
9465}
9466
9467boolean basic_set::is_subset(const isl::union_set &uset2) const
9468{
9469 return isl::set(*this).is_subset(uset2);
9470}
9471
9472boolean basic_set::is_subset(const isl::point &bset2) const
9473{
9474 return this->is_subset(bset2: isl::basic_set(bset2));
9475}
9476
9477boolean basic_set::is_wrapping() const
9478{
9479 auto res = isl_basic_set_is_wrapping(bset: get());
9480 return manage(val: res);
9481}
9482
9483boolean basic_set::isa_set() const
9484{
9485 return isl::set(*this).isa_set();
9486}
9487
9488isl::set basic_set::lexmax() const
9489{
9490 auto res = isl_basic_set_lexmax(bset: copy());
9491 return manage(ptr: res);
9492}
9493
9494isl::pw_multi_aff basic_set::lexmax_pw_multi_aff() const
9495{
9496 return isl::set(*this).lexmax_pw_multi_aff();
9497}
9498
9499isl::set basic_set::lexmin() const
9500{
9501 auto res = isl_basic_set_lexmin(bset: copy());
9502 return manage(ptr: res);
9503}
9504
9505isl::pw_multi_aff basic_set::lexmin_pw_multi_aff() const
9506{
9507 return isl::set(*this).lexmin_pw_multi_aff();
9508}
9509
9510isl::set basic_set::lower_bound(const isl::multi_pw_aff &lower) const
9511{
9512 return isl::set(*this).lower_bound(lower);
9513}
9514
9515isl::set basic_set::lower_bound(const isl::multi_val &lower) const
9516{
9517 return isl::set(*this).lower_bound(lower);
9518}
9519
9520isl::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
9525isl::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
9530isl::set basic_set::lower_bound_val(isl::dim type, unsigned int pos, long value) const
9531{
9532 return this->lower_bound_val(type, pos, value: isl::val(ctx(), value));
9533}
9534
9535isl::multi_pw_aff basic_set::max_multi_pw_aff() const
9536{
9537 return isl::set(*this).max_multi_pw_aff();
9538}
9539
9540isl::val basic_set::max_val(const isl::aff &obj) const
9541{
9542 return isl::set(*this).max_val(obj);
9543}
9544
9545isl::multi_pw_aff basic_set::min_multi_pw_aff() const
9546{
9547 return isl::set(*this).min_multi_pw_aff();
9548}
9549
9550isl::val basic_set::min_val(const isl::aff &obj) const
9551{
9552 return isl::set(*this).min_val(obj);
9553}
9554
9555class size basic_set::n_basic_set() const
9556{
9557 return isl::set(*this).n_basic_set();
9558}
9559
9560isl::basic_set basic_set::params() const
9561{
9562 auto res = isl_basic_set_params(bset: copy());
9563 return manage(ptr: res);
9564}
9565
9566isl::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
9571isl::multi_val basic_set::plain_multi_val_if_fixed() const
9572{
9573 return isl::set(*this).plain_multi_val_if_fixed();
9574}
9575
9576isl::basic_set basic_set::polyhedral_hull() const
9577{
9578 return isl::set(*this).polyhedral_hull();
9579}
9580
9581isl::set basic_set::preimage(const isl::multi_aff &ma) const
9582{
9583 return isl::set(*this).preimage(ma);
9584}
9585
9586isl::set basic_set::preimage(const isl::multi_pw_aff &mpa) const
9587{
9588 return isl::set(*this).preimage(mpa);
9589}
9590
9591isl::set basic_set::preimage(const isl::pw_multi_aff &pma) const
9592{
9593 return isl::set(*this).preimage(pma);
9594}
9595
9596isl::union_set basic_set::preimage(const isl::union_pw_multi_aff &upma) const
9597{
9598 return isl::set(*this).preimage(upma);
9599}
9600
9601isl::set basic_set::product(const isl::set &set2) const
9602{
9603 return isl::set(*this).product(set2);
9604}
9605
9606isl::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(bset: copy(), type: static_cast<enum isl_dim_type>(type), first, n);
9609 return manage(ptr: res);
9610}
9611
9612isl::set basic_set::project_out_all_params() const
9613{
9614 return isl::set(*this).project_out_all_params();
9615}
9616
9617isl::set basic_set::project_out_param(const isl::id &id) const
9618{
9619 return isl::set(*this).project_out_param(id);
9620}
9621
9622isl::set basic_set::project_out_param(const std::string &id) const
9623{
9624 return this->project_out_param(id: isl::id(ctx(), id));
9625}
9626
9627isl::set basic_set::project_out_param(const isl::id_list &list) const
9628{
9629 return isl::set(*this).project_out_param(list);
9630}
9631
9632isl::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
9637isl::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
9642isl::set basic_set::remove_divs() const
9643{
9644 return isl::set(*this).remove_divs();
9645}
9646
9647isl::set basic_set::remove_redundancies() const
9648{
9649 return isl::set(*this).remove_redundancies();
9650}
9651
9652isl::set basic_set::reset_tuple_id() const
9653{
9654 return isl::set(*this).reset_tuple_id();
9655}
9656
9657isl::basic_set basic_set::sample() const
9658{
9659 auto res = isl_basic_set_sample(bset: copy());
9660 return manage(ptr: res);
9661}
9662
9663isl::point basic_set::sample_point() const
9664{
9665 auto res = isl_basic_set_sample_point(bset: copy());
9666 return manage(ptr: res);
9667}
9668
9669isl::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
9674isl::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, id: isl::id(ctx(), id));
9677}
9678
9679isl::set_list basic_set::set_list() const
9680{
9681 return isl::set(*this).set_list();
9682}
9683
9684isl::set basic_set::set_tuple_id(const isl::id &id) const
9685{
9686 return isl::set(*this).set_tuple_id(id);
9687}
9688
9689isl::set basic_set::set_tuple_id(const std::string &id) const
9690{
9691 return this->set_tuple_id(isl::id(ctx(), id));
9692}
9693
9694isl::fixed_box basic_set::simple_fixed_box_hull() const
9695{
9696 return isl::set(*this).simple_fixed_box_hull();
9697}
9698
9699isl::basic_set basic_set::simple_hull() const
9700{
9701 return isl::set(*this).simple_hull();
9702}
9703
9704isl::space basic_set::space() const
9705{
9706 auto res = isl_basic_set_get_space(bset: get());
9707 return manage(ptr: res);
9708}
9709
9710isl::space basic_set::get_space() const
9711{
9712 return space();
9713}
9714
9715isl::val basic_set::stride(int pos) const
9716{
9717 return isl::set(*this).stride(pos);
9718}
9719
9720isl::set basic_set::subtract(const isl::set &set2) const
9721{
9722 return isl::set(*this).subtract(set2);
9723}
9724
9725isl::union_set basic_set::subtract(const isl::union_set &uset2) const
9726{
9727 return isl::set(*this).subtract(uset2);
9728}
9729
9730isl::basic_set_list basic_set::to_list() const
9731{
9732 auto res = isl_basic_set_to_list(el: copy());
9733 return manage(ptr: res);
9734}
9735
9736isl::set basic_set::to_set() const
9737{
9738 auto res = isl_basic_set_to_set(bset: copy());
9739 return manage(ptr: res);
9740}
9741
9742isl::union_set basic_set::to_union_set() const
9743{
9744 return isl::set(*this).to_union_set();
9745}
9746
9747isl::map basic_set::translation() const
9748{
9749 return isl::set(*this).translation();
9750}
9751
9752class size basic_set::tuple_dim() const
9753{
9754 return isl::set(*this).tuple_dim();
9755}
9756
9757isl::id basic_set::tuple_id() const
9758{
9759 return isl::set(*this).tuple_id();
9760}
9761
9762std::string basic_set::tuple_name() const
9763{
9764 return isl::set(*this).tuple_name();
9765}
9766
9767isl::set basic_set::unbind_params(const isl::multi_id &tuple) const
9768{
9769 return isl::set(*this).unbind_params(tuple);
9770}
9771
9772isl::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
9777isl::set basic_set::unite(isl::basic_set bset2) const
9778{
9779 auto res = isl_basic_set_union(bset1: copy(), bset2: bset2.release());
9780 return manage(ptr: res);
9781}
9782
9783isl::set basic_set::unite(const isl::set &set2) const
9784{
9785 return isl::set(*this).unite(set2);
9786}
9787
9788isl::union_set basic_set::unite(const isl::union_set &uset2) const
9789{
9790 return isl::set(*this).unite(uset2);
9791}
9792
9793isl::set basic_set::unite(const isl::point &bset2) const
9794{
9795 return this->unite(bset2: isl::basic_set(bset2));
9796}
9797
9798isl::basic_set basic_set::universe(isl::space space)
9799{
9800 auto res = isl_basic_set_universe(space: space.release());
9801 return manage(ptr: res);
9802}
9803
9804isl::basic_set basic_set::unshifted_simple_hull() const
9805{
9806 return isl::set(*this).unshifted_simple_hull();
9807}
9808
9809isl::map basic_set::unwrap() const
9810{
9811 return isl::set(*this).unwrap();
9812}
9813
9814isl::set basic_set::upper_bound(const isl::multi_pw_aff &upper) const
9815{
9816 return isl::set(*this).upper_bound(upper);
9817}
9818
9819isl::set basic_set::upper_bound(const isl::multi_val &upper) const
9820{
9821 return isl::set(*this).upper_bound(upper);
9822}
9823
9824isl::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
9829isl::set basic_set::upper_bound_val(isl::dim type, unsigned int pos, long value) const
9830{
9831 return this->upper_bound_val(type, pos, value: isl::val(ctx(), value));
9832}
9833
9834inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
9835{
9836 char *str = isl_basic_set_to_str(bset: obj.get());
9837 if (!str) {
9838 os.setstate(std::ios_base::badbit);
9839 return os;
9840 }
9841 os << str;
9842 free(ptr: str);
9843 return os;
9844}
9845
9846// implementations for isl::basic_set_list
9847basic_set_list manage(__isl_take isl_basic_set_list *ptr) {
9848 return basic_set_list(ptr);
9849}
9850basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr) {
9851 ptr = isl_basic_set_list_copy(list: ptr);
9852 return basic_set_list(ptr);
9853}
9854
9855basic_set_list::basic_set_list()
9856 : ptr(nullptr) {}
9857
9858basic_set_list::basic_set_list(const basic_set_list &obj)
9859 : ptr(nullptr)
9860{
9861 ptr = obj.copy();
9862}
9863
9864basic_set_list::basic_set_list(__isl_take isl_basic_set_list *ptr)
9865 : ptr(ptr) {}
9866
9867basic_set_list::basic_set_list(isl::ctx ctx, int n)
9868{
9869 auto res = isl_basic_set_list_alloc(ctx: ctx.release(), n);
9870 ptr = res;
9871}
9872
9873basic_set_list::basic_set_list(isl::basic_set el)
9874{
9875 auto res = isl_basic_set_list_from_basic_set(el: el.release());
9876 ptr = res;
9877}
9878
9879basic_set_list &basic_set_list::operator=(basic_set_list obj) {
9880 std::swap(a&: this->ptr, b&: obj.ptr);
9881 return *this;
9882}
9883
9884basic_set_list::~basic_set_list() {
9885 if (ptr)
9886 isl_basic_set_list_free(list: ptr);
9887}
9888
9889__isl_give isl_basic_set_list *basic_set_list::copy() const & {
9890 return isl_basic_set_list_copy(list: ptr);
9891}
9892
9893__isl_keep isl_basic_set_list *basic_set_list::get() const {
9894 return ptr;
9895}
9896
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
9903bool basic_set_list::is_null() const {
9904 return ptr == nullptr;
9905}
9906
9907isl::ctx basic_set_list::ctx() const {
9908 return isl::ctx(isl_basic_set_list_get_ctx(list: ptr));
9909}
9910
9911isl::basic_set_list basic_set_list::add(isl::basic_set el) const
9912{
9913 auto res = isl_basic_set_list_add(list: copy(), el: el.release());
9914 return manage(ptr: res);
9915}
9916
9917isl::basic_set basic_set_list::at(int index) const
9918{
9919 auto res = isl_basic_set_list_get_at(list: get(), index);
9920 return manage(ptr: res);
9921}
9922
9923isl::basic_set basic_set_list::get_at(int index) const
9924{
9925 return at(index);
9926}
9927
9928isl::basic_set_list basic_set_list::clear() const
9929{
9930 auto res = isl_basic_set_list_clear(list: copy());
9931 return manage(ptr: res);
9932}
9933
9934isl::basic_set_list basic_set_list::concat(isl::basic_set_list list2) const
9935{
9936 auto res = isl_basic_set_list_concat(list1: copy(), list2: list2.release());
9937 return manage(ptr: res);
9938}
9939
9940isl::basic_set_list basic_set_list::drop(unsigned int first, unsigned int n) const
9941{
9942 auto res = isl_basic_set_list_drop(list: copy(), first, n);
9943 return manage(ptr: res);
9944}
9945
9946stat 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 = { .func: 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(ptr: arg_0));
9954 return ret.release();
9955 };
9956 auto res = isl_basic_set_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
9957 return manage(val: res);
9958}
9959
9960isl::basic_set_list basic_set_list::insert(unsigned int pos, isl::basic_set el) const
9961{
9962 auto res = isl_basic_set_list_insert(list: copy(), pos, el: el.release());
9963 return manage(ptr: res);
9964}
9965
9966class size basic_set_list::size() const
9967{
9968 auto res = isl_basic_set_list_size(list: get());
9969 return manage(val: res);
9970}
9971
9972inline std::ostream &operator<<(std::ostream &os, const basic_set_list &obj)
9973{
9974 char *str = isl_basic_set_list_to_str(list: obj.get());
9975 if (!str) {
9976 os.setstate(std::ios_base::badbit);
9977 return os;
9978 }
9979 os << str;
9980 free(ptr: str);
9981 return os;
9982}
9983
9984// implementations for isl::constraint
9985constraint manage(__isl_take isl_constraint *ptr) {
9986 return constraint(ptr);
9987}
9988constraint manage_copy(__isl_keep isl_constraint *ptr) {
9989 ptr = isl_constraint_copy(c: ptr);
9990 return constraint(ptr);
9991}
9992
9993constraint::constraint()
9994 : ptr(nullptr) {}
9995
9996constraint::constraint(const constraint &obj)
9997 : ptr(nullptr)
9998{
9999 ptr = obj.copy();
10000}
10001
10002constraint::constraint(__isl_take isl_constraint *ptr)
10003 : ptr(ptr) {}
10004
10005constraint &constraint::operator=(constraint obj) {
10006 std::swap(a&: this->ptr, b&: obj.ptr);
10007 return *this;
10008}
10009
10010constraint::~constraint() {
10011 if (ptr)
10012 isl_constraint_free(c: ptr);
10013}
10014
10015__isl_give isl_constraint *constraint::copy() const & {
10016 return isl_constraint_copy(c: ptr);
10017}
10018
10019__isl_keep isl_constraint *constraint::get() const {
10020 return ptr;
10021}
10022
10023__isl_give isl_constraint *constraint::release() {
10024 isl_constraint *tmp = ptr;
10025 ptr = nullptr;
10026 return tmp;
10027}
10028
10029bool constraint::is_null() const {
10030 return ptr == nullptr;
10031}
10032
10033isl::ctx constraint::ctx() const {
10034 return isl::ctx(isl_constraint_get_ctx(c: ptr));
10035}
10036
10037isl::constraint constraint::alloc_equality(isl::local_space ls)
10038{
10039 auto res = isl_constraint_alloc_equality(ls: ls.release());
10040 return manage(ptr: res);
10041}
10042
10043isl::constraint constraint::alloc_inequality(isl::local_space ls)
10044{
10045 auto res = isl_constraint_alloc_inequality(ls: ls.release());
10046 return manage(ptr: res);
10047}
10048
10049isl::constraint constraint::set_coefficient_si(isl::dim type, int pos, int v) const
10050{
10051 auto res = isl_constraint_set_coefficient_si(constraint: copy(), type: static_cast<enum isl_dim_type>(type), pos, v);
10052 return manage(ptr: res);
10053}
10054
10055isl::constraint constraint::set_constant_si(int v) const
10056{
10057 auto res = isl_constraint_set_constant_si(constraint: copy(), v);
10058 return manage(ptr: res);
10059}
10060
10061isl::constraint constraint::set_constant_val(isl::val v) const
10062{
10063 auto res = isl_constraint_set_constant_val(constraint: copy(), v: v.release());
10064 return manage(ptr: res);
10065}
10066
10067isl::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
10073fixed_box manage(__isl_take isl_fixed_box *ptr) {
10074 return fixed_box(ptr);
10075}
10076fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
10077 ptr = isl_fixed_box_copy(box: ptr);
10078 return fixed_box(ptr);
10079}
10080
10081fixed_box::fixed_box()
10082 : ptr(nullptr) {}
10083
10084fixed_box::fixed_box(const fixed_box &obj)
10085 : ptr(nullptr)
10086{
10087 ptr = obj.copy();
10088}
10089
10090fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
10091 : ptr(ptr) {}
10092
10093fixed_box &fixed_box::operator=(fixed_box obj) {
10094 std::swap(a&: this->ptr, b&: obj.ptr);
10095 return *this;
10096}
10097
10098fixed_box::~fixed_box() {
10099 if (ptr)
10100 isl_fixed_box_free(box: ptr);
10101}
10102
10103__isl_give isl_fixed_box *fixed_box::copy() const & {
10104 return isl_fixed_box_copy(box: ptr);
10105}
10106
10107__isl_keep isl_fixed_box *fixed_box::get() const {
10108 return ptr;
10109}
10110
10111__isl_give isl_fixed_box *fixed_box::release() {
10112 isl_fixed_box *tmp = ptr;
10113 ptr = nullptr;
10114 return tmp;
10115}
10116
10117bool fixed_box::is_null() const {
10118 return ptr == nullptr;
10119}
10120
10121isl::ctx fixed_box::ctx() const {
10122 return isl::ctx(isl_fixed_box_get_ctx(box: ptr));
10123}
10124
10125boolean fixed_box::is_valid() const
10126{
10127 auto res = isl_fixed_box_is_valid(box: get());
10128 return manage(val: res);
10129}
10130
10131isl::multi_aff fixed_box::offset() const
10132{
10133 auto res = isl_fixed_box_get_offset(box: get());
10134 return manage(ptr: res);
10135}
10136
10137isl::multi_aff fixed_box::get_offset() const
10138{
10139 return offset();
10140}
10141
10142isl::multi_val fixed_box::size() const
10143{
10144 auto res = isl_fixed_box_get_size(box: get());
10145 return manage(ptr: res);
10146}
10147
10148isl::multi_val fixed_box::get_size() const
10149{
10150 return size();
10151}
10152
10153isl::space fixed_box::space() const
10154{
10155 auto res = isl_fixed_box_get_space(box: get());
10156 return manage(ptr: res);
10157}
10158
10159isl::space fixed_box::get_space() const
10160{
10161 return space();
10162}
10163
10164inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
10165{
10166 char *str = isl_fixed_box_to_str(box: obj.get());
10167 if (!str) {
10168 os.setstate(std::ios_base::badbit);
10169 return os;
10170 }
10171 os << str;
10172 free(ptr: str);
10173 return os;
10174}
10175
10176// implementations for isl::id
10177id manage(__isl_take isl_id *ptr) {
10178 return id(ptr);
10179}
10180id manage_copy(__isl_keep isl_id *ptr) {
10181 ptr = isl_id_copy(id: ptr);
10182 return id(ptr);
10183}
10184
10185id::id()
10186 : ptr(nullptr) {}
10187
10188id::id(const id &obj)
10189 : ptr(nullptr)
10190{
10191 ptr = obj.copy();
10192}
10193
10194id::id(__isl_take isl_id *ptr)
10195 : ptr(ptr) {}
10196
10197id::id(isl::ctx ctx, const std::string &str)
10198{
10199 auto res = isl_id_read_from_str(ctx: ctx.release(), str: str.c_str());
10200 ptr = res;
10201}
10202
10203id &id::operator=(id obj) {
10204 std::swap(a&: this->ptr, b&: obj.ptr);
10205 return *this;
10206}
10207
10208id::~id() {
10209 if (ptr)
10210 isl_id_free(id: ptr);
10211}
10212
10213__isl_give isl_id *id::copy() const & {
10214 return isl_id_copy(id: ptr);
10215}
10216
10217__isl_keep isl_id *id::get() const {
10218 return ptr;
10219}
10220
10221__isl_give isl_id *id::release() {
10222 isl_id *tmp = ptr;
10223 ptr = nullptr;
10224 return tmp;
10225}
10226
10227bool id::is_null() const {
10228 return ptr == nullptr;
10229}
10230
10231isl::ctx id::ctx() const {
10232 return isl::ctx(isl_id_get_ctx(id: ptr));
10233}
10234
10235isl::id id::alloc(isl::ctx ctx, const std::string &name, void * user)
10236{
10237 auto res = isl_id_alloc(ctx: ctx.release(), name: name.c_str(), user);
10238 return manage(ptr: res);
10239}
10240
10241std::string id::name() const
10242{
10243 auto res = isl_id_get_name(id: get());
10244 std::string tmp(res);
10245 return tmp;
10246}
10247
10248std::string id::get_name() const
10249{
10250 return name();
10251}
10252
10253isl::id_list id::to_list() const
10254{
10255 auto res = isl_id_to_list(el: copy());
10256 return manage(ptr: res);
10257}
10258
10259void * id::user() const
10260{
10261 auto res = isl_id_get_user(id: get());
10262 return res;
10263}
10264
10265void * id::get_user() const
10266{
10267 return user();
10268}
10269
10270inline std::ostream &operator<<(std::ostream &os, const id &obj)
10271{
10272 char *str = isl_id_to_str(id: obj.get());
10273 if (!str) {
10274 os.setstate(std::ios_base::badbit);
10275 return os;
10276 }
10277 os << str;
10278 free(ptr: str);
10279 return os;
10280}
10281
10282// implementations for isl::id_list
10283id_list manage(__isl_take isl_id_list *ptr) {
10284 return id_list(ptr);
10285}
10286id_list manage_copy(__isl_keep isl_id_list *ptr) {
10287 ptr = isl_id_list_copy(list: ptr);
10288 return id_list(ptr);
10289}
10290
10291id_list::id_list()
10292 : ptr(nullptr) {}
10293
10294id_list::id_list(const id_list &obj)
10295 : ptr(nullptr)
10296{
10297 ptr = obj.copy();
10298}
10299
10300id_list::id_list(__isl_take isl_id_list *ptr)
10301 : ptr(ptr) {}
10302
10303id_list::id_list(isl::ctx ctx, int n)
10304{
10305 auto res = isl_id_list_alloc(ctx: ctx.release(), n);
10306 ptr = res;
10307}
10308
10309id_list::id_list(isl::id el)
10310{
10311 auto res = isl_id_list_from_id(el: el.release());
10312 ptr = res;
10313}
10314
10315id_list::id_list(isl::ctx ctx, const std::string &str)
10316{
10317 auto res = isl_id_list_read_from_str(ctx: ctx.release(), str: str.c_str());
10318 ptr = res;
10319}
10320
10321id_list &id_list::operator=(id_list obj) {
10322 std::swap(a&: this->ptr, b&: obj.ptr);
10323 return *this;
10324}
10325
10326id_list::~id_list() {
10327 if (ptr)
10328 isl_id_list_free(list: ptr);
10329}
10330
10331__isl_give isl_id_list *id_list::copy() const & {
10332 return isl_id_list_copy(list: ptr);
10333}
10334
10335__isl_keep isl_id_list *id_list::get() const {
10336 return ptr;
10337}
10338
10339__isl_give isl_id_list *id_list::release() {
10340 isl_id_list *tmp = ptr;
10341 ptr = nullptr;
10342 return tmp;
10343}
10344
10345bool id_list::is_null() const {
10346 return ptr == nullptr;
10347}
10348
10349isl::ctx id_list::ctx() const {
10350 return isl::ctx(isl_id_list_get_ctx(list: ptr));
10351}
10352
10353isl::id_list id_list::add(isl::id el) const
10354{
10355 auto res = isl_id_list_add(list: copy(), el: el.release());
10356 return manage(ptr: res);
10357}
10358
10359isl::id_list id_list::add(const std::string &el) const
10360{
10361 return this->add(el: isl::id(ctx(), el));
10362}
10363
10364isl::id id_list::at(int index) const
10365{
10366 auto res = isl_id_list_get_at(list: get(), index);
10367 return manage(ptr: res);
10368}
10369
10370isl::id id_list::get_at(int index) const
10371{
10372 return at(index);
10373}
10374
10375isl::id_list id_list::clear() const
10376{
10377 auto res = isl_id_list_clear(list: copy());
10378 return manage(ptr: res);
10379}
10380
10381isl::id_list id_list::concat(isl::id_list list2) const
10382{
10383 auto res = isl_id_list_concat(list1: copy(), list2: list2.release());
10384 return manage(ptr: res);
10385}
10386
10387isl::id_list id_list::drop(unsigned int first, unsigned int n) const
10388{
10389 auto res = isl_id_list_drop(list: copy(), first, n);
10390 return manage(ptr: res);
10391}
10392
10393stat 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 = { .func: 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(ptr: arg_0));
10401 return ret.release();
10402 };
10403 auto res = isl_id_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
10404 return manage(val: res);
10405}
10406
10407isl::id_list id_list::insert(unsigned int pos, isl::id el) const
10408{
10409 auto res = isl_id_list_insert(list: copy(), pos, el: el.release());
10410 return manage(ptr: res);
10411}
10412
10413isl::id_list id_list::insert(unsigned int pos, const std::string &el) const
10414{
10415 return this->insert(pos, el: isl::id(ctx(), el));
10416}
10417
10418class size id_list::size() const
10419{
10420 auto res = isl_id_list_size(list: get());
10421 return manage(val: res);
10422}
10423
10424inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
10425{
10426 char *str = isl_id_list_to_str(list: obj.get());
10427 if (!str) {
10428 os.setstate(std::ios_base::badbit);
10429 return os;
10430 }
10431 os << str;
10432 free(ptr: str);
10433 return os;
10434}
10435
10436// implementations for isl::id_to_ast_expr
10437id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
10438 return id_to_ast_expr(ptr);
10439}
10440id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
10441 ptr = isl_id_to_ast_expr_copy(hmap: ptr);
10442 return id_to_ast_expr(ptr);
10443}
10444
10445id_to_ast_expr::id_to_ast_expr()
10446 : ptr(nullptr) {}
10447
10448id_to_ast_expr::id_to_ast_expr(const id_to_ast_expr &obj)
10449 : ptr(nullptr)
10450{
10451 ptr = obj.copy();
10452}
10453
10454id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr)
10455 : ptr(ptr) {}
10456
10457id_to_ast_expr &id_to_ast_expr::operator=(id_to_ast_expr obj) {
10458 std::swap(a&: this->ptr, b&: obj.ptr);
10459 return *this;
10460}
10461
10462id_to_ast_expr::~id_to_ast_expr() {
10463 if (ptr)
10464 isl_id_to_ast_expr_free(hmap: ptr);
10465}
10466
10467__isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
10468 return isl_id_to_ast_expr_copy(hmap: ptr);
10469}
10470
10471__isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
10472 return ptr;
10473}
10474
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
10481bool id_to_ast_expr::is_null() const {
10482 return ptr == nullptr;
10483}
10484
10485isl::ctx id_to_ast_expr::ctx() const {
10486 return isl::ctx(isl_id_to_ast_expr_get_ctx(hmap: ptr));
10487}
10488
10489isl::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: ctx.release(), min_size);
10492 return manage(ptr: res);
10493}
10494
10495isl::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(hmap: copy(), key: key.release(), val: val.release());
10498 return manage(ptr: res);
10499}
10500
10501isl::id_to_ast_expr id_to_ast_expr::set(const std::string &key, const isl::ast_expr &val) const
10502{
10503 return this->set(key: isl::id(ctx(), key), val);
10504}
10505
10506// implementations for isl::local_space
10507local_space manage(__isl_take isl_local_space *ptr) {
10508 return local_space(ptr);
10509}
10510local_space manage_copy(__isl_keep isl_local_space *ptr) {
10511 ptr = isl_local_space_copy(ls: ptr);
10512 return local_space(ptr);
10513}
10514
10515local_space::local_space()
10516 : ptr(nullptr) {}
10517
10518local_space::local_space(const local_space &obj)
10519 : ptr(nullptr)
10520{
10521 ptr = obj.copy();
10522}
10523
10524local_space::local_space(__isl_take isl_local_space *ptr)
10525 : ptr(ptr) {}
10526
10527local_space::local_space(isl::space space)
10528{
10529 auto res = isl_local_space_from_space(space: space.release());
10530 ptr = res;
10531}
10532
10533local_space &local_space::operator=(local_space obj) {
10534 std::swap(a&: this->ptr, b&: obj.ptr);
10535 return *this;
10536}
10537
10538local_space::~local_space() {
10539 if (ptr)
10540 isl_local_space_free(ls: ptr);
10541}
10542
10543__isl_give isl_local_space *local_space::copy() const & {
10544 return isl_local_space_copy(ls: ptr);
10545}
10546
10547__isl_keep isl_local_space *local_space::get() const {
10548 return ptr;
10549}
10550
10551__isl_give isl_local_space *local_space::release() {
10552 isl_local_space *tmp = ptr;
10553 ptr = nullptr;
10554 return tmp;
10555}
10556
10557bool local_space::is_null() const {
10558 return ptr == nullptr;
10559}
10560
10561isl::ctx local_space::ctx() const {
10562 return isl::ctx(isl_local_space_get_ctx(ls: ptr));
10563}
10564
10565// implementations for isl::map
10566map manage(__isl_take isl_map *ptr) {
10567 return map(ptr);
10568}
10569map manage_copy(__isl_keep isl_map *ptr) {
10570 ptr = isl_map_copy(map: ptr);
10571 return map(ptr);
10572}
10573
10574map::map()
10575 : ptr(nullptr) {}
10576
10577map::map(const map &obj)
10578 : ptr(nullptr)
10579{
10580 ptr = obj.copy();
10581}
10582
10583map::map(__isl_take isl_map *ptr)
10584 : ptr(ptr) {}
10585
10586map::map(isl::basic_map bmap)
10587{
10588 auto res = isl_map_from_basic_map(bmap: bmap.release());
10589 ptr = res;
10590}
10591
10592map::map(isl::ctx ctx, const std::string &str)
10593{
10594 auto res = isl_map_read_from_str(ctx: ctx.release(), str: str.c_str());
10595 ptr = res;
10596}
10597
10598map &map::operator=(map obj) {
10599 std::swap(a&: this->ptr, b&: obj.ptr);
10600 return *this;
10601}
10602
10603map::~map() {
10604 if (ptr)
10605 isl_map_free(map: ptr);
10606}
10607
10608__isl_give isl_map *map::copy() const & {
10609 return isl_map_copy(map: ptr);
10610}
10611
10612__isl_keep isl_map *map::get() const {
10613 return ptr;
10614}
10615
10616__isl_give isl_map *map::release() {
10617 isl_map *tmp = ptr;
10618 ptr = nullptr;
10619 return tmp;
10620}
10621
10622bool map::is_null() const {
10623 return ptr == nullptr;
10624}
10625
10626isl::ctx map::ctx() const {
10627 return isl::ctx(isl_map_get_ctx(map: ptr));
10628}
10629
10630isl::map map::add_constraint(isl::constraint constraint) const
10631{
10632 auto res = isl_map_add_constraint(map: copy(), constraint: constraint.release());
10633 return manage(ptr: res);
10634}
10635
10636isl::map map::add_dims(isl::dim type, unsigned int n) const
10637{
10638 auto res = isl_map_add_dims(map: copy(), type: static_cast<enum isl_dim_type>(type), n);
10639 return manage(ptr: res);
10640}
10641
10642isl::basic_map map::affine_hull() const
10643{
10644 auto res = isl_map_affine_hull(map: copy());
10645 return manage(ptr: res);
10646}
10647
10648isl::map map::align_params(isl::space model) const
10649{
10650 auto res = isl_map_align_params(map: copy(), model: model.release());
10651 return manage(ptr: res);
10652}
10653
10654isl::map map::apply_domain(isl::map map2) const
10655{
10656 auto res = isl_map_apply_domain(map1: copy(), map2: map2.release());
10657 return manage(ptr: res);
10658}
10659
10660isl::union_map map::apply_domain(const isl::union_map &umap2) const
10661{
10662 return isl::union_map(*this).apply_domain(umap2);
10663}
10664
10665isl::map map::apply_domain(const isl::basic_map &map2) const
10666{
10667 return this->apply_domain(map2: isl::map(map2));
10668}
10669
10670isl::map map::apply_range(isl::map map2) const
10671{
10672 auto res = isl_map_apply_range(map1: copy(), map2: map2.release());
10673 return manage(ptr: res);
10674}
10675
10676isl::union_map map::apply_range(const isl::union_map &umap2) const
10677{
10678 return isl::union_map(*this).apply_range(umap2);
10679}
10680
10681isl::map map::apply_range(const isl::basic_map &map2) const
10682{
10683 return this->apply_range(map2: isl::map(map2));
10684}
10685
10686isl::map map::as_map() const
10687{
10688 return isl::union_map(*this).as_map();
10689}
10690
10691isl::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
10696isl::pw_multi_aff map::as_pw_multi_aff() const
10697{
10698 auto res = isl_map_as_pw_multi_aff(map: copy());
10699 return manage(ptr: res);
10700}
10701
10702isl::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
10707isl::basic_map_list map::basic_map_list() const
10708{
10709 auto res = isl_map_get_basic_map_list(map: get());
10710 return manage(ptr: res);
10711}
10712
10713isl::basic_map_list map::get_basic_map_list() const
10714{
10715 return basic_map_list();
10716}
10717
10718isl::set map::bind_domain(isl::multi_id tuple) const
10719{
10720 auto res = isl_map_bind_domain(map: copy(), tuple: tuple.release());
10721 return manage(ptr: res);
10722}
10723
10724isl::set map::bind_range(isl::multi_id tuple) const
10725{
10726 auto res = isl_map_bind_range(map: copy(), tuple: tuple.release());
10727 return manage(ptr: res);
10728}
10729
10730boolean map::can_curry() const
10731{
10732 auto res = isl_map_can_curry(map: get());
10733 return manage(val: res);
10734}
10735
10736isl::map map::coalesce() const
10737{
10738 auto res = isl_map_coalesce(map: copy());
10739 return manage(ptr: res);
10740}
10741
10742isl::map map::complement() const
10743{
10744 auto res = isl_map_complement(map: copy());
10745 return manage(ptr: res);
10746}
10747
10748isl::union_map map::compute_divs() const
10749{
10750 return isl::union_map(*this).compute_divs();
10751}
10752
10753isl::map map::curry() const
10754{
10755 auto res = isl_map_curry(map: copy());
10756 return manage(ptr: res);
10757}
10758
10759isl::set map::deltas() const
10760{
10761 auto res = isl_map_deltas(map: copy());
10762 return manage(ptr: res);
10763}
10764
10765isl::map map::detect_equalities() const
10766{
10767 auto res = isl_map_detect_equalities(map: copy());
10768 return manage(ptr: res);
10769}
10770
10771class size map::dim(isl::dim type) const
10772{
10773 auto res = isl_map_dim(map: get(), type: static_cast<enum isl_dim_type>(type));
10774 return manage(val: res);
10775}
10776
10777isl::pw_aff map::dim_max(int pos) const
10778{
10779 auto res = isl_map_dim_max(map: copy(), pos);
10780 return manage(ptr: res);
10781}
10782
10783isl::pw_aff map::dim_min(int pos) const
10784{
10785 auto res = isl_map_dim_min(map: copy(), pos);
10786 return manage(ptr: res);
10787}
10788
10789isl::set map::domain() const
10790{
10791 auto res = isl_map_domain(bmap: copy());
10792 return manage(ptr: res);
10793}
10794
10795isl::map map::domain_factor_domain() const
10796{
10797 auto res = isl_map_domain_factor_domain(map: copy());
10798 return manage(ptr: res);
10799}
10800
10801isl::map map::domain_factor_range() const
10802{
10803 auto res = isl_map_domain_factor_range(map: copy());
10804 return manage(ptr: res);
10805}
10806
10807isl::map map::domain_map() const
10808{
10809 auto res = isl_map_domain_map(map: copy());
10810 return manage(ptr: res);
10811}
10812
10813isl::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
10818isl::map map::domain_product(isl::map map2) const
10819{
10820 auto res = isl_map_domain_product(map1: copy(), map2: map2.release());
10821 return manage(ptr: res);
10822}
10823
10824isl::union_map map::domain_product(const isl::union_map &umap2) const
10825{
10826 return isl::union_map(*this).domain_product(umap2);
10827}
10828
10829isl::map map::domain_product(const isl::basic_map &map2) const
10830{
10831 return this->domain_product(map2: isl::map(map2));
10832}
10833
10834class size map::domain_tuple_dim() const
10835{
10836 auto res = isl_map_domain_tuple_dim(map: get());
10837 return manage(val: res);
10838}
10839
10840isl::id map::domain_tuple_id() const
10841{
10842 auto res = isl_map_get_domain_tuple_id(map: get());
10843 return manage(ptr: res);
10844}
10845
10846isl::id map::get_domain_tuple_id() const
10847{
10848 return domain_tuple_id();
10849}
10850
10851isl::map map::empty(isl::space space)
10852{
10853 auto res = isl_map_empty(space: space.release());
10854 return manage(ptr: res);
10855}
10856
10857isl::map map::eq_at(isl::multi_pw_aff mpa) const
10858{
10859 auto res = isl_map_eq_at_multi_pw_aff(map: copy(), mpa: mpa.release());
10860 return manage(ptr: res);
10861}
10862
10863isl::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
10868isl::map map::eq_at(const isl::aff &mpa) const
10869{
10870 return this->eq_at(mpa: isl::multi_pw_aff(mpa));
10871}
10872
10873isl::map map::eq_at(const isl::multi_aff &mpa) const
10874{
10875 return this->eq_at(mpa: isl::multi_pw_aff(mpa));
10876}
10877
10878isl::map map::eq_at(const isl::pw_aff &mpa) const
10879{
10880 return this->eq_at(mpa: isl::multi_pw_aff(mpa));
10881}
10882
10883isl::map map::eq_at(const isl::pw_multi_aff &mpa) const
10884{
10885 return this->eq_at(mpa: isl::multi_pw_aff(mpa));
10886}
10887
10888isl::map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
10889{
10890 auto res = isl_map_equate(map: copy(), type1: static_cast<enum isl_dim_type>(type1), pos1, type2: static_cast<enum isl_dim_type>(type2), pos2);
10891 return manage(ptr: res);
10892}
10893
10894boolean map::every_map(const std::function<boolean(isl::map)> &test) const
10895{
10896 return isl::union_map(*this).every_map(test);
10897}
10898
10899isl::map map::extract_map(const isl::space &space) const
10900{
10901 return isl::union_map(*this).extract_map(space);
10902}
10903
10904isl::map map::factor_domain() const
10905{
10906 auto res = isl_map_factor_domain(map: copy());
10907 return manage(ptr: res);
10908}
10909
10910isl::map map::factor_range() const
10911{
10912 auto res = isl_map_factor_range(map: copy());
10913 return manage(ptr: res);
10914}
10915
10916isl::map map::fix_si(isl::dim type, unsigned int pos, int value) const
10917{
10918 auto res = isl_map_fix_si(map: copy(), type: static_cast<enum isl_dim_type>(type), pos, value);
10919 return manage(ptr: res);
10920}
10921
10922isl::union_map map::fixed_power(const isl::val &exp) const
10923{
10924 return isl::union_map(*this).fixed_power(exp);
10925}
10926
10927isl::union_map map::fixed_power(long exp) const
10928{
10929 return this->fixed_power(exp: isl::val(ctx(), exp));
10930}
10931
10932isl::map map::flat_range_product(isl::map map2) const
10933{
10934 auto res = isl_map_flat_range_product(map1: copy(), map2: map2.release());
10935 return manage(ptr: res);
10936}
10937
10938isl::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
10943isl::map map::flat_range_product(const isl::basic_map &map2) const
10944{
10945 return this->flat_range_product(map2: isl::map(map2));
10946}
10947
10948isl::map map::flatten() const
10949{
10950 auto res = isl_map_flatten(map: copy());
10951 return manage(ptr: res);
10952}
10953
10954isl::map map::flatten_domain() const
10955{
10956 auto res = isl_map_flatten_domain(map: copy());
10957 return manage(ptr: res);
10958}
10959
10960isl::map map::flatten_range() const
10961{
10962 auto res = isl_map_flatten_range(map: copy());
10963 return manage(ptr: res);
10964}
10965
10966isl::map map::floordiv_val(isl::val d) const
10967{
10968 auto res = isl_map_floordiv_val(map: copy(), d: d.release());
10969 return manage(ptr: res);
10970}
10971
10972isl::map map::floordiv_val(long d) const
10973{
10974 return this->floordiv_val(d: isl::val(ctx(), d));
10975}
10976
10977stat 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 = { .func: 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(ptr: arg_0));
10985 return ret.release();
10986 };
10987 auto res = isl_map_foreach_basic_map(map: get(), fn: fn_lambda, user: &fn_data);
10988 return manage(val: res);
10989}
10990
10991stat map::foreach_map(const std::function<stat(isl::map)> &fn) const
10992{
10993 return isl::union_map(*this).foreach_map(fn);
10994}
10995
10996isl::map map::from_aff(isl::aff aff)
10997{
10998 auto res = isl_map_from_aff(aff: aff.release());
10999 return manage(ptr: res);
11000}
11001
11002isl::map map::from_domain(isl::set set)
11003{
11004 auto res = isl_map_from_domain(set: set.release());
11005 return manage(ptr: res);
11006}
11007
11008isl::map map::from_domain_and_range(isl::set domain, isl::set range)
11009{
11010 auto res = isl_map_from_domain_and_range(domain: domain.release(), range: range.release());
11011 return manage(ptr: res);
11012}
11013
11014isl::map map::from_multi_aff(isl::multi_aff maff)
11015{
11016 auto res = isl_map_from_multi_aff(maff: maff.release());
11017 return manage(ptr: res);
11018}
11019
11020isl::map map::from_pw_aff(isl::pw_aff pwaff)
11021{
11022 auto res = isl_map_from_pw_aff(pwaff: pwaff.release());
11023 return manage(ptr: res);
11024}
11025
11026isl::map map::from_range(isl::set set)
11027{
11028 auto res = isl_map_from_range(set: set.release());
11029 return manage(ptr: res);
11030}
11031
11032isl::map map::from_union_map(isl::union_map umap)
11033{
11034 auto res = isl_map_from_union_map(umap: umap.release());
11035 return manage(ptr: res);
11036}
11037
11038isl::map map::gist(isl::map context) const
11039{
11040 auto res = isl_map_gist(map: copy(), context: context.release());
11041 return manage(ptr: res);
11042}
11043
11044isl::union_map map::gist(const isl::union_map &context) const
11045{
11046 return isl::union_map(*this).gist(context);
11047}
11048
11049isl::map map::gist(const isl::basic_map &context) const
11050{
11051 return this->gist(context: isl::map(context));
11052}
11053
11054isl::map map::gist_domain(isl::set context) const
11055{
11056 auto res = isl_map_gist_domain(map: copy(), context: context.release());
11057 return manage(ptr: res);
11058}
11059
11060isl::union_map map::gist_domain(const isl::union_set &uset) const
11061{
11062 return isl::union_map(*this).gist_domain(uset);
11063}
11064
11065isl::map map::gist_domain(const isl::basic_set &context) const
11066{
11067 return this->gist_domain(context: isl::set(context));
11068}
11069
11070isl::map map::gist_domain(const isl::point &context) const
11071{
11072 return this->gist_domain(context: isl::set(context));
11073}
11074
11075isl::map map::gist_params(isl::set context) const
11076{
11077 auto res = isl_map_gist_params(map: copy(), context: context.release());
11078 return manage(ptr: res);
11079}
11080
11081isl::union_map map::gist_range(const isl::union_set &uset) const
11082{
11083 return isl::union_map(*this).gist_range(uset);
11084}
11085
11086boolean map::has_domain_tuple_id() const
11087{
11088 auto res = isl_map_has_domain_tuple_id(map: get());
11089 return manage(val: res);
11090}
11091
11092boolean map::has_equal_space(const isl::map &map2) const
11093{
11094 auto res = isl_map_has_equal_space(map1: get(), map2: map2.get());
11095 return manage(val: res);
11096}
11097
11098boolean map::has_range_tuple_id() const
11099{
11100 auto res = isl_map_has_range_tuple_id(map: get());
11101 return manage(val: res);
11102}
11103
11104boolean map::has_tuple_id(isl::dim type) const
11105{
11106 auto res = isl_map_has_tuple_id(map: get(), type: static_cast<enum isl_dim_type>(type));
11107 return manage(val: res);
11108}
11109
11110boolean map::has_tuple_name(isl::dim type) const
11111{
11112 auto res = isl_map_has_tuple_name(map: get(), type: static_cast<enum isl_dim_type>(type));
11113 return manage(val: res);
11114}
11115
11116isl::map map::identity(isl::space space)
11117{
11118 auto res = isl_map_identity(space: space.release());
11119 return manage(ptr: res);
11120}
11121
11122isl::map map::intersect(isl::map map2) const
11123{
11124 auto res = isl_map_intersect(map1: copy(), map2: map2.release());
11125 return manage(ptr: res);
11126}
11127
11128isl::union_map map::intersect(const isl::union_map &umap2) const
11129{
11130 return isl::union_map(*this).intersect(umap2);
11131}
11132
11133isl::map map::intersect(const isl::basic_map &map2) const
11134{
11135 return this->intersect(map2: isl::map(map2));
11136}
11137
11138isl::map map::intersect_domain(isl::set set) const
11139{
11140 auto res = isl_map_intersect_domain(map: copy(), set: set.release());
11141 return manage(ptr: res);
11142}
11143
11144isl::union_map map::intersect_domain(const isl::space &space) const
11145{
11146 return isl::union_map(*this).intersect_domain(space);
11147}
11148
11149isl::union_map map::intersect_domain(const isl::union_set &uset) const
11150{
11151 return isl::union_map(*this).intersect_domain(uset);
11152}
11153
11154isl::map map::intersect_domain(const isl::basic_set &set) const
11155{
11156 return this->intersect_domain(set: isl::set(set));
11157}
11158
11159isl::map map::intersect_domain(const isl::point &set) const
11160{
11161 return this->intersect_domain(set: isl::set(set));
11162}
11163
11164isl::map map::intersect_domain_factor_domain(isl::map factor) const
11165{
11166 auto res = isl_map_intersect_domain_factor_domain(map: copy(), factor: factor.release());
11167 return manage(ptr: res);
11168}
11169
11170isl::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
11175isl::map map::intersect_domain_factor_domain(const isl::basic_map &factor) const
11176{
11177 return this->intersect_domain_factor_domain(factor: isl::map(factor));
11178}
11179
11180isl::map map::intersect_domain_factor_range(isl::map factor) const
11181{
11182 auto res = isl_map_intersect_domain_factor_range(map: copy(), factor: factor.release());
11183 return manage(ptr: res);
11184}
11185
11186isl::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
11191isl::map map::intersect_domain_factor_range(const isl::basic_map &factor) const
11192{
11193 return this->intersect_domain_factor_range(factor: isl::map(factor));
11194}
11195
11196isl::map map::intersect_params(isl::set params) const
11197{
11198 auto res = isl_map_intersect_params(map: copy(), params: params.release());
11199 return manage(ptr: res);
11200}
11201
11202isl::map map::intersect_range(isl::set set) const
11203{
11204 auto res = isl_map_intersect_range(map: copy(), set: set.release());
11205 return manage(ptr: res);
11206}
11207
11208isl::union_map map::intersect_range(const isl::space &space) const
11209{
11210 return isl::union_map(*this).intersect_range(space);
11211}
11212
11213isl::union_map map::intersect_range(const isl::union_set &uset) const
11214{
11215 return isl::union_map(*this).intersect_range(uset);
11216}
11217
11218isl::map map::intersect_range(const isl::basic_set &set) const
11219{
11220 return this->intersect_range(set: isl::set(set));
11221}
11222
11223isl::map map::intersect_range(const isl::point &set) const
11224{
11225 return this->intersect_range(set: isl::set(set));
11226}
11227
11228isl::map map::intersect_range_factor_domain(isl::map factor) const
11229{
11230 auto res = isl_map_intersect_range_factor_domain(map: copy(), factor: factor.release());
11231 return manage(ptr: res);
11232}
11233
11234isl::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
11239isl::map map::intersect_range_factor_domain(const isl::basic_map &factor) const
11240{
11241 return this->intersect_range_factor_domain(factor: isl::map(factor));
11242}
11243
11244isl::map map::intersect_range_factor_range(isl::map factor) const
11245{
11246 auto res = isl_map_intersect_range_factor_range(map: copy(), factor: factor.release());
11247 return manage(ptr: res);
11248}
11249
11250isl::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
11255isl::map map::intersect_range_factor_range(const isl::basic_map &factor) const
11256{
11257 return this->intersect_range_factor_range(factor: isl::map(factor));
11258}
11259
11260boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11261{
11262 auto res = isl_map_involves_dims(map: get(), type: static_cast<enum isl_dim_type>(type), first, n);
11263 return manage(val: res);
11264}
11265
11266boolean map::is_bijective() const
11267{
11268 auto res = isl_map_is_bijective(map: get());
11269 return manage(val: res);
11270}
11271
11272boolean map::is_disjoint(const isl::map &map2) const
11273{
11274 auto res = isl_map_is_disjoint(map1: get(), map2: map2.get());
11275 return manage(val: res);
11276}
11277
11278boolean map::is_disjoint(const isl::union_map &umap2) const
11279{
11280 return isl::union_map(*this).is_disjoint(umap2);
11281}
11282
11283boolean map::is_disjoint(const isl::basic_map &map2) const
11284{
11285 return this->is_disjoint(map2: isl::map(map2));
11286}
11287
11288boolean map::is_empty() const
11289{
11290 auto res = isl_map_is_empty(map: get());
11291 return manage(val: res);
11292}
11293
11294boolean map::is_equal(const isl::map &map2) const
11295{
11296 auto res = isl_map_is_equal(map1: get(), map2: map2.get());
11297 return manage(val: res);
11298}
11299
11300boolean map::is_equal(const isl::union_map &umap2) const
11301{
11302 return isl::union_map(*this).is_equal(umap2);
11303}
11304
11305boolean map::is_equal(const isl::basic_map &map2) const
11306{
11307 return this->is_equal(map2: isl::map(map2));
11308}
11309
11310boolean map::is_injective() const
11311{
11312 auto res = isl_map_is_injective(map: get());
11313 return manage(val: res);
11314}
11315
11316boolean map::is_single_valued() const
11317{
11318 auto res = isl_map_is_single_valued(map: get());
11319 return manage(val: res);
11320}
11321
11322boolean map::is_strict_subset(const isl::map &map2) const
11323{
11324 auto res = isl_map_is_strict_subset(map1: get(), map2: map2.get());
11325 return manage(val: res);
11326}
11327
11328boolean map::is_strict_subset(const isl::union_map &umap2) const
11329{
11330 return isl::union_map(*this).is_strict_subset(umap2);
11331}
11332
11333boolean map::is_strict_subset(const isl::basic_map &map2) const
11334{
11335 return this->is_strict_subset(map2: isl::map(map2));
11336}
11337
11338boolean map::is_subset(const isl::map &map2) const
11339{
11340 auto res = isl_map_is_subset(map1: get(), map2: map2.get());
11341 return manage(val: res);
11342}
11343
11344boolean map::is_subset(const isl::union_map &umap2) const
11345{
11346 return isl::union_map(*this).is_subset(umap2);
11347}
11348
11349boolean map::is_subset(const isl::basic_map &map2) const
11350{
11351 return this->is_subset(map2: isl::map(map2));
11352}
11353
11354boolean map::isa_map() const
11355{
11356 return isl::union_map(*this).isa_map();
11357}
11358
11359isl::map map::lex_ge(isl::space set_space)
11360{
11361 auto res = isl_map_lex_ge(set_space: set_space.release());
11362 return manage(ptr: res);
11363}
11364
11365isl::map map::lex_ge_at(isl::multi_pw_aff mpa) const
11366{
11367 auto res = isl_map_lex_ge_at_multi_pw_aff(map: copy(), mpa: mpa.release());
11368 return manage(ptr: res);
11369}
11370
11371isl::map map::lex_gt(isl::space set_space)
11372{
11373 auto res = isl_map_lex_gt(set_space: set_space.release());
11374 return manage(ptr: res);
11375}
11376
11377isl::map map::lex_gt_at(isl::multi_pw_aff mpa) const
11378{
11379 auto res = isl_map_lex_gt_at_multi_pw_aff(map: copy(), mpa: mpa.release());
11380 return manage(ptr: res);
11381}
11382
11383isl::map map::lex_le(isl::space set_space)
11384{
11385 auto res = isl_map_lex_le(set_space: set_space.release());
11386 return manage(ptr: res);
11387}
11388
11389isl::map map::lex_le_at(isl::multi_pw_aff mpa) const
11390{
11391 auto res = isl_map_lex_le_at_multi_pw_aff(map: copy(), mpa: mpa.release());
11392 return manage(ptr: res);
11393}
11394
11395isl::map map::lex_lt(isl::space set_space)
11396{
11397 auto res = isl_map_lex_lt(set_space: set_space.release());
11398 return manage(ptr: res);
11399}
11400
11401isl::map map::lex_lt_at(isl::multi_pw_aff mpa) const
11402{
11403 auto res = isl_map_lex_lt_at_multi_pw_aff(map: copy(), mpa: mpa.release());
11404 return manage(ptr: res);
11405}
11406
11407isl::map map::lexmax() const
11408{
11409 auto res = isl_map_lexmax(map: copy());
11410 return manage(ptr: res);
11411}
11412
11413isl::pw_multi_aff map::lexmax_pw_multi_aff() const
11414{
11415 auto res = isl_map_lexmax_pw_multi_aff(map: copy());
11416 return manage(ptr: res);
11417}
11418
11419isl::map map::lexmin() const
11420{
11421 auto res = isl_map_lexmin(map: copy());
11422 return manage(ptr: res);
11423}
11424
11425isl::pw_multi_aff map::lexmin_pw_multi_aff() const
11426{
11427 auto res = isl_map_lexmin_pw_multi_aff(map: copy());
11428 return manage(ptr: res);
11429}
11430
11431isl::map map::lower_bound(isl::multi_pw_aff lower) const
11432{
11433 auto res = isl_map_lower_bound_multi_pw_aff(map: copy(), lower: lower.release());
11434 return manage(ptr: res);
11435}
11436
11437isl::map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
11438{
11439 auto res = isl_map_lower_bound_si(map: copy(), type: static_cast<enum isl_dim_type>(type), pos, value);
11440 return manage(ptr: res);
11441}
11442
11443isl::map_list map::map_list() const
11444{
11445 return isl::union_map(*this).map_list();
11446}
11447
11448isl::multi_pw_aff map::max_multi_pw_aff() const
11449{
11450 auto res = isl_map_max_multi_pw_aff(map: copy());
11451 return manage(ptr: res);
11452}
11453
11454isl::multi_pw_aff map::min_multi_pw_aff() const
11455{
11456 auto res = isl_map_min_multi_pw_aff(map: copy());
11457 return manage(ptr: res);
11458}
11459
11460isl::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(map: copy(), dst_type: static_cast<enum isl_dim_type>(dst_type), dst_pos, src_type: static_cast<enum isl_dim_type>(src_type), src_pos, n);
11463 return manage(ptr: res);
11464}
11465
11466class size map::n_basic_map() const
11467{
11468 auto res = isl_map_n_basic_map(map: get());
11469 return manage(val: res);
11470}
11471
11472isl::map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
11473{
11474 auto res = isl_map_order_lt(map: copy(), type1: static_cast<enum isl_dim_type>(type1), pos1, type2: static_cast<enum isl_dim_type>(type2), pos2);
11475 return manage(ptr: res);
11476}
11477
11478isl::set map::params() const
11479{
11480 return isl::union_map(*this).params();
11481}
11482
11483isl::basic_map map::polyhedral_hull() const
11484{
11485 auto res = isl_map_polyhedral_hull(map: copy());
11486 return manage(ptr: res);
11487}
11488
11489isl::map map::preimage_domain(isl::multi_aff ma) const
11490{
11491 auto res = isl_map_preimage_domain_multi_aff(map: copy(), ma: ma.release());
11492 return manage(ptr: res);
11493}
11494
11495isl::map map::preimage_domain(isl::multi_pw_aff mpa) const
11496{
11497 auto res = isl_map_preimage_domain_multi_pw_aff(map: copy(), mpa: mpa.release());
11498 return manage(ptr: res);
11499}
11500
11501isl::map map::preimage_domain(isl::pw_multi_aff pma) const
11502{
11503 auto res = isl_map_preimage_domain_pw_multi_aff(map: copy(), pma: pma.release());
11504 return manage(ptr: res);
11505}
11506
11507isl::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
11512isl::map map::preimage_range(isl::multi_aff ma) const
11513{
11514 auto res = isl_map_preimage_range_multi_aff(map: copy(), ma: ma.release());
11515 return manage(ptr: res);
11516}
11517
11518isl::map map::preimage_range(isl::pw_multi_aff pma) const
11519{
11520 auto res = isl_map_preimage_range_pw_multi_aff(map: copy(), pma: pma.release());
11521 return manage(ptr: res);
11522}
11523
11524isl::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
11529isl::map map::product(isl::map map2) const
11530{
11531 auto res = isl_map_product(map1: copy(), map2: map2.release());
11532 return manage(ptr: res);
11533}
11534
11535isl::union_map map::product(const isl::union_map &umap2) const
11536{
11537 return isl::union_map(*this).product(umap2);
11538}
11539
11540isl::map map::product(const isl::basic_map &map2) const
11541{
11542 return this->product(map2: isl::map(map2));
11543}
11544
11545isl::map map::project_out(isl::dim type, unsigned int first, unsigned int n) const
11546{
11547 auto res = isl_map_project_out(map: copy(), type: static_cast<enum isl_dim_type>(type), first, n);
11548 return manage(ptr: res);
11549}
11550
11551isl::map map::project_out_all_params() const
11552{
11553 auto res = isl_map_project_out_all_params(map: copy());
11554 return manage(ptr: res);
11555}
11556
11557isl::set map::range() const
11558{
11559 auto res = isl_map_range(map: copy());
11560 return manage(ptr: res);
11561}
11562
11563isl::map map::range_factor_domain() const
11564{
11565 auto res = isl_map_range_factor_domain(map: copy());
11566 return manage(ptr: res);
11567}
11568
11569isl::map map::range_factor_range() const
11570{
11571 auto res = isl_map_range_factor_range(map: copy());
11572 return manage(ptr: res);
11573}
11574
11575isl::fixed_box map::range_lattice_tile() const
11576{
11577 auto res = isl_map_get_range_lattice_tile(map: get());
11578 return manage(ptr: res);
11579}
11580
11581isl::fixed_box map::get_range_lattice_tile() const
11582{
11583 return range_lattice_tile();
11584}
11585
11586isl::map map::range_map() const
11587{
11588 auto res = isl_map_range_map(map: copy());
11589 return manage(ptr: res);
11590}
11591
11592isl::map map::range_product(isl::map map2) const
11593{
11594 auto res = isl_map_range_product(map1: copy(), map2: map2.release());
11595 return manage(ptr: res);
11596}
11597
11598isl::union_map map::range_product(const isl::union_map &umap2) const
11599{
11600 return isl::union_map(*this).range_product(umap2);
11601}
11602
11603isl::map map::range_product(const isl::basic_map &map2) const
11604{
11605 return this->range_product(map2: isl::map(map2));
11606}
11607
11608isl::map map::range_reverse() const
11609{
11610 auto res = isl_map_range_reverse(map: copy());
11611 return manage(ptr: res);
11612}
11613
11614isl::fixed_box map::range_simple_fixed_box_hull() const
11615{
11616 auto res = isl_map_get_range_simple_fixed_box_hull(map: get());
11617 return manage(ptr: res);
11618}
11619
11620isl::fixed_box map::get_range_simple_fixed_box_hull() const
11621{
11622 return range_simple_fixed_box_hull();
11623}
11624
11625class size map::range_tuple_dim() const
11626{
11627 auto res = isl_map_range_tuple_dim(map: get());
11628 return manage(val: res);
11629}
11630
11631isl::id map::range_tuple_id() const
11632{
11633 auto res = isl_map_get_range_tuple_id(map: get());
11634 return manage(ptr: res);
11635}
11636
11637isl::id map::get_range_tuple_id() const
11638{
11639 return range_tuple_id();
11640}
11641
11642isl::map map::reverse() const
11643{
11644 auto res = isl_map_reverse(map: copy());
11645 return manage(ptr: res);
11646}
11647
11648isl::basic_map map::sample() const
11649{
11650 auto res = isl_map_sample(map: copy());
11651 return manage(ptr: res);
11652}
11653
11654isl::map map::set_domain_tuple(isl::id id) const
11655{
11656 auto res = isl_map_set_domain_tuple_id(map: copy(), id: id.release());
11657 return manage(ptr: res);
11658}
11659
11660isl::map map::set_domain_tuple(const std::string &id) const
11661{
11662 return this->set_domain_tuple(isl::id(ctx(), id));
11663}
11664
11665isl::map map::set_range_tuple(isl::id id) const
11666{
11667 auto res = isl_map_set_range_tuple_id(map: copy(), id: id.release());
11668 return manage(ptr: res);
11669}
11670
11671isl::map map::set_range_tuple(const std::string &id) const
11672{
11673 return this->set_range_tuple(isl::id(ctx(), id));
11674}
11675
11676isl::map map::set_tuple_id(isl::dim type, isl::id id) const
11677{
11678 auto res = isl_map_set_tuple_id(map: copy(), type: static_cast<enum isl_dim_type>(type), id: id.release());
11679 return manage(ptr: res);
11680}
11681
11682isl::map map::set_tuple_id(isl::dim type, const std::string &id) const
11683{
11684 return this->set_tuple_id(type, id: isl::id(ctx(), id));
11685}
11686
11687isl::space map::space() const
11688{
11689 auto res = isl_map_get_space(map: get());
11690 return manage(ptr: res);
11691}
11692
11693isl::space map::get_space() const
11694{
11695 return space();
11696}
11697
11698isl::map map::subtract(isl::map map2) const
11699{
11700 auto res = isl_map_subtract(map1: copy(), map2: map2.release());
11701 return manage(ptr: res);
11702}
11703
11704isl::union_map map::subtract(const isl::union_map &umap2) const
11705{
11706 return isl::union_map(*this).subtract(umap2);
11707}
11708
11709isl::map map::subtract(const isl::basic_map &map2) const
11710{
11711 return this->subtract(map2: isl::map(map2));
11712}
11713
11714isl::union_map map::subtract_domain(const isl::union_set &dom) const
11715{
11716 return isl::union_map(*this).subtract_domain(dom);
11717}
11718
11719isl::union_map map::subtract_range(const isl::union_set &dom) const
11720{
11721 return isl::union_map(*this).subtract_range(dom);
11722}
11723
11724isl::map map::sum(isl::map map2) const
11725{
11726 auto res = isl_map_sum(map1: copy(), map2: map2.release());
11727 return manage(ptr: res);
11728}
11729
11730isl::map_list map::to_list() const
11731{
11732 auto res = isl_map_to_list(el: copy());
11733 return manage(ptr: res);
11734}
11735
11736isl::union_map map::to_union_map() const
11737{
11738 auto res = isl_map_to_union_map(map: copy());
11739 return manage(ptr: res);
11740}
11741
11742isl::id map::tuple_id(isl::dim type) const
11743{
11744 auto res = isl_map_get_tuple_id(map: get(), type: static_cast<enum isl_dim_type>(type));
11745 return manage(ptr: res);
11746}
11747
11748isl::id map::get_tuple_id(isl::dim type) const
11749{
11750 return tuple_id(type);
11751}
11752
11753isl::map map::uncurry() const
11754{
11755 auto res = isl_map_uncurry(map: copy());
11756 return manage(ptr: res);
11757}
11758
11759isl::map map::unite(isl::map map2) const
11760{
11761 auto res = isl_map_union(map1: copy(), map2: map2.release());
11762 return manage(ptr: res);
11763}
11764
11765isl::union_map map::unite(const isl::union_map &umap2) const
11766{
11767 return isl::union_map(*this).unite(umap2);
11768}
11769
11770isl::map map::unite(const isl::basic_map &map2) const
11771{
11772 return this->unite(map2: isl::map(map2));
11773}
11774
11775isl::map map::universe(isl::space space)
11776{
11777 auto res = isl_map_universe(space: space.release());
11778 return manage(ptr: res);
11779}
11780
11781isl::basic_map map::unshifted_simple_hull() const
11782{
11783 auto res = isl_map_unshifted_simple_hull(map: copy());
11784 return manage(ptr: res);
11785}
11786
11787isl::map map::upper_bound(isl::multi_pw_aff upper) const
11788{
11789 auto res = isl_map_upper_bound_multi_pw_aff(map: copy(), upper: upper.release());
11790 return manage(ptr: res);
11791}
11792
11793isl::map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
11794{
11795 auto res = isl_map_upper_bound_si(map: copy(), type: static_cast<enum isl_dim_type>(type), pos, value);
11796 return manage(ptr: res);
11797}
11798
11799isl::set map::wrap() const
11800{
11801 auto res = isl_map_wrap(map: copy());
11802 return manage(ptr: res);
11803}
11804
11805isl::map map::zip() const
11806{
11807 auto res = isl_map_zip(map: copy());
11808 return manage(ptr: res);
11809}
11810
11811inline std::ostream &operator<<(std::ostream &os, const map &obj)
11812{
11813 char *str = isl_map_to_str(map: obj.get());
11814 if (!str) {
11815 os.setstate(std::ios_base::badbit);
11816 return os;
11817 }
11818 os << str;
11819 free(ptr: str);
11820 return os;
11821}
11822
11823// implementations for isl::map_list
11824map_list manage(__isl_take isl_map_list *ptr) {
11825 return map_list(ptr);
11826}
11827map_list manage_copy(__isl_keep isl_map_list *ptr) {
11828 ptr = isl_map_list_copy(list: ptr);
11829 return map_list(ptr);
11830}
11831
11832map_list::map_list()
11833 : ptr(nullptr) {}
11834
11835map_list::map_list(const map_list &obj)
11836 : ptr(nullptr)
11837{
11838 ptr = obj.copy();
11839}
11840
11841map_list::map_list(__isl_take isl_map_list *ptr)
11842 : ptr(ptr) {}
11843
11844map_list::map_list(isl::ctx ctx, int n)
11845{
11846 auto res = isl_map_list_alloc(ctx: ctx.release(), n);
11847 ptr = res;
11848}
11849
11850map_list::map_list(isl::map el)
11851{
11852 auto res = isl_map_list_from_map(el: el.release());
11853 ptr = res;
11854}
11855
11856map_list::map_list(isl::ctx ctx, const std::string &str)
11857{
11858 auto res = isl_map_list_read_from_str(ctx: ctx.release(), str: str.c_str());
11859 ptr = res;
11860}
11861
11862map_list &map_list::operator=(map_list obj) {
11863 std::swap(a&: this->ptr, b&: obj.ptr);
11864 return *this;
11865}
11866
11867map_list::~map_list() {
11868 if (ptr)
11869 isl_map_list_free(list: ptr);
11870}
11871
11872__isl_give isl_map_list *map_list::copy() const & {
11873 return isl_map_list_copy(list: ptr);
11874}
11875
11876__isl_keep isl_map_list *map_list::get() const {
11877 return ptr;
11878}
11879
11880__isl_give isl_map_list *map_list::release() {
11881 isl_map_list *tmp = ptr;
11882 ptr = nullptr;
11883 return tmp;
11884}
11885
11886bool map_list::is_null() const {
11887 return ptr == nullptr;
11888}
11889
11890isl::ctx map_list::ctx() const {
11891 return isl::ctx(isl_map_list_get_ctx(list: ptr));
11892}
11893
11894isl::map_list map_list::add(isl::map el) const
11895{
11896 auto res = isl_map_list_add(list: copy(), el: el.release());
11897 return manage(ptr: res);
11898}
11899
11900isl::map map_list::at(int index) const
11901{
11902 auto res = isl_map_list_get_at(list: get(), index);
11903 return manage(ptr: res);
11904}
11905
11906isl::map map_list::get_at(int index) const
11907{
11908 return at(index);
11909}
11910
11911isl::map_list map_list::clear() const
11912{
11913 auto res = isl_map_list_clear(list: copy());
11914 return manage(ptr: res);
11915}
11916
11917isl::map_list map_list::concat(isl::map_list list2) const
11918{
11919 auto res = isl_map_list_concat(list1: copy(), list2: list2.release());
11920 return manage(ptr: res);
11921}
11922
11923isl::map_list map_list::drop(unsigned int first, unsigned int n) const
11924{
11925 auto res = isl_map_list_drop(list: copy(), first, n);
11926 return manage(ptr: res);
11927}
11928
11929stat 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 = { .func: 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(ptr: arg_0));
11937 return ret.release();
11938 };
11939 auto res = isl_map_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
11940 return manage(val: res);
11941}
11942
11943isl::map_list map_list::insert(unsigned int pos, isl::map el) const
11944{
11945 auto res = isl_map_list_insert(list: copy(), pos, el: el.release());
11946 return manage(ptr: res);
11947}
11948
11949class size map_list::size() const
11950{
11951 auto res = isl_map_list_size(list: get());
11952 return manage(val: res);
11953}
11954
11955inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
11956{
11957 char *str = isl_map_list_to_str(list: obj.get());
11958 if (!str) {
11959 os.setstate(std::ios_base::badbit);
11960 return os;
11961 }
11962 os << str;
11963 free(ptr: str);
11964 return os;
11965}
11966
11967// implementations for isl::multi_aff
11968multi_aff manage(__isl_take isl_multi_aff *ptr) {
11969 return multi_aff(ptr);
11970}
11971multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
11972 ptr = isl_multi_aff_copy(multi: ptr);
11973 return multi_aff(ptr);
11974}
11975
11976multi_aff::multi_aff()
11977 : ptr(nullptr) {}
11978
11979multi_aff::multi_aff(const multi_aff &obj)
11980 : ptr(nullptr)
11981{
11982 ptr = obj.copy();
11983}
11984
11985multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
11986 : ptr(ptr) {}
11987
11988multi_aff::multi_aff(isl::aff aff)
11989{
11990 auto res = isl_multi_aff_from_aff(aff: aff.release());
11991 ptr = res;
11992}
11993
11994multi_aff::multi_aff(isl::space space, isl::aff_list list)
11995{
11996 auto res = isl_multi_aff_from_aff_list(space: space.release(), list: list.release());
11997 ptr = res;
11998}
11999
12000multi_aff::multi_aff(isl::ctx ctx, const std::string &str)
12001{
12002 auto res = isl_multi_aff_read_from_str(ctx: ctx.release(), str: str.c_str());
12003 ptr = res;
12004}
12005
12006multi_aff &multi_aff::operator=(multi_aff obj) {
12007 std::swap(a&: this->ptr, b&: obj.ptr);
12008 return *this;
12009}
12010
12011multi_aff::~multi_aff() {
12012 if (ptr)
12013 isl_multi_aff_free(multi: ptr);
12014}
12015
12016__isl_give isl_multi_aff *multi_aff::copy() const & {
12017 return isl_multi_aff_copy(multi: ptr);
12018}
12019
12020__isl_keep isl_multi_aff *multi_aff::get() const {
12021 return ptr;
12022}
12023
12024__isl_give isl_multi_aff *multi_aff::release() {
12025 isl_multi_aff *tmp = ptr;
12026 ptr = nullptr;
12027 return tmp;
12028}
12029
12030bool multi_aff::is_null() const {
12031 return ptr == nullptr;
12032}
12033
12034isl::ctx multi_aff::ctx() const {
12035 return isl::ctx(isl_multi_aff_get_ctx(multi: ptr));
12036}
12037
12038isl::multi_aff multi_aff::add(isl::multi_aff multi2) const
12039{
12040 auto res = isl_multi_aff_add(multi1: copy(), multi2: multi2.release());
12041 return manage(ptr: res);
12042}
12043
12044isl::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
12049isl::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
12054isl::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
12059isl::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
12064isl::multi_aff multi_aff::add(const isl::aff &multi2) const
12065{
12066 return this->add(multi2: isl::multi_aff(multi2));
12067}
12068
12069isl::multi_aff multi_aff::add_constant(isl::multi_val mv) const
12070{
12071 auto res = isl_multi_aff_add_constant_multi_val(mpa: copy(), mv: mv.release());
12072 return manage(ptr: res);
12073}
12074
12075isl::multi_aff multi_aff::add_constant(isl::val v) const
12076{
12077 auto res = isl_multi_aff_add_constant_val(mpa: copy(), v: v.release());
12078 return manage(ptr: res);
12079}
12080
12081isl::multi_aff multi_aff::add_constant(long v) const
12082{
12083 return this->add_constant(v: isl::val(ctx(), v));
12084}
12085
12086isl::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
12091isl::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
12096isl::map multi_aff::as_map() const
12097{
12098 auto res = isl_multi_aff_as_map(ma: copy());
12099 return manage(ptr: res);
12100}
12101
12102isl::multi_aff multi_aff::as_multi_aff() const
12103{
12104 return isl::pw_multi_aff(*this).as_multi_aff();
12105}
12106
12107isl::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
12112isl::pw_multi_aff multi_aff::as_pw_multi_aff() const
12113{
12114 return isl::pw_multi_aff(*this).as_pw_multi_aff();
12115}
12116
12117isl::set multi_aff::as_set() const
12118{
12119 auto res = isl_multi_aff_as_set(ma: copy());
12120 return manage(ptr: res);
12121}
12122
12123isl::union_map multi_aff::as_union_map() const
12124{
12125 return isl::pw_multi_aff(*this).as_union_map();
12126}
12127
12128isl::aff multi_aff::at(int pos) const
12129{
12130 auto res = isl_multi_aff_get_at(multi: get(), pos);
12131 return manage(ptr: res);
12132}
12133
12134isl::aff multi_aff::get_at(int pos) const
12135{
12136 return at(pos);
12137}
12138
12139isl::basic_set multi_aff::bind(isl::multi_id tuple) const
12140{
12141 auto res = isl_multi_aff_bind(ma: copy(), tuple: tuple.release());
12142 return manage(ptr: res);
12143}
12144
12145isl::multi_aff multi_aff::bind_domain(isl::multi_id tuple) const
12146{
12147 auto res = isl_multi_aff_bind_domain(multi: copy(), tuple: tuple.release());
12148 return manage(ptr: res);
12149}
12150
12151isl::multi_aff multi_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
12152{
12153 auto res = isl_multi_aff_bind_domain_wrapped_domain(multi: copy(), tuple: tuple.release());
12154 return manage(ptr: res);
12155}
12156
12157isl::pw_multi_aff multi_aff::coalesce() const
12158{
12159 return isl::pw_multi_aff(*this).coalesce();
12160}
12161
12162isl::multi_val multi_aff::constant_multi_val() const
12163{
12164 auto res = isl_multi_aff_get_constant_multi_val(ma: get());
12165 return manage(ptr: res);
12166}
12167
12168isl::multi_val multi_aff::get_constant_multi_val() const
12169{
12170 return constant_multi_val();
12171}
12172
12173class size multi_aff::dim(isl::dim type) const
12174{
12175 auto res = isl_multi_aff_dim(multi: get(), type: static_cast<enum isl_dim_type>(type));
12176 return manage(val: res);
12177}
12178
12179isl::set multi_aff::domain() const
12180{
12181 return isl::pw_multi_aff(*this).domain();
12182}
12183
12184isl::multi_aff multi_aff::domain_map(isl::space space)
12185{
12186 auto res = isl_multi_aff_domain_map(space: space.release());
12187 return manage(ptr: res);
12188}
12189
12190isl::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
12195isl::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
12200isl::multi_aff multi_aff::flat_range_product(isl::multi_aff multi2) const
12201{
12202 auto res = isl_multi_aff_flat_range_product(multi1: copy(), multi2: multi2.release());
12203 return manage(ptr: res);
12204}
12205
12206isl::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
12211isl::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
12216isl::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
12221isl::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
12226isl::multi_aff multi_aff::flat_range_product(const isl::aff &multi2) const
12227{
12228 return this->flat_range_product(multi2: isl::multi_aff(multi2));
12229}
12230
12231isl::multi_aff multi_aff::floor() const
12232{
12233 auto res = isl_multi_aff_floor(ma: copy());
12234 return manage(ptr: res);
12235}
12236
12237stat 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
12242isl::multi_aff multi_aff::gist(isl::set context) const
12243{
12244 auto res = isl_multi_aff_gist(maff: copy(), context: context.release());
12245 return manage(ptr: res);
12246}
12247
12248isl::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
12253isl::multi_aff multi_aff::gist(const isl::basic_set &context) const
12254{
12255 return this->gist(context: isl::set(context));
12256}
12257
12258isl::multi_aff multi_aff::gist(const isl::point &context) const
12259{
12260 return this->gist(context: isl::set(context));
12261}
12262
12263boolean multi_aff::has_range_tuple_id() const
12264{
12265 auto res = isl_multi_aff_has_range_tuple_id(multi: get());
12266 return manage(val: res);
12267}
12268
12269isl::multi_aff multi_aff::identity(isl::space space)
12270{
12271 auto res = isl_multi_aff_identity(space: space.release());
12272 return manage(ptr: res);
12273}
12274
12275isl::multi_aff multi_aff::identity() const
12276{
12277 auto res = isl_multi_aff_identity_multi_aff(multi: copy());
12278 return manage(ptr: res);
12279}
12280
12281isl::multi_aff multi_aff::identity_on_domain(isl::space space)
12282{
12283 auto res = isl_multi_aff_identity_on_domain_space(space: space.release());
12284 return manage(ptr: res);
12285}
12286
12287isl::multi_aff multi_aff::insert_domain(isl::space domain) const
12288{
12289 auto res = isl_multi_aff_insert_domain(multi: copy(), domain: domain.release());
12290 return manage(ptr: res);
12291}
12292
12293isl::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
12298isl::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
12303isl::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
12308isl::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
12313isl::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
12318isl::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
12323boolean multi_aff::involves_locals() const
12324{
12325 auto res = isl_multi_aff_involves_locals(multi: get());
12326 return manage(val: res);
12327}
12328
12329boolean multi_aff::involves_nan() const
12330{
12331 auto res = isl_multi_aff_involves_nan(multi: get());
12332 return manage(val: res);
12333}
12334
12335boolean multi_aff::involves_param(const isl::id &id) const
12336{
12337 return isl::pw_multi_aff(*this).involves_param(id);
12338}
12339
12340boolean multi_aff::involves_param(const std::string &id) const
12341{
12342 return this->involves_param(id: isl::id(ctx(), id));
12343}
12344
12345boolean multi_aff::involves_param(const isl::id_list &list) const
12346{
12347 return isl::pw_multi_aff(*this).involves_param(list);
12348}
12349
12350boolean multi_aff::isa_multi_aff() const
12351{
12352 return isl::pw_multi_aff(*this).isa_multi_aff();
12353}
12354
12355boolean multi_aff::isa_pw_multi_aff() const
12356{
12357 return isl::pw_multi_aff(*this).isa_pw_multi_aff();
12358}
12359
12360isl::aff_list multi_aff::list() const
12361{
12362 auto res = isl_multi_aff_get_list(multi: get());
12363 return manage(ptr: res);
12364}
12365
12366isl::aff_list multi_aff::get_list() const
12367{
12368 return list();
12369}
12370
12371isl::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
12376isl::multi_val multi_aff::max_multi_val() const
12377{
12378 return isl::pw_multi_aff(*this).max_multi_val();
12379}
12380
12381isl::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
12386isl::multi_val multi_aff::min_multi_val() const
12387{
12388 return isl::pw_multi_aff(*this).min_multi_val();
12389}
12390
12391isl::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: space.release(), mv: mv.release());
12394 return manage(ptr: res);
12395}
12396
12397class size multi_aff::n_piece() const
12398{
12399 return isl::pw_multi_aff(*this).n_piece();
12400}
12401
12402isl::multi_aff multi_aff::neg() const
12403{
12404 auto res = isl_multi_aff_neg(multi: copy());
12405 return manage(ptr: res);
12406}
12407
12408boolean multi_aff::plain_is_empty() const
12409{
12410 return isl::pw_multi_aff(*this).plain_is_empty();
12411}
12412
12413boolean multi_aff::plain_is_equal(const isl::multi_aff &multi2) const
12414{
12415 auto res = isl_multi_aff_plain_is_equal(multi1: get(), multi2: multi2.get());
12416 return manage(val: res);
12417}
12418
12419boolean 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
12424boolean 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
12429boolean multi_aff::plain_is_equal(const isl::aff &multi2) const
12430{
12431 return this->plain_is_equal(multi2: isl::multi_aff(multi2));
12432}
12433
12434isl::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
12439isl::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
12444isl::multi_aff multi_aff::product(isl::multi_aff multi2) const
12445{
12446 auto res = isl_multi_aff_product(multi1: copy(), multi2: multi2.release());
12447 return manage(ptr: res);
12448}
12449
12450isl::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
12455isl::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
12460isl::multi_aff multi_aff::product(const isl::aff &multi2) const
12461{
12462 return this->product(multi2: isl::multi_aff(multi2));
12463}
12464
12465isl::multi_aff multi_aff::pullback(isl::multi_aff ma2) const
12466{
12467 auto res = isl_multi_aff_pullback_multi_aff(ma1: copy(), ma2: ma2.release());
12468 return manage(ptr: res);
12469}
12470
12471isl::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
12476isl::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
12481isl::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
12486isl::multi_aff multi_aff::pullback(const isl::aff &ma2) const
12487{
12488 return this->pullback(ma2: isl::multi_aff(ma2));
12489}
12490
12491isl::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
12496isl::pw_multi_aff multi_aff::range_factor_domain() const
12497{
12498 return isl::pw_multi_aff(*this).range_factor_domain();
12499}
12500
12501isl::pw_multi_aff multi_aff::range_factor_range() const
12502{
12503 return isl::pw_multi_aff(*this).range_factor_range();
12504}
12505
12506isl::multi_aff multi_aff::range_map(isl::space space)
12507{
12508 auto res = isl_multi_aff_range_map(space: space.release());
12509 return manage(ptr: res);
12510}
12511
12512isl::multi_aff multi_aff::range_product(isl::multi_aff multi2) const
12513{
12514 auto res = isl_multi_aff_range_product(multi1: copy(), multi2: multi2.release());
12515 return manage(ptr: res);
12516}
12517
12518isl::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
12523isl::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
12528isl::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
12533isl::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
12538isl::multi_aff multi_aff::range_product(const isl::aff &multi2) const
12539{
12540 return this->range_product(multi2: isl::multi_aff(multi2));
12541}
12542
12543isl::id multi_aff::range_tuple_id() const
12544{
12545 auto res = isl_multi_aff_get_range_tuple_id(multi: get());
12546 return manage(ptr: res);
12547}
12548
12549isl::id multi_aff::get_range_tuple_id() const
12550{
12551 return range_tuple_id();
12552}
12553
12554isl::multi_aff multi_aff::reset_range_tuple_id() const
12555{
12556 auto res = isl_multi_aff_reset_range_tuple_id(multi: copy());
12557 return manage(ptr: res);
12558}
12559
12560isl::multi_aff multi_aff::reset_tuple_id(isl::dim type) const
12561{
12562 auto res = isl_multi_aff_reset_tuple_id(multi: copy(), type: static_cast<enum isl_dim_type>(type));
12563 return manage(ptr: res);
12564}
12565
12566isl::multi_aff multi_aff::scale(isl::multi_val mv) const
12567{
12568 auto res = isl_multi_aff_scale_multi_val(multi: copy(), mv: mv.release());
12569 return manage(ptr: res);
12570}
12571
12572isl::multi_aff multi_aff::scale(isl::val v) const
12573{
12574 auto res = isl_multi_aff_scale_val(multi: copy(), v: v.release());
12575 return manage(ptr: res);
12576}
12577
12578isl::multi_aff multi_aff::scale(long v) const
12579{
12580 return this->scale(v: isl::val(ctx(), v));
12581}
12582
12583isl::multi_aff multi_aff::scale_down(isl::multi_val mv) const
12584{
12585 auto res = isl_multi_aff_scale_down_multi_val(multi: copy(), mv: mv.release());
12586 return manage(ptr: res);
12587}
12588
12589isl::multi_aff multi_aff::scale_down(isl::val v) const
12590{
12591 auto res = isl_multi_aff_scale_down_val(multi: copy(), v: v.release());
12592 return manage(ptr: res);
12593}
12594
12595isl::multi_aff multi_aff::scale_down(long v) const
12596{
12597 return this->scale_down(v: isl::val(ctx(), v));
12598}
12599
12600isl::multi_aff multi_aff::set_aff(int pos, isl::aff el) const
12601{
12602 auto res = isl_multi_aff_set_aff(multi: copy(), pos, el: el.release());
12603 return manage(ptr: res);
12604}
12605
12606isl::multi_aff multi_aff::set_at(int pos, isl::aff el) const
12607{
12608 auto res = isl_multi_aff_set_at(multi: copy(), pos, el: el.release());
12609 return manage(ptr: res);
12610}
12611
12612isl::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
12617isl::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
12622isl::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
12627isl::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
12632isl::multi_aff multi_aff::set_range_tuple(isl::id id) const
12633{
12634 auto res = isl_multi_aff_set_range_tuple_id(multi: copy(), id: id.release());
12635 return manage(ptr: res);
12636}
12637
12638isl::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
12643isl::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
12648class size multi_aff::size() const
12649{
12650 auto res = isl_multi_aff_size(multi: get());
12651 return manage(val: res);
12652}
12653
12654isl::space multi_aff::space() const
12655{
12656 auto res = isl_multi_aff_get_space(multi: get());
12657 return manage(ptr: res);
12658}
12659
12660isl::space multi_aff::get_space() const
12661{
12662 return space();
12663}
12664
12665isl::multi_aff multi_aff::sub(isl::multi_aff multi2) const
12666{
12667 auto res = isl_multi_aff_sub(multi1: copy(), multi2: multi2.release());
12668 return manage(ptr: res);
12669}
12670
12671isl::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
12676isl::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
12681isl::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
12686isl::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
12691isl::multi_aff multi_aff::sub(const isl::aff &multi2) const
12692{
12693 return this->sub(multi2: isl::multi_aff(multi2));
12694}
12695
12696isl::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
12701isl::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
12706isl::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
12711isl::pw_multi_aff_list multi_aff::to_list() const
12712{
12713 return isl::pw_multi_aff(*this).to_list();
12714}
12715
12716isl::multi_pw_aff multi_aff::to_multi_pw_aff() const
12717{
12718 auto res = isl_multi_aff_to_multi_pw_aff(ma: copy());
12719 return manage(ptr: res);
12720}
12721
12722isl::multi_union_pw_aff multi_aff::to_multi_union_pw_aff() const
12723{
12724 auto res = isl_multi_aff_to_multi_union_pw_aff(ma: copy());
12725 return manage(ptr: res);
12726}
12727
12728isl::pw_multi_aff multi_aff::to_pw_multi_aff() const
12729{
12730 auto res = isl_multi_aff_to_pw_multi_aff(ma: copy());
12731 return manage(ptr: res);
12732}
12733
12734isl::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
12739isl::id multi_aff::tuple_id(isl::dim type) const
12740{
12741 return isl::pw_multi_aff(*this).tuple_id(type);
12742}
12743
12744isl::multi_aff multi_aff::unbind_params_insert_domain(isl::multi_id domain) const
12745{
12746 auto res = isl_multi_aff_unbind_params_insert_domain(multi: copy(), domain: domain.release());
12747 return manage(ptr: res);
12748}
12749
12750isl::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
12755isl::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
12760isl::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
12765isl::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
12770isl::multi_aff multi_aff::zero(isl::space space)
12771{
12772 auto res = isl_multi_aff_zero(space: space.release());
12773 return manage(ptr: res);
12774}
12775
12776inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
12777{
12778 char *str = isl_multi_aff_to_str(ma: obj.get());
12779 if (!str) {
12780 os.setstate(std::ios_base::badbit);
12781 return os;
12782 }
12783 os << str;
12784 free(ptr: str);
12785 return os;
12786}
12787
12788// implementations for isl::multi_id
12789multi_id manage(__isl_take isl_multi_id *ptr) {
12790 return multi_id(ptr);
12791}
12792multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
12793 ptr = isl_multi_id_copy(multi: ptr);
12794 return multi_id(ptr);
12795}
12796
12797multi_id::multi_id()
12798 : ptr(nullptr) {}
12799
12800multi_id::multi_id(const multi_id &obj)
12801 : ptr(nullptr)
12802{
12803 ptr = obj.copy();
12804}
12805
12806multi_id::multi_id(__isl_take isl_multi_id *ptr)
12807 : ptr(ptr) {}
12808
12809multi_id::multi_id(isl::space space, isl::id_list list)
12810{
12811 auto res = isl_multi_id_from_id_list(space: space.release(), list: list.release());
12812 ptr = res;
12813}
12814
12815multi_id::multi_id(isl::ctx ctx, const std::string &str)
12816{
12817 auto res = isl_multi_id_read_from_str(ctx: ctx.release(), str: str.c_str());
12818 ptr = res;
12819}
12820
12821multi_id &multi_id::operator=(multi_id obj) {
12822 std::swap(a&: this->ptr, b&: obj.ptr);
12823 return *this;
12824}
12825
12826multi_id::~multi_id() {
12827 if (ptr)
12828 isl_multi_id_free(multi: ptr);
12829}
12830
12831__isl_give isl_multi_id *multi_id::copy() const & {
12832 return isl_multi_id_copy(multi: ptr);
12833}
12834
12835__isl_keep isl_multi_id *multi_id::get() const {
12836 return ptr;
12837}
12838
12839__isl_give isl_multi_id *multi_id::release() {
12840 isl_multi_id *tmp = ptr;
12841 ptr = nullptr;
12842 return tmp;
12843}
12844
12845bool multi_id::is_null() const {
12846 return ptr == nullptr;
12847}
12848
12849isl::ctx multi_id::ctx() const {
12850 return isl::ctx(isl_multi_id_get_ctx(multi: ptr));
12851}
12852
12853isl::id multi_id::at(int pos) const
12854{
12855 auto res = isl_multi_id_get_at(multi: get(), pos);
12856 return manage(ptr: res);
12857}
12858
12859isl::id multi_id::get_at(int pos) const
12860{
12861 return at(pos);
12862}
12863
12864isl::multi_id multi_id::flat_range_product(isl::multi_id multi2) const
12865{
12866 auto res = isl_multi_id_flat_range_product(multi1: copy(), multi2: multi2.release());
12867 return manage(ptr: res);
12868}
12869
12870isl::id_list multi_id::list() const
12871{
12872 auto res = isl_multi_id_get_list(multi: get());
12873 return manage(ptr: res);
12874}
12875
12876isl::id_list multi_id::get_list() const
12877{
12878 return list();
12879}
12880
12881boolean multi_id::plain_is_equal(const isl::multi_id &multi2) const
12882{
12883 auto res = isl_multi_id_plain_is_equal(multi1: get(), multi2: multi2.get());
12884 return manage(val: res);
12885}
12886
12887isl::multi_id multi_id::range_product(isl::multi_id multi2) const
12888{
12889 auto res = isl_multi_id_range_product(multi1: copy(), multi2: multi2.release());
12890 return manage(ptr: res);
12891}
12892
12893isl::multi_id multi_id::set_at(int pos, isl::id el) const
12894{
12895 auto res = isl_multi_id_set_at(multi: copy(), pos, el: el.release());
12896 return manage(ptr: res);
12897}
12898
12899isl::multi_id multi_id::set_at(int pos, const std::string &el) const
12900{
12901 return this->set_at(pos, el: isl::id(ctx(), el));
12902}
12903
12904isl::multi_id multi_id::set_id(int pos, isl::id el) const
12905{
12906 auto res = isl_multi_id_set_id(multi: copy(), pos, el: el.release());
12907 return manage(ptr: res);
12908}
12909
12910isl::multi_id multi_id::set_id(int pos, const std::string &el) const
12911{
12912 return this->set_id(pos, el: isl::id(ctx(), el));
12913}
12914
12915class size multi_id::size() const
12916{
12917 auto res = isl_multi_id_size(multi: get());
12918 return manage(val: res);
12919}
12920
12921isl::space multi_id::space() const
12922{
12923 auto res = isl_multi_id_get_space(multi: get());
12924 return manage(ptr: res);
12925}
12926
12927isl::space multi_id::get_space() const
12928{
12929 return space();
12930}
12931
12932inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
12933{
12934 char *str = isl_multi_id_to_str(mi: obj.get());
12935 if (!str) {
12936 os.setstate(std::ios_base::badbit);
12937 return os;
12938 }
12939 os << str;
12940 free(ptr: str);
12941 return os;
12942}
12943
12944// implementations for isl::multi_pw_aff
12945multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
12946 return multi_pw_aff(ptr);
12947}
12948multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
12949 ptr = isl_multi_pw_aff_copy(multi: ptr);
12950 return multi_pw_aff(ptr);
12951}
12952
12953multi_pw_aff::multi_pw_aff()
12954 : ptr(nullptr) {}
12955
12956multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
12957 : ptr(nullptr)
12958{
12959 ptr = obj.copy();
12960}
12961
12962multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
12963 : ptr(ptr) {}
12964
12965multi_pw_aff::multi_pw_aff(isl::aff aff)
12966{
12967 auto res = isl_multi_pw_aff_from_aff(aff: aff.release());
12968 ptr = res;
12969}
12970
12971multi_pw_aff::multi_pw_aff(isl::multi_aff ma)
12972{
12973 auto res = isl_multi_pw_aff_from_multi_aff(ma: ma.release());
12974 ptr = res;
12975}
12976
12977multi_pw_aff::multi_pw_aff(isl::pw_aff pa)
12978{
12979 auto res = isl_multi_pw_aff_from_pw_aff(pa: pa.release());
12980 ptr = res;
12981}
12982
12983multi_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: space.release(), list: list.release());
12986 ptr = res;
12987}
12988
12989multi_pw_aff::multi_pw_aff(isl::pw_multi_aff pma)
12990{
12991 auto res = isl_multi_pw_aff_from_pw_multi_aff(pma: pma.release());
12992 ptr = res;
12993}
12994
12995multi_pw_aff::multi_pw_aff(isl::ctx ctx, const std::string &str)
12996{
12997 auto res = isl_multi_pw_aff_read_from_str(ctx: ctx.release(), str: str.c_str());
12998 ptr = res;
12999}
13000
13001multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
13002 std::swap(a&: this->ptr, b&: obj.ptr);
13003 return *this;
13004}
13005
13006multi_pw_aff::~multi_pw_aff() {
13007 if (ptr)
13008 isl_multi_pw_aff_free(multi: ptr);
13009}
13010
13011__isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
13012 return isl_multi_pw_aff_copy(multi: ptr);
13013}
13014
13015__isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
13016 return ptr;
13017}
13018
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
13025bool multi_pw_aff::is_null() const {
13026 return ptr == nullptr;
13027}
13028
13029isl::ctx multi_pw_aff::ctx() const {
13030 return isl::ctx(isl_multi_pw_aff_get_ctx(multi: ptr));
13031}
13032
13033isl::multi_pw_aff multi_pw_aff::add(isl::multi_pw_aff multi2) const
13034{
13035 auto res = isl_multi_pw_aff_add(multi1: copy(), multi2: multi2.release());
13036 return manage(ptr: res);
13037}
13038
13039isl::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
13044isl::multi_pw_aff multi_pw_aff::add(const isl::aff &multi2) const
13045{
13046 return this->add(multi2: isl::multi_pw_aff(multi2));
13047}
13048
13049isl::multi_pw_aff multi_pw_aff::add(const isl::multi_aff &multi2) const
13050{
13051 return this->add(multi2: isl::multi_pw_aff(multi2));
13052}
13053
13054isl::multi_pw_aff multi_pw_aff::add(const isl::pw_aff &multi2) const
13055{
13056 return this->add(multi2: isl::multi_pw_aff(multi2));
13057}
13058
13059isl::multi_pw_aff multi_pw_aff::add(const isl::pw_multi_aff &multi2) const
13060{
13061 return this->add(multi2: isl::multi_pw_aff(multi2));
13062}
13063
13064isl::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(mpa: copy(), mv: mv.release());
13067 return manage(ptr: res);
13068}
13069
13070isl::multi_pw_aff multi_pw_aff::add_constant(isl::val v) const
13071{
13072 auto res = isl_multi_pw_aff_add_constant_val(mpa: copy(), v: v.release());
13073 return manage(ptr: res);
13074}
13075
13076isl::multi_pw_aff multi_pw_aff::add_constant(long v) const
13077{
13078 return this->add_constant(v: isl::val(ctx(), v));
13079}
13080
13081isl::map multi_pw_aff::as_map() const
13082{
13083 auto res = isl_multi_pw_aff_as_map(mpa: copy());
13084 return manage(ptr: res);
13085}
13086
13087isl::multi_aff multi_pw_aff::as_multi_aff() const
13088{
13089 auto res = isl_multi_pw_aff_as_multi_aff(mpa: copy());
13090 return manage(ptr: res);
13091}
13092
13093isl::set multi_pw_aff::as_set() const
13094{
13095 auto res = isl_multi_pw_aff_as_set(mpa: copy());
13096 return manage(ptr: res);
13097}
13098
13099isl::pw_aff multi_pw_aff::at(int pos) const
13100{
13101 auto res = isl_multi_pw_aff_get_at(multi: get(), pos);
13102 return manage(ptr: res);
13103}
13104
13105isl::pw_aff multi_pw_aff::get_at(int pos) const
13106{
13107 return at(pos);
13108}
13109
13110isl::set multi_pw_aff::bind(isl::multi_id tuple) const
13111{
13112 auto res = isl_multi_pw_aff_bind(mpa: copy(), tuple: tuple.release());
13113 return manage(ptr: res);
13114}
13115
13116isl::multi_pw_aff multi_pw_aff::bind_domain(isl::multi_id tuple) const
13117{
13118 auto res = isl_multi_pw_aff_bind_domain(multi: copy(), tuple: tuple.release());
13119 return manage(ptr: res);
13120}
13121
13122isl::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(multi: copy(), tuple: tuple.release());
13125 return manage(ptr: res);
13126}
13127
13128isl::multi_pw_aff multi_pw_aff::coalesce() const
13129{
13130 auto res = isl_multi_pw_aff_coalesce(mpa: copy());
13131 return manage(ptr: res);
13132}
13133
13134class size multi_pw_aff::dim(isl::dim type) const
13135{
13136 auto res = isl_multi_pw_aff_dim(multi: get(), type: static_cast<enum isl_dim_type>(type));
13137 return manage(val: res);
13138}
13139
13140isl::set multi_pw_aff::domain() const
13141{
13142 auto res = isl_multi_pw_aff_domain(mpa: copy());
13143 return manage(ptr: res);
13144}
13145
13146isl::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(multi1: copy(), multi2: multi2.release());
13149 return manage(ptr: res);
13150}
13151
13152isl::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
13157isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::aff &multi2) const
13158{
13159 return this->flat_range_product(multi2: isl::multi_pw_aff(multi2));
13160}
13161
13162isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::multi_aff &multi2) const
13163{
13164 return this->flat_range_product(multi2: isl::multi_pw_aff(multi2));
13165}
13166
13167isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::pw_aff &multi2) const
13168{
13169 return this->flat_range_product(multi2: isl::multi_pw_aff(multi2));
13170}
13171
13172isl::multi_pw_aff multi_pw_aff::flat_range_product(const isl::pw_multi_aff &multi2) const
13173{
13174 return this->flat_range_product(multi2: isl::multi_pw_aff(multi2));
13175}
13176
13177isl::multi_pw_aff multi_pw_aff::gist(isl::set set) const
13178{
13179 auto res = isl_multi_pw_aff_gist(mpa: copy(), set: set.release());
13180 return manage(ptr: res);
13181}
13182
13183isl::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
13188isl::multi_pw_aff multi_pw_aff::gist(const isl::basic_set &set) const
13189{
13190 return this->gist(set: isl::set(set));
13191}
13192
13193isl::multi_pw_aff multi_pw_aff::gist(const isl::point &set) const
13194{
13195 return this->gist(set: isl::set(set));
13196}
13197
13198boolean multi_pw_aff::has_range_tuple_id() const
13199{
13200 auto res = isl_multi_pw_aff_has_range_tuple_id(multi: get());
13201 return manage(val: res);
13202}
13203
13204isl::multi_pw_aff multi_pw_aff::identity(isl::space space)
13205{
13206 auto res = isl_multi_pw_aff_identity(space: space.release());
13207 return manage(ptr: res);
13208}
13209
13210isl::multi_pw_aff multi_pw_aff::identity() const
13211{
13212 auto res = isl_multi_pw_aff_identity_multi_pw_aff(multi: copy());
13213 return manage(ptr: res);
13214}
13215
13216isl::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: space.release());
13219 return manage(ptr: res);
13220}
13221
13222isl::multi_pw_aff multi_pw_aff::insert_domain(isl::space domain) const
13223{
13224 auto res = isl_multi_pw_aff_insert_domain(multi: copy(), domain: domain.release());
13225 return manage(ptr: res);
13226}
13227
13228isl::multi_pw_aff multi_pw_aff::intersect_domain(isl::set domain) const
13229{
13230 auto res = isl_multi_pw_aff_intersect_domain(mpa: copy(), domain: domain.release());
13231 return manage(ptr: res);
13232}
13233
13234isl::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
13239isl::multi_pw_aff multi_pw_aff::intersect_domain(const isl::basic_set &domain) const
13240{
13241 return this->intersect_domain(domain: isl::set(domain));
13242}
13243
13244isl::multi_pw_aff multi_pw_aff::intersect_domain(const isl::point &domain) const
13245{
13246 return this->intersect_domain(domain: isl::set(domain));
13247}
13248
13249isl::multi_pw_aff multi_pw_aff::intersect_params(isl::set set) const
13250{
13251 auto res = isl_multi_pw_aff_intersect_params(mpa: copy(), set: set.release());
13252 return manage(ptr: res);
13253}
13254
13255boolean multi_pw_aff::involves_nan() const
13256{
13257 auto res = isl_multi_pw_aff_involves_nan(multi: get());
13258 return manage(val: res);
13259}
13260
13261boolean multi_pw_aff::involves_param(const isl::id &id) const
13262{
13263 auto res = isl_multi_pw_aff_involves_param_id(multi: get(), id: id.get());
13264 return manage(val: res);
13265}
13266
13267boolean multi_pw_aff::involves_param(const std::string &id) const
13268{
13269 return this->involves_param(id: isl::id(ctx(), id));
13270}
13271
13272boolean multi_pw_aff::involves_param(const isl::id_list &list) const
13273{
13274 auto res = isl_multi_pw_aff_involves_param_id_list(multi: get(), list: list.get());
13275 return manage(val: res);
13276}
13277
13278boolean multi_pw_aff::isa_multi_aff() const
13279{
13280 auto res = isl_multi_pw_aff_isa_multi_aff(mpa: get());
13281 return manage(val: res);
13282}
13283
13284isl::pw_aff_list multi_pw_aff::list() const
13285{
13286 auto res = isl_multi_pw_aff_get_list(multi: get());
13287 return manage(ptr: res);
13288}
13289
13290isl::pw_aff_list multi_pw_aff::get_list() const
13291{
13292 return list();
13293}
13294
13295isl::multi_pw_aff multi_pw_aff::max(isl::multi_pw_aff multi2) const
13296{
13297 auto res = isl_multi_pw_aff_max(multi1: copy(), multi2: multi2.release());
13298 return manage(ptr: res);
13299}
13300
13301isl::multi_val multi_pw_aff::max_multi_val() const
13302{
13303 auto res = isl_multi_pw_aff_max_multi_val(mpa: copy());
13304 return manage(ptr: res);
13305}
13306
13307isl::multi_pw_aff multi_pw_aff::min(isl::multi_pw_aff multi2) const
13308{
13309 auto res = isl_multi_pw_aff_min(multi1: copy(), multi2: multi2.release());
13310 return manage(ptr: res);
13311}
13312
13313isl::multi_val multi_pw_aff::min_multi_val() const
13314{
13315 auto res = isl_multi_pw_aff_min_multi_val(mpa: copy());
13316 return manage(ptr: res);
13317}
13318
13319isl::multi_pw_aff multi_pw_aff::neg() const
13320{
13321 auto res = isl_multi_pw_aff_neg(multi: copy());
13322 return manage(ptr: res);
13323}
13324
13325boolean multi_pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
13326{
13327 auto res = isl_multi_pw_aff_plain_is_equal(multi1: get(), multi2: multi2.get());
13328 return manage(val: res);
13329}
13330
13331boolean 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
13336boolean multi_pw_aff::plain_is_equal(const isl::aff &multi2) const
13337{
13338 return this->plain_is_equal(multi2: isl::multi_pw_aff(multi2));
13339}
13340
13341boolean multi_pw_aff::plain_is_equal(const isl::multi_aff &multi2) const
13342{
13343 return this->plain_is_equal(multi2: isl::multi_pw_aff(multi2));
13344}
13345
13346boolean multi_pw_aff::plain_is_equal(const isl::pw_aff &multi2) const
13347{
13348 return this->plain_is_equal(multi2: isl::multi_pw_aff(multi2));
13349}
13350
13351boolean multi_pw_aff::plain_is_equal(const isl::pw_multi_aff &multi2) const
13352{
13353 return this->plain_is_equal(multi2: isl::multi_pw_aff(multi2));
13354}
13355
13356isl::multi_pw_aff multi_pw_aff::product(isl::multi_pw_aff multi2) const
13357{
13358 auto res = isl_multi_pw_aff_product(multi1: copy(), multi2: multi2.release());
13359 return manage(ptr: res);
13360}
13361
13362isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_aff ma) const
13363{
13364 auto res = isl_multi_pw_aff_pullback_multi_aff(mpa: copy(), ma: ma.release());
13365 return manage(ptr: res);
13366}
13367
13368isl::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(mpa1: copy(), mpa2: mpa2.release());
13371 return manage(ptr: res);
13372}
13373
13374isl::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(mpa: copy(), pma: pma.release());
13377 return manage(ptr: res);
13378}
13379
13380isl::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
13385isl::multi_pw_aff multi_pw_aff::range_product(isl::multi_pw_aff multi2) const
13386{
13387 auto res = isl_multi_pw_aff_range_product(multi1: copy(), multi2: multi2.release());
13388 return manage(ptr: res);
13389}
13390
13391isl::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
13396isl::multi_pw_aff multi_pw_aff::range_product(const isl::aff &multi2) const
13397{
13398 return this->range_product(multi2: isl::multi_pw_aff(multi2));
13399}
13400
13401isl::multi_pw_aff multi_pw_aff::range_product(const isl::multi_aff &multi2) const
13402{
13403 return this->range_product(multi2: isl::multi_pw_aff(multi2));
13404}
13405
13406isl::multi_pw_aff multi_pw_aff::range_product(const isl::pw_aff &multi2) const
13407{
13408 return this->range_product(multi2: isl::multi_pw_aff(multi2));
13409}
13410
13411isl::multi_pw_aff multi_pw_aff::range_product(const isl::pw_multi_aff &multi2) const
13412{
13413 return this->range_product(multi2: isl::multi_pw_aff(multi2));
13414}
13415
13416isl::id multi_pw_aff::range_tuple_id() const
13417{
13418 auto res = isl_multi_pw_aff_get_range_tuple_id(multi: get());
13419 return manage(ptr: res);
13420}
13421
13422isl::id multi_pw_aff::get_range_tuple_id() const
13423{
13424 return range_tuple_id();
13425}
13426
13427isl::multi_pw_aff multi_pw_aff::reset_range_tuple_id() const
13428{
13429 auto res = isl_multi_pw_aff_reset_range_tuple_id(multi: copy());
13430 return manage(ptr: res);
13431}
13432
13433isl::multi_pw_aff multi_pw_aff::reset_tuple_id(isl::dim type) const
13434{
13435 auto res = isl_multi_pw_aff_reset_tuple_id(multi: copy(), type: static_cast<enum isl_dim_type>(type));
13436 return manage(ptr: res);
13437}
13438
13439isl::multi_pw_aff multi_pw_aff::scale(isl::multi_val mv) const
13440{
13441 auto res = isl_multi_pw_aff_scale_multi_val(multi: copy(), mv: mv.release());
13442 return manage(ptr: res);
13443}
13444
13445isl::multi_pw_aff multi_pw_aff::scale(isl::val v) const
13446{
13447 auto res = isl_multi_pw_aff_scale_val(multi: copy(), v: v.release());
13448 return manage(ptr: res);
13449}
13450
13451isl::multi_pw_aff multi_pw_aff::scale(long v) const
13452{
13453 return this->scale(v: isl::val(ctx(), v));
13454}
13455
13456isl::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(multi: copy(), mv: mv.release());
13459 return manage(ptr: res);
13460}
13461
13462isl::multi_pw_aff multi_pw_aff::scale_down(isl::val v) const
13463{
13464 auto res = isl_multi_pw_aff_scale_down_val(multi: copy(), v: v.release());
13465 return manage(ptr: res);
13466}
13467
13468isl::multi_pw_aff multi_pw_aff::scale_down(long v) const
13469{
13470 return this->scale_down(v: isl::val(ctx(), v));
13471}
13472
13473isl::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(multi: copy(), pos, el: el.release());
13476 return manage(ptr: res);
13477}
13478
13479isl::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
13484isl::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(multi: copy(), pos, el: el.release());
13487 return manage(ptr: res);
13488}
13489
13490isl::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(multi: copy(), id: id.release());
13493 return manage(ptr: res);
13494}
13495
13496isl::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
13501isl::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
13506class size multi_pw_aff::size() const
13507{
13508 auto res = isl_multi_pw_aff_size(multi: get());
13509 return manage(val: res);
13510}
13511
13512isl::space multi_pw_aff::space() const
13513{
13514 auto res = isl_multi_pw_aff_get_space(multi: get());
13515 return manage(ptr: res);
13516}
13517
13518isl::space multi_pw_aff::get_space() const
13519{
13520 return space();
13521}
13522
13523isl::multi_pw_aff multi_pw_aff::sub(isl::multi_pw_aff multi2) const
13524{
13525 auto res = isl_multi_pw_aff_sub(multi1: copy(), multi2: multi2.release());
13526 return manage(ptr: res);
13527}
13528
13529isl::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
13534isl::multi_pw_aff multi_pw_aff::sub(const isl::aff &multi2) const
13535{
13536 return this->sub(multi2: isl::multi_pw_aff(multi2));
13537}
13538
13539isl::multi_pw_aff multi_pw_aff::sub(const isl::multi_aff &multi2) const
13540{
13541 return this->sub(multi2: isl::multi_pw_aff(multi2));
13542}
13543
13544isl::multi_pw_aff multi_pw_aff::sub(const isl::pw_aff &multi2) const
13545{
13546 return this->sub(multi2: isl::multi_pw_aff(multi2));
13547}
13548
13549isl::multi_pw_aff multi_pw_aff::sub(const isl::pw_multi_aff &multi2) const
13550{
13551 return this->sub(multi2: isl::multi_pw_aff(multi2));
13552}
13553
13554isl::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(multi: copy(), domain: domain.release());
13557 return manage(ptr: res);
13558}
13559
13560isl::multi_pw_aff multi_pw_aff::union_add(isl::multi_pw_aff mpa2) const
13561{
13562 auto res = isl_multi_pw_aff_union_add(mpa1: copy(), mpa2: mpa2.release());
13563 return manage(ptr: res);
13564}
13565
13566isl::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
13571isl::multi_pw_aff multi_pw_aff::union_add(const isl::aff &mpa2) const
13572{
13573 return this->union_add(mpa2: isl::multi_pw_aff(mpa2));
13574}
13575
13576isl::multi_pw_aff multi_pw_aff::union_add(const isl::multi_aff &mpa2) const
13577{
13578 return this->union_add(mpa2: isl::multi_pw_aff(mpa2));
13579}
13580
13581isl::multi_pw_aff multi_pw_aff::union_add(const isl::pw_aff &mpa2) const
13582{
13583 return this->union_add(mpa2: isl::multi_pw_aff(mpa2));
13584}
13585
13586isl::multi_pw_aff multi_pw_aff::union_add(const isl::pw_multi_aff &mpa2) const
13587{
13588 return this->union_add(mpa2: isl::multi_pw_aff(mpa2));
13589}
13590
13591isl::multi_pw_aff multi_pw_aff::zero(isl::space space)
13592{
13593 auto res = isl_multi_pw_aff_zero(space: space.release());
13594 return manage(ptr: res);
13595}
13596
13597inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
13598{
13599 char *str = isl_multi_pw_aff_to_str(mpa: obj.get());
13600 if (!str) {
13601 os.setstate(std::ios_base::badbit);
13602 return os;
13603 }
13604 os << str;
13605 free(ptr: str);
13606 return os;
13607}
13608
13609// implementations for isl::multi_union_pw_aff
13610multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
13611 return multi_union_pw_aff(ptr);
13612}
13613multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
13614 ptr = isl_multi_union_pw_aff_copy(multi: ptr);
13615 return multi_union_pw_aff(ptr);
13616}
13617
13618multi_union_pw_aff::multi_union_pw_aff()
13619 : ptr(nullptr) {}
13620
13621multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
13622 : ptr(nullptr)
13623{
13624 ptr = obj.copy();
13625}
13626
13627multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
13628 : ptr(ptr) {}
13629
13630multi_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: mpa.release());
13633 ptr = res;
13634}
13635
13636multi_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: upa.release());
13639 ptr = res;
13640}
13641
13642multi_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: space.release(), list: list.release());
13645 ptr = res;
13646}
13647
13648multi_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: upma.release());
13651 ptr = res;
13652}
13653
13654multi_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: ctx.release(), str: str.c_str());
13657 ptr = res;
13658}
13659
13660multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
13661 std::swap(a&: this->ptr, b&: obj.ptr);
13662 return *this;
13663}
13664
13665multi_union_pw_aff::~multi_union_pw_aff() {
13666 if (ptr)
13667 isl_multi_union_pw_aff_free(multi: ptr);
13668}
13669
13670__isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
13671 return isl_multi_union_pw_aff_copy(multi: ptr);
13672}
13673
13674__isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
13675 return ptr;
13676}
13677
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
13684bool multi_union_pw_aff::is_null() const {
13685 return ptr == nullptr;
13686}
13687
13688isl::ctx multi_union_pw_aff::ctx() const {
13689 return isl::ctx(isl_multi_union_pw_aff_get_ctx(multi: ptr));
13690}
13691
13692isl::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(multi1: copy(), multi2: multi2.release());
13695 return manage(ptr: res);
13696}
13697
13698isl::union_pw_aff multi_union_pw_aff::at(int pos) const
13699{
13700 auto res = isl_multi_union_pw_aff_get_at(multi: get(), pos);
13701 return manage(ptr: res);
13702}
13703
13704isl::union_pw_aff multi_union_pw_aff::get_at(int pos) const
13705{
13706 return at(pos);
13707}
13708
13709isl::union_set multi_union_pw_aff::bind(isl::multi_id tuple) const
13710{
13711 auto res = isl_multi_union_pw_aff_bind(mupa: copy(), tuple: tuple.release());
13712 return manage(ptr: res);
13713}
13714
13715isl::multi_union_pw_aff multi_union_pw_aff::coalesce() const
13716{
13717 auto res = isl_multi_union_pw_aff_coalesce(mupa: copy());
13718 return manage(ptr: res);
13719}
13720
13721class size multi_union_pw_aff::dim(isl::dim type) const
13722{
13723 auto res = isl_multi_union_pw_aff_dim(multi: get(), type: static_cast<enum isl_dim_type>(type));
13724 return manage(val: res);
13725}
13726
13727isl::union_set multi_union_pw_aff::domain() const
13728{
13729 auto res = isl_multi_union_pw_aff_domain(mupa: copy());
13730 return manage(ptr: res);
13731}
13732
13733isl::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(multi1: copy(), multi2: multi2.release());
13736 return manage(ptr: res);
13737}
13738
13739isl::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: umap.release());
13742 return manage(ptr: res);
13743}
13744
13745isl::multi_union_pw_aff multi_union_pw_aff::gist(isl::union_set context) const
13746{
13747 auto res = isl_multi_union_pw_aff_gist(mupa: copy(), context: context.release());
13748 return manage(ptr: res);
13749}
13750
13751boolean multi_union_pw_aff::has_range_tuple_id() const
13752{
13753 auto res = isl_multi_union_pw_aff_has_range_tuple_id(multi: get());
13754 return manage(val: res);
13755}
13756
13757isl::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(mupa: copy(), uset: uset.release());
13760 return manage(ptr: res);
13761}
13762
13763isl::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(mupa: copy(), params: params.release());
13766 return manage(ptr: res);
13767}
13768
13769boolean multi_union_pw_aff::involves_nan() const
13770{
13771 auto res = isl_multi_union_pw_aff_involves_nan(multi: get());
13772 return manage(val: res);
13773}
13774
13775isl::union_pw_aff_list multi_union_pw_aff::list() const
13776{
13777 auto res = isl_multi_union_pw_aff_get_list(multi: get());
13778 return manage(ptr: res);
13779}
13780
13781isl::union_pw_aff_list multi_union_pw_aff::get_list() const
13782{
13783 return list();
13784}
13785
13786isl::multi_union_pw_aff multi_union_pw_aff::neg() const
13787{
13788 auto res = isl_multi_union_pw_aff_neg(multi: copy());
13789 return manage(ptr: res);
13790}
13791
13792boolean 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(multi1: get(), multi2: multi2.get());
13795 return manage(val: res);
13796}
13797
13798isl::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(mupa: copy(), upma: upma.release());
13801 return manage(ptr: res);
13802}
13803
13804isl::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(multi1: copy(), multi2: multi2.release());
13807 return manage(ptr: res);
13808}
13809
13810isl::id multi_union_pw_aff::range_tuple_id() const
13811{
13812 auto res = isl_multi_union_pw_aff_get_range_tuple_id(multi: get());
13813 return manage(ptr: res);
13814}
13815
13816isl::id multi_union_pw_aff::get_range_tuple_id() const
13817{
13818 return range_tuple_id();
13819}
13820
13821isl::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(multi: copy());
13824 return manage(ptr: res);
13825}
13826
13827isl::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(multi: copy(), type: static_cast<enum isl_dim_type>(type));
13830 return manage(ptr: res);
13831}
13832
13833isl::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(multi: copy(), mv: mv.release());
13836 return manage(ptr: res);
13837}
13838
13839isl::multi_union_pw_aff multi_union_pw_aff::scale(isl::val v) const
13840{
13841 auto res = isl_multi_union_pw_aff_scale_val(multi: copy(), v: v.release());
13842 return manage(ptr: res);
13843}
13844
13845isl::multi_union_pw_aff multi_union_pw_aff::scale(long v) const
13846{
13847 return this->scale(v: isl::val(ctx(), v));
13848}
13849
13850isl::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(multi: copy(), mv: mv.release());
13853 return manage(ptr: res);
13854}
13855
13856isl::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(multi: copy(), v: v.release());
13859 return manage(ptr: res);
13860}
13861
13862isl::multi_union_pw_aff multi_union_pw_aff::scale_down(long v) const
13863{
13864 return this->scale_down(v: isl::val(ctx(), v));
13865}
13866
13867isl::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(multi: copy(), pos, el: el.release());
13870 return manage(ptr: res);
13871}
13872
13873isl::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(multi: copy(), id: id.release());
13876 return manage(ptr: res);
13877}
13878
13879isl::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
13884isl::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(multi: copy(), pos, el: el.release());
13887 return manage(ptr: res);
13888}
13889
13890class size multi_union_pw_aff::size() const
13891{
13892 auto res = isl_multi_union_pw_aff_size(multi: get());
13893 return manage(val: res);
13894}
13895
13896isl::space multi_union_pw_aff::space() const
13897{
13898 auto res = isl_multi_union_pw_aff_get_space(multi: get());
13899 return manage(ptr: res);
13900}
13901
13902isl::space multi_union_pw_aff::get_space() const
13903{
13904 return space();
13905}
13906
13907isl::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(multi1: copy(), multi2: multi2.release());
13910 return manage(ptr: res);
13911}
13912
13913isl::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(mupa1: copy(), mupa2: mupa2.release());
13916 return manage(ptr: res);
13917}
13918
13919isl::multi_union_pw_aff multi_union_pw_aff::zero(isl::space space)
13920{
13921 auto res = isl_multi_union_pw_aff_zero(space: space.release());
13922 return manage(ptr: res);
13923}
13924
13925inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
13926{
13927 char *str = isl_multi_union_pw_aff_to_str(mupa: obj.get());
13928 if (!str) {
13929 os.setstate(std::ios_base::badbit);
13930 return os;
13931 }
13932 os << str;
13933 free(ptr: str);
13934 return os;
13935}
13936
13937// implementations for isl::multi_val
13938multi_val manage(__isl_take isl_multi_val *ptr) {
13939 return multi_val(ptr);
13940}
13941multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
13942 ptr = isl_multi_val_copy(multi: ptr);
13943 return multi_val(ptr);
13944}
13945
13946multi_val::multi_val()
13947 : ptr(nullptr) {}
13948
13949multi_val::multi_val(const multi_val &obj)
13950 : ptr(nullptr)
13951{
13952 ptr = obj.copy();
13953}
13954
13955multi_val::multi_val(__isl_take isl_multi_val *ptr)
13956 : ptr(ptr) {}
13957
13958multi_val::multi_val(isl::space space, isl::val_list list)
13959{
13960 auto res = isl_multi_val_from_val_list(space: space.release(), list: list.release());
13961 ptr = res;
13962}
13963
13964multi_val::multi_val(isl::ctx ctx, const std::string &str)
13965{
13966 auto res = isl_multi_val_read_from_str(ctx: ctx.release(), str: str.c_str());
13967 ptr = res;
13968}
13969
13970multi_val &multi_val::operator=(multi_val obj) {
13971 std::swap(a&: this->ptr, b&: obj.ptr);
13972 return *this;
13973}
13974
13975multi_val::~multi_val() {
13976 if (ptr)
13977 isl_multi_val_free(multi: ptr);
13978}
13979
13980__isl_give isl_multi_val *multi_val::copy() const & {
13981 return isl_multi_val_copy(multi: ptr);
13982}
13983
13984__isl_keep isl_multi_val *multi_val::get() const {
13985 return ptr;
13986}
13987
13988__isl_give isl_multi_val *multi_val::release() {
13989 isl_multi_val *tmp = ptr;
13990 ptr = nullptr;
13991 return tmp;
13992}
13993
13994bool multi_val::is_null() const {
13995 return ptr == nullptr;
13996}
13997
13998isl::ctx multi_val::ctx() const {
13999 return isl::ctx(isl_multi_val_get_ctx(multi: ptr));
14000}
14001
14002isl::multi_val multi_val::add(isl::multi_val multi2) const
14003{
14004 auto res = isl_multi_val_add(multi1: copy(), multi2: multi2.release());
14005 return manage(ptr: res);
14006}
14007
14008isl::multi_val multi_val::add(isl::val v) const
14009{
14010 auto res = isl_multi_val_add_val(mv: copy(), v: v.release());
14011 return manage(ptr: res);
14012}
14013
14014isl::multi_val multi_val::add(long v) const
14015{
14016 return this->add(v: isl::val(ctx(), v));
14017}
14018
14019isl::val multi_val::at(int pos) const
14020{
14021 auto res = isl_multi_val_get_at(multi: get(), pos);
14022 return manage(ptr: res);
14023}
14024
14025isl::val multi_val::get_at(int pos) const
14026{
14027 return at(pos);
14028}
14029
14030class size multi_val::dim(isl::dim type) const
14031{
14032 auto res = isl_multi_val_dim(multi: get(), type: static_cast<enum isl_dim_type>(type));
14033 return manage(val: res);
14034}
14035
14036isl::multi_val multi_val::flat_range_product(isl::multi_val multi2) const
14037{
14038 auto res = isl_multi_val_flat_range_product(multi1: copy(), multi2: multi2.release());
14039 return manage(ptr: res);
14040}
14041
14042boolean multi_val::has_range_tuple_id() const
14043{
14044 auto res = isl_multi_val_has_range_tuple_id(multi: get());
14045 return manage(val: res);
14046}
14047
14048boolean multi_val::involves_nan() const
14049{
14050 auto res = isl_multi_val_involves_nan(multi: get());
14051 return manage(val: res);
14052}
14053
14054isl::val_list multi_val::list() const
14055{
14056 auto res = isl_multi_val_get_list(multi: get());
14057 return manage(ptr: res);
14058}
14059
14060isl::val_list multi_val::get_list() const
14061{
14062 return list();
14063}
14064
14065isl::multi_val multi_val::max(isl::multi_val multi2) const
14066{
14067 auto res = isl_multi_val_max(multi1: copy(), multi2: multi2.release());
14068 return manage(ptr: res);
14069}
14070
14071isl::multi_val multi_val::min(isl::multi_val multi2) const
14072{
14073 auto res = isl_multi_val_min(multi1: copy(), multi2: multi2.release());
14074 return manage(ptr: res);
14075}
14076
14077isl::multi_val multi_val::neg() const
14078{
14079 auto res = isl_multi_val_neg(multi: copy());
14080 return manage(ptr: res);
14081}
14082
14083boolean multi_val::plain_is_equal(const isl::multi_val &multi2) const
14084{
14085 auto res = isl_multi_val_plain_is_equal(multi1: get(), multi2: multi2.get());
14086 return manage(val: res);
14087}
14088
14089isl::multi_val multi_val::product(isl::multi_val multi2) const
14090{
14091 auto res = isl_multi_val_product(multi1: copy(), multi2: multi2.release());
14092 return manage(ptr: res);
14093}
14094
14095isl::multi_val multi_val::range_product(isl::multi_val multi2) const
14096{
14097 auto res = isl_multi_val_range_product(multi1: copy(), multi2: multi2.release());
14098 return manage(ptr: res);
14099}
14100
14101isl::id multi_val::range_tuple_id() const
14102{
14103 auto res = isl_multi_val_get_range_tuple_id(multi: get());
14104 return manage(ptr: res);
14105}
14106
14107isl::id multi_val::get_range_tuple_id() const
14108{
14109 return range_tuple_id();
14110}
14111
14112isl::multi_val multi_val::reset_range_tuple_id() const
14113{
14114 auto res = isl_multi_val_reset_range_tuple_id(multi: copy());
14115 return manage(ptr: res);
14116}
14117
14118isl::multi_val multi_val::reset_tuple_id(isl::dim type) const
14119{
14120 auto res = isl_multi_val_reset_tuple_id(multi: copy(), type: static_cast<enum isl_dim_type>(type));
14121 return manage(ptr: res);
14122}
14123
14124isl::multi_val multi_val::scale(isl::multi_val mv) const
14125{
14126 auto res = isl_multi_val_scale_multi_val(multi: copy(), mv: mv.release());
14127 return manage(ptr: res);
14128}
14129
14130isl::multi_val multi_val::scale(isl::val v) const
14131{
14132 auto res = isl_multi_val_scale_val(multi: copy(), v: v.release());
14133 return manage(ptr: res);
14134}
14135
14136isl::multi_val multi_val::scale(long v) const
14137{
14138 return this->scale(v: isl::val(ctx(), v));
14139}
14140
14141isl::multi_val multi_val::scale_down(isl::multi_val mv) const
14142{
14143 auto res = isl_multi_val_scale_down_multi_val(multi: copy(), mv: mv.release());
14144 return manage(ptr: res);
14145}
14146
14147isl::multi_val multi_val::scale_down(isl::val v) const
14148{
14149 auto res = isl_multi_val_scale_down_val(multi: copy(), v: v.release());
14150 return manage(ptr: res);
14151}
14152
14153isl::multi_val multi_val::scale_down(long v) const
14154{
14155 return this->scale_down(v: isl::val(ctx(), v));
14156}
14157
14158isl::multi_val multi_val::set_at(int pos, isl::val el) const
14159{
14160 auto res = isl_multi_val_set_at(multi: copy(), pos, el: el.release());
14161 return manage(ptr: res);
14162}
14163
14164isl::multi_val multi_val::set_at(int pos, long el) const
14165{
14166 return this->set_at(pos, el: isl::val(ctx(), el));
14167}
14168
14169isl::multi_val multi_val::set_range_tuple(isl::id id) const
14170{
14171 auto res = isl_multi_val_set_range_tuple_id(multi: copy(), id: id.release());
14172 return manage(ptr: res);
14173}
14174
14175isl::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
14180isl::multi_val multi_val::set_val(int pos, isl::val el) const
14181{
14182 auto res = isl_multi_val_set_val(multi: copy(), pos, el: el.release());
14183 return manage(ptr: res);
14184}
14185
14186isl::multi_val multi_val::set_val(int pos, long el) const
14187{
14188 return this->set_val(pos, el: isl::val(ctx(), el));
14189}
14190
14191class size multi_val::size() const
14192{
14193 auto res = isl_multi_val_size(multi: get());
14194 return manage(val: res);
14195}
14196
14197isl::space multi_val::space() const
14198{
14199 auto res = isl_multi_val_get_space(multi: get());
14200 return manage(ptr: res);
14201}
14202
14203isl::space multi_val::get_space() const
14204{
14205 return space();
14206}
14207
14208isl::multi_val multi_val::sub(isl::multi_val multi2) const
14209{
14210 auto res = isl_multi_val_sub(multi1: copy(), multi2: multi2.release());
14211 return manage(ptr: res);
14212}
14213
14214isl::multi_val multi_val::zero(isl::space space)
14215{
14216 auto res = isl_multi_val_zero(space: space.release());
14217 return manage(ptr: res);
14218}
14219
14220inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
14221{
14222 char *str = isl_multi_val_to_str(mv: obj.get());
14223 if (!str) {
14224 os.setstate(std::ios_base::badbit);
14225 return os;
14226 }
14227 os << str;
14228 free(ptr: str);
14229 return os;
14230}
14231
14232// implementations for isl::point
14233point manage(__isl_take isl_point *ptr) {
14234 return point(ptr);
14235}
14236point manage_copy(__isl_keep isl_point *ptr) {
14237 ptr = isl_point_copy(pnt: ptr);
14238 return point(ptr);
14239}
14240
14241point::point()
14242 : ptr(nullptr) {}
14243
14244point::point(const point &obj)
14245 : ptr(nullptr)
14246{
14247 ptr = obj.copy();
14248}
14249
14250point::point(__isl_take isl_point *ptr)
14251 : ptr(ptr) {}
14252
14253point::point(isl::space space)
14254{
14255 auto res = isl_point_zero(space: space.release());
14256 ptr = res;
14257}
14258
14259point &point::operator=(point obj) {
14260 std::swap(a&: this->ptr, b&: obj.ptr);
14261 return *this;
14262}
14263
14264point::~point() {
14265 if (ptr)
14266 isl_point_free(pnt: ptr);
14267}
14268
14269__isl_give isl_point *point::copy() const & {
14270 return isl_point_copy(pnt: ptr);
14271}
14272
14273__isl_keep isl_point *point::get() const {
14274 return ptr;
14275}
14276
14277__isl_give isl_point *point::release() {
14278 isl_point *tmp = ptr;
14279 ptr = nullptr;
14280 return tmp;
14281}
14282
14283bool point::is_null() const {
14284 return ptr == nullptr;
14285}
14286
14287isl::ctx point::ctx() const {
14288 return isl::ctx(isl_point_get_ctx(pnt: ptr));
14289}
14290
14291isl::set point::add_constraint(const isl::constraint &constraint) const
14292{
14293 return isl::basic_set(*this).add_constraint(constraint);
14294}
14295
14296isl::set point::add_dims(isl::dim type, unsigned int n) const
14297{
14298 return isl::basic_set(*this).add_dims(type, n);
14299}
14300
14301isl::basic_set point::affine_hull() const
14302{
14303 return isl::basic_set(*this).affine_hull();
14304}
14305
14306isl::set point::align_params(const isl::space &model) const
14307{
14308 return isl::basic_set(*this).align_params(model);
14309}
14310
14311isl::basic_set point::apply(const isl::basic_map &bmap) const
14312{
14313 return isl::basic_set(*this).apply(bmap);
14314}
14315
14316isl::set point::apply(const isl::map &map) const
14317{
14318 return isl::basic_set(*this).apply(map);
14319}
14320
14321isl::union_set point::apply(const isl::union_map &umap) const
14322{
14323 return isl::basic_set(*this).apply(umap);
14324}
14325
14326isl::pw_multi_aff point::as_pw_multi_aff() const
14327{
14328 return isl::basic_set(*this).as_pw_multi_aff();
14329}
14330
14331isl::set point::as_set() const
14332{
14333 return isl::basic_set(*this).as_set();
14334}
14335
14336isl::basic_set_list point::basic_set_list() const
14337{
14338 return isl::basic_set(*this).basic_set_list();
14339}
14340
14341isl::set point::bind(const isl::multi_id &tuple) const
14342{
14343 return isl::basic_set(*this).bind(tuple);
14344}
14345
14346isl::set point::coalesce() const
14347{
14348 return isl::basic_set(*this).coalesce();
14349}
14350
14351isl::set point::complement() const
14352{
14353 return isl::basic_set(*this).complement();
14354}
14355
14356isl::union_set point::compute_divs() const
14357{
14358 return isl::basic_set(*this).compute_divs();
14359}
14360
14361boolean point::contains(const isl::space &space) const
14362{
14363 return isl::basic_set(*this).contains(space);
14364}
14365
14366isl::basic_set point::convex_hull() const
14367{
14368 return isl::basic_set(*this).convex_hull();
14369}
14370
14371isl::val point::coordinate_val(isl::dim type, int pos) const
14372{
14373 auto res = isl_point_get_coordinate_val(pnt: get(), type: static_cast<enum isl_dim_type>(type), pos);
14374 return manage(ptr: res);
14375}
14376
14377isl::val point::get_coordinate_val(isl::dim type, int pos) const
14378{
14379 return coordinate_val(type, pos);
14380}
14381
14382isl::basic_set point::detect_equalities() const
14383{
14384 return isl::basic_set(*this).detect_equalities();
14385}
14386
14387class size point::dim(isl::dim type) const
14388{
14389 return isl::basic_set(*this).dim(type);
14390}
14391
14392boolean 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
14397isl::id point::dim_id(isl::dim type, unsigned int pos) const
14398{
14399 return isl::basic_set(*this).dim_id(type, pos);
14400}
14401
14402isl::pw_aff point::dim_max(int pos) const
14403{
14404 return isl::basic_set(*this).dim_max(pos);
14405}
14406
14407isl::val point::dim_max_val(int pos) const
14408{
14409 return isl::basic_set(*this).dim_max_val(pos);
14410}
14411
14412isl::pw_aff point::dim_min(int pos) const
14413{
14414 return isl::basic_set(*this).dim_min(pos);
14415}
14416
14417isl::val point::dim_min_val(int pos) const
14418{
14419 return isl::basic_set(*this).dim_min_val(pos);
14420}
14421
14422std::string point::dim_name(isl::dim type, unsigned int pos) const
14423{
14424 return isl::basic_set(*this).dim_name(type, pos);
14425}
14426
14427isl::aff point::div(int pos) const
14428{
14429 return isl::basic_set(*this).div(pos);
14430}
14431
14432isl::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
14437isl::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
14442boolean point::every_set(const std::function<boolean(isl::set)> &test) const
14443{
14444 return isl::basic_set(*this).every_set(test);
14445}
14446
14447isl::set point::extract_set(const isl::space &space) const
14448{
14449 return isl::basic_set(*this).extract_set(space);
14450}
14451
14452int 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
14457int point::find_dim_by_id(isl::dim type, const std::string &id) const
14458{
14459 return this->find_dim_by_id(type, id: isl::id(ctx(), id));
14460}
14461
14462isl::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
14467isl::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
14472isl::basic_set point::fix_val(isl::dim type, unsigned int pos, long v) const
14473{
14474 return this->fix_val(type, pos, v: isl::val(ctx(), v));
14475}
14476
14477isl::basic_set point::flatten() const
14478{
14479 return isl::basic_set(*this).flatten();
14480}
14481
14482stat 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
14487stat point::foreach_point(const std::function<stat(isl::point)> &fn) const
14488{
14489 return isl::basic_set(*this).foreach_point(fn);
14490}
14491
14492stat point::foreach_set(const std::function<stat(isl::set)> &fn) const
14493{
14494 return isl::basic_set(*this).foreach_set(fn);
14495}
14496
14497isl::basic_set point::gist(const isl::basic_set &context) const
14498{
14499 return isl::basic_set(*this).gist(context);
14500}
14501
14502isl::set point::gist(const isl::set &context) const
14503{
14504 return isl::basic_set(*this).gist(context);
14505}
14506
14507isl::union_set point::gist(const isl::union_set &context) const
14508{
14509 return isl::basic_set(*this).gist(context);
14510}
14511
14512isl::set point::gist_params(const isl::set &context) const
14513{
14514 return isl::basic_set(*this).gist_params(context);
14515}
14516
14517boolean point::has_equal_space(const isl::set &set2) const
14518{
14519 return isl::basic_set(*this).has_equal_space(set2);
14520}
14521
14522isl::map point::identity() const
14523{
14524 return isl::basic_set(*this).identity();
14525}
14526
14527isl::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
14532isl::pw_aff point::indicator_function() const
14533{
14534 return isl::basic_set(*this).indicator_function();
14535}
14536
14537isl::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
14542isl::map point::insert_domain(const isl::space &domain) const
14543{
14544 return isl::basic_set(*this).insert_domain(domain);
14545}
14546
14547isl::basic_set point::intersect(const isl::basic_set &bset2) const
14548{
14549 return isl::basic_set(*this).intersect(bset2);
14550}
14551
14552isl::set point::intersect(const isl::set &set2) const
14553{
14554 return isl::basic_set(*this).intersect(set2);
14555}
14556
14557isl::union_set point::intersect(const isl::union_set &uset2) const
14558{
14559 return isl::basic_set(*this).intersect(uset2);
14560}
14561
14562isl::basic_set point::intersect_params(const isl::basic_set &bset2) const
14563{
14564 return isl::basic_set(*this).intersect_params(bset2);
14565}
14566
14567isl::set point::intersect_params(const isl::set &params) const
14568{
14569 return isl::basic_set(*this).intersect_params(params);
14570}
14571
14572boolean 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
14577boolean point::involves_locals() const
14578{
14579 return isl::basic_set(*this).involves_locals();
14580}
14581
14582boolean point::is_bounded() const
14583{
14584 return isl::basic_set(*this).is_bounded();
14585}
14586
14587boolean point::is_disjoint(const isl::set &set2) const
14588{
14589 return isl::basic_set(*this).is_disjoint(set2);
14590}
14591
14592boolean point::is_disjoint(const isl::union_set &uset2) const
14593{
14594 return isl::basic_set(*this).is_disjoint(uset2);
14595}
14596
14597boolean point::is_empty() const
14598{
14599 return isl::basic_set(*this).is_empty();
14600}
14601
14602boolean point::is_equal(const isl::basic_set &bset2) const
14603{
14604 return isl::basic_set(*this).is_equal(bset2);
14605}
14606
14607boolean point::is_equal(const isl::set &set2) const
14608{
14609 return isl::basic_set(*this).is_equal(set2);
14610}
14611
14612boolean point::is_equal(const isl::union_set &uset2) const
14613{
14614 return isl::basic_set(*this).is_equal(uset2);
14615}
14616
14617boolean point::is_params() const
14618{
14619 return isl::basic_set(*this).is_params();
14620}
14621
14622boolean point::is_singleton() const
14623{
14624 return isl::basic_set(*this).is_singleton();
14625}
14626
14627boolean point::is_strict_subset(const isl::set &set2) const
14628{
14629 return isl::basic_set(*this).is_strict_subset(set2);
14630}
14631
14632boolean point::is_strict_subset(const isl::union_set &uset2) const
14633{
14634 return isl::basic_set(*this).is_strict_subset(uset2);
14635}
14636
14637boolean point::is_subset(const isl::basic_set &bset2) const
14638{
14639 return isl::basic_set(*this).is_subset(bset2);
14640}
14641
14642boolean point::is_subset(const isl::set &set2) const
14643{
14644 return isl::basic_set(*this).is_subset(set2);
14645}
14646
14647boolean point::is_subset(const isl::union_set &uset2) const
14648{
14649 return isl::basic_set(*this).is_subset(uset2);
14650}
14651
14652boolean point::is_wrapping() const
14653{
14654 return isl::basic_set(*this).is_wrapping();
14655}
14656
14657boolean point::isa_set() const
14658{
14659 return isl::basic_set(*this).isa_set();
14660}
14661
14662isl::set point::lexmax() const
14663{
14664 return isl::basic_set(*this).lexmax();
14665}
14666
14667isl::pw_multi_aff point::lexmax_pw_multi_aff() const
14668{
14669 return isl::basic_set(*this).lexmax_pw_multi_aff();
14670}
14671
14672isl::set point::lexmin() const
14673{
14674 return isl::basic_set(*this).lexmin();
14675}
14676
14677isl::pw_multi_aff point::lexmin_pw_multi_aff() const
14678{
14679 return isl::basic_set(*this).lexmin_pw_multi_aff();
14680}
14681
14682isl::set point::lower_bound(const isl::multi_pw_aff &lower) const
14683{
14684 return isl::basic_set(*this).lower_bound(lower);
14685}
14686
14687isl::set point::lower_bound(const isl::multi_val &lower) const
14688{
14689 return isl::basic_set(*this).lower_bound(lower);
14690}
14691
14692isl::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
14697isl::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
14702isl::set point::lower_bound_val(isl::dim type, unsigned int pos, long value) const
14703{
14704 return this->lower_bound_val(type, pos, value: isl::val(ctx(), value));
14705}
14706
14707isl::multi_pw_aff point::max_multi_pw_aff() const
14708{
14709 return isl::basic_set(*this).max_multi_pw_aff();
14710}
14711
14712isl::val point::max_val(const isl::aff &obj) const
14713{
14714 return isl::basic_set(*this).max_val(obj);
14715}
14716
14717isl::multi_pw_aff point::min_multi_pw_aff() const
14718{
14719 return isl::basic_set(*this).min_multi_pw_aff();
14720}
14721
14722isl::val point::min_val(const isl::aff &obj) const
14723{
14724 return isl::basic_set(*this).min_val(obj);
14725}
14726
14727isl::multi_val point::multi_val() const
14728{
14729 auto res = isl_point_get_multi_val(pnt: get());
14730 return manage(ptr: res);
14731}
14732
14733isl::multi_val point::get_multi_val() const
14734{
14735 return multi_val();
14736}
14737
14738class size point::n_basic_set() const
14739{
14740 return isl::basic_set(*this).n_basic_set();
14741}
14742
14743isl::basic_set point::params() const
14744{
14745 return isl::basic_set(*this).params();
14746}
14747
14748isl::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
14753isl::multi_val point::plain_multi_val_if_fixed() const
14754{
14755 return isl::basic_set(*this).plain_multi_val_if_fixed();
14756}
14757
14758isl::basic_set point::polyhedral_hull() const
14759{
14760 return isl::basic_set(*this).polyhedral_hull();
14761}
14762
14763isl::set point::preimage(const isl::multi_aff &ma) const
14764{
14765 return isl::basic_set(*this).preimage(ma);
14766}
14767
14768isl::set point::preimage(const isl::multi_pw_aff &mpa) const
14769{
14770 return isl::basic_set(*this).preimage(mpa);
14771}
14772
14773isl::set point::preimage(const isl::pw_multi_aff &pma) const
14774{
14775 return isl::basic_set(*this).preimage(pma);
14776}
14777
14778isl::union_set point::preimage(const isl::union_pw_multi_aff &upma) const
14779{
14780 return isl::basic_set(*this).preimage(upma);
14781}
14782
14783isl::set point::product(const isl::set &set2) const
14784{
14785 return isl::basic_set(*this).product(set2);
14786}
14787
14788isl::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
14793isl::set point::project_out_all_params() const
14794{
14795 return isl::basic_set(*this).project_out_all_params();
14796}
14797
14798isl::set point::project_out_param(const isl::id &id) const
14799{
14800 return isl::basic_set(*this).project_out_param(id);
14801}
14802
14803isl::set point::project_out_param(const std::string &id) const
14804{
14805 return this->project_out_param(id: isl::id(ctx(), id));
14806}
14807
14808isl::set point::project_out_param(const isl::id_list &list) const
14809{
14810 return isl::basic_set(*this).project_out_param(list);
14811}
14812
14813isl::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
14818isl::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
14823isl::set point::remove_divs() const
14824{
14825 return isl::basic_set(*this).remove_divs();
14826}
14827
14828isl::set point::remove_redundancies() const
14829{
14830 return isl::basic_set(*this).remove_redundancies();
14831}
14832
14833isl::set point::reset_tuple_id() const
14834{
14835 return isl::basic_set(*this).reset_tuple_id();
14836}
14837
14838isl::basic_set point::sample() const
14839{
14840 return isl::basic_set(*this).sample();
14841}
14842
14843isl::point point::sample_point() const
14844{
14845 return isl::basic_set(*this).sample_point();
14846}
14847
14848isl::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
14853isl::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, id: isl::id(ctx(), id));
14856}
14857
14858isl::set_list point::set_list() const
14859{
14860 return isl::basic_set(*this).set_list();
14861}
14862
14863isl::set point::set_tuple_id(const isl::id &id) const
14864{
14865 return isl::basic_set(*this).set_tuple_id(id);
14866}
14867
14868isl::set point::set_tuple_id(const std::string &id) const
14869{
14870 return this->set_tuple_id(isl::id(ctx(), id));
14871}
14872
14873isl::fixed_box point::simple_fixed_box_hull() const
14874{
14875 return isl::basic_set(*this).simple_fixed_box_hull();
14876}
14877
14878isl::basic_set point::simple_hull() const
14879{
14880 return isl::basic_set(*this).simple_hull();
14881}
14882
14883isl::space point::space() const
14884{
14885 return isl::basic_set(*this).space();
14886}
14887
14888isl::val point::stride(int pos) const
14889{
14890 return isl::basic_set(*this).stride(pos);
14891}
14892
14893isl::set point::subtract(const isl::set &set2) const
14894{
14895 return isl::basic_set(*this).subtract(set2);
14896}
14897
14898isl::union_set point::subtract(const isl::union_set &uset2) const
14899{
14900 return isl::basic_set(*this).subtract(uset2);
14901}
14902
14903isl::basic_set_list point::to_list() const
14904{
14905 return isl::basic_set(*this).to_list();
14906}
14907
14908isl::set point::to_set() const
14909{
14910 auto res = isl_point_to_set(pnt: copy());
14911 return manage(ptr: res);
14912}
14913
14914isl::union_set point::to_union_set() const
14915{
14916 return isl::basic_set(*this).to_union_set();
14917}
14918
14919isl::map point::translation() const
14920{
14921 return isl::basic_set(*this).translation();
14922}
14923
14924class size point::tuple_dim() const
14925{
14926 return isl::basic_set(*this).tuple_dim();
14927}
14928
14929isl::id point::tuple_id() const
14930{
14931 return isl::basic_set(*this).tuple_id();
14932}
14933
14934std::string point::tuple_name() const
14935{
14936 return isl::basic_set(*this).tuple_name();
14937}
14938
14939isl::set point::unbind_params(const isl::multi_id &tuple) const
14940{
14941 return isl::basic_set(*this).unbind_params(tuple);
14942}
14943
14944isl::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
14949isl::set point::unite(const isl::basic_set &bset2) const
14950{
14951 return isl::basic_set(*this).unite(bset2);
14952}
14953
14954isl::set point::unite(const isl::set &set2) const
14955{
14956 return isl::basic_set(*this).unite(set2);
14957}
14958
14959isl::union_set point::unite(const isl::union_set &uset2) const
14960{
14961 return isl::basic_set(*this).unite(uset2);
14962}
14963
14964isl::basic_set point::unshifted_simple_hull() const
14965{
14966 return isl::basic_set(*this).unshifted_simple_hull();
14967}
14968
14969isl::map point::unwrap() const
14970{
14971 return isl::basic_set(*this).unwrap();
14972}
14973
14974isl::set point::upper_bound(const isl::multi_pw_aff &upper) const
14975{
14976 return isl::basic_set(*this).upper_bound(upper);
14977}
14978
14979isl::set point::upper_bound(const isl::multi_val &upper) const
14980{
14981 return isl::basic_set(*this).upper_bound(upper);
14982}
14983
14984isl::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
14989isl::set point::upper_bound_val(isl::dim type, unsigned int pos, long value) const
14990{
14991 return this->upper_bound_val(type, pos, value: isl::val(ctx(), value));
14992}
14993
14994inline std::ostream &operator<<(std::ostream &os, const point &obj)
14995{
14996 char *str = isl_point_to_str(pnt: obj.get());
14997 if (!str) {
14998 os.setstate(std::ios_base::badbit);
14999 return os;
15000 }
15001 os << str;
15002 free(ptr: str);
15003 return os;
15004}
15005
15006// implementations for isl::pw_aff
15007pw_aff manage(__isl_take isl_pw_aff *ptr) {
15008 return pw_aff(ptr);
15009}
15010pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
15011 ptr = isl_pw_aff_copy(pwaff: ptr);
15012 return pw_aff(ptr);
15013}
15014
15015pw_aff::pw_aff()
15016 : ptr(nullptr) {}
15017
15018pw_aff::pw_aff(const pw_aff &obj)
15019 : ptr(nullptr)
15020{
15021 ptr = obj.copy();
15022}
15023
15024pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
15025 : ptr(ptr) {}
15026
15027pw_aff::pw_aff(isl::aff aff)
15028{
15029 auto res = isl_pw_aff_from_aff(aff: aff.release());
15030 ptr = res;
15031}
15032
15033pw_aff::pw_aff(isl::ctx ctx, const std::string &str)
15034{
15035 auto res = isl_pw_aff_read_from_str(ctx: ctx.release(), str: str.c_str());
15036 ptr = res;
15037}
15038
15039pw_aff::pw_aff(isl::set domain, isl::val v)
15040{
15041 auto res = isl_pw_aff_val_on_domain(domain: domain.release(), v: v.release());
15042 ptr = res;
15043}
15044
15045pw_aff::pw_aff(isl::local_space ls)
15046{
15047 auto res = isl_pw_aff_zero_on_domain(ls: ls.release());
15048 ptr = res;
15049}
15050
15051pw_aff &pw_aff::operator=(pw_aff obj) {
15052 std::swap(a&: this->ptr, b&: obj.ptr);
15053 return *this;
15054}
15055
15056pw_aff::~pw_aff() {
15057 if (ptr)
15058 isl_pw_aff_free(pwaff: ptr);
15059}
15060
15061__isl_give isl_pw_aff *pw_aff::copy() const & {
15062 return isl_pw_aff_copy(pwaff: ptr);
15063}
15064
15065__isl_keep isl_pw_aff *pw_aff::get() const {
15066 return ptr;
15067}
15068
15069__isl_give isl_pw_aff *pw_aff::release() {
15070 isl_pw_aff *tmp = ptr;
15071 ptr = nullptr;
15072 return tmp;
15073}
15074
15075bool pw_aff::is_null() const {
15076 return ptr == nullptr;
15077}
15078
15079isl::ctx pw_aff::ctx() const {
15080 return isl::ctx(isl_pw_aff_get_ctx(pwaff: ptr));
15081}
15082
15083isl::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
15088isl::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
15093isl::pw_aff pw_aff::add(isl::pw_aff pwaff2) const
15094{
15095 auto res = isl_pw_aff_add(pwaff1: copy(), pwaff2: pwaff2.release());
15096 return manage(ptr: res);
15097}
15098
15099isl::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
15104isl::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
15109isl::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
15114isl::pw_aff pw_aff::add(const isl::aff &pwaff2) const
15115{
15116 return this->add(pwaff2: isl::pw_aff(pwaff2));
15117}
15118
15119isl::pw_aff pw_aff::add_constant(isl::val v) const
15120{
15121 auto res = isl_pw_aff_add_constant_val(pa: copy(), v: v.release());
15122 return manage(ptr: res);
15123}
15124
15125isl::pw_aff pw_aff::add_constant(long v) const
15126{
15127 return this->add_constant(v: isl::val(ctx(), v));
15128}
15129
15130isl::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
15135isl::pw_aff pw_aff::add_dims(isl::dim type, unsigned int n) const
15136{
15137 auto res = isl_pw_aff_add_dims(pwaff: copy(), type: static_cast<enum isl_dim_type>(type), n);
15138 return manage(ptr: res);
15139}
15140
15141isl::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
15146isl::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
15151isl::aff pw_aff::as_aff() const
15152{
15153 auto res = isl_pw_aff_as_aff(pa: copy());
15154 return manage(ptr: res);
15155}
15156
15157isl::map pw_aff::as_map() const
15158{
15159 auto res = isl_pw_aff_as_map(pa: copy());
15160 return manage(ptr: res);
15161}
15162
15163isl::multi_aff pw_aff::as_multi_aff() const
15164{
15165 return isl::pw_multi_aff(*this).as_multi_aff();
15166}
15167
15168isl::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
15173isl::pw_multi_aff pw_aff::as_pw_multi_aff() const
15174{
15175 return isl::union_pw_aff(*this).as_pw_multi_aff();
15176}
15177
15178isl::set pw_aff::as_set() const
15179{
15180 return isl::pw_multi_aff(*this).as_set();
15181}
15182
15183isl::union_map pw_aff::as_union_map() const
15184{
15185 return isl::union_pw_aff(*this).as_union_map();
15186}
15187
15188isl::pw_aff pw_aff::at(int pos) const
15189{
15190 return isl::pw_multi_aff(*this).at(pos);
15191}
15192
15193isl::set pw_aff::bind(const isl::multi_id &tuple) const
15194{
15195 return isl::multi_pw_aff(*this).bind(tuple);
15196}
15197
15198isl::set pw_aff::bind(isl::id id) const
15199{
15200 auto res = isl_pw_aff_bind_id(pa: copy(), id: id.release());
15201 return manage(ptr: res);
15202}
15203
15204isl::set pw_aff::bind(const std::string &id) const
15205{
15206 return this->bind(id: isl::id(ctx(), id));
15207}
15208
15209isl::pw_aff pw_aff::bind_domain(isl::multi_id tuple) const
15210{
15211 auto res = isl_pw_aff_bind_domain(pa: copy(), tuple: tuple.release());
15212 return manage(ptr: res);
15213}
15214
15215isl::pw_aff pw_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
15216{
15217 auto res = isl_pw_aff_bind_domain_wrapped_domain(pa: copy(), tuple: tuple.release());
15218 return manage(ptr: res);
15219}
15220
15221isl::pw_aff pw_aff::ceil() const
15222{
15223 auto res = isl_pw_aff_ceil(pwaff: copy());
15224 return manage(ptr: res);
15225}
15226
15227isl::pw_aff pw_aff::coalesce() const
15228{
15229 auto res = isl_pw_aff_coalesce(pa: copy());
15230 return manage(ptr: res);
15231}
15232
15233isl::pw_aff pw_aff::cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const
15234{
15235 auto res = isl_pw_aff_cond(cond: copy(), pwaff_true: pwaff_true.release(), pwaff_false: pwaff_false.release());
15236 return manage(ptr: res);
15237}
15238
15239class size pw_aff::dim(isl::dim type) const
15240{
15241 return isl::pw_multi_aff(*this).dim(type);
15242}
15243
15244isl::id pw_aff::dim_id(isl::dim type, unsigned int pos) const
15245{
15246 auto res = isl_pw_aff_get_dim_id(pa: get(), type: static_cast<enum isl_dim_type>(type), pos);
15247 return manage(ptr: res);
15248}
15249
15250isl::id pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
15251{
15252 return dim_id(type, pos);
15253}
15254
15255isl::pw_aff pw_aff::div(isl::pw_aff pa2) const
15256{
15257 auto res = isl_pw_aff_div(pa1: copy(), pa2: pa2.release());
15258 return manage(ptr: res);
15259}
15260
15261isl::set pw_aff::domain() const
15262{
15263 auto res = isl_pw_aff_domain(pwaff: copy());
15264 return manage(ptr: res);
15265}
15266
15267isl::space pw_aff::domain_space() const
15268{
15269 auto res = isl_pw_aff_get_domain_space(pwaff: get());
15270 return manage(ptr: res);
15271}
15272
15273isl::space pw_aff::get_domain_space() const
15274{
15275 return domain_space();
15276}
15277
15278isl::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
15283isl::set pw_aff::eq_set(isl::pw_aff pwaff2) const
15284{
15285 auto res = isl_pw_aff_eq_set(pwaff1: copy(), pwaff2: pwaff2.release());
15286 return manage(ptr: res);
15287}
15288
15289isl::val pw_aff::eval(isl::point pnt) const
15290{
15291 auto res = isl_pw_aff_eval(pa: copy(), pnt: pnt.release());
15292 return manage(ptr: res);
15293}
15294
15295isl::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
15300isl::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
15305isl::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
15310isl::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
15315isl::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
15320isl::pw_aff pw_aff::floor() const
15321{
15322 auto res = isl_pw_aff_floor(pwaff: copy());
15323 return manage(ptr: res);
15324}
15325
15326stat 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 = { .func: 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(ptr: arg_0), manage(ptr: arg_1));
15334 return ret.release();
15335 };
15336 auto res = isl_pw_aff_foreach_piece(pwaff: get(), fn: fn_lambda, user: &fn_data);
15337 return manage(val: res);
15338}
15339
15340stat 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
15345stat 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
15350isl::set pw_aff::ge_set(isl::pw_aff pwaff2) const
15351{
15352 auto res = isl_pw_aff_ge_set(pwaff1: copy(), pwaff2: pwaff2.release());
15353 return manage(ptr: res);
15354}
15355
15356isl::pw_aff pw_aff::gist(isl::set context) const
15357{
15358 auto res = isl_pw_aff_gist(pwaff: copy(), context: context.release());
15359 return manage(ptr: res);
15360}
15361
15362isl::union_pw_aff pw_aff::gist(const isl::union_set &context) const
15363{
15364 return isl::union_pw_aff(*this).gist(context);
15365}
15366
15367isl::pw_aff pw_aff::gist(const isl::basic_set &context) const
15368{
15369 return this->gist(context: isl::set(context));
15370}
15371
15372isl::pw_aff pw_aff::gist(const isl::point &context) const
15373{
15374 return this->gist(context: isl::set(context));
15375}
15376
15377isl::set pw_aff::gt_set(isl::pw_aff pwaff2) const
15378{
15379 auto res = isl_pw_aff_gt_set(pwaff1: copy(), pwaff2: pwaff2.release());
15380 return manage(ptr: res);
15381}
15382
15383boolean pw_aff::has_range_tuple_id() const
15384{
15385 return isl::pw_multi_aff(*this).has_range_tuple_id();
15386}
15387
15388isl::multi_pw_aff pw_aff::identity() const
15389{
15390 return isl::pw_multi_aff(*this).identity();
15391}
15392
15393isl::pw_aff pw_aff::insert_domain(isl::space domain) const
15394{
15395 auto res = isl_pw_aff_insert_domain(pa: copy(), domain: domain.release());
15396 return manage(ptr: res);
15397}
15398
15399isl::pw_aff pw_aff::intersect_domain(isl::set set) const
15400{
15401 auto res = isl_pw_aff_intersect_domain(pa: copy(), set: set.release());
15402 return manage(ptr: res);
15403}
15404
15405isl::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
15410isl::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
15415isl::pw_aff pw_aff::intersect_domain(const isl::basic_set &set) const
15416{
15417 return this->intersect_domain(set: isl::set(set));
15418}
15419
15420isl::pw_aff pw_aff::intersect_domain(const isl::point &set) const
15421{
15422 return this->intersect_domain(set: isl::set(set));
15423}
15424
15425isl::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
15430isl::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
15435isl::pw_aff pw_aff::intersect_params(isl::set set) const
15436{
15437 auto res = isl_pw_aff_intersect_params(pa: copy(), set: set.release());
15438 return manage(ptr: res);
15439}
15440
15441boolean pw_aff::involves_locals() const
15442{
15443 return isl::pw_multi_aff(*this).involves_locals();
15444}
15445
15446boolean pw_aff::involves_nan() const
15447{
15448 return isl::multi_pw_aff(*this).involves_nan();
15449}
15450
15451boolean pw_aff::involves_param(const isl::id &id) const
15452{
15453 return isl::pw_multi_aff(*this).involves_param(id);
15454}
15455
15456boolean pw_aff::involves_param(const std::string &id) const
15457{
15458 return this->involves_param(id: isl::id(ctx(), id));
15459}
15460
15461boolean pw_aff::involves_param(const isl::id_list &list) const
15462{
15463 return isl::pw_multi_aff(*this).involves_param(list);
15464}
15465
15466boolean pw_aff::is_cst() const
15467{
15468 auto res = isl_pw_aff_is_cst(pwaff: get());
15469 return manage(val: res);
15470}
15471
15472boolean pw_aff::is_equal(const isl::pw_aff &pa2) const
15473{
15474 auto res = isl_pw_aff_is_equal(pa1: get(), pa2: pa2.get());
15475 return manage(val: res);
15476}
15477
15478boolean pw_aff::isa_aff() const
15479{
15480 auto res = isl_pw_aff_isa_aff(pa: get());
15481 return manage(val: res);
15482}
15483
15484boolean pw_aff::isa_multi_aff() const
15485{
15486 return isl::pw_multi_aff(*this).isa_multi_aff();
15487}
15488
15489boolean pw_aff::isa_pw_multi_aff() const
15490{
15491 return isl::union_pw_aff(*this).isa_pw_multi_aff();
15492}
15493
15494isl::set pw_aff::le_set(isl::pw_aff pwaff2) const
15495{
15496 auto res = isl_pw_aff_le_set(pwaff1: copy(), pwaff2: pwaff2.release());
15497 return manage(ptr: res);
15498}
15499
15500isl::pw_aff_list pw_aff::list() const
15501{
15502 return isl::multi_pw_aff(*this).list();
15503}
15504
15505isl::set pw_aff::lt_set(isl::pw_aff pwaff2) const
15506{
15507 auto res = isl_pw_aff_lt_set(pwaff1: copy(), pwaff2: pwaff2.release());
15508 return manage(ptr: res);
15509}
15510
15511isl::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
15516isl::pw_aff pw_aff::max(isl::pw_aff pwaff2) const
15517{
15518 auto res = isl_pw_aff_max(pwaff1: copy(), pwaff2: pwaff2.release());
15519 return manage(ptr: res);
15520}
15521
15522isl::pw_aff pw_aff::max(const isl::aff &pwaff2) const
15523{
15524 return this->max(pwaff2: isl::pw_aff(pwaff2));
15525}
15526
15527isl::multi_val pw_aff::max_multi_val() const
15528{
15529 return isl::pw_multi_aff(*this).max_multi_val();
15530}
15531
15532isl::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
15537isl::pw_aff pw_aff::min(isl::pw_aff pwaff2) const
15538{
15539 auto res = isl_pw_aff_min(pwaff1: copy(), pwaff2: pwaff2.release());
15540 return manage(ptr: res);
15541}
15542
15543isl::pw_aff pw_aff::min(const isl::aff &pwaff2) const
15544{
15545 return this->min(pwaff2: isl::pw_aff(pwaff2));
15546}
15547
15548isl::multi_val pw_aff::min_multi_val() const
15549{
15550 return isl::pw_multi_aff(*this).min_multi_val();
15551}
15552
15553isl::pw_aff pw_aff::mod(isl::val mod) const
15554{
15555 auto res = isl_pw_aff_mod_val(pa: copy(), mod: mod.release());
15556 return manage(ptr: res);
15557}
15558
15559isl::pw_aff pw_aff::mod(long mod) const
15560{
15561 return this->mod(mod: isl::val(ctx(), mod));
15562}
15563
15564isl::pw_aff pw_aff::mul(isl::pw_aff pwaff2) const
15565{
15566 auto res = isl_pw_aff_mul(pwaff1: copy(), pwaff2: pwaff2.release());
15567 return manage(ptr: res);
15568}
15569
15570class size pw_aff::n_piece() const
15571{
15572 return isl::pw_multi_aff(*this).n_piece();
15573}
15574
15575isl::set pw_aff::ne_set(isl::pw_aff pwaff2) const
15576{
15577 auto res = isl_pw_aff_ne_set(pwaff1: copy(), pwaff2: pwaff2.release());
15578 return manage(ptr: res);
15579}
15580
15581isl::pw_aff pw_aff::neg() const
15582{
15583 auto res = isl_pw_aff_neg(pwaff: copy());
15584 return manage(ptr: res);
15585}
15586
15587isl::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: domain.release(), id: id.release());
15590 return manage(ptr: res);
15591}
15592
15593boolean pw_aff::plain_is_empty() const
15594{
15595 return isl::union_pw_aff(*this).plain_is_empty();
15596}
15597
15598boolean 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
15603boolean 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
15608isl::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
15613isl::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
15618isl::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
15623isl::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
15628isl::pw_aff pw_aff::pullback(isl::multi_aff ma) const
15629{
15630 auto res = isl_pw_aff_pullback_multi_aff(pa: copy(), ma: ma.release());
15631 return manage(ptr: res);
15632}
15633
15634isl::pw_aff pw_aff::pullback(isl::multi_pw_aff mpa) const
15635{
15636 auto res = isl_pw_aff_pullback_multi_pw_aff(pa: copy(), mpa: mpa.release());
15637 return manage(ptr: res);
15638}
15639
15640isl::pw_aff pw_aff::pullback(isl::pw_multi_aff pma) const
15641{
15642 auto res = isl_pw_aff_pullback_pw_multi_aff(pa: copy(), pma: pma.release());
15643 return manage(ptr: res);
15644}
15645
15646isl::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
15651isl::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
15656isl::pw_multi_aff pw_aff::range_factor_domain() const
15657{
15658 return isl::pw_multi_aff(*this).range_factor_domain();
15659}
15660
15661isl::pw_multi_aff pw_aff::range_factor_range() const
15662{
15663 return isl::pw_multi_aff(*this).range_factor_range();
15664}
15665
15666isl::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
15671isl::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
15676isl::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
15681isl::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
15686isl::id pw_aff::range_tuple_id() const
15687{
15688 return isl::pw_multi_aff(*this).range_tuple_id();
15689}
15690
15691isl::multi_pw_aff pw_aff::reset_range_tuple_id() const
15692{
15693 return isl::multi_pw_aff(*this).reset_range_tuple_id();
15694}
15695
15696isl::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
15701isl::multi_pw_aff pw_aff::scale(const isl::multi_val &mv) const
15702{
15703 return isl::multi_pw_aff(*this).scale(mv);
15704}
15705
15706isl::pw_aff pw_aff::scale(isl::val v) const
15707{
15708 auto res = isl_pw_aff_scale_val(pa: copy(), v: v.release());
15709 return manage(ptr: res);
15710}
15711
15712isl::pw_aff pw_aff::scale(long v) const
15713{
15714 return this->scale(v: isl::val(ctx(), v));
15715}
15716
15717isl::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
15722isl::pw_aff pw_aff::scale_down(isl::val f) const
15723{
15724 auto res = isl_pw_aff_scale_down_val(pa: copy(), f: f.release());
15725 return manage(ptr: res);
15726}
15727
15728isl::pw_aff pw_aff::scale_down(long f) const
15729{
15730 return this->scale_down(f: isl::val(ctx(), f));
15731}
15732
15733isl::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
15738isl::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
15743isl::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
15748isl::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
15753isl::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
15758isl::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
15763isl::pw_aff pw_aff::set_tuple_id(isl::dim type, isl::id id) const
15764{
15765 auto res = isl_pw_aff_set_tuple_id(pwaff: copy(), type: static_cast<enum isl_dim_type>(type), id: id.release());
15766 return manage(ptr: res);
15767}
15768
15769isl::pw_aff pw_aff::set_tuple_id(isl::dim type, const std::string &id) const
15770{
15771 return this->set_tuple_id(type, id: isl::id(ctx(), id));
15772}
15773
15774isl::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
15779class size pw_aff::size() const
15780{
15781 return isl::multi_pw_aff(*this).size();
15782}
15783
15784isl::space pw_aff::space() const
15785{
15786 auto res = isl_pw_aff_get_space(pwaff: get());
15787 return manage(ptr: res);
15788}
15789
15790isl::space pw_aff::get_space() const
15791{
15792 return space();
15793}
15794
15795isl::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
15800isl::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
15805isl::pw_aff pw_aff::sub(isl::pw_aff pwaff2) const
15806{
15807 auto res = isl_pw_aff_sub(pwaff1: copy(), pwaff2: pwaff2.release());
15808 return manage(ptr: res);
15809}
15810
15811isl::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
15816isl::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
15821isl::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
15826isl::pw_aff pw_aff::sub(const isl::aff &pwaff2) const
15827{
15828 return this->sub(pwaff2: isl::pw_aff(pwaff2));
15829}
15830
15831isl::pw_aff pw_aff::subtract_domain(isl::set set) const
15832{
15833 auto res = isl_pw_aff_subtract_domain(pa: copy(), set: set.release());
15834 return manage(ptr: res);
15835}
15836
15837isl::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
15842isl::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
15847isl::pw_aff pw_aff::subtract_domain(const isl::basic_set &set) const
15848{
15849 return this->subtract_domain(set: isl::set(set));
15850}
15851
15852isl::pw_aff pw_aff::subtract_domain(const isl::point &set) const
15853{
15854 return this->subtract_domain(set: isl::set(set));
15855}
15856
15857isl::pw_aff pw_aff::tdiv_q(isl::pw_aff pa2) const
15858{
15859 auto res = isl_pw_aff_tdiv_q(pa1: copy(), pa2: pa2.release());
15860 return manage(ptr: res);
15861}
15862
15863isl::pw_aff pw_aff::tdiv_r(isl::pw_aff pa2) const
15864{
15865 auto res = isl_pw_aff_tdiv_r(pa1: copy(), pa2: pa2.release());
15866 return manage(ptr: res);
15867}
15868
15869isl::pw_aff_list pw_aff::to_list() const
15870{
15871 auto res = isl_pw_aff_to_list(el: copy());
15872 return manage(ptr: res);
15873}
15874
15875isl::multi_pw_aff pw_aff::to_multi_pw_aff() const
15876{
15877 return isl::pw_multi_aff(*this).to_multi_pw_aff();
15878}
15879
15880isl::union_pw_aff pw_aff::to_union_pw_aff() const
15881{
15882 auto res = isl_pw_aff_to_union_pw_aff(pa: copy());
15883 return manage(ptr: res);
15884}
15885
15886isl::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
15891isl::id pw_aff::tuple_id(isl::dim type) const
15892{
15893 auto res = isl_pw_aff_get_tuple_id(pa: get(), type: static_cast<enum isl_dim_type>(type));
15894 return manage(ptr: res);
15895}
15896
15897isl::id pw_aff::get_tuple_id(isl::dim type) const
15898{
15899 return tuple_id(type);
15900}
15901
15902isl::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
15907isl::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
15912isl::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
15917isl::pw_aff pw_aff::union_add(isl::pw_aff pwaff2) const
15918{
15919 auto res = isl_pw_aff_union_add(pwaff1: copy(), pwaff2: pwaff2.release());
15920 return manage(ptr: res);
15921}
15922
15923isl::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
15928isl::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
15933isl::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
15938isl::pw_aff pw_aff::union_add(const isl::aff &pwaff2) const
15939{
15940 return this->union_add(pwaff2: isl::pw_aff(pwaff2));
15941}
15942
15943isl::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: ls.release(), type: static_cast<enum isl_dim_type>(type), pos);
15946 return manage(ptr: res);
15947}
15948
15949inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
15950{
15951 char *str = isl_pw_aff_to_str(pa: obj.get());
15952 if (!str) {
15953 os.setstate(std::ios_base::badbit);
15954 return os;
15955 }
15956 os << str;
15957 free(ptr: str);
15958 return os;
15959}
15960
15961// implementations for isl::pw_aff_list
15962pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
15963 return pw_aff_list(ptr);
15964}
15965pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
15966 ptr = isl_pw_aff_list_copy(list: ptr);
15967 return pw_aff_list(ptr);
15968}
15969
15970pw_aff_list::pw_aff_list()
15971 : ptr(nullptr) {}
15972
15973pw_aff_list::pw_aff_list(const pw_aff_list &obj)
15974 : ptr(nullptr)
15975{
15976 ptr = obj.copy();
15977}
15978
15979pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
15980 : ptr(ptr) {}
15981
15982pw_aff_list::pw_aff_list(isl::ctx ctx, int n)
15983{
15984 auto res = isl_pw_aff_list_alloc(ctx: ctx.release(), n);
15985 ptr = res;
15986}
15987
15988pw_aff_list::pw_aff_list(isl::pw_aff el)
15989{
15990 auto res = isl_pw_aff_list_from_pw_aff(el: el.release());
15991 ptr = res;
15992}
15993
15994pw_aff_list::pw_aff_list(isl::ctx ctx, const std::string &str)
15995{
15996 auto res = isl_pw_aff_list_read_from_str(ctx: ctx.release(), str: str.c_str());
15997 ptr = res;
15998}
15999
16000pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
16001 std::swap(a&: this->ptr, b&: obj.ptr);
16002 return *this;
16003}
16004
16005pw_aff_list::~pw_aff_list() {
16006 if (ptr)
16007 isl_pw_aff_list_free(list: ptr);
16008}
16009
16010__isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
16011 return isl_pw_aff_list_copy(list: ptr);
16012}
16013
16014__isl_keep isl_pw_aff_list *pw_aff_list::get() const {
16015 return ptr;
16016}
16017
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
16024bool pw_aff_list::is_null() const {
16025 return ptr == nullptr;
16026}
16027
16028isl::ctx pw_aff_list::ctx() const {
16029 return isl::ctx(isl_pw_aff_list_get_ctx(list: ptr));
16030}
16031
16032isl::pw_aff_list pw_aff_list::add(isl::pw_aff el) const
16033{
16034 auto res = isl_pw_aff_list_add(list: copy(), el: el.release());
16035 return manage(ptr: res);
16036}
16037
16038isl::pw_aff pw_aff_list::at(int index) const
16039{
16040 auto res = isl_pw_aff_list_get_at(list: get(), index);
16041 return manage(ptr: res);
16042}
16043
16044isl::pw_aff pw_aff_list::get_at(int index) const
16045{
16046 return at(index);
16047}
16048
16049isl::pw_aff_list pw_aff_list::clear() const
16050{
16051 auto res = isl_pw_aff_list_clear(list: copy());
16052 return manage(ptr: res);
16053}
16054
16055isl::pw_aff_list pw_aff_list::concat(isl::pw_aff_list list2) const
16056{
16057 auto res = isl_pw_aff_list_concat(list1: copy(), list2: list2.release());
16058 return manage(ptr: res);
16059}
16060
16061isl::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
16062{
16063 auto res = isl_pw_aff_list_drop(list: copy(), first, n);
16064 return manage(ptr: res);
16065}
16066
16067stat 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 = { .func: 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(ptr: arg_0));
16075 return ret.release();
16076 };
16077 auto res = isl_pw_aff_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
16078 return manage(val: res);
16079}
16080
16081isl::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::pw_aff el) const
16082{
16083 auto res = isl_pw_aff_list_insert(list: copy(), pos, el: el.release());
16084 return manage(ptr: res);
16085}
16086
16087class size pw_aff_list::size() const
16088{
16089 auto res = isl_pw_aff_list_size(list: get());
16090 return manage(val: res);
16091}
16092
16093inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
16094{
16095 char *str = isl_pw_aff_list_to_str(list: obj.get());
16096 if (!str) {
16097 os.setstate(std::ios_base::badbit);
16098 return os;
16099 }
16100 os << str;
16101 free(ptr: str);
16102 return os;
16103}
16104
16105// implementations for isl::pw_multi_aff
16106pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
16107 return pw_multi_aff(ptr);
16108}
16109pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
16110 ptr = isl_pw_multi_aff_copy(pma: ptr);
16111 return pw_multi_aff(ptr);
16112}
16113
16114pw_multi_aff::pw_multi_aff()
16115 : ptr(nullptr) {}
16116
16117pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
16118 : ptr(nullptr)
16119{
16120 ptr = obj.copy();
16121}
16122
16123pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
16124 : ptr(ptr) {}
16125
16126pw_multi_aff::pw_multi_aff(isl::multi_aff ma)
16127{
16128 auto res = isl_pw_multi_aff_from_multi_aff(ma: ma.release());
16129 ptr = res;
16130}
16131
16132pw_multi_aff::pw_multi_aff(isl::pw_aff pa)
16133{
16134 auto res = isl_pw_multi_aff_from_pw_aff(pa: pa.release());
16135 ptr = res;
16136}
16137
16138pw_multi_aff::pw_multi_aff(isl::ctx ctx, const std::string &str)
16139{
16140 auto res = isl_pw_multi_aff_read_from_str(ctx: ctx.release(), str: str.c_str());
16141 ptr = res;
16142}
16143
16144pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
16145 std::swap(a&: this->ptr, b&: obj.ptr);
16146 return *this;
16147}
16148
16149pw_multi_aff::~pw_multi_aff() {
16150 if (ptr)
16151 isl_pw_multi_aff_free(pma: ptr);
16152}
16153
16154__isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
16155 return isl_pw_multi_aff_copy(pma: ptr);
16156}
16157
16158__isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
16159 return ptr;
16160}
16161
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
16168bool pw_multi_aff::is_null() const {
16169 return ptr == nullptr;
16170}
16171
16172isl::ctx pw_multi_aff::ctx() const {
16173 return isl::ctx(isl_pw_multi_aff_get_ctx(pma: ptr));
16174}
16175
16176isl::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
16181isl::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
16186isl::pw_multi_aff pw_multi_aff::add(isl::pw_multi_aff pma2) const
16187{
16188 auto res = isl_pw_multi_aff_add(pma1: copy(), pma2: pma2.release());
16189 return manage(ptr: res);
16190}
16191
16192isl::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
16197isl::pw_multi_aff pw_multi_aff::add(const isl::multi_aff &pma2) const
16198{
16199 return this->add(pma2: isl::pw_multi_aff(pma2));
16200}
16201
16202isl::pw_multi_aff pw_multi_aff::add(const isl::pw_aff &pma2) const
16203{
16204 return this->add(pma2: isl::pw_multi_aff(pma2));
16205}
16206
16207isl::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(pma: copy(), mv: mv.release());
16210 return manage(ptr: res);
16211}
16212
16213isl::pw_multi_aff pw_multi_aff::add_constant(isl::val v) const
16214{
16215 auto res = isl_pw_multi_aff_add_constant_val(pma: copy(), v: v.release());
16216 return manage(ptr: res);
16217}
16218
16219isl::pw_multi_aff pw_multi_aff::add_constant(long v) const
16220{
16221 return this->add_constant(v: isl::val(ctx(), v));
16222}
16223
16224isl::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
16229isl::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
16234isl::map pw_multi_aff::as_map() const
16235{
16236 auto res = isl_pw_multi_aff_as_map(pma: copy());
16237 return manage(ptr: res);
16238}
16239
16240isl::multi_aff pw_multi_aff::as_multi_aff() const
16241{
16242 auto res = isl_pw_multi_aff_as_multi_aff(pma: copy());
16243 return manage(ptr: res);
16244}
16245
16246isl::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
16251isl::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
16256isl::set pw_multi_aff::as_set() const
16257{
16258 auto res = isl_pw_multi_aff_as_set(pma: copy());
16259 return manage(ptr: res);
16260}
16261
16262isl::union_map pw_multi_aff::as_union_map() const
16263{
16264 return isl::union_pw_multi_aff(*this).as_union_map();
16265}
16266
16267isl::pw_aff pw_multi_aff::at(int pos) const
16268{
16269 auto res = isl_pw_multi_aff_get_at(pma: get(), pos);
16270 return manage(ptr: res);
16271}
16272
16273isl::pw_aff pw_multi_aff::get_at(int pos) const
16274{
16275 return at(pos);
16276}
16277
16278isl::set pw_multi_aff::bind(const isl::multi_id &tuple) const
16279{
16280 return isl::multi_pw_aff(*this).bind(tuple);
16281}
16282
16283isl::pw_multi_aff pw_multi_aff::bind_domain(isl::multi_id tuple) const
16284{
16285 auto res = isl_pw_multi_aff_bind_domain(pma: copy(), tuple: tuple.release());
16286 return manage(ptr: res);
16287}
16288
16289isl::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(pma: copy(), tuple: tuple.release());
16292 return manage(ptr: res);
16293}
16294
16295isl::pw_multi_aff pw_multi_aff::coalesce() const
16296{
16297 auto res = isl_pw_multi_aff_coalesce(pma: copy());
16298 return manage(ptr: res);
16299}
16300
16301class size pw_multi_aff::dim(isl::dim type) const
16302{
16303 auto res = isl_pw_multi_aff_dim(pma: get(), type: static_cast<enum isl_dim_type>(type));
16304 return manage(val: res);
16305}
16306
16307isl::set pw_multi_aff::domain() const
16308{
16309 auto res = isl_pw_multi_aff_domain(pma: copy());
16310 return manage(ptr: res);
16311}
16312
16313isl::pw_multi_aff pw_multi_aff::domain_map(isl::space space)
16314{
16315 auto res = isl_pw_multi_aff_domain_map(space: space.release());
16316 return manage(ptr: res);
16317}
16318
16319isl::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(pma: copy(), type: static_cast<enum isl_dim_type>(type), first, n);
16322 return manage(ptr: res);
16323}
16324
16325isl::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
16330isl::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
16335isl::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
16340isl::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(pma1: copy(), pma2: pma2.release());
16343 return manage(ptr: res);
16344}
16345
16346isl::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
16351isl::pw_multi_aff pw_multi_aff::flat_range_product(const isl::multi_aff &pma2) const
16352{
16353 return this->flat_range_product(pma2: isl::pw_multi_aff(pma2));
16354}
16355
16356isl::pw_multi_aff pw_multi_aff::flat_range_product(const isl::pw_aff &pma2) const
16357{
16358 return this->flat_range_product(pma2: isl::pw_multi_aff(pma2));
16359}
16360
16361stat 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 = { .func: 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(ptr: arg_0), manage(ptr: arg_1));
16369 return ret.release();
16370 };
16371 auto res = isl_pw_multi_aff_foreach_piece(pma: get(), fn: fn_lambda, user: &fn_data);
16372 return manage(val: res);
16373}
16374
16375isl::pw_multi_aff pw_multi_aff::from_map(isl::map map)
16376{
16377 auto res = isl_pw_multi_aff_from_map(map: map.release());
16378 return manage(ptr: res);
16379}
16380
16381isl::pw_multi_aff pw_multi_aff::gist(isl::set set) const
16382{
16383 auto res = isl_pw_multi_aff_gist(pma: copy(), set: set.release());
16384 return manage(ptr: res);
16385}
16386
16387isl::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
16392isl::pw_multi_aff pw_multi_aff::gist(const isl::basic_set &set) const
16393{
16394 return this->gist(set: isl::set(set));
16395}
16396
16397isl::pw_multi_aff pw_multi_aff::gist(const isl::point &set) const
16398{
16399 return this->gist(set: isl::set(set));
16400}
16401
16402boolean pw_multi_aff::has_range_tuple_id() const
16403{
16404 auto res = isl_pw_multi_aff_has_range_tuple_id(pma: get());
16405 return manage(val: res);
16406}
16407
16408isl::multi_pw_aff pw_multi_aff::identity() const
16409{
16410 return isl::multi_pw_aff(*this).identity();
16411}
16412
16413isl::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: space.release());
16416 return manage(ptr: res);
16417}
16418
16419isl::pw_multi_aff pw_multi_aff::insert_domain(isl::space domain) const
16420{
16421 auto res = isl_pw_multi_aff_insert_domain(pma: copy(), domain: domain.release());
16422 return manage(ptr: res);
16423}
16424
16425isl::pw_multi_aff pw_multi_aff::intersect_domain(isl::set set) const
16426{
16427 auto res = isl_pw_multi_aff_intersect_domain(pma: copy(), set: set.release());
16428 return manage(ptr: res);
16429}
16430
16431isl::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
16436isl::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
16441isl::pw_multi_aff pw_multi_aff::intersect_domain(const isl::basic_set &set) const
16442{
16443 return this->intersect_domain(set: isl::set(set));
16444}
16445
16446isl::pw_multi_aff pw_multi_aff::intersect_domain(const isl::point &set) const
16447{
16448 return this->intersect_domain(set: isl::set(set));
16449}
16450
16451isl::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
16456isl::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
16461isl::pw_multi_aff pw_multi_aff::intersect_params(isl::set set) const
16462{
16463 auto res = isl_pw_multi_aff_intersect_params(pma: copy(), set: set.release());
16464 return manage(ptr: res);
16465}
16466
16467boolean pw_multi_aff::involves_locals() const
16468{
16469 auto res = isl_pw_multi_aff_involves_locals(pma: get());
16470 return manage(val: res);
16471}
16472
16473boolean pw_multi_aff::involves_nan() const
16474{
16475 return isl::multi_pw_aff(*this).involves_nan();
16476}
16477
16478boolean pw_multi_aff::involves_param(const isl::id &id) const
16479{
16480 return isl::multi_pw_aff(*this).involves_param(id);
16481}
16482
16483boolean pw_multi_aff::involves_param(const std::string &id) const
16484{
16485 return this->involves_param(id: isl::id(ctx(), id));
16486}
16487
16488boolean pw_multi_aff::involves_param(const isl::id_list &list) const
16489{
16490 return isl::multi_pw_aff(*this).involves_param(list);
16491}
16492
16493boolean pw_multi_aff::isa_multi_aff() const
16494{
16495 auto res = isl_pw_multi_aff_isa_multi_aff(pma: get());
16496 return manage(val: res);
16497}
16498
16499boolean pw_multi_aff::isa_pw_multi_aff() const
16500{
16501 return isl::union_pw_multi_aff(*this).isa_pw_multi_aff();
16502}
16503
16504isl::pw_aff_list pw_multi_aff::list() const
16505{
16506 return isl::multi_pw_aff(*this).list();
16507}
16508
16509isl::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
16514isl::multi_val pw_multi_aff::max_multi_val() const
16515{
16516 auto res = isl_pw_multi_aff_max_multi_val(pma: copy());
16517 return manage(ptr: res);
16518}
16519
16520isl::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
16525isl::multi_val pw_multi_aff::min_multi_val() const
16526{
16527 auto res = isl_pw_multi_aff_min_multi_val(pma: copy());
16528 return manage(ptr: res);
16529}
16530
16531isl::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: domain.release(), mv: mv.release());
16534 return manage(ptr: res);
16535}
16536
16537class size pw_multi_aff::n_piece() const
16538{
16539 auto res = isl_pw_multi_aff_n_piece(pma: get());
16540 return manage(val: res);
16541}
16542
16543isl::multi_pw_aff pw_multi_aff::neg() const
16544{
16545 return isl::multi_pw_aff(*this).neg();
16546}
16547
16548boolean pw_multi_aff::plain_is_empty() const
16549{
16550 return isl::union_pw_multi_aff(*this).plain_is_empty();
16551}
16552
16553boolean 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
16558boolean 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
16563isl::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(pma1: copy(), pma2: pma2.release());
16566 return manage(ptr: res);
16567}
16568
16569isl::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
16574isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::multi_aff &pma2) const
16575{
16576 return this->preimage_domain_wrapped_domain(pma2: isl::pw_multi_aff(pma2));
16577}
16578
16579isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::pw_aff &pma2) const
16580{
16581 return this->preimage_domain_wrapped_domain(pma2: isl::pw_multi_aff(pma2));
16582}
16583
16584isl::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
16589isl::pw_multi_aff pw_multi_aff::product(isl::pw_multi_aff pma2) const
16590{
16591 auto res = isl_pw_multi_aff_product(pma1: copy(), pma2: pma2.release());
16592 return manage(ptr: res);
16593}
16594
16595isl::pw_multi_aff pw_multi_aff::product(const isl::multi_aff &pma2) const
16596{
16597 return this->product(pma2: isl::pw_multi_aff(pma2));
16598}
16599
16600isl::pw_multi_aff pw_multi_aff::product(const isl::pw_aff &pma2) const
16601{
16602 return this->product(pma2: isl::pw_multi_aff(pma2));
16603}
16604
16605isl::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: space.release(), type: static_cast<enum isl_dim_type>(type), first, n);
16608 return manage(ptr: res);
16609}
16610
16611isl::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
16616isl::pw_multi_aff pw_multi_aff::pullback(isl::multi_aff ma) const
16617{
16618 auto res = isl_pw_multi_aff_pullback_multi_aff(pma: copy(), ma: ma.release());
16619 return manage(ptr: res);
16620}
16621
16622isl::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(pma1: copy(), pma2: pma2.release());
16625 return manage(ptr: res);
16626}
16627
16628isl::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
16633isl::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
16638isl::pw_multi_aff pw_multi_aff::range_factor_domain() const
16639{
16640 auto res = isl_pw_multi_aff_range_factor_domain(pma: copy());
16641 return manage(ptr: res);
16642}
16643
16644isl::pw_multi_aff pw_multi_aff::range_factor_range() const
16645{
16646 auto res = isl_pw_multi_aff_range_factor_range(pma: copy());
16647 return manage(ptr: res);
16648}
16649
16650isl::pw_multi_aff pw_multi_aff::range_map(isl::space space)
16651{
16652 auto res = isl_pw_multi_aff_range_map(space: space.release());
16653 return manage(ptr: res);
16654}
16655
16656isl::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
16661isl::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
16666isl::pw_multi_aff pw_multi_aff::range_product(isl::pw_multi_aff pma2) const
16667{
16668 auto res = isl_pw_multi_aff_range_product(pma1: copy(), pma2: pma2.release());
16669 return manage(ptr: res);
16670}
16671
16672isl::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
16677isl::pw_multi_aff pw_multi_aff::range_product(const isl::multi_aff &pma2) const
16678{
16679 return this->range_product(pma2: isl::pw_multi_aff(pma2));
16680}
16681
16682isl::pw_multi_aff pw_multi_aff::range_product(const isl::pw_aff &pma2) const
16683{
16684 return this->range_product(pma2: isl::pw_multi_aff(pma2));
16685}
16686
16687isl::id pw_multi_aff::range_tuple_id() const
16688{
16689 auto res = isl_pw_multi_aff_get_range_tuple_id(pma: get());
16690 return manage(ptr: res);
16691}
16692
16693isl::id pw_multi_aff::get_range_tuple_id() const
16694{
16695 return range_tuple_id();
16696}
16697
16698isl::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
16703isl::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
16708isl::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
16713isl::pw_multi_aff pw_multi_aff::scale(isl::val v) const
16714{
16715 auto res = isl_pw_multi_aff_scale_val(pma: copy(), v: v.release());
16716 return manage(ptr: res);
16717}
16718
16719isl::pw_multi_aff pw_multi_aff::scale(long v) const
16720{
16721 return this->scale(v: isl::val(ctx(), v));
16722}
16723
16724isl::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
16729isl::pw_multi_aff pw_multi_aff::scale_down(isl::val v) const
16730{
16731 auto res = isl_pw_multi_aff_scale_down_val(pma: copy(), v: v.release());
16732 return manage(ptr: res);
16733}
16734
16735isl::pw_multi_aff pw_multi_aff::scale_down(long v) const
16736{
16737 return this->scale_down(v: isl::val(ctx(), v));
16738}
16739
16740isl::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
16745isl::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
16750isl::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
16755isl::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(pma: copy(), pos, pa: pa.release());
16758 return manage(ptr: res);
16759}
16760
16761isl::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(pma: copy(), id: id.release());
16764 return manage(ptr: res);
16765}
16766
16767isl::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
16772isl::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
16777class size pw_multi_aff::size() const
16778{
16779 return isl::multi_pw_aff(*this).size();
16780}
16781
16782isl::space pw_multi_aff::space() const
16783{
16784 auto res = isl_pw_multi_aff_get_space(pma: get());
16785 return manage(ptr: res);
16786}
16787
16788isl::space pw_multi_aff::get_space() const
16789{
16790 return space();
16791}
16792
16793isl::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
16798isl::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
16803isl::pw_multi_aff pw_multi_aff::sub(isl::pw_multi_aff pma2) const
16804{
16805 auto res = isl_pw_multi_aff_sub(pma1: copy(), pma2: pma2.release());
16806 return manage(ptr: res);
16807}
16808
16809isl::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
16814isl::pw_multi_aff pw_multi_aff::sub(const isl::multi_aff &pma2) const
16815{
16816 return this->sub(pma2: isl::pw_multi_aff(pma2));
16817}
16818
16819isl::pw_multi_aff pw_multi_aff::sub(const isl::pw_aff &pma2) const
16820{
16821 return this->sub(pma2: isl::pw_multi_aff(pma2));
16822}
16823
16824isl::pw_multi_aff pw_multi_aff::subtract_domain(isl::set set) const
16825{
16826 auto res = isl_pw_multi_aff_subtract_domain(pma: copy(), set: set.release());
16827 return manage(ptr: res);
16828}
16829
16830isl::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
16835isl::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
16840isl::pw_multi_aff pw_multi_aff::subtract_domain(const isl::basic_set &set) const
16841{
16842 return this->subtract_domain(set: isl::set(set));
16843}
16844
16845isl::pw_multi_aff pw_multi_aff::subtract_domain(const isl::point &set) const
16846{
16847 return this->subtract_domain(set: isl::set(set));
16848}
16849
16850isl::pw_multi_aff_list pw_multi_aff::to_list() const
16851{
16852 auto res = isl_pw_multi_aff_to_list(el: copy());
16853 return manage(ptr: res);
16854}
16855
16856isl::multi_pw_aff pw_multi_aff::to_multi_pw_aff() const
16857{
16858 auto res = isl_pw_multi_aff_to_multi_pw_aff(pma: copy());
16859 return manage(ptr: res);
16860}
16861
16862isl::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(pma: copy());
16865 return manage(ptr: res);
16866}
16867
16868isl::id pw_multi_aff::tuple_id(isl::dim type) const
16869{
16870 auto res = isl_pw_multi_aff_get_tuple_id(pma: get(), type: static_cast<enum isl_dim_type>(type));
16871 return manage(ptr: res);
16872}
16873
16874isl::id pw_multi_aff::get_tuple_id(isl::dim type) const
16875{
16876 return tuple_id(type);
16877}
16878
16879isl::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
16884isl::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
16889isl::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
16894isl::pw_multi_aff pw_multi_aff::union_add(isl::pw_multi_aff pma2) const
16895{
16896 auto res = isl_pw_multi_aff_union_add(pma1: copy(), pma2: pma2.release());
16897 return manage(ptr: res);
16898}
16899
16900isl::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
16905isl::pw_multi_aff pw_multi_aff::union_add(const isl::multi_aff &pma2) const
16906{
16907 return this->union_add(pma2: isl::pw_multi_aff(pma2));
16908}
16909
16910isl::pw_multi_aff pw_multi_aff::union_add(const isl::pw_aff &pma2) const
16911{
16912 return this->union_add(pma2: isl::pw_multi_aff(pma2));
16913}
16914
16915isl::pw_multi_aff pw_multi_aff::zero(isl::space space)
16916{
16917 auto res = isl_pw_multi_aff_zero(space: space.release());
16918 return manage(ptr: res);
16919}
16920
16921inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
16922{
16923 char *str = isl_pw_multi_aff_to_str(pma: obj.get());
16924 if (!str) {
16925 os.setstate(std::ios_base::badbit);
16926 return os;
16927 }
16928 os << str;
16929 free(ptr: str);
16930 return os;
16931}
16932
16933// implementations for isl::pw_multi_aff_list
16934pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
16935 return pw_multi_aff_list(ptr);
16936}
16937pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
16938 ptr = isl_pw_multi_aff_list_copy(list: ptr);
16939 return pw_multi_aff_list(ptr);
16940}
16941
16942pw_multi_aff_list::pw_multi_aff_list()
16943 : ptr(nullptr) {}
16944
16945pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
16946 : ptr(nullptr)
16947{
16948 ptr = obj.copy();
16949}
16950
16951pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
16952 : ptr(ptr) {}
16953
16954pw_multi_aff_list::pw_multi_aff_list(isl::ctx ctx, int n)
16955{
16956 auto res = isl_pw_multi_aff_list_alloc(ctx: ctx.release(), n);
16957 ptr = res;
16958}
16959
16960pw_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: el.release());
16963 ptr = res;
16964}
16965
16966pw_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: ctx.release(), str: str.c_str());
16969 ptr = res;
16970}
16971
16972pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
16973 std::swap(a&: this->ptr, b&: obj.ptr);
16974 return *this;
16975}
16976
16977pw_multi_aff_list::~pw_multi_aff_list() {
16978 if (ptr)
16979 isl_pw_multi_aff_list_free(list: ptr);
16980}
16981
16982__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
16983 return isl_pw_multi_aff_list_copy(list: ptr);
16984}
16985
16986__isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
16987 return ptr;
16988}
16989
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
16996bool pw_multi_aff_list::is_null() const {
16997 return ptr == nullptr;
16998}
16999
17000isl::ctx pw_multi_aff_list::ctx() const {
17001 return isl::ctx(isl_pw_multi_aff_list_get_ctx(list: ptr));
17002}
17003
17004isl::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(list: copy(), el: el.release());
17007 return manage(ptr: res);
17008}
17009
17010isl::pw_multi_aff pw_multi_aff_list::at(int index) const
17011{
17012 auto res = isl_pw_multi_aff_list_get_at(list: get(), index);
17013 return manage(ptr: res);
17014}
17015
17016isl::pw_multi_aff pw_multi_aff_list::get_at(int index) const
17017{
17018 return at(index);
17019}
17020
17021isl::pw_multi_aff_list pw_multi_aff_list::clear() const
17022{
17023 auto res = isl_pw_multi_aff_list_clear(list: copy());
17024 return manage(ptr: res);
17025}
17026
17027isl::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(list1: copy(), list2: list2.release());
17030 return manage(ptr: res);
17031}
17032
17033isl::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(list: copy(), first, n);
17036 return manage(ptr: res);
17037}
17038
17039stat 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 = { .func: 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(ptr: arg_0));
17047 return ret.release();
17048 };
17049 auto res = isl_pw_multi_aff_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
17050 return manage(val: res);
17051}
17052
17053isl::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(list: copy(), pos, el: el.release());
17056 return manage(ptr: res);
17057}
17058
17059class size pw_multi_aff_list::size() const
17060{
17061 auto res = isl_pw_multi_aff_list_size(list: get());
17062 return manage(val: res);
17063}
17064
17065inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
17066{
17067 char *str = isl_pw_multi_aff_list_to_str(list: obj.get());
17068 if (!str) {
17069 os.setstate(std::ios_base::badbit);
17070 return os;
17071 }
17072 os << str;
17073 free(ptr: str);
17074 return os;
17075}
17076
17077// implementations for isl::schedule
17078schedule manage(__isl_take isl_schedule *ptr) {
17079 return schedule(ptr);
17080}
17081schedule manage_copy(__isl_keep isl_schedule *ptr) {
17082 ptr = isl_schedule_copy(sched: ptr);
17083 return schedule(ptr);
17084}
17085
17086schedule::schedule()
17087 : ptr(nullptr) {}
17088
17089schedule::schedule(const schedule &obj)
17090 : ptr(nullptr)
17091{
17092 ptr = obj.copy();
17093}
17094
17095schedule::schedule(__isl_take isl_schedule *ptr)
17096 : ptr(ptr) {}
17097
17098schedule::schedule(isl::ctx ctx, const std::string &str)
17099{
17100 auto res = isl_schedule_read_from_str(ctx: ctx.release(), str: str.c_str());
17101 ptr = res;
17102}
17103
17104schedule &schedule::operator=(schedule obj) {
17105 std::swap(a&: this->ptr, b&: obj.ptr);
17106 return *this;
17107}
17108
17109schedule::~schedule() {
17110 if (ptr)
17111 isl_schedule_free(sched: ptr);
17112}
17113
17114__isl_give isl_schedule *schedule::copy() const & {
17115 return isl_schedule_copy(sched: ptr);
17116}
17117
17118__isl_keep isl_schedule *schedule::get() const {
17119 return ptr;
17120}
17121
17122__isl_give isl_schedule *schedule::release() {
17123 isl_schedule *tmp = ptr;
17124 ptr = nullptr;
17125 return tmp;
17126}
17127
17128bool schedule::is_null() const {
17129 return ptr == nullptr;
17130}
17131
17132isl::ctx schedule::ctx() const {
17133 return isl::ctx(isl_schedule_get_ctx(sched: ptr));
17134}
17135
17136isl::schedule schedule::align_params(isl::space space) const
17137{
17138 auto res = isl_schedule_align_params(schedule: copy(), space: space.release());
17139 return manage(ptr: res);
17140}
17141
17142isl::union_set schedule::domain() const
17143{
17144 auto res = isl_schedule_get_domain(schedule: get());
17145 return manage(ptr: res);
17146}
17147
17148isl::union_set schedule::get_domain() const
17149{
17150 return domain();
17151}
17152
17153isl::schedule schedule::from_domain(isl::union_set domain)
17154{
17155 auto res = isl_schedule_from_domain(domain: domain.release());
17156 return manage(ptr: res);
17157}
17158
17159isl::schedule schedule::gist_domain_params(isl::set context) const
17160{
17161 auto res = isl_schedule_gist_domain_params(schedule: copy(), context: context.release());
17162 return manage(ptr: res);
17163}
17164
17165isl::schedule schedule::insert_partial_schedule(isl::multi_union_pw_aff partial) const
17166{
17167 auto res = isl_schedule_insert_partial_schedule(schedule: copy(), partial: partial.release());
17168 return manage(ptr: res);
17169}
17170
17171isl::schedule schedule::intersect_domain(isl::union_set domain) const
17172{
17173 auto res = isl_schedule_intersect_domain(schedule: copy(), domain: domain.release());
17174 return manage(ptr: res);
17175}
17176
17177isl::union_map schedule::map() const
17178{
17179 auto res = isl_schedule_get_map(sched: get());
17180 return manage(ptr: res);
17181}
17182
17183isl::union_map schedule::get_map() const
17184{
17185 return map();
17186}
17187
17188isl::schedule schedule::pullback(isl::union_pw_multi_aff upma) const
17189{
17190 auto res = isl_schedule_pullback_union_pw_multi_aff(schedule: copy(), upma: upma.release());
17191 return manage(ptr: res);
17192}
17193
17194isl::schedule_node schedule::root() const
17195{
17196 auto res = isl_schedule_get_root(schedule: get());
17197 return manage(ptr: res);
17198}
17199
17200isl::schedule_node schedule::get_root() const
17201{
17202 return root();
17203}
17204
17205isl::schedule schedule::sequence(isl::schedule schedule2) const
17206{
17207 auto res = isl_schedule_sequence(schedule1: copy(), schedule2: schedule2.release());
17208 return manage(ptr: res);
17209}
17210
17211inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
17212{
17213 char *str = isl_schedule_to_str(schedule: obj.get());
17214 if (!str) {
17215 os.setstate(std::ios_base::badbit);
17216 return os;
17217 }
17218 os << str;
17219 free(ptr: str);
17220 return os;
17221}
17222
17223// implementations for isl::schedule_constraints
17224schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
17225 return schedule_constraints(ptr);
17226}
17227schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
17228 ptr = isl_schedule_constraints_copy(sc: ptr);
17229 return schedule_constraints(ptr);
17230}
17231
17232schedule_constraints::schedule_constraints()
17233 : ptr(nullptr) {}
17234
17235schedule_constraints::schedule_constraints(const schedule_constraints &obj)
17236 : ptr(nullptr)
17237{
17238 ptr = obj.copy();
17239}
17240
17241schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
17242 : ptr(ptr) {}
17243
17244schedule_constraints::schedule_constraints(isl::ctx ctx, const std::string &str)
17245{
17246 auto res = isl_schedule_constraints_read_from_str(ctx: ctx.release(), str: str.c_str());
17247 ptr = res;
17248}
17249
17250schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
17251 std::swap(a&: this->ptr, b&: obj.ptr);
17252 return *this;
17253}
17254
17255schedule_constraints::~schedule_constraints() {
17256 if (ptr)
17257 isl_schedule_constraints_free(sc: ptr);
17258}
17259
17260__isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
17261 return isl_schedule_constraints_copy(sc: ptr);
17262}
17263
17264__isl_keep isl_schedule_constraints *schedule_constraints::get() const {
17265 return ptr;
17266}
17267
17268__isl_give isl_schedule_constraints *schedule_constraints::release() {
17269 isl_schedule_constraints *tmp = ptr;
17270 ptr = nullptr;
17271 return tmp;
17272}
17273
17274bool schedule_constraints::is_null() const {
17275 return ptr == nullptr;
17276}
17277
17278isl::ctx schedule_constraints::ctx() const {
17279 return isl::ctx(isl_schedule_constraints_get_ctx(sc: ptr));
17280}
17281
17282isl::union_map schedule_constraints::coincidence() const
17283{
17284 auto res = isl_schedule_constraints_get_coincidence(sc: get());
17285 return manage(ptr: res);
17286}
17287
17288isl::union_map schedule_constraints::get_coincidence() const
17289{
17290 return coincidence();
17291}
17292
17293isl::schedule schedule_constraints::compute_schedule() const
17294{
17295 auto res = isl_schedule_constraints_compute_schedule(sc: copy());
17296 return manage(ptr: res);
17297}
17298
17299isl::union_map schedule_constraints::conditional_validity() const
17300{
17301 auto res = isl_schedule_constraints_get_conditional_validity(sc: get());
17302 return manage(ptr: res);
17303}
17304
17305isl::union_map schedule_constraints::get_conditional_validity() const
17306{
17307 return conditional_validity();
17308}
17309
17310isl::union_map schedule_constraints::conditional_validity_condition() const
17311{
17312 auto res = isl_schedule_constraints_get_conditional_validity_condition(sc: get());
17313 return manage(ptr: res);
17314}
17315
17316isl::union_map schedule_constraints::get_conditional_validity_condition() const
17317{
17318 return conditional_validity_condition();
17319}
17320
17321isl::set schedule_constraints::context() const
17322{
17323 auto res = isl_schedule_constraints_get_context(sc: get());
17324 return manage(ptr: res);
17325}
17326
17327isl::set schedule_constraints::get_context() const
17328{
17329 return context();
17330}
17331
17332isl::union_set schedule_constraints::domain() const
17333{
17334 auto res = isl_schedule_constraints_get_domain(sc: get());
17335 return manage(ptr: res);
17336}
17337
17338isl::union_set schedule_constraints::get_domain() const
17339{
17340 return domain();
17341}
17342
17343isl::schedule_constraints schedule_constraints::on_domain(isl::union_set domain)
17344{
17345 auto res = isl_schedule_constraints_on_domain(domain: domain.release());
17346 return manage(ptr: res);
17347}
17348
17349isl::union_map schedule_constraints::proximity() const
17350{
17351 auto res = isl_schedule_constraints_get_proximity(sc: get());
17352 return manage(ptr: res);
17353}
17354
17355isl::union_map schedule_constraints::get_proximity() const
17356{
17357 return proximity();
17358}
17359
17360isl::schedule_constraints schedule_constraints::set_coincidence(isl::union_map coincidence) const
17361{
17362 auto res = isl_schedule_constraints_set_coincidence(sc: copy(), coincidence: coincidence.release());
17363 return manage(ptr: res);
17364}
17365
17366isl::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(sc: copy(), condition: condition.release(), validity: validity.release());
17369 return manage(ptr: res);
17370}
17371
17372isl::schedule_constraints schedule_constraints::set_context(isl::set context) const
17373{
17374 auto res = isl_schedule_constraints_set_context(sc: copy(), context: context.release());
17375 return manage(ptr: res);
17376}
17377
17378isl::schedule_constraints schedule_constraints::set_proximity(isl::union_map proximity) const
17379{
17380 auto res = isl_schedule_constraints_set_proximity(sc: copy(), proximity: proximity.release());
17381 return manage(ptr: res);
17382}
17383
17384isl::schedule_constraints schedule_constraints::set_validity(isl::union_map validity) const
17385{
17386 auto res = isl_schedule_constraints_set_validity(sc: copy(), validity: validity.release());
17387 return manage(ptr: res);
17388}
17389
17390isl::union_map schedule_constraints::validity() const
17391{
17392 auto res = isl_schedule_constraints_get_validity(sc: get());
17393 return manage(ptr: res);
17394}
17395
17396isl::union_map schedule_constraints::get_validity() const
17397{
17398 return validity();
17399}
17400
17401inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
17402{
17403 char *str = isl_schedule_constraints_to_str(sc: obj.get());
17404 if (!str) {
17405 os.setstate(std::ios_base::badbit);
17406 return os;
17407 }
17408 os << str;
17409 free(ptr: str);
17410 return os;
17411}
17412
17413// implementations for isl::schedule_node
17414schedule_node manage(__isl_take isl_schedule_node *ptr) {
17415 return schedule_node(ptr);
17416}
17417schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
17418 ptr = isl_schedule_node_copy(node: ptr);
17419 return schedule_node(ptr);
17420}
17421
17422schedule_node::schedule_node()
17423 : ptr(nullptr) {}
17424
17425schedule_node::schedule_node(const schedule_node &obj)
17426 : ptr(nullptr)
17427{
17428 ptr = obj.copy();
17429}
17430
17431schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
17432 : ptr(ptr) {}
17433
17434schedule_node &schedule_node::operator=(schedule_node obj) {
17435 std::swap(a&: this->ptr, b&: obj.ptr);
17436 return *this;
17437}
17438
17439schedule_node::~schedule_node() {
17440 if (ptr)
17441 isl_schedule_node_free(node: ptr);
17442}
17443
17444__isl_give isl_schedule_node *schedule_node::copy() const & {
17445 return isl_schedule_node_copy(node: ptr);
17446}
17447
17448__isl_keep isl_schedule_node *schedule_node::get() const {
17449 return ptr;
17450}
17451
17452__isl_give isl_schedule_node *schedule_node::release() {
17453 isl_schedule_node *tmp = ptr;
17454 ptr = nullptr;
17455 return tmp;
17456}
17457
17458bool schedule_node::is_null() const {
17459 return ptr == nullptr;
17460}
17461
17462template <typename T, typename>
17463boolean schedule_node::isa_type(T subtype) const
17464{
17465 if (is_null())
17466 return boolean();
17467 return isl_schedule_node_get_type(node: get()) == subtype;
17468}
17469template <class T>
17470boolean schedule_node::isa() const
17471{
17472 return isa_type<decltype(T::type)>(T::type);
17473}
17474template <class T>
17475T 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
17482isl::ctx schedule_node::ctx() const {
17483 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
17484}
17485
17486isl::schedule_node schedule_node::ancestor(int generation) const
17487{
17488 auto res = isl_schedule_node_ancestor(node: copy(), generation);
17489 return manage(ptr: res);
17490}
17491
17492class size schedule_node::ancestor_child_position(const isl::schedule_node &ancestor) const
17493{
17494 auto res = isl_schedule_node_get_ancestor_child_position(node: get(), ancestor: ancestor.get());
17495 return manage(val: res);
17496}
17497
17498class size schedule_node::get_ancestor_child_position(const isl::schedule_node &ancestor) const
17499{
17500 return ancestor_child_position(ancestor);
17501}
17502
17503isl::schedule_node schedule_node::child(int pos) const
17504{
17505 auto res = isl_schedule_node_child(node: copy(), pos);
17506 return manage(ptr: res);
17507}
17508
17509class size schedule_node::child_position() const
17510{
17511 auto res = isl_schedule_node_get_child_position(node: get());
17512 return manage(val: res);
17513}
17514
17515class size schedule_node::get_child_position() const
17516{
17517 return child_position();
17518}
17519
17520isl::union_set schedule_node::domain() const
17521{
17522 auto res = isl_schedule_node_get_domain(node: get());
17523 return manage(ptr: res);
17524}
17525
17526isl::union_set schedule_node::get_domain() const
17527{
17528 return domain();
17529}
17530
17531boolean 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 = { .func: 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(ptr: arg_0));
17539 return ret.release();
17540 };
17541 auto res = isl_schedule_node_every_descendant(node: get(), test: test_lambda, user: &test_data);
17542 return manage(val: res);
17543}
17544
17545isl::schedule_node schedule_node::first_child() const
17546{
17547 auto res = isl_schedule_node_first_child(node: copy());
17548 return manage(ptr: res);
17549}
17550
17551stat 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 = { .func: 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(ptr: arg_0));
17559 return ret.release();
17560 };
17561 auto res = isl_schedule_node_foreach_ancestor_top_down(node: get(), fn: fn_lambda, user: &fn_data);
17562 return manage(val: res);
17563}
17564
17565stat 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 = { .func: 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(ptr: arg_0));
17573 return ret.release();
17574 };
17575 auto res = isl_schedule_node_foreach_descendant_top_down(node: get(), fn: fn_lambda, user: &fn_data);
17576 return manage(val: res);
17577}
17578
17579isl::schedule_node schedule_node::from_domain(isl::union_set domain)
17580{
17581 auto res = isl_schedule_node_from_domain(domain: domain.release());
17582 return manage(ptr: res);
17583}
17584
17585isl::schedule_node schedule_node::from_extension(isl::union_map extension)
17586{
17587 auto res = isl_schedule_node_from_extension(extension: extension.release());
17588 return manage(ptr: res);
17589}
17590
17591isl::schedule_node schedule_node::graft_after(isl::schedule_node graft) const
17592{
17593 auto res = isl_schedule_node_graft_after(node: copy(), graft: graft.release());
17594 return manage(ptr: res);
17595}
17596
17597isl::schedule_node schedule_node::graft_before(isl::schedule_node graft) const
17598{
17599 auto res = isl_schedule_node_graft_before(node: copy(), graft: graft.release());
17600 return manage(ptr: res);
17601}
17602
17603boolean schedule_node::has_children() const
17604{
17605 auto res = isl_schedule_node_has_children(node: get());
17606 return manage(val: res);
17607}
17608
17609boolean schedule_node::has_next_sibling() const
17610{
17611 auto res = isl_schedule_node_has_next_sibling(node: get());
17612 return manage(val: res);
17613}
17614
17615boolean schedule_node::has_parent() const
17616{
17617 auto res = isl_schedule_node_has_parent(node: get());
17618 return manage(val: res);
17619}
17620
17621boolean schedule_node::has_previous_sibling() const
17622{
17623 auto res = isl_schedule_node_has_previous_sibling(node: get());
17624 return manage(val: res);
17625}
17626
17627isl::schedule_node schedule_node::insert_context(isl::set context) const
17628{
17629 auto res = isl_schedule_node_insert_context(node: copy(), context: context.release());
17630 return manage(ptr: res);
17631}
17632
17633isl::schedule_node schedule_node::insert_filter(isl::union_set filter) const
17634{
17635 auto res = isl_schedule_node_insert_filter(node: copy(), filter: filter.release());
17636 return manage(ptr: res);
17637}
17638
17639isl::schedule_node schedule_node::insert_guard(isl::set context) const
17640{
17641 auto res = isl_schedule_node_insert_guard(node: copy(), context: context.release());
17642 return manage(ptr: res);
17643}
17644
17645isl::schedule_node schedule_node::insert_mark(isl::id mark) const
17646{
17647 auto res = isl_schedule_node_insert_mark(node: copy(), mark: mark.release());
17648 return manage(ptr: res);
17649}
17650
17651isl::schedule_node schedule_node::insert_mark(const std::string &mark) const
17652{
17653 return this->insert_mark(mark: isl::id(ctx(), mark));
17654}
17655
17656isl::schedule_node schedule_node::insert_partial_schedule(isl::multi_union_pw_aff schedule) const
17657{
17658 auto res = isl_schedule_node_insert_partial_schedule(node: copy(), schedule: schedule.release());
17659 return manage(ptr: res);
17660}
17661
17662isl::schedule_node schedule_node::insert_sequence(isl::union_set_list filters) const
17663{
17664 auto res = isl_schedule_node_insert_sequence(node: copy(), filters: filters.release());
17665 return manage(ptr: res);
17666}
17667
17668isl::schedule_node schedule_node::insert_set(isl::union_set_list filters) const
17669{
17670 auto res = isl_schedule_node_insert_set(node: copy(), filters: filters.release());
17671 return manage(ptr: res);
17672}
17673
17674boolean schedule_node::is_equal(const isl::schedule_node &node2) const
17675{
17676 auto res = isl_schedule_node_is_equal(node1: get(), node2: node2.get());
17677 return manage(val: res);
17678}
17679
17680boolean schedule_node::is_subtree_anchored() const
17681{
17682 auto res = isl_schedule_node_is_subtree_anchored(node: get());
17683 return manage(val: res);
17684}
17685
17686isl::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 = { .func: 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(ptr: arg_0));
17694 return ret.release();
17695 };
17696 auto res = isl_schedule_node_map_descendant_bottom_up(node: copy(), fn: fn_lambda, user: &fn_data);
17697 return manage(ptr: res);
17698}
17699
17700class size schedule_node::n_children() const
17701{
17702 auto res = isl_schedule_node_n_children(node: get());
17703 return manage(val: res);
17704}
17705
17706isl::schedule_node schedule_node::next_sibling() const
17707{
17708 auto res = isl_schedule_node_next_sibling(node: copy());
17709 return manage(ptr: res);
17710}
17711
17712isl::schedule_node schedule_node::order_after(isl::union_set filter) const
17713{
17714 auto res = isl_schedule_node_order_after(node: copy(), filter: filter.release());
17715 return manage(ptr: res);
17716}
17717
17718isl::schedule_node schedule_node::order_before(isl::union_set filter) const
17719{
17720 auto res = isl_schedule_node_order_before(node: copy(), filter: filter.release());
17721 return manage(ptr: res);
17722}
17723
17724isl::schedule_node schedule_node::parent() const
17725{
17726 auto res = isl_schedule_node_parent(node: copy());
17727 return manage(ptr: res);
17728}
17729
17730isl::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(node: get());
17733 return manage(ptr: res);
17734}
17735
17736isl::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
17741isl::union_map schedule_node::prefix_schedule_relation() const
17742{
17743 auto res = isl_schedule_node_get_prefix_schedule_relation(node: get());
17744 return manage(ptr: res);
17745}
17746
17747isl::union_map schedule_node::get_prefix_schedule_relation() const
17748{
17749 return prefix_schedule_relation();
17750}
17751
17752isl::union_map schedule_node::prefix_schedule_union_map() const
17753{
17754 auto res = isl_schedule_node_get_prefix_schedule_union_map(node: get());
17755 return manage(ptr: res);
17756}
17757
17758isl::union_map schedule_node::get_prefix_schedule_union_map() const
17759{
17760 return prefix_schedule_union_map();
17761}
17762
17763isl::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(node: get());
17766 return manage(ptr: res);
17767}
17768
17769isl::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
17774isl::schedule_node schedule_node::previous_sibling() const
17775{
17776 auto res = isl_schedule_node_previous_sibling(node: copy());
17777 return manage(ptr: res);
17778}
17779
17780isl::schedule_node schedule_node::root() const
17781{
17782 auto res = isl_schedule_node_root(node: copy());
17783 return manage(ptr: res);
17784}
17785
17786isl::schedule schedule_node::schedule() const
17787{
17788 auto res = isl_schedule_node_get_schedule(node: get());
17789 return manage(ptr: res);
17790}
17791
17792isl::schedule schedule_node::get_schedule() const
17793{
17794 return schedule();
17795}
17796
17797class size schedule_node::schedule_depth() const
17798{
17799 auto res = isl_schedule_node_get_schedule_depth(node: get());
17800 return manage(val: res);
17801}
17802
17803class size schedule_node::get_schedule_depth() const
17804{
17805 return schedule_depth();
17806}
17807
17808isl::schedule_node schedule_node::shared_ancestor(const isl::schedule_node &node2) const
17809{
17810 auto res = isl_schedule_node_get_shared_ancestor(node1: get(), node2: node2.get());
17811 return manage(ptr: res);
17812}
17813
17814isl::schedule_node schedule_node::get_shared_ancestor(const isl::schedule_node &node2) const
17815{
17816 return shared_ancestor(node2);
17817}
17818
17819class size schedule_node::tree_depth() const
17820{
17821 auto res = isl_schedule_node_get_tree_depth(node: get());
17822 return manage(val: res);
17823}
17824
17825class size schedule_node::get_tree_depth() const
17826{
17827 return tree_depth();
17828}
17829
17830isl::union_set schedule_node::universe_domain() const
17831{
17832 auto res = isl_schedule_node_get_universe_domain(node: get());
17833 return manage(ptr: res);
17834}
17835
17836isl::union_set schedule_node::get_universe_domain() const
17837{
17838 return universe_domain();
17839}
17840
17841inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
17842{
17843 char *str = isl_schedule_node_to_str(node: obj.get());
17844 if (!str) {
17845 os.setstate(std::ios_base::badbit);
17846 return os;
17847 }
17848 os << str;
17849 free(ptr: str);
17850 return os;
17851}
17852
17853// implementations for isl::schedule_node_band
17854schedule_node_band::schedule_node_band()
17855 : schedule_node() {}
17856
17857schedule_node_band::schedule_node_band(const schedule_node_band &obj)
17858 : schedule_node(obj)
17859{
17860}
17861
17862schedule_node_band::schedule_node_band(__isl_take isl_schedule_node *ptr)
17863 : schedule_node(ptr) {}
17864
17865schedule_node_band &schedule_node_band::operator=(schedule_node_band obj) {
17866 std::swap(a&: this->ptr, b&: obj.ptr);
17867 return *this;
17868}
17869
17870isl::ctx schedule_node_band::ctx() const {
17871 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
17872}
17873
17874isl::union_set schedule_node_band::ast_build_options() const
17875{
17876 auto res = isl_schedule_node_band_get_ast_build_options(node: get());
17877 return manage(ptr: res);
17878}
17879
17880isl::union_set schedule_node_band::get_ast_build_options() const
17881{
17882 return ast_build_options();
17883}
17884
17885isl::set schedule_node_band::ast_isolate_option() const
17886{
17887 auto res = isl_schedule_node_band_get_ast_isolate_option(node: get());
17888 return manage(ptr: res);
17889}
17890
17891isl::set schedule_node_band::get_ast_isolate_option() const
17892{
17893 return ast_isolate_option();
17894}
17895
17896boolean schedule_node_band::member_get_coincident(int pos) const
17897{
17898 auto res = isl_schedule_node_band_member_get_coincident(node: get(), pos);
17899 return manage(val: res);
17900}
17901
17902schedule_node_band schedule_node_band::member_set_coincident(int pos, int coincident) const
17903{
17904 auto res = isl_schedule_node_band_member_set_coincident(node: copy(), pos, coincident);
17905 return manage(ptr: res).as<schedule_node_band>();
17906}
17907
17908schedule_node_band schedule_node_band::mod(isl::multi_val mv) const
17909{
17910 auto res = isl_schedule_node_band_mod(node: copy(), mv: mv.release());
17911 return manage(ptr: res).as<schedule_node_band>();
17912}
17913
17914class size schedule_node_band::n_member() const
17915{
17916 auto res = isl_schedule_node_band_n_member(node: get());
17917 return manage(val: res);
17918}
17919
17920isl::multi_union_pw_aff schedule_node_band::partial_schedule() const
17921{
17922 auto res = isl_schedule_node_band_get_partial_schedule(node: get());
17923 return manage(ptr: res);
17924}
17925
17926isl::multi_union_pw_aff schedule_node_band::get_partial_schedule() const
17927{
17928 return partial_schedule();
17929}
17930
17931boolean schedule_node_band::permutable() const
17932{
17933 auto res = isl_schedule_node_band_get_permutable(node: get());
17934 return manage(val: res);
17935}
17936
17937boolean schedule_node_band::get_permutable() const
17938{
17939 return permutable();
17940}
17941
17942schedule_node_band schedule_node_band::scale(isl::multi_val mv) const
17943{
17944 auto res = isl_schedule_node_band_scale(node: copy(), mv: mv.release());
17945 return manage(ptr: res).as<schedule_node_band>();
17946}
17947
17948schedule_node_band schedule_node_band::scale_down(isl::multi_val mv) const
17949{
17950 auto res = isl_schedule_node_band_scale_down(node: copy(), mv: mv.release());
17951 return manage(ptr: res).as<schedule_node_band>();
17952}
17953
17954schedule_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(node: copy(), options: options.release());
17957 return manage(ptr: res).as<schedule_node_band>();
17958}
17959
17960schedule_node_band schedule_node_band::set_permutable(int permutable) const
17961{
17962 auto res = isl_schedule_node_band_set_permutable(node: copy(), permutable);
17963 return manage(ptr: res).as<schedule_node_band>();
17964}
17965
17966schedule_node_band schedule_node_band::shift(isl::multi_union_pw_aff shift) const
17967{
17968 auto res = isl_schedule_node_band_shift(node: copy(), shift: shift.release());
17969 return manage(ptr: res).as<schedule_node_band>();
17970}
17971
17972schedule_node_band schedule_node_band::split(int pos) const
17973{
17974 auto res = isl_schedule_node_band_split(node: copy(), pos);
17975 return manage(ptr: res).as<schedule_node_band>();
17976}
17977
17978schedule_node_band schedule_node_band::tile(isl::multi_val sizes) const
17979{
17980 auto res = isl_schedule_node_band_tile(node: copy(), sizes: sizes.release());
17981 return manage(ptr: res).as<schedule_node_band>();
17982}
17983
17984schedule_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(node: copy(), pos, type: isl_ast_loop_default);
17987 return manage(ptr: res).as<schedule_node_band>();
17988}
17989
17990schedule_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(node: copy(), pos, type: isl_ast_loop_atomic);
17993 return manage(ptr: res).as<schedule_node_band>();
17994}
17995
17996schedule_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(node: copy(), pos, type: isl_ast_loop_unroll);
17999 return manage(ptr: res).as<schedule_node_band>();
18000}
18001
18002schedule_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(node: copy(), pos, type: isl_ast_loop_separate);
18005 return manage(ptr: res).as<schedule_node_band>();
18006}
18007
18008inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
18009{
18010 char *str = isl_schedule_node_to_str(node: obj.get());
18011 if (!str) {
18012 os.setstate(std::ios_base::badbit);
18013 return os;
18014 }
18015 os << str;
18016 free(ptr: str);
18017 return os;
18018}
18019
18020// implementations for isl::schedule_node_context
18021schedule_node_context::schedule_node_context()
18022 : schedule_node() {}
18023
18024schedule_node_context::schedule_node_context(const schedule_node_context &obj)
18025 : schedule_node(obj)
18026{
18027}
18028
18029schedule_node_context::schedule_node_context(__isl_take isl_schedule_node *ptr)
18030 : schedule_node(ptr) {}
18031
18032schedule_node_context &schedule_node_context::operator=(schedule_node_context obj) {
18033 std::swap(a&: this->ptr, b&: obj.ptr);
18034 return *this;
18035}
18036
18037isl::ctx schedule_node_context::ctx() const {
18038 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18039}
18040
18041isl::set schedule_node_context::context() const
18042{
18043 auto res = isl_schedule_node_context_get_context(node: get());
18044 return manage(ptr: res);
18045}
18046
18047isl::set schedule_node_context::get_context() const
18048{
18049 return context();
18050}
18051
18052inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
18053{
18054 char *str = isl_schedule_node_to_str(node: obj.get());
18055 if (!str) {
18056 os.setstate(std::ios_base::badbit);
18057 return os;
18058 }
18059 os << str;
18060 free(ptr: str);
18061 return os;
18062}
18063
18064// implementations for isl::schedule_node_domain
18065schedule_node_domain::schedule_node_domain()
18066 : schedule_node() {}
18067
18068schedule_node_domain::schedule_node_domain(const schedule_node_domain &obj)
18069 : schedule_node(obj)
18070{
18071}
18072
18073schedule_node_domain::schedule_node_domain(__isl_take isl_schedule_node *ptr)
18074 : schedule_node(ptr) {}
18075
18076schedule_node_domain &schedule_node_domain::operator=(schedule_node_domain obj) {
18077 std::swap(a&: this->ptr, b&: obj.ptr);
18078 return *this;
18079}
18080
18081isl::ctx schedule_node_domain::ctx() const {
18082 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18083}
18084
18085isl::union_set schedule_node_domain::domain() const
18086{
18087 auto res = isl_schedule_node_domain_get_domain(node: get());
18088 return manage(ptr: res);
18089}
18090
18091isl::union_set schedule_node_domain::get_domain() const
18092{
18093 return domain();
18094}
18095
18096inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
18097{
18098 char *str = isl_schedule_node_to_str(node: obj.get());
18099 if (!str) {
18100 os.setstate(std::ios_base::badbit);
18101 return os;
18102 }
18103 os << str;
18104 free(ptr: str);
18105 return os;
18106}
18107
18108// implementations for isl::schedule_node_expansion
18109schedule_node_expansion::schedule_node_expansion()
18110 : schedule_node() {}
18111
18112schedule_node_expansion::schedule_node_expansion(const schedule_node_expansion &obj)
18113 : schedule_node(obj)
18114{
18115}
18116
18117schedule_node_expansion::schedule_node_expansion(__isl_take isl_schedule_node *ptr)
18118 : schedule_node(ptr) {}
18119
18120schedule_node_expansion &schedule_node_expansion::operator=(schedule_node_expansion obj) {
18121 std::swap(a&: this->ptr, b&: obj.ptr);
18122 return *this;
18123}
18124
18125isl::ctx schedule_node_expansion::ctx() const {
18126 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18127}
18128
18129isl::union_pw_multi_aff schedule_node_expansion::contraction() const
18130{
18131 auto res = isl_schedule_node_expansion_get_contraction(node: get());
18132 return manage(ptr: res);
18133}
18134
18135isl::union_pw_multi_aff schedule_node_expansion::get_contraction() const
18136{
18137 return contraction();
18138}
18139
18140isl::union_map schedule_node_expansion::expansion() const
18141{
18142 auto res = isl_schedule_node_expansion_get_expansion(node: get());
18143 return manage(ptr: res);
18144}
18145
18146isl::union_map schedule_node_expansion::get_expansion() const
18147{
18148 return expansion();
18149}
18150
18151inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
18152{
18153 char *str = isl_schedule_node_to_str(node: obj.get());
18154 if (!str) {
18155 os.setstate(std::ios_base::badbit);
18156 return os;
18157 }
18158 os << str;
18159 free(ptr: str);
18160 return os;
18161}
18162
18163// implementations for isl::schedule_node_extension
18164schedule_node_extension::schedule_node_extension()
18165 : schedule_node() {}
18166
18167schedule_node_extension::schedule_node_extension(const schedule_node_extension &obj)
18168 : schedule_node(obj)
18169{
18170}
18171
18172schedule_node_extension::schedule_node_extension(__isl_take isl_schedule_node *ptr)
18173 : schedule_node(ptr) {}
18174
18175schedule_node_extension &schedule_node_extension::operator=(schedule_node_extension obj) {
18176 std::swap(a&: this->ptr, b&: obj.ptr);
18177 return *this;
18178}
18179
18180isl::ctx schedule_node_extension::ctx() const {
18181 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18182}
18183
18184isl::union_map schedule_node_extension::extension() const
18185{
18186 auto res = isl_schedule_node_extension_get_extension(node: get());
18187 return manage(ptr: res);
18188}
18189
18190isl::union_map schedule_node_extension::get_extension() const
18191{
18192 return extension();
18193}
18194
18195inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
18196{
18197 char *str = isl_schedule_node_to_str(node: obj.get());
18198 if (!str) {
18199 os.setstate(std::ios_base::badbit);
18200 return os;
18201 }
18202 os << str;
18203 free(ptr: str);
18204 return os;
18205}
18206
18207// implementations for isl::schedule_node_filter
18208schedule_node_filter::schedule_node_filter()
18209 : schedule_node() {}
18210
18211schedule_node_filter::schedule_node_filter(const schedule_node_filter &obj)
18212 : schedule_node(obj)
18213{
18214}
18215
18216schedule_node_filter::schedule_node_filter(__isl_take isl_schedule_node *ptr)
18217 : schedule_node(ptr) {}
18218
18219schedule_node_filter &schedule_node_filter::operator=(schedule_node_filter obj) {
18220 std::swap(a&: this->ptr, b&: obj.ptr);
18221 return *this;
18222}
18223
18224isl::ctx schedule_node_filter::ctx() const {
18225 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18226}
18227
18228isl::union_set schedule_node_filter::filter() const
18229{
18230 auto res = isl_schedule_node_filter_get_filter(node: get());
18231 return manage(ptr: res);
18232}
18233
18234isl::union_set schedule_node_filter::get_filter() const
18235{
18236 return filter();
18237}
18238
18239inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
18240{
18241 char *str = isl_schedule_node_to_str(node: obj.get());
18242 if (!str) {
18243 os.setstate(std::ios_base::badbit);
18244 return os;
18245 }
18246 os << str;
18247 free(ptr: str);
18248 return os;
18249}
18250
18251// implementations for isl::schedule_node_guard
18252schedule_node_guard::schedule_node_guard()
18253 : schedule_node() {}
18254
18255schedule_node_guard::schedule_node_guard(const schedule_node_guard &obj)
18256 : schedule_node(obj)
18257{
18258}
18259
18260schedule_node_guard::schedule_node_guard(__isl_take isl_schedule_node *ptr)
18261 : schedule_node(ptr) {}
18262
18263schedule_node_guard &schedule_node_guard::operator=(schedule_node_guard obj) {
18264 std::swap(a&: this->ptr, b&: obj.ptr);
18265 return *this;
18266}
18267
18268isl::ctx schedule_node_guard::ctx() const {
18269 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18270}
18271
18272isl::set schedule_node_guard::guard() const
18273{
18274 auto res = isl_schedule_node_guard_get_guard(node: get());
18275 return manage(ptr: res);
18276}
18277
18278isl::set schedule_node_guard::get_guard() const
18279{
18280 return guard();
18281}
18282
18283inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
18284{
18285 char *str = isl_schedule_node_to_str(node: obj.get());
18286 if (!str) {
18287 os.setstate(std::ios_base::badbit);
18288 return os;
18289 }
18290 os << str;
18291 free(ptr: str);
18292 return os;
18293}
18294
18295// implementations for isl::schedule_node_leaf
18296schedule_node_leaf::schedule_node_leaf()
18297 : schedule_node() {}
18298
18299schedule_node_leaf::schedule_node_leaf(const schedule_node_leaf &obj)
18300 : schedule_node(obj)
18301{
18302}
18303
18304schedule_node_leaf::schedule_node_leaf(__isl_take isl_schedule_node *ptr)
18305 : schedule_node(ptr) {}
18306
18307schedule_node_leaf &schedule_node_leaf::operator=(schedule_node_leaf obj) {
18308 std::swap(a&: this->ptr, b&: obj.ptr);
18309 return *this;
18310}
18311
18312isl::ctx schedule_node_leaf::ctx() const {
18313 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18314}
18315
18316inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
18317{
18318 char *str = isl_schedule_node_to_str(node: obj.get());
18319 if (!str) {
18320 os.setstate(std::ios_base::badbit);
18321 return os;
18322 }
18323 os << str;
18324 free(ptr: str);
18325 return os;
18326}
18327
18328// implementations for isl::schedule_node_mark
18329schedule_node_mark::schedule_node_mark()
18330 : schedule_node() {}
18331
18332schedule_node_mark::schedule_node_mark(const schedule_node_mark &obj)
18333 : schedule_node(obj)
18334{
18335}
18336
18337schedule_node_mark::schedule_node_mark(__isl_take isl_schedule_node *ptr)
18338 : schedule_node(ptr) {}
18339
18340schedule_node_mark &schedule_node_mark::operator=(schedule_node_mark obj) {
18341 std::swap(a&: this->ptr, b&: obj.ptr);
18342 return *this;
18343}
18344
18345isl::ctx schedule_node_mark::ctx() const {
18346 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18347}
18348
18349isl::id schedule_node_mark::id() const
18350{
18351 auto res = isl_schedule_node_mark_get_id(node: get());
18352 return manage(ptr: res);
18353}
18354
18355isl::id schedule_node_mark::get_id() const
18356{
18357 return id();
18358}
18359
18360inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
18361{
18362 char *str = isl_schedule_node_to_str(node: obj.get());
18363 if (!str) {
18364 os.setstate(std::ios_base::badbit);
18365 return os;
18366 }
18367 os << str;
18368 free(ptr: str);
18369 return os;
18370}
18371
18372// implementations for isl::schedule_node_sequence
18373schedule_node_sequence::schedule_node_sequence()
18374 : schedule_node() {}
18375
18376schedule_node_sequence::schedule_node_sequence(const schedule_node_sequence &obj)
18377 : schedule_node(obj)
18378{
18379}
18380
18381schedule_node_sequence::schedule_node_sequence(__isl_take isl_schedule_node *ptr)
18382 : schedule_node(ptr) {}
18383
18384schedule_node_sequence &schedule_node_sequence::operator=(schedule_node_sequence obj) {
18385 std::swap(a&: this->ptr, b&: obj.ptr);
18386 return *this;
18387}
18388
18389isl::ctx schedule_node_sequence::ctx() const {
18390 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18391}
18392
18393inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
18394{
18395 char *str = isl_schedule_node_to_str(node: obj.get());
18396 if (!str) {
18397 os.setstate(std::ios_base::badbit);
18398 return os;
18399 }
18400 os << str;
18401 free(ptr: str);
18402 return os;
18403}
18404
18405// implementations for isl::schedule_node_set
18406schedule_node_set::schedule_node_set()
18407 : schedule_node() {}
18408
18409schedule_node_set::schedule_node_set(const schedule_node_set &obj)
18410 : schedule_node(obj)
18411{
18412}
18413
18414schedule_node_set::schedule_node_set(__isl_take isl_schedule_node *ptr)
18415 : schedule_node(ptr) {}
18416
18417schedule_node_set &schedule_node_set::operator=(schedule_node_set obj) {
18418 std::swap(a&: this->ptr, b&: obj.ptr);
18419 return *this;
18420}
18421
18422isl::ctx schedule_node_set::ctx() const {
18423 return isl::ctx(isl_schedule_node_get_ctx(node: ptr));
18424}
18425
18426inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
18427{
18428 char *str = isl_schedule_node_to_str(node: obj.get());
18429 if (!str) {
18430 os.setstate(std::ios_base::badbit);
18431 return os;
18432 }
18433 os << str;
18434 free(ptr: str);
18435 return os;
18436}
18437
18438// implementations for isl::set
18439set manage(__isl_take isl_set *ptr) {
18440 return set(ptr);
18441}
18442set manage_copy(__isl_keep isl_set *ptr) {
18443 ptr = isl_set_copy(set: ptr);
18444 return set(ptr);
18445}
18446
18447set::set()
18448 : ptr(nullptr) {}
18449
18450set::set(const set &obj)
18451 : ptr(nullptr)
18452{
18453 ptr = obj.copy();
18454}
18455
18456set::set(__isl_take isl_set *ptr)
18457 : ptr(ptr) {}
18458
18459set::set(isl::basic_set bset)
18460{
18461 auto res = isl_set_from_basic_set(bset: bset.release());
18462 ptr = res;
18463}
18464
18465set::set(isl::point pnt)
18466{
18467 auto res = isl_set_from_point(pnt: pnt.release());
18468 ptr = res;
18469}
18470
18471set::set(isl::union_set uset)
18472{
18473 auto res = isl_set_from_union_set(uset: uset.release());
18474 ptr = res;
18475}
18476
18477set::set(isl::ctx ctx, const std::string &str)
18478{
18479 auto res = isl_set_read_from_str(ctx: ctx.release(), str: str.c_str());
18480 ptr = res;
18481}
18482
18483set &set::operator=(set obj) {
18484 std::swap(a&: this->ptr, b&: obj.ptr);
18485 return *this;
18486}
18487
18488set::~set() {
18489 if (ptr)
18490 isl_set_free(set: ptr);
18491}
18492
18493__isl_give isl_set *set::copy() const & {
18494 return isl_set_copy(set: ptr);
18495}
18496
18497__isl_keep isl_set *set::get() const {
18498 return ptr;
18499}
18500
18501__isl_give isl_set *set::release() {
18502 isl_set *tmp = ptr;
18503 ptr = nullptr;
18504 return tmp;
18505}
18506
18507bool set::is_null() const {
18508 return ptr == nullptr;
18509}
18510
18511isl::ctx set::ctx() const {
18512 return isl::ctx(isl_set_get_ctx(set: ptr));
18513}
18514
18515isl::set set::add_constraint(isl::constraint constraint) const
18516{
18517 auto res = isl_set_add_constraint(set: copy(), constraint: constraint.release());
18518 return manage(ptr: res);
18519}
18520
18521isl::set set::add_dims(isl::dim type, unsigned int n) const
18522{
18523 auto res = isl_set_add_dims(set: copy(), type: static_cast<enum isl_dim_type>(type), n);
18524 return manage(ptr: res);
18525}
18526
18527isl::basic_set set::affine_hull() const
18528{
18529 auto res = isl_set_affine_hull(set: copy());
18530 return manage(ptr: res);
18531}
18532
18533isl::set set::align_params(isl::space model) const
18534{
18535 auto res = isl_set_align_params(set: copy(), model: model.release());
18536 return manage(ptr: res);
18537}
18538
18539isl::set set::apply(isl::map map) const
18540{
18541 auto res = isl_set_apply(set: copy(), map: map.release());
18542 return manage(ptr: res);
18543}
18544
18545isl::union_set set::apply(const isl::union_map &umap) const
18546{
18547 return isl::union_set(*this).apply(umap);
18548}
18549
18550isl::set set::apply(const isl::basic_map &map) const
18551{
18552 return this->apply(map: isl::map(map));
18553}
18554
18555isl::pw_multi_aff set::as_pw_multi_aff() const
18556{
18557 auto res = isl_set_as_pw_multi_aff(set: copy());
18558 return manage(ptr: res);
18559}
18560
18561isl::set set::as_set() const
18562{
18563 return isl::union_set(*this).as_set();
18564}
18565
18566isl::basic_set_list set::basic_set_list() const
18567{
18568 auto res = isl_set_get_basic_set_list(set: get());
18569 return manage(ptr: res);
18570}
18571
18572isl::basic_set_list set::get_basic_set_list() const
18573{
18574 return basic_set_list();
18575}
18576
18577isl::set set::bind(isl::multi_id tuple) const
18578{
18579 auto res = isl_set_bind(set: copy(), tuple: tuple.release());
18580 return manage(ptr: res);
18581}
18582
18583isl::set set::coalesce() const
18584{
18585 auto res = isl_set_coalesce(set: copy());
18586 return manage(ptr: res);
18587}
18588
18589isl::set set::complement() const
18590{
18591 auto res = isl_set_complement(set: copy());
18592 return manage(ptr: res);
18593}
18594
18595isl::union_set set::compute_divs() const
18596{
18597 return isl::union_set(*this).compute_divs();
18598}
18599
18600boolean set::contains(const isl::space &space) const
18601{
18602 return isl::union_set(*this).contains(space);
18603}
18604
18605isl::basic_set set::convex_hull() const
18606{
18607 auto res = isl_set_convex_hull(set: copy());
18608 return manage(ptr: res);
18609}
18610
18611isl::set set::detect_equalities() const
18612{
18613 auto res = isl_set_detect_equalities(set: copy());
18614 return manage(ptr: res);
18615}
18616
18617class size set::dim(isl::dim type) const
18618{
18619 auto res = isl_set_dim(set: get(), type: static_cast<enum isl_dim_type>(type));
18620 return manage(val: res);
18621}
18622
18623boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
18624{
18625 auto res = isl_set_dim_has_any_lower_bound(set: get(), type: static_cast<enum isl_dim_type>(type), pos);
18626 return manage(val: res);
18627}
18628
18629isl::id set::dim_id(isl::dim type, unsigned int pos) const
18630{
18631 auto res = isl_set_get_dim_id(set: get(), type: static_cast<enum isl_dim_type>(type), pos);
18632 return manage(ptr: res);
18633}
18634
18635isl::id set::get_dim_id(isl::dim type, unsigned int pos) const
18636{
18637 return dim_id(type, pos);
18638}
18639
18640isl::pw_aff set::dim_max(int pos) const
18641{
18642 auto res = isl_set_dim_max(set: copy(), pos);
18643 return manage(ptr: res);
18644}
18645
18646isl::val set::dim_max_val(int pos) const
18647{
18648 auto res = isl_set_dim_max_val(set: copy(), pos);
18649 return manage(ptr: res);
18650}
18651
18652isl::pw_aff set::dim_min(int pos) const
18653{
18654 auto res = isl_set_dim_min(set: copy(), pos);
18655 return manage(ptr: res);
18656}
18657
18658isl::val set::dim_min_val(int pos) const
18659{
18660 auto res = isl_set_dim_min_val(set: copy(), pos);
18661 return manage(ptr: res);
18662}
18663
18664std::string set::dim_name(isl::dim type, unsigned int pos) const
18665{
18666 auto res = isl_set_get_dim_name(set: get(), type: static_cast<enum isl_dim_type>(type), pos);
18667 std::string tmp(res);
18668 return tmp;
18669}
18670
18671std::string set::get_dim_name(isl::dim type, unsigned int pos) const
18672{
18673 return dim_name(type, pos);
18674}
18675
18676isl::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(set: copy(), type: static_cast<enum isl_dim_type>(type), first, n);
18679 return manage(ptr: res);
18680}
18681
18682isl::set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
18683{
18684 auto res = isl_set_eliminate(set: copy(), type: static_cast<enum isl_dim_type>(type), first, n);
18685 return manage(ptr: res);
18686}
18687
18688isl::set set::empty(isl::space space)
18689{
18690 auto res = isl_set_empty(space: space.release());
18691 return manage(ptr: res);
18692}
18693
18694boolean set::every_set(const std::function<boolean(isl::set)> &test) const
18695{
18696 return isl::union_set(*this).every_set(test);
18697}
18698
18699isl::set set::extract_set(const isl::space &space) const
18700{
18701 return isl::union_set(*this).extract_set(space);
18702}
18703
18704int set::find_dim_by_id(isl::dim type, const isl::id &id) const
18705{
18706 auto res = isl_set_find_dim_by_id(set: get(), type: static_cast<enum isl_dim_type>(type), id: id.get());
18707 return res;
18708}
18709
18710int set::find_dim_by_id(isl::dim type, const std::string &id) const
18711{
18712 return this->find_dim_by_id(type, id: isl::id(ctx(), id));
18713}
18714
18715isl::set set::fix_si(isl::dim type, unsigned int pos, int value) const
18716{
18717 auto res = isl_set_fix_si(set: copy(), type: static_cast<enum isl_dim_type>(type), pos, value);
18718 return manage(ptr: res);
18719}
18720
18721isl::set set::flatten() const
18722{
18723 auto res = isl_set_flatten(set: copy());
18724 return manage(ptr: res);
18725}
18726
18727stat 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 = { .func: 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(ptr: arg_0));
18735 return ret.release();
18736 };
18737 auto res = isl_set_foreach_basic_set(set: get(), fn: fn_lambda, user: &fn_data);
18738 return manage(val: res);
18739}
18740
18741stat 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 = { .func: 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(ptr: arg_0));
18749 return ret.release();
18750 };
18751 auto res = isl_set_foreach_point(set: get(), fn: fn_lambda, user: &fn_data);
18752 return manage(val: res);
18753}
18754
18755stat set::foreach_set(const std::function<stat(isl::set)> &fn) const
18756{
18757 return isl::union_set(*this).foreach_set(fn);
18758}
18759
18760isl::set set::gist(isl::set context) const
18761{
18762 auto res = isl_set_gist(set: copy(), context: context.release());
18763 return manage(ptr: res);
18764}
18765
18766isl::union_set set::gist(const isl::union_set &context) const
18767{
18768 return isl::union_set(*this).gist(context);
18769}
18770
18771isl::set set::gist(const isl::basic_set &context) const
18772{
18773 return this->gist(context: isl::set(context));
18774}
18775
18776isl::set set::gist(const isl::point &context) const
18777{
18778 return this->gist(context: isl::set(context));
18779}
18780
18781isl::set set::gist_params(isl::set context) const
18782{
18783 auto res = isl_set_gist_params(set: copy(), context: context.release());
18784 return manage(ptr: res);
18785}
18786
18787boolean set::has_equal_space(const isl::set &set2) const
18788{
18789 auto res = isl_set_has_equal_space(set1: get(), set2: set2.get());
18790 return manage(val: res);
18791}
18792
18793isl::map set::identity() const
18794{
18795 auto res = isl_set_identity(set: copy());
18796 return manage(ptr: res);
18797}
18798
18799isl::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
18804isl::pw_aff set::indicator_function() const
18805{
18806 auto res = isl_set_indicator_function(set: copy());
18807 return manage(ptr: res);
18808}
18809
18810isl::set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
18811{
18812 auto res = isl_set_insert_dims(set: copy(), type: static_cast<enum isl_dim_type>(type), pos, n);
18813 return manage(ptr: res);
18814}
18815
18816isl::map set::insert_domain(isl::space domain) const
18817{
18818 auto res = isl_set_insert_domain(set: copy(), domain: domain.release());
18819 return manage(ptr: res);
18820}
18821
18822isl::set set::intersect(isl::set set2) const
18823{
18824 auto res = isl_set_intersect(set1: copy(), set2: set2.release());
18825 return manage(ptr: res);
18826}
18827
18828isl::union_set set::intersect(const isl::union_set &uset2) const
18829{
18830 return isl::union_set(*this).intersect(uset2);
18831}
18832
18833isl::set set::intersect(const isl::basic_set &set2) const
18834{
18835 return this->intersect(set2: isl::set(set2));
18836}
18837
18838isl::set set::intersect(const isl::point &set2) const
18839{
18840 return this->intersect(set2: isl::set(set2));
18841}
18842
18843isl::set set::intersect_params(isl::set params) const
18844{
18845 auto res = isl_set_intersect_params(set: copy(), params: params.release());
18846 return manage(ptr: res);
18847}
18848
18849boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
18850{
18851 auto res = isl_set_involves_dims(set: get(), type: static_cast<enum isl_dim_type>(type), first, n);
18852 return manage(val: res);
18853}
18854
18855boolean set::involves_locals() const
18856{
18857 auto res = isl_set_involves_locals(set: get());
18858 return manage(val: res);
18859}
18860
18861boolean set::is_bounded() const
18862{
18863 auto res = isl_set_is_bounded(set: get());
18864 return manage(val: res);
18865}
18866
18867boolean set::is_disjoint(const isl::set &set2) const
18868{
18869 auto res = isl_set_is_disjoint(set1: get(), set2: set2.get());
18870 return manage(val: res);
18871}
18872
18873boolean set::is_disjoint(const isl::union_set &uset2) const
18874{
18875 return isl::union_set(*this).is_disjoint(uset2);
18876}
18877
18878boolean set::is_disjoint(const isl::basic_set &set2) const
18879{
18880 return this->is_disjoint(set2: isl::set(set2));
18881}
18882
18883boolean set::is_disjoint(const isl::point &set2) const
18884{
18885 return this->is_disjoint(set2: isl::set(set2));
18886}
18887
18888boolean set::is_empty() const
18889{
18890 auto res = isl_set_is_empty(set: get());
18891 return manage(val: res);
18892}
18893
18894boolean set::is_equal(const isl::set &set2) const
18895{
18896 auto res = isl_set_is_equal(set1: get(), set2: set2.get());
18897 return manage(val: res);
18898}
18899
18900boolean set::is_equal(const isl::union_set &uset2) const
18901{
18902 return isl::union_set(*this).is_equal(uset2);
18903}
18904
18905boolean set::is_equal(const isl::basic_set &set2) const
18906{
18907 return this->is_equal(set2: isl::set(set2));
18908}
18909
18910boolean set::is_equal(const isl::point &set2) const
18911{
18912 return this->is_equal(set2: isl::set(set2));
18913}
18914
18915boolean set::is_params() const
18916{
18917 auto res = isl_set_is_params(set: get());
18918 return manage(val: res);
18919}
18920
18921boolean set::is_singleton() const
18922{
18923 auto res = isl_set_is_singleton(set: get());
18924 return manage(val: res);
18925}
18926
18927boolean set::is_strict_subset(const isl::set &set2) const
18928{
18929 auto res = isl_set_is_strict_subset(set1: get(), set2: set2.get());
18930 return manage(val: res);
18931}
18932
18933boolean set::is_strict_subset(const isl::union_set &uset2) const
18934{
18935 return isl::union_set(*this).is_strict_subset(uset2);
18936}
18937
18938boolean set::is_strict_subset(const isl::basic_set &set2) const
18939{
18940 return this->is_strict_subset(set2: isl::set(set2));
18941}
18942
18943boolean set::is_strict_subset(const isl::point &set2) const
18944{
18945 return this->is_strict_subset(set2: isl::set(set2));
18946}
18947
18948boolean set::is_subset(const isl::set &set2) const
18949{
18950 auto res = isl_set_is_subset(set1: get(), set2: set2.get());
18951 return manage(val: res);
18952}
18953
18954boolean set::is_subset(const isl::union_set &uset2) const
18955{
18956 return isl::union_set(*this).is_subset(uset2);
18957}
18958
18959boolean set::is_subset(const isl::basic_set &set2) const
18960{
18961 return this->is_subset(set2: isl::set(set2));
18962}
18963
18964boolean set::is_subset(const isl::point &set2) const
18965{
18966 return this->is_subset(set2: isl::set(set2));
18967}
18968
18969boolean set::is_wrapping() const
18970{
18971 auto res = isl_set_is_wrapping(set: get());
18972 return manage(val: res);
18973}
18974
18975boolean set::isa_set() const
18976{
18977 return isl::union_set(*this).isa_set();
18978}
18979
18980isl::set set::lexmax() const
18981{
18982 auto res = isl_set_lexmax(set: copy());
18983 return manage(ptr: res);
18984}
18985
18986isl::pw_multi_aff set::lexmax_pw_multi_aff() const
18987{
18988 auto res = isl_set_lexmax_pw_multi_aff(set: copy());
18989 return manage(ptr: res);
18990}
18991
18992isl::set set::lexmin() const
18993{
18994 auto res = isl_set_lexmin(set: copy());
18995 return manage(ptr: res);
18996}
18997
18998isl::pw_multi_aff set::lexmin_pw_multi_aff() const
18999{
19000 auto res = isl_set_lexmin_pw_multi_aff(set: copy());
19001 return manage(ptr: res);
19002}
19003
19004isl::set set::lower_bound(isl::multi_pw_aff lower) const
19005{
19006 auto res = isl_set_lower_bound_multi_pw_aff(set: copy(), lower: lower.release());
19007 return manage(ptr: res);
19008}
19009
19010isl::set set::lower_bound(isl::multi_val lower) const
19011{
19012 auto res = isl_set_lower_bound_multi_val(set: copy(), lower: lower.release());
19013 return manage(ptr: res);
19014}
19015
19016isl::set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
19017{
19018 auto res = isl_set_lower_bound_si(set: copy(), type: static_cast<enum isl_dim_type>(type), pos, value);
19019 return manage(ptr: res);
19020}
19021
19022isl::set set::lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const
19023{
19024 auto res = isl_set_lower_bound_val(set: copy(), type: static_cast<enum isl_dim_type>(type), pos, value: value.release());
19025 return manage(ptr: res);
19026}
19027
19028isl::set set::lower_bound_val(isl::dim type, unsigned int pos, long value) const
19029{
19030 return this->lower_bound_val(type, pos, value: isl::val(ctx(), value));
19031}
19032
19033isl::multi_pw_aff set::max_multi_pw_aff() const
19034{
19035 auto res = isl_set_max_multi_pw_aff(set: copy());
19036 return manage(ptr: res);
19037}
19038
19039isl::val set::max_val(const isl::aff &obj) const
19040{
19041 auto res = isl_set_max_val(set: get(), obj: obj.get());
19042 return manage(ptr: res);
19043}
19044
19045isl::multi_pw_aff set::min_multi_pw_aff() const
19046{
19047 auto res = isl_set_min_multi_pw_aff(set: copy());
19048 return manage(ptr: res);
19049}
19050
19051isl::val set::min_val(const isl::aff &obj) const
19052{
19053 auto res = isl_set_min_val(set: get(), obj: obj.get());
19054 return manage(ptr: res);
19055}
19056
19057class size set::n_basic_set() const
19058{
19059 auto res = isl_set_n_basic_set(set: get());
19060 return manage(val: res);
19061}
19062
19063isl::set set::params() const
19064{
19065 auto res = isl_set_params(set: copy());
19066 return manage(ptr: res);
19067}
19068
19069isl::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(set: get(), type: static_cast<enum isl_dim_type>(type), pos);
19072 return manage(ptr: res);
19073}
19074
19075isl::multi_val set::plain_multi_val_if_fixed() const
19076{
19077 auto res = isl_set_get_plain_multi_val_if_fixed(set: get());
19078 return manage(ptr: res);
19079}
19080
19081isl::multi_val set::get_plain_multi_val_if_fixed() const
19082{
19083 return plain_multi_val_if_fixed();
19084}
19085
19086isl::basic_set set::polyhedral_hull() const
19087{
19088 auto res = isl_set_polyhedral_hull(set: copy());
19089 return manage(ptr: res);
19090}
19091
19092isl::set set::preimage(isl::multi_aff ma) const
19093{
19094 auto res = isl_set_preimage_multi_aff(set: copy(), ma: ma.release());
19095 return manage(ptr: res);
19096}
19097
19098isl::set set::preimage(isl::multi_pw_aff mpa) const
19099{
19100 auto res = isl_set_preimage_multi_pw_aff(set: copy(), mpa: mpa.release());
19101 return manage(ptr: res);
19102}
19103
19104isl::set set::preimage(isl::pw_multi_aff pma) const
19105{
19106 auto res = isl_set_preimage_pw_multi_aff(set: copy(), pma: pma.release());
19107 return manage(ptr: res);
19108}
19109
19110isl::union_set set::preimage(const isl::union_pw_multi_aff &upma) const
19111{
19112 return isl::union_set(*this).preimage(upma);
19113}
19114
19115isl::set set::product(isl::set set2) const
19116{
19117 auto res = isl_set_product(set1: copy(), set2: set2.release());
19118 return manage(ptr: res);
19119}
19120
19121isl::set set::project_out(isl::dim type, unsigned int first, unsigned int n) const
19122{
19123 auto res = isl_set_project_out(set: copy(), type: static_cast<enum isl_dim_type>(type), first, n);
19124 return manage(ptr: res);
19125}
19126
19127isl::set set::project_out_all_params() const
19128{
19129 auto res = isl_set_project_out_all_params(set: copy());
19130 return manage(ptr: res);
19131}
19132
19133isl::set set::project_out_param(isl::id id) const
19134{
19135 auto res = isl_set_project_out_param_id(set: copy(), id: id.release());
19136 return manage(ptr: res);
19137}
19138
19139isl::set set::project_out_param(const std::string &id) const
19140{
19141 return this->project_out_param(id: isl::id(ctx(), id));
19142}
19143
19144isl::set set::project_out_param(isl::id_list list) const
19145{
19146 auto res = isl_set_project_out_param_id_list(set: copy(), list: list.release());
19147 return manage(ptr: res);
19148}
19149
19150isl::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(domain: copy(), mv: mv.release());
19153 return manage(ptr: res);
19154}
19155
19156isl::set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
19157{
19158 auto res = isl_set_remove_dims(bset: copy(), type: static_cast<enum isl_dim_type>(type), first, n);
19159 return manage(ptr: res);
19160}
19161
19162isl::set set::remove_divs() const
19163{
19164 auto res = isl_set_remove_divs(set: copy());
19165 return manage(ptr: res);
19166}
19167
19168isl::set set::remove_redundancies() const
19169{
19170 auto res = isl_set_remove_redundancies(set: copy());
19171 return manage(ptr: res);
19172}
19173
19174isl::set set::reset_tuple_id() const
19175{
19176 auto res = isl_set_reset_tuple_id(set: copy());
19177 return manage(ptr: res);
19178}
19179
19180isl::basic_set set::sample() const
19181{
19182 auto res = isl_set_sample(set: copy());
19183 return manage(ptr: res);
19184}
19185
19186isl::point set::sample_point() const
19187{
19188 auto res = isl_set_sample_point(set: copy());
19189 return manage(ptr: res);
19190}
19191
19192isl::set set::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
19193{
19194 auto res = isl_set_set_dim_id(set: copy(), type: static_cast<enum isl_dim_type>(type), pos, id: id.release());
19195 return manage(ptr: res);
19196}
19197
19198isl::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, id: isl::id(ctx(), id));
19201}
19202
19203isl::set_list set::set_list() const
19204{
19205 return isl::union_set(*this).set_list();
19206}
19207
19208isl::set set::set_tuple_id(isl::id id) const
19209{
19210 auto res = isl_set_set_tuple_id(set: copy(), id: id.release());
19211 return manage(ptr: res);
19212}
19213
19214isl::set set::set_tuple_id(const std::string &id) const
19215{
19216 return this->set_tuple_id(isl::id(ctx(), id));
19217}
19218
19219isl::fixed_box set::simple_fixed_box_hull() const
19220{
19221 auto res = isl_set_get_simple_fixed_box_hull(set: get());
19222 return manage(ptr: res);
19223}
19224
19225isl::fixed_box set::get_simple_fixed_box_hull() const
19226{
19227 return simple_fixed_box_hull();
19228}
19229
19230isl::basic_set set::simple_hull() const
19231{
19232 auto res = isl_set_simple_hull(set: copy());
19233 return manage(ptr: res);
19234}
19235
19236isl::space set::space() const
19237{
19238 auto res = isl_set_get_space(set: get());
19239 return manage(ptr: res);
19240}
19241
19242isl::space set::get_space() const
19243{
19244 return space();
19245}
19246
19247isl::val set::stride(int pos) const
19248{
19249 auto res = isl_set_get_stride(set: get(), pos);
19250 return manage(ptr: res);
19251}
19252
19253isl::val set::get_stride(int pos) const
19254{
19255 return stride(pos);
19256}
19257
19258isl::set set::subtract(isl::set set2) const
19259{
19260 auto res = isl_set_subtract(set1: copy(), set2: set2.release());
19261 return manage(ptr: res);
19262}
19263
19264isl::union_set set::subtract(const isl::union_set &uset2) const
19265{
19266 return isl::union_set(*this).subtract(uset2);
19267}
19268
19269isl::set set::subtract(const isl::basic_set &set2) const
19270{
19271 return this->subtract(set2: isl::set(set2));
19272}
19273
19274isl::set set::subtract(const isl::point &set2) const
19275{
19276 return this->subtract(set2: isl::set(set2));
19277}
19278
19279isl::set_list set::to_list() const
19280{
19281 auto res = isl_set_to_list(el: copy());
19282 return manage(ptr: res);
19283}
19284
19285isl::union_set set::to_union_set() const
19286{
19287 auto res = isl_set_to_union_set(set: copy());
19288 return manage(ptr: res);
19289}
19290
19291isl::map set::translation() const
19292{
19293 auto res = isl_set_translation(deltas: copy());
19294 return manage(ptr: res);
19295}
19296
19297class size set::tuple_dim() const
19298{
19299 auto res = isl_set_tuple_dim(set: get());
19300 return manage(val: res);
19301}
19302
19303isl::id set::tuple_id() const
19304{
19305 auto res = isl_set_get_tuple_id(set: get());
19306 return manage(ptr: res);
19307}
19308
19309isl::id set::get_tuple_id() const
19310{
19311 return tuple_id();
19312}
19313
19314std::string set::tuple_name() const
19315{
19316 auto res = isl_set_get_tuple_name(set: get());
19317 std::string tmp(res);
19318 return tmp;
19319}
19320
19321std::string set::get_tuple_name() const
19322{
19323 return tuple_name();
19324}
19325
19326isl::set set::unbind_params(isl::multi_id tuple) const
19327{
19328 auto res = isl_set_unbind_params(set: copy(), tuple: tuple.release());
19329 return manage(ptr: res);
19330}
19331
19332isl::map set::unbind_params_insert_domain(isl::multi_id domain) const
19333{
19334 auto res = isl_set_unbind_params_insert_domain(set: copy(), domain: domain.release());
19335 return manage(ptr: res);
19336}
19337
19338isl::set set::unite(isl::set set2) const
19339{
19340 auto res = isl_set_union(set1: copy(), set2: set2.release());
19341 return manage(ptr: res);
19342}
19343
19344isl::union_set set::unite(const isl::union_set &uset2) const
19345{
19346 return isl::union_set(*this).unite(uset2);
19347}
19348
19349isl::set set::unite(const isl::basic_set &set2) const
19350{
19351 return this->unite(set2: isl::set(set2));
19352}
19353
19354isl::set set::unite(const isl::point &set2) const
19355{
19356 return this->unite(set2: isl::set(set2));
19357}
19358
19359isl::set set::universe(isl::space space)
19360{
19361 auto res = isl_set_universe(space: space.release());
19362 return manage(ptr: res);
19363}
19364
19365isl::basic_set set::unshifted_simple_hull() const
19366{
19367 auto res = isl_set_unshifted_simple_hull(set: copy());
19368 return manage(ptr: res);
19369}
19370
19371isl::map set::unwrap() const
19372{
19373 auto res = isl_set_unwrap(set: copy());
19374 return manage(ptr: res);
19375}
19376
19377isl::set set::upper_bound(isl::multi_pw_aff upper) const
19378{
19379 auto res = isl_set_upper_bound_multi_pw_aff(set: copy(), upper: upper.release());
19380 return manage(ptr: res);
19381}
19382
19383isl::set set::upper_bound(isl::multi_val upper) const
19384{
19385 auto res = isl_set_upper_bound_multi_val(set: copy(), upper: upper.release());
19386 return manage(ptr: res);
19387}
19388
19389isl::set set::upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const
19390{
19391 auto res = isl_set_upper_bound_val(set: copy(), type: static_cast<enum isl_dim_type>(type), pos, value: value.release());
19392 return manage(ptr: res);
19393}
19394
19395isl::set set::upper_bound_val(isl::dim type, unsigned int pos, long value) const
19396{
19397 return this->upper_bound_val(type, pos, value: isl::val(ctx(), value));
19398}
19399
19400inline std::ostream &operator<<(std::ostream &os, const set &obj)
19401{
19402 char *str = isl_set_to_str(set: obj.get());
19403 if (!str) {
19404 os.setstate(std::ios_base::badbit);
19405 return os;
19406 }
19407 os << str;
19408 free(ptr: str);
19409 return os;
19410}
19411
19412// implementations for isl::set_list
19413set_list manage(__isl_take isl_set_list *ptr) {
19414 return set_list(ptr);
19415}
19416set_list manage_copy(__isl_keep isl_set_list *ptr) {
19417 ptr = isl_set_list_copy(list: ptr);
19418 return set_list(ptr);
19419}
19420
19421set_list::set_list()
19422 : ptr(nullptr) {}
19423
19424set_list::set_list(const set_list &obj)
19425 : ptr(nullptr)
19426{
19427 ptr = obj.copy();
19428}
19429
19430set_list::set_list(__isl_take isl_set_list *ptr)
19431 : ptr(ptr) {}
19432
19433set_list::set_list(isl::ctx ctx, int n)
19434{
19435 auto res = isl_set_list_alloc(ctx: ctx.release(), n);
19436 ptr = res;
19437}
19438
19439set_list::set_list(isl::set el)
19440{
19441 auto res = isl_set_list_from_set(el: el.release());
19442 ptr = res;
19443}
19444
19445set_list::set_list(isl::ctx ctx, const std::string &str)
19446{
19447 auto res = isl_set_list_read_from_str(ctx: ctx.release(), str: str.c_str());
19448 ptr = res;
19449}
19450
19451set_list &set_list::operator=(set_list obj) {
19452 std::swap(a&: this->ptr, b&: obj.ptr);
19453 return *this;
19454}
19455
19456set_list::~set_list() {
19457 if (ptr)
19458 isl_set_list_free(list: ptr);
19459}
19460
19461__isl_give isl_set_list *set_list::copy() const & {
19462 return isl_set_list_copy(list: ptr);
19463}
19464
19465__isl_keep isl_set_list *set_list::get() const {
19466 return ptr;
19467}
19468
19469__isl_give isl_set_list *set_list::release() {
19470 isl_set_list *tmp = ptr;
19471 ptr = nullptr;
19472 return tmp;
19473}
19474
19475bool set_list::is_null() const {
19476 return ptr == nullptr;
19477}
19478
19479isl::ctx set_list::ctx() const {
19480 return isl::ctx(isl_set_list_get_ctx(list: ptr));
19481}
19482
19483isl::set_list set_list::add(isl::set el) const
19484{
19485 auto res = isl_set_list_add(list: copy(), el: el.release());
19486 return manage(ptr: res);
19487}
19488
19489isl::set set_list::at(int index) const
19490{
19491 auto res = isl_set_list_get_at(list: get(), index);
19492 return manage(ptr: res);
19493}
19494
19495isl::set set_list::get_at(int index) const
19496{
19497 return at(index);
19498}
19499
19500isl::set_list set_list::clear() const
19501{
19502 auto res = isl_set_list_clear(list: copy());
19503 return manage(ptr: res);
19504}
19505
19506isl::set_list set_list::concat(isl::set_list list2) const
19507{
19508 auto res = isl_set_list_concat(list1: copy(), list2: list2.release());
19509 return manage(ptr: res);
19510}
19511
19512isl::set_list set_list::drop(unsigned int first, unsigned int n) const
19513{
19514 auto res = isl_set_list_drop(list: copy(), first, n);
19515 return manage(ptr: res);
19516}
19517
19518stat 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 = { .func: 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(ptr: arg_0));
19526 return ret.release();
19527 };
19528 auto res = isl_set_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
19529 return manage(val: res);
19530}
19531
19532isl::set_list set_list::insert(unsigned int pos, isl::set el) const
19533{
19534 auto res = isl_set_list_insert(list: copy(), pos, el: el.release());
19535 return manage(ptr: res);
19536}
19537
19538class size set_list::size() const
19539{
19540 auto res = isl_set_list_size(list: get());
19541 return manage(val: res);
19542}
19543
19544inline std::ostream &operator<<(std::ostream &os, const set_list &obj)
19545{
19546 char *str = isl_set_list_to_str(list: obj.get());
19547 if (!str) {
19548 os.setstate(std::ios_base::badbit);
19549 return os;
19550 }
19551 os << str;
19552 free(ptr: str);
19553 return os;
19554}
19555
19556// implementations for isl::space
19557space manage(__isl_take isl_space *ptr) {
19558 return space(ptr);
19559}
19560space manage_copy(__isl_keep isl_space *ptr) {
19561 ptr = isl_space_copy(space: ptr);
19562 return space(ptr);
19563}
19564
19565space::space()
19566 : ptr(nullptr) {}
19567
19568space::space(const space &obj)
19569 : ptr(nullptr)
19570{
19571 ptr = obj.copy();
19572}
19573
19574space::space(__isl_take isl_space *ptr)
19575 : ptr(ptr) {}
19576
19577space::space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out)
19578{
19579 auto res = isl_space_alloc(ctx: ctx.release(), nparam, n_in, n_out);
19580 ptr = res;
19581}
19582
19583space::space(isl::ctx ctx, unsigned int nparam, unsigned int dim)
19584{
19585 auto res = isl_space_set_alloc(ctx: ctx.release(), nparam, dim);
19586 ptr = res;
19587}
19588
19589space &space::operator=(space obj) {
19590 std::swap(a&: this->ptr, b&: obj.ptr);
19591 return *this;
19592}
19593
19594space::~space() {
19595 if (ptr)
19596 isl_space_free(space: ptr);
19597}
19598
19599__isl_give isl_space *space::copy() const & {
19600 return isl_space_copy(space: ptr);
19601}
19602
19603__isl_keep isl_space *space::get() const {
19604 return ptr;
19605}
19606
19607__isl_give isl_space *space::release() {
19608 isl_space *tmp = ptr;
19609 ptr = nullptr;
19610 return tmp;
19611}
19612
19613bool space::is_null() const {
19614 return ptr == nullptr;
19615}
19616
19617isl::ctx space::ctx() const {
19618 return isl::ctx(isl_space_get_ctx(space: ptr));
19619}
19620
19621isl::space space::add_dims(isl::dim type, unsigned int n) const
19622{
19623 auto res = isl_space_add_dims(space: copy(), type: static_cast<enum isl_dim_type>(type), n);
19624 return manage(ptr: res);
19625}
19626
19627isl::space space::add_named_tuple(isl::id tuple_id, unsigned int dim) const
19628{
19629 auto res = isl_space_add_named_tuple_id_ui(space: copy(), tuple_id: tuple_id.release(), dim);
19630 return manage(ptr: res);
19631}
19632
19633isl::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
19634{
19635 return this->add_named_tuple(tuple_id: isl::id(ctx(), tuple_id), dim);
19636}
19637
19638isl::space space::add_param(isl::id id) const
19639{
19640 auto res = isl_space_add_param_id(space: copy(), id: id.release());
19641 return manage(ptr: res);
19642}
19643
19644isl::space space::add_param(const std::string &id) const
19645{
19646 return this->add_param(id: isl::id(ctx(), id));
19647}
19648
19649isl::space space::add_unnamed_tuple(unsigned int dim) const
19650{
19651 auto res = isl_space_add_unnamed_tuple_ui(space: copy(), dim);
19652 return manage(ptr: res);
19653}
19654
19655isl::space space::align_params(isl::space space2) const
19656{
19657 auto res = isl_space_align_params(space1: copy(), space2: space2.release());
19658 return manage(ptr: res);
19659}
19660
19661isl::space space::curry() const
19662{
19663 auto res = isl_space_curry(space: copy());
19664 return manage(ptr: res);
19665}
19666
19667class size space::dim(isl::dim type) const
19668{
19669 auto res = isl_space_dim(space: get(), type: static_cast<enum isl_dim_type>(type));
19670 return manage(val: res);
19671}
19672
19673isl::id space::dim_id(isl::dim type, unsigned int pos) const
19674{
19675 auto res = isl_space_get_dim_id(space: get(), type: static_cast<enum isl_dim_type>(type), pos);
19676 return manage(ptr: res);
19677}
19678
19679isl::id space::get_dim_id(isl::dim type, unsigned int pos) const
19680{
19681 return dim_id(type, pos);
19682}
19683
19684isl::space space::domain() const
19685{
19686 auto res = isl_space_domain(space: copy());
19687 return manage(ptr: res);
19688}
19689
19690isl::multi_aff space::domain_map_multi_aff() const
19691{
19692 auto res = isl_space_domain_map_multi_aff(space: copy());
19693 return manage(ptr: res);
19694}
19695
19696isl::pw_multi_aff space::domain_map_pw_multi_aff() const
19697{
19698 auto res = isl_space_domain_map_pw_multi_aff(space: copy());
19699 return manage(ptr: res);
19700}
19701
19702isl::id space::domain_tuple_id() const
19703{
19704 auto res = isl_space_get_domain_tuple_id(space: get());
19705 return manage(ptr: res);
19706}
19707
19708isl::id space::get_domain_tuple_id() const
19709{
19710 return domain_tuple_id();
19711}
19712
19713isl::space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const
19714{
19715 auto res = isl_space_drop_dims(space: copy(), type: static_cast<enum isl_dim_type>(type), first, num);
19716 return manage(ptr: res);
19717}
19718
19719int space::find_dim_by_id(isl::dim type, const isl::id &id) const
19720{
19721 auto res = isl_space_find_dim_by_id(space: get(), type: static_cast<enum isl_dim_type>(type), id: id.get());
19722 return res;
19723}
19724
19725int space::find_dim_by_id(isl::dim type, const std::string &id) const
19726{
19727 return this->find_dim_by_id(type, id: isl::id(ctx(), id));
19728}
19729
19730isl::space space::flatten_domain() const
19731{
19732 auto res = isl_space_flatten_domain(space: copy());
19733 return manage(ptr: res);
19734}
19735
19736isl::space space::flatten_range() const
19737{
19738 auto res = isl_space_flatten_range(space: copy());
19739 return manage(ptr: res);
19740}
19741
19742boolean space::has_domain_tuple_id() const
19743{
19744 auto res = isl_space_has_domain_tuple_id(space: get());
19745 return manage(val: res);
19746}
19747
19748boolean space::has_equal_tuples(const isl::space &space2) const
19749{
19750 auto res = isl_space_has_equal_tuples(space1: get(), space2: space2.get());
19751 return manage(val: res);
19752}
19753
19754boolean space::has_range_tuple_id() const
19755{
19756 auto res = isl_space_has_range_tuple_id(space: get());
19757 return manage(val: res);
19758}
19759
19760boolean space::has_tuple_id(isl::dim type) const
19761{
19762 auto res = isl_space_has_tuple_id(space: get(), type: static_cast<enum isl_dim_type>(type));
19763 return manage(val: res);
19764}
19765
19766boolean space::has_tuple_name(isl::dim type) const
19767{
19768 auto res = isl_space_has_tuple_name(space: get(), type: static_cast<enum isl_dim_type>(type));
19769 return manage(val: res);
19770}
19771
19772isl::multi_aff space::identity_multi_aff_on_domain() const
19773{
19774 auto res = isl_space_identity_multi_aff_on_domain(space: copy());
19775 return manage(ptr: res);
19776}
19777
19778isl::multi_pw_aff space::identity_multi_pw_aff_on_domain() const
19779{
19780 auto res = isl_space_identity_multi_pw_aff_on_domain(space: copy());
19781 return manage(ptr: res);
19782}
19783
19784isl::pw_multi_aff space::identity_pw_multi_aff_on_domain() const
19785{
19786 auto res = isl_space_identity_pw_multi_aff_on_domain(space: copy());
19787 return manage(ptr: res);
19788}
19789
19790boolean space::is_equal(const isl::space &space2) const
19791{
19792 auto res = isl_space_is_equal(space1: get(), space2: space2.get());
19793 return manage(val: res);
19794}
19795
19796boolean space::is_params() const
19797{
19798 auto res = isl_space_is_params(space: get());
19799 return manage(val: res);
19800}
19801
19802boolean space::is_set() const
19803{
19804 auto res = isl_space_is_set(space: get());
19805 return manage(val: res);
19806}
19807
19808boolean space::is_wrapping() const
19809{
19810 auto res = isl_space_is_wrapping(space: get());
19811 return manage(val: res);
19812}
19813
19814isl::space space::map_from_domain_and_range(isl::space range) const
19815{
19816 auto res = isl_space_map_from_domain_and_range(domain: copy(), range: range.release());
19817 return manage(ptr: res);
19818}
19819
19820isl::space space::map_from_set() const
19821{
19822 auto res = isl_space_map_from_set(space: copy());
19823 return manage(ptr: res);
19824}
19825
19826isl::multi_aff space::multi_aff(isl::aff_list list) const
19827{
19828 auto res = isl_space_multi_aff(space: copy(), list: list.release());
19829 return manage(ptr: res);
19830}
19831
19832isl::multi_aff space::multi_aff_on_domain(isl::multi_val mv) const
19833{
19834 auto res = isl_space_multi_aff_on_domain_multi_val(space: copy(), mv: mv.release());
19835 return manage(ptr: res);
19836}
19837
19838isl::multi_id space::multi_id(isl::id_list list) const
19839{
19840 auto res = isl_space_multi_id(space: copy(), list: list.release());
19841 return manage(ptr: res);
19842}
19843
19844isl::multi_pw_aff space::multi_pw_aff(isl::pw_aff_list list) const
19845{
19846 auto res = isl_space_multi_pw_aff(space: copy(), list: list.release());
19847 return manage(ptr: res);
19848}
19849
19850isl::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(space: copy(), list: list.release());
19853 return manage(ptr: res);
19854}
19855
19856isl::multi_val space::multi_val(isl::val_list list) const
19857{
19858 auto res = isl_space_multi_val(space: copy(), list: list.release());
19859 return manage(ptr: res);
19860}
19861
19862isl::aff space::param_aff_on_domain(isl::id id) const
19863{
19864 auto res = isl_space_param_aff_on_domain_id(space: copy(), id: id.release());
19865 return manage(ptr: res);
19866}
19867
19868isl::aff space::param_aff_on_domain(const std::string &id) const
19869{
19870 return this->param_aff_on_domain(id: isl::id(ctx(), id));
19871}
19872
19873isl::space space::params() const
19874{
19875 auto res = isl_space_params(space: copy());
19876 return manage(ptr: res);
19877}
19878
19879isl::space space::params_alloc(isl::ctx ctx, unsigned int nparam)
19880{
19881 auto res = isl_space_params_alloc(ctx: ctx.release(), nparam);
19882 return manage(ptr: res);
19883}
19884
19885isl::space space::product(isl::space right) const
19886{
19887 auto res = isl_space_product(left: copy(), right: right.release());
19888 return manage(ptr: res);
19889}
19890
19891isl::space space::range() const
19892{
19893 auto res = isl_space_range(space: copy());
19894 return manage(ptr: res);
19895}
19896
19897isl::multi_aff space::range_map_multi_aff() const
19898{
19899 auto res = isl_space_range_map_multi_aff(space: copy());
19900 return manage(ptr: res);
19901}
19902
19903isl::pw_multi_aff space::range_map_pw_multi_aff() const
19904{
19905 auto res = isl_space_range_map_pw_multi_aff(space: copy());
19906 return manage(ptr: res);
19907}
19908
19909isl::space space::range_reverse() const
19910{
19911 auto res = isl_space_range_reverse(space: copy());
19912 return manage(ptr: res);
19913}
19914
19915isl::id space::range_tuple_id() const
19916{
19917 auto res = isl_space_get_range_tuple_id(space: get());
19918 return manage(ptr: res);
19919}
19920
19921isl::id space::get_range_tuple_id() const
19922{
19923 return range_tuple_id();
19924}
19925
19926isl::space space::reverse() const
19927{
19928 auto res = isl_space_reverse(space: copy());
19929 return manage(ptr: res);
19930}
19931
19932isl::space space::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
19933{
19934 auto res = isl_space_set_dim_id(space: copy(), type: static_cast<enum isl_dim_type>(type), pos, id: id.release());
19935 return manage(ptr: res);
19936}
19937
19938isl::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, id: isl::id(ctx(), id));
19941}
19942
19943isl::space space::set_domain_tuple(isl::id id) const
19944{
19945 auto res = isl_space_set_domain_tuple_id(space: copy(), id: id.release());
19946 return manage(ptr: res);
19947}
19948
19949isl::space space::set_domain_tuple(const std::string &id) const
19950{
19951 return this->set_domain_tuple(isl::id(ctx(), id));
19952}
19953
19954isl::space space::set_from_params() const
19955{
19956 auto res = isl_space_set_from_params(space: copy());
19957 return manage(ptr: res);
19958}
19959
19960isl::space space::set_range_tuple(isl::id id) const
19961{
19962 auto res = isl_space_set_range_tuple_id(space: copy(), id: id.release());
19963 return manage(ptr: res);
19964}
19965
19966isl::space space::set_range_tuple(const std::string &id) const
19967{
19968 return this->set_range_tuple(isl::id(ctx(), id));
19969}
19970
19971isl::space space::set_tuple_id(isl::dim type, isl::id id) const
19972{
19973 auto res = isl_space_set_tuple_id(space: copy(), type: static_cast<enum isl_dim_type>(type), id: id.release());
19974 return manage(ptr: res);
19975}
19976
19977isl::space space::set_tuple_id(isl::dim type, const std::string &id) const
19978{
19979 return this->set_tuple_id(type, id: isl::id(ctx(), id));
19980}
19981
19982isl::id space::tuple_id(isl::dim type) const
19983{
19984 auto res = isl_space_get_tuple_id(space: get(), type: static_cast<enum isl_dim_type>(type));
19985 return manage(ptr: res);
19986}
19987
19988isl::id space::get_tuple_id(isl::dim type) const
19989{
19990 return tuple_id(type);
19991}
19992
19993std::string space::tuple_name(isl::dim type) const
19994{
19995 auto res = isl_space_get_tuple_name(space: get(), type: static_cast<enum isl_dim_type>(type));
19996 std::string tmp(res);
19997 return tmp;
19998}
19999
20000std::string space::get_tuple_name(isl::dim type) const
20001{
20002 return tuple_name(type);
20003}
20004
20005isl::space space::uncurry() const
20006{
20007 auto res = isl_space_uncurry(space: copy());
20008 return manage(ptr: res);
20009}
20010
20011isl::space space::unit(isl::ctx ctx)
20012{
20013 auto res = isl_space_unit(ctx: ctx.release());
20014 return manage(ptr: res);
20015}
20016
20017isl::map space::universe_map() const
20018{
20019 auto res = isl_space_universe_map(space: copy());
20020 return manage(ptr: res);
20021}
20022
20023isl::set space::universe_set() const
20024{
20025 auto res = isl_space_universe_set(space: copy());
20026 return manage(ptr: res);
20027}
20028
20029isl::space space::unwrap() const
20030{
20031 auto res = isl_space_unwrap(space: copy());
20032 return manage(ptr: res);
20033}
20034
20035isl::space space::wrap() const
20036{
20037 auto res = isl_space_wrap(space: copy());
20038 return manage(ptr: res);
20039}
20040
20041isl::aff space::zero_aff_on_domain() const
20042{
20043 auto res = isl_space_zero_aff_on_domain(space: copy());
20044 return manage(ptr: res);
20045}
20046
20047isl::multi_aff space::zero_multi_aff() const
20048{
20049 auto res = isl_space_zero_multi_aff(space: copy());
20050 return manage(ptr: res);
20051}
20052
20053isl::multi_pw_aff space::zero_multi_pw_aff() const
20054{
20055 auto res = isl_space_zero_multi_pw_aff(space: copy());
20056 return manage(ptr: res);
20057}
20058
20059isl::multi_union_pw_aff space::zero_multi_union_pw_aff() const
20060{
20061 auto res = isl_space_zero_multi_union_pw_aff(space: copy());
20062 return manage(ptr: res);
20063}
20064
20065isl::multi_val space::zero_multi_val() const
20066{
20067 auto res = isl_space_zero_multi_val(space: copy());
20068 return manage(ptr: res);
20069}
20070
20071inline std::ostream &operator<<(std::ostream &os, const space &obj)
20072{
20073 char *str = isl_space_to_str(space: obj.get());
20074 if (!str) {
20075 os.setstate(std::ios_base::badbit);
20076 return os;
20077 }
20078 os << str;
20079 free(ptr: str);
20080 return os;
20081}
20082
20083// implementations for isl::union_access_info
20084union_access_info manage(__isl_take isl_union_access_info *ptr) {
20085 return union_access_info(ptr);
20086}
20087union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
20088 ptr = isl_union_access_info_copy(access: ptr);
20089 return union_access_info(ptr);
20090}
20091
20092union_access_info::union_access_info()
20093 : ptr(nullptr) {}
20094
20095union_access_info::union_access_info(const union_access_info &obj)
20096 : ptr(nullptr)
20097{
20098 ptr = obj.copy();
20099}
20100
20101union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
20102 : ptr(ptr) {}
20103
20104union_access_info::union_access_info(isl::union_map sink)
20105{
20106 auto res = isl_union_access_info_from_sink(sink: sink.release());
20107 ptr = res;
20108}
20109
20110union_access_info &union_access_info::operator=(union_access_info obj) {
20111 std::swap(a&: this->ptr, b&: obj.ptr);
20112 return *this;
20113}
20114
20115union_access_info::~union_access_info() {
20116 if (ptr)
20117 isl_union_access_info_free(access: ptr);
20118}
20119
20120__isl_give isl_union_access_info *union_access_info::copy() const & {
20121 return isl_union_access_info_copy(access: ptr);
20122}
20123
20124__isl_keep isl_union_access_info *union_access_info::get() const {
20125 return ptr;
20126}
20127
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
20134bool union_access_info::is_null() const {
20135 return ptr == nullptr;
20136}
20137
20138isl::ctx union_access_info::ctx() const {
20139 return isl::ctx(isl_union_access_info_get_ctx(access: ptr));
20140}
20141
20142isl::union_flow union_access_info::compute_flow() const
20143{
20144 auto res = isl_union_access_info_compute_flow(access: copy());
20145 return manage(ptr: res);
20146}
20147
20148isl::union_access_info union_access_info::set_kill(isl::union_map kill) const
20149{
20150 auto res = isl_union_access_info_set_kill(access: copy(), kill: kill.release());
20151 return manage(ptr: res);
20152}
20153
20154isl::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(access: copy(), may_source: may_source.release());
20157 return manage(ptr: res);
20158}
20159
20160isl::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(access: copy(), must_source: must_source.release());
20163 return manage(ptr: res);
20164}
20165
20166isl::union_access_info union_access_info::set_schedule(isl::schedule schedule) const
20167{
20168 auto res = isl_union_access_info_set_schedule(access: copy(), schedule: schedule.release());
20169 return manage(ptr: res);
20170}
20171
20172isl::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(access: copy(), schedule_map: schedule_map.release());
20175 return manage(ptr: res);
20176}
20177
20178inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
20179{
20180 char *str = isl_union_access_info_to_str(access: obj.get());
20181 if (!str) {
20182 os.setstate(std::ios_base::badbit);
20183 return os;
20184 }
20185 os << str;
20186 free(ptr: str);
20187 return os;
20188}
20189
20190// implementations for isl::union_flow
20191union_flow manage(__isl_take isl_union_flow *ptr) {
20192 return union_flow(ptr);
20193}
20194union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
20195 ptr = isl_union_flow_copy(flow: ptr);
20196 return union_flow(ptr);
20197}
20198
20199union_flow::union_flow()
20200 : ptr(nullptr) {}
20201
20202union_flow::union_flow(const union_flow &obj)
20203 : ptr(nullptr)
20204{
20205 ptr = obj.copy();
20206}
20207
20208union_flow::union_flow(__isl_take isl_union_flow *ptr)
20209 : ptr(ptr) {}
20210
20211union_flow &union_flow::operator=(union_flow obj) {
20212 std::swap(a&: this->ptr, b&: obj.ptr);
20213 return *this;
20214}
20215
20216union_flow::~union_flow() {
20217 if (ptr)
20218 isl_union_flow_free(flow: ptr);
20219}
20220
20221__isl_give isl_union_flow *union_flow::copy() const & {
20222 return isl_union_flow_copy(flow: ptr);
20223}
20224
20225__isl_keep isl_union_flow *union_flow::get() const {
20226 return ptr;
20227}
20228
20229__isl_give isl_union_flow *union_flow::release() {
20230 isl_union_flow *tmp = ptr;
20231 ptr = nullptr;
20232 return tmp;
20233}
20234
20235bool union_flow::is_null() const {
20236 return ptr == nullptr;
20237}
20238
20239isl::ctx union_flow::ctx() const {
20240 return isl::ctx(isl_union_flow_get_ctx(flow: ptr));
20241}
20242
20243isl::union_map union_flow::full_may_dependence() const
20244{
20245 auto res = isl_union_flow_get_full_may_dependence(flow: get());
20246 return manage(ptr: res);
20247}
20248
20249isl::union_map union_flow::get_full_may_dependence() const
20250{
20251 return full_may_dependence();
20252}
20253
20254isl::union_map union_flow::full_must_dependence() const
20255{
20256 auto res = isl_union_flow_get_full_must_dependence(flow: get());
20257 return manage(ptr: res);
20258}
20259
20260isl::union_map union_flow::get_full_must_dependence() const
20261{
20262 return full_must_dependence();
20263}
20264
20265isl::union_map union_flow::may_dependence() const
20266{
20267 auto res = isl_union_flow_get_may_dependence(flow: get());
20268 return manage(ptr: res);
20269}
20270
20271isl::union_map union_flow::get_may_dependence() const
20272{
20273 return may_dependence();
20274}
20275
20276isl::union_map union_flow::may_no_source() const
20277{
20278 auto res = isl_union_flow_get_may_no_source(flow: get());
20279 return manage(ptr: res);
20280}
20281
20282isl::union_map union_flow::get_may_no_source() const
20283{
20284 return may_no_source();
20285}
20286
20287isl::union_map union_flow::must_dependence() const
20288{
20289 auto res = isl_union_flow_get_must_dependence(flow: get());
20290 return manage(ptr: res);
20291}
20292
20293isl::union_map union_flow::get_must_dependence() const
20294{
20295 return must_dependence();
20296}
20297
20298isl::union_map union_flow::must_no_source() const
20299{
20300 auto res = isl_union_flow_get_must_no_source(flow: get());
20301 return manage(ptr: res);
20302}
20303
20304isl::union_map union_flow::get_must_no_source() const
20305{
20306 return must_no_source();
20307}
20308
20309inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
20310{
20311 char *str = isl_union_flow_to_str(flow: obj.get());
20312 if (!str) {
20313 os.setstate(std::ios_base::badbit);
20314 return os;
20315 }
20316 os << str;
20317 free(ptr: str);
20318 return os;
20319}
20320
20321// implementations for isl::union_map
20322union_map manage(__isl_take isl_union_map *ptr) {
20323 return union_map(ptr);
20324}
20325union_map manage_copy(__isl_keep isl_union_map *ptr) {
20326 ptr = isl_union_map_copy(umap: ptr);
20327 return union_map(ptr);
20328}
20329
20330union_map::union_map()
20331 : ptr(nullptr) {}
20332
20333union_map::union_map(const union_map &obj)
20334 : ptr(nullptr)
20335{
20336 ptr = obj.copy();
20337}
20338
20339union_map::union_map(__isl_take isl_union_map *ptr)
20340 : ptr(ptr) {}
20341
20342union_map::union_map(isl::basic_map bmap)
20343{
20344 auto res = isl_union_map_from_basic_map(bmap: bmap.release());
20345 ptr = res;
20346}
20347
20348union_map::union_map(isl::map map)
20349{
20350 auto res = isl_union_map_from_map(map: map.release());
20351 ptr = res;
20352}
20353
20354union_map::union_map(isl::ctx ctx, const std::string &str)
20355{
20356 auto res = isl_union_map_read_from_str(ctx: ctx.release(), str: str.c_str());
20357 ptr = res;
20358}
20359
20360union_map &union_map::operator=(union_map obj) {
20361 std::swap(a&: this->ptr, b&: obj.ptr);
20362 return *this;
20363}
20364
20365union_map::~union_map() {
20366 if (ptr)
20367 isl_union_map_free(umap: ptr);
20368}
20369
20370__isl_give isl_union_map *union_map::copy() const & {
20371 return isl_union_map_copy(umap: ptr);
20372}
20373
20374__isl_keep isl_union_map *union_map::get() const {
20375 return ptr;
20376}
20377
20378__isl_give isl_union_map *union_map::release() {
20379 isl_union_map *tmp = ptr;
20380 ptr = nullptr;
20381 return tmp;
20382}
20383
20384bool union_map::is_null() const {
20385 return ptr == nullptr;
20386}
20387
20388isl::ctx union_map::ctx() const {
20389 return isl::ctx(isl_union_map_get_ctx(umap: ptr));
20390}
20391
20392isl::union_map union_map::affine_hull() const
20393{
20394 auto res = isl_union_map_affine_hull(umap: copy());
20395 return manage(ptr: res);
20396}
20397
20398isl::union_map union_map::apply_domain(isl::union_map umap2) const
20399{
20400 auto res = isl_union_map_apply_domain(umap1: copy(), umap2: umap2.release());
20401 return manage(ptr: res);
20402}
20403
20404isl::union_map union_map::apply_range(isl::union_map umap2) const
20405{
20406 auto res = isl_union_map_apply_range(umap1: copy(), umap2: umap2.release());
20407 return manage(ptr: res);
20408}
20409
20410isl::map union_map::as_map() const
20411{
20412 auto res = isl_union_map_as_map(umap: copy());
20413 return manage(ptr: res);
20414}
20415
20416isl::multi_union_pw_aff union_map::as_multi_union_pw_aff() const
20417{
20418 auto res = isl_union_map_as_multi_union_pw_aff(umap: copy());
20419 return manage(ptr: res);
20420}
20421
20422isl::union_pw_multi_aff union_map::as_union_pw_multi_aff() const
20423{
20424 auto res = isl_union_map_as_union_pw_multi_aff(umap: copy());
20425 return manage(ptr: res);
20426}
20427
20428isl::union_set union_map::bind_range(isl::multi_id tuple) const
20429{
20430 auto res = isl_union_map_bind_range(umap: copy(), tuple: tuple.release());
20431 return manage(ptr: res);
20432}
20433
20434isl::union_map union_map::coalesce() const
20435{
20436 auto res = isl_union_map_coalesce(umap: copy());
20437 return manage(ptr: res);
20438}
20439
20440isl::union_map union_map::compute_divs() const
20441{
20442 auto res = isl_union_map_compute_divs(umap: copy());
20443 return manage(ptr: res);
20444}
20445
20446isl::union_map union_map::curry() const
20447{
20448 auto res = isl_union_map_curry(umap: copy());
20449 return manage(ptr: res);
20450}
20451
20452isl::union_set union_map::deltas() const
20453{
20454 auto res = isl_union_map_deltas(umap: copy());
20455 return manage(ptr: res);
20456}
20457
20458isl::union_map union_map::detect_equalities() const
20459{
20460 auto res = isl_union_map_detect_equalities(umap: copy());
20461 return manage(ptr: res);
20462}
20463
20464isl::union_set union_map::domain() const
20465{
20466 auto res = isl_union_map_domain(umap: copy());
20467 return manage(ptr: res);
20468}
20469
20470isl::union_map union_map::domain_factor_domain() const
20471{
20472 auto res = isl_union_map_domain_factor_domain(umap: copy());
20473 return manage(ptr: res);
20474}
20475
20476isl::union_map union_map::domain_factor_range() const
20477{
20478 auto res = isl_union_map_domain_factor_range(umap: copy());
20479 return manage(ptr: res);
20480}
20481
20482isl::union_map union_map::domain_map() const
20483{
20484 auto res = isl_union_map_domain_map(umap: copy());
20485 return manage(ptr: res);
20486}
20487
20488isl::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(umap: copy());
20491 return manage(ptr: res);
20492}
20493
20494isl::union_map union_map::domain_product(isl::union_map umap2) const
20495{
20496 auto res = isl_union_map_domain_product(umap1: copy(), umap2: umap2.release());
20497 return manage(ptr: res);
20498}
20499
20500isl::union_map union_map::empty(isl::ctx ctx)
20501{
20502 auto res = isl_union_map_empty_ctx(ctx: ctx.release());
20503 return manage(ptr: res);
20504}
20505
20506isl::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(umap: copy(), mupa: mupa.release());
20509 return manage(ptr: res);
20510}
20511
20512boolean 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 = { .func: 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(ptr: arg_0));
20520 return ret.release();
20521 };
20522 auto res = isl_union_map_every_map(umap: get(), test: test_lambda, user: &test_data);
20523 return manage(val: res);
20524}
20525
20526isl::map union_map::extract_map(isl::space space) const
20527{
20528 auto res = isl_union_map_extract_map(umap: get(), space: space.release());
20529 return manage(ptr: res);
20530}
20531
20532isl::union_map union_map::factor_domain() const
20533{
20534 auto res = isl_union_map_factor_domain(umap: copy());
20535 return manage(ptr: res);
20536}
20537
20538isl::union_map union_map::factor_range() const
20539{
20540 auto res = isl_union_map_factor_range(umap: copy());
20541 return manage(ptr: res);
20542}
20543
20544isl::union_map union_map::fixed_power(isl::val exp) const
20545{
20546 auto res = isl_union_map_fixed_power_val(umap: copy(), exp: exp.release());
20547 return manage(ptr: res);
20548}
20549
20550isl::union_map union_map::fixed_power(long exp) const
20551{
20552 return this->fixed_power(exp: isl::val(ctx(), exp));
20553}
20554
20555isl::union_map union_map::flat_range_product(isl::union_map umap2) const
20556{
20557 auto res = isl_union_map_flat_range_product(umap1: copy(), umap2: umap2.release());
20558 return manage(ptr: res);
20559}
20560
20561stat 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 = { .func: 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(ptr: arg_0));
20569 return ret.release();
20570 };
20571 auto res = isl_union_map_foreach_map(umap: get(), fn: fn_lambda, user: &fn_data);
20572 return manage(val: res);
20573}
20574
20575isl::union_map union_map::from(isl::multi_union_pw_aff mupa)
20576{
20577 auto res = isl_union_map_from_multi_union_pw_aff(mupa: mupa.release());
20578 return manage(ptr: res);
20579}
20580
20581isl::union_map union_map::from(isl::union_pw_multi_aff upma)
20582{
20583 auto res = isl_union_map_from_union_pw_multi_aff(upma: upma.release());
20584 return manage(ptr: res);
20585}
20586
20587isl::union_map union_map::from_domain(isl::union_set uset)
20588{
20589 auto res = isl_union_map_from_domain(uset: uset.release());
20590 return manage(ptr: res);
20591}
20592
20593isl::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: domain.release(), range: range.release());
20596 return manage(ptr: res);
20597}
20598
20599isl::union_map union_map::from_range(isl::union_set uset)
20600{
20601 auto res = isl_union_map_from_range(uset: uset.release());
20602 return manage(ptr: res);
20603}
20604
20605isl::union_map union_map::gist(isl::union_map context) const
20606{
20607 auto res = isl_union_map_gist(umap: copy(), context: context.release());
20608 return manage(ptr: res);
20609}
20610
20611isl::union_map union_map::gist_domain(isl::union_set uset) const
20612{
20613 auto res = isl_union_map_gist_domain(umap: copy(), uset: uset.release());
20614 return manage(ptr: res);
20615}
20616
20617isl::union_map union_map::gist_params(isl::set set) const
20618{
20619 auto res = isl_union_map_gist_params(umap: copy(), set: set.release());
20620 return manage(ptr: res);
20621}
20622
20623isl::union_map union_map::gist_range(isl::union_set uset) const
20624{
20625 auto res = isl_union_map_gist_range(umap: copy(), uset: uset.release());
20626 return manage(ptr: res);
20627}
20628
20629isl::union_map union_map::intersect(isl::union_map umap2) const
20630{
20631 auto res = isl_union_map_intersect(umap1: copy(), umap2: umap2.release());
20632 return manage(ptr: res);
20633}
20634
20635isl::union_map union_map::intersect_domain(isl::space space) const
20636{
20637 auto res = isl_union_map_intersect_domain_space(umap: copy(), space: space.release());
20638 return manage(ptr: res);
20639}
20640
20641isl::union_map union_map::intersect_domain(isl::union_set uset) const
20642{
20643 auto res = isl_union_map_intersect_domain_union_set(umap: copy(), uset: uset.release());
20644 return manage(ptr: res);
20645}
20646
20647isl::union_map union_map::intersect_domain_factor_domain(isl::union_map factor) const
20648{
20649 auto res = isl_union_map_intersect_domain_factor_domain(umap: copy(), factor: factor.release());
20650 return manage(ptr: res);
20651}
20652
20653isl::union_map union_map::intersect_domain_factor_range(isl::union_map factor) const
20654{
20655 auto res = isl_union_map_intersect_domain_factor_range(umap: copy(), factor: factor.release());
20656 return manage(ptr: res);
20657}
20658
20659isl::union_map union_map::intersect_params(isl::set set) const
20660{
20661 auto res = isl_union_map_intersect_params(umap: copy(), set: set.release());
20662 return manage(ptr: res);
20663}
20664
20665isl::union_map union_map::intersect_range(isl::space space) const
20666{
20667 auto res = isl_union_map_intersect_range_space(umap: copy(), space: space.release());
20668 return manage(ptr: res);
20669}
20670
20671isl::union_map union_map::intersect_range(isl::union_set uset) const
20672{
20673 auto res = isl_union_map_intersect_range_union_set(umap: copy(), uset: uset.release());
20674 return manage(ptr: res);
20675}
20676
20677isl::union_map union_map::intersect_range_factor_domain(isl::union_map factor) const
20678{
20679 auto res = isl_union_map_intersect_range_factor_domain(umap: copy(), factor: factor.release());
20680 return manage(ptr: res);
20681}
20682
20683isl::union_map union_map::intersect_range_factor_range(isl::union_map factor) const
20684{
20685 auto res = isl_union_map_intersect_range_factor_range(umap: copy(), factor: factor.release());
20686 return manage(ptr: res);
20687}
20688
20689boolean union_map::is_bijective() const
20690{
20691 auto res = isl_union_map_is_bijective(umap: get());
20692 return manage(val: res);
20693}
20694
20695boolean union_map::is_disjoint(const isl::union_map &umap2) const
20696{
20697 auto res = isl_union_map_is_disjoint(umap1: get(), umap2: umap2.get());
20698 return manage(val: res);
20699}
20700
20701boolean union_map::is_empty() const
20702{
20703 auto res = isl_union_map_is_empty(umap: get());
20704 return manage(val: res);
20705}
20706
20707boolean union_map::is_equal(const isl::union_map &umap2) const
20708{
20709 auto res = isl_union_map_is_equal(umap1: get(), umap2: umap2.get());
20710 return manage(val: res);
20711}
20712
20713boolean union_map::is_injective() const
20714{
20715 auto res = isl_union_map_is_injective(umap: get());
20716 return manage(val: res);
20717}
20718
20719boolean union_map::is_single_valued() const
20720{
20721 auto res = isl_union_map_is_single_valued(umap: get());
20722 return manage(val: res);
20723}
20724
20725boolean union_map::is_strict_subset(const isl::union_map &umap2) const
20726{
20727 auto res = isl_union_map_is_strict_subset(umap1: get(), umap2: umap2.get());
20728 return manage(val: res);
20729}
20730
20731boolean union_map::is_subset(const isl::union_map &umap2) const
20732{
20733 auto res = isl_union_map_is_subset(umap1: get(), umap2: umap2.get());
20734 return manage(val: res);
20735}
20736
20737boolean union_map::isa_map() const
20738{
20739 auto res = isl_union_map_isa_map(umap: get());
20740 return manage(val: res);
20741}
20742
20743isl::union_map union_map::lexmax() const
20744{
20745 auto res = isl_union_map_lexmax(umap: copy());
20746 return manage(ptr: res);
20747}
20748
20749isl::union_map union_map::lexmin() const
20750{
20751 auto res = isl_union_map_lexmin(umap: copy());
20752 return manage(ptr: res);
20753}
20754
20755isl::map_list union_map::map_list() const
20756{
20757 auto res = isl_union_map_get_map_list(umap: get());
20758 return manage(ptr: res);
20759}
20760
20761isl::map_list union_map::get_map_list() const
20762{
20763 return map_list();
20764}
20765
20766isl::set union_map::params() const
20767{
20768 auto res = isl_union_map_params(umap: copy());
20769 return manage(ptr: res);
20770}
20771
20772isl::union_map union_map::polyhedral_hull() const
20773{
20774 auto res = isl_union_map_polyhedral_hull(umap: copy());
20775 return manage(ptr: res);
20776}
20777
20778isl::union_map union_map::preimage_domain(isl::multi_aff ma) const
20779{
20780 auto res = isl_union_map_preimage_domain_multi_aff(umap: copy(), ma: ma.release());
20781 return manage(ptr: res);
20782}
20783
20784isl::union_map union_map::preimage_domain(isl::multi_pw_aff mpa) const
20785{
20786 auto res = isl_union_map_preimage_domain_multi_pw_aff(umap: copy(), mpa: mpa.release());
20787 return manage(ptr: res);
20788}
20789
20790isl::union_map union_map::preimage_domain(isl::pw_multi_aff pma) const
20791{
20792 auto res = isl_union_map_preimage_domain_pw_multi_aff(umap: copy(), pma: pma.release());
20793 return manage(ptr: res);
20794}
20795
20796isl::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(umap: copy(), upma: upma.release());
20799 return manage(ptr: res);
20800}
20801
20802isl::union_map union_map::preimage_range(isl::multi_aff ma) const
20803{
20804 auto res = isl_union_map_preimage_range_multi_aff(umap: copy(), ma: ma.release());
20805 return manage(ptr: res);
20806}
20807
20808isl::union_map union_map::preimage_range(isl::pw_multi_aff pma) const
20809{
20810 auto res = isl_union_map_preimage_range_pw_multi_aff(umap: copy(), pma: pma.release());
20811 return manage(ptr: res);
20812}
20813
20814isl::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(umap: copy(), upma: upma.release());
20817 return manage(ptr: res);
20818}
20819
20820isl::union_map union_map::product(isl::union_map umap2) const
20821{
20822 auto res = isl_union_map_product(umap1: copy(), umap2: umap2.release());
20823 return manage(ptr: res);
20824}
20825
20826isl::union_map union_map::project_out_all_params() const
20827{
20828 auto res = isl_union_map_project_out_all_params(umap: copy());
20829 return manage(ptr: res);
20830}
20831
20832isl::union_set union_map::range() const
20833{
20834 auto res = isl_union_map_range(umap: copy());
20835 return manage(ptr: res);
20836}
20837
20838isl::union_map union_map::range_factor_domain() const
20839{
20840 auto res = isl_union_map_range_factor_domain(umap: copy());
20841 return manage(ptr: res);
20842}
20843
20844isl::union_map union_map::range_factor_range() const
20845{
20846 auto res = isl_union_map_range_factor_range(umap: copy());
20847 return manage(ptr: res);
20848}
20849
20850isl::union_map union_map::range_map() const
20851{
20852 auto res = isl_union_map_range_map(umap: copy());
20853 return manage(ptr: res);
20854}
20855
20856isl::union_map union_map::range_product(isl::union_map umap2) const
20857{
20858 auto res = isl_union_map_range_product(umap1: copy(), umap2: umap2.release());
20859 return manage(ptr: res);
20860}
20861
20862isl::union_map union_map::range_reverse() const
20863{
20864 auto res = isl_union_map_range_reverse(umap: copy());
20865 return manage(ptr: res);
20866}
20867
20868isl::union_map union_map::reverse() const
20869{
20870 auto res = isl_union_map_reverse(umap: copy());
20871 return manage(ptr: res);
20872}
20873
20874isl::space union_map::space() const
20875{
20876 auto res = isl_union_map_get_space(umap: get());
20877 return manage(ptr: res);
20878}
20879
20880isl::space union_map::get_space() const
20881{
20882 return space();
20883}
20884
20885isl::union_map union_map::subtract(isl::union_map umap2) const
20886{
20887 auto res = isl_union_map_subtract(umap1: copy(), umap2: umap2.release());
20888 return manage(ptr: res);
20889}
20890
20891isl::union_map union_map::subtract_domain(isl::union_set dom) const
20892{
20893 auto res = isl_union_map_subtract_domain(umap: copy(), dom: dom.release());
20894 return manage(ptr: res);
20895}
20896
20897isl::union_map union_map::subtract_range(isl::union_set dom) const
20898{
20899 auto res = isl_union_map_subtract_range(umap: copy(), dom: dom.release());
20900 return manage(ptr: res);
20901}
20902
20903isl::union_map union_map::uncurry() const
20904{
20905 auto res = isl_union_map_uncurry(umap: copy());
20906 return manage(ptr: res);
20907}
20908
20909isl::union_map union_map::unite(isl::union_map umap2) const
20910{
20911 auto res = isl_union_map_union(umap1: copy(), umap2: umap2.release());
20912 return manage(ptr: res);
20913}
20914
20915isl::union_map union_map::universe() const
20916{
20917 auto res = isl_union_map_universe(umap: copy());
20918 return manage(ptr: res);
20919}
20920
20921isl::union_set union_map::wrap() const
20922{
20923 auto res = isl_union_map_wrap(umap: copy());
20924 return manage(ptr: res);
20925}
20926
20927isl::union_map union_map::zip() const
20928{
20929 auto res = isl_union_map_zip(umap: copy());
20930 return manage(ptr: res);
20931}
20932
20933inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
20934{
20935 char *str = isl_union_map_to_str(umap: obj.get());
20936 if (!str) {
20937 os.setstate(std::ios_base::badbit);
20938 return os;
20939 }
20940 os << str;
20941 free(ptr: str);
20942 return os;
20943}
20944
20945// implementations for isl::union_pw_aff
20946union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
20947 return union_pw_aff(ptr);
20948}
20949union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
20950 ptr = isl_union_pw_aff_copy(upa: ptr);
20951 return union_pw_aff(ptr);
20952}
20953
20954union_pw_aff::union_pw_aff()
20955 : ptr(nullptr) {}
20956
20957union_pw_aff::union_pw_aff(const union_pw_aff &obj)
20958 : ptr(nullptr)
20959{
20960 ptr = obj.copy();
20961}
20962
20963union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
20964 : ptr(ptr) {}
20965
20966union_pw_aff::union_pw_aff(isl::aff aff)
20967{
20968 auto res = isl_union_pw_aff_from_aff(aff: aff.release());
20969 ptr = res;
20970}
20971
20972union_pw_aff::union_pw_aff(isl::pw_aff pa)
20973{
20974 auto res = isl_union_pw_aff_from_pw_aff(pa: pa.release());
20975 ptr = res;
20976}
20977
20978union_pw_aff::union_pw_aff(isl::ctx ctx, const std::string &str)
20979{
20980 auto res = isl_union_pw_aff_read_from_str(ctx: ctx.release(), str: str.c_str());
20981 ptr = res;
20982}
20983
20984union_pw_aff::union_pw_aff(isl::union_set domain, isl::val v)
20985{
20986 auto res = isl_union_pw_aff_val_on_domain(domain: domain.release(), v: v.release());
20987 ptr = res;
20988}
20989
20990union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
20991 std::swap(a&: this->ptr, b&: obj.ptr);
20992 return *this;
20993}
20994
20995union_pw_aff::~union_pw_aff() {
20996 if (ptr)
20997 isl_union_pw_aff_free(upa: ptr);
20998}
20999
21000__isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
21001 return isl_union_pw_aff_copy(upa: ptr);
21002}
21003
21004__isl_keep isl_union_pw_aff *union_pw_aff::get() const {
21005 return ptr;
21006}
21007
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
21014bool union_pw_aff::is_null() const {
21015 return ptr == nullptr;
21016}
21017
21018isl::ctx union_pw_aff::ctx() const {
21019 return isl::ctx(isl_union_pw_aff_get_ctx(upa: ptr));
21020}
21021
21022isl::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
21027isl::union_pw_aff union_pw_aff::add(isl::union_pw_aff upa2) const
21028{
21029 auto res = isl_union_pw_aff_add(upa1: copy(), upa2: upa2.release());
21030 return manage(ptr: res);
21031}
21032
21033isl::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
21038isl::union_pw_aff union_pw_aff::add(const isl::aff &upa2) const
21039{
21040 return this->add(upa2: isl::union_pw_aff(upa2));
21041}
21042
21043isl::union_pw_aff union_pw_aff::add(const isl::pw_aff &upa2) const
21044{
21045 return this->add(upa2: isl::union_pw_aff(upa2));
21046}
21047
21048isl::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
21053isl::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
21058isl::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
21063isl::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
21068isl::union_map union_pw_aff::as_union_map() const
21069{
21070 return isl::union_pw_multi_aff(*this).as_union_map();
21071}
21072
21073isl::union_pw_aff union_pw_aff::at(int pos) const
21074{
21075 return isl::multi_union_pw_aff(*this).at(pos);
21076}
21077
21078isl::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
21083isl::union_set union_pw_aff::bind(isl::id id) const
21084{
21085 auto res = isl_union_pw_aff_bind_id(upa: copy(), id: id.release());
21086 return manage(ptr: res);
21087}
21088
21089isl::union_set union_pw_aff::bind(const std::string &id) const
21090{
21091 return this->bind(id: isl::id(ctx(), id));
21092}
21093
21094isl::union_pw_aff union_pw_aff::coalesce() const
21095{
21096 auto res = isl_union_pw_aff_coalesce(upa: copy());
21097 return manage(ptr: res);
21098}
21099
21100class size union_pw_aff::dim(isl::dim type) const
21101{
21102 return isl::multi_union_pw_aff(*this).dim(type);
21103}
21104
21105isl::union_set union_pw_aff::domain() const
21106{
21107 auto res = isl_union_pw_aff_domain(upa: copy());
21108 return manage(ptr: res);
21109}
21110
21111isl::union_pw_aff union_pw_aff::empty(isl::space space)
21112{
21113 auto res = isl_union_pw_aff_empty(space: space.release());
21114 return manage(ptr: res);
21115}
21116
21117isl::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
21122isl::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
21127isl::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
21132stat 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 = { .func: 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(ptr: arg_0));
21140 return ret.release();
21141 };
21142 auto res = isl_union_pw_aff_foreach_pw_aff(upa: get(), fn: fn_lambda, user: &fn_data);
21143 return manage(val: res);
21144}
21145
21146isl::union_pw_aff union_pw_aff::gist(isl::union_set context) const
21147{
21148 auto res = isl_union_pw_aff_gist(upa: copy(), context: context.release());
21149 return manage(ptr: res);
21150}
21151
21152boolean union_pw_aff::has_range_tuple_id() const
21153{
21154 return isl::multi_union_pw_aff(*this).has_range_tuple_id();
21155}
21156
21157isl::union_pw_aff union_pw_aff::intersect_domain(isl::space space) const
21158{
21159 auto res = isl_union_pw_aff_intersect_domain_space(upa: copy(), space: space.release());
21160 return manage(ptr: res);
21161}
21162
21163isl::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(upa: copy(), uset: uset.release());
21166 return manage(ptr: res);
21167}
21168
21169isl::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(upa: copy(), uset: uset.release());
21172 return manage(ptr: res);
21173}
21174
21175isl::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(upa: copy(), uset: uset.release());
21178 return manage(ptr: res);
21179}
21180
21181isl::union_pw_aff union_pw_aff::intersect_params(isl::set set) const
21182{
21183 auto res = isl_union_pw_aff_intersect_params(upa: copy(), set: set.release());
21184 return manage(ptr: res);
21185}
21186
21187boolean union_pw_aff::involves_locals() const
21188{
21189 return isl::union_pw_multi_aff(*this).involves_locals();
21190}
21191
21192boolean union_pw_aff::involves_nan() const
21193{
21194 return isl::multi_union_pw_aff(*this).involves_nan();
21195}
21196
21197boolean union_pw_aff::isa_pw_multi_aff() const
21198{
21199 return isl::union_pw_multi_aff(*this).isa_pw_multi_aff();
21200}
21201
21202isl::union_pw_aff_list union_pw_aff::list() const
21203{
21204 return isl::multi_union_pw_aff(*this).list();
21205}
21206
21207isl::multi_union_pw_aff union_pw_aff::neg() const
21208{
21209 return isl::multi_union_pw_aff(*this).neg();
21210}
21211
21212boolean union_pw_aff::plain_is_empty() const
21213{
21214 return isl::union_pw_multi_aff(*this).plain_is_empty();
21215}
21216
21217boolean 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
21222isl::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
21227isl::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(upa: copy(), upma: upma.release());
21230 return manage(ptr: res);
21231}
21232
21233isl::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
21238isl::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
21243isl::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
21248isl::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
21253isl::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
21258isl::id union_pw_aff::range_tuple_id() const
21259{
21260 return isl::multi_union_pw_aff(*this).range_tuple_id();
21261}
21262
21263isl::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
21268isl::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
21273isl::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
21278isl::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
21283isl::multi_union_pw_aff union_pw_aff::scale(long v) const
21284{
21285 return this->scale(v: isl::val(ctx(), v));
21286}
21287
21288isl::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
21293isl::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
21298isl::multi_union_pw_aff union_pw_aff::scale_down(long v) const
21299{
21300 return this->scale_down(v: isl::val(ctx(), v));
21301}
21302
21303isl::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
21308isl::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
21313isl::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
21318isl::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
21323class size union_pw_aff::size() const
21324{
21325 return isl::multi_union_pw_aff(*this).size();
21326}
21327
21328isl::space union_pw_aff::space() const
21329{
21330 auto res = isl_union_pw_aff_get_space(upa: get());
21331 return manage(ptr: res);
21332}
21333
21334isl::space union_pw_aff::get_space() const
21335{
21336 return space();
21337}
21338
21339isl::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
21344isl::union_pw_aff union_pw_aff::sub(isl::union_pw_aff upa2) const
21345{
21346 auto res = isl_union_pw_aff_sub(upa1: copy(), upa2: upa2.release());
21347 return manage(ptr: res);
21348}
21349
21350isl::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
21355isl::union_pw_aff union_pw_aff::sub(const isl::aff &upa2) const
21356{
21357 return this->sub(upa2: isl::union_pw_aff(upa2));
21358}
21359
21360isl::union_pw_aff union_pw_aff::sub(const isl::pw_aff &upa2) const
21361{
21362 return this->sub(upa2: isl::union_pw_aff(upa2));
21363}
21364
21365isl::union_pw_aff union_pw_aff::subtract_domain(isl::space space) const
21366{
21367 auto res = isl_union_pw_aff_subtract_domain_space(upa: copy(), space: space.release());
21368 return manage(ptr: res);
21369}
21370
21371isl::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(upa: copy(), uset: uset.release());
21374 return manage(ptr: res);
21375}
21376
21377isl::union_pw_aff_list union_pw_aff::to_list() const
21378{
21379 auto res = isl_union_pw_aff_to_list(el: copy());
21380 return manage(ptr: res);
21381}
21382
21383isl::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
21388isl::union_pw_aff union_pw_aff::union_add(isl::union_pw_aff upa2) const
21389{
21390 auto res = isl_union_pw_aff_union_add(upa1: copy(), upa2: upa2.release());
21391 return manage(ptr: res);
21392}
21393
21394isl::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
21399isl::union_pw_aff union_pw_aff::union_add(const isl::aff &upa2) const
21400{
21401 return this->union_add(upa2: isl::union_pw_aff(upa2));
21402}
21403
21404isl::union_pw_aff union_pw_aff::union_add(const isl::pw_aff &upa2) const
21405{
21406 return this->union_add(upa2: isl::union_pw_aff(upa2));
21407}
21408
21409inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
21410{
21411 char *str = isl_union_pw_aff_to_str(upa: obj.get());
21412 if (!str) {
21413 os.setstate(std::ios_base::badbit);
21414 return os;
21415 }
21416 os << str;
21417 free(ptr: str);
21418 return os;
21419}
21420
21421// implementations for isl::union_pw_aff_list
21422union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
21423 return union_pw_aff_list(ptr);
21424}
21425union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
21426 ptr = isl_union_pw_aff_list_copy(list: ptr);
21427 return union_pw_aff_list(ptr);
21428}
21429
21430union_pw_aff_list::union_pw_aff_list()
21431 : ptr(nullptr) {}
21432
21433union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
21434 : ptr(nullptr)
21435{
21436 ptr = obj.copy();
21437}
21438
21439union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
21440 : ptr(ptr) {}
21441
21442union_pw_aff_list::union_pw_aff_list(isl::ctx ctx, int n)
21443{
21444 auto res = isl_union_pw_aff_list_alloc(ctx: ctx.release(), n);
21445 ptr = res;
21446}
21447
21448union_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: el.release());
21451 ptr = res;
21452}
21453
21454union_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: ctx.release(), str: str.c_str());
21457 ptr = res;
21458}
21459
21460union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
21461 std::swap(a&: this->ptr, b&: obj.ptr);
21462 return *this;
21463}
21464
21465union_pw_aff_list::~union_pw_aff_list() {
21466 if (ptr)
21467 isl_union_pw_aff_list_free(list: ptr);
21468}
21469
21470__isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
21471 return isl_union_pw_aff_list_copy(list: ptr);
21472}
21473
21474__isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
21475 return ptr;
21476}
21477
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
21484bool union_pw_aff_list::is_null() const {
21485 return ptr == nullptr;
21486}
21487
21488isl::ctx union_pw_aff_list::ctx() const {
21489 return isl::ctx(isl_union_pw_aff_list_get_ctx(list: ptr));
21490}
21491
21492isl::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(list: copy(), el: el.release());
21495 return manage(ptr: res);
21496}
21497
21498isl::union_pw_aff union_pw_aff_list::at(int index) const
21499{
21500 auto res = isl_union_pw_aff_list_get_at(list: get(), index);
21501 return manage(ptr: res);
21502}
21503
21504isl::union_pw_aff union_pw_aff_list::get_at(int index) const
21505{
21506 return at(index);
21507}
21508
21509isl::union_pw_aff_list union_pw_aff_list::clear() const
21510{
21511 auto res = isl_union_pw_aff_list_clear(list: copy());
21512 return manage(ptr: res);
21513}
21514
21515isl::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(list1: copy(), list2: list2.release());
21518 return manage(ptr: res);
21519}
21520
21521isl::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(list: copy(), first, n);
21524 return manage(ptr: res);
21525}
21526
21527stat 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 = { .func: 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(ptr: arg_0));
21535 return ret.release();
21536 };
21537 auto res = isl_union_pw_aff_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
21538 return manage(val: res);
21539}
21540
21541isl::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(list: copy(), pos, el: el.release());
21544 return manage(ptr: res);
21545}
21546
21547class size union_pw_aff_list::size() const
21548{
21549 auto res = isl_union_pw_aff_list_size(list: get());
21550 return manage(val: res);
21551}
21552
21553inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
21554{
21555 char *str = isl_union_pw_aff_list_to_str(list: obj.get());
21556 if (!str) {
21557 os.setstate(std::ios_base::badbit);
21558 return os;
21559 }
21560 os << str;
21561 free(ptr: str);
21562 return os;
21563}
21564
21565// implementations for isl::union_pw_multi_aff
21566union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
21567 return union_pw_multi_aff(ptr);
21568}
21569union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
21570 ptr = isl_union_pw_multi_aff_copy(upma: ptr);
21571 return union_pw_multi_aff(ptr);
21572}
21573
21574union_pw_multi_aff::union_pw_multi_aff()
21575 : ptr(nullptr) {}
21576
21577union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
21578 : ptr(nullptr)
21579{
21580 ptr = obj.copy();
21581}
21582
21583union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
21584 : ptr(ptr) {}
21585
21586union_pw_multi_aff::union_pw_multi_aff(isl::union_set uset)
21587{
21588 auto res = isl_union_pw_multi_aff_from_domain(uset: uset.release());
21589 ptr = res;
21590}
21591
21592union_pw_multi_aff::union_pw_multi_aff(isl::multi_aff ma)
21593{
21594 auto res = isl_union_pw_multi_aff_from_multi_aff(ma: ma.release());
21595 ptr = res;
21596}
21597
21598union_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: pma.release());
21601 ptr = res;
21602}
21603
21604union_pw_multi_aff::union_pw_multi_aff(isl::union_map umap)
21605{
21606 auto res = isl_union_pw_multi_aff_from_union_map(umap: umap.release());
21607 ptr = res;
21608}
21609
21610union_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: upa.release());
21613 ptr = res;
21614}
21615
21616union_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: ctx.release(), str: str.c_str());
21619 ptr = res;
21620}
21621
21622union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
21623 std::swap(a&: this->ptr, b&: obj.ptr);
21624 return *this;
21625}
21626
21627union_pw_multi_aff::~union_pw_multi_aff() {
21628 if (ptr)
21629 isl_union_pw_multi_aff_free(upma: ptr);
21630}
21631
21632__isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
21633 return isl_union_pw_multi_aff_copy(upma: ptr);
21634}
21635
21636__isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
21637 return ptr;
21638}
21639
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
21646bool union_pw_multi_aff::is_null() const {
21647 return ptr == nullptr;
21648}
21649
21650isl::ctx union_pw_multi_aff::ctx() const {
21651 return isl::ctx(isl_union_pw_multi_aff_get_ctx(upma: ptr));
21652}
21653
21654isl::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(upma1: copy(), upma2: upma2.release());
21657 return manage(ptr: res);
21658}
21659
21660isl::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(upma: copy(), pma: pma.release());
21663 return manage(ptr: res);
21664}
21665
21666isl::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(upma1: copy(), upma2: upma2.release());
21669 return manage(ptr: res);
21670}
21671
21672isl::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(upma: copy());
21675 return manage(ptr: res);
21676}
21677
21678isl::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(upma: copy());
21681 return manage(ptr: res);
21682}
21683
21684isl::union_map union_pw_multi_aff::as_union_map() const
21685{
21686 auto res = isl_union_pw_multi_aff_as_union_map(upma: copy());
21687 return manage(ptr: res);
21688}
21689
21690isl::union_pw_multi_aff union_pw_multi_aff::coalesce() const
21691{
21692 auto res = isl_union_pw_multi_aff_coalesce(upma: copy());
21693 return manage(ptr: res);
21694}
21695
21696isl::union_set union_pw_multi_aff::domain() const
21697{
21698 auto res = isl_union_pw_multi_aff_domain(upma: copy());
21699 return manage(ptr: res);
21700}
21701
21702isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::space space)
21703{
21704 auto res = isl_union_pw_multi_aff_empty(space: space.release());
21705 return manage(ptr: res);
21706}
21707
21708isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::ctx ctx)
21709{
21710 auto res = isl_union_pw_multi_aff_empty_ctx(ctx: ctx.release());
21711 return manage(ptr: res);
21712}
21713
21714isl::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(upma: get(), space: space.release());
21717 return manage(ptr: res);
21718}
21719
21720isl::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(upma1: copy(), upma2: upma2.release());
21723 return manage(ptr: res);
21724}
21725
21726isl::union_pw_multi_aff union_pw_multi_aff::gist(isl::union_set context) const
21727{
21728 auto res = isl_union_pw_multi_aff_gist(upma: copy(), context: context.release());
21729 return manage(ptr: res);
21730}
21731
21732isl::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(upma: copy(), space: space.release());
21735 return manage(ptr: res);
21736}
21737
21738isl::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(upma: copy(), uset: uset.release());
21741 return manage(ptr: res);
21742}
21743
21744isl::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(upma: copy(), uset: uset.release());
21747 return manage(ptr: res);
21748}
21749
21750isl::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(upma: copy(), uset: uset.release());
21753 return manage(ptr: res);
21754}
21755
21756isl::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(upma: copy(), set: set.release());
21759 return manage(ptr: res);
21760}
21761
21762boolean union_pw_multi_aff::involves_locals() const
21763{
21764 auto res = isl_union_pw_multi_aff_involves_locals(upma: get());
21765 return manage(val: res);
21766}
21767
21768boolean union_pw_multi_aff::isa_pw_multi_aff() const
21769{
21770 auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(upma: get());
21771 return manage(val: res);
21772}
21773
21774boolean union_pw_multi_aff::plain_is_empty() const
21775{
21776 auto res = isl_union_pw_multi_aff_plain_is_empty(upma: get());
21777 return manage(val: res);
21778}
21779
21780isl::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(upma1: copy(), upma2: upma2.release());
21783 return manage(ptr: res);
21784}
21785
21786isl::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(upma1: copy(), upma2: upma2.release());
21789 return manage(ptr: res);
21790}
21791
21792isl::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(upma: get());
21795 return manage(ptr: res);
21796}
21797
21798isl::pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
21799{
21800 return pw_multi_aff_list();
21801}
21802
21803isl::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
21804{
21805 auto res = isl_union_pw_multi_aff_range_factor_domain(upma: copy());
21806 return manage(ptr: res);
21807}
21808
21809isl::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
21810{
21811 auto res = isl_union_pw_multi_aff_range_factor_range(upma: copy());
21812 return manage(ptr: res);
21813}
21814
21815isl::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(upma1: copy(), upma2: upma2.release());
21818 return manage(ptr: res);
21819}
21820
21821isl::space union_pw_multi_aff::space() const
21822{
21823 auto res = isl_union_pw_multi_aff_get_space(upma: get());
21824 return manage(ptr: res);
21825}
21826
21827isl::space union_pw_multi_aff::get_space() const
21828{
21829 return space();
21830}
21831
21832isl::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(upma1: copy(), upma2: upma2.release());
21835 return manage(ptr: res);
21836}
21837
21838isl::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(upma: copy(), space: space.release());
21841 return manage(ptr: res);
21842}
21843
21844isl::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(upma: copy(), uset: uset.release());
21847 return manage(ptr: res);
21848}
21849
21850isl::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(upma1: copy(), upma2: upma2.release());
21853 return manage(ptr: res);
21854}
21855
21856inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
21857{
21858 char *str = isl_union_pw_multi_aff_to_str(upma: obj.get());
21859 if (!str) {
21860 os.setstate(std::ios_base::badbit);
21861 return os;
21862 }
21863 os << str;
21864 free(ptr: str);
21865 return os;
21866}
21867
21868// implementations for isl::union_set
21869union_set manage(__isl_take isl_union_set *ptr) {
21870 return union_set(ptr);
21871}
21872union_set manage_copy(__isl_keep isl_union_set *ptr) {
21873 ptr = isl_union_set_copy(uset: ptr);
21874 return union_set(ptr);
21875}
21876
21877union_set::union_set()
21878 : ptr(nullptr) {}
21879
21880union_set::union_set(const union_set &obj)
21881 : ptr(nullptr)
21882{
21883 ptr = obj.copy();
21884}
21885
21886union_set::union_set(__isl_take isl_union_set *ptr)
21887 : ptr(ptr) {}
21888
21889union_set::union_set(isl::basic_set bset)
21890{
21891 auto res = isl_union_set_from_basic_set(bset: bset.release());
21892 ptr = res;
21893}
21894
21895union_set::union_set(isl::point pnt)
21896{
21897 auto res = isl_union_set_from_point(pnt: pnt.release());
21898 ptr = res;
21899}
21900
21901union_set::union_set(isl::set set)
21902{
21903 auto res = isl_union_set_from_set(set: set.release());
21904 ptr = res;
21905}
21906
21907union_set::union_set(isl::ctx ctx, const std::string &str)
21908{
21909 auto res = isl_union_set_read_from_str(ctx: ctx.release(), str: str.c_str());
21910 ptr = res;
21911}
21912
21913union_set &union_set::operator=(union_set obj) {
21914 std::swap(a&: this->ptr, b&: obj.ptr);
21915 return *this;
21916}
21917
21918union_set::~union_set() {
21919 if (ptr)
21920 isl_union_set_free(uset: ptr);
21921}
21922
21923__isl_give isl_union_set *union_set::copy() const & {
21924 return isl_union_set_copy(uset: ptr);
21925}
21926
21927__isl_keep isl_union_set *union_set::get() const {
21928 return ptr;
21929}
21930
21931__isl_give isl_union_set *union_set::release() {
21932 isl_union_set *tmp = ptr;
21933 ptr = nullptr;
21934 return tmp;
21935}
21936
21937bool union_set::is_null() const {
21938 return ptr == nullptr;
21939}
21940
21941isl::ctx union_set::ctx() const {
21942 return isl::ctx(isl_union_set_get_ctx(uset: ptr));
21943}
21944
21945isl::union_set union_set::affine_hull() const
21946{
21947 auto res = isl_union_set_affine_hull(uset: copy());
21948 return manage(ptr: res);
21949}
21950
21951isl::union_set union_set::apply(isl::union_map umap) const
21952{
21953 auto res = isl_union_set_apply(uset: copy(), umap: umap.release());
21954 return manage(ptr: res);
21955}
21956
21957isl::set union_set::as_set() const
21958{
21959 auto res = isl_union_set_as_set(uset: copy());
21960 return manage(ptr: res);
21961}
21962
21963isl::union_set union_set::coalesce() const
21964{
21965 auto res = isl_union_set_coalesce(uset: copy());
21966 return manage(ptr: res);
21967}
21968
21969isl::union_set union_set::compute_divs() const
21970{
21971 auto res = isl_union_set_compute_divs(uset: copy());
21972 return manage(ptr: res);
21973}
21974
21975boolean union_set::contains(const isl::space &space) const
21976{
21977 auto res = isl_union_set_contains(uset: get(), space: space.get());
21978 return manage(val: res);
21979}
21980
21981isl::union_set union_set::detect_equalities() const
21982{
21983 auto res = isl_union_set_detect_equalities(uset: copy());
21984 return manage(ptr: res);
21985}
21986
21987isl::union_set union_set::empty(isl::ctx ctx)
21988{
21989 auto res = isl_union_set_empty_ctx(ctx: ctx.release());
21990 return manage(ptr: res);
21991}
21992
21993boolean 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 = { .func: 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(ptr: arg_0));
22001 return ret.release();
22002 };
22003 auto res = isl_union_set_every_set(uset: get(), test: test_lambda, user: &test_data);
22004 return manage(val: res);
22005}
22006
22007isl::set union_set::extract_set(isl::space space) const
22008{
22009 auto res = isl_union_set_extract_set(uset: get(), space: space.release());
22010 return manage(ptr: res);
22011}
22012
22013stat 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 = { .func: 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(ptr: arg_0));
22021 return ret.release();
22022 };
22023 auto res = isl_union_set_foreach_point(uset: get(), fn: fn_lambda, user: &fn_data);
22024 return manage(val: res);
22025}
22026
22027stat 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 = { .func: 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(ptr: arg_0));
22035 return ret.release();
22036 };
22037 auto res = isl_union_set_foreach_set(uset: get(), fn: fn_lambda, user: &fn_data);
22038 return manage(val: res);
22039}
22040
22041isl::union_set union_set::gist(isl::union_set context) const
22042{
22043 auto res = isl_union_set_gist(uset: copy(), context: context.release());
22044 return manage(ptr: res);
22045}
22046
22047isl::union_set union_set::gist_params(isl::set set) const
22048{
22049 auto res = isl_union_set_gist_params(uset: copy(), set: set.release());
22050 return manage(ptr: res);
22051}
22052
22053isl::union_map union_set::identity() const
22054{
22055 auto res = isl_union_set_identity(uset: copy());
22056 return manage(ptr: res);
22057}
22058
22059isl::union_pw_multi_aff union_set::identity_union_pw_multi_aff() const
22060{
22061 auto res = isl_union_set_identity_union_pw_multi_aff(uset: copy());
22062 return manage(ptr: res);
22063}
22064
22065isl::union_set union_set::intersect(isl::union_set uset2) const
22066{
22067 auto res = isl_union_set_intersect(uset1: copy(), uset2: uset2.release());
22068 return manage(ptr: res);
22069}
22070
22071isl::union_set union_set::intersect_params(isl::set set) const
22072{
22073 auto res = isl_union_set_intersect_params(uset: copy(), set: set.release());
22074 return manage(ptr: res);
22075}
22076
22077boolean union_set::is_disjoint(const isl::union_set &uset2) const
22078{
22079 auto res = isl_union_set_is_disjoint(uset1: get(), uset2: uset2.get());
22080 return manage(val: res);
22081}
22082
22083boolean union_set::is_empty() const
22084{
22085 auto res = isl_union_set_is_empty(uset: get());
22086 return manage(val: res);
22087}
22088
22089boolean union_set::is_equal(const isl::union_set &uset2) const
22090{
22091 auto res = isl_union_set_is_equal(uset1: get(), uset2: uset2.get());
22092 return manage(val: res);
22093}
22094
22095boolean union_set::is_strict_subset(const isl::union_set &uset2) const
22096{
22097 auto res = isl_union_set_is_strict_subset(uset1: get(), uset2: uset2.get());
22098 return manage(val: res);
22099}
22100
22101boolean union_set::is_subset(const isl::union_set &uset2) const
22102{
22103 auto res = isl_union_set_is_subset(uset1: get(), uset2: uset2.get());
22104 return manage(val: res);
22105}
22106
22107boolean union_set::isa_set() const
22108{
22109 auto res = isl_union_set_isa_set(uset: get());
22110 return manage(val: res);
22111}
22112
22113isl::union_set union_set::lexmax() const
22114{
22115 auto res = isl_union_set_lexmax(uset: copy());
22116 return manage(ptr: res);
22117}
22118
22119isl::union_set union_set::lexmin() const
22120{
22121 auto res = isl_union_set_lexmin(uset: copy());
22122 return manage(ptr: res);
22123}
22124
22125isl::set union_set::params() const
22126{
22127 auto res = isl_union_set_params(uset: copy());
22128 return manage(ptr: res);
22129}
22130
22131isl::union_set union_set::polyhedral_hull() const
22132{
22133 auto res = isl_union_set_polyhedral_hull(uset: copy());
22134 return manage(ptr: res);
22135}
22136
22137isl::union_set union_set::preimage(isl::multi_aff ma) const
22138{
22139 auto res = isl_union_set_preimage_multi_aff(uset: copy(), ma: ma.release());
22140 return manage(ptr: res);
22141}
22142
22143isl::union_set union_set::preimage(isl::pw_multi_aff pma) const
22144{
22145 auto res = isl_union_set_preimage_pw_multi_aff(uset: copy(), pma: pma.release());
22146 return manage(ptr: res);
22147}
22148
22149isl::union_set union_set::preimage(isl::union_pw_multi_aff upma) const
22150{
22151 auto res = isl_union_set_preimage_union_pw_multi_aff(uset: copy(), upma: upma.release());
22152 return manage(ptr: res);
22153}
22154
22155isl::point union_set::sample_point() const
22156{
22157 auto res = isl_union_set_sample_point(uset: copy());
22158 return manage(ptr: res);
22159}
22160
22161isl::set_list union_set::set_list() const
22162{
22163 auto res = isl_union_set_get_set_list(uset: get());
22164 return manage(ptr: res);
22165}
22166
22167isl::set_list union_set::get_set_list() const
22168{
22169 return set_list();
22170}
22171
22172isl::space union_set::space() const
22173{
22174 auto res = isl_union_set_get_space(uset: get());
22175 return manage(ptr: res);
22176}
22177
22178isl::space union_set::get_space() const
22179{
22180 return space();
22181}
22182
22183isl::union_set union_set::subtract(isl::union_set uset2) const
22184{
22185 auto res = isl_union_set_subtract(uset1: copy(), uset2: uset2.release());
22186 return manage(ptr: res);
22187}
22188
22189isl::union_set_list union_set::to_list() const
22190{
22191 auto res = isl_union_set_to_list(el: copy());
22192 return manage(ptr: res);
22193}
22194
22195isl::union_set union_set::unite(isl::union_set uset2) const
22196{
22197 auto res = isl_union_set_union(uset1: copy(), uset2: uset2.release());
22198 return manage(ptr: res);
22199}
22200
22201isl::union_set union_set::universe() const
22202{
22203 auto res = isl_union_set_universe(uset: copy());
22204 return manage(ptr: res);
22205}
22206
22207isl::union_map union_set::unwrap() const
22208{
22209 auto res = isl_union_set_unwrap(uset: copy());
22210 return manage(ptr: res);
22211}
22212
22213inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
22214{
22215 char *str = isl_union_set_to_str(uset: obj.get());
22216 if (!str) {
22217 os.setstate(std::ios_base::badbit);
22218 return os;
22219 }
22220 os << str;
22221 free(ptr: str);
22222 return os;
22223}
22224
22225// implementations for isl::union_set_list
22226union_set_list manage(__isl_take isl_union_set_list *ptr) {
22227 return union_set_list(ptr);
22228}
22229union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
22230 ptr = isl_union_set_list_copy(list: ptr);
22231 return union_set_list(ptr);
22232}
22233
22234union_set_list::union_set_list()
22235 : ptr(nullptr) {}
22236
22237union_set_list::union_set_list(const union_set_list &obj)
22238 : ptr(nullptr)
22239{
22240 ptr = obj.copy();
22241}
22242
22243union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
22244 : ptr(ptr) {}
22245
22246union_set_list::union_set_list(isl::ctx ctx, int n)
22247{
22248 auto res = isl_union_set_list_alloc(ctx: ctx.release(), n);
22249 ptr = res;
22250}
22251
22252union_set_list::union_set_list(isl::union_set el)
22253{
22254 auto res = isl_union_set_list_from_union_set(el: el.release());
22255 ptr = res;
22256}
22257
22258union_set_list::union_set_list(isl::ctx ctx, const std::string &str)
22259{
22260 auto res = isl_union_set_list_read_from_str(ctx: ctx.release(), str: str.c_str());
22261 ptr = res;
22262}
22263
22264union_set_list &union_set_list::operator=(union_set_list obj) {
22265 std::swap(a&: this->ptr, b&: obj.ptr);
22266 return *this;
22267}
22268
22269union_set_list::~union_set_list() {
22270 if (ptr)
22271 isl_union_set_list_free(list: ptr);
22272}
22273
22274__isl_give isl_union_set_list *union_set_list::copy() const & {
22275 return isl_union_set_list_copy(list: ptr);
22276}
22277
22278__isl_keep isl_union_set_list *union_set_list::get() const {
22279 return ptr;
22280}
22281
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
22288bool union_set_list::is_null() const {
22289 return ptr == nullptr;
22290}
22291
22292isl::ctx union_set_list::ctx() const {
22293 return isl::ctx(isl_union_set_list_get_ctx(list: ptr));
22294}
22295
22296isl::union_set_list union_set_list::add(isl::union_set el) const
22297{
22298 auto res = isl_union_set_list_add(list: copy(), el: el.release());
22299 return manage(ptr: res);
22300}
22301
22302isl::union_set union_set_list::at(int index) const
22303{
22304 auto res = isl_union_set_list_get_at(list: get(), index);
22305 return manage(ptr: res);
22306}
22307
22308isl::union_set union_set_list::get_at(int index) const
22309{
22310 return at(index);
22311}
22312
22313isl::union_set_list union_set_list::clear() const
22314{
22315 auto res = isl_union_set_list_clear(list: copy());
22316 return manage(ptr: res);
22317}
22318
22319isl::union_set_list union_set_list::concat(isl::union_set_list list2) const
22320{
22321 auto res = isl_union_set_list_concat(list1: copy(), list2: list2.release());
22322 return manage(ptr: res);
22323}
22324
22325isl::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
22326{
22327 auto res = isl_union_set_list_drop(list: copy(), first, n);
22328 return manage(ptr: res);
22329}
22330
22331stat 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 = { .func: 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(ptr: arg_0));
22339 return ret.release();
22340 };
22341 auto res = isl_union_set_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
22342 return manage(val: res);
22343}
22344
22345isl::union_set_list union_set_list::insert(unsigned int pos, isl::union_set el) const
22346{
22347 auto res = isl_union_set_list_insert(list: copy(), pos, el: el.release());
22348 return manage(ptr: res);
22349}
22350
22351class size union_set_list::size() const
22352{
22353 auto res = isl_union_set_list_size(list: get());
22354 return manage(val: res);
22355}
22356
22357inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
22358{
22359 char *str = isl_union_set_list_to_str(list: obj.get());
22360 if (!str) {
22361 os.setstate(std::ios_base::badbit);
22362 return os;
22363 }
22364 os << str;
22365 free(ptr: str);
22366 return os;
22367}
22368
22369// implementations for isl::val
22370val manage(__isl_take isl_val *ptr) {
22371 return val(ptr);
22372}
22373val manage_copy(__isl_keep isl_val *ptr) {
22374 ptr = isl_val_copy(v: ptr);
22375 return val(ptr);
22376}
22377
22378val::val()
22379 : ptr(nullptr) {}
22380
22381val::val(const val &obj)
22382 : ptr(nullptr)
22383{
22384 ptr = obj.copy();
22385}
22386
22387val::val(__isl_take isl_val *ptr)
22388 : ptr(ptr) {}
22389
22390val::val(isl::ctx ctx, long i)
22391{
22392 auto res = isl_val_int_from_si(ctx: ctx.release(), i);
22393 ptr = res;
22394}
22395
22396val::val(isl::ctx ctx, const std::string &str)
22397{
22398 auto res = isl_val_read_from_str(ctx: ctx.release(), str: str.c_str());
22399 ptr = res;
22400}
22401
22402val &val::operator=(val obj) {
22403 std::swap(a&: this->ptr, b&: obj.ptr);
22404 return *this;
22405}
22406
22407val::~val() {
22408 if (ptr)
22409 isl_val_free(v: ptr);
22410}
22411
22412__isl_give isl_val *val::copy() const & {
22413 return isl_val_copy(v: ptr);
22414}
22415
22416__isl_keep isl_val *val::get() const {
22417 return ptr;
22418}
22419
22420__isl_give isl_val *val::release() {
22421 isl_val *tmp = ptr;
22422 ptr = nullptr;
22423 return tmp;
22424}
22425
22426bool val::is_null() const {
22427 return ptr == nullptr;
22428}
22429
22430isl::ctx val::ctx() const {
22431 return isl::ctx(isl_val_get_ctx(val: ptr));
22432}
22433
22434isl::val val::abs() const
22435{
22436 auto res = isl_val_abs(v: copy());
22437 return manage(ptr: res);
22438}
22439
22440boolean val::abs_eq(const isl::val &v2) const
22441{
22442 auto res = isl_val_abs_eq(v1: get(), v2: v2.get());
22443 return manage(val: res);
22444}
22445
22446boolean val::abs_eq(long v2) const
22447{
22448 return this->abs_eq(v2: isl::val(ctx(), v2));
22449}
22450
22451isl::val val::add(isl::val v2) const
22452{
22453 auto res = isl_val_add(v1: copy(), v2: v2.release());
22454 return manage(ptr: res);
22455}
22456
22457isl::val val::add(long v2) const
22458{
22459 return this->add(v2: isl::val(ctx(), v2));
22460}
22461
22462isl::val val::ceil() const
22463{
22464 auto res = isl_val_ceil(v: copy());
22465 return manage(ptr: res);
22466}
22467
22468int val::cmp_si(long i) const
22469{
22470 auto res = isl_val_cmp_si(v: get(), i);
22471 return res;
22472}
22473
22474long val::den_si() const
22475{
22476 auto res = isl_val_get_den_si(v: get());
22477 return res;
22478}
22479
22480long val::get_den_si() const
22481{
22482 return den_si();
22483}
22484
22485isl::val val::div(isl::val v2) const
22486{
22487 auto res = isl_val_div(v1: copy(), v2: v2.release());
22488 return manage(ptr: res);
22489}
22490
22491isl::val val::div(long v2) const
22492{
22493 return this->div(v2: isl::val(ctx(), v2));
22494}
22495
22496boolean val::eq(const isl::val &v2) const
22497{
22498 auto res = isl_val_eq(v1: get(), v2: v2.get());
22499 return manage(val: res);
22500}
22501
22502boolean val::eq(long v2) const
22503{
22504 return this->eq(v2: isl::val(ctx(), v2));
22505}
22506
22507isl::val val::floor() const
22508{
22509 auto res = isl_val_floor(v: copy());
22510 return manage(ptr: res);
22511}
22512
22513isl::val val::gcd(isl::val v2) const
22514{
22515 auto res = isl_val_gcd(v1: copy(), v2: v2.release());
22516 return manage(ptr: res);
22517}
22518
22519isl::val val::gcd(long v2) const
22520{
22521 return this->gcd(v2: isl::val(ctx(), v2));
22522}
22523
22524boolean val::ge(const isl::val &v2) const
22525{
22526 auto res = isl_val_ge(v1: get(), v2: v2.get());
22527 return manage(val: res);
22528}
22529
22530boolean val::ge(long v2) const
22531{
22532 return this->ge(v2: isl::val(ctx(), v2));
22533}
22534
22535boolean val::gt(const isl::val &v2) const
22536{
22537 auto res = isl_val_gt(v1: get(), v2: v2.get());
22538 return manage(val: res);
22539}
22540
22541boolean val::gt(long v2) const
22542{
22543 return this->gt(v2: isl::val(ctx(), v2));
22544}
22545
22546isl::val val::infty(isl::ctx ctx)
22547{
22548 auto res = isl_val_infty(ctx: ctx.release());
22549 return manage(ptr: res);
22550}
22551
22552isl::val val::int_from_ui(isl::ctx ctx, unsigned long u)
22553{
22554 auto res = isl_val_int_from_ui(ctx: ctx.release(), u);
22555 return manage(ptr: res);
22556}
22557
22558isl::val val::inv() const
22559{
22560 auto res = isl_val_inv(v: copy());
22561 return manage(ptr: res);
22562}
22563
22564boolean val::is_divisible_by(const isl::val &v2) const
22565{
22566 auto res = isl_val_is_divisible_by(v1: get(), v2: v2.get());
22567 return manage(val: res);
22568}
22569
22570boolean val::is_divisible_by(long v2) const
22571{
22572 return this->is_divisible_by(v2: isl::val(ctx(), v2));
22573}
22574
22575boolean val::is_infty() const
22576{
22577 auto res = isl_val_is_infty(v: get());
22578 return manage(val: res);
22579}
22580
22581boolean val::is_int() const
22582{
22583 auto res = isl_val_is_int(v: get());
22584 return manage(val: res);
22585}
22586
22587boolean val::is_nan() const
22588{
22589 auto res = isl_val_is_nan(v: get());
22590 return manage(val: res);
22591}
22592
22593boolean val::is_neg() const
22594{
22595 auto res = isl_val_is_neg(v: get());
22596 return manage(val: res);
22597}
22598
22599boolean val::is_neginfty() const
22600{
22601 auto res = isl_val_is_neginfty(v: get());
22602 return manage(val: res);
22603}
22604
22605boolean val::is_negone() const
22606{
22607 auto res = isl_val_is_negone(v: get());
22608 return manage(val: res);
22609}
22610
22611boolean val::is_nonneg() const
22612{
22613 auto res = isl_val_is_nonneg(v: get());
22614 return manage(val: res);
22615}
22616
22617boolean val::is_nonpos() const
22618{
22619 auto res = isl_val_is_nonpos(v: get());
22620 return manage(val: res);
22621}
22622
22623boolean val::is_one() const
22624{
22625 auto res = isl_val_is_one(v: get());
22626 return manage(val: res);
22627}
22628
22629boolean val::is_pos() const
22630{
22631 auto res = isl_val_is_pos(v: get());
22632 return manage(val: res);
22633}
22634
22635boolean val::is_rat() const
22636{
22637 auto res = isl_val_is_rat(v: get());
22638 return manage(val: res);
22639}
22640
22641boolean val::is_zero() const
22642{
22643 auto res = isl_val_is_zero(v: get());
22644 return manage(val: res);
22645}
22646
22647boolean val::le(const isl::val &v2) const
22648{
22649 auto res = isl_val_le(v1: get(), v2: v2.get());
22650 return manage(val: res);
22651}
22652
22653boolean val::le(long v2) const
22654{
22655 return this->le(v2: isl::val(ctx(), v2));
22656}
22657
22658boolean val::lt(const isl::val &v2) const
22659{
22660 auto res = isl_val_lt(v1: get(), v2: v2.get());
22661 return manage(val: res);
22662}
22663
22664boolean val::lt(long v2) const
22665{
22666 return this->lt(v2: isl::val(ctx(), v2));
22667}
22668
22669isl::val val::max(isl::val v2) const
22670{
22671 auto res = isl_val_max(v1: copy(), v2: v2.release());
22672 return manage(ptr: res);
22673}
22674
22675isl::val val::max(long v2) const
22676{
22677 return this->max(v2: isl::val(ctx(), v2));
22678}
22679
22680isl::val val::min(isl::val v2) const
22681{
22682 auto res = isl_val_min(v1: copy(), v2: v2.release());
22683 return manage(ptr: res);
22684}
22685
22686isl::val val::min(long v2) const
22687{
22688 return this->min(v2: isl::val(ctx(), v2));
22689}
22690
22691isl::val val::mod(isl::val v2) const
22692{
22693 auto res = isl_val_mod(v1: copy(), v2: v2.release());
22694 return manage(ptr: res);
22695}
22696
22697isl::val val::mod(long v2) const
22698{
22699 return this->mod(v2: isl::val(ctx(), v2));
22700}
22701
22702isl::val val::mul(isl::val v2) const
22703{
22704 auto res = isl_val_mul(v1: copy(), v2: v2.release());
22705 return manage(ptr: res);
22706}
22707
22708isl::val val::mul(long v2) const
22709{
22710 return this->mul(v2: isl::val(ctx(), v2));
22711}
22712
22713isl::val val::nan(isl::ctx ctx)
22714{
22715 auto res = isl_val_nan(ctx: ctx.release());
22716 return manage(ptr: res);
22717}
22718
22719boolean val::ne(const isl::val &v2) const
22720{
22721 auto res = isl_val_ne(v1: get(), v2: v2.get());
22722 return manage(val: res);
22723}
22724
22725boolean val::ne(long v2) const
22726{
22727 return this->ne(v2: isl::val(ctx(), v2));
22728}
22729
22730isl::val val::neg() const
22731{
22732 auto res = isl_val_neg(v: copy());
22733 return manage(ptr: res);
22734}
22735
22736isl::val val::neginfty(isl::ctx ctx)
22737{
22738 auto res = isl_val_neginfty(ctx: ctx.release());
22739 return manage(ptr: res);
22740}
22741
22742isl::val val::negone(isl::ctx ctx)
22743{
22744 auto res = isl_val_negone(ctx: ctx.release());
22745 return manage(ptr: res);
22746}
22747
22748long val::num_si() const
22749{
22750 auto res = isl_val_get_num_si(v: get());
22751 return res;
22752}
22753
22754long val::get_num_si() const
22755{
22756 return num_si();
22757}
22758
22759isl::val val::one(isl::ctx ctx)
22760{
22761 auto res = isl_val_one(ctx: ctx.release());
22762 return manage(ptr: res);
22763}
22764
22765isl::val val::pow2() const
22766{
22767 auto res = isl_val_pow2(v: copy());
22768 return manage(ptr: res);
22769}
22770
22771int val::sgn() const
22772{
22773 auto res = isl_val_sgn(v: get());
22774 return res;
22775}
22776
22777isl::val val::sub(isl::val v2) const
22778{
22779 auto res = isl_val_sub(v1: copy(), v2: v2.release());
22780 return manage(ptr: res);
22781}
22782
22783isl::val val::sub(long v2) const
22784{
22785 return this->sub(v2: isl::val(ctx(), v2));
22786}
22787
22788isl::val_list val::to_list() const
22789{
22790 auto res = isl_val_to_list(el: copy());
22791 return manage(ptr: res);
22792}
22793
22794isl::val val::trunc() const
22795{
22796 auto res = isl_val_trunc(v: copy());
22797 return manage(ptr: res);
22798}
22799
22800isl::val val::zero(isl::ctx ctx)
22801{
22802 auto res = isl_val_zero(ctx: ctx.release());
22803 return manage(ptr: res);
22804}
22805
22806inline std::ostream &operator<<(std::ostream &os, const val &obj)
22807{
22808 char *str = isl_val_to_str(v: obj.get());
22809 if (!str) {
22810 os.setstate(std::ios_base::badbit);
22811 return os;
22812 }
22813 os << str;
22814 free(ptr: str);
22815 return os;
22816}
22817
22818// implementations for isl::val_list
22819val_list manage(__isl_take isl_val_list *ptr) {
22820 return val_list(ptr);
22821}
22822val_list manage_copy(__isl_keep isl_val_list *ptr) {
22823 ptr = isl_val_list_copy(list: ptr);
22824 return val_list(ptr);
22825}
22826
22827val_list::val_list()
22828 : ptr(nullptr) {}
22829
22830val_list::val_list(const val_list &obj)
22831 : ptr(nullptr)
22832{
22833 ptr = obj.copy();
22834}
22835
22836val_list::val_list(__isl_take isl_val_list *ptr)
22837 : ptr(ptr) {}
22838
22839val_list::val_list(isl::ctx ctx, int n)
22840{
22841 auto res = isl_val_list_alloc(ctx: ctx.release(), n);
22842 ptr = res;
22843}
22844
22845val_list::val_list(isl::val el)
22846{
22847 auto res = isl_val_list_from_val(el: el.release());
22848 ptr = res;
22849}
22850
22851val_list::val_list(isl::ctx ctx, const std::string &str)
22852{
22853 auto res = isl_val_list_read_from_str(ctx: ctx.release(), str: str.c_str());
22854 ptr = res;
22855}
22856
22857val_list &val_list::operator=(val_list obj) {
22858 std::swap(a&: this->ptr, b&: obj.ptr);
22859 return *this;
22860}
22861
22862val_list::~val_list() {
22863 if (ptr)
22864 isl_val_list_free(list: ptr);
22865}
22866
22867__isl_give isl_val_list *val_list::copy() const & {
22868 return isl_val_list_copy(list: ptr);
22869}
22870
22871__isl_keep isl_val_list *val_list::get() const {
22872 return ptr;
22873}
22874
22875__isl_give isl_val_list *val_list::release() {
22876 isl_val_list *tmp = ptr;
22877 ptr = nullptr;
22878 return tmp;
22879}
22880
22881bool val_list::is_null() const {
22882 return ptr == nullptr;
22883}
22884
22885isl::ctx val_list::ctx() const {
22886 return isl::ctx(isl_val_list_get_ctx(list: ptr));
22887}
22888
22889isl::val_list val_list::add(isl::val el) const
22890{
22891 auto res = isl_val_list_add(list: copy(), el: el.release());
22892 return manage(ptr: res);
22893}
22894
22895isl::val_list val_list::add(long el) const
22896{
22897 return this->add(el: isl::val(ctx(), el));
22898}
22899
22900isl::val val_list::at(int index) const
22901{
22902 auto res = isl_val_list_get_at(list: get(), index);
22903 return manage(ptr: res);
22904}
22905
22906isl::val val_list::get_at(int index) const
22907{
22908 return at(index);
22909}
22910
22911isl::val_list val_list::clear() const
22912{
22913 auto res = isl_val_list_clear(list: copy());
22914 return manage(ptr: res);
22915}
22916
22917isl::val_list val_list::concat(isl::val_list list2) const
22918{
22919 auto res = isl_val_list_concat(list1: copy(), list2: list2.release());
22920 return manage(ptr: res);
22921}
22922
22923isl::val_list val_list::drop(unsigned int first, unsigned int n) const
22924{
22925 auto res = isl_val_list_drop(list: copy(), first, n);
22926 return manage(ptr: res);
22927}
22928
22929stat 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 = { .func: 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(ptr: arg_0));
22937 return ret.release();
22938 };
22939 auto res = isl_val_list_foreach(list: get(), fn: fn_lambda, user: &fn_data);
22940 return manage(val: res);
22941}
22942
22943isl::val_list val_list::insert(unsigned int pos, isl::val el) const
22944{
22945 auto res = isl_val_list_insert(list: copy(), pos, el: el.release());
22946 return manage(ptr: res);
22947}
22948
22949isl::val_list val_list::insert(unsigned int pos, long el) const
22950{
22951 return this->insert(pos, el: isl::val(ctx(), el));
22952}
22953
22954class size val_list::size() const
22955{
22956 auto res = isl_val_list_size(list: get());
22957 return manage(val: res);
22958}
22959
22960inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
22961{
22962 char *str = isl_val_list_to_str(list: obj.get());
22963 if (!str) {
22964 os.setstate(std::ios_base::badbit);
22965 return os;
22966 }
22967 os << str;
22968 free(ptr: str);
22969 return os;
22970}
22971} // namespace isl
22972
22973#endif /* ISL_CPP_CHECKED */
22974

source code of polly/lib/External/isl/include/isl/isl-noexceptions.h