[isl++] abort() on assertion violation.
[polly-mirror.git] / lib / External / isl / include / isl / isl-noexceptions.h
blob9f031b1b77dbab89021f077bc16bd468fe3760f5
1 /// These are automatically generated C++ bindings without exceptions for isl.
2 ///
3 /// isl is a library for computing with integer sets and maps described by
4 /// Presburger formulas. On top of this, isl provides various tools for
5 /// polyhedral compilation, ranging from dependence analysis over scheduling
6 /// to AST generation.
8 #ifndef ISL_CPP_NOEXCEPTIONS
9 #define ISL_CPP_NOEXCEPTIONS
11 #include <isl/val.h>
12 #include <isl/aff.h>
13 #include <isl/set.h>
14 #include <isl/map.h>
15 #include <isl/ilp.h>
16 #include <isl/union_set.h>
17 #include <isl/union_map.h>
18 #include <isl/flow.h>
19 #include <isl/schedule.h>
20 #include <isl/schedule_node.h>
21 #include <isl/ast_build.h>
22 #include <isl/constraint.h>
23 #include <isl/polynomial.h>
24 #include <isl/mat.h>
25 #include <functional>
26 #include <string>
28 namespace isl {
29 inline namespace noexceptions {
31 #define ISLPP_STRINGIZE_(X) #X
32 #define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
34 #define ISLPP_ASSERT(test, message) \
35 do { \
36 if (test) \
37 break; \
38 fputs("Assertion \"" #test "\" failed at " __FILE__ \
39 ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
40 stderr); \
41 abort(); \
42 } while (0)
44 class boolean {
45 private:
46 isl_bool val;
48 friend isl::boolean manage(isl_bool val);
49 boolean(isl_bool val): val(val) {}
50 public:
51 boolean()
52 : val(isl_bool_error) {}
54 /* implicit */ boolean(bool val)
55 : val(val ? isl_bool_true : isl_bool_false) {}
57 bool is_error() const { return val == isl_bool_error; }
58 bool is_false() const { return val == isl_bool_false; }
59 bool is_true() const { return val == isl_bool_true; }
61 operator bool() const {
62 ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
63 return is_true();
66 boolean operator!() const {
67 if (is_error())
68 return *this;
69 return !is_true();
73 inline isl::boolean manage(isl_bool val) {
74 return isl::boolean(val);
77 class ctx {
78 isl_ctx *ptr;
79 public:
80 /* implicit */ ctx(isl_ctx *ctx)
81 : ptr(ctx) {}
82 isl_ctx *release() {
83 auto tmp = ptr;
84 ptr = nullptr;
85 return tmp;
87 isl_ctx *get() {
88 return ptr;
92 enum class stat {
93 ok = isl_stat_ok,
94 error = isl_stat_error
97 enum class dim {
98 cst = isl_dim_cst,
99 param = isl_dim_param,
100 in = isl_dim_in,
101 out = isl_dim_out,
102 set = isl_dim_set,
103 div = isl_dim_div,
104 all = isl_dim_all
108 } // namespace isl
110 namespace isl {
112 inline namespace noexceptions {
114 // forward declarations
115 class aff;
116 class aff_list;
117 class ast_build;
118 class ast_expr;
119 class ast_expr_list;
120 class ast_node;
121 class ast_node_list;
122 class basic_map;
123 class basic_map_list;
124 class basic_set;
125 class basic_set_list;
126 class constraint;
127 class constraint_list;
128 class id;
129 class id_list;
130 class id_to_ast_expr;
131 class local_space;
132 class map;
133 class map_list;
134 class mat;
135 class multi_aff;
136 class multi_pw_aff;
137 class multi_union_pw_aff;
138 class multi_val;
139 class point;
140 class pw_aff;
141 class pw_aff_list;
142 class pw_multi_aff;
143 class pw_qpolynomial;
144 class qpolynomial;
145 class schedule;
146 class schedule_constraints;
147 class schedule_node;
148 class set;
149 class set_list;
150 class space;
151 class term;
152 class union_access_info;
153 class union_flow;
154 class union_map;
155 class union_map_list;
156 class union_pw_aff;
157 class union_pw_aff_list;
158 class union_pw_multi_aff;
159 class union_pw_multi_aff_list;
160 class union_pw_qpolynomial;
161 class union_set;
162 class union_set_list;
163 class val;
164 class val_list;
165 class vec;
167 // declarations for isl::aff
168 inline isl::aff manage(__isl_take isl_aff *ptr);
169 inline isl::aff manage_copy(__isl_keep isl_aff *ptr);
170 inline isl::aff give(__isl_take isl_aff *ptr);
173 class aff {
174 friend inline isl::aff manage(__isl_take isl_aff *ptr);
175 friend inline isl::aff manage_copy(__isl_keep isl_aff *ptr);
177 isl_aff *ptr = nullptr;
179 inline explicit aff(__isl_take isl_aff *ptr);
181 public:
182 inline /* implicit */ aff();
183 inline /* implicit */ aff(const isl::aff &obj);
184 inline /* implicit */ aff(std::nullptr_t);
185 inline explicit aff(isl::local_space ls);
186 inline explicit aff(isl::local_space ls, isl::val val);
187 inline explicit aff(isl::ctx ctx, const std::string &str);
188 inline isl::aff &operator=(isl::aff obj);
189 inline ~aff();
190 inline __isl_give isl_aff *copy() const &;
191 inline __isl_give isl_aff *copy() && = delete;
192 inline __isl_keep isl_aff *get() const;
193 inline __isl_give isl_aff *release();
194 inline bool is_null() const;
195 inline __isl_keep isl_aff *keep() const;
196 inline __isl_give isl_aff *take();
197 inline explicit operator bool() const;
198 inline isl::ctx get_ctx() const;
199 inline std::string to_str() const;
200 inline void dump() const;
202 inline isl::aff add(isl::aff aff2) const;
203 inline isl::aff add_coefficient_si(isl::dim type, int pos, int v) const;
204 inline isl::aff add_coefficient_val(isl::dim type, int pos, isl::val v) const;
205 inline isl::aff add_constant_num_si(int v) const;
206 inline isl::aff add_constant_si(int v) const;
207 inline isl::aff add_constant_val(isl::val v) const;
208 inline isl::aff add_dims(isl::dim type, unsigned int n) const;
209 inline isl::aff align_params(isl::space model) const;
210 inline isl::aff ceil() const;
211 inline int coefficient_sgn(isl::dim type, int pos) const;
212 inline int dim(isl::dim type) const;
213 inline isl::aff div(isl::aff aff2) const;
214 inline isl::aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
215 inline isl::basic_set eq_basic_set(isl::aff aff2) const;
216 inline isl::set eq_set(isl::aff aff2) const;
217 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
218 inline isl::aff floor() const;
219 inline isl::basic_set ge_basic_set(isl::aff aff2) const;
220 inline isl::set ge_set(isl::aff aff2) const;
221 inline isl::val get_coefficient_val(isl::dim type, int pos) const;
222 inline isl::val get_constant_val() const;
223 inline isl::val get_denominator_val() const;
224 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
225 inline isl::aff get_div(int pos) const;
226 inline isl::local_space get_domain_local_space() const;
227 inline isl::space get_domain_space() const;
228 inline uint32_t get_hash() const;
229 inline isl::local_space get_local_space() const;
230 inline isl::space get_space() const;
231 inline isl::aff gist(isl::set context) const;
232 inline isl::aff gist_params(isl::set context) const;
233 inline isl::basic_set gt_basic_set(isl::aff aff2) const;
234 inline isl::set gt_set(isl::aff aff2) const;
235 inline isl::aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
236 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
237 inline isl::boolean is_cst() const;
238 inline isl::boolean is_nan() const;
239 inline isl::basic_set le_basic_set(isl::aff aff2) const;
240 inline isl::set le_set(isl::aff aff2) const;
241 inline isl::basic_set lt_basic_set(isl::aff aff2) const;
242 inline isl::set lt_set(isl::aff aff2) const;
243 inline isl::aff mod(isl::val mod) const;
244 inline isl::aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
245 inline isl::aff mul(isl::aff aff2) const;
246 static inline isl::aff nan_on_domain(isl::local_space ls);
247 inline isl::set ne_set(isl::aff aff2) const;
248 inline isl::aff neg() const;
249 inline isl::basic_set neg_basic_set() const;
250 inline isl::boolean plain_is_equal(const isl::aff &aff2) const;
251 inline isl::boolean plain_is_zero() const;
252 inline isl::aff project_domain_on_params() const;
253 inline isl::aff pullback(isl::multi_aff ma) const;
254 inline isl::aff pullback_aff(isl::aff aff2) const;
255 inline isl::aff scale(isl::val v) const;
256 inline isl::aff scale_down(isl::val v) const;
257 inline isl::aff scale_down_ui(unsigned int f) const;
258 inline isl::aff set_coefficient_si(isl::dim type, int pos, int v) const;
259 inline isl::aff set_coefficient_val(isl::dim type, int pos, isl::val v) const;
260 inline isl::aff set_constant_si(int v) const;
261 inline isl::aff set_constant_val(isl::val v) const;
262 inline isl::aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
263 inline isl::aff set_tuple_id(isl::dim type, isl::id id) const;
264 inline isl::aff sub(isl::aff aff2) const;
265 static inline isl::aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
266 inline isl::basic_set zero_basic_set() const;
269 // declarations for isl::aff_list
270 inline isl::aff_list manage(__isl_take isl_aff_list *ptr);
271 inline isl::aff_list manage_copy(__isl_keep isl_aff_list *ptr);
272 inline isl::aff_list give(__isl_take isl_aff_list *ptr);
275 class aff_list {
276 friend inline isl::aff_list manage(__isl_take isl_aff_list *ptr);
277 friend inline isl::aff_list manage_copy(__isl_keep isl_aff_list *ptr);
279 isl_aff_list *ptr = nullptr;
281 inline explicit aff_list(__isl_take isl_aff_list *ptr);
283 public:
284 inline /* implicit */ aff_list();
285 inline /* implicit */ aff_list(const isl::aff_list &obj);
286 inline /* implicit */ aff_list(std::nullptr_t);
287 inline isl::aff_list &operator=(isl::aff_list obj);
288 inline ~aff_list();
289 inline __isl_give isl_aff_list *copy() const &;
290 inline __isl_give isl_aff_list *copy() && = delete;
291 inline __isl_keep isl_aff_list *get() const;
292 inline __isl_give isl_aff_list *release();
293 inline bool is_null() const;
294 inline __isl_keep isl_aff_list *keep() const;
295 inline __isl_give isl_aff_list *take();
296 inline explicit operator bool() const;
297 inline isl::ctx get_ctx() const;
298 inline void dump() const;
302 // declarations for isl::ast_build
303 inline isl::ast_build manage(__isl_take isl_ast_build *ptr);
304 inline isl::ast_build manage_copy(__isl_keep isl_ast_build *ptr);
305 inline isl::ast_build give(__isl_take isl_ast_build *ptr);
308 class ast_build {
309 friend inline isl::ast_build manage(__isl_take isl_ast_build *ptr);
310 friend inline isl::ast_build manage_copy(__isl_keep isl_ast_build *ptr);
312 isl_ast_build *ptr = nullptr;
314 inline explicit ast_build(__isl_take isl_ast_build *ptr);
316 public:
317 inline /* implicit */ ast_build();
318 inline /* implicit */ ast_build(const isl::ast_build &obj);
319 inline /* implicit */ ast_build(std::nullptr_t);
320 inline explicit ast_build(isl::ctx ctx);
321 inline isl::ast_build &operator=(isl::ast_build obj);
322 inline ~ast_build();
323 inline __isl_give isl_ast_build *copy() const &;
324 inline __isl_give isl_ast_build *copy() && = delete;
325 inline __isl_keep isl_ast_build *get() const;
326 inline __isl_give isl_ast_build *release();
327 inline bool is_null() const;
328 inline __isl_keep isl_ast_build *keep() const;
329 inline __isl_give isl_ast_build *take();
330 inline explicit operator bool() const;
331 inline isl::ctx get_ctx() const;
333 inline isl::ast_expr access_from(isl::pw_multi_aff pma) const;
334 inline isl::ast_expr access_from(isl::multi_pw_aff mpa) const;
335 inline isl::ast_node ast_from_schedule(isl::union_map schedule) const;
336 inline isl::ast_expr call_from(isl::pw_multi_aff pma) const;
337 inline isl::ast_expr call_from(isl::multi_pw_aff mpa) const;
338 inline isl::ast_expr expr_from(isl::set set) const;
339 inline isl::ast_expr expr_from(isl::pw_aff pa) const;
340 static inline isl::ast_build from_context(isl::set set);
341 inline isl::union_map get_schedule() const;
342 inline isl::space get_schedule_space() const;
343 inline isl::ast_node node_from_schedule(isl::schedule schedule) const;
344 inline isl::ast_node node_from_schedule_map(isl::union_map schedule) const;
345 inline isl::ast_build restrict(isl::set set) const;
348 // declarations for isl::ast_expr
349 inline isl::ast_expr manage(__isl_take isl_ast_expr *ptr);
350 inline isl::ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
351 inline isl::ast_expr give(__isl_take isl_ast_expr *ptr);
354 class ast_expr {
355 friend inline isl::ast_expr manage(__isl_take isl_ast_expr *ptr);
356 friend inline isl::ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
358 isl_ast_expr *ptr = nullptr;
360 inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
362 public:
363 inline /* implicit */ ast_expr();
364 inline /* implicit */ ast_expr(const isl::ast_expr &obj);
365 inline /* implicit */ ast_expr(std::nullptr_t);
366 inline isl::ast_expr &operator=(isl::ast_expr obj);
367 inline ~ast_expr();
368 inline __isl_give isl_ast_expr *copy() const &;
369 inline __isl_give isl_ast_expr *copy() && = delete;
370 inline __isl_keep isl_ast_expr *get() const;
371 inline __isl_give isl_ast_expr *release();
372 inline bool is_null() const;
373 inline __isl_keep isl_ast_expr *keep() const;
374 inline __isl_give isl_ast_expr *take();
375 inline explicit operator bool() const;
376 inline isl::ctx get_ctx() const;
377 inline std::string to_str() const;
378 inline void dump() const;
380 inline isl::ast_expr access(isl::ast_expr_list indices) const;
381 inline isl::ast_expr add(isl::ast_expr expr2) const;
382 inline isl::ast_expr address_of() const;
383 inline isl::ast_expr call(isl::ast_expr_list arguments) const;
384 inline isl::ast_expr div(isl::ast_expr expr2) const;
385 inline isl::ast_expr eq(isl::ast_expr expr2) const;
386 static inline isl::ast_expr from_id(isl::id id);
387 static inline isl::ast_expr from_val(isl::val v);
388 inline isl::ast_expr ge(isl::ast_expr expr2) const;
389 inline isl::id get_id() const;
390 inline isl::ast_expr get_op_arg(int pos) const;
391 inline isl::val get_val() const;
392 inline isl::ast_expr gt(isl::ast_expr expr2) const;
393 inline isl::boolean is_equal(const isl::ast_expr &expr2) const;
394 inline isl::ast_expr le(isl::ast_expr expr2) const;
395 inline isl::ast_expr lt(isl::ast_expr expr2) const;
396 inline isl::ast_expr mul(isl::ast_expr expr2) const;
397 inline isl::ast_expr neg() const;
398 inline isl::ast_expr pdiv_q(isl::ast_expr expr2) const;
399 inline isl::ast_expr pdiv_r(isl::ast_expr expr2) const;
400 inline isl::ast_expr set_op_arg(int pos, isl::ast_expr arg) const;
401 inline isl::ast_expr sub(isl::ast_expr expr2) const;
402 inline isl::ast_expr substitute_ids(isl::id_to_ast_expr id2expr) const;
403 inline std::string to_C_str() const;
406 // declarations for isl::ast_expr_list
407 inline isl::ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
408 inline isl::ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
409 inline isl::ast_expr_list give(__isl_take isl_ast_expr_list *ptr);
412 class ast_expr_list {
413 friend inline isl::ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
414 friend inline isl::ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
416 isl_ast_expr_list *ptr = nullptr;
418 inline explicit ast_expr_list(__isl_take isl_ast_expr_list *ptr);
420 public:
421 inline /* implicit */ ast_expr_list();
422 inline /* implicit */ ast_expr_list(const isl::ast_expr_list &obj);
423 inline /* implicit */ ast_expr_list(std::nullptr_t);
424 inline isl::ast_expr_list &operator=(isl::ast_expr_list obj);
425 inline ~ast_expr_list();
426 inline __isl_give isl_ast_expr_list *copy() const &;
427 inline __isl_give isl_ast_expr_list *copy() && = delete;
428 inline __isl_keep isl_ast_expr_list *get() const;
429 inline __isl_give isl_ast_expr_list *release();
430 inline bool is_null() const;
431 inline __isl_keep isl_ast_expr_list *keep() const;
432 inline __isl_give isl_ast_expr_list *take();
433 inline explicit operator bool() const;
434 inline isl::ctx get_ctx() const;
435 inline void dump() const;
439 // declarations for isl::ast_node
440 inline isl::ast_node manage(__isl_take isl_ast_node *ptr);
441 inline isl::ast_node manage_copy(__isl_keep isl_ast_node *ptr);
442 inline isl::ast_node give(__isl_take isl_ast_node *ptr);
445 class ast_node {
446 friend inline isl::ast_node manage(__isl_take isl_ast_node *ptr);
447 friend inline isl::ast_node manage_copy(__isl_keep isl_ast_node *ptr);
449 isl_ast_node *ptr = nullptr;
451 inline explicit ast_node(__isl_take isl_ast_node *ptr);
453 public:
454 inline /* implicit */ ast_node();
455 inline /* implicit */ ast_node(const isl::ast_node &obj);
456 inline /* implicit */ ast_node(std::nullptr_t);
457 inline isl::ast_node &operator=(isl::ast_node obj);
458 inline ~ast_node();
459 inline __isl_give isl_ast_node *copy() const &;
460 inline __isl_give isl_ast_node *copy() && = delete;
461 inline __isl_keep isl_ast_node *get() const;
462 inline __isl_give isl_ast_node *release();
463 inline bool is_null() const;
464 inline __isl_keep isl_ast_node *keep() const;
465 inline __isl_give isl_ast_node *take();
466 inline explicit operator bool() const;
467 inline isl::ctx get_ctx() const;
468 inline std::string to_str() const;
469 inline void dump() const;
471 static inline isl::ast_node alloc_user(isl::ast_expr expr);
472 inline isl::ast_node_list block_get_children() const;
473 inline isl::ast_node for_get_body() const;
474 inline isl::ast_expr for_get_cond() const;
475 inline isl::ast_expr for_get_inc() const;
476 inline isl::ast_expr for_get_init() const;
477 inline isl::ast_expr for_get_iterator() const;
478 inline isl::boolean for_is_degenerate() const;
479 inline isl::id get_annotation() const;
480 inline isl::ast_expr if_get_cond() const;
481 inline isl::ast_node if_get_else() const;
482 inline isl::ast_node if_get_then() const;
483 inline isl::boolean if_has_else() const;
484 inline isl::id mark_get_id() const;
485 inline isl::ast_node mark_get_node() const;
486 inline isl::ast_node set_annotation(isl::id annotation) const;
487 inline std::string to_C_str() const;
488 inline isl::ast_expr user_get_expr() const;
491 // declarations for isl::ast_node_list
492 inline isl::ast_node_list manage(__isl_take isl_ast_node_list *ptr);
493 inline isl::ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
494 inline isl::ast_node_list give(__isl_take isl_ast_node_list *ptr);
497 class ast_node_list {
498 friend inline isl::ast_node_list manage(__isl_take isl_ast_node_list *ptr);
499 friend inline isl::ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
501 isl_ast_node_list *ptr = nullptr;
503 inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
505 public:
506 inline /* implicit */ ast_node_list();
507 inline /* implicit */ ast_node_list(const isl::ast_node_list &obj);
508 inline /* implicit */ ast_node_list(std::nullptr_t);
509 inline isl::ast_node_list &operator=(isl::ast_node_list obj);
510 inline ~ast_node_list();
511 inline __isl_give isl_ast_node_list *copy() const &;
512 inline __isl_give isl_ast_node_list *copy() && = delete;
513 inline __isl_keep isl_ast_node_list *get() const;
514 inline __isl_give isl_ast_node_list *release();
515 inline bool is_null() const;
516 inline __isl_keep isl_ast_node_list *keep() const;
517 inline __isl_give isl_ast_node_list *take();
518 inline explicit operator bool() const;
519 inline isl::ctx get_ctx() const;
520 inline void dump() const;
524 // declarations for isl::basic_map
525 inline isl::basic_map manage(__isl_take isl_basic_map *ptr);
526 inline isl::basic_map manage_copy(__isl_keep isl_basic_map *ptr);
527 inline isl::basic_map give(__isl_take isl_basic_map *ptr);
530 class basic_map {
531 friend inline isl::basic_map manage(__isl_take isl_basic_map *ptr);
532 friend inline isl::basic_map manage_copy(__isl_keep isl_basic_map *ptr);
534 isl_basic_map *ptr = nullptr;
536 inline explicit basic_map(__isl_take isl_basic_map *ptr);
538 public:
539 inline /* implicit */ basic_map();
540 inline /* implicit */ basic_map(const isl::basic_map &obj);
541 inline /* implicit */ basic_map(std::nullptr_t);
542 inline explicit basic_map(isl::ctx ctx, const std::string &str);
543 inline isl::basic_map &operator=(isl::basic_map obj);
544 inline ~basic_map();
545 inline __isl_give isl_basic_map *copy() const &;
546 inline __isl_give isl_basic_map *copy() && = delete;
547 inline __isl_keep isl_basic_map *get() const;
548 inline __isl_give isl_basic_map *release();
549 inline bool is_null() const;
550 inline __isl_keep isl_basic_map *keep() const;
551 inline __isl_give isl_basic_map *take();
552 inline explicit operator bool() const;
553 inline isl::ctx get_ctx() const;
554 inline std::string to_str() const;
555 inline void dump() const;
557 inline isl::basic_map add_constraint(isl::constraint constraint) const;
558 inline isl::basic_map add_dims(isl::dim type, unsigned int n) const;
559 inline isl::basic_map affine_hull() const;
560 inline isl::basic_map align_params(isl::space model) const;
561 inline isl::basic_map apply_domain(isl::basic_map bmap2) const;
562 inline isl::basic_map apply_range(isl::basic_map bmap2) const;
563 inline isl::boolean can_curry() const;
564 inline isl::boolean can_uncurry() const;
565 inline isl::boolean can_zip() const;
566 inline isl::basic_map curry() const;
567 inline isl::basic_set deltas() const;
568 inline isl::basic_map deltas_map() const;
569 inline isl::basic_map detect_equalities() const;
570 inline unsigned int dim(isl::dim type) const;
571 inline isl::basic_set domain() const;
572 inline isl::basic_map domain_map() const;
573 inline isl::basic_map domain_product(isl::basic_map bmap2) const;
574 inline isl::basic_map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
575 inline isl::basic_map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
576 inline isl::basic_map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
577 static inline isl::basic_map empty(isl::space space);
578 static inline isl::basic_map equal(isl::space dim, unsigned int n_equal);
579 inline isl::mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
580 inline isl::basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
581 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
582 inline isl::basic_map fix_si(isl::dim type, unsigned int pos, int value) const;
583 inline isl::basic_map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
584 inline isl::basic_map flat_product(isl::basic_map bmap2) const;
585 inline isl::basic_map flat_range_product(isl::basic_map bmap2) const;
586 inline isl::basic_map flatten() const;
587 inline isl::basic_map flatten_domain() const;
588 inline isl::basic_map flatten_range() const;
589 inline isl::stat foreach_constraint(const std::function<isl::stat(isl::constraint)> &fn) const;
590 static inline isl::basic_map from_aff(isl::aff aff);
591 static inline isl::basic_map from_aff_list(isl::space domain_dim, isl::aff_list list);
592 static inline isl::basic_map from_constraint(isl::constraint constraint);
593 static inline isl::basic_map from_domain(isl::basic_set bset);
594 static inline isl::basic_map from_domain_and_range(isl::basic_set domain, isl::basic_set range);
595 static inline isl::basic_map from_multi_aff(isl::multi_aff maff);
596 static inline isl::basic_map from_qpolynomial(isl::qpolynomial qp);
597 static inline isl::basic_map from_range(isl::basic_set bset);
598 inline isl::constraint_list get_constraint_list() const;
599 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
600 inline isl::aff get_div(int pos) const;
601 inline isl::local_space get_local_space() const;
602 inline isl::space get_space() const;
603 inline std::string get_tuple_name(isl::dim type) const;
604 inline isl::basic_map gist(isl::basic_map context) const;
605 inline isl::basic_map gist_domain(isl::basic_set context) const;
606 inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
607 static inline isl::basic_map identity(isl::space dim);
608 inline isl::boolean image_is_bounded() const;
609 inline isl::mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
610 inline isl::basic_map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
611 inline isl::basic_map intersect(isl::basic_map bmap2) const;
612 inline isl::basic_map intersect_domain(isl::basic_set bset) const;
613 inline isl::basic_map intersect_range(isl::basic_set bset) const;
614 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
615 inline isl::boolean is_disjoint(const isl::basic_map &bmap2) const;
616 inline isl::boolean is_empty() const;
617 inline isl::boolean is_equal(const isl::basic_map &bmap2) const;
618 inline isl::boolean is_rational() const;
619 inline isl::boolean is_single_valued() const;
620 inline isl::boolean is_strict_subset(const isl::basic_map &bmap2) const;
621 inline isl::boolean is_subset(const isl::basic_map &bmap2) const;
622 inline isl::boolean is_universe() const;
623 static inline isl::basic_map less_at(isl::space dim, unsigned int pos);
624 inline isl::map lexmax() const;
625 inline isl::map lexmin() const;
626 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
627 inline isl::basic_map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
628 static inline isl::basic_map more_at(isl::space dim, unsigned int pos);
629 inline isl::basic_map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
630 static inline isl::basic_map nat_universe(isl::space dim);
631 inline isl::basic_map neg() const;
632 inline isl::basic_map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
633 inline isl::basic_map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
634 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
635 inline isl::boolean plain_is_empty() const;
636 inline isl::boolean plain_is_universe() const;
637 inline isl::basic_map preimage_domain_multi_aff(isl::multi_aff ma) const;
638 inline isl::basic_map preimage_range_multi_aff(isl::multi_aff ma) const;
639 inline isl::basic_map product(isl::basic_map bmap2) const;
640 inline isl::basic_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
641 inline isl::basic_set range() const;
642 inline isl::basic_map range_map() const;
643 inline isl::basic_map range_product(isl::basic_map bmap2) const;
644 inline isl::basic_map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
645 inline isl::basic_map remove_divs() const;
646 inline isl::basic_map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
647 inline isl::basic_map remove_redundancies() const;
648 inline isl::basic_map reverse() const;
649 inline isl::basic_map sample() const;
650 inline isl::basic_map set_tuple_id(isl::dim type, isl::id id) const;
651 inline isl::basic_map set_tuple_name(isl::dim type, const std::string &s) const;
652 inline isl::basic_map sum(isl::basic_map bmap2) const;
653 inline isl::basic_map uncurry() const;
654 inline isl::map unite(isl::basic_map bmap2) const;
655 static inline isl::basic_map universe(isl::space space);
656 inline isl::basic_map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
657 inline isl::basic_set wrap() const;
658 inline isl::basic_map zip() const;
661 // declarations for isl::basic_map_list
662 inline isl::basic_map_list manage(__isl_take isl_basic_map_list *ptr);
663 inline isl::basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
664 inline isl::basic_map_list give(__isl_take isl_basic_map_list *ptr);
667 class basic_map_list {
668 friend inline isl::basic_map_list manage(__isl_take isl_basic_map_list *ptr);
669 friend inline isl::basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
671 isl_basic_map_list *ptr = nullptr;
673 inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
675 public:
676 inline /* implicit */ basic_map_list();
677 inline /* implicit */ basic_map_list(const isl::basic_map_list &obj);
678 inline /* implicit */ basic_map_list(std::nullptr_t);
679 inline isl::basic_map_list &operator=(isl::basic_map_list obj);
680 inline ~basic_map_list();
681 inline __isl_give isl_basic_map_list *copy() const &;
682 inline __isl_give isl_basic_map_list *copy() && = delete;
683 inline __isl_keep isl_basic_map_list *get() const;
684 inline __isl_give isl_basic_map_list *release();
685 inline bool is_null() const;
686 inline __isl_keep isl_basic_map_list *keep() const;
687 inline __isl_give isl_basic_map_list *take();
688 inline explicit operator bool() const;
689 inline isl::ctx get_ctx() const;
690 inline void dump() const;
694 // declarations for isl::basic_set
695 inline isl::basic_set manage(__isl_take isl_basic_set *ptr);
696 inline isl::basic_set manage_copy(__isl_keep isl_basic_set *ptr);
697 inline isl::basic_set give(__isl_take isl_basic_set *ptr);
700 class basic_set {
701 friend inline isl::basic_set manage(__isl_take isl_basic_set *ptr);
702 friend inline isl::basic_set manage_copy(__isl_keep isl_basic_set *ptr);
704 isl_basic_set *ptr = nullptr;
706 inline explicit basic_set(__isl_take isl_basic_set *ptr);
708 public:
709 inline /* implicit */ basic_set();
710 inline /* implicit */ basic_set(const isl::basic_set &obj);
711 inline /* implicit */ basic_set(std::nullptr_t);
712 inline explicit basic_set(isl::ctx ctx, const std::string &str);
713 inline /* implicit */ basic_set(isl::point pnt);
714 inline isl::basic_set &operator=(isl::basic_set obj);
715 inline ~basic_set();
716 inline __isl_give isl_basic_set *copy() const &;
717 inline __isl_give isl_basic_set *copy() && = delete;
718 inline __isl_keep isl_basic_set *get() const;
719 inline __isl_give isl_basic_set *release();
720 inline bool is_null() const;
721 inline __isl_keep isl_basic_set *keep() const;
722 inline __isl_give isl_basic_set *take();
723 inline explicit operator bool() const;
724 inline isl::ctx get_ctx() const;
725 inline std::string to_str() const;
726 inline void dump() const;
728 inline isl::basic_set affine_hull() const;
729 inline isl::basic_set align_params(isl::space model) const;
730 inline isl::basic_set apply(isl::basic_map bmap) const;
731 static inline isl::basic_set box_from_points(isl::point pnt1, isl::point pnt2);
732 inline isl::basic_set coefficients() const;
733 inline isl::basic_set detect_equalities() const;
734 inline unsigned int dim(isl::dim type) const;
735 inline isl::basic_set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
736 inline isl::basic_set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
737 inline isl::basic_set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
738 static inline isl::basic_set empty(isl::space space);
739 inline isl::mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
740 inline isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
741 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
742 inline isl::basic_set flat_product(isl::basic_set bset2) const;
743 inline isl::basic_set flatten() const;
744 inline isl::stat foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<isl::stat(isl::constraint, isl::constraint, isl::basic_set)> &fn) const;
745 inline isl::stat foreach_constraint(const std::function<isl::stat(isl::constraint)> &fn) const;
746 static inline isl::basic_set from_constraint(isl::constraint constraint);
747 inline isl::basic_set from_params() const;
748 inline isl::constraint_list get_constraint_list() const;
749 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
750 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
751 inline isl::aff get_div(int pos) const;
752 inline isl::local_space get_local_space() const;
753 inline isl::space get_space() const;
754 inline std::string get_tuple_name() const;
755 inline isl::basic_set gist(isl::basic_set context) const;
756 inline isl::mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
757 inline isl::basic_set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
758 inline isl::basic_set intersect(isl::basic_set bset2) const;
759 inline isl::basic_set intersect_params(isl::basic_set bset2) const;
760 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
761 inline isl::boolean is_bounded() const;
762 inline isl::boolean is_disjoint(const isl::basic_set &bset2) const;
763 inline isl::boolean is_empty() const;
764 inline isl::boolean is_equal(const isl::basic_set &bset2) const;
765 inline int is_rational() const;
766 inline isl::boolean is_subset(const isl::basic_set &bset2) const;
767 inline isl::boolean is_universe() const;
768 inline isl::boolean is_wrapping() const;
769 inline isl::set lexmax() const;
770 inline isl::set lexmin() const;
771 inline isl::basic_set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
772 inline isl::val max_val(const isl::aff &obj) const;
773 inline isl::basic_set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
774 static inline isl::basic_set nat_universe(isl::space dim);
775 inline isl::basic_set neg() const;
776 inline isl::basic_set params() const;
777 inline isl::boolean plain_is_empty() const;
778 inline isl::boolean plain_is_equal(const isl::basic_set &bset2) const;
779 inline isl::boolean plain_is_universe() const;
780 static inline isl::basic_set positive_orthant(isl::space space);
781 inline isl::basic_set preimage_multi_aff(isl::multi_aff ma) const;
782 inline isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
783 inline isl::mat reduced_basis() const;
784 inline isl::basic_set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
785 inline isl::basic_set remove_divs() const;
786 inline isl::basic_set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
787 inline isl::basic_set remove_redundancies() const;
788 inline isl::basic_set remove_unknown_divs() const;
789 inline isl::basic_set sample() const;
790 inline isl::point sample_point() const;
791 inline isl::basic_set set_tuple_id(isl::id id) const;
792 inline isl::basic_set set_tuple_name(const std::string &s) const;
793 inline isl::basic_set solutions() const;
794 inline isl::set unite(isl::basic_set bset2) const;
795 static inline isl::basic_set universe(isl::space space);
796 inline isl::basic_map unwrap() const;
797 inline isl::basic_set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
800 // declarations for isl::basic_set_list
801 inline isl::basic_set_list manage(__isl_take isl_basic_set_list *ptr);
802 inline isl::basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
803 inline isl::basic_set_list give(__isl_take isl_basic_set_list *ptr);
806 class basic_set_list {
807 friend inline isl::basic_set_list manage(__isl_take isl_basic_set_list *ptr);
808 friend inline isl::basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
810 isl_basic_set_list *ptr = nullptr;
812 inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
814 public:
815 inline /* implicit */ basic_set_list();
816 inline /* implicit */ basic_set_list(const isl::basic_set_list &obj);
817 inline /* implicit */ basic_set_list(std::nullptr_t);
818 inline isl::basic_set_list &operator=(isl::basic_set_list obj);
819 inline ~basic_set_list();
820 inline __isl_give isl_basic_set_list *copy() const &;
821 inline __isl_give isl_basic_set_list *copy() && = delete;
822 inline __isl_keep isl_basic_set_list *get() const;
823 inline __isl_give isl_basic_set_list *release();
824 inline bool is_null() const;
825 inline __isl_keep isl_basic_set_list *keep() const;
826 inline __isl_give isl_basic_set_list *take();
827 inline explicit operator bool() const;
828 inline isl::ctx get_ctx() const;
829 inline void dump() const;
833 // declarations for isl::constraint
834 inline isl::constraint manage(__isl_take isl_constraint *ptr);
835 inline isl::constraint manage_copy(__isl_keep isl_constraint *ptr);
836 inline isl::constraint give(__isl_take isl_constraint *ptr);
839 class constraint {
840 friend inline isl::constraint manage(__isl_take isl_constraint *ptr);
841 friend inline isl::constraint manage_copy(__isl_keep isl_constraint *ptr);
843 isl_constraint *ptr = nullptr;
845 inline explicit constraint(__isl_take isl_constraint *ptr);
847 public:
848 inline /* implicit */ constraint();
849 inline /* implicit */ constraint(const isl::constraint &obj);
850 inline /* implicit */ constraint(std::nullptr_t);
851 inline isl::constraint &operator=(isl::constraint obj);
852 inline ~constraint();
853 inline __isl_give isl_constraint *copy() const &;
854 inline __isl_give isl_constraint *copy() && = delete;
855 inline __isl_keep isl_constraint *get() const;
856 inline __isl_give isl_constraint *release();
857 inline bool is_null() const;
858 inline __isl_keep isl_constraint *keep() const;
859 inline __isl_give isl_constraint *take();
860 inline explicit operator bool() const;
861 inline isl::ctx get_ctx() const;
862 inline void dump() const;
864 static inline isl::constraint alloc_equality(isl::local_space ls);
865 static inline isl::constraint alloc_inequality(isl::local_space ls);
866 inline int cmp_last_non_zero(const isl::constraint &c2) const;
867 inline isl::aff get_aff() const;
868 inline isl::aff get_bound(isl::dim type, int pos) const;
869 inline isl::val get_coefficient_val(isl::dim type, int pos) const;
870 inline isl::val get_constant_val() const;
871 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
872 inline isl::aff get_div(int pos) const;
873 inline isl::local_space get_local_space() const;
874 inline isl::space get_space() const;
875 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
876 inline int is_div_constraint() const;
877 inline isl::boolean is_lower_bound(isl::dim type, unsigned int pos) const;
878 inline isl::boolean is_upper_bound(isl::dim type, unsigned int pos) const;
879 inline int plain_cmp(const isl::constraint &c2) const;
880 inline isl::constraint set_coefficient_si(isl::dim type, int pos, int v) const;
881 inline isl::constraint set_coefficient_val(isl::dim type, int pos, isl::val v) const;
882 inline isl::constraint set_constant_si(int v) const;
883 inline isl::constraint set_constant_val(isl::val v) const;
886 // declarations for isl::constraint_list
887 inline isl::constraint_list manage(__isl_take isl_constraint_list *ptr);
888 inline isl::constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
889 inline isl::constraint_list give(__isl_take isl_constraint_list *ptr);
892 class constraint_list {
893 friend inline isl::constraint_list manage(__isl_take isl_constraint_list *ptr);
894 friend inline isl::constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
896 isl_constraint_list *ptr = nullptr;
898 inline explicit constraint_list(__isl_take isl_constraint_list *ptr);
900 public:
901 inline /* implicit */ constraint_list();
902 inline /* implicit */ constraint_list(const isl::constraint_list &obj);
903 inline /* implicit */ constraint_list(std::nullptr_t);
904 inline isl::constraint_list &operator=(isl::constraint_list obj);
905 inline ~constraint_list();
906 inline __isl_give isl_constraint_list *copy() const &;
907 inline __isl_give isl_constraint_list *copy() && = delete;
908 inline __isl_keep isl_constraint_list *get() const;
909 inline __isl_give isl_constraint_list *release();
910 inline bool is_null() const;
911 inline __isl_keep isl_constraint_list *keep() const;
912 inline __isl_give isl_constraint_list *take();
913 inline explicit operator bool() const;
914 inline isl::ctx get_ctx() const;
915 inline void dump() const;
919 // declarations for isl::id
920 inline isl::id manage(__isl_take isl_id *ptr);
921 inline isl::id manage_copy(__isl_keep isl_id *ptr);
922 inline isl::id give(__isl_take isl_id *ptr);
925 class id {
926 friend inline isl::id manage(__isl_take isl_id *ptr);
927 friend inline isl::id manage_copy(__isl_keep isl_id *ptr);
929 isl_id *ptr = nullptr;
931 inline explicit id(__isl_take isl_id *ptr);
933 public:
934 inline /* implicit */ id();
935 inline /* implicit */ id(const isl::id &obj);
936 inline /* implicit */ id(std::nullptr_t);
937 inline isl::id &operator=(isl::id obj);
938 inline ~id();
939 inline __isl_give isl_id *copy() const &;
940 inline __isl_give isl_id *copy() && = delete;
941 inline __isl_keep isl_id *get() const;
942 inline __isl_give isl_id *release();
943 inline bool is_null() const;
944 inline __isl_keep isl_id *keep() const;
945 inline __isl_give isl_id *take();
946 inline explicit operator bool() const;
947 inline isl::ctx get_ctx() const;
948 inline std::string to_str() const;
949 inline void dump() const;
951 static inline isl::id alloc(isl::ctx ctx, const std::string &name, void * user);
952 inline uint32_t get_hash() const;
953 inline std::string get_name() const;
954 inline void * get_user() const;
957 // declarations for isl::id_list
958 inline isl::id_list manage(__isl_take isl_id_list *ptr);
959 inline isl::id_list manage_copy(__isl_keep isl_id_list *ptr);
960 inline isl::id_list give(__isl_take isl_id_list *ptr);
963 class id_list {
964 friend inline isl::id_list manage(__isl_take isl_id_list *ptr);
965 friend inline isl::id_list manage_copy(__isl_keep isl_id_list *ptr);
967 isl_id_list *ptr = nullptr;
969 inline explicit id_list(__isl_take isl_id_list *ptr);
971 public:
972 inline /* implicit */ id_list();
973 inline /* implicit */ id_list(const isl::id_list &obj);
974 inline /* implicit */ id_list(std::nullptr_t);
975 inline isl::id_list &operator=(isl::id_list obj);
976 inline ~id_list();
977 inline __isl_give isl_id_list *copy() const &;
978 inline __isl_give isl_id_list *copy() && = delete;
979 inline __isl_keep isl_id_list *get() const;
980 inline __isl_give isl_id_list *release();
981 inline bool is_null() const;
982 inline __isl_keep isl_id_list *keep() const;
983 inline __isl_give isl_id_list *take();
984 inline explicit operator bool() const;
985 inline isl::ctx get_ctx() const;
986 inline void dump() const;
990 // declarations for isl::id_to_ast_expr
991 inline isl::id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
992 inline isl::id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
993 inline isl::id_to_ast_expr give(__isl_take isl_id_to_ast_expr *ptr);
996 class id_to_ast_expr {
997 friend inline isl::id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
998 friend inline isl::id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1000 isl_id_to_ast_expr *ptr = nullptr;
1002 inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
1004 public:
1005 inline /* implicit */ id_to_ast_expr();
1006 inline /* implicit */ id_to_ast_expr(const isl::id_to_ast_expr &obj);
1007 inline /* implicit */ id_to_ast_expr(std::nullptr_t);
1008 inline isl::id_to_ast_expr &operator=(isl::id_to_ast_expr obj);
1009 inline ~id_to_ast_expr();
1010 inline __isl_give isl_id_to_ast_expr *copy() const &;
1011 inline __isl_give isl_id_to_ast_expr *copy() && = delete;
1012 inline __isl_keep isl_id_to_ast_expr *get() const;
1013 inline __isl_give isl_id_to_ast_expr *release();
1014 inline bool is_null() const;
1015 inline __isl_keep isl_id_to_ast_expr *keep() const;
1016 inline __isl_give isl_id_to_ast_expr *take();
1017 inline explicit operator bool() const;
1018 inline isl::ctx get_ctx() const;
1019 inline void dump() const;
1021 static inline isl::id_to_ast_expr alloc(isl::ctx ctx, int min_size);
1022 inline isl::id_to_ast_expr drop(isl::id key) const;
1023 inline isl::stat foreach(const std::function<isl::stat(isl::id, isl::ast_expr)> &fn) const;
1024 inline isl::ast_expr get(isl::id key) const;
1025 inline isl::boolean has(const isl::id &key) const;
1026 inline isl::id_to_ast_expr set(isl::id key, isl::ast_expr val) const;
1029 // declarations for isl::local_space
1030 inline isl::local_space manage(__isl_take isl_local_space *ptr);
1031 inline isl::local_space manage_copy(__isl_keep isl_local_space *ptr);
1032 inline isl::local_space give(__isl_take isl_local_space *ptr);
1035 class local_space {
1036 friend inline isl::local_space manage(__isl_take isl_local_space *ptr);
1037 friend inline isl::local_space manage_copy(__isl_keep isl_local_space *ptr);
1039 isl_local_space *ptr = nullptr;
1041 inline explicit local_space(__isl_take isl_local_space *ptr);
1043 public:
1044 inline /* implicit */ local_space();
1045 inline /* implicit */ local_space(const isl::local_space &obj);
1046 inline /* implicit */ local_space(std::nullptr_t);
1047 inline explicit local_space(isl::space dim);
1048 inline isl::local_space &operator=(isl::local_space obj);
1049 inline ~local_space();
1050 inline __isl_give isl_local_space *copy() const &;
1051 inline __isl_give isl_local_space *copy() && = delete;
1052 inline __isl_keep isl_local_space *get() const;
1053 inline __isl_give isl_local_space *release();
1054 inline bool is_null() const;
1055 inline __isl_keep isl_local_space *keep() const;
1056 inline __isl_give isl_local_space *take();
1057 inline explicit operator bool() const;
1058 inline isl::ctx get_ctx() const;
1059 inline void dump() const;
1061 inline isl::local_space add_dims(isl::dim type, unsigned int n) const;
1062 inline int dim(isl::dim type) const;
1063 inline isl::local_space domain() const;
1064 inline isl::local_space drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1065 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1066 inline isl::local_space flatten_domain() const;
1067 inline isl::local_space flatten_range() const;
1068 inline isl::local_space from_domain() const;
1069 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1070 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1071 inline isl::aff get_div(int pos) const;
1072 inline isl::space get_space() const;
1073 inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
1074 inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
1075 inline isl::local_space insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1076 inline isl::local_space intersect(isl::local_space ls2) const;
1077 inline isl::boolean is_equal(const isl::local_space &ls2) const;
1078 inline isl::boolean is_params() const;
1079 inline isl::boolean is_set() const;
1080 inline isl::local_space range() const;
1081 inline isl::local_space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1082 inline isl::local_space set_tuple_id(isl::dim type, isl::id id) const;
1083 inline isl::local_space wrap() const;
1086 // declarations for isl::map
1087 inline isl::map manage(__isl_take isl_map *ptr);
1088 inline isl::map manage_copy(__isl_keep isl_map *ptr);
1089 inline isl::map give(__isl_take isl_map *ptr);
1092 class map {
1093 friend inline isl::map manage(__isl_take isl_map *ptr);
1094 friend inline isl::map manage_copy(__isl_keep isl_map *ptr);
1096 isl_map *ptr = nullptr;
1098 inline explicit map(__isl_take isl_map *ptr);
1100 public:
1101 inline /* implicit */ map();
1102 inline /* implicit */ map(const isl::map &obj);
1103 inline /* implicit */ map(std::nullptr_t);
1104 inline explicit map(isl::ctx ctx, const std::string &str);
1105 inline /* implicit */ map(isl::basic_map bmap);
1106 inline isl::map &operator=(isl::map obj);
1107 inline ~map();
1108 inline __isl_give isl_map *copy() const &;
1109 inline __isl_give isl_map *copy() && = delete;
1110 inline __isl_keep isl_map *get() const;
1111 inline __isl_give isl_map *release();
1112 inline bool is_null() const;
1113 inline __isl_keep isl_map *keep() const;
1114 inline __isl_give isl_map *take();
1115 inline explicit operator bool() const;
1116 inline isl::ctx get_ctx() const;
1117 inline std::string to_str() const;
1118 inline void dump() const;
1120 inline isl::map add_constraint(isl::constraint constraint) const;
1121 inline isl::map add_dims(isl::dim type, unsigned int n) const;
1122 inline isl::basic_map affine_hull() const;
1123 inline isl::map align_params(isl::space model) const;
1124 inline isl::map apply_domain(isl::map map2) const;
1125 inline isl::map apply_range(isl::map map2) const;
1126 inline isl::boolean can_curry() const;
1127 inline isl::boolean can_range_curry() const;
1128 inline isl::boolean can_uncurry() const;
1129 inline isl::boolean can_zip() const;
1130 inline isl::map coalesce() const;
1131 inline isl::map complement() const;
1132 inline isl::basic_map convex_hull() const;
1133 inline isl::map curry() const;
1134 inline isl::set deltas() const;
1135 inline isl::map deltas_map() const;
1136 inline isl::map detect_equalities() const;
1137 inline unsigned int dim(isl::dim type) const;
1138 inline isl::pw_aff dim_max(int pos) const;
1139 inline isl::pw_aff dim_min(int pos) const;
1140 inline isl::set domain() const;
1141 inline isl::map domain_factor_domain() const;
1142 inline isl::map domain_factor_range() const;
1143 inline isl::boolean domain_is_wrapping() const;
1144 inline isl::map domain_map() const;
1145 inline isl::map domain_product(isl::map map2) const;
1146 inline isl::map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1147 inline isl::map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1148 inline isl::map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
1149 static inline isl::map empty(isl::space space);
1150 inline isl::map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1151 inline isl::map factor_domain() const;
1152 inline isl::map factor_range() const;
1153 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1154 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1155 inline isl::map fix_si(isl::dim type, unsigned int pos, int value) const;
1156 inline isl::map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
1157 inline isl::map fixed_power_val(isl::val exp) const;
1158 inline isl::map flat_domain_product(isl::map map2) const;
1159 inline isl::map flat_product(isl::map map2) const;
1160 inline isl::map flat_range_product(isl::map map2) const;
1161 inline isl::map flatten() const;
1162 inline isl::map flatten_domain() const;
1163 inline isl::map flatten_range() const;
1164 inline isl::map floordiv_val(isl::val d) const;
1165 inline isl::stat foreach_basic_map(const std::function<isl::stat(isl::basic_map)> &fn) const;
1166 static inline isl::map from_aff(isl::aff aff);
1167 static inline isl::map from_domain(isl::set set);
1168 static inline isl::map from_domain_and_range(isl::set domain, isl::set range);
1169 static inline isl::map from_multi_aff(isl::multi_aff maff);
1170 static inline isl::map from_multi_pw_aff(isl::multi_pw_aff mpa);
1171 static inline isl::map from_pw_aff(isl::pw_aff pwaff);
1172 static inline isl::map from_pw_multi_aff(isl::pw_multi_aff pma);
1173 static inline isl::map from_range(isl::set set);
1174 static inline isl::map from_union_map(isl::union_map umap);
1175 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1176 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1177 inline uint32_t get_hash() const;
1178 inline isl::space get_space() const;
1179 inline isl::id get_tuple_id(isl::dim type) const;
1180 inline std::string get_tuple_name(isl::dim type) const;
1181 inline isl::map gist(isl::map context) const;
1182 inline isl::map gist_basic_map(isl::basic_map context) const;
1183 inline isl::map gist_domain(isl::set context) const;
1184 inline isl::map gist_params(isl::set context) const;
1185 inline isl::map gist_range(isl::set context) const;
1186 inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
1187 inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
1188 inline isl::boolean has_equal_space(const isl::map &map2) const;
1189 inline isl::boolean has_tuple_id(isl::dim type) const;
1190 inline isl::boolean has_tuple_name(isl::dim type) const;
1191 static inline isl::map identity(isl::space dim);
1192 inline isl::map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
1193 inline isl::map intersect(isl::map map2) const;
1194 inline isl::map intersect_domain(isl::set set) const;
1195 inline isl::map intersect_domain_factor_range(isl::map factor) const;
1196 inline isl::map intersect_params(isl::set params) const;
1197 inline isl::map intersect_range(isl::set set) const;
1198 inline isl::map intersect_range_factor_range(isl::map factor) const;
1199 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1200 inline isl::boolean is_bijective() const;
1201 inline isl::boolean is_disjoint(const isl::map &map2) const;
1202 inline isl::boolean is_empty() const;
1203 inline isl::boolean is_equal(const isl::map &map2) const;
1204 inline isl::boolean is_identity() const;
1205 inline isl::boolean is_injective() const;
1206 inline isl::boolean is_product() const;
1207 inline isl::boolean is_single_valued() const;
1208 inline isl::boolean is_strict_subset(const isl::map &map2) const;
1209 inline isl::boolean is_subset(const isl::map &map2) const;
1210 inline int is_translation() const;
1211 static inline isl::map lex_ge(isl::space set_dim);
1212 static inline isl::map lex_ge_first(isl::space dim, unsigned int n);
1213 inline isl::map lex_ge_map(isl::map map2) const;
1214 static inline isl::map lex_gt(isl::space set_dim);
1215 static inline isl::map lex_gt_first(isl::space dim, unsigned int n);
1216 inline isl::map lex_gt_map(isl::map map2) const;
1217 static inline isl::map lex_le(isl::space set_dim);
1218 static inline isl::map lex_le_first(isl::space dim, unsigned int n);
1219 inline isl::map lex_le_map(isl::map map2) const;
1220 static inline isl::map lex_lt(isl::space set_dim);
1221 static inline isl::map lex_lt_first(isl::space dim, unsigned int n);
1222 inline isl::map lex_lt_map(isl::map map2) const;
1223 inline isl::map lexmax() const;
1224 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
1225 inline isl::map lexmin() const;
1226 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
1227 inline isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1228 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;
1229 static inline isl::map nat_universe(isl::space dim);
1230 inline isl::map neg() const;
1231 inline isl::map oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1232 inline isl::map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1233 inline isl::map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1234 inline isl::map order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1235 inline isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1236 inline isl::set params() const;
1237 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1238 inline isl::boolean plain_is_empty() const;
1239 inline isl::boolean plain_is_equal(const isl::map &map2) const;
1240 inline isl::boolean plain_is_injective() const;
1241 inline isl::boolean plain_is_single_valued() const;
1242 inline isl::boolean plain_is_universe() const;
1243 inline isl::basic_map plain_unshifted_simple_hull() const;
1244 inline isl::basic_map polyhedral_hull() const;
1245 inline isl::map preimage_domain_multi_aff(isl::multi_aff ma) const;
1246 inline isl::map preimage_domain_multi_pw_aff(isl::multi_pw_aff mpa) const;
1247 inline isl::map preimage_domain_pw_multi_aff(isl::pw_multi_aff pma) const;
1248 inline isl::map preimage_range_multi_aff(isl::multi_aff ma) const;
1249 inline isl::map preimage_range_pw_multi_aff(isl::pw_multi_aff pma) const;
1250 inline isl::map product(isl::map map2) const;
1251 inline isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const;
1252 inline isl::set range() const;
1253 inline isl::map range_curry() const;
1254 inline isl::map range_factor_domain() const;
1255 inline isl::map range_factor_range() const;
1256 inline isl::boolean range_is_wrapping() const;
1257 inline isl::map range_map() const;
1258 inline isl::map range_product(isl::map map2) const;
1259 inline isl::map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
1260 inline isl::map remove_divs() const;
1261 inline isl::map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1262 inline isl::map remove_redundancies() const;
1263 inline isl::map remove_unknown_divs() const;
1264 inline isl::map reset_tuple_id(isl::dim type) const;
1265 inline isl::map reset_user() const;
1266 inline isl::map reverse() const;
1267 inline isl::basic_map sample() const;
1268 inline isl::map set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1269 inline isl::map set_tuple_id(isl::dim type, isl::id id) const;
1270 inline isl::map set_tuple_name(isl::dim type, const std::string &s) const;
1271 inline isl::basic_map simple_hull() const;
1272 inline isl::map subtract(isl::map map2) const;
1273 inline isl::map subtract_domain(isl::set dom) const;
1274 inline isl::map subtract_range(isl::set dom) const;
1275 inline isl::map sum(isl::map map2) const;
1276 inline isl::map uncurry() const;
1277 inline isl::map unite(isl::map map2) const;
1278 static inline isl::map universe(isl::space space);
1279 inline isl::basic_map unshifted_simple_hull() const;
1280 inline isl::basic_map unshifted_simple_hull_from_map_list(isl::map_list list) const;
1281 inline isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
1282 inline isl::set wrap() const;
1283 inline isl::map zip() const;
1286 // declarations for isl::map_list
1287 inline isl::map_list manage(__isl_take isl_map_list *ptr);
1288 inline isl::map_list manage_copy(__isl_keep isl_map_list *ptr);
1289 inline isl::map_list give(__isl_take isl_map_list *ptr);
1292 class map_list {
1293 friend inline isl::map_list manage(__isl_take isl_map_list *ptr);
1294 friend inline isl::map_list manage_copy(__isl_keep isl_map_list *ptr);
1296 isl_map_list *ptr = nullptr;
1298 inline explicit map_list(__isl_take isl_map_list *ptr);
1300 public:
1301 inline /* implicit */ map_list();
1302 inline /* implicit */ map_list(const isl::map_list &obj);
1303 inline /* implicit */ map_list(std::nullptr_t);
1304 inline isl::map_list &operator=(isl::map_list obj);
1305 inline ~map_list();
1306 inline __isl_give isl_map_list *copy() const &;
1307 inline __isl_give isl_map_list *copy() && = delete;
1308 inline __isl_keep isl_map_list *get() const;
1309 inline __isl_give isl_map_list *release();
1310 inline bool is_null() const;
1311 inline __isl_keep isl_map_list *keep() const;
1312 inline __isl_give isl_map_list *take();
1313 inline explicit operator bool() const;
1314 inline isl::ctx get_ctx() const;
1315 inline void dump() const;
1319 // declarations for isl::mat
1320 inline isl::mat manage(__isl_take isl_mat *ptr);
1321 inline isl::mat manage_copy(__isl_keep isl_mat *ptr);
1322 inline isl::mat give(__isl_take isl_mat *ptr);
1325 class mat {
1326 friend inline isl::mat manage(__isl_take isl_mat *ptr);
1327 friend inline isl::mat manage_copy(__isl_keep isl_mat *ptr);
1329 isl_mat *ptr = nullptr;
1331 inline explicit mat(__isl_take isl_mat *ptr);
1333 public:
1334 inline /* implicit */ mat();
1335 inline /* implicit */ mat(const isl::mat &obj);
1336 inline /* implicit */ mat(std::nullptr_t);
1337 inline isl::mat &operator=(isl::mat obj);
1338 inline ~mat();
1339 inline __isl_give isl_mat *copy() const &;
1340 inline __isl_give isl_mat *copy() && = delete;
1341 inline __isl_keep isl_mat *get() const;
1342 inline __isl_give isl_mat *release();
1343 inline bool is_null() const;
1344 inline __isl_keep isl_mat *keep() const;
1345 inline __isl_give isl_mat *take();
1346 inline explicit operator bool() const;
1347 inline isl::ctx get_ctx() const;
1348 inline void dump() const;
1350 inline isl::mat add_rows(unsigned int n) const;
1351 inline isl::mat add_zero_cols(unsigned int n) const;
1352 inline isl::mat add_zero_rows(unsigned int n) const;
1353 inline isl::mat aff_direct_sum(isl::mat right) const;
1354 static inline isl::mat alloc(isl::ctx ctx, unsigned int n_row, unsigned int n_col);
1355 inline int cols() const;
1356 inline isl::mat concat(isl::mat bot) const;
1357 inline isl::mat diagonal(isl::mat mat2) const;
1358 inline isl::mat drop_cols(unsigned int col, unsigned int n) const;
1359 inline isl::mat drop_rows(unsigned int row, unsigned int n) const;
1360 static inline isl::mat from_row_vec(isl::vec vec);
1361 inline isl::val get_element_val(int row, int col) const;
1362 inline int initial_non_zero_cols() const;
1363 inline isl::mat insert_cols(unsigned int col, unsigned int n) const;
1364 inline isl::mat insert_rows(unsigned int row, unsigned int n) const;
1365 inline isl::mat insert_zero_cols(unsigned int first, unsigned int n) const;
1366 inline isl::mat insert_zero_rows(unsigned int row, unsigned int n) const;
1367 inline isl::mat inverse_product(isl::mat right) const;
1368 inline isl::boolean is_equal(const isl::mat &mat2) const;
1369 inline isl::mat lin_to_aff() const;
1370 inline isl::mat move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
1371 inline isl::mat normalize() const;
1372 inline isl::mat normalize_row(int row) const;
1373 inline isl::mat product(isl::mat right) const;
1374 inline isl::mat right_inverse() const;
1375 inline isl::mat right_kernel() const;
1376 inline int rows() const;
1377 inline isl::mat set_element_si(int row, int col, int v) const;
1378 inline isl::mat set_element_val(int row, int col, isl::val v) const;
1379 inline isl::mat swap_cols(unsigned int i, unsigned int j) const;
1380 inline isl::mat swap_rows(unsigned int i, unsigned int j) const;
1381 inline isl::mat transpose() const;
1382 inline isl::mat unimodular_complete(int row) const;
1383 inline isl::mat vec_concat(isl::vec bot) const;
1384 inline isl::vec vec_inverse_product(isl::vec vec) const;
1385 inline isl::vec vec_product(isl::vec vec) const;
1388 // declarations for isl::multi_aff
1389 inline isl::multi_aff manage(__isl_take isl_multi_aff *ptr);
1390 inline isl::multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1391 inline isl::multi_aff give(__isl_take isl_multi_aff *ptr);
1394 class multi_aff {
1395 friend inline isl::multi_aff manage(__isl_take isl_multi_aff *ptr);
1396 friend inline isl::multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1398 isl_multi_aff *ptr = nullptr;
1400 inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
1402 public:
1403 inline /* implicit */ multi_aff();
1404 inline /* implicit */ multi_aff(const isl::multi_aff &obj);
1405 inline /* implicit */ multi_aff(std::nullptr_t);
1406 inline explicit multi_aff(isl::ctx ctx, const std::string &str);
1407 inline /* implicit */ multi_aff(isl::aff aff);
1408 inline isl::multi_aff &operator=(isl::multi_aff obj);
1409 inline ~multi_aff();
1410 inline __isl_give isl_multi_aff *copy() const &;
1411 inline __isl_give isl_multi_aff *copy() && = delete;
1412 inline __isl_keep isl_multi_aff *get() const;
1413 inline __isl_give isl_multi_aff *release();
1414 inline bool is_null() const;
1415 inline __isl_keep isl_multi_aff *keep() const;
1416 inline __isl_give isl_multi_aff *take();
1417 inline explicit operator bool() const;
1418 inline isl::ctx get_ctx() const;
1419 inline std::string to_str() const;
1420 inline void dump() const;
1422 inline isl::multi_aff add(isl::multi_aff multi2) const;
1423 inline isl::multi_aff add_dims(isl::dim type, unsigned int n) const;
1424 inline isl::multi_aff align_params(isl::space model) const;
1425 inline unsigned int dim(isl::dim type) const;
1426 static inline isl::multi_aff domain_map(isl::space space);
1427 inline isl::multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1428 inline isl::multi_aff factor_range() const;
1429 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1430 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1431 inline isl::multi_aff flat_range_product(isl::multi_aff multi2) const;
1432 inline isl::multi_aff flatten_domain() const;
1433 inline isl::multi_aff flatten_range() const;
1434 inline isl::multi_aff floor() const;
1435 static inline isl::multi_aff from_aff_list(isl::space space, isl::aff_list list);
1436 inline isl::multi_aff from_range() const;
1437 inline isl::aff get_aff(int pos) const;
1438 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1439 inline isl::space get_domain_space() const;
1440 inline isl::space get_space() const;
1441 inline isl::id get_tuple_id(isl::dim type) const;
1442 inline std::string get_tuple_name(isl::dim type) const;
1443 inline isl::multi_aff gist(isl::set context) const;
1444 inline isl::multi_aff gist_params(isl::set context) const;
1445 inline isl::boolean has_tuple_id(isl::dim type) const;
1446 static inline isl::multi_aff identity(isl::space space);
1447 inline isl::multi_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1448 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1449 inline isl::boolean involves_nan() const;
1450 inline isl::set lex_ge_set(isl::multi_aff ma2) const;
1451 inline isl::set lex_gt_set(isl::multi_aff ma2) const;
1452 inline isl::set lex_le_set(isl::multi_aff ma2) const;
1453 inline isl::set lex_lt_set(isl::multi_aff ma2) const;
1454 inline isl::multi_aff mod_multi_val(isl::multi_val mv) const;
1455 inline isl::multi_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1456 static inline isl::multi_aff multi_val_on_space(isl::space space, isl::multi_val mv);
1457 inline isl::multi_aff neg() const;
1458 inline int plain_cmp(const isl::multi_aff &multi2) const;
1459 inline isl::boolean plain_is_equal(const isl::multi_aff &multi2) const;
1460 inline isl::multi_aff product(isl::multi_aff multi2) const;
1461 static inline isl::multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
1462 inline isl::multi_aff pullback(isl::multi_aff ma2) const;
1463 inline isl::multi_aff range_factor_domain() const;
1464 inline isl::multi_aff range_factor_range() const;
1465 inline isl::boolean range_is_wrapping() const;
1466 static inline isl::multi_aff range_map(isl::space space);
1467 inline isl::multi_aff range_product(isl::multi_aff multi2) const;
1468 inline isl::multi_aff range_splice(unsigned int pos, isl::multi_aff multi2) const;
1469 inline isl::multi_aff reset_tuple_id(isl::dim type) const;
1470 inline isl::multi_aff reset_user() const;
1471 inline isl::multi_aff scale_down_multi_val(isl::multi_val mv) const;
1472 inline isl::multi_aff scale_down_val(isl::val v) const;
1473 inline isl::multi_aff scale_multi_val(isl::multi_val mv) const;
1474 inline isl::multi_aff scale_val(isl::val v) const;
1475 inline isl::multi_aff set_aff(int pos, isl::aff el) const;
1476 inline isl::multi_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1477 inline isl::multi_aff set_tuple_id(isl::dim type, isl::id id) const;
1478 inline isl::multi_aff set_tuple_name(isl::dim type, const std::string &s) const;
1479 inline isl::multi_aff splice(unsigned int in_pos, unsigned int out_pos, isl::multi_aff multi2) const;
1480 inline isl::multi_aff sub(isl::multi_aff multi2) const;
1481 static inline isl::multi_aff zero(isl::space space);
1484 // declarations for isl::multi_pw_aff
1485 inline isl::multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1486 inline isl::multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1487 inline isl::multi_pw_aff give(__isl_take isl_multi_pw_aff *ptr);
1490 class multi_pw_aff {
1491 friend inline isl::multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1492 friend inline isl::multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1494 isl_multi_pw_aff *ptr = nullptr;
1496 inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
1498 public:
1499 inline /* implicit */ multi_pw_aff();
1500 inline /* implicit */ multi_pw_aff(const isl::multi_pw_aff &obj);
1501 inline /* implicit */ multi_pw_aff(std::nullptr_t);
1502 inline /* implicit */ multi_pw_aff(isl::multi_aff ma);
1503 inline /* implicit */ multi_pw_aff(isl::pw_aff pa);
1504 inline /* implicit */ multi_pw_aff(isl::pw_multi_aff pma);
1505 inline explicit multi_pw_aff(isl::ctx ctx, const std::string &str);
1506 inline isl::multi_pw_aff &operator=(isl::multi_pw_aff obj);
1507 inline ~multi_pw_aff();
1508 inline __isl_give isl_multi_pw_aff *copy() const &;
1509 inline __isl_give isl_multi_pw_aff *copy() && = delete;
1510 inline __isl_keep isl_multi_pw_aff *get() const;
1511 inline __isl_give isl_multi_pw_aff *release();
1512 inline bool is_null() const;
1513 inline __isl_keep isl_multi_pw_aff *keep() const;
1514 inline __isl_give isl_multi_pw_aff *take();
1515 inline explicit operator bool() const;
1516 inline isl::ctx get_ctx() const;
1517 inline std::string to_str() const;
1518 inline void dump() const;
1520 inline isl::multi_pw_aff add(isl::multi_pw_aff multi2) const;
1521 inline isl::multi_pw_aff add_dims(isl::dim type, unsigned int n) const;
1522 inline isl::multi_pw_aff align_params(isl::space model) const;
1523 inline isl::multi_pw_aff coalesce() const;
1524 inline unsigned int dim(isl::dim type) const;
1525 inline isl::set domain() const;
1526 inline isl::multi_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1527 inline isl::map eq_map(isl::multi_pw_aff mpa2) const;
1528 inline isl::multi_pw_aff factor_range() const;
1529 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1530 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1531 inline isl::multi_pw_aff flat_range_product(isl::multi_pw_aff multi2) const;
1532 inline isl::multi_pw_aff flatten_range() const;
1533 static inline isl::multi_pw_aff from_pw_aff_list(isl::space space, isl::pw_aff_list list);
1534 inline isl::multi_pw_aff from_range() const;
1535 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1536 inline isl::space get_domain_space() const;
1537 inline uint32_t get_hash() const;
1538 inline isl::pw_aff get_pw_aff(int pos) const;
1539 inline isl::space get_space() const;
1540 inline isl::id get_tuple_id(isl::dim type) const;
1541 inline std::string get_tuple_name(isl::dim type) const;
1542 inline isl::multi_pw_aff gist(isl::set set) const;
1543 inline isl::multi_pw_aff gist_params(isl::set set) const;
1544 inline isl::boolean has_tuple_id(isl::dim type) const;
1545 static inline isl::multi_pw_aff identity(isl::space space);
1546 inline isl::multi_pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1547 inline isl::multi_pw_aff intersect_domain(isl::set domain) const;
1548 inline isl::multi_pw_aff intersect_params(isl::set set) const;
1549 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1550 inline isl::boolean involves_nan() const;
1551 inline isl::boolean is_cst() const;
1552 inline isl::boolean is_equal(const isl::multi_pw_aff &mpa2) const;
1553 inline isl::map lex_gt_map(isl::multi_pw_aff mpa2) const;
1554 inline isl::map lex_lt_map(isl::multi_pw_aff mpa2) const;
1555 inline isl::multi_pw_aff mod_multi_val(isl::multi_val mv) const;
1556 inline isl::multi_pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1557 inline isl::multi_pw_aff neg() const;
1558 inline isl::boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
1559 inline isl::multi_pw_aff product(isl::multi_pw_aff multi2) const;
1560 inline isl::multi_pw_aff pullback(isl::multi_aff ma) const;
1561 inline isl::multi_pw_aff pullback(isl::pw_multi_aff pma) const;
1562 inline isl::multi_pw_aff pullback(isl::multi_pw_aff mpa2) const;
1563 inline isl::multi_pw_aff range_factor_domain() const;
1564 inline isl::multi_pw_aff range_factor_range() const;
1565 inline isl::boolean range_is_wrapping() const;
1566 inline isl::multi_pw_aff range_product(isl::multi_pw_aff multi2) const;
1567 inline isl::multi_pw_aff range_splice(unsigned int pos, isl::multi_pw_aff multi2) const;
1568 inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
1569 inline isl::multi_pw_aff reset_user() const;
1570 inline isl::multi_pw_aff scale_down_multi_val(isl::multi_val mv) const;
1571 inline isl::multi_pw_aff scale_down_val(isl::val v) const;
1572 inline isl::multi_pw_aff scale_multi_val(isl::multi_val mv) const;
1573 inline isl::multi_pw_aff scale_val(isl::val v) const;
1574 inline isl::multi_pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1575 inline isl::multi_pw_aff set_pw_aff(int pos, isl::pw_aff el) const;
1576 inline isl::multi_pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1577 inline isl::multi_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1578 inline isl::multi_pw_aff splice(unsigned int in_pos, unsigned int out_pos, isl::multi_pw_aff multi2) const;
1579 inline isl::multi_pw_aff sub(isl::multi_pw_aff multi2) const;
1580 static inline isl::multi_pw_aff zero(isl::space space);
1583 // declarations for isl::multi_union_pw_aff
1584 inline isl::multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1585 inline isl::multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1586 inline isl::multi_union_pw_aff give(__isl_take isl_multi_union_pw_aff *ptr);
1589 class multi_union_pw_aff {
1590 friend inline isl::multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1591 friend inline isl::multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1593 isl_multi_union_pw_aff *ptr = nullptr;
1595 inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
1597 public:
1598 inline /* implicit */ multi_union_pw_aff();
1599 inline /* implicit */ multi_union_pw_aff(const isl::multi_union_pw_aff &obj);
1600 inline /* implicit */ multi_union_pw_aff(std::nullptr_t);
1601 inline /* implicit */ multi_union_pw_aff(isl::union_pw_aff upa);
1602 inline /* implicit */ multi_union_pw_aff(isl::multi_pw_aff mpa);
1603 inline explicit multi_union_pw_aff(isl::union_pw_multi_aff upma);
1604 inline explicit multi_union_pw_aff(isl::ctx ctx, const std::string &str);
1605 inline isl::multi_union_pw_aff &operator=(isl::multi_union_pw_aff obj);
1606 inline ~multi_union_pw_aff();
1607 inline __isl_give isl_multi_union_pw_aff *copy() const &;
1608 inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
1609 inline __isl_keep isl_multi_union_pw_aff *get() const;
1610 inline __isl_give isl_multi_union_pw_aff *release();
1611 inline bool is_null() const;
1612 inline __isl_keep isl_multi_union_pw_aff *keep() const;
1613 inline __isl_give isl_multi_union_pw_aff *take();
1614 inline explicit operator bool() const;
1615 inline isl::ctx get_ctx() const;
1616 inline std::string to_str() const;
1617 inline void dump() const;
1619 inline isl::multi_union_pw_aff add(isl::multi_union_pw_aff multi2) const;
1620 inline isl::multi_union_pw_aff align_params(isl::space model) const;
1621 inline isl::union_pw_aff apply_aff(isl::aff aff) const;
1622 inline isl::union_pw_aff apply_pw_aff(isl::pw_aff pa) const;
1623 inline isl::multi_union_pw_aff apply_pw_multi_aff(isl::pw_multi_aff pma) const;
1624 inline isl::multi_union_pw_aff coalesce() const;
1625 inline unsigned int dim(isl::dim type) const;
1626 inline isl::union_set domain() const;
1627 inline isl::multi_union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1628 inline isl::multi_pw_aff extract_multi_pw_aff(isl::space space) const;
1629 inline isl::multi_union_pw_aff factor_range() const;
1630 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1631 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1632 inline isl::multi_union_pw_aff flat_range_product(isl::multi_union_pw_aff multi2) const;
1633 inline isl::multi_union_pw_aff flatten_range() const;
1634 inline isl::multi_union_pw_aff floor() const;
1635 static inline isl::multi_union_pw_aff from_multi_aff(isl::multi_aff ma);
1636 inline isl::multi_union_pw_aff from_range() const;
1637 static inline isl::multi_union_pw_aff from_union_map(isl::union_map umap);
1638 static inline isl::multi_union_pw_aff from_union_pw_aff_list(isl::space space, isl::union_pw_aff_list list);
1639 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1640 inline isl::space get_domain_space() const;
1641 inline isl::space get_space() const;
1642 inline isl::id get_tuple_id(isl::dim type) const;
1643 inline std::string get_tuple_name(isl::dim type) const;
1644 inline isl::union_pw_aff get_union_pw_aff(int pos) const;
1645 inline isl::multi_union_pw_aff gist(isl::union_set context) const;
1646 inline isl::multi_union_pw_aff gist_params(isl::set context) const;
1647 inline isl::boolean has_tuple_id(isl::dim type) const;
1648 inline isl::multi_union_pw_aff intersect_domain(isl::union_set uset) const;
1649 inline isl::multi_union_pw_aff intersect_params(isl::set params) const;
1650 inline isl::multi_union_pw_aff intersect_range(isl::set set) const;
1651 inline isl::boolean involves_nan() const;
1652 inline isl::multi_union_pw_aff mod_multi_val(isl::multi_val mv) const;
1653 static inline isl::multi_union_pw_aff multi_aff_on_domain(isl::union_set domain, isl::multi_aff ma);
1654 static inline isl::multi_union_pw_aff multi_val_on_domain(isl::union_set domain, isl::multi_val mv);
1655 inline isl::multi_union_pw_aff neg() const;
1656 inline isl::boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
1657 inline isl::multi_union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
1658 inline isl::multi_union_pw_aff range_factor_domain() const;
1659 inline isl::multi_union_pw_aff range_factor_range() const;
1660 inline isl::boolean range_is_wrapping() const;
1661 inline isl::multi_union_pw_aff range_product(isl::multi_union_pw_aff multi2) const;
1662 inline isl::multi_union_pw_aff range_splice(unsigned int pos, isl::multi_union_pw_aff multi2) const;
1663 inline isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const;
1664 inline isl::multi_union_pw_aff reset_user() const;
1665 inline isl::multi_union_pw_aff scale_down_multi_val(isl::multi_val mv) const;
1666 inline isl::multi_union_pw_aff scale_down_val(isl::val v) const;
1667 inline isl::multi_union_pw_aff scale_multi_val(isl::multi_val mv) const;
1668 inline isl::multi_union_pw_aff scale_val(isl::val v) const;
1669 inline isl::multi_union_pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1670 inline isl::multi_union_pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1671 inline isl::multi_union_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1672 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, isl::union_pw_aff el) const;
1673 inline isl::multi_union_pw_aff sub(isl::multi_union_pw_aff multi2) const;
1674 inline isl::multi_union_pw_aff union_add(isl::multi_union_pw_aff mupa2) const;
1675 static inline isl::multi_union_pw_aff zero(isl::space space);
1676 inline isl::union_set zero_union_set() const;
1679 // declarations for isl::multi_val
1680 inline isl::multi_val manage(__isl_take isl_multi_val *ptr);
1681 inline isl::multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1682 inline isl::multi_val give(__isl_take isl_multi_val *ptr);
1685 class multi_val {
1686 friend inline isl::multi_val manage(__isl_take isl_multi_val *ptr);
1687 friend inline isl::multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1689 isl_multi_val *ptr = nullptr;
1691 inline explicit multi_val(__isl_take isl_multi_val *ptr);
1693 public:
1694 inline /* implicit */ multi_val();
1695 inline /* implicit */ multi_val(const isl::multi_val &obj);
1696 inline /* implicit */ multi_val(std::nullptr_t);
1697 inline explicit multi_val(isl::ctx ctx, const std::string &str);
1698 inline isl::multi_val &operator=(isl::multi_val obj);
1699 inline ~multi_val();
1700 inline __isl_give isl_multi_val *copy() const &;
1701 inline __isl_give isl_multi_val *copy() && = delete;
1702 inline __isl_keep isl_multi_val *get() const;
1703 inline __isl_give isl_multi_val *release();
1704 inline bool is_null() const;
1705 inline __isl_keep isl_multi_val *keep() const;
1706 inline __isl_give isl_multi_val *take();
1707 inline explicit operator bool() const;
1708 inline isl::ctx get_ctx() const;
1709 inline std::string to_str() const;
1710 inline void dump() const;
1712 inline isl::multi_val add(isl::multi_val multi2) const;
1713 inline isl::multi_val add_dims(isl::dim type, unsigned int n) const;
1714 inline isl::multi_val add_val(isl::val v) const;
1715 inline isl::multi_val align_params(isl::space model) const;
1716 inline unsigned int dim(isl::dim type) const;
1717 inline isl::multi_val drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1718 inline isl::multi_val factor_range() const;
1719 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1720 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1721 inline isl::multi_val flat_range_product(isl::multi_val multi2) const;
1722 inline isl::multi_val flatten_range() const;
1723 inline isl::multi_val from_range() const;
1724 static inline isl::multi_val from_val_list(isl::space space, isl::val_list list);
1725 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1726 inline isl::space get_domain_space() const;
1727 inline isl::space get_space() const;
1728 inline isl::id get_tuple_id(isl::dim type) const;
1729 inline std::string get_tuple_name(isl::dim type) const;
1730 inline isl::val get_val(int pos) const;
1731 inline isl::boolean has_tuple_id(isl::dim type) const;
1732 inline isl::multi_val insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1733 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1734 inline isl::boolean involves_nan() const;
1735 inline isl::multi_val mod_multi_val(isl::multi_val mv) const;
1736 inline isl::multi_val mod_val(isl::val v) const;
1737 inline isl::multi_val neg() const;
1738 inline isl::boolean plain_is_equal(const isl::multi_val &multi2) const;
1739 inline isl::multi_val product(isl::multi_val multi2) const;
1740 inline isl::multi_val range_factor_domain() const;
1741 inline isl::multi_val range_factor_range() const;
1742 inline isl::boolean range_is_wrapping() const;
1743 inline isl::multi_val range_product(isl::multi_val multi2) const;
1744 inline isl::multi_val range_splice(unsigned int pos, isl::multi_val multi2) const;
1745 inline isl::multi_val reset_tuple_id(isl::dim type) const;
1746 inline isl::multi_val reset_user() const;
1747 inline isl::multi_val scale_down_multi_val(isl::multi_val mv) const;
1748 inline isl::multi_val scale_down_val(isl::val v) const;
1749 inline isl::multi_val scale_multi_val(isl::multi_val mv) const;
1750 inline isl::multi_val scale_val(isl::val v) const;
1751 inline isl::multi_val set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1752 inline isl::multi_val set_tuple_id(isl::dim type, isl::id id) const;
1753 inline isl::multi_val set_tuple_name(isl::dim type, const std::string &s) const;
1754 inline isl::multi_val set_val(int pos, isl::val el) const;
1755 inline isl::multi_val splice(unsigned int in_pos, unsigned int out_pos, isl::multi_val multi2) const;
1756 inline isl::multi_val sub(isl::multi_val multi2) const;
1757 static inline isl::multi_val zero(isl::space space);
1760 // declarations for isl::point
1761 inline isl::point manage(__isl_take isl_point *ptr);
1762 inline isl::point manage_copy(__isl_keep isl_point *ptr);
1763 inline isl::point give(__isl_take isl_point *ptr);
1766 class point {
1767 friend inline isl::point manage(__isl_take isl_point *ptr);
1768 friend inline isl::point manage_copy(__isl_keep isl_point *ptr);
1770 isl_point *ptr = nullptr;
1772 inline explicit point(__isl_take isl_point *ptr);
1774 public:
1775 inline /* implicit */ point();
1776 inline /* implicit */ point(const isl::point &obj);
1777 inline /* implicit */ point(std::nullptr_t);
1778 inline explicit point(isl::space dim);
1779 inline isl::point &operator=(isl::point obj);
1780 inline ~point();
1781 inline __isl_give isl_point *copy() const &;
1782 inline __isl_give isl_point *copy() && = delete;
1783 inline __isl_keep isl_point *get() const;
1784 inline __isl_give isl_point *release();
1785 inline bool is_null() const;
1786 inline __isl_keep isl_point *keep() const;
1787 inline __isl_give isl_point *take();
1788 inline explicit operator bool() const;
1789 inline isl::ctx get_ctx() const;
1790 inline std::string to_str() const;
1791 inline void dump() const;
1793 inline isl::point add_ui(isl::dim type, int pos, unsigned int val) const;
1794 inline isl::val get_coordinate_val(isl::dim type, int pos) const;
1795 inline isl::space get_space() const;
1796 inline isl::point set_coordinate_val(isl::dim type, int pos, isl::val v) const;
1797 inline isl::point sub_ui(isl::dim type, int pos, unsigned int val) const;
1800 // declarations for isl::pw_aff
1801 inline isl::pw_aff manage(__isl_take isl_pw_aff *ptr);
1802 inline isl::pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1803 inline isl::pw_aff give(__isl_take isl_pw_aff *ptr);
1806 class pw_aff {
1807 friend inline isl::pw_aff manage(__isl_take isl_pw_aff *ptr);
1808 friend inline isl::pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
1810 isl_pw_aff *ptr = nullptr;
1812 inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
1814 public:
1815 inline /* implicit */ pw_aff();
1816 inline /* implicit */ pw_aff(const isl::pw_aff &obj);
1817 inline /* implicit */ pw_aff(std::nullptr_t);
1818 inline /* implicit */ pw_aff(isl::aff aff);
1819 inline explicit pw_aff(isl::local_space ls);
1820 inline explicit pw_aff(isl::set domain, isl::val v);
1821 inline explicit pw_aff(isl::ctx ctx, const std::string &str);
1822 inline isl::pw_aff &operator=(isl::pw_aff obj);
1823 inline ~pw_aff();
1824 inline __isl_give isl_pw_aff *copy() const &;
1825 inline __isl_give isl_pw_aff *copy() && = delete;
1826 inline __isl_keep isl_pw_aff *get() const;
1827 inline __isl_give isl_pw_aff *release();
1828 inline bool is_null() const;
1829 inline __isl_keep isl_pw_aff *keep() const;
1830 inline __isl_give isl_pw_aff *take();
1831 inline explicit operator bool() const;
1832 inline isl::ctx get_ctx() const;
1833 inline std::string to_str() const;
1834 inline void dump() const;
1836 inline isl::pw_aff add(isl::pw_aff pwaff2) const;
1837 inline isl::pw_aff add_dims(isl::dim type, unsigned int n) const;
1838 inline isl::pw_aff align_params(isl::space model) const;
1839 static inline isl::pw_aff alloc(isl::set set, isl::aff aff);
1840 inline isl::pw_aff ceil() const;
1841 inline isl::pw_aff coalesce() const;
1842 inline isl::pw_aff cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const;
1843 inline unsigned int dim(isl::dim type) const;
1844 inline isl::pw_aff div(isl::pw_aff pa2) const;
1845 inline isl::set domain() const;
1846 inline isl::pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1847 static inline isl::pw_aff empty(isl::space dim);
1848 inline isl::map eq_map(isl::pw_aff pa2) const;
1849 inline isl::set eq_set(isl::pw_aff pwaff2) const;
1850 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1851 inline isl::pw_aff floor() const;
1852 inline isl::stat foreach_piece(const std::function<isl::stat(isl::set, isl::aff)> &fn) const;
1853 inline isl::pw_aff from_range() const;
1854 inline isl::set ge_set(isl::pw_aff pwaff2) const;
1855 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1856 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1857 inline isl::space get_domain_space() const;
1858 inline uint32_t get_hash() const;
1859 inline isl::space get_space() const;
1860 inline isl::id get_tuple_id(isl::dim type) const;
1861 inline isl::pw_aff gist(isl::set context) const;
1862 inline isl::pw_aff gist_params(isl::set context) const;
1863 inline isl::map gt_map(isl::pw_aff pa2) const;
1864 inline isl::set gt_set(isl::pw_aff pwaff2) const;
1865 inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
1866 inline isl::boolean has_tuple_id(isl::dim type) const;
1867 inline isl::pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1868 inline isl::pw_aff intersect_domain(isl::set set) const;
1869 inline isl::pw_aff intersect_params(isl::set set) const;
1870 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1871 inline isl::boolean involves_nan() const;
1872 inline isl::boolean is_cst() const;
1873 inline isl::boolean is_empty() const;
1874 inline isl::boolean is_equal(const isl::pw_aff &pa2) const;
1875 inline isl::set le_set(isl::pw_aff pwaff2) const;
1876 inline isl::map lt_map(isl::pw_aff pa2) const;
1877 inline isl::set lt_set(isl::pw_aff pwaff2) const;
1878 inline isl::pw_aff max(isl::pw_aff pwaff2) const;
1879 inline isl::pw_aff min(isl::pw_aff pwaff2) const;
1880 inline isl::pw_aff mod(isl::val mod) const;
1881 inline isl::pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1882 inline isl::pw_aff mul(isl::pw_aff pwaff2) const;
1883 static inline isl::pw_aff nan_on_domain(isl::local_space ls);
1884 inline isl::set ne_set(isl::pw_aff pwaff2) const;
1885 inline isl::pw_aff neg() const;
1886 inline isl::set non_zero_set() const;
1887 inline isl::set nonneg_set() const;
1888 inline isl::set params() const;
1889 inline int plain_cmp(const isl::pw_aff &pa2) const;
1890 inline isl::boolean plain_is_equal(const isl::pw_aff &pwaff2) const;
1891 inline isl::set pos_set() const;
1892 inline isl::pw_aff project_domain_on_params() const;
1893 inline isl::pw_aff pullback(isl::multi_aff ma) const;
1894 inline isl::pw_aff pullback(isl::pw_multi_aff pma) const;
1895 inline isl::pw_aff pullback(isl::multi_pw_aff mpa) const;
1896 inline isl::pw_aff reset_tuple_id(isl::dim type) const;
1897 inline isl::pw_aff reset_user() const;
1898 inline isl::pw_aff scale(isl::val v) const;
1899 inline isl::pw_aff scale_down(isl::val f) const;
1900 inline isl::pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1901 inline isl::pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1902 inline isl::pw_aff sub(isl::pw_aff pwaff2) const;
1903 inline isl::pw_aff subtract_domain(isl::set set) const;
1904 inline isl::pw_aff tdiv_q(isl::pw_aff pa2) const;
1905 inline isl::pw_aff tdiv_r(isl::pw_aff pa2) const;
1906 inline isl::pw_aff union_add(isl::pw_aff pwaff2) const;
1907 inline isl::pw_aff union_max(isl::pw_aff pwaff2) const;
1908 inline isl::pw_aff union_min(isl::pw_aff pwaff2) const;
1909 static inline isl::pw_aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
1910 inline isl::set zero_set() const;
1913 // declarations for isl::pw_aff_list
1914 inline isl::pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
1915 inline isl::pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
1916 inline isl::pw_aff_list give(__isl_take isl_pw_aff_list *ptr);
1919 class pw_aff_list {
1920 friend inline isl::pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
1921 friend inline isl::pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
1923 isl_pw_aff_list *ptr = nullptr;
1925 inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
1927 public:
1928 inline /* implicit */ pw_aff_list();
1929 inline /* implicit */ pw_aff_list(const isl::pw_aff_list &obj);
1930 inline /* implicit */ pw_aff_list(std::nullptr_t);
1931 inline isl::pw_aff_list &operator=(isl::pw_aff_list obj);
1932 inline ~pw_aff_list();
1933 inline __isl_give isl_pw_aff_list *copy() const &;
1934 inline __isl_give isl_pw_aff_list *copy() && = delete;
1935 inline __isl_keep isl_pw_aff_list *get() const;
1936 inline __isl_give isl_pw_aff_list *release();
1937 inline bool is_null() const;
1938 inline __isl_keep isl_pw_aff_list *keep() const;
1939 inline __isl_give isl_pw_aff_list *take();
1940 inline explicit operator bool() const;
1941 inline isl::ctx get_ctx() const;
1942 inline void dump() const;
1946 // declarations for isl::pw_multi_aff
1947 inline isl::pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
1948 inline isl::pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
1949 inline isl::pw_multi_aff give(__isl_take isl_pw_multi_aff *ptr);
1952 class pw_multi_aff {
1953 friend inline isl::pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
1954 friend inline isl::pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
1956 isl_pw_multi_aff *ptr = nullptr;
1958 inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
1960 public:
1961 inline /* implicit */ pw_multi_aff();
1962 inline /* implicit */ pw_multi_aff(const isl::pw_multi_aff &obj);
1963 inline /* implicit */ pw_multi_aff(std::nullptr_t);
1964 inline /* implicit */ pw_multi_aff(isl::multi_aff ma);
1965 inline /* implicit */ pw_multi_aff(isl::pw_aff pa);
1966 inline explicit pw_multi_aff(isl::ctx ctx, const std::string &str);
1967 inline isl::pw_multi_aff &operator=(isl::pw_multi_aff obj);
1968 inline ~pw_multi_aff();
1969 inline __isl_give isl_pw_multi_aff *copy() const &;
1970 inline __isl_give isl_pw_multi_aff *copy() && = delete;
1971 inline __isl_keep isl_pw_multi_aff *get() const;
1972 inline __isl_give isl_pw_multi_aff *release();
1973 inline bool is_null() const;
1974 inline __isl_keep isl_pw_multi_aff *keep() const;
1975 inline __isl_give isl_pw_multi_aff *take();
1976 inline explicit operator bool() const;
1977 inline isl::ctx get_ctx() const;
1978 inline std::string to_str() const;
1979 inline void dump() const;
1981 inline isl::pw_multi_aff add(isl::pw_multi_aff pma2) const;
1982 inline isl::pw_multi_aff align_params(isl::space model) const;
1983 static inline isl::pw_multi_aff alloc(isl::set set, isl::multi_aff maff);
1984 inline isl::pw_multi_aff coalesce() const;
1985 inline unsigned int dim(isl::dim type) const;
1986 inline isl::set domain() const;
1987 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1988 static inline isl::pw_multi_aff empty(isl::space space);
1989 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1990 inline isl::pw_multi_aff fix_si(isl::dim type, unsigned int pos, int value) const;
1991 inline isl::pw_multi_aff flat_range_product(isl::pw_multi_aff pma2) const;
1992 inline isl::stat foreach_piece(const std::function<isl::stat(isl::set, isl::multi_aff)> &fn) const;
1993 static inline isl::pw_multi_aff from_domain(isl::set set);
1994 static inline isl::pw_multi_aff from_map(isl::map map);
1995 static inline isl::pw_multi_aff from_multi_pw_aff(isl::multi_pw_aff mpa);
1996 static inline isl::pw_multi_aff from_set(isl::set set);
1997 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1998 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1999 inline isl::space get_domain_space() const;
2000 inline isl::pw_aff get_pw_aff(int pos) const;
2001 inline isl::space get_space() const;
2002 inline isl::id get_tuple_id(isl::dim type) const;
2003 inline std::string get_tuple_name(isl::dim type) const;
2004 inline isl::pw_multi_aff gist(isl::set set) const;
2005 inline isl::pw_multi_aff gist_params(isl::set set) const;
2006 inline isl::boolean has_tuple_id(isl::dim type) const;
2007 inline isl::boolean has_tuple_name(isl::dim type) const;
2008 static inline isl::pw_multi_aff identity(isl::space space);
2009 inline isl::pw_multi_aff intersect_domain(isl::set set) const;
2010 inline isl::pw_multi_aff intersect_params(isl::set set) const;
2011 inline isl::boolean involves_nan() const;
2012 inline isl::boolean is_equal(const isl::pw_multi_aff &pma2) const;
2013 static inline isl::pw_multi_aff multi_val_on_domain(isl::set domain, isl::multi_val mv);
2014 inline isl::pw_multi_aff neg() const;
2015 inline isl::boolean plain_is_equal(const isl::pw_multi_aff &pma2) const;
2016 inline isl::pw_multi_aff product(isl::pw_multi_aff pma2) const;
2017 inline isl::pw_multi_aff project_domain_on_params() const;
2018 static inline isl::pw_multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
2019 inline isl::pw_multi_aff pullback(isl::multi_aff ma) const;
2020 inline isl::pw_multi_aff pullback(isl::pw_multi_aff pma2) const;
2021 static inline isl::pw_multi_aff range_map(isl::space space);
2022 inline isl::pw_multi_aff range_product(isl::pw_multi_aff pma2) const;
2023 inline isl::pw_multi_aff reset_tuple_id(isl::dim type) const;
2024 inline isl::pw_multi_aff reset_user() const;
2025 inline isl::pw_multi_aff scale_down_val(isl::val v) const;
2026 inline isl::pw_multi_aff scale_multi_val(isl::multi_val mv) const;
2027 inline isl::pw_multi_aff scale_val(isl::val v) const;
2028 inline isl::pw_multi_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2029 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, isl::pw_aff pa) const;
2030 inline isl::pw_multi_aff set_tuple_id(isl::dim type, isl::id id) const;
2031 inline isl::pw_multi_aff sub(isl::pw_multi_aff pma2) const;
2032 inline isl::pw_multi_aff subtract_domain(isl::set set) const;
2033 inline isl::pw_multi_aff union_add(isl::pw_multi_aff pma2) const;
2034 inline isl::pw_multi_aff union_lexmax(isl::pw_multi_aff pma2) const;
2035 inline isl::pw_multi_aff union_lexmin(isl::pw_multi_aff pma2) const;
2036 static inline isl::pw_multi_aff zero(isl::space space);
2039 // declarations for isl::pw_qpolynomial
2040 inline isl::pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2041 inline isl::pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2042 inline isl::pw_qpolynomial give(__isl_take isl_pw_qpolynomial *ptr);
2045 class pw_qpolynomial {
2046 friend inline isl::pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2047 friend inline isl::pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2049 isl_pw_qpolynomial *ptr = nullptr;
2051 inline explicit pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr);
2053 public:
2054 inline /* implicit */ pw_qpolynomial();
2055 inline /* implicit */ pw_qpolynomial(const isl::pw_qpolynomial &obj);
2056 inline /* implicit */ pw_qpolynomial(std::nullptr_t);
2057 inline explicit pw_qpolynomial(isl::ctx ctx, const std::string &str);
2058 inline isl::pw_qpolynomial &operator=(isl::pw_qpolynomial obj);
2059 inline ~pw_qpolynomial();
2060 inline __isl_give isl_pw_qpolynomial *copy() const &;
2061 inline __isl_give isl_pw_qpolynomial *copy() && = delete;
2062 inline __isl_keep isl_pw_qpolynomial *get() const;
2063 inline __isl_give isl_pw_qpolynomial *release();
2064 inline bool is_null() const;
2065 inline __isl_keep isl_pw_qpolynomial *keep() const;
2066 inline __isl_give isl_pw_qpolynomial *take();
2067 inline explicit operator bool() const;
2068 inline isl::ctx get_ctx() const;
2069 inline std::string to_str() const;
2070 inline void dump() const;
2072 inline isl::pw_qpolynomial add(isl::pw_qpolynomial pwqp2) const;
2073 inline isl::pw_qpolynomial add_dims(isl::dim type, unsigned int n) const;
2074 static inline isl::pw_qpolynomial alloc(isl::set set, isl::qpolynomial qp);
2075 inline isl::pw_qpolynomial coalesce() const;
2076 inline unsigned int dim(isl::dim type) const;
2077 inline isl::set domain() const;
2078 inline isl::pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2079 inline isl::val eval(isl::point pnt) const;
2080 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2081 inline isl::pw_qpolynomial fix_val(isl::dim type, unsigned int n, isl::val v) const;
2082 inline isl::stat foreach_piece(const std::function<isl::stat(isl::set, isl::qpolynomial)> &fn) const;
2083 static inline isl::pw_qpolynomial from_pw_aff(isl::pw_aff pwaff);
2084 static inline isl::pw_qpolynomial from_qpolynomial(isl::qpolynomial qp);
2085 inline isl::pw_qpolynomial from_range() const;
2086 inline isl::space get_domain_space() const;
2087 inline isl::space get_space() const;
2088 inline isl::pw_qpolynomial gist(isl::set context) const;
2089 inline isl::pw_qpolynomial gist_params(isl::set context) const;
2090 inline isl::boolean has_equal_space(const isl::pw_qpolynomial &pwqp2) const;
2091 inline isl::pw_qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2092 inline isl::pw_qpolynomial intersect_domain(isl::set set) const;
2093 inline isl::pw_qpolynomial intersect_params(isl::set set) const;
2094 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2095 inline isl::boolean involves_nan() const;
2096 inline isl::boolean is_zero() const;
2097 inline isl::val max() const;
2098 inline isl::val min() const;
2099 inline isl::pw_qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2100 inline isl::pw_qpolynomial mul(isl::pw_qpolynomial pwqp2) const;
2101 inline isl::pw_qpolynomial neg() const;
2102 inline isl::boolean plain_is_equal(const isl::pw_qpolynomial &pwqp2) const;
2103 inline isl::pw_qpolynomial pow(unsigned int exponent) const;
2104 inline isl::pw_qpolynomial project_domain_on_params() const;
2105 inline isl::pw_qpolynomial reset_domain_space(isl::space dim) const;
2106 inline isl::pw_qpolynomial reset_user() const;
2107 inline isl::pw_qpolynomial scale_down_val(isl::val v) const;
2108 inline isl::pw_qpolynomial scale_val(isl::val v) const;
2109 inline isl::pw_qpolynomial split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2110 inline isl::pw_qpolynomial split_periods(int max_periods) const;
2111 inline isl::pw_qpolynomial sub(isl::pw_qpolynomial pwqp2) const;
2112 inline isl::pw_qpolynomial subtract_domain(isl::set set) const;
2113 inline isl::pw_qpolynomial to_polynomial(int sign) const;
2114 static inline isl::pw_qpolynomial zero(isl::space dim);
2117 // declarations for isl::qpolynomial
2118 inline isl::qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2119 inline isl::qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2120 inline isl::qpolynomial give(__isl_take isl_qpolynomial *ptr);
2123 class qpolynomial {
2124 friend inline isl::qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2125 friend inline isl::qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2127 isl_qpolynomial *ptr = nullptr;
2129 inline explicit qpolynomial(__isl_take isl_qpolynomial *ptr);
2131 public:
2132 inline /* implicit */ qpolynomial();
2133 inline /* implicit */ qpolynomial(const isl::qpolynomial &obj);
2134 inline /* implicit */ qpolynomial(std::nullptr_t);
2135 inline isl::qpolynomial &operator=(isl::qpolynomial obj);
2136 inline ~qpolynomial();
2137 inline __isl_give isl_qpolynomial *copy() const &;
2138 inline __isl_give isl_qpolynomial *copy() && = delete;
2139 inline __isl_keep isl_qpolynomial *get() const;
2140 inline __isl_give isl_qpolynomial *release();
2141 inline bool is_null() const;
2142 inline __isl_keep isl_qpolynomial *keep() const;
2143 inline __isl_give isl_qpolynomial *take();
2144 inline explicit operator bool() const;
2145 inline isl::ctx get_ctx() const;
2146 inline void dump() const;
2148 inline isl::qpolynomial add(isl::qpolynomial qp2) const;
2149 inline isl::qpolynomial add_dims(isl::dim type, unsigned int n) const;
2150 inline isl::qpolynomial align_params(isl::space model) const;
2151 inline isl::stat as_polynomial_on_domain(const isl::basic_set &bset, const std::function<isl::stat(isl::basic_set, isl::qpolynomial)> &fn) const;
2152 inline unsigned int dim(isl::dim type) const;
2153 inline isl::qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2154 inline isl::val eval(isl::point pnt) const;
2155 inline isl::stat foreach_term(const std::function<isl::stat(isl::term)> &fn) const;
2156 static inline isl::qpolynomial from_aff(isl::aff aff);
2157 static inline isl::qpolynomial from_constraint(isl::constraint c, isl::dim type, unsigned int pos);
2158 static inline isl::qpolynomial from_term(isl::term term);
2159 inline isl::val get_constant_val() const;
2160 inline isl::space get_domain_space() const;
2161 inline isl::space get_space() const;
2162 inline isl::qpolynomial gist(isl::set context) const;
2163 inline isl::qpolynomial gist_params(isl::set context) const;
2164 inline isl::qpolynomial homogenize() const;
2165 static inline isl::qpolynomial infty_on_domain(isl::space dim);
2166 inline isl::qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2167 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2168 inline isl::boolean is_infty() const;
2169 inline isl::boolean is_nan() const;
2170 inline isl::boolean is_neginfty() const;
2171 inline isl::boolean is_zero() const;
2172 inline isl::qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2173 inline isl::qpolynomial mul(isl::qpolynomial qp2) const;
2174 static inline isl::qpolynomial nan_on_domain(isl::space dim);
2175 inline isl::qpolynomial neg() const;
2176 static inline isl::qpolynomial neginfty_on_domain(isl::space dim);
2177 static inline isl::qpolynomial one_on_domain(isl::space dim);
2178 inline isl::boolean plain_is_equal(const isl::qpolynomial &qp2) const;
2179 inline isl::qpolynomial pow(unsigned int power) const;
2180 inline isl::qpolynomial project_domain_on_params() const;
2181 inline isl::qpolynomial scale_down_val(isl::val v) const;
2182 inline isl::qpolynomial scale_val(isl::val v) const;
2183 inline int sgn() const;
2184 inline isl::qpolynomial sub(isl::qpolynomial qp2) const;
2185 static inline isl::qpolynomial val_on_domain(isl::space space, isl::val val);
2186 static inline isl::qpolynomial var_on_domain(isl::space dim, isl::dim type, unsigned int pos);
2187 static inline isl::qpolynomial zero_on_domain(isl::space dim);
2190 // declarations for isl::schedule
2191 inline isl::schedule manage(__isl_take isl_schedule *ptr);
2192 inline isl::schedule manage_copy(__isl_keep isl_schedule *ptr);
2193 inline isl::schedule give(__isl_take isl_schedule *ptr);
2196 class schedule {
2197 friend inline isl::schedule manage(__isl_take isl_schedule *ptr);
2198 friend inline isl::schedule manage_copy(__isl_keep isl_schedule *ptr);
2200 isl_schedule *ptr = nullptr;
2202 inline explicit schedule(__isl_take isl_schedule *ptr);
2204 public:
2205 inline /* implicit */ schedule();
2206 inline /* implicit */ schedule(const isl::schedule &obj);
2207 inline /* implicit */ schedule(std::nullptr_t);
2208 inline explicit schedule(isl::ctx ctx, const std::string &str);
2209 inline isl::schedule &operator=(isl::schedule obj);
2210 inline ~schedule();
2211 inline __isl_give isl_schedule *copy() const &;
2212 inline __isl_give isl_schedule *copy() && = delete;
2213 inline __isl_keep isl_schedule *get() const;
2214 inline __isl_give isl_schedule *release();
2215 inline bool is_null() const;
2216 inline __isl_keep isl_schedule *keep() const;
2217 inline __isl_give isl_schedule *take();
2218 inline explicit operator bool() const;
2219 inline isl::ctx get_ctx() const;
2220 inline std::string to_str() const;
2221 inline void dump() const;
2223 inline isl::schedule align_params(isl::space space) const;
2224 static inline isl::schedule empty(isl::space space);
2225 static inline isl::schedule from_domain(isl::union_set domain);
2226 inline isl::union_set get_domain() const;
2227 inline isl::union_map get_map() const;
2228 inline isl::schedule_node get_root() const;
2229 inline isl::schedule gist_domain_params(isl::set context) const;
2230 inline isl::schedule insert_context(isl::set context) const;
2231 inline isl::schedule insert_guard(isl::set guard) const;
2232 inline isl::schedule insert_partial_schedule(isl::multi_union_pw_aff partial) const;
2233 inline isl::schedule intersect_domain(isl::union_set domain) const;
2234 inline isl::boolean plain_is_equal(const isl::schedule &schedule2) const;
2235 inline isl::schedule pullback(isl::union_pw_multi_aff upma) const;
2236 inline isl::schedule reset_user() const;
2237 inline isl::schedule sequence(isl::schedule schedule2) const;
2238 inline isl::schedule set(isl::schedule schedule2) const;
2241 // declarations for isl::schedule_constraints
2242 inline isl::schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2243 inline isl::schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2244 inline isl::schedule_constraints give(__isl_take isl_schedule_constraints *ptr);
2247 class schedule_constraints {
2248 friend inline isl::schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2249 friend inline isl::schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2251 isl_schedule_constraints *ptr = nullptr;
2253 inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
2255 public:
2256 inline /* implicit */ schedule_constraints();
2257 inline /* implicit */ schedule_constraints(const isl::schedule_constraints &obj);
2258 inline /* implicit */ schedule_constraints(std::nullptr_t);
2259 inline explicit schedule_constraints(isl::ctx ctx, const std::string &str);
2260 inline isl::schedule_constraints &operator=(isl::schedule_constraints obj);
2261 inline ~schedule_constraints();
2262 inline __isl_give isl_schedule_constraints *copy() const &;
2263 inline __isl_give isl_schedule_constraints *copy() && = delete;
2264 inline __isl_keep isl_schedule_constraints *get() const;
2265 inline __isl_give isl_schedule_constraints *release();
2266 inline bool is_null() const;
2267 inline __isl_keep isl_schedule_constraints *keep() const;
2268 inline __isl_give isl_schedule_constraints *take();
2269 inline explicit operator bool() const;
2270 inline isl::ctx get_ctx() const;
2271 inline std::string to_str() const;
2272 inline void dump() const;
2274 inline isl::schedule_constraints apply(isl::union_map umap) const;
2275 inline isl::schedule compute_schedule() const;
2276 inline isl::union_map get_coincidence() const;
2277 inline isl::union_map get_conditional_validity() const;
2278 inline isl::union_map get_conditional_validity_condition() const;
2279 inline isl::set get_context() const;
2280 inline isl::union_set get_domain() const;
2281 inline isl::union_map get_proximity() const;
2282 inline isl::union_map get_validity() const;
2283 static inline isl::schedule_constraints on_domain(isl::union_set domain);
2284 inline isl::schedule_constraints set_coincidence(isl::union_map coincidence) const;
2285 inline isl::schedule_constraints set_conditional_validity(isl::union_map condition, isl::union_map validity) const;
2286 inline isl::schedule_constraints set_context(isl::set context) const;
2287 inline isl::schedule_constraints set_proximity(isl::union_map proximity) const;
2288 inline isl::schedule_constraints set_validity(isl::union_map validity) const;
2291 // declarations for isl::schedule_node
2292 inline isl::schedule_node manage(__isl_take isl_schedule_node *ptr);
2293 inline isl::schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2294 inline isl::schedule_node give(__isl_take isl_schedule_node *ptr);
2297 class schedule_node {
2298 friend inline isl::schedule_node manage(__isl_take isl_schedule_node *ptr);
2299 friend inline isl::schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2301 isl_schedule_node *ptr = nullptr;
2303 inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
2305 public:
2306 inline /* implicit */ schedule_node();
2307 inline /* implicit */ schedule_node(const isl::schedule_node &obj);
2308 inline /* implicit */ schedule_node(std::nullptr_t);
2309 inline isl::schedule_node &operator=(isl::schedule_node obj);
2310 inline ~schedule_node();
2311 inline __isl_give isl_schedule_node *copy() const &;
2312 inline __isl_give isl_schedule_node *copy() && = delete;
2313 inline __isl_keep isl_schedule_node *get() const;
2314 inline __isl_give isl_schedule_node *release();
2315 inline bool is_null() const;
2316 inline __isl_keep isl_schedule_node *keep() const;
2317 inline __isl_give isl_schedule_node *take();
2318 inline explicit operator bool() const;
2319 inline isl::ctx get_ctx() const;
2320 inline std::string to_str() const;
2321 inline void dump() const;
2323 inline isl::schedule_node align_params(isl::space space) const;
2324 inline isl::schedule_node ancestor(int generation) const;
2325 inline isl::boolean band_member_get_coincident(int pos) const;
2326 inline isl::schedule_node band_member_set_coincident(int pos, int coincident) const;
2327 inline isl::schedule_node band_set_ast_build_options(isl::union_set options) const;
2328 inline isl::schedule_node child(int pos) const;
2329 inline isl::set context_get_context() const;
2330 inline isl::schedule_node cut() const;
2331 inline isl::union_set domain_get_domain() const;
2332 inline isl::union_pw_multi_aff expansion_get_contraction() const;
2333 inline isl::union_map expansion_get_expansion() const;
2334 inline isl::union_map extension_get_extension() const;
2335 inline isl::union_set filter_get_filter() const;
2336 inline isl::schedule_node first_child() const;
2337 inline isl::stat foreach_ancestor_top_down(const std::function<isl::stat(isl::schedule_node)> &fn) const;
2338 static inline isl::schedule_node from_domain(isl::union_set domain);
2339 static inline isl::schedule_node from_extension(isl::union_map extension);
2340 inline int get_ancestor_child_position(const isl::schedule_node &ancestor) const;
2341 inline isl::schedule_node get_child(int pos) const;
2342 inline int get_child_position() const;
2343 inline isl::union_set get_domain() const;
2344 inline isl::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
2345 inline isl::union_map get_prefix_schedule_relation() const;
2346 inline isl::union_map get_prefix_schedule_union_map() const;
2347 inline isl::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
2348 inline isl::schedule get_schedule() const;
2349 inline int get_schedule_depth() const;
2350 inline isl::schedule_node get_shared_ancestor(const isl::schedule_node &node2) const;
2351 inline isl::union_pw_multi_aff get_subtree_contraction() const;
2352 inline isl::union_map get_subtree_expansion() const;
2353 inline isl::union_map get_subtree_schedule_union_map() const;
2354 inline int get_tree_depth() const;
2355 inline isl::union_set get_universe_domain() const;
2356 inline isl::schedule_node graft_after(isl::schedule_node graft) const;
2357 inline isl::schedule_node graft_before(isl::schedule_node graft) const;
2358 inline isl::schedule_node group(isl::id group_id) const;
2359 inline isl::set guard_get_guard() const;
2360 inline isl::boolean has_children() const;
2361 inline isl::boolean has_next_sibling() const;
2362 inline isl::boolean has_parent() const;
2363 inline isl::boolean has_previous_sibling() const;
2364 inline isl::schedule_node insert_context(isl::set context) const;
2365 inline isl::schedule_node insert_filter(isl::union_set filter) const;
2366 inline isl::schedule_node insert_guard(isl::set context) const;
2367 inline isl::schedule_node insert_mark(isl::id mark) const;
2368 inline isl::schedule_node insert_partial_schedule(isl::multi_union_pw_aff schedule) const;
2369 inline isl::schedule_node insert_sequence(isl::union_set_list filters) const;
2370 inline isl::schedule_node insert_set(isl::union_set_list filters) const;
2371 inline isl::boolean is_equal(const isl::schedule_node &node2) const;
2372 inline isl::boolean is_subtree_anchored() const;
2373 inline isl::id mark_get_id() const;
2374 inline isl::schedule_node next_sibling() const;
2375 inline isl::schedule_node order_after(isl::union_set filter) const;
2376 inline isl::schedule_node order_before(isl::union_set filter) const;
2377 inline isl::schedule_node parent() const;
2378 inline isl::schedule_node previous_sibling() const;
2379 inline isl::schedule_node reset_user() const;
2380 inline isl::schedule_node root() const;
2381 inline isl::schedule_node sequence_splice_child(int pos) const;
2384 // declarations for isl::set
2385 inline isl::set manage(__isl_take isl_set *ptr);
2386 inline isl::set manage_copy(__isl_keep isl_set *ptr);
2387 inline isl::set give(__isl_take isl_set *ptr);
2390 class set {
2391 friend inline isl::set manage(__isl_take isl_set *ptr);
2392 friend inline isl::set manage_copy(__isl_keep isl_set *ptr);
2394 isl_set *ptr = nullptr;
2396 inline explicit set(__isl_take isl_set *ptr);
2398 public:
2399 inline /* implicit */ set();
2400 inline /* implicit */ set(const isl::set &obj);
2401 inline /* implicit */ set(std::nullptr_t);
2402 inline explicit set(isl::ctx ctx, const std::string &str);
2403 inline /* implicit */ set(isl::basic_set bset);
2404 inline /* implicit */ set(isl::point pnt);
2405 inline explicit set(isl::union_set uset);
2406 inline isl::set &operator=(isl::set obj);
2407 inline ~set();
2408 inline __isl_give isl_set *copy() const &;
2409 inline __isl_give isl_set *copy() && = delete;
2410 inline __isl_keep isl_set *get() const;
2411 inline __isl_give isl_set *release();
2412 inline bool is_null() const;
2413 inline __isl_keep isl_set *keep() const;
2414 inline __isl_give isl_set *take();
2415 inline explicit operator bool() const;
2416 inline isl::ctx get_ctx() const;
2417 inline std::string to_str() const;
2418 inline void dump() const;
2420 inline isl::set add_constraint(isl::constraint constraint) const;
2421 inline isl::set add_dims(isl::dim type, unsigned int n) const;
2422 inline isl::basic_set affine_hull() const;
2423 inline isl::set align_params(isl::space model) const;
2424 inline isl::set apply(isl::map map) const;
2425 inline isl::basic_set bounded_simple_hull() const;
2426 static inline isl::set box_from_points(isl::point pnt1, isl::point pnt2);
2427 inline isl::set coalesce() const;
2428 inline isl::basic_set coefficients() const;
2429 inline isl::set complement() const;
2430 inline isl::basic_set convex_hull() const;
2431 inline isl::val count_val() const;
2432 inline isl::set detect_equalities() const;
2433 inline unsigned int dim(isl::dim type) const;
2434 inline isl::boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
2435 inline isl::boolean dim_has_any_upper_bound(isl::dim type, unsigned int pos) const;
2436 inline isl::boolean dim_has_lower_bound(isl::dim type, unsigned int pos) const;
2437 inline isl::boolean dim_has_upper_bound(isl::dim type, unsigned int pos) const;
2438 inline isl::boolean dim_is_bounded(isl::dim type, unsigned int pos) const;
2439 inline isl::pw_aff dim_max(int pos) const;
2440 inline isl::pw_aff dim_min(int pos) const;
2441 inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2442 inline isl::set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2443 inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
2444 static inline isl::set empty(isl::space space);
2445 inline isl::set equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2446 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
2447 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2448 inline isl::set fix_si(isl::dim type, unsigned int pos, int value) const;
2449 inline isl::set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
2450 inline isl::set flat_product(isl::set set2) const;
2451 inline isl::set flatten() const;
2452 inline isl::map flatten_map() const;
2453 inline int follows_at(const isl::set &set2, int pos) const;
2454 inline isl::stat foreach_basic_set(const std::function<isl::stat(isl::basic_set)> &fn) const;
2455 inline isl::stat foreach_point(const std::function<isl::stat(isl::point)> &fn) const;
2456 static inline isl::set from_multi_pw_aff(isl::multi_pw_aff mpa);
2457 inline isl::set from_params() const;
2458 static inline isl::set from_pw_aff(isl::pw_aff pwaff);
2459 static inline isl::set from_pw_multi_aff(isl::pw_multi_aff pma);
2460 inline isl::basic_set_list get_basic_set_list() const;
2461 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2462 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2463 inline isl::space get_space() const;
2464 inline isl::id get_tuple_id() const;
2465 inline std::string get_tuple_name() const;
2466 inline isl::set gist(isl::set context) const;
2467 inline isl::set gist_basic_set(isl::basic_set context) const;
2468 inline isl::set gist_params(isl::set context) const;
2469 inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
2470 inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
2471 inline isl::boolean has_equal_space(const isl::set &set2) const;
2472 inline isl::boolean has_tuple_id() const;
2473 inline isl::boolean has_tuple_name() const;
2474 inline isl::map identity() const;
2475 inline isl::pw_aff indicator_function() const;
2476 inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2477 inline isl::set intersect(isl::set set2) const;
2478 inline isl::set intersect_params(isl::set params) const;
2479 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2480 inline isl::boolean is_bounded() const;
2481 inline isl::boolean is_box() const;
2482 inline isl::boolean is_disjoint(const isl::set &set2) const;
2483 inline isl::boolean is_empty() const;
2484 inline isl::boolean is_equal(const isl::set &set2) const;
2485 inline isl::boolean is_params() const;
2486 inline isl::boolean is_singleton() const;
2487 inline isl::boolean is_strict_subset(const isl::set &set2) const;
2488 inline isl::boolean is_subset(const isl::set &set2) const;
2489 inline isl::boolean is_wrapping() const;
2490 inline isl::map lex_ge_set(isl::set set2) const;
2491 inline isl::map lex_gt_set(isl::set set2) const;
2492 inline isl::map lex_le_set(isl::set set2) const;
2493 inline isl::map lex_lt_set(isl::set set2) const;
2494 inline isl::set lexmax() const;
2495 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
2496 inline isl::set lexmin() const;
2497 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
2498 inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2499 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
2500 inline isl::val max_val(const isl::aff &obj) const;
2501 inline isl::val min_val(const isl::aff &obj) const;
2502 inline isl::set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2503 static inline isl::set nat_universe(isl::space dim);
2504 inline isl::set neg() const;
2505 inline isl::set params() const;
2506 inline int plain_cmp(const isl::set &set2) const;
2507 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
2508 inline isl::boolean plain_is_disjoint(const isl::set &set2) const;
2509 inline isl::boolean plain_is_empty() const;
2510 inline isl::boolean plain_is_equal(const isl::set &set2) const;
2511 inline isl::boolean plain_is_universe() const;
2512 inline isl::basic_set plain_unshifted_simple_hull() const;
2513 inline isl::basic_set polyhedral_hull() const;
2514 inline isl::set preimage_multi_aff(isl::multi_aff ma) const;
2515 inline isl::set preimage_multi_pw_aff(isl::multi_pw_aff mpa) const;
2516 inline isl::set preimage_pw_multi_aff(isl::pw_multi_aff pma) const;
2517 inline isl::set product(isl::set set2) const;
2518 inline isl::map project_onto_map(isl::dim type, unsigned int first, unsigned int n) const;
2519 inline isl::set project_out(isl::dim type, unsigned int first, unsigned int n) const;
2520 inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
2521 inline isl::set remove_divs() const;
2522 inline isl::set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2523 inline isl::set remove_redundancies() const;
2524 inline isl::set remove_unknown_divs() const;
2525 inline isl::set reset_space(isl::space dim) const;
2526 inline isl::set reset_tuple_id() const;
2527 inline isl::set reset_user() const;
2528 inline isl::basic_set sample() const;
2529 inline isl::point sample_point() const;
2530 inline isl::set set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2531 inline isl::set set_tuple_id(isl::id id) const;
2532 inline isl::set set_tuple_name(const std::string &s) const;
2533 inline isl::basic_set simple_hull() const;
2534 inline int size() const;
2535 inline isl::basic_set solutions() const;
2536 inline isl::set split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2537 inline isl::set subtract(isl::set set2) const;
2538 inline isl::set sum(isl::set set2) const;
2539 inline isl::set unite(isl::set set2) const;
2540 static inline isl::set universe(isl::space space);
2541 inline isl::basic_set unshifted_simple_hull() const;
2542 inline isl::basic_set unshifted_simple_hull_from_set_list(isl::set_list list) const;
2543 inline isl::map unwrap() const;
2544 inline isl::set upper_bound_si(isl::dim type, unsigned int pos, int value) const;
2545 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
2546 inline isl::map wrapped_domain_map() const;
2549 // declarations for isl::set_list
2550 inline isl::set_list manage(__isl_take isl_set_list *ptr);
2551 inline isl::set_list manage_copy(__isl_keep isl_set_list *ptr);
2552 inline isl::set_list give(__isl_take isl_set_list *ptr);
2555 class set_list {
2556 friend inline isl::set_list manage(__isl_take isl_set_list *ptr);
2557 friend inline isl::set_list manage_copy(__isl_keep isl_set_list *ptr);
2559 isl_set_list *ptr = nullptr;
2561 inline explicit set_list(__isl_take isl_set_list *ptr);
2563 public:
2564 inline /* implicit */ set_list();
2565 inline /* implicit */ set_list(const isl::set_list &obj);
2566 inline /* implicit */ set_list(std::nullptr_t);
2567 inline isl::set_list &operator=(isl::set_list obj);
2568 inline ~set_list();
2569 inline __isl_give isl_set_list *copy() const &;
2570 inline __isl_give isl_set_list *copy() && = delete;
2571 inline __isl_keep isl_set_list *get() const;
2572 inline __isl_give isl_set_list *release();
2573 inline bool is_null() const;
2574 inline __isl_keep isl_set_list *keep() const;
2575 inline __isl_give isl_set_list *take();
2576 inline explicit operator bool() const;
2577 inline isl::ctx get_ctx() const;
2578 inline void dump() const;
2582 // declarations for isl::space
2583 inline isl::space manage(__isl_take isl_space *ptr);
2584 inline isl::space manage_copy(__isl_keep isl_space *ptr);
2585 inline isl::space give(__isl_take isl_space *ptr);
2588 class space {
2589 friend inline isl::space manage(__isl_take isl_space *ptr);
2590 friend inline isl::space manage_copy(__isl_keep isl_space *ptr);
2592 isl_space *ptr = nullptr;
2594 inline explicit space(__isl_take isl_space *ptr);
2596 public:
2597 inline /* implicit */ space();
2598 inline /* implicit */ space(const isl::space &obj);
2599 inline /* implicit */ space(std::nullptr_t);
2600 inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out);
2601 inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int dim);
2602 inline isl::space &operator=(isl::space obj);
2603 inline ~space();
2604 inline __isl_give isl_space *copy() const &;
2605 inline __isl_give isl_space *copy() && = delete;
2606 inline __isl_keep isl_space *get() const;
2607 inline __isl_give isl_space *release();
2608 inline bool is_null() const;
2609 inline __isl_keep isl_space *keep() const;
2610 inline __isl_give isl_space *take();
2611 inline explicit operator bool() const;
2612 inline isl::ctx get_ctx() const;
2613 inline std::string to_str() const;
2614 inline void dump() const;
2616 inline isl::space add_dims(isl::dim type, unsigned int n) const;
2617 inline isl::space align_params(isl::space dim2) const;
2618 inline isl::boolean can_curry() const;
2619 inline isl::boolean can_range_curry() const;
2620 inline isl::boolean can_uncurry() const;
2621 inline isl::boolean can_zip() const;
2622 inline isl::space curry() const;
2623 inline unsigned int dim(isl::dim type) const;
2624 inline isl::space domain() const;
2625 inline isl::space domain_factor_domain() const;
2626 inline isl::space domain_factor_range() const;
2627 inline isl::boolean domain_is_wrapping() const;
2628 inline isl::space domain_map() const;
2629 inline isl::space domain_product(isl::space right) const;
2630 inline isl::space drop_dims(isl::dim type, unsigned int first, unsigned int num) const;
2631 inline isl::space factor_domain() const;
2632 inline isl::space factor_range() const;
2633 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
2634 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2635 inline isl::space from_domain() const;
2636 inline isl::space from_range() const;
2637 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2638 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2639 inline isl::id get_tuple_id(isl::dim type) const;
2640 inline std::string get_tuple_name(isl::dim type) const;
2641 inline isl::boolean has_dim_id(isl::dim type, unsigned int pos) const;
2642 inline isl::boolean has_dim_name(isl::dim type, unsigned int pos) const;
2643 inline isl::boolean has_equal_params(const isl::space &space2) const;
2644 inline isl::boolean has_equal_tuples(const isl::space &space2) const;
2645 inline isl::boolean has_tuple_id(isl::dim type) const;
2646 inline isl::boolean has_tuple_name(isl::dim type) const;
2647 inline isl::space insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2648 inline isl::boolean is_domain(const isl::space &space2) const;
2649 inline isl::boolean is_equal(const isl::space &space2) const;
2650 inline isl::boolean is_map() const;
2651 inline isl::boolean is_params() const;
2652 inline isl::boolean is_product() const;
2653 inline isl::boolean is_range(const isl::space &space2) const;
2654 inline isl::boolean is_set() const;
2655 inline isl::boolean is_wrapping() const;
2656 inline isl::space join(isl::space right) const;
2657 inline isl::space map_from_domain_and_range(isl::space range) const;
2658 inline isl::space map_from_set() const;
2659 inline isl::space move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2660 inline isl::space params() const;
2661 static inline isl::space params_alloc(isl::ctx ctx, unsigned int nparam);
2662 inline isl::space product(isl::space right) const;
2663 inline isl::space range() const;
2664 inline isl::space range_curry() const;
2665 inline isl::space range_factor_domain() const;
2666 inline isl::space range_factor_range() const;
2667 inline isl::boolean range_is_wrapping() const;
2668 inline isl::space range_map() const;
2669 inline isl::space range_product(isl::space right) const;
2670 inline isl::space reset_tuple_id(isl::dim type) const;
2671 inline isl::space reset_user() const;
2672 inline isl::space reverse() const;
2673 inline isl::space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2674 inline isl::space set_from_params() const;
2675 inline isl::space set_tuple_id(isl::dim type, isl::id id) const;
2676 inline isl::space set_tuple_name(isl::dim type, const std::string &s) const;
2677 inline isl::boolean tuple_is_equal(isl::dim type1, const isl::space &space2, isl::dim type2) const;
2678 inline isl::space uncurry() const;
2679 inline isl::space unwrap() const;
2680 inline isl::space wrap() const;
2681 inline isl::space zip() const;
2684 // declarations for isl::term
2685 inline isl::term manage(__isl_take isl_term *ptr);
2686 inline isl::term manage_copy(__isl_keep isl_term *ptr);
2687 inline isl::term give(__isl_take isl_term *ptr);
2690 class term {
2691 friend inline isl::term manage(__isl_take isl_term *ptr);
2692 friend inline isl::term manage_copy(__isl_keep isl_term *ptr);
2694 isl_term *ptr = nullptr;
2696 inline explicit term(__isl_take isl_term *ptr);
2698 public:
2699 inline /* implicit */ term();
2700 inline /* implicit */ term(const isl::term &obj);
2701 inline /* implicit */ term(std::nullptr_t);
2702 inline isl::term &operator=(isl::term obj);
2703 inline ~term();
2704 inline __isl_give isl_term *copy() const &;
2705 inline __isl_give isl_term *copy() && = delete;
2706 inline __isl_keep isl_term *get() const;
2707 inline __isl_give isl_term *release();
2708 inline bool is_null() const;
2709 inline __isl_keep isl_term *keep() const;
2710 inline __isl_give isl_term *take();
2711 inline explicit operator bool() const;
2712 inline isl::ctx get_ctx() const;
2714 inline unsigned int dim(isl::dim type) const;
2715 inline isl::val get_coefficient_val() const;
2716 inline isl::aff get_div(unsigned int pos) const;
2717 inline int get_exp(isl::dim type, unsigned int pos) const;
2720 // declarations for isl::union_access_info
2721 inline isl::union_access_info manage(__isl_take isl_union_access_info *ptr);
2722 inline isl::union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2723 inline isl::union_access_info give(__isl_take isl_union_access_info *ptr);
2726 class union_access_info {
2727 friend inline isl::union_access_info manage(__isl_take isl_union_access_info *ptr);
2728 friend inline isl::union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
2730 isl_union_access_info *ptr = nullptr;
2732 inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
2734 public:
2735 inline /* implicit */ union_access_info();
2736 inline /* implicit */ union_access_info(const isl::union_access_info &obj);
2737 inline /* implicit */ union_access_info(std::nullptr_t);
2738 inline explicit union_access_info(isl::union_map sink);
2739 inline isl::union_access_info &operator=(isl::union_access_info obj);
2740 inline ~union_access_info();
2741 inline __isl_give isl_union_access_info *copy() const &;
2742 inline __isl_give isl_union_access_info *copy() && = delete;
2743 inline __isl_keep isl_union_access_info *get() const;
2744 inline __isl_give isl_union_access_info *release();
2745 inline bool is_null() const;
2746 inline __isl_keep isl_union_access_info *keep() const;
2747 inline __isl_give isl_union_access_info *take();
2748 inline explicit operator bool() const;
2749 inline isl::ctx get_ctx() const;
2750 inline std::string to_str() const;
2752 inline isl::union_flow compute_flow() const;
2753 inline isl::union_access_info set_kill(isl::union_map kill) const;
2754 inline isl::union_access_info set_may_source(isl::union_map may_source) const;
2755 inline isl::union_access_info set_must_source(isl::union_map must_source) const;
2756 inline isl::union_access_info set_schedule(isl::schedule schedule) const;
2757 inline isl::union_access_info set_schedule_map(isl::union_map schedule_map) const;
2760 // declarations for isl::union_flow
2761 inline isl::union_flow manage(__isl_take isl_union_flow *ptr);
2762 inline isl::union_flow manage_copy(__isl_keep isl_union_flow *ptr);
2763 inline isl::union_flow give(__isl_take isl_union_flow *ptr);
2766 class union_flow {
2767 friend inline isl::union_flow manage(__isl_take isl_union_flow *ptr);
2768 friend inline isl::union_flow manage_copy(__isl_keep isl_union_flow *ptr);
2770 isl_union_flow *ptr = nullptr;
2772 inline explicit union_flow(__isl_take isl_union_flow *ptr);
2774 public:
2775 inline /* implicit */ union_flow();
2776 inline /* implicit */ union_flow(const isl::union_flow &obj);
2777 inline /* implicit */ union_flow(std::nullptr_t);
2778 inline isl::union_flow &operator=(isl::union_flow obj);
2779 inline ~union_flow();
2780 inline __isl_give isl_union_flow *copy() const &;
2781 inline __isl_give isl_union_flow *copy() && = delete;
2782 inline __isl_keep isl_union_flow *get() const;
2783 inline __isl_give isl_union_flow *release();
2784 inline bool is_null() const;
2785 inline __isl_keep isl_union_flow *keep() const;
2786 inline __isl_give isl_union_flow *take();
2787 inline explicit operator bool() const;
2788 inline isl::ctx get_ctx() const;
2789 inline std::string to_str() const;
2791 inline isl::union_map get_full_may_dependence() const;
2792 inline isl::union_map get_full_must_dependence() const;
2793 inline isl::union_map get_may_dependence() const;
2794 inline isl::union_map get_may_no_source() const;
2795 inline isl::union_map get_must_dependence() const;
2796 inline isl::union_map get_must_no_source() const;
2799 // declarations for isl::union_map
2800 inline isl::union_map manage(__isl_take isl_union_map *ptr);
2801 inline isl::union_map manage_copy(__isl_keep isl_union_map *ptr);
2802 inline isl::union_map give(__isl_take isl_union_map *ptr);
2805 class union_map {
2806 friend inline isl::union_map manage(__isl_take isl_union_map *ptr);
2807 friend inline isl::union_map manage_copy(__isl_keep isl_union_map *ptr);
2809 isl_union_map *ptr = nullptr;
2811 inline explicit union_map(__isl_take isl_union_map *ptr);
2813 public:
2814 inline /* implicit */ union_map();
2815 inline /* implicit */ union_map(const isl::union_map &obj);
2816 inline /* implicit */ union_map(std::nullptr_t);
2817 inline explicit union_map(isl::ctx ctx, const std::string &str);
2818 inline explicit union_map(isl::union_pw_aff upa);
2819 inline /* implicit */ union_map(isl::basic_map bmap);
2820 inline /* implicit */ union_map(isl::map map);
2821 inline isl::union_map &operator=(isl::union_map obj);
2822 inline ~union_map();
2823 inline __isl_give isl_union_map *copy() const &;
2824 inline __isl_give isl_union_map *copy() && = delete;
2825 inline __isl_keep isl_union_map *get() const;
2826 inline __isl_give isl_union_map *release();
2827 inline bool is_null() const;
2828 inline __isl_keep isl_union_map *keep() const;
2829 inline __isl_give isl_union_map *take();
2830 inline explicit operator bool() const;
2831 inline isl::ctx get_ctx() const;
2832 inline std::string to_str() const;
2833 inline void dump() const;
2835 inline isl::union_map add_map(isl::map map) const;
2836 inline isl::union_map affine_hull() const;
2837 inline isl::union_map align_params(isl::space model) const;
2838 inline isl::union_map apply_domain(isl::union_map umap2) const;
2839 inline isl::union_map apply_range(isl::union_map umap2) const;
2840 inline isl::union_map coalesce() const;
2841 inline isl::boolean contains(const isl::space &space) const;
2842 inline isl::union_map curry() const;
2843 inline isl::union_set deltas() const;
2844 inline isl::union_map deltas_map() const;
2845 inline isl::union_map detect_equalities() const;
2846 inline unsigned int dim(isl::dim type) const;
2847 inline isl::union_set domain() const;
2848 inline isl::union_map domain_factor_domain() const;
2849 inline isl::union_map domain_factor_range() const;
2850 inline isl::union_map domain_map() const;
2851 inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
2852 inline isl::union_map domain_product(isl::union_map umap2) const;
2853 static inline isl::union_map empty(isl::space space);
2854 inline isl::union_map eq_at(isl::multi_union_pw_aff mupa) const;
2855 inline isl::map extract_map(isl::space dim) const;
2856 inline isl::union_map factor_domain() const;
2857 inline isl::union_map factor_range() const;
2858 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2859 inline isl::union_map fixed_power(isl::val exp) const;
2860 inline isl::union_map flat_domain_product(isl::union_map umap2) const;
2861 inline isl::union_map flat_range_product(isl::union_map umap2) const;
2862 inline isl::stat foreach_map(const std::function<isl::stat(isl::map)> &fn) const;
2863 static inline isl::union_map from(isl::union_pw_multi_aff upma);
2864 static inline isl::union_map from(isl::multi_union_pw_aff mupa);
2865 static inline isl::union_map from_domain(isl::union_set uset);
2866 static inline isl::union_map from_domain_and_range(isl::union_set domain, isl::union_set range);
2867 static inline isl::union_map from_range(isl::union_set uset);
2868 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2869 inline uint32_t get_hash() const;
2870 inline isl::space get_space() const;
2871 inline isl::union_map gist(isl::union_map context) const;
2872 inline isl::union_map gist_domain(isl::union_set uset) const;
2873 inline isl::union_map gist_params(isl::set set) const;
2874 inline isl::union_map gist_range(isl::union_set uset) const;
2875 inline isl::union_map intersect(isl::union_map umap2) const;
2876 inline isl::union_map intersect_domain(isl::union_set uset) const;
2877 inline isl::union_map intersect_params(isl::set set) const;
2878 inline isl::union_map intersect_range(isl::union_set uset) const;
2879 inline isl::union_map intersect_range_factor_range(isl::union_map factor) const;
2880 inline isl::boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2881 inline isl::boolean is_bijective() const;
2882 inline isl::boolean is_disjoint(const isl::union_map &umap2) const;
2883 inline isl::boolean is_empty() const;
2884 inline isl::boolean is_equal(const isl::union_map &umap2) const;
2885 inline isl::boolean is_identity() const;
2886 inline isl::boolean is_injective() const;
2887 inline isl::boolean is_single_valued() const;
2888 inline isl::boolean is_strict_subset(const isl::union_map &umap2) const;
2889 inline isl::boolean is_subset(const isl::union_map &umap2) const;
2890 inline isl::union_map lex_ge_union_map(isl::union_map umap2) const;
2891 inline isl::union_map lex_gt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
2892 inline isl::union_map lex_gt_union_map(isl::union_map umap2) const;
2893 inline isl::union_map lex_le_union_map(isl::union_map umap2) const;
2894 inline isl::union_map lex_lt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
2895 inline isl::union_map lex_lt_union_map(isl::union_map umap2) const;
2896 inline isl::union_map lexmax() const;
2897 inline isl::union_map lexmin() const;
2898 inline isl::set params() const;
2899 inline isl::boolean plain_is_injective() const;
2900 inline isl::union_map polyhedral_hull() const;
2901 inline isl::union_map preimage_domain_multi_aff(isl::multi_aff ma) const;
2902 inline isl::union_map preimage_domain_multi_pw_aff(isl::multi_pw_aff mpa) const;
2903 inline isl::union_map preimage_domain_pw_multi_aff(isl::pw_multi_aff pma) const;
2904 inline isl::union_map preimage_domain_union_pw_multi_aff(isl::union_pw_multi_aff upma) const;
2905 inline isl::union_map preimage_range_multi_aff(isl::multi_aff ma) const;
2906 inline isl::union_map preimage_range_pw_multi_aff(isl::pw_multi_aff pma) const;
2907 inline isl::union_map preimage_range_union_pw_multi_aff(isl::union_pw_multi_aff upma) const;
2908 inline isl::union_map product(isl::union_map umap2) const;
2909 inline isl::union_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
2910 inline isl::union_set range() const;
2911 inline isl::union_map range_curry() const;
2912 inline isl::union_map range_factor_domain() const;
2913 inline isl::union_map range_factor_range() const;
2914 inline isl::union_map range_map() const;
2915 inline isl::union_map range_product(isl::union_map umap2) const;
2916 inline isl::union_map remove_divs() const;
2917 inline isl::union_map remove_redundancies() const;
2918 inline isl::union_map reset_user() const;
2919 inline isl::union_map reverse() const;
2920 inline isl::basic_map sample() const;
2921 inline isl::union_map simple_hull() const;
2922 inline isl::union_map subtract(isl::union_map umap2) const;
2923 inline isl::union_map subtract_domain(isl::union_set dom) const;
2924 inline isl::union_map subtract_range(isl::union_set dom) const;
2925 inline isl::union_map uncurry() const;
2926 inline isl::union_map unite(isl::union_map umap2) const;
2927 inline isl::union_map universe() const;
2928 inline isl::union_set wrap() const;
2929 inline isl::union_map zip() const;
2932 // declarations for isl::union_map_list
2933 inline isl::union_map_list manage(__isl_take isl_union_map_list *ptr);
2934 inline isl::union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
2935 inline isl::union_map_list give(__isl_take isl_union_map_list *ptr);
2938 class union_map_list {
2939 friend inline isl::union_map_list manage(__isl_take isl_union_map_list *ptr);
2940 friend inline isl::union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
2942 isl_union_map_list *ptr = nullptr;
2944 inline explicit union_map_list(__isl_take isl_union_map_list *ptr);
2946 public:
2947 inline /* implicit */ union_map_list();
2948 inline /* implicit */ union_map_list(const isl::union_map_list &obj);
2949 inline /* implicit */ union_map_list(std::nullptr_t);
2950 inline isl::union_map_list &operator=(isl::union_map_list obj);
2951 inline ~union_map_list();
2952 inline __isl_give isl_union_map_list *copy() const &;
2953 inline __isl_give isl_union_map_list *copy() && = delete;
2954 inline __isl_keep isl_union_map_list *get() const;
2955 inline __isl_give isl_union_map_list *release();
2956 inline bool is_null() const;
2957 inline __isl_keep isl_union_map_list *keep() const;
2958 inline __isl_give isl_union_map_list *take();
2959 inline explicit operator bool() const;
2960 inline isl::ctx get_ctx() const;
2961 inline void dump() const;
2965 // declarations for isl::union_pw_aff
2966 inline isl::union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
2967 inline isl::union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
2968 inline isl::union_pw_aff give(__isl_take isl_union_pw_aff *ptr);
2971 class union_pw_aff {
2972 friend inline isl::union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
2973 friend inline isl::union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
2975 isl_union_pw_aff *ptr = nullptr;
2977 inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
2979 public:
2980 inline /* implicit */ union_pw_aff();
2981 inline /* implicit */ union_pw_aff(const isl::union_pw_aff &obj);
2982 inline /* implicit */ union_pw_aff(std::nullptr_t);
2983 inline /* implicit */ union_pw_aff(isl::pw_aff pa);
2984 inline explicit union_pw_aff(isl::union_set domain, isl::val v);
2985 inline explicit union_pw_aff(isl::ctx ctx, const std::string &str);
2986 inline isl::union_pw_aff &operator=(isl::union_pw_aff obj);
2987 inline ~union_pw_aff();
2988 inline __isl_give isl_union_pw_aff *copy() const &;
2989 inline __isl_give isl_union_pw_aff *copy() && = delete;
2990 inline __isl_keep isl_union_pw_aff *get() const;
2991 inline __isl_give isl_union_pw_aff *release();
2992 inline bool is_null() const;
2993 inline __isl_keep isl_union_pw_aff *keep() const;
2994 inline __isl_give isl_union_pw_aff *take();
2995 inline explicit operator bool() const;
2996 inline isl::ctx get_ctx() const;
2997 inline std::string to_str() const;
2998 inline void dump() const;
3000 inline isl::union_pw_aff add(isl::union_pw_aff upa2) const;
3001 inline isl::union_pw_aff add_pw_aff(isl::pw_aff pa) const;
3002 static inline isl::union_pw_aff aff_on_domain(isl::union_set domain, isl::aff aff);
3003 inline isl::union_pw_aff align_params(isl::space model) const;
3004 inline isl::union_pw_aff coalesce() const;
3005 inline unsigned int dim(isl::dim type) const;
3006 inline isl::union_set domain() const;
3007 inline isl::union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3008 static inline isl::union_pw_aff empty(isl::space space);
3009 inline isl::pw_aff extract_pw_aff(isl::space space) const;
3010 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3011 inline isl::union_pw_aff floor() const;
3012 inline isl::stat foreach_pw_aff(const std::function<isl::stat(isl::pw_aff)> &fn) const;
3013 inline isl::space get_space() const;
3014 inline isl::union_pw_aff gist(isl::union_set context) const;
3015 inline isl::union_pw_aff gist_params(isl::set context) const;
3016 inline isl::union_pw_aff intersect_domain(isl::union_set uset) const;
3017 inline isl::union_pw_aff intersect_params(isl::set set) const;
3018 inline isl::boolean involves_nan() const;
3019 inline isl::union_pw_aff mod_val(isl::val f) const;
3020 inline isl::union_pw_aff neg() const;
3021 inline isl::boolean plain_is_equal(const isl::union_pw_aff &upa2) const;
3022 inline isl::union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
3023 inline isl::union_pw_aff reset_user() const;
3024 inline isl::union_pw_aff scale_down_val(isl::val v) const;
3025 inline isl::union_pw_aff scale_val(isl::val v) const;
3026 inline isl::union_pw_aff sub(isl::union_pw_aff upa2) const;
3027 inline isl::union_pw_aff subtract_domain(isl::union_set uset) const;
3028 inline isl::union_pw_aff union_add(isl::union_pw_aff upa2) const;
3029 inline isl::union_set zero_union_set() const;
3032 // declarations for isl::union_pw_aff_list
3033 inline isl::union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3034 inline isl::union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3035 inline isl::union_pw_aff_list give(__isl_take isl_union_pw_aff_list *ptr);
3038 class union_pw_aff_list {
3039 friend inline isl::union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3040 friend inline isl::union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3042 isl_union_pw_aff_list *ptr = nullptr;
3044 inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
3046 public:
3047 inline /* implicit */ union_pw_aff_list();
3048 inline /* implicit */ union_pw_aff_list(const isl::union_pw_aff_list &obj);
3049 inline /* implicit */ union_pw_aff_list(std::nullptr_t);
3050 inline isl::union_pw_aff_list &operator=(isl::union_pw_aff_list obj);
3051 inline ~union_pw_aff_list();
3052 inline __isl_give isl_union_pw_aff_list *copy() const &;
3053 inline __isl_give isl_union_pw_aff_list *copy() && = delete;
3054 inline __isl_keep isl_union_pw_aff_list *get() const;
3055 inline __isl_give isl_union_pw_aff_list *release();
3056 inline bool is_null() const;
3057 inline __isl_keep isl_union_pw_aff_list *keep() const;
3058 inline __isl_give isl_union_pw_aff_list *take();
3059 inline explicit operator bool() const;
3060 inline isl::ctx get_ctx() const;
3061 inline void dump() const;
3065 // declarations for isl::union_pw_multi_aff
3066 inline isl::union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3067 inline isl::union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3068 inline isl::union_pw_multi_aff give(__isl_take isl_union_pw_multi_aff *ptr);
3071 class union_pw_multi_aff {
3072 friend inline isl::union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3073 friend inline isl::union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3075 isl_union_pw_multi_aff *ptr = nullptr;
3077 inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
3079 public:
3080 inline /* implicit */ union_pw_multi_aff();
3081 inline /* implicit */ union_pw_multi_aff(const isl::union_pw_multi_aff &obj);
3082 inline /* implicit */ union_pw_multi_aff(std::nullptr_t);
3083 inline /* implicit */ union_pw_multi_aff(isl::pw_multi_aff pma);
3084 inline explicit union_pw_multi_aff(isl::union_set uset);
3085 inline explicit union_pw_multi_aff(isl::union_map umap);
3086 inline explicit union_pw_multi_aff(isl::ctx ctx, const std::string &str);
3087 inline /* implicit */ union_pw_multi_aff(isl::union_pw_aff upa);
3088 inline isl::union_pw_multi_aff &operator=(isl::union_pw_multi_aff obj);
3089 inline ~union_pw_multi_aff();
3090 inline __isl_give isl_union_pw_multi_aff *copy() const &;
3091 inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
3092 inline __isl_keep isl_union_pw_multi_aff *get() const;
3093 inline __isl_give isl_union_pw_multi_aff *release();
3094 inline bool is_null() const;
3095 inline __isl_keep isl_union_pw_multi_aff *keep() const;
3096 inline __isl_give isl_union_pw_multi_aff *take();
3097 inline explicit operator bool() const;
3098 inline isl::ctx get_ctx() const;
3099 inline std::string to_str() const;
3100 inline void dump() const;
3102 inline isl::union_pw_multi_aff add(isl::union_pw_multi_aff upma2) const;
3103 inline isl::union_pw_multi_aff add_pw_multi_aff(isl::pw_multi_aff pma) const;
3104 inline isl::union_pw_multi_aff align_params(isl::space model) const;
3105 inline isl::union_pw_multi_aff coalesce() const;
3106 inline unsigned int dim(isl::dim type) const;
3107 inline isl::union_set domain() const;
3108 inline isl::union_pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3109 static inline isl::union_pw_multi_aff empty(isl::space space);
3110 inline isl::pw_multi_aff extract_pw_multi_aff(isl::space space) const;
3111 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3112 inline isl::union_pw_multi_aff flat_range_product(isl::union_pw_multi_aff upma2) const;
3113 inline isl::stat foreach_pw_multi_aff(const std::function<isl::stat(isl::pw_multi_aff)> &fn) const;
3114 static inline isl::union_pw_multi_aff from_aff(isl::aff aff);
3115 static inline isl::union_pw_multi_aff from_multi_union_pw_aff(isl::multi_union_pw_aff mupa);
3116 static inline isl::union_pw_multi_aff from_union_set(isl::union_set uset);
3117 inline isl::space get_space() const;
3118 inline isl::union_pw_aff get_union_pw_aff(int pos) const;
3119 inline isl::union_pw_multi_aff gist(isl::union_set context) const;
3120 inline isl::union_pw_multi_aff gist_params(isl::set context) const;
3121 inline isl::union_pw_multi_aff intersect_domain(isl::union_set uset) const;
3122 inline isl::union_pw_multi_aff intersect_params(isl::set set) const;
3123 inline isl::boolean involves_nan() const;
3124 static inline isl::union_pw_multi_aff multi_val_on_domain(isl::union_set domain, isl::multi_val mv);
3125 inline isl::union_pw_multi_aff neg() const;
3126 inline isl::boolean plain_is_equal(const isl::union_pw_multi_aff &upma2) const;
3127 inline isl::union_pw_multi_aff pullback(isl::union_pw_multi_aff upma2) const;
3128 inline isl::union_pw_multi_aff reset_user() const;
3129 inline isl::union_pw_multi_aff scale_down_val(isl::val val) const;
3130 inline isl::union_pw_multi_aff scale_multi_val(isl::multi_val mv) const;
3131 inline isl::union_pw_multi_aff scale_val(isl::val val) const;
3132 inline isl::union_pw_multi_aff sub(isl::union_pw_multi_aff upma2) const;
3133 inline isl::union_pw_multi_aff subtract_domain(isl::union_set uset) const;
3134 inline isl::union_pw_multi_aff union_add(isl::union_pw_multi_aff upma2) const;
3137 // declarations for isl::union_pw_multi_aff_list
3138 inline isl::union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3139 inline isl::union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3140 inline isl::union_pw_multi_aff_list give(__isl_take isl_union_pw_multi_aff_list *ptr);
3143 class union_pw_multi_aff_list {
3144 friend inline isl::union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3145 friend inline isl::union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3147 isl_union_pw_multi_aff_list *ptr = nullptr;
3149 inline explicit union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr);
3151 public:
3152 inline /* implicit */ union_pw_multi_aff_list();
3153 inline /* implicit */ union_pw_multi_aff_list(const isl::union_pw_multi_aff_list &obj);
3154 inline /* implicit */ union_pw_multi_aff_list(std::nullptr_t);
3155 inline isl::union_pw_multi_aff_list &operator=(isl::union_pw_multi_aff_list obj);
3156 inline ~union_pw_multi_aff_list();
3157 inline __isl_give isl_union_pw_multi_aff_list *copy() const &;
3158 inline __isl_give isl_union_pw_multi_aff_list *copy() && = delete;
3159 inline __isl_keep isl_union_pw_multi_aff_list *get() const;
3160 inline __isl_give isl_union_pw_multi_aff_list *release();
3161 inline bool is_null() const;
3162 inline __isl_keep isl_union_pw_multi_aff_list *keep() const;
3163 inline __isl_give isl_union_pw_multi_aff_list *take();
3164 inline explicit operator bool() const;
3165 inline isl::ctx get_ctx() const;
3166 inline void dump() const;
3170 // declarations for isl::union_pw_qpolynomial
3171 inline isl::union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3172 inline isl::union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3173 inline isl::union_pw_qpolynomial give(__isl_take isl_union_pw_qpolynomial *ptr);
3176 class union_pw_qpolynomial {
3177 friend inline isl::union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3178 friend inline isl::union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3180 isl_union_pw_qpolynomial *ptr = nullptr;
3182 inline explicit union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr);
3184 public:
3185 inline /* implicit */ union_pw_qpolynomial();
3186 inline /* implicit */ union_pw_qpolynomial(const isl::union_pw_qpolynomial &obj);
3187 inline /* implicit */ union_pw_qpolynomial(std::nullptr_t);
3188 inline explicit union_pw_qpolynomial(isl::ctx ctx, const std::string &str);
3189 inline isl::union_pw_qpolynomial &operator=(isl::union_pw_qpolynomial obj);
3190 inline ~union_pw_qpolynomial();
3191 inline __isl_give isl_union_pw_qpolynomial *copy() const &;
3192 inline __isl_give isl_union_pw_qpolynomial *copy() && = delete;
3193 inline __isl_keep isl_union_pw_qpolynomial *get() const;
3194 inline __isl_give isl_union_pw_qpolynomial *release();
3195 inline bool is_null() const;
3196 inline __isl_keep isl_union_pw_qpolynomial *keep() const;
3197 inline __isl_give isl_union_pw_qpolynomial *take();
3198 inline explicit operator bool() const;
3199 inline isl::ctx get_ctx() const;
3200 inline std::string to_str() const;
3202 inline isl::union_pw_qpolynomial add(isl::union_pw_qpolynomial upwqp2) const;
3203 inline isl::union_pw_qpolynomial add_pw_qpolynomial(isl::pw_qpolynomial pwqp) const;
3204 inline isl::union_pw_qpolynomial align_params(isl::space model) const;
3205 inline isl::union_pw_qpolynomial coalesce() const;
3206 inline unsigned int dim(isl::dim type) const;
3207 inline isl::union_set domain() const;
3208 inline isl::union_pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3209 inline isl::val eval(isl::point pnt) const;
3210 inline isl::pw_qpolynomial extract_pw_qpolynomial(isl::space dim) const;
3211 inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3212 inline isl::stat foreach_pw_qpolynomial(const std::function<isl::stat(isl::pw_qpolynomial)> &fn) const;
3213 static inline isl::union_pw_qpolynomial from_pw_qpolynomial(isl::pw_qpolynomial pwqp);
3214 inline isl::space get_space() const;
3215 inline isl::union_pw_qpolynomial gist(isl::union_set context) const;
3216 inline isl::union_pw_qpolynomial gist_params(isl::set context) const;
3217 inline isl::union_pw_qpolynomial intersect_domain(isl::union_set uset) const;
3218 inline isl::union_pw_qpolynomial intersect_params(isl::set set) const;
3219 inline isl::boolean involves_nan() const;
3220 inline isl::union_pw_qpolynomial mul(isl::union_pw_qpolynomial upwqp2) const;
3221 inline isl::union_pw_qpolynomial neg() const;
3222 inline isl::boolean plain_is_equal(const isl::union_pw_qpolynomial &upwqp2) const;
3223 inline isl::union_pw_qpolynomial reset_user() const;
3224 inline isl::union_pw_qpolynomial scale_down_val(isl::val v) const;
3225 inline isl::union_pw_qpolynomial scale_val(isl::val v) const;
3226 inline isl::union_pw_qpolynomial sub(isl::union_pw_qpolynomial upwqp2) const;
3227 inline isl::union_pw_qpolynomial subtract_domain(isl::union_set uset) const;
3228 inline isl::union_pw_qpolynomial to_polynomial(int sign) const;
3229 static inline isl::union_pw_qpolynomial zero(isl::space dim);
3232 // declarations for isl::union_set
3233 inline isl::union_set manage(__isl_take isl_union_set *ptr);
3234 inline isl::union_set manage_copy(__isl_keep isl_union_set *ptr);
3235 inline isl::union_set give(__isl_take isl_union_set *ptr);
3238 class union_set {
3239 friend inline isl::union_set manage(__isl_take isl_union_set *ptr);
3240 friend inline isl::union_set manage_copy(__isl_keep isl_union_set *ptr);
3242 isl_union_set *ptr = nullptr;
3244 inline explicit union_set(__isl_take isl_union_set *ptr);
3246 public:
3247 inline /* implicit */ union_set();
3248 inline /* implicit */ union_set(const isl::union_set &obj);
3249 inline /* implicit */ union_set(std::nullptr_t);
3250 inline /* implicit */ union_set(isl::basic_set bset);
3251 inline /* implicit */ union_set(isl::set set);
3252 inline /* implicit */ union_set(isl::point pnt);
3253 inline explicit union_set(isl::ctx ctx, const std::string &str);
3254 inline isl::union_set &operator=(isl::union_set obj);
3255 inline ~union_set();
3256 inline __isl_give isl_union_set *copy() const &;
3257 inline __isl_give isl_union_set *copy() && = delete;
3258 inline __isl_keep isl_union_set *get() const;
3259 inline __isl_give isl_union_set *release();
3260 inline bool is_null() const;
3261 inline __isl_keep isl_union_set *keep() const;
3262 inline __isl_give isl_union_set *take();
3263 inline explicit operator bool() const;
3264 inline isl::ctx get_ctx() const;
3265 inline std::string to_str() const;
3266 inline void dump() const;
3268 inline isl::union_set add_set(isl::set set) const;
3269 inline isl::union_set affine_hull() const;
3270 inline isl::union_set align_params(isl::space model) const;
3271 inline isl::union_set apply(isl::union_map umap) const;
3272 inline isl::union_set coalesce() const;
3273 inline isl::union_set coefficients() const;
3274 inline isl::schedule compute_schedule(isl::union_map validity, isl::union_map proximity) const;
3275 inline isl::boolean contains(const isl::space &space) const;
3276 inline isl::union_set detect_equalities() const;
3277 inline unsigned int dim(isl::dim type) const;
3278 static inline isl::union_set empty(isl::space space);
3279 inline isl::set extract_set(isl::space dim) const;
3280 inline isl::stat foreach_point(const std::function<isl::stat(isl::point)> &fn) const;
3281 inline isl::stat foreach_set(const std::function<isl::stat(isl::set)> &fn) const;
3282 inline isl::basic_set_list get_basic_set_list() const;
3283 inline uint32_t get_hash() const;
3284 inline isl::space get_space() const;
3285 inline isl::union_set gist(isl::union_set context) const;
3286 inline isl::union_set gist_params(isl::set set) const;
3287 inline isl::union_map identity() const;
3288 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
3289 inline isl::union_set intersect(isl::union_set uset2) const;
3290 inline isl::union_set intersect_params(isl::set set) const;
3291 inline isl::boolean is_disjoint(const isl::union_set &uset2) const;
3292 inline isl::boolean is_empty() const;
3293 inline isl::boolean is_equal(const isl::union_set &uset2) const;
3294 inline isl::boolean is_params() const;
3295 inline isl::boolean is_strict_subset(const isl::union_set &uset2) const;
3296 inline isl::boolean is_subset(const isl::union_set &uset2) const;
3297 inline isl::union_map lex_ge_union_set(isl::union_set uset2) const;
3298 inline isl::union_map lex_gt_union_set(isl::union_set uset2) const;
3299 inline isl::union_map lex_le_union_set(isl::union_set uset2) const;
3300 inline isl::union_map lex_lt_union_set(isl::union_set uset2) const;
3301 inline isl::union_set lexmax() const;
3302 inline isl::union_set lexmin() const;
3303 inline isl::multi_val min_multi_union_pw_aff(const isl::multi_union_pw_aff &obj) const;
3304 inline isl::set params() const;
3305 inline isl::union_set polyhedral_hull() const;
3306 inline isl::union_set preimage(isl::multi_aff ma) const;
3307 inline isl::union_set preimage(isl::pw_multi_aff pma) const;
3308 inline isl::union_set preimage(isl::union_pw_multi_aff upma) const;
3309 inline isl::union_set product(isl::union_set uset2) const;
3310 inline isl::union_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
3311 inline isl::union_set remove_divs() const;
3312 inline isl::union_set remove_redundancies() const;
3313 inline isl::union_set reset_user() const;
3314 inline isl::basic_set sample() const;
3315 inline isl::point sample_point() const;
3316 inline isl::union_set simple_hull() const;
3317 inline isl::union_set solutions() const;
3318 inline isl::union_set subtract(isl::union_set uset2) const;
3319 inline isl::union_set unite(isl::union_set uset2) const;
3320 inline isl::union_set universe() const;
3321 inline isl::union_map unwrap() const;
3322 inline isl::union_map wrapped_domain_map() const;
3325 // declarations for isl::union_set_list
3326 inline isl::union_set_list manage(__isl_take isl_union_set_list *ptr);
3327 inline isl::union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3328 inline isl::union_set_list give(__isl_take isl_union_set_list *ptr);
3331 class union_set_list {
3332 friend inline isl::union_set_list manage(__isl_take isl_union_set_list *ptr);
3333 friend inline isl::union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3335 isl_union_set_list *ptr = nullptr;
3337 inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
3339 public:
3340 inline /* implicit */ union_set_list();
3341 inline /* implicit */ union_set_list(const isl::union_set_list &obj);
3342 inline /* implicit */ union_set_list(std::nullptr_t);
3343 inline isl::union_set_list &operator=(isl::union_set_list obj);
3344 inline ~union_set_list();
3345 inline __isl_give isl_union_set_list *copy() const &;
3346 inline __isl_give isl_union_set_list *copy() && = delete;
3347 inline __isl_keep isl_union_set_list *get() const;
3348 inline __isl_give isl_union_set_list *release();
3349 inline bool is_null() const;
3350 inline __isl_keep isl_union_set_list *keep() const;
3351 inline __isl_give isl_union_set_list *take();
3352 inline explicit operator bool() const;
3353 inline isl::ctx get_ctx() const;
3354 inline void dump() const;
3358 // declarations for isl::val
3359 inline isl::val manage(__isl_take isl_val *ptr);
3360 inline isl::val manage_copy(__isl_keep isl_val *ptr);
3361 inline isl::val give(__isl_take isl_val *ptr);
3364 class val {
3365 friend inline isl::val manage(__isl_take isl_val *ptr);
3366 friend inline isl::val manage_copy(__isl_keep isl_val *ptr);
3368 isl_val *ptr = nullptr;
3370 inline explicit val(__isl_take isl_val *ptr);
3372 public:
3373 inline /* implicit */ val();
3374 inline /* implicit */ val(const isl::val &obj);
3375 inline /* implicit */ val(std::nullptr_t);
3376 inline explicit val(isl::ctx ctx, long i);
3377 inline explicit val(isl::ctx ctx, const std::string &str);
3378 inline isl::val &operator=(isl::val obj);
3379 inline ~val();
3380 inline __isl_give isl_val *copy() const &;
3381 inline __isl_give isl_val *copy() && = delete;
3382 inline __isl_keep isl_val *get() const;
3383 inline __isl_give isl_val *release();
3384 inline bool is_null() const;
3385 inline __isl_keep isl_val *keep() const;
3386 inline __isl_give isl_val *take();
3387 inline explicit operator bool() const;
3388 inline isl::ctx get_ctx() const;
3389 inline std::string to_str() const;
3390 inline void dump() const;
3392 inline isl::val two_exp() const;
3393 inline isl::val abs() const;
3394 inline isl::boolean abs_eq(const isl::val &v2) const;
3395 inline isl::val add(isl::val v2) const;
3396 inline isl::val add_ui(unsigned long v2) const;
3397 inline isl::val ceil() const;
3398 inline int cmp_si(long i) const;
3399 inline isl::val div(isl::val v2) const;
3400 inline isl::val div_ui(unsigned long v2) const;
3401 inline isl::boolean eq(const isl::val &v2) const;
3402 inline isl::val floor() const;
3403 inline isl::val gcd(isl::val v2) const;
3404 inline isl::boolean ge(const isl::val &v2) const;
3405 inline uint32_t get_hash() const;
3406 inline long get_num_si() const;
3407 inline isl::boolean gt(const isl::val &v2) const;
3408 static inline isl::val infty(isl::ctx ctx);
3409 static inline isl::val int_from_ui(isl::ctx ctx, unsigned long u);
3410 inline isl::val inv() const;
3411 inline isl::boolean is_divisible_by(const isl::val &v2) const;
3412 inline isl::boolean is_infty() const;
3413 inline isl::boolean is_int() const;
3414 inline isl::boolean is_nan() const;
3415 inline isl::boolean is_neg() const;
3416 inline isl::boolean is_neginfty() const;
3417 inline isl::boolean is_negone() const;
3418 inline isl::boolean is_nonneg() const;
3419 inline isl::boolean is_nonpos() const;
3420 inline isl::boolean is_one() const;
3421 inline isl::boolean is_pos() const;
3422 inline isl::boolean is_rat() const;
3423 inline isl::boolean is_zero() const;
3424 inline isl::boolean le(const isl::val &v2) const;
3425 inline isl::boolean lt(const isl::val &v2) const;
3426 inline isl::val max(isl::val v2) const;
3427 inline isl::val min(isl::val v2) const;
3428 inline isl::val mod(isl::val v2) const;
3429 inline isl::val mul(isl::val v2) const;
3430 inline isl::val mul_ui(unsigned long v2) const;
3431 static inline isl::val nan(isl::ctx ctx);
3432 inline isl::boolean ne(const isl::val &v2) const;
3433 inline isl::val neg() const;
3434 static inline isl::val neginfty(isl::ctx ctx);
3435 static inline isl::val negone(isl::ctx ctx);
3436 static inline isl::val one(isl::ctx ctx);
3437 inline isl::val set_si(long i) const;
3438 inline int sgn() const;
3439 inline isl::val sub(isl::val v2) const;
3440 inline isl::val sub_ui(unsigned long v2) const;
3441 inline isl::val trunc() const;
3442 static inline isl::val zero(isl::ctx ctx);
3445 // declarations for isl::val_list
3446 inline isl::val_list manage(__isl_take isl_val_list *ptr);
3447 inline isl::val_list manage_copy(__isl_keep isl_val_list *ptr);
3448 inline isl::val_list give(__isl_take isl_val_list *ptr);
3451 class val_list {
3452 friend inline isl::val_list manage(__isl_take isl_val_list *ptr);
3453 friend inline isl::val_list manage_copy(__isl_keep isl_val_list *ptr);
3455 isl_val_list *ptr = nullptr;
3457 inline explicit val_list(__isl_take isl_val_list *ptr);
3459 public:
3460 inline /* implicit */ val_list();
3461 inline /* implicit */ val_list(const isl::val_list &obj);
3462 inline /* implicit */ val_list(std::nullptr_t);
3463 inline isl::val_list &operator=(isl::val_list obj);
3464 inline ~val_list();
3465 inline __isl_give isl_val_list *copy() const &;
3466 inline __isl_give isl_val_list *copy() && = delete;
3467 inline __isl_keep isl_val_list *get() const;
3468 inline __isl_give isl_val_list *release();
3469 inline bool is_null() const;
3470 inline __isl_keep isl_val_list *keep() const;
3471 inline __isl_give isl_val_list *take();
3472 inline explicit operator bool() const;
3473 inline isl::ctx get_ctx() const;
3474 inline void dump() const;
3478 // declarations for isl::vec
3479 inline isl::vec manage(__isl_take isl_vec *ptr);
3480 inline isl::vec manage_copy(__isl_keep isl_vec *ptr);
3481 inline isl::vec give(__isl_take isl_vec *ptr);
3484 class vec {
3485 friend inline isl::vec manage(__isl_take isl_vec *ptr);
3486 friend inline isl::vec manage_copy(__isl_keep isl_vec *ptr);
3488 isl_vec *ptr = nullptr;
3490 inline explicit vec(__isl_take isl_vec *ptr);
3492 public:
3493 inline /* implicit */ vec();
3494 inline /* implicit */ vec(const isl::vec &obj);
3495 inline /* implicit */ vec(std::nullptr_t);
3496 inline isl::vec &operator=(isl::vec obj);
3497 inline ~vec();
3498 inline __isl_give isl_vec *copy() const &;
3499 inline __isl_give isl_vec *copy() && = delete;
3500 inline __isl_keep isl_vec *get() const;
3501 inline __isl_give isl_vec *release();
3502 inline bool is_null() const;
3503 inline __isl_keep isl_vec *keep() const;
3504 inline __isl_give isl_vec *take();
3505 inline explicit operator bool() const;
3506 inline isl::ctx get_ctx() const;
3507 inline void dump() const;
3509 inline isl::vec add(isl::vec vec2) const;
3510 static inline isl::vec alloc(isl::ctx ctx, unsigned int size);
3511 inline isl::vec ceil() const;
3512 inline isl::vec clr() const;
3513 inline int cmp_element(const isl::vec &vec2, int pos) const;
3514 inline isl::vec concat(isl::vec vec2) const;
3515 inline isl::vec drop_els(unsigned int pos, unsigned int n) const;
3516 inline isl::vec extend(unsigned int size) const;
3517 inline isl::val get_element_val(int pos) const;
3518 inline isl::vec insert_els(unsigned int pos, unsigned int n) const;
3519 inline isl::vec insert_zero_els(unsigned int pos, unsigned int n) const;
3520 inline isl::boolean is_equal(const isl::vec &vec2) const;
3521 inline isl::vec mat_product(isl::mat mat) const;
3522 inline isl::vec move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
3523 inline isl::vec neg() const;
3524 inline isl::vec set_element_si(int pos, int v) const;
3525 inline isl::vec set_element_val(int pos, isl::val v) const;
3526 inline isl::vec set_si(int v) const;
3527 inline isl::vec set_val(isl::val v) const;
3528 inline int size() const;
3529 inline isl::vec sort() const;
3532 // implementations for isl::aff
3533 isl::aff manage(__isl_take isl_aff *ptr) {
3534 return aff(ptr);
3536 isl::aff manage_copy(__isl_keep isl_aff *ptr) {
3537 return aff(isl_aff_copy(ptr));
3539 isl::aff give(__isl_take isl_aff *ptr) {
3540 return manage(ptr);
3544 aff::aff()
3545 : ptr(nullptr) {}
3547 aff::aff(const isl::aff &obj)
3548 : ptr(obj.copy()) {}
3549 aff::aff(std::nullptr_t)
3550 : ptr(nullptr) {}
3553 aff::aff(__isl_take isl_aff *ptr)
3554 : ptr(ptr) {}
3556 aff::aff(isl::local_space ls) {
3557 auto res = isl_aff_zero_on_domain(ls.release());
3558 ptr = res;
3560 aff::aff(isl::local_space ls, isl::val val) {
3561 auto res = isl_aff_val_on_domain(ls.release(), val.release());
3562 ptr = res;
3564 aff::aff(isl::ctx ctx, const std::string &str) {
3565 auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
3566 ptr = res;
3569 aff &aff::operator=(isl::aff obj) {
3570 std::swap(this->ptr, obj.ptr);
3571 return *this;
3574 aff::~aff() {
3575 if (ptr)
3576 isl_aff_free(ptr);
3579 __isl_give isl_aff *aff::copy() const & {
3580 return isl_aff_copy(ptr);
3583 __isl_keep isl_aff *aff::get() const {
3584 return ptr;
3587 __isl_give isl_aff *aff::release() {
3588 isl_aff *tmp = ptr;
3589 ptr = nullptr;
3590 return tmp;
3593 bool aff::is_null() const {
3594 return ptr == nullptr;
3596 __isl_keep isl_aff *aff::keep() const {
3597 return get();
3600 __isl_give isl_aff *aff::take() {
3601 return release();
3604 aff::operator bool() const {
3605 return !is_null();
3609 isl::ctx aff::get_ctx() const {
3610 return isl::ctx(isl_aff_get_ctx(ptr));
3612 std::string aff::to_str() const {
3613 char *Tmp = isl_aff_to_str(get());
3614 if (!Tmp)
3615 return "";
3616 std::string S(Tmp);
3617 free(Tmp);
3618 return S;
3622 void aff::dump() const {
3623 isl_aff_dump(get());
3627 isl::aff aff::add(isl::aff aff2) const {
3628 auto res = isl_aff_add(copy(), aff2.release());
3629 return manage(res);
3632 isl::aff aff::add_coefficient_si(isl::dim type, int pos, int v) const {
3633 auto res = isl_aff_add_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
3634 return manage(res);
3637 isl::aff aff::add_coefficient_val(isl::dim type, int pos, isl::val v) const {
3638 auto res = isl_aff_add_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
3639 return manage(res);
3642 isl::aff aff::add_constant_num_si(int v) const {
3643 auto res = isl_aff_add_constant_num_si(copy(), v);
3644 return manage(res);
3647 isl::aff aff::add_constant_si(int v) const {
3648 auto res = isl_aff_add_constant_si(copy(), v);
3649 return manage(res);
3652 isl::aff aff::add_constant_val(isl::val v) const {
3653 auto res = isl_aff_add_constant_val(copy(), v.release());
3654 return manage(res);
3657 isl::aff aff::add_dims(isl::dim type, unsigned int n) const {
3658 auto res = isl_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
3659 return manage(res);
3662 isl::aff aff::align_params(isl::space model) const {
3663 auto res = isl_aff_align_params(copy(), model.release());
3664 return manage(res);
3667 isl::aff aff::ceil() const {
3668 auto res = isl_aff_ceil(copy());
3669 return manage(res);
3672 int aff::coefficient_sgn(isl::dim type, int pos) const {
3673 auto res = isl_aff_coefficient_sgn(get(), static_cast<enum isl_dim_type>(type), pos);
3674 return res;
3677 int aff::dim(isl::dim type) const {
3678 auto res = isl_aff_dim(get(), static_cast<enum isl_dim_type>(type));
3679 return res;
3682 isl::aff aff::div(isl::aff aff2) const {
3683 auto res = isl_aff_div(copy(), aff2.release());
3684 return manage(res);
3687 isl::aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
3688 auto res = isl_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
3689 return manage(res);
3692 isl::basic_set aff::eq_basic_set(isl::aff aff2) const {
3693 auto res = isl_aff_eq_basic_set(copy(), aff2.release());
3694 return manage(res);
3697 isl::set aff::eq_set(isl::aff aff2) const {
3698 auto res = isl_aff_eq_set(copy(), aff2.release());
3699 return manage(res);
3702 int aff::find_dim_by_name(isl::dim type, const std::string &name) const {
3703 auto res = isl_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
3704 return res;
3707 isl::aff aff::floor() const {
3708 auto res = isl_aff_floor(copy());
3709 return manage(res);
3712 isl::basic_set aff::ge_basic_set(isl::aff aff2) const {
3713 auto res = isl_aff_ge_basic_set(copy(), aff2.release());
3714 return manage(res);
3717 isl::set aff::ge_set(isl::aff aff2) const {
3718 auto res = isl_aff_ge_set(copy(), aff2.release());
3719 return manage(res);
3722 isl::val aff::get_coefficient_val(isl::dim type, int pos) const {
3723 auto res = isl_aff_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
3724 return manage(res);
3727 isl::val aff::get_constant_val() const {
3728 auto res = isl_aff_get_constant_val(get());
3729 return manage(res);
3732 isl::val aff::get_denominator_val() const {
3733 auto res = isl_aff_get_denominator_val(get());
3734 return manage(res);
3737 std::string aff::get_dim_name(isl::dim type, unsigned int pos) const {
3738 auto res = isl_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
3739 std::string tmp(res);
3740 return tmp;
3743 isl::aff aff::get_div(int pos) const {
3744 auto res = isl_aff_get_div(get(), pos);
3745 return manage(res);
3748 isl::local_space aff::get_domain_local_space() const {
3749 auto res = isl_aff_get_domain_local_space(get());
3750 return manage(res);
3753 isl::space aff::get_domain_space() const {
3754 auto res = isl_aff_get_domain_space(get());
3755 return manage(res);
3758 uint32_t aff::get_hash() const {
3759 auto res = isl_aff_get_hash(get());
3760 return res;
3763 isl::local_space aff::get_local_space() const {
3764 auto res = isl_aff_get_local_space(get());
3765 return manage(res);
3768 isl::space aff::get_space() const {
3769 auto res = isl_aff_get_space(get());
3770 return manage(res);
3773 isl::aff aff::gist(isl::set context) const {
3774 auto res = isl_aff_gist(copy(), context.release());
3775 return manage(res);
3778 isl::aff aff::gist_params(isl::set context) const {
3779 auto res = isl_aff_gist_params(copy(), context.release());
3780 return manage(res);
3783 isl::basic_set aff::gt_basic_set(isl::aff aff2) const {
3784 auto res = isl_aff_gt_basic_set(copy(), aff2.release());
3785 return manage(res);
3788 isl::set aff::gt_set(isl::aff aff2) const {
3789 auto res = isl_aff_gt_set(copy(), aff2.release());
3790 return manage(res);
3793 isl::aff aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
3794 auto res = isl_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
3795 return manage(res);
3798 isl::boolean aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
3799 auto res = isl_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
3800 return manage(res);
3803 isl::boolean aff::is_cst() const {
3804 auto res = isl_aff_is_cst(get());
3805 return manage(res);
3808 isl::boolean aff::is_nan() const {
3809 auto res = isl_aff_is_nan(get());
3810 return manage(res);
3813 isl::basic_set aff::le_basic_set(isl::aff aff2) const {
3814 auto res = isl_aff_le_basic_set(copy(), aff2.release());
3815 return manage(res);
3818 isl::set aff::le_set(isl::aff aff2) const {
3819 auto res = isl_aff_le_set(copy(), aff2.release());
3820 return manage(res);
3823 isl::basic_set aff::lt_basic_set(isl::aff aff2) const {
3824 auto res = isl_aff_lt_basic_set(copy(), aff2.release());
3825 return manage(res);
3828 isl::set aff::lt_set(isl::aff aff2) const {
3829 auto res = isl_aff_lt_set(copy(), aff2.release());
3830 return manage(res);
3833 isl::aff aff::mod(isl::val mod) const {
3834 auto res = isl_aff_mod_val(copy(), mod.release());
3835 return manage(res);
3838 isl::aff aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
3839 auto res = isl_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
3840 return manage(res);
3843 isl::aff aff::mul(isl::aff aff2) const {
3844 auto res = isl_aff_mul(copy(), aff2.release());
3845 return manage(res);
3848 isl::aff aff::nan_on_domain(isl::local_space ls) {
3849 auto res = isl_aff_nan_on_domain(ls.release());
3850 return manage(res);
3853 isl::set aff::ne_set(isl::aff aff2) const {
3854 auto res = isl_aff_ne_set(copy(), aff2.release());
3855 return manage(res);
3858 isl::aff aff::neg() const {
3859 auto res = isl_aff_neg(copy());
3860 return manage(res);
3863 isl::basic_set aff::neg_basic_set() const {
3864 auto res = isl_aff_neg_basic_set(copy());
3865 return manage(res);
3868 isl::boolean aff::plain_is_equal(const isl::aff &aff2) const {
3869 auto res = isl_aff_plain_is_equal(get(), aff2.get());
3870 return manage(res);
3873 isl::boolean aff::plain_is_zero() const {
3874 auto res = isl_aff_plain_is_zero(get());
3875 return manage(res);
3878 isl::aff aff::project_domain_on_params() const {
3879 auto res = isl_aff_project_domain_on_params(copy());
3880 return manage(res);
3883 isl::aff aff::pullback(isl::multi_aff ma) const {
3884 auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
3885 return manage(res);
3888 isl::aff aff::pullback_aff(isl::aff aff2) const {
3889 auto res = isl_aff_pullback_aff(copy(), aff2.release());
3890 return manage(res);
3893 isl::aff aff::scale(isl::val v) const {
3894 auto res = isl_aff_scale_val(copy(), v.release());
3895 return manage(res);
3898 isl::aff aff::scale_down(isl::val v) const {
3899 auto res = isl_aff_scale_down_val(copy(), v.release());
3900 return manage(res);
3903 isl::aff aff::scale_down_ui(unsigned int f) const {
3904 auto res = isl_aff_scale_down_ui(copy(), f);
3905 return manage(res);
3908 isl::aff aff::set_coefficient_si(isl::dim type, int pos, int v) const {
3909 auto res = isl_aff_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
3910 return manage(res);
3913 isl::aff aff::set_coefficient_val(isl::dim type, int pos, isl::val v) const {
3914 auto res = isl_aff_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
3915 return manage(res);
3918 isl::aff aff::set_constant_si(int v) const {
3919 auto res = isl_aff_set_constant_si(copy(), v);
3920 return manage(res);
3923 isl::aff aff::set_constant_val(isl::val v) const {
3924 auto res = isl_aff_set_constant_val(copy(), v.release());
3925 return manage(res);
3928 isl::aff aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
3929 auto res = isl_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
3930 return manage(res);
3933 isl::aff aff::set_tuple_id(isl::dim type, isl::id id) const {
3934 auto res = isl_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
3935 return manage(res);
3938 isl::aff aff::sub(isl::aff aff2) const {
3939 auto res = isl_aff_sub(copy(), aff2.release());
3940 return manage(res);
3943 isl::aff aff::var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos) {
3944 auto res = isl_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
3945 return manage(res);
3948 isl::basic_set aff::zero_basic_set() const {
3949 auto res = isl_aff_zero_basic_set(copy());
3950 return manage(res);
3953 // implementations for isl::aff_list
3954 isl::aff_list manage(__isl_take isl_aff_list *ptr) {
3955 return aff_list(ptr);
3957 isl::aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
3958 return aff_list(isl_aff_list_copy(ptr));
3960 isl::aff_list give(__isl_take isl_aff_list *ptr) {
3961 return manage(ptr);
3965 aff_list::aff_list()
3966 : ptr(nullptr) {}
3968 aff_list::aff_list(const isl::aff_list &obj)
3969 : ptr(obj.copy()) {}
3970 aff_list::aff_list(std::nullptr_t)
3971 : ptr(nullptr) {}
3974 aff_list::aff_list(__isl_take isl_aff_list *ptr)
3975 : ptr(ptr) {}
3978 aff_list &aff_list::operator=(isl::aff_list obj) {
3979 std::swap(this->ptr, obj.ptr);
3980 return *this;
3983 aff_list::~aff_list() {
3984 if (ptr)
3985 isl_aff_list_free(ptr);
3988 __isl_give isl_aff_list *aff_list::copy() const & {
3989 return isl_aff_list_copy(ptr);
3992 __isl_keep isl_aff_list *aff_list::get() const {
3993 return ptr;
3996 __isl_give isl_aff_list *aff_list::release() {
3997 isl_aff_list *tmp = ptr;
3998 ptr = nullptr;
3999 return tmp;
4002 bool aff_list::is_null() const {
4003 return ptr == nullptr;
4005 __isl_keep isl_aff_list *aff_list::keep() const {
4006 return get();
4009 __isl_give isl_aff_list *aff_list::take() {
4010 return release();
4013 aff_list::operator bool() const {
4014 return !is_null();
4018 isl::ctx aff_list::get_ctx() const {
4019 return isl::ctx(isl_aff_list_get_ctx(ptr));
4022 void aff_list::dump() const {
4023 isl_aff_list_dump(get());
4028 // implementations for isl::ast_build
4029 isl::ast_build manage(__isl_take isl_ast_build *ptr) {
4030 return ast_build(ptr);
4032 isl::ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
4033 return ast_build(isl_ast_build_copy(ptr));
4035 isl::ast_build give(__isl_take isl_ast_build *ptr) {
4036 return manage(ptr);
4040 ast_build::ast_build()
4041 : ptr(nullptr) {}
4043 ast_build::ast_build(const isl::ast_build &obj)
4044 : ptr(obj.copy()) {}
4045 ast_build::ast_build(std::nullptr_t)
4046 : ptr(nullptr) {}
4049 ast_build::ast_build(__isl_take isl_ast_build *ptr)
4050 : ptr(ptr) {}
4052 ast_build::ast_build(isl::ctx ctx) {
4053 auto res = isl_ast_build_alloc(ctx.release());
4054 ptr = res;
4057 ast_build &ast_build::operator=(isl::ast_build obj) {
4058 std::swap(this->ptr, obj.ptr);
4059 return *this;
4062 ast_build::~ast_build() {
4063 if (ptr)
4064 isl_ast_build_free(ptr);
4067 __isl_give isl_ast_build *ast_build::copy() const & {
4068 return isl_ast_build_copy(ptr);
4071 __isl_keep isl_ast_build *ast_build::get() const {
4072 return ptr;
4075 __isl_give isl_ast_build *ast_build::release() {
4076 isl_ast_build *tmp = ptr;
4077 ptr = nullptr;
4078 return tmp;
4081 bool ast_build::is_null() const {
4082 return ptr == nullptr;
4084 __isl_keep isl_ast_build *ast_build::keep() const {
4085 return get();
4088 __isl_give isl_ast_build *ast_build::take() {
4089 return release();
4092 ast_build::operator bool() const {
4093 return !is_null();
4097 isl::ctx ast_build::get_ctx() const {
4098 return isl::ctx(isl_ast_build_get_ctx(ptr));
4102 isl::ast_expr ast_build::access_from(isl::pw_multi_aff pma) const {
4103 auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
4104 return manage(res);
4107 isl::ast_expr ast_build::access_from(isl::multi_pw_aff mpa) const {
4108 auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
4109 return manage(res);
4112 isl::ast_node ast_build::ast_from_schedule(isl::union_map schedule) const {
4113 auto res = isl_ast_build_ast_from_schedule(get(), schedule.release());
4114 return manage(res);
4117 isl::ast_expr ast_build::call_from(isl::pw_multi_aff pma) const {
4118 auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
4119 return manage(res);
4122 isl::ast_expr ast_build::call_from(isl::multi_pw_aff mpa) const {
4123 auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
4124 return manage(res);
4127 isl::ast_expr ast_build::expr_from(isl::set set) const {
4128 auto res = isl_ast_build_expr_from_set(get(), set.release());
4129 return manage(res);
4132 isl::ast_expr ast_build::expr_from(isl::pw_aff pa) const {
4133 auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
4134 return manage(res);
4137 isl::ast_build ast_build::from_context(isl::set set) {
4138 auto res = isl_ast_build_from_context(set.release());
4139 return manage(res);
4142 isl::union_map ast_build::get_schedule() const {
4143 auto res = isl_ast_build_get_schedule(get());
4144 return manage(res);
4147 isl::space ast_build::get_schedule_space() const {
4148 auto res = isl_ast_build_get_schedule_space(get());
4149 return manage(res);
4152 isl::ast_node ast_build::node_from_schedule(isl::schedule schedule) const {
4153 auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
4154 return manage(res);
4157 isl::ast_node ast_build::node_from_schedule_map(isl::union_map schedule) const {
4158 auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
4159 return manage(res);
4162 isl::ast_build ast_build::restrict(isl::set set) const {
4163 auto res = isl_ast_build_restrict(copy(), set.release());
4164 return manage(res);
4167 // implementations for isl::ast_expr
4168 isl::ast_expr manage(__isl_take isl_ast_expr *ptr) {
4169 return ast_expr(ptr);
4171 isl::ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
4172 return ast_expr(isl_ast_expr_copy(ptr));
4174 isl::ast_expr give(__isl_take isl_ast_expr *ptr) {
4175 return manage(ptr);
4179 ast_expr::ast_expr()
4180 : ptr(nullptr) {}
4182 ast_expr::ast_expr(const isl::ast_expr &obj)
4183 : ptr(obj.copy()) {}
4184 ast_expr::ast_expr(std::nullptr_t)
4185 : ptr(nullptr) {}
4188 ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
4189 : ptr(ptr) {}
4192 ast_expr &ast_expr::operator=(isl::ast_expr obj) {
4193 std::swap(this->ptr, obj.ptr);
4194 return *this;
4197 ast_expr::~ast_expr() {
4198 if (ptr)
4199 isl_ast_expr_free(ptr);
4202 __isl_give isl_ast_expr *ast_expr::copy() const & {
4203 return isl_ast_expr_copy(ptr);
4206 __isl_keep isl_ast_expr *ast_expr::get() const {
4207 return ptr;
4210 __isl_give isl_ast_expr *ast_expr::release() {
4211 isl_ast_expr *tmp = ptr;
4212 ptr = nullptr;
4213 return tmp;
4216 bool ast_expr::is_null() const {
4217 return ptr == nullptr;
4219 __isl_keep isl_ast_expr *ast_expr::keep() const {
4220 return get();
4223 __isl_give isl_ast_expr *ast_expr::take() {
4224 return release();
4227 ast_expr::operator bool() const {
4228 return !is_null();
4232 isl::ctx ast_expr::get_ctx() const {
4233 return isl::ctx(isl_ast_expr_get_ctx(ptr));
4235 std::string ast_expr::to_str() const {
4236 char *Tmp = isl_ast_expr_to_str(get());
4237 if (!Tmp)
4238 return "";
4239 std::string S(Tmp);
4240 free(Tmp);
4241 return S;
4245 void ast_expr::dump() const {
4246 isl_ast_expr_dump(get());
4250 isl::ast_expr ast_expr::access(isl::ast_expr_list indices) const {
4251 auto res = isl_ast_expr_access(copy(), indices.release());
4252 return manage(res);
4255 isl::ast_expr ast_expr::add(isl::ast_expr expr2) const {
4256 auto res = isl_ast_expr_add(copy(), expr2.release());
4257 return manage(res);
4260 isl::ast_expr ast_expr::address_of() const {
4261 auto res = isl_ast_expr_address_of(copy());
4262 return manage(res);
4265 isl::ast_expr ast_expr::call(isl::ast_expr_list arguments) const {
4266 auto res = isl_ast_expr_call(copy(), arguments.release());
4267 return manage(res);
4270 isl::ast_expr ast_expr::div(isl::ast_expr expr2) const {
4271 auto res = isl_ast_expr_div(copy(), expr2.release());
4272 return manage(res);
4275 isl::ast_expr ast_expr::eq(isl::ast_expr expr2) const {
4276 auto res = isl_ast_expr_eq(copy(), expr2.release());
4277 return manage(res);
4280 isl::ast_expr ast_expr::from_id(isl::id id) {
4281 auto res = isl_ast_expr_from_id(id.release());
4282 return manage(res);
4285 isl::ast_expr ast_expr::from_val(isl::val v) {
4286 auto res = isl_ast_expr_from_val(v.release());
4287 return manage(res);
4290 isl::ast_expr ast_expr::ge(isl::ast_expr expr2) const {
4291 auto res = isl_ast_expr_ge(copy(), expr2.release());
4292 return manage(res);
4295 isl::id ast_expr::get_id() const {
4296 auto res = isl_ast_expr_get_id(get());
4297 return manage(res);
4300 isl::ast_expr ast_expr::get_op_arg(int pos) const {
4301 auto res = isl_ast_expr_get_op_arg(get(), pos);
4302 return manage(res);
4305 isl::val ast_expr::get_val() const {
4306 auto res = isl_ast_expr_get_val(get());
4307 return manage(res);
4310 isl::ast_expr ast_expr::gt(isl::ast_expr expr2) const {
4311 auto res = isl_ast_expr_gt(copy(), expr2.release());
4312 return manage(res);
4315 isl::boolean ast_expr::is_equal(const isl::ast_expr &expr2) const {
4316 auto res = isl_ast_expr_is_equal(get(), expr2.get());
4317 return manage(res);
4320 isl::ast_expr ast_expr::le(isl::ast_expr expr2) const {
4321 auto res = isl_ast_expr_le(copy(), expr2.release());
4322 return manage(res);
4325 isl::ast_expr ast_expr::lt(isl::ast_expr expr2) const {
4326 auto res = isl_ast_expr_lt(copy(), expr2.release());
4327 return manage(res);
4330 isl::ast_expr ast_expr::mul(isl::ast_expr expr2) const {
4331 auto res = isl_ast_expr_mul(copy(), expr2.release());
4332 return manage(res);
4335 isl::ast_expr ast_expr::neg() const {
4336 auto res = isl_ast_expr_neg(copy());
4337 return manage(res);
4340 isl::ast_expr ast_expr::pdiv_q(isl::ast_expr expr2) const {
4341 auto res = isl_ast_expr_pdiv_q(copy(), expr2.release());
4342 return manage(res);
4345 isl::ast_expr ast_expr::pdiv_r(isl::ast_expr expr2) const {
4346 auto res = isl_ast_expr_pdiv_r(copy(), expr2.release());
4347 return manage(res);
4350 isl::ast_expr ast_expr::set_op_arg(int pos, isl::ast_expr arg) const {
4351 auto res = isl_ast_expr_set_op_arg(copy(), pos, arg.release());
4352 return manage(res);
4355 isl::ast_expr ast_expr::sub(isl::ast_expr expr2) const {
4356 auto res = isl_ast_expr_sub(copy(), expr2.release());
4357 return manage(res);
4360 isl::ast_expr ast_expr::substitute_ids(isl::id_to_ast_expr id2expr) const {
4361 auto res = isl_ast_expr_substitute_ids(copy(), id2expr.release());
4362 return manage(res);
4365 std::string ast_expr::to_C_str() const {
4366 auto res = isl_ast_expr_to_C_str(get());
4367 std::string tmp(res);
4368 free(res);
4369 return tmp;
4372 // implementations for isl::ast_expr_list
4373 isl::ast_expr_list manage(__isl_take isl_ast_expr_list *ptr) {
4374 return ast_expr_list(ptr);
4376 isl::ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr) {
4377 return ast_expr_list(isl_ast_expr_list_copy(ptr));
4379 isl::ast_expr_list give(__isl_take isl_ast_expr_list *ptr) {
4380 return manage(ptr);
4384 ast_expr_list::ast_expr_list()
4385 : ptr(nullptr) {}
4387 ast_expr_list::ast_expr_list(const isl::ast_expr_list &obj)
4388 : ptr(obj.copy()) {}
4389 ast_expr_list::ast_expr_list(std::nullptr_t)
4390 : ptr(nullptr) {}
4393 ast_expr_list::ast_expr_list(__isl_take isl_ast_expr_list *ptr)
4394 : ptr(ptr) {}
4397 ast_expr_list &ast_expr_list::operator=(isl::ast_expr_list obj) {
4398 std::swap(this->ptr, obj.ptr);
4399 return *this;
4402 ast_expr_list::~ast_expr_list() {
4403 if (ptr)
4404 isl_ast_expr_list_free(ptr);
4407 __isl_give isl_ast_expr_list *ast_expr_list::copy() const & {
4408 return isl_ast_expr_list_copy(ptr);
4411 __isl_keep isl_ast_expr_list *ast_expr_list::get() const {
4412 return ptr;
4415 __isl_give isl_ast_expr_list *ast_expr_list::release() {
4416 isl_ast_expr_list *tmp = ptr;
4417 ptr = nullptr;
4418 return tmp;
4421 bool ast_expr_list::is_null() const {
4422 return ptr == nullptr;
4424 __isl_keep isl_ast_expr_list *ast_expr_list::keep() const {
4425 return get();
4428 __isl_give isl_ast_expr_list *ast_expr_list::take() {
4429 return release();
4432 ast_expr_list::operator bool() const {
4433 return !is_null();
4437 isl::ctx ast_expr_list::get_ctx() const {
4438 return isl::ctx(isl_ast_expr_list_get_ctx(ptr));
4441 void ast_expr_list::dump() const {
4442 isl_ast_expr_list_dump(get());
4447 // implementations for isl::ast_node
4448 isl::ast_node manage(__isl_take isl_ast_node *ptr) {
4449 return ast_node(ptr);
4451 isl::ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
4452 return ast_node(isl_ast_node_copy(ptr));
4454 isl::ast_node give(__isl_take isl_ast_node *ptr) {
4455 return manage(ptr);
4459 ast_node::ast_node()
4460 : ptr(nullptr) {}
4462 ast_node::ast_node(const isl::ast_node &obj)
4463 : ptr(obj.copy()) {}
4464 ast_node::ast_node(std::nullptr_t)
4465 : ptr(nullptr) {}
4468 ast_node::ast_node(__isl_take isl_ast_node *ptr)
4469 : ptr(ptr) {}
4472 ast_node &ast_node::operator=(isl::ast_node obj) {
4473 std::swap(this->ptr, obj.ptr);
4474 return *this;
4477 ast_node::~ast_node() {
4478 if (ptr)
4479 isl_ast_node_free(ptr);
4482 __isl_give isl_ast_node *ast_node::copy() const & {
4483 return isl_ast_node_copy(ptr);
4486 __isl_keep isl_ast_node *ast_node::get() const {
4487 return ptr;
4490 __isl_give isl_ast_node *ast_node::release() {
4491 isl_ast_node *tmp = ptr;
4492 ptr = nullptr;
4493 return tmp;
4496 bool ast_node::is_null() const {
4497 return ptr == nullptr;
4499 __isl_keep isl_ast_node *ast_node::keep() const {
4500 return get();
4503 __isl_give isl_ast_node *ast_node::take() {
4504 return release();
4507 ast_node::operator bool() const {
4508 return !is_null();
4512 isl::ctx ast_node::get_ctx() const {
4513 return isl::ctx(isl_ast_node_get_ctx(ptr));
4515 std::string ast_node::to_str() const {
4516 char *Tmp = isl_ast_node_to_str(get());
4517 if (!Tmp)
4518 return "";
4519 std::string S(Tmp);
4520 free(Tmp);
4521 return S;
4525 void ast_node::dump() const {
4526 isl_ast_node_dump(get());
4530 isl::ast_node ast_node::alloc_user(isl::ast_expr expr) {
4531 auto res = isl_ast_node_alloc_user(expr.release());
4532 return manage(res);
4535 isl::ast_node_list ast_node::block_get_children() const {
4536 auto res = isl_ast_node_block_get_children(get());
4537 return manage(res);
4540 isl::ast_node ast_node::for_get_body() const {
4541 auto res = isl_ast_node_for_get_body(get());
4542 return manage(res);
4545 isl::ast_expr ast_node::for_get_cond() const {
4546 auto res = isl_ast_node_for_get_cond(get());
4547 return manage(res);
4550 isl::ast_expr ast_node::for_get_inc() const {
4551 auto res = isl_ast_node_for_get_inc(get());
4552 return manage(res);
4555 isl::ast_expr ast_node::for_get_init() const {
4556 auto res = isl_ast_node_for_get_init(get());
4557 return manage(res);
4560 isl::ast_expr ast_node::for_get_iterator() const {
4561 auto res = isl_ast_node_for_get_iterator(get());
4562 return manage(res);
4565 isl::boolean ast_node::for_is_degenerate() const {
4566 auto res = isl_ast_node_for_is_degenerate(get());
4567 return manage(res);
4570 isl::id ast_node::get_annotation() const {
4571 auto res = isl_ast_node_get_annotation(get());
4572 return manage(res);
4575 isl::ast_expr ast_node::if_get_cond() const {
4576 auto res = isl_ast_node_if_get_cond(get());
4577 return manage(res);
4580 isl::ast_node ast_node::if_get_else() const {
4581 auto res = isl_ast_node_if_get_else(get());
4582 return manage(res);
4585 isl::ast_node ast_node::if_get_then() const {
4586 auto res = isl_ast_node_if_get_then(get());
4587 return manage(res);
4590 isl::boolean ast_node::if_has_else() const {
4591 auto res = isl_ast_node_if_has_else(get());
4592 return manage(res);
4595 isl::id ast_node::mark_get_id() const {
4596 auto res = isl_ast_node_mark_get_id(get());
4597 return manage(res);
4600 isl::ast_node ast_node::mark_get_node() const {
4601 auto res = isl_ast_node_mark_get_node(get());
4602 return manage(res);
4605 isl::ast_node ast_node::set_annotation(isl::id annotation) const {
4606 auto res = isl_ast_node_set_annotation(copy(), annotation.release());
4607 return manage(res);
4610 std::string ast_node::to_C_str() const {
4611 auto res = isl_ast_node_to_C_str(get());
4612 std::string tmp(res);
4613 free(res);
4614 return tmp;
4617 isl::ast_expr ast_node::user_get_expr() const {
4618 auto res = isl_ast_node_user_get_expr(get());
4619 return manage(res);
4622 // implementations for isl::ast_node_list
4623 isl::ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
4624 return ast_node_list(ptr);
4626 isl::ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
4627 return ast_node_list(isl_ast_node_list_copy(ptr));
4629 isl::ast_node_list give(__isl_take isl_ast_node_list *ptr) {
4630 return manage(ptr);
4634 ast_node_list::ast_node_list()
4635 : ptr(nullptr) {}
4637 ast_node_list::ast_node_list(const isl::ast_node_list &obj)
4638 : ptr(obj.copy()) {}
4639 ast_node_list::ast_node_list(std::nullptr_t)
4640 : ptr(nullptr) {}
4643 ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
4644 : ptr(ptr) {}
4647 ast_node_list &ast_node_list::operator=(isl::ast_node_list obj) {
4648 std::swap(this->ptr, obj.ptr);
4649 return *this;
4652 ast_node_list::~ast_node_list() {
4653 if (ptr)
4654 isl_ast_node_list_free(ptr);
4657 __isl_give isl_ast_node_list *ast_node_list::copy() const & {
4658 return isl_ast_node_list_copy(ptr);
4661 __isl_keep isl_ast_node_list *ast_node_list::get() const {
4662 return ptr;
4665 __isl_give isl_ast_node_list *ast_node_list::release() {
4666 isl_ast_node_list *tmp = ptr;
4667 ptr = nullptr;
4668 return tmp;
4671 bool ast_node_list::is_null() const {
4672 return ptr == nullptr;
4674 __isl_keep isl_ast_node_list *ast_node_list::keep() const {
4675 return get();
4678 __isl_give isl_ast_node_list *ast_node_list::take() {
4679 return release();
4682 ast_node_list::operator bool() const {
4683 return !is_null();
4687 isl::ctx ast_node_list::get_ctx() const {
4688 return isl::ctx(isl_ast_node_list_get_ctx(ptr));
4691 void ast_node_list::dump() const {
4692 isl_ast_node_list_dump(get());
4697 // implementations for isl::basic_map
4698 isl::basic_map manage(__isl_take isl_basic_map *ptr) {
4699 return basic_map(ptr);
4701 isl::basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
4702 return basic_map(isl_basic_map_copy(ptr));
4704 isl::basic_map give(__isl_take isl_basic_map *ptr) {
4705 return manage(ptr);
4709 basic_map::basic_map()
4710 : ptr(nullptr) {}
4712 basic_map::basic_map(const isl::basic_map &obj)
4713 : ptr(obj.copy()) {}
4714 basic_map::basic_map(std::nullptr_t)
4715 : ptr(nullptr) {}
4718 basic_map::basic_map(__isl_take isl_basic_map *ptr)
4719 : ptr(ptr) {}
4721 basic_map::basic_map(isl::ctx ctx, const std::string &str) {
4722 auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
4723 ptr = res;
4726 basic_map &basic_map::operator=(isl::basic_map obj) {
4727 std::swap(this->ptr, obj.ptr);
4728 return *this;
4731 basic_map::~basic_map() {
4732 if (ptr)
4733 isl_basic_map_free(ptr);
4736 __isl_give isl_basic_map *basic_map::copy() const & {
4737 return isl_basic_map_copy(ptr);
4740 __isl_keep isl_basic_map *basic_map::get() const {
4741 return ptr;
4744 __isl_give isl_basic_map *basic_map::release() {
4745 isl_basic_map *tmp = ptr;
4746 ptr = nullptr;
4747 return tmp;
4750 bool basic_map::is_null() const {
4751 return ptr == nullptr;
4753 __isl_keep isl_basic_map *basic_map::keep() const {
4754 return get();
4757 __isl_give isl_basic_map *basic_map::take() {
4758 return release();
4761 basic_map::operator bool() const {
4762 return !is_null();
4766 isl::ctx basic_map::get_ctx() const {
4767 return isl::ctx(isl_basic_map_get_ctx(ptr));
4769 std::string basic_map::to_str() const {
4770 char *Tmp = isl_basic_map_to_str(get());
4771 if (!Tmp)
4772 return "";
4773 std::string S(Tmp);
4774 free(Tmp);
4775 return S;
4779 void basic_map::dump() const {
4780 isl_basic_map_dump(get());
4784 isl::basic_map basic_map::add_constraint(isl::constraint constraint) const {
4785 auto res = isl_basic_map_add_constraint(copy(), constraint.release());
4786 return manage(res);
4789 isl::basic_map basic_map::add_dims(isl::dim type, unsigned int n) const {
4790 auto res = isl_basic_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
4791 return manage(res);
4794 isl::basic_map basic_map::affine_hull() const {
4795 auto res = isl_basic_map_affine_hull(copy());
4796 return manage(res);
4799 isl::basic_map basic_map::align_params(isl::space model) const {
4800 auto res = isl_basic_map_align_params(copy(), model.release());
4801 return manage(res);
4804 isl::basic_map basic_map::apply_domain(isl::basic_map bmap2) const {
4805 auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
4806 return manage(res);
4809 isl::basic_map basic_map::apply_range(isl::basic_map bmap2) const {
4810 auto res = isl_basic_map_apply_range(copy(), bmap2.release());
4811 return manage(res);
4814 isl::boolean basic_map::can_curry() const {
4815 auto res = isl_basic_map_can_curry(get());
4816 return manage(res);
4819 isl::boolean basic_map::can_uncurry() const {
4820 auto res = isl_basic_map_can_uncurry(get());
4821 return manage(res);
4824 isl::boolean basic_map::can_zip() const {
4825 auto res = isl_basic_map_can_zip(get());
4826 return manage(res);
4829 isl::basic_map basic_map::curry() const {
4830 auto res = isl_basic_map_curry(copy());
4831 return manage(res);
4834 isl::basic_set basic_map::deltas() const {
4835 auto res = isl_basic_map_deltas(copy());
4836 return manage(res);
4839 isl::basic_map basic_map::deltas_map() const {
4840 auto res = isl_basic_map_deltas_map(copy());
4841 return manage(res);
4844 isl::basic_map basic_map::detect_equalities() const {
4845 auto res = isl_basic_map_detect_equalities(copy());
4846 return manage(res);
4849 unsigned int basic_map::dim(isl::dim type) const {
4850 auto res = isl_basic_map_dim(get(), static_cast<enum isl_dim_type>(type));
4851 return res;
4854 isl::basic_set basic_map::domain() const {
4855 auto res = isl_basic_map_domain(copy());
4856 return manage(res);
4859 isl::basic_map basic_map::domain_map() const {
4860 auto res = isl_basic_map_domain_map(copy());
4861 return manage(res);
4864 isl::basic_map basic_map::domain_product(isl::basic_map bmap2) const {
4865 auto res = isl_basic_map_domain_product(copy(), bmap2.release());
4866 return manage(res);
4869 isl::basic_map basic_map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
4870 auto res = isl_basic_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
4871 return manage(res);
4874 isl::basic_map basic_map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
4875 auto res = isl_basic_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
4876 return manage(res);
4879 isl::basic_map basic_map::eliminate(isl::dim type, unsigned int first, unsigned int n) const {
4880 auto res = isl_basic_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
4881 return manage(res);
4884 isl::basic_map basic_map::empty(isl::space space) {
4885 auto res = isl_basic_map_empty(space.release());
4886 return manage(res);
4889 isl::basic_map basic_map::equal(isl::space dim, unsigned int n_equal) {
4890 auto res = isl_basic_map_equal(dim.release(), n_equal);
4891 return manage(res);
4894 isl::mat basic_map::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const {
4895 auto res = isl_basic_map_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
4896 return manage(res);
4899 isl::basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
4900 auto res = isl_basic_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
4901 return manage(res);
4904 int basic_map::find_dim_by_name(isl::dim type, const std::string &name) const {
4905 auto res = isl_basic_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
4906 return res;
4909 isl::basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const {
4910 auto res = isl_basic_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
4911 return manage(res);
4914 isl::basic_map basic_map::fix_val(isl::dim type, unsigned int pos, isl::val v) const {
4915 auto res = isl_basic_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
4916 return manage(res);
4919 isl::basic_map basic_map::flat_product(isl::basic_map bmap2) const {
4920 auto res = isl_basic_map_flat_product(copy(), bmap2.release());
4921 return manage(res);
4924 isl::basic_map basic_map::flat_range_product(isl::basic_map bmap2) const {
4925 auto res = isl_basic_map_flat_range_product(copy(), bmap2.release());
4926 return manage(res);
4929 isl::basic_map basic_map::flatten() const {
4930 auto res = isl_basic_map_flatten(copy());
4931 return manage(res);
4934 isl::basic_map basic_map::flatten_domain() const {
4935 auto res = isl_basic_map_flatten_domain(copy());
4936 return manage(res);
4939 isl::basic_map basic_map::flatten_range() const {
4940 auto res = isl_basic_map_flatten_range(copy());
4941 return manage(res);
4944 isl::stat basic_map::foreach_constraint(const std::function<isl::stat(isl::constraint)> &fn) const {
4945 auto fn_p = &fn;
4946 auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
4947 auto *func = *static_cast<const std::function<isl::stat(isl::constraint)> **>(arg_1);
4948 stat ret = (*func)(isl::manage(arg_0));
4949 return isl_stat(ret);
4951 auto res = isl_basic_map_foreach_constraint(get(), fn_lambda, &fn_p);
4952 return isl::stat(res);
4955 isl::basic_map basic_map::from_aff(isl::aff aff) {
4956 auto res = isl_basic_map_from_aff(aff.release());
4957 return manage(res);
4960 isl::basic_map basic_map::from_aff_list(isl::space domain_dim, isl::aff_list list) {
4961 auto res = isl_basic_map_from_aff_list(domain_dim.release(), list.release());
4962 return manage(res);
4965 isl::basic_map basic_map::from_constraint(isl::constraint constraint) {
4966 auto res = isl_basic_map_from_constraint(constraint.release());
4967 return manage(res);
4970 isl::basic_map basic_map::from_domain(isl::basic_set bset) {
4971 auto res = isl_basic_map_from_domain(bset.release());
4972 return manage(res);
4975 isl::basic_map basic_map::from_domain_and_range(isl::basic_set domain, isl::basic_set range) {
4976 auto res = isl_basic_map_from_domain_and_range(domain.release(), range.release());
4977 return manage(res);
4980 isl::basic_map basic_map::from_multi_aff(isl::multi_aff maff) {
4981 auto res = isl_basic_map_from_multi_aff(maff.release());
4982 return manage(res);
4985 isl::basic_map basic_map::from_qpolynomial(isl::qpolynomial qp) {
4986 auto res = isl_basic_map_from_qpolynomial(qp.release());
4987 return manage(res);
4990 isl::basic_map basic_map::from_range(isl::basic_set bset) {
4991 auto res = isl_basic_map_from_range(bset.release());
4992 return manage(res);
4995 isl::constraint_list basic_map::get_constraint_list() const {
4996 auto res = isl_basic_map_get_constraint_list(get());
4997 return manage(res);
5000 std::string basic_map::get_dim_name(isl::dim type, unsigned int pos) const {
5001 auto res = isl_basic_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
5002 std::string tmp(res);
5003 return tmp;
5006 isl::aff basic_map::get_div(int pos) const {
5007 auto res = isl_basic_map_get_div(get(), pos);
5008 return manage(res);
5011 isl::local_space basic_map::get_local_space() const {
5012 auto res = isl_basic_map_get_local_space(get());
5013 return manage(res);
5016 isl::space basic_map::get_space() const {
5017 auto res = isl_basic_map_get_space(get());
5018 return manage(res);
5021 std::string basic_map::get_tuple_name(isl::dim type) const {
5022 auto res = isl_basic_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
5023 std::string tmp(res);
5024 return tmp;
5027 isl::basic_map basic_map::gist(isl::basic_map context) const {
5028 auto res = isl_basic_map_gist(copy(), context.release());
5029 return manage(res);
5032 isl::basic_map basic_map::gist_domain(isl::basic_set context) const {
5033 auto res = isl_basic_map_gist_domain(copy(), context.release());
5034 return manage(res);
5037 isl::boolean basic_map::has_dim_id(isl::dim type, unsigned int pos) const {
5038 auto res = isl_basic_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
5039 return manage(res);
5042 isl::basic_map basic_map::identity(isl::space dim) {
5043 auto res = isl_basic_map_identity(dim.release());
5044 return manage(res);
5047 isl::boolean basic_map::image_is_bounded() const {
5048 auto res = isl_basic_map_image_is_bounded(get());
5049 return manage(res);
5052 isl::mat basic_map::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const {
5053 auto res = isl_basic_map_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
5054 return manage(res);
5057 isl::basic_map basic_map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const {
5058 auto res = isl_basic_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
5059 return manage(res);
5062 isl::basic_map basic_map::intersect(isl::basic_map bmap2) const {
5063 auto res = isl_basic_map_intersect(copy(), bmap2.release());
5064 return manage(res);
5067 isl::basic_map basic_map::intersect_domain(isl::basic_set bset) const {
5068 auto res = isl_basic_map_intersect_domain(copy(), bset.release());
5069 return manage(res);
5072 isl::basic_map basic_map::intersect_range(isl::basic_set bset) const {
5073 auto res = isl_basic_map_intersect_range(copy(), bset.release());
5074 return manage(res);
5077 isl::boolean basic_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
5078 auto res = isl_basic_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
5079 return manage(res);
5082 isl::boolean basic_map::is_disjoint(const isl::basic_map &bmap2) const {
5083 auto res = isl_basic_map_is_disjoint(get(), bmap2.get());
5084 return manage(res);
5087 isl::boolean basic_map::is_empty() const {
5088 auto res = isl_basic_map_is_empty(get());
5089 return manage(res);
5092 isl::boolean basic_map::is_equal(const isl::basic_map &bmap2) const {
5093 auto res = isl_basic_map_is_equal(get(), bmap2.get());
5094 return manage(res);
5097 isl::boolean basic_map::is_rational() const {
5098 auto res = isl_basic_map_is_rational(get());
5099 return manage(res);
5102 isl::boolean basic_map::is_single_valued() const {
5103 auto res = isl_basic_map_is_single_valued(get());
5104 return manage(res);
5107 isl::boolean basic_map::is_strict_subset(const isl::basic_map &bmap2) const {
5108 auto res = isl_basic_map_is_strict_subset(get(), bmap2.get());
5109 return manage(res);
5112 isl::boolean basic_map::is_subset(const isl::basic_map &bmap2) const {
5113 auto res = isl_basic_map_is_subset(get(), bmap2.get());
5114 return manage(res);
5117 isl::boolean basic_map::is_universe() const {
5118 auto res = isl_basic_map_is_universe(get());
5119 return manage(res);
5122 isl::basic_map basic_map::less_at(isl::space dim, unsigned int pos) {
5123 auto res = isl_basic_map_less_at(dim.release(), pos);
5124 return manage(res);
5127 isl::map basic_map::lexmax() const {
5128 auto res = isl_basic_map_lexmax(copy());
5129 return manage(res);
5132 isl::map basic_map::lexmin() const {
5133 auto res = isl_basic_map_lexmin(copy());
5134 return manage(res);
5137 isl::pw_multi_aff basic_map::lexmin_pw_multi_aff() const {
5138 auto res = isl_basic_map_lexmin_pw_multi_aff(copy());
5139 return manage(res);
5142 isl::basic_map basic_map::lower_bound_si(isl::dim type, unsigned int pos, int value) const {
5143 auto res = isl_basic_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5144 return manage(res);
5147 isl::basic_map basic_map::more_at(isl::space dim, unsigned int pos) {
5148 auto res = isl_basic_map_more_at(dim.release(), pos);
5149 return manage(res);
5152 isl::basic_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 {
5153 auto res = isl_basic_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
5154 return manage(res);
5157 isl::basic_map basic_map::nat_universe(isl::space dim) {
5158 auto res = isl_basic_map_nat_universe(dim.release());
5159 return manage(res);
5162 isl::basic_map basic_map::neg() const {
5163 auto res = isl_basic_map_neg(copy());
5164 return manage(res);
5167 isl::basic_map basic_map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
5168 auto res = isl_basic_map_order_ge(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5169 return manage(res);
5172 isl::basic_map basic_map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
5173 auto res = isl_basic_map_order_gt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5174 return manage(res);
5177 isl::val basic_map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const {
5178 auto res = isl_basic_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
5179 return manage(res);
5182 isl::boolean basic_map::plain_is_empty() const {
5183 auto res = isl_basic_map_plain_is_empty(get());
5184 return manage(res);
5187 isl::boolean basic_map::plain_is_universe() const {
5188 auto res = isl_basic_map_plain_is_universe(get());
5189 return manage(res);
5192 isl::basic_map basic_map::preimage_domain_multi_aff(isl::multi_aff ma) const {
5193 auto res = isl_basic_map_preimage_domain_multi_aff(copy(), ma.release());
5194 return manage(res);
5197 isl::basic_map basic_map::preimage_range_multi_aff(isl::multi_aff ma) const {
5198 auto res = isl_basic_map_preimage_range_multi_aff(copy(), ma.release());
5199 return manage(res);
5202 isl::basic_map basic_map::product(isl::basic_map bmap2) const {
5203 auto res = isl_basic_map_product(copy(), bmap2.release());
5204 return manage(res);
5207 isl::basic_map basic_map::project_out(isl::dim type, unsigned int first, unsigned int n) const {
5208 auto res = isl_basic_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
5209 return manage(res);
5212 isl::basic_set basic_map::range() const {
5213 auto res = isl_basic_map_range(copy());
5214 return manage(res);
5217 isl::basic_map basic_map::range_map() const {
5218 auto res = isl_basic_map_range_map(copy());
5219 return manage(res);
5222 isl::basic_map basic_map::range_product(isl::basic_map bmap2) const {
5223 auto res = isl_basic_map_range_product(copy(), bmap2.release());
5224 return manage(res);
5227 isl::basic_map basic_map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const {
5228 auto res = isl_basic_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5229 return manage(res);
5232 isl::basic_map basic_map::remove_divs() const {
5233 auto res = isl_basic_map_remove_divs(copy());
5234 return manage(res);
5237 isl::basic_map basic_map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
5238 auto res = isl_basic_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5239 return manage(res);
5242 isl::basic_map basic_map::remove_redundancies() const {
5243 auto res = isl_basic_map_remove_redundancies(copy());
5244 return manage(res);
5247 isl::basic_map basic_map::reverse() const {
5248 auto res = isl_basic_map_reverse(copy());
5249 return manage(res);
5252 isl::basic_map basic_map::sample() const {
5253 auto res = isl_basic_map_sample(copy());
5254 return manage(res);
5257 isl::basic_map basic_map::set_tuple_id(isl::dim type, isl::id id) const {
5258 auto res = isl_basic_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
5259 return manage(res);
5262 isl::basic_map basic_map::set_tuple_name(isl::dim type, const std::string &s) const {
5263 auto res = isl_basic_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
5264 return manage(res);
5267 isl::basic_map basic_map::sum(isl::basic_map bmap2) const {
5268 auto res = isl_basic_map_sum(copy(), bmap2.release());
5269 return manage(res);
5272 isl::basic_map basic_map::uncurry() const {
5273 auto res = isl_basic_map_uncurry(copy());
5274 return manage(res);
5277 isl::map basic_map::unite(isl::basic_map bmap2) const {
5278 auto res = isl_basic_map_union(copy(), bmap2.release());
5279 return manage(res);
5282 isl::basic_map basic_map::universe(isl::space space) {
5283 auto res = isl_basic_map_universe(space.release());
5284 return manage(res);
5287 isl::basic_map basic_map::upper_bound_si(isl::dim type, unsigned int pos, int value) const {
5288 auto res = isl_basic_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5289 return manage(res);
5292 isl::basic_set basic_map::wrap() const {
5293 auto res = isl_basic_map_wrap(copy());
5294 return manage(res);
5297 isl::basic_map basic_map::zip() const {
5298 auto res = isl_basic_map_zip(copy());
5299 return manage(res);
5302 // implementations for isl::basic_map_list
5303 isl::basic_map_list manage(__isl_take isl_basic_map_list *ptr) {
5304 return basic_map_list(ptr);
5306 isl::basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) {
5307 return basic_map_list(isl_basic_map_list_copy(ptr));
5309 isl::basic_map_list give(__isl_take isl_basic_map_list *ptr) {
5310 return manage(ptr);
5314 basic_map_list::basic_map_list()
5315 : ptr(nullptr) {}
5317 basic_map_list::basic_map_list(const isl::basic_map_list &obj)
5318 : ptr(obj.copy()) {}
5319 basic_map_list::basic_map_list(std::nullptr_t)
5320 : ptr(nullptr) {}
5323 basic_map_list::basic_map_list(__isl_take isl_basic_map_list *ptr)
5324 : ptr(ptr) {}
5327 basic_map_list &basic_map_list::operator=(isl::basic_map_list obj) {
5328 std::swap(this->ptr, obj.ptr);
5329 return *this;
5332 basic_map_list::~basic_map_list() {
5333 if (ptr)
5334 isl_basic_map_list_free(ptr);
5337 __isl_give isl_basic_map_list *basic_map_list::copy() const & {
5338 return isl_basic_map_list_copy(ptr);
5341 __isl_keep isl_basic_map_list *basic_map_list::get() const {
5342 return ptr;
5345 __isl_give isl_basic_map_list *basic_map_list::release() {
5346 isl_basic_map_list *tmp = ptr;
5347 ptr = nullptr;
5348 return tmp;
5351 bool basic_map_list::is_null() const {
5352 return ptr == nullptr;
5354 __isl_keep isl_basic_map_list *basic_map_list::keep() const {
5355 return get();
5358 __isl_give isl_basic_map_list *basic_map_list::take() {
5359 return release();
5362 basic_map_list::operator bool() const {
5363 return !is_null();
5367 isl::ctx basic_map_list::get_ctx() const {
5368 return isl::ctx(isl_basic_map_list_get_ctx(ptr));
5371 void basic_map_list::dump() const {
5372 isl_basic_map_list_dump(get());
5377 // implementations for isl::basic_set
5378 isl::basic_set manage(__isl_take isl_basic_set *ptr) {
5379 return basic_set(ptr);
5381 isl::basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
5382 return basic_set(isl_basic_set_copy(ptr));
5384 isl::basic_set give(__isl_take isl_basic_set *ptr) {
5385 return manage(ptr);
5389 basic_set::basic_set()
5390 : ptr(nullptr) {}
5392 basic_set::basic_set(const isl::basic_set &obj)
5393 : ptr(obj.copy()) {}
5394 basic_set::basic_set(std::nullptr_t)
5395 : ptr(nullptr) {}
5398 basic_set::basic_set(__isl_take isl_basic_set *ptr)
5399 : ptr(ptr) {}
5401 basic_set::basic_set(isl::ctx ctx, const std::string &str) {
5402 auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
5403 ptr = res;
5405 basic_set::basic_set(isl::point pnt) {
5406 auto res = isl_basic_set_from_point(pnt.release());
5407 ptr = res;
5410 basic_set &basic_set::operator=(isl::basic_set obj) {
5411 std::swap(this->ptr, obj.ptr);
5412 return *this;
5415 basic_set::~basic_set() {
5416 if (ptr)
5417 isl_basic_set_free(ptr);
5420 __isl_give isl_basic_set *basic_set::copy() const & {
5421 return isl_basic_set_copy(ptr);
5424 __isl_keep isl_basic_set *basic_set::get() const {
5425 return ptr;
5428 __isl_give isl_basic_set *basic_set::release() {
5429 isl_basic_set *tmp = ptr;
5430 ptr = nullptr;
5431 return tmp;
5434 bool basic_set::is_null() const {
5435 return ptr == nullptr;
5437 __isl_keep isl_basic_set *basic_set::keep() const {
5438 return get();
5441 __isl_give isl_basic_set *basic_set::take() {
5442 return release();
5445 basic_set::operator bool() const {
5446 return !is_null();
5450 isl::ctx basic_set::get_ctx() const {
5451 return isl::ctx(isl_basic_set_get_ctx(ptr));
5453 std::string basic_set::to_str() const {
5454 char *Tmp = isl_basic_set_to_str(get());
5455 if (!Tmp)
5456 return "";
5457 std::string S(Tmp);
5458 free(Tmp);
5459 return S;
5463 void basic_set::dump() const {
5464 isl_basic_set_dump(get());
5468 isl::basic_set basic_set::affine_hull() const {
5469 auto res = isl_basic_set_affine_hull(copy());
5470 return manage(res);
5473 isl::basic_set basic_set::align_params(isl::space model) const {
5474 auto res = isl_basic_set_align_params(copy(), model.release());
5475 return manage(res);
5478 isl::basic_set basic_set::apply(isl::basic_map bmap) const {
5479 auto res = isl_basic_set_apply(copy(), bmap.release());
5480 return manage(res);
5483 isl::basic_set basic_set::box_from_points(isl::point pnt1, isl::point pnt2) {
5484 auto res = isl_basic_set_box_from_points(pnt1.release(), pnt2.release());
5485 return manage(res);
5488 isl::basic_set basic_set::coefficients() const {
5489 auto res = isl_basic_set_coefficients(copy());
5490 return manage(res);
5493 isl::basic_set basic_set::detect_equalities() const {
5494 auto res = isl_basic_set_detect_equalities(copy());
5495 return manage(res);
5498 unsigned int basic_set::dim(isl::dim type) const {
5499 auto res = isl_basic_set_dim(get(), static_cast<enum isl_dim_type>(type));
5500 return res;
5503 isl::basic_set basic_set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
5504 auto res = isl_basic_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5505 return manage(res);
5508 isl::basic_set basic_set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
5509 auto res = isl_basic_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5510 return manage(res);
5513 isl::basic_set basic_set::eliminate(isl::dim type, unsigned int first, unsigned int n) const {
5514 auto res = isl_basic_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
5515 return manage(res);
5518 isl::basic_set basic_set::empty(isl::space space) {
5519 auto res = isl_basic_set_empty(space.release());
5520 return manage(res);
5523 isl::mat basic_set::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const {
5524 auto res = isl_basic_set_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
5525 return manage(res);
5528 isl::basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const {
5529 auto res = isl_basic_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5530 return manage(res);
5533 isl::basic_set basic_set::fix_val(isl::dim type, unsigned int pos, isl::val v) const {
5534 auto res = isl_basic_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
5535 return manage(res);
5538 isl::basic_set basic_set::flat_product(isl::basic_set bset2) const {
5539 auto res = isl_basic_set_flat_product(copy(), bset2.release());
5540 return manage(res);
5543 isl::basic_set basic_set::flatten() const {
5544 auto res = isl_basic_set_flatten(copy());
5545 return manage(res);
5548 isl::stat basic_set::foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<isl::stat(isl::constraint, isl::constraint, isl::basic_set)> &fn) const {
5549 auto fn_p = &fn;
5550 auto fn_lambda = [](isl_constraint *arg_0, isl_constraint *arg_1, isl_basic_set *arg_2, void *arg_3) -> isl_stat {
5551 auto *func = *static_cast<const std::function<isl::stat(isl::constraint, isl::constraint, isl::basic_set)> **>(arg_3);
5552 stat ret = (*func)(isl::manage(arg_0), isl::manage(arg_1), isl::manage(arg_2));
5553 return isl_stat(ret);
5555 auto res = isl_basic_set_foreach_bound_pair(get(), static_cast<enum isl_dim_type>(type), pos, fn_lambda, &fn_p);
5556 return isl::stat(res);
5559 isl::stat basic_set::foreach_constraint(const std::function<isl::stat(isl::constraint)> &fn) const {
5560 auto fn_p = &fn;
5561 auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
5562 auto *func = *static_cast<const std::function<isl::stat(isl::constraint)> **>(arg_1);
5563 stat ret = (*func)(isl::manage(arg_0));
5564 return isl_stat(ret);
5566 auto res = isl_basic_set_foreach_constraint(get(), fn_lambda, &fn_p);
5567 return isl::stat(res);
5570 isl::basic_set basic_set::from_constraint(isl::constraint constraint) {
5571 auto res = isl_basic_set_from_constraint(constraint.release());
5572 return manage(res);
5575 isl::basic_set basic_set::from_params() const {
5576 auto res = isl_basic_set_from_params(copy());
5577 return manage(res);
5580 isl::constraint_list basic_set::get_constraint_list() const {
5581 auto res = isl_basic_set_get_constraint_list(get());
5582 return manage(res);
5585 isl::id basic_set::get_dim_id(isl::dim type, unsigned int pos) const {
5586 auto res = isl_basic_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
5587 return manage(res);
5590 std::string basic_set::get_dim_name(isl::dim type, unsigned int pos) const {
5591 auto res = isl_basic_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
5592 std::string tmp(res);
5593 return tmp;
5596 isl::aff basic_set::get_div(int pos) const {
5597 auto res = isl_basic_set_get_div(get(), pos);
5598 return manage(res);
5601 isl::local_space basic_set::get_local_space() const {
5602 auto res = isl_basic_set_get_local_space(get());
5603 return manage(res);
5606 isl::space basic_set::get_space() const {
5607 auto res = isl_basic_set_get_space(get());
5608 return manage(res);
5611 std::string basic_set::get_tuple_name() const {
5612 auto res = isl_basic_set_get_tuple_name(get());
5613 std::string tmp(res);
5614 return tmp;
5617 isl::basic_set basic_set::gist(isl::basic_set context) const {
5618 auto res = isl_basic_set_gist(copy(), context.release());
5619 return manage(res);
5622 isl::mat basic_set::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const {
5623 auto res = isl_basic_set_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
5624 return manage(res);
5627 isl::basic_set basic_set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const {
5628 auto res = isl_basic_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
5629 return manage(res);
5632 isl::basic_set basic_set::intersect(isl::basic_set bset2) const {
5633 auto res = isl_basic_set_intersect(copy(), bset2.release());
5634 return manage(res);
5637 isl::basic_set basic_set::intersect_params(isl::basic_set bset2) const {
5638 auto res = isl_basic_set_intersect_params(copy(), bset2.release());
5639 return manage(res);
5642 isl::boolean basic_set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
5643 auto res = isl_basic_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
5644 return manage(res);
5647 isl::boolean basic_set::is_bounded() const {
5648 auto res = isl_basic_set_is_bounded(get());
5649 return manage(res);
5652 isl::boolean basic_set::is_disjoint(const isl::basic_set &bset2) const {
5653 auto res = isl_basic_set_is_disjoint(get(), bset2.get());
5654 return manage(res);
5657 isl::boolean basic_set::is_empty() const {
5658 auto res = isl_basic_set_is_empty(get());
5659 return manage(res);
5662 isl::boolean basic_set::is_equal(const isl::basic_set &bset2) const {
5663 auto res = isl_basic_set_is_equal(get(), bset2.get());
5664 return manage(res);
5667 int basic_set::is_rational() const {
5668 auto res = isl_basic_set_is_rational(get());
5669 return res;
5672 isl::boolean basic_set::is_subset(const isl::basic_set &bset2) const {
5673 auto res = isl_basic_set_is_subset(get(), bset2.get());
5674 return manage(res);
5677 isl::boolean basic_set::is_universe() const {
5678 auto res = isl_basic_set_is_universe(get());
5679 return manage(res);
5682 isl::boolean basic_set::is_wrapping() const {
5683 auto res = isl_basic_set_is_wrapping(get());
5684 return manage(res);
5687 isl::set basic_set::lexmax() const {
5688 auto res = isl_basic_set_lexmax(copy());
5689 return manage(res);
5692 isl::set basic_set::lexmin() const {
5693 auto res = isl_basic_set_lexmin(copy());
5694 return manage(res);
5697 isl::basic_set basic_set::lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const {
5698 auto res = isl_basic_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
5699 return manage(res);
5702 isl::val basic_set::max_val(const isl::aff &obj) const {
5703 auto res = isl_basic_set_max_val(get(), obj.get());
5704 return manage(res);
5707 isl::basic_set basic_set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
5708 auto res = isl_basic_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
5709 return manage(res);
5712 isl::basic_set basic_set::nat_universe(isl::space dim) {
5713 auto res = isl_basic_set_nat_universe(dim.release());
5714 return manage(res);
5717 isl::basic_set basic_set::neg() const {
5718 auto res = isl_basic_set_neg(copy());
5719 return manage(res);
5722 isl::basic_set basic_set::params() const {
5723 auto res = isl_basic_set_params(copy());
5724 return manage(res);
5727 isl::boolean basic_set::plain_is_empty() const {
5728 auto res = isl_basic_set_plain_is_empty(get());
5729 return manage(res);
5732 isl::boolean basic_set::plain_is_equal(const isl::basic_set &bset2) const {
5733 auto res = isl_basic_set_plain_is_equal(get(), bset2.get());
5734 return manage(res);
5737 isl::boolean basic_set::plain_is_universe() const {
5738 auto res = isl_basic_set_plain_is_universe(get());
5739 return manage(res);
5742 isl::basic_set basic_set::positive_orthant(isl::space space) {
5743 auto res = isl_basic_set_positive_orthant(space.release());
5744 return manage(res);
5747 isl::basic_set basic_set::preimage_multi_aff(isl::multi_aff ma) const {
5748 auto res = isl_basic_set_preimage_multi_aff(copy(), ma.release());
5749 return manage(res);
5752 isl::basic_set basic_set::project_out(isl::dim type, unsigned int first, unsigned int n) const {
5753 auto res = isl_basic_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
5754 return manage(res);
5757 isl::mat basic_set::reduced_basis() const {
5758 auto res = isl_basic_set_reduced_basis(get());
5759 return manage(res);
5762 isl::basic_set basic_set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const {
5763 auto res = isl_basic_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5764 return manage(res);
5767 isl::basic_set basic_set::remove_divs() const {
5768 auto res = isl_basic_set_remove_divs(copy());
5769 return manage(res);
5772 isl::basic_set basic_set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
5773 auto res = isl_basic_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5774 return manage(res);
5777 isl::basic_set basic_set::remove_redundancies() const {
5778 auto res = isl_basic_set_remove_redundancies(copy());
5779 return manage(res);
5782 isl::basic_set basic_set::remove_unknown_divs() const {
5783 auto res = isl_basic_set_remove_unknown_divs(copy());
5784 return manage(res);
5787 isl::basic_set basic_set::sample() const {
5788 auto res = isl_basic_set_sample(copy());
5789 return manage(res);
5792 isl::point basic_set::sample_point() const {
5793 auto res = isl_basic_set_sample_point(copy());
5794 return manage(res);
5797 isl::basic_set basic_set::set_tuple_id(isl::id id) const {
5798 auto res = isl_basic_set_set_tuple_id(copy(), id.release());
5799 return manage(res);
5802 isl::basic_set basic_set::set_tuple_name(const std::string &s) const {
5803 auto res = isl_basic_set_set_tuple_name(copy(), s.c_str());
5804 return manage(res);
5807 isl::basic_set basic_set::solutions() const {
5808 auto res = isl_basic_set_solutions(copy());
5809 return manage(res);
5812 isl::set basic_set::unite(isl::basic_set bset2) const {
5813 auto res = isl_basic_set_union(copy(), bset2.release());
5814 return manage(res);
5817 isl::basic_set basic_set::universe(isl::space space) {
5818 auto res = isl_basic_set_universe(space.release());
5819 return manage(res);
5822 isl::basic_map basic_set::unwrap() const {
5823 auto res = isl_basic_set_unwrap(copy());
5824 return manage(res);
5827 isl::basic_set basic_set::upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const {
5828 auto res = isl_basic_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
5829 return manage(res);
5832 // implementations for isl::basic_set_list
5833 isl::basic_set_list manage(__isl_take isl_basic_set_list *ptr) {
5834 return basic_set_list(ptr);
5836 isl::basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr) {
5837 return basic_set_list(isl_basic_set_list_copy(ptr));
5839 isl::basic_set_list give(__isl_take isl_basic_set_list *ptr) {
5840 return manage(ptr);
5844 basic_set_list::basic_set_list()
5845 : ptr(nullptr) {}
5847 basic_set_list::basic_set_list(const isl::basic_set_list &obj)
5848 : ptr(obj.copy()) {}
5849 basic_set_list::basic_set_list(std::nullptr_t)
5850 : ptr(nullptr) {}
5853 basic_set_list::basic_set_list(__isl_take isl_basic_set_list *ptr)
5854 : ptr(ptr) {}
5857 basic_set_list &basic_set_list::operator=(isl::basic_set_list obj) {
5858 std::swap(this->ptr, obj.ptr);
5859 return *this;
5862 basic_set_list::~basic_set_list() {
5863 if (ptr)
5864 isl_basic_set_list_free(ptr);
5867 __isl_give isl_basic_set_list *basic_set_list::copy() const & {
5868 return isl_basic_set_list_copy(ptr);
5871 __isl_keep isl_basic_set_list *basic_set_list::get() const {
5872 return ptr;
5875 __isl_give isl_basic_set_list *basic_set_list::release() {
5876 isl_basic_set_list *tmp = ptr;
5877 ptr = nullptr;
5878 return tmp;
5881 bool basic_set_list::is_null() const {
5882 return ptr == nullptr;
5884 __isl_keep isl_basic_set_list *basic_set_list::keep() const {
5885 return get();
5888 __isl_give isl_basic_set_list *basic_set_list::take() {
5889 return release();
5892 basic_set_list::operator bool() const {
5893 return !is_null();
5897 isl::ctx basic_set_list::get_ctx() const {
5898 return isl::ctx(isl_basic_set_list_get_ctx(ptr));
5901 void basic_set_list::dump() const {
5902 isl_basic_set_list_dump(get());
5907 // implementations for isl::constraint
5908 isl::constraint manage(__isl_take isl_constraint *ptr) {
5909 return constraint(ptr);
5911 isl::constraint manage_copy(__isl_keep isl_constraint *ptr) {
5912 return constraint(isl_constraint_copy(ptr));
5914 isl::constraint give(__isl_take isl_constraint *ptr) {
5915 return manage(ptr);
5919 constraint::constraint()
5920 : ptr(nullptr) {}
5922 constraint::constraint(const isl::constraint &obj)
5923 : ptr(obj.copy()) {}
5924 constraint::constraint(std::nullptr_t)
5925 : ptr(nullptr) {}
5928 constraint::constraint(__isl_take isl_constraint *ptr)
5929 : ptr(ptr) {}
5932 constraint &constraint::operator=(isl::constraint obj) {
5933 std::swap(this->ptr, obj.ptr);
5934 return *this;
5937 constraint::~constraint() {
5938 if (ptr)
5939 isl_constraint_free(ptr);
5942 __isl_give isl_constraint *constraint::copy() const & {
5943 return isl_constraint_copy(ptr);
5946 __isl_keep isl_constraint *constraint::get() const {
5947 return ptr;
5950 __isl_give isl_constraint *constraint::release() {
5951 isl_constraint *tmp = ptr;
5952 ptr = nullptr;
5953 return tmp;
5956 bool constraint::is_null() const {
5957 return ptr == nullptr;
5959 __isl_keep isl_constraint *constraint::keep() const {
5960 return get();
5963 __isl_give isl_constraint *constraint::take() {
5964 return release();
5967 constraint::operator bool() const {
5968 return !is_null();
5972 isl::ctx constraint::get_ctx() const {
5973 return isl::ctx(isl_constraint_get_ctx(ptr));
5976 void constraint::dump() const {
5977 isl_constraint_dump(get());
5981 isl::constraint constraint::alloc_equality(isl::local_space ls) {
5982 auto res = isl_constraint_alloc_equality(ls.release());
5983 return manage(res);
5986 isl::constraint constraint::alloc_inequality(isl::local_space ls) {
5987 auto res = isl_constraint_alloc_inequality(ls.release());
5988 return manage(res);
5991 int constraint::cmp_last_non_zero(const isl::constraint &c2) const {
5992 auto res = isl_constraint_cmp_last_non_zero(get(), c2.get());
5993 return res;
5996 isl::aff constraint::get_aff() const {
5997 auto res = isl_constraint_get_aff(get());
5998 return manage(res);
6001 isl::aff constraint::get_bound(isl::dim type, int pos) const {
6002 auto res = isl_constraint_get_bound(get(), static_cast<enum isl_dim_type>(type), pos);
6003 return manage(res);
6006 isl::val constraint::get_coefficient_val(isl::dim type, int pos) const {
6007 auto res = isl_constraint_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
6008 return manage(res);
6011 isl::val constraint::get_constant_val() const {
6012 auto res = isl_constraint_get_constant_val(get());
6013 return manage(res);
6016 std::string constraint::get_dim_name(isl::dim type, unsigned int pos) const {
6017 auto res = isl_constraint_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
6018 std::string tmp(res);
6019 return tmp;
6022 isl::aff constraint::get_div(int pos) const {
6023 auto res = isl_constraint_get_div(get(), pos);
6024 return manage(res);
6027 isl::local_space constraint::get_local_space() const {
6028 auto res = isl_constraint_get_local_space(get());
6029 return manage(res);
6032 isl::space constraint::get_space() const {
6033 auto res = isl_constraint_get_space(get());
6034 return manage(res);
6037 isl::boolean constraint::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
6038 auto res = isl_constraint_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
6039 return manage(res);
6042 int constraint::is_div_constraint() const {
6043 auto res = isl_constraint_is_div_constraint(get());
6044 return res;
6047 isl::boolean constraint::is_lower_bound(isl::dim type, unsigned int pos) const {
6048 auto res = isl_constraint_is_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
6049 return manage(res);
6052 isl::boolean constraint::is_upper_bound(isl::dim type, unsigned int pos) const {
6053 auto res = isl_constraint_is_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
6054 return manage(res);
6057 int constraint::plain_cmp(const isl::constraint &c2) const {
6058 auto res = isl_constraint_plain_cmp(get(), c2.get());
6059 return res;
6062 isl::constraint constraint::set_coefficient_si(isl::dim type, int pos, int v) const {
6063 auto res = isl_constraint_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
6064 return manage(res);
6067 isl::constraint constraint::set_coefficient_val(isl::dim type, int pos, isl::val v) const {
6068 auto res = isl_constraint_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
6069 return manage(res);
6072 isl::constraint constraint::set_constant_si(int v) const {
6073 auto res = isl_constraint_set_constant_si(copy(), v);
6074 return manage(res);
6077 isl::constraint constraint::set_constant_val(isl::val v) const {
6078 auto res = isl_constraint_set_constant_val(copy(), v.release());
6079 return manage(res);
6082 // implementations for isl::constraint_list
6083 isl::constraint_list manage(__isl_take isl_constraint_list *ptr) {
6084 return constraint_list(ptr);
6086 isl::constraint_list manage_copy(__isl_keep isl_constraint_list *ptr) {
6087 return constraint_list(isl_constraint_list_copy(ptr));
6089 isl::constraint_list give(__isl_take isl_constraint_list *ptr) {
6090 return manage(ptr);
6094 constraint_list::constraint_list()
6095 : ptr(nullptr) {}
6097 constraint_list::constraint_list(const isl::constraint_list &obj)
6098 : ptr(obj.copy()) {}
6099 constraint_list::constraint_list(std::nullptr_t)
6100 : ptr(nullptr) {}
6103 constraint_list::constraint_list(__isl_take isl_constraint_list *ptr)
6104 : ptr(ptr) {}
6107 constraint_list &constraint_list::operator=(isl::constraint_list obj) {
6108 std::swap(this->ptr, obj.ptr);
6109 return *this;
6112 constraint_list::~constraint_list() {
6113 if (ptr)
6114 isl_constraint_list_free(ptr);
6117 __isl_give isl_constraint_list *constraint_list::copy() const & {
6118 return isl_constraint_list_copy(ptr);
6121 __isl_keep isl_constraint_list *constraint_list::get() const {
6122 return ptr;
6125 __isl_give isl_constraint_list *constraint_list::release() {
6126 isl_constraint_list *tmp = ptr;
6127 ptr = nullptr;
6128 return tmp;
6131 bool constraint_list::is_null() const {
6132 return ptr == nullptr;
6134 __isl_keep isl_constraint_list *constraint_list::keep() const {
6135 return get();
6138 __isl_give isl_constraint_list *constraint_list::take() {
6139 return release();
6142 constraint_list::operator bool() const {
6143 return !is_null();
6147 isl::ctx constraint_list::get_ctx() const {
6148 return isl::ctx(isl_constraint_list_get_ctx(ptr));
6151 void constraint_list::dump() const {
6152 isl_constraint_list_dump(get());
6157 // implementations for isl::id
6158 isl::id manage(__isl_take isl_id *ptr) {
6159 return id(ptr);
6161 isl::id manage_copy(__isl_keep isl_id *ptr) {
6162 return id(isl_id_copy(ptr));
6164 isl::id give(__isl_take isl_id *ptr) {
6165 return manage(ptr);
6169 id::id()
6170 : ptr(nullptr) {}
6172 id::id(const isl::id &obj)
6173 : ptr(obj.copy()) {}
6174 id::id(std::nullptr_t)
6175 : ptr(nullptr) {}
6178 id::id(__isl_take isl_id *ptr)
6179 : ptr(ptr) {}
6182 id &id::operator=(isl::id obj) {
6183 std::swap(this->ptr, obj.ptr);
6184 return *this;
6187 id::~id() {
6188 if (ptr)
6189 isl_id_free(ptr);
6192 __isl_give isl_id *id::copy() const & {
6193 return isl_id_copy(ptr);
6196 __isl_keep isl_id *id::get() const {
6197 return ptr;
6200 __isl_give isl_id *id::release() {
6201 isl_id *tmp = ptr;
6202 ptr = nullptr;
6203 return tmp;
6206 bool id::is_null() const {
6207 return ptr == nullptr;
6209 __isl_keep isl_id *id::keep() const {
6210 return get();
6213 __isl_give isl_id *id::take() {
6214 return release();
6217 id::operator bool() const {
6218 return !is_null();
6222 isl::ctx id::get_ctx() const {
6223 return isl::ctx(isl_id_get_ctx(ptr));
6225 std::string id::to_str() const {
6226 char *Tmp = isl_id_to_str(get());
6227 if (!Tmp)
6228 return "";
6229 std::string S(Tmp);
6230 free(Tmp);
6231 return S;
6235 void id::dump() const {
6236 isl_id_dump(get());
6240 isl::id id::alloc(isl::ctx ctx, const std::string &name, void * user) {
6241 auto res = isl_id_alloc(ctx.release(), name.c_str(), user);
6242 return manage(res);
6245 uint32_t id::get_hash() const {
6246 auto res = isl_id_get_hash(get());
6247 return res;
6250 std::string id::get_name() const {
6251 auto res = isl_id_get_name(get());
6252 std::string tmp(res);
6253 return tmp;
6256 void * id::get_user() const {
6257 auto res = isl_id_get_user(get());
6258 return res;
6261 // implementations for isl::id_list
6262 isl::id_list manage(__isl_take isl_id_list *ptr) {
6263 return id_list(ptr);
6265 isl::id_list manage_copy(__isl_keep isl_id_list *ptr) {
6266 return id_list(isl_id_list_copy(ptr));
6268 isl::id_list give(__isl_take isl_id_list *ptr) {
6269 return manage(ptr);
6273 id_list::id_list()
6274 : ptr(nullptr) {}
6276 id_list::id_list(const isl::id_list &obj)
6277 : ptr(obj.copy()) {}
6278 id_list::id_list(std::nullptr_t)
6279 : ptr(nullptr) {}
6282 id_list::id_list(__isl_take isl_id_list *ptr)
6283 : ptr(ptr) {}
6286 id_list &id_list::operator=(isl::id_list obj) {
6287 std::swap(this->ptr, obj.ptr);
6288 return *this;
6291 id_list::~id_list() {
6292 if (ptr)
6293 isl_id_list_free(ptr);
6296 __isl_give isl_id_list *id_list::copy() const & {
6297 return isl_id_list_copy(ptr);
6300 __isl_keep isl_id_list *id_list::get() const {
6301 return ptr;
6304 __isl_give isl_id_list *id_list::release() {
6305 isl_id_list *tmp = ptr;
6306 ptr = nullptr;
6307 return tmp;
6310 bool id_list::is_null() const {
6311 return ptr == nullptr;
6313 __isl_keep isl_id_list *id_list::keep() const {
6314 return get();
6317 __isl_give isl_id_list *id_list::take() {
6318 return release();
6321 id_list::operator bool() const {
6322 return !is_null();
6326 isl::ctx id_list::get_ctx() const {
6327 return isl::ctx(isl_id_list_get_ctx(ptr));
6330 void id_list::dump() const {
6331 isl_id_list_dump(get());
6336 // implementations for isl::id_to_ast_expr
6337 isl::id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
6338 return id_to_ast_expr(ptr);
6340 isl::id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
6341 return id_to_ast_expr(isl_id_to_ast_expr_copy(ptr));
6343 isl::id_to_ast_expr give(__isl_take isl_id_to_ast_expr *ptr) {
6344 return manage(ptr);
6348 id_to_ast_expr::id_to_ast_expr()
6349 : ptr(nullptr) {}
6351 id_to_ast_expr::id_to_ast_expr(const isl::id_to_ast_expr &obj)
6352 : ptr(obj.copy()) {}
6353 id_to_ast_expr::id_to_ast_expr(std::nullptr_t)
6354 : ptr(nullptr) {}
6357 id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr)
6358 : ptr(ptr) {}
6361 id_to_ast_expr &id_to_ast_expr::operator=(isl::id_to_ast_expr obj) {
6362 std::swap(this->ptr, obj.ptr);
6363 return *this;
6366 id_to_ast_expr::~id_to_ast_expr() {
6367 if (ptr)
6368 isl_id_to_ast_expr_free(ptr);
6371 __isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
6372 return isl_id_to_ast_expr_copy(ptr);
6375 __isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
6376 return ptr;
6379 __isl_give isl_id_to_ast_expr *id_to_ast_expr::release() {
6380 isl_id_to_ast_expr *tmp = ptr;
6381 ptr = nullptr;
6382 return tmp;
6385 bool id_to_ast_expr::is_null() const {
6386 return ptr == nullptr;
6388 __isl_keep isl_id_to_ast_expr *id_to_ast_expr::keep() const {
6389 return get();
6392 __isl_give isl_id_to_ast_expr *id_to_ast_expr::take() {
6393 return release();
6396 id_to_ast_expr::operator bool() const {
6397 return !is_null();
6401 isl::ctx id_to_ast_expr::get_ctx() const {
6402 return isl::ctx(isl_id_to_ast_expr_get_ctx(ptr));
6405 void id_to_ast_expr::dump() const {
6406 isl_id_to_ast_expr_dump(get());
6410 isl::id_to_ast_expr id_to_ast_expr::alloc(isl::ctx ctx, int min_size) {
6411 auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
6412 return manage(res);
6415 isl::id_to_ast_expr id_to_ast_expr::drop(isl::id key) const {
6416 auto res = isl_id_to_ast_expr_drop(copy(), key.release());
6417 return manage(res);
6420 isl::stat id_to_ast_expr::foreach(const std::function<isl::stat(isl::id, isl::ast_expr)> &fn) const {
6421 auto fn_p = &fn;
6422 auto fn_lambda = [](isl_id *arg_0, isl_ast_expr *arg_1, void *arg_2) -> isl_stat {
6423 auto *func = *static_cast<const std::function<isl::stat(isl::id, isl::ast_expr)> **>(arg_2);
6424 stat ret = (*func)(isl::manage(arg_0), isl::manage(arg_1));
6425 return isl_stat(ret);
6427 auto res = isl_id_to_ast_expr_foreach(get(), fn_lambda, &fn_p);
6428 return isl::stat(res);
6431 isl::ast_expr id_to_ast_expr::get(isl::id key) const {
6432 auto res = isl_id_to_ast_expr_get(get(), key.release());
6433 return manage(res);
6436 isl::boolean id_to_ast_expr::has(const isl::id &key) const {
6437 auto res = isl_id_to_ast_expr_has(get(), key.get());
6438 return manage(res);
6441 isl::id_to_ast_expr id_to_ast_expr::set(isl::id key, isl::ast_expr val) const {
6442 auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
6443 return manage(res);
6446 // implementations for isl::local_space
6447 isl::local_space manage(__isl_take isl_local_space *ptr) {
6448 return local_space(ptr);
6450 isl::local_space manage_copy(__isl_keep isl_local_space *ptr) {
6451 return local_space(isl_local_space_copy(ptr));
6453 isl::local_space give(__isl_take isl_local_space *ptr) {
6454 return manage(ptr);
6458 local_space::local_space()
6459 : ptr(nullptr) {}
6461 local_space::local_space(const isl::local_space &obj)
6462 : ptr(obj.copy()) {}
6463 local_space::local_space(std::nullptr_t)
6464 : ptr(nullptr) {}
6467 local_space::local_space(__isl_take isl_local_space *ptr)
6468 : ptr(ptr) {}
6470 local_space::local_space(isl::space dim) {
6471 auto res = isl_local_space_from_space(dim.release());
6472 ptr = res;
6475 local_space &local_space::operator=(isl::local_space obj) {
6476 std::swap(this->ptr, obj.ptr);
6477 return *this;
6480 local_space::~local_space() {
6481 if (ptr)
6482 isl_local_space_free(ptr);
6485 __isl_give isl_local_space *local_space::copy() const & {
6486 return isl_local_space_copy(ptr);
6489 __isl_keep isl_local_space *local_space::get() const {
6490 return ptr;
6493 __isl_give isl_local_space *local_space::release() {
6494 isl_local_space *tmp = ptr;
6495 ptr = nullptr;
6496 return tmp;
6499 bool local_space::is_null() const {
6500 return ptr == nullptr;
6502 __isl_keep isl_local_space *local_space::keep() const {
6503 return get();
6506 __isl_give isl_local_space *local_space::take() {
6507 return release();
6510 local_space::operator bool() const {
6511 return !is_null();
6515 isl::ctx local_space::get_ctx() const {
6516 return isl::ctx(isl_local_space_get_ctx(ptr));
6519 void local_space::dump() const {
6520 isl_local_space_dump(get());
6524 isl::local_space local_space::add_dims(isl::dim type, unsigned int n) const {
6525 auto res = isl_local_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
6526 return manage(res);
6529 int local_space::dim(isl::dim type) const {
6530 auto res = isl_local_space_dim(get(), static_cast<enum isl_dim_type>(type));
6531 return res;
6534 isl::local_space local_space::domain() const {
6535 auto res = isl_local_space_domain(copy());
6536 return manage(res);
6539 isl::local_space local_space::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
6540 auto res = isl_local_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6541 return manage(res);
6544 int local_space::find_dim_by_name(isl::dim type, const std::string &name) const {
6545 auto res = isl_local_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
6546 return res;
6549 isl::local_space local_space::flatten_domain() const {
6550 auto res = isl_local_space_flatten_domain(copy());
6551 return manage(res);
6554 isl::local_space local_space::flatten_range() const {
6555 auto res = isl_local_space_flatten_range(copy());
6556 return manage(res);
6559 isl::local_space local_space::from_domain() const {
6560 auto res = isl_local_space_from_domain(copy());
6561 return manage(res);
6564 isl::id local_space::get_dim_id(isl::dim type, unsigned int pos) const {
6565 auto res = isl_local_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
6566 return manage(res);
6569 std::string local_space::get_dim_name(isl::dim type, unsigned int pos) const {
6570 auto res = isl_local_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
6571 std::string tmp(res);
6572 return tmp;
6575 isl::aff local_space::get_div(int pos) const {
6576 auto res = isl_local_space_get_div(get(), pos);
6577 return manage(res);
6580 isl::space local_space::get_space() const {
6581 auto res = isl_local_space_get_space(get());
6582 return manage(res);
6585 isl::boolean local_space::has_dim_id(isl::dim type, unsigned int pos) const {
6586 auto res = isl_local_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
6587 return manage(res);
6590 isl::boolean local_space::has_dim_name(isl::dim type, unsigned int pos) const {
6591 auto res = isl_local_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
6592 return manage(res);
6595 isl::local_space local_space::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
6596 auto res = isl_local_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6597 return manage(res);
6600 isl::local_space local_space::intersect(isl::local_space ls2) const {
6601 auto res = isl_local_space_intersect(copy(), ls2.release());
6602 return manage(res);
6605 isl::boolean local_space::is_equal(const isl::local_space &ls2) const {
6606 auto res = isl_local_space_is_equal(get(), ls2.get());
6607 return manage(res);
6610 isl::boolean local_space::is_params() const {
6611 auto res = isl_local_space_is_params(get());
6612 return manage(res);
6615 isl::boolean local_space::is_set() const {
6616 auto res = isl_local_space_is_set(get());
6617 return manage(res);
6620 isl::local_space local_space::range() const {
6621 auto res = isl_local_space_range(copy());
6622 return manage(res);
6625 isl::local_space local_space::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
6626 auto res = isl_local_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
6627 return manage(res);
6630 isl::local_space local_space::set_tuple_id(isl::dim type, isl::id id) const {
6631 auto res = isl_local_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
6632 return manage(res);
6635 isl::local_space local_space::wrap() const {
6636 auto res = isl_local_space_wrap(copy());
6637 return manage(res);
6640 // implementations for isl::map
6641 isl::map manage(__isl_take isl_map *ptr) {
6642 return map(ptr);
6644 isl::map manage_copy(__isl_keep isl_map *ptr) {
6645 return map(isl_map_copy(ptr));
6647 isl::map give(__isl_take isl_map *ptr) {
6648 return manage(ptr);
6652 map::map()
6653 : ptr(nullptr) {}
6655 map::map(const isl::map &obj)
6656 : ptr(obj.copy()) {}
6657 map::map(std::nullptr_t)
6658 : ptr(nullptr) {}
6661 map::map(__isl_take isl_map *ptr)
6662 : ptr(ptr) {}
6664 map::map(isl::ctx ctx, const std::string &str) {
6665 auto res = isl_map_read_from_str(ctx.release(), str.c_str());
6666 ptr = res;
6668 map::map(isl::basic_map bmap) {
6669 auto res = isl_map_from_basic_map(bmap.release());
6670 ptr = res;
6673 map &map::operator=(isl::map obj) {
6674 std::swap(this->ptr, obj.ptr);
6675 return *this;
6678 map::~map() {
6679 if (ptr)
6680 isl_map_free(ptr);
6683 __isl_give isl_map *map::copy() const & {
6684 return isl_map_copy(ptr);
6687 __isl_keep isl_map *map::get() const {
6688 return ptr;
6691 __isl_give isl_map *map::release() {
6692 isl_map *tmp = ptr;
6693 ptr = nullptr;
6694 return tmp;
6697 bool map::is_null() const {
6698 return ptr == nullptr;
6700 __isl_keep isl_map *map::keep() const {
6701 return get();
6704 __isl_give isl_map *map::take() {
6705 return release();
6708 map::operator bool() const {
6709 return !is_null();
6713 isl::ctx map::get_ctx() const {
6714 return isl::ctx(isl_map_get_ctx(ptr));
6716 std::string map::to_str() const {
6717 char *Tmp = isl_map_to_str(get());
6718 if (!Tmp)
6719 return "";
6720 std::string S(Tmp);
6721 free(Tmp);
6722 return S;
6726 void map::dump() const {
6727 isl_map_dump(get());
6731 isl::map map::add_constraint(isl::constraint constraint) const {
6732 auto res = isl_map_add_constraint(copy(), constraint.release());
6733 return manage(res);
6736 isl::map map::add_dims(isl::dim type, unsigned int n) const {
6737 auto res = isl_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
6738 return manage(res);
6741 isl::basic_map map::affine_hull() const {
6742 auto res = isl_map_affine_hull(copy());
6743 return manage(res);
6746 isl::map map::align_params(isl::space model) const {
6747 auto res = isl_map_align_params(copy(), model.release());
6748 return manage(res);
6751 isl::map map::apply_domain(isl::map map2) const {
6752 auto res = isl_map_apply_domain(copy(), map2.release());
6753 return manage(res);
6756 isl::map map::apply_range(isl::map map2) const {
6757 auto res = isl_map_apply_range(copy(), map2.release());
6758 return manage(res);
6761 isl::boolean map::can_curry() const {
6762 auto res = isl_map_can_curry(get());
6763 return manage(res);
6766 isl::boolean map::can_range_curry() const {
6767 auto res = isl_map_can_range_curry(get());
6768 return manage(res);
6771 isl::boolean map::can_uncurry() const {
6772 auto res = isl_map_can_uncurry(get());
6773 return manage(res);
6776 isl::boolean map::can_zip() const {
6777 auto res = isl_map_can_zip(get());
6778 return manage(res);
6781 isl::map map::coalesce() const {
6782 auto res = isl_map_coalesce(copy());
6783 return manage(res);
6786 isl::map map::complement() const {
6787 auto res = isl_map_complement(copy());
6788 return manage(res);
6791 isl::basic_map map::convex_hull() const {
6792 auto res = isl_map_convex_hull(copy());
6793 return manage(res);
6796 isl::map map::curry() const {
6797 auto res = isl_map_curry(copy());
6798 return manage(res);
6801 isl::set map::deltas() const {
6802 auto res = isl_map_deltas(copy());
6803 return manage(res);
6806 isl::map map::deltas_map() const {
6807 auto res = isl_map_deltas_map(copy());
6808 return manage(res);
6811 isl::map map::detect_equalities() const {
6812 auto res = isl_map_detect_equalities(copy());
6813 return manage(res);
6816 unsigned int map::dim(isl::dim type) const {
6817 auto res = isl_map_dim(get(), static_cast<enum isl_dim_type>(type));
6818 return res;
6821 isl::pw_aff map::dim_max(int pos) const {
6822 auto res = isl_map_dim_max(copy(), pos);
6823 return manage(res);
6826 isl::pw_aff map::dim_min(int pos) const {
6827 auto res = isl_map_dim_min(copy(), pos);
6828 return manage(res);
6831 isl::set map::domain() const {
6832 auto res = isl_map_domain(copy());
6833 return manage(res);
6836 isl::map map::domain_factor_domain() const {
6837 auto res = isl_map_domain_factor_domain(copy());
6838 return manage(res);
6841 isl::map map::domain_factor_range() const {
6842 auto res = isl_map_domain_factor_range(copy());
6843 return manage(res);
6846 isl::boolean map::domain_is_wrapping() const {
6847 auto res = isl_map_domain_is_wrapping(get());
6848 return manage(res);
6851 isl::map map::domain_map() const {
6852 auto res = isl_map_domain_map(copy());
6853 return manage(res);
6856 isl::map map::domain_product(isl::map map2) const {
6857 auto res = isl_map_domain_product(copy(), map2.release());
6858 return manage(res);
6861 isl::map map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
6862 auto res = isl_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6863 return manage(res);
6866 isl::map map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
6867 auto res = isl_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6868 return manage(res);
6871 isl::map map::eliminate(isl::dim type, unsigned int first, unsigned int n) const {
6872 auto res = isl_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
6873 return manage(res);
6876 isl::map map::empty(isl::space space) {
6877 auto res = isl_map_empty(space.release());
6878 return manage(res);
6881 isl::map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
6882 auto res = isl_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
6883 return manage(res);
6886 isl::map map::factor_domain() const {
6887 auto res = isl_map_factor_domain(copy());
6888 return manage(res);
6891 isl::map map::factor_range() const {
6892 auto res = isl_map_factor_range(copy());
6893 return manage(res);
6896 int map::find_dim_by_id(isl::dim type, const isl::id &id) const {
6897 auto res = isl_map_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
6898 return res;
6901 int map::find_dim_by_name(isl::dim type, const std::string &name) const {
6902 auto res = isl_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
6903 return res;
6906 isl::map map::fix_si(isl::dim type, unsigned int pos, int value) const {
6907 auto res = isl_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6908 return manage(res);
6911 isl::map map::fix_val(isl::dim type, unsigned int pos, isl::val v) const {
6912 auto res = isl_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
6913 return manage(res);
6916 isl::map map::fixed_power_val(isl::val exp) const {
6917 auto res = isl_map_fixed_power_val(copy(), exp.release());
6918 return manage(res);
6921 isl::map map::flat_domain_product(isl::map map2) const {
6922 auto res = isl_map_flat_domain_product(copy(), map2.release());
6923 return manage(res);
6926 isl::map map::flat_product(isl::map map2) const {
6927 auto res = isl_map_flat_product(copy(), map2.release());
6928 return manage(res);
6931 isl::map map::flat_range_product(isl::map map2) const {
6932 auto res = isl_map_flat_range_product(copy(), map2.release());
6933 return manage(res);
6936 isl::map map::flatten() const {
6937 auto res = isl_map_flatten(copy());
6938 return manage(res);
6941 isl::map map::flatten_domain() const {
6942 auto res = isl_map_flatten_domain(copy());
6943 return manage(res);
6946 isl::map map::flatten_range() const {
6947 auto res = isl_map_flatten_range(copy());
6948 return manage(res);
6951 isl::map map::floordiv_val(isl::val d) const {
6952 auto res = isl_map_floordiv_val(copy(), d.release());
6953 return manage(res);
6956 isl::stat map::foreach_basic_map(const std::function<isl::stat(isl::basic_map)> &fn) const {
6957 auto fn_p = &fn;
6958 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
6959 auto *func = *static_cast<const std::function<isl::stat(isl::basic_map)> **>(arg_1);
6960 stat ret = (*func)(isl::manage(arg_0));
6961 return isl_stat(ret);
6963 auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_p);
6964 return isl::stat(res);
6967 isl::map map::from_aff(isl::aff aff) {
6968 auto res = isl_map_from_aff(aff.release());
6969 return manage(res);
6972 isl::map map::from_domain(isl::set set) {
6973 auto res = isl_map_from_domain(set.release());
6974 return manage(res);
6977 isl::map map::from_domain_and_range(isl::set domain, isl::set range) {
6978 auto res = isl_map_from_domain_and_range(domain.release(), range.release());
6979 return manage(res);
6982 isl::map map::from_multi_aff(isl::multi_aff maff) {
6983 auto res = isl_map_from_multi_aff(maff.release());
6984 return manage(res);
6987 isl::map map::from_multi_pw_aff(isl::multi_pw_aff mpa) {
6988 auto res = isl_map_from_multi_pw_aff(mpa.release());
6989 return manage(res);
6992 isl::map map::from_pw_aff(isl::pw_aff pwaff) {
6993 auto res = isl_map_from_pw_aff(pwaff.release());
6994 return manage(res);
6997 isl::map map::from_pw_multi_aff(isl::pw_multi_aff pma) {
6998 auto res = isl_map_from_pw_multi_aff(pma.release());
6999 return manage(res);
7002 isl::map map::from_range(isl::set set) {
7003 auto res = isl_map_from_range(set.release());
7004 return manage(res);
7007 isl::map map::from_union_map(isl::union_map umap) {
7008 auto res = isl_map_from_union_map(umap.release());
7009 return manage(res);
7012 isl::id map::get_dim_id(isl::dim type, unsigned int pos) const {
7013 auto res = isl_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
7014 return manage(res);
7017 std::string map::get_dim_name(isl::dim type, unsigned int pos) const {
7018 auto res = isl_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7019 std::string tmp(res);
7020 return tmp;
7023 uint32_t map::get_hash() const {
7024 auto res = isl_map_get_hash(get());
7025 return res;
7028 isl::space map::get_space() const {
7029 auto res = isl_map_get_space(get());
7030 return manage(res);
7033 isl::id map::get_tuple_id(isl::dim type) const {
7034 auto res = isl_map_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
7035 return manage(res);
7038 std::string map::get_tuple_name(isl::dim type) const {
7039 auto res = isl_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
7040 std::string tmp(res);
7041 return tmp;
7044 isl::map map::gist(isl::map context) const {
7045 auto res = isl_map_gist(copy(), context.release());
7046 return manage(res);
7049 isl::map map::gist_basic_map(isl::basic_map context) const {
7050 auto res = isl_map_gist_basic_map(copy(), context.release());
7051 return manage(res);
7054 isl::map map::gist_domain(isl::set context) const {
7055 auto res = isl_map_gist_domain(copy(), context.release());
7056 return manage(res);
7059 isl::map map::gist_params(isl::set context) const {
7060 auto res = isl_map_gist_params(copy(), context.release());
7061 return manage(res);
7064 isl::map map::gist_range(isl::set context) const {
7065 auto res = isl_map_gist_range(copy(), context.release());
7066 return manage(res);
7069 isl::boolean map::has_dim_id(isl::dim type, unsigned int pos) const {
7070 auto res = isl_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
7071 return manage(res);
7074 isl::boolean map::has_dim_name(isl::dim type, unsigned int pos) const {
7075 auto res = isl_map_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7076 return manage(res);
7079 isl::boolean map::has_equal_space(const isl::map &map2) const {
7080 auto res = isl_map_has_equal_space(get(), map2.get());
7081 return manage(res);
7084 isl::boolean map::has_tuple_id(isl::dim type) const {
7085 auto res = isl_map_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
7086 return manage(res);
7089 isl::boolean map::has_tuple_name(isl::dim type) const {
7090 auto res = isl_map_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
7091 return manage(res);
7094 isl::map map::identity(isl::space dim) {
7095 auto res = isl_map_identity(dim.release());
7096 return manage(res);
7099 isl::map map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const {
7100 auto res = isl_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
7101 return manage(res);
7104 isl::map map::intersect(isl::map map2) const {
7105 auto res = isl_map_intersect(copy(), map2.release());
7106 return manage(res);
7109 isl::map map::intersect_domain(isl::set set) const {
7110 auto res = isl_map_intersect_domain(copy(), set.release());
7111 return manage(res);
7114 isl::map map::intersect_domain_factor_range(isl::map factor) const {
7115 auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
7116 return manage(res);
7119 isl::map map::intersect_params(isl::set params) const {
7120 auto res = isl_map_intersect_params(copy(), params.release());
7121 return manage(res);
7124 isl::map map::intersect_range(isl::set set) const {
7125 auto res = isl_map_intersect_range(copy(), set.release());
7126 return manage(res);
7129 isl::map map::intersect_range_factor_range(isl::map factor) const {
7130 auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
7131 return manage(res);
7134 isl::boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
7135 auto res = isl_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
7136 return manage(res);
7139 isl::boolean map::is_bijective() const {
7140 auto res = isl_map_is_bijective(get());
7141 return manage(res);
7144 isl::boolean map::is_disjoint(const isl::map &map2) const {
7145 auto res = isl_map_is_disjoint(get(), map2.get());
7146 return manage(res);
7149 isl::boolean map::is_empty() const {
7150 auto res = isl_map_is_empty(get());
7151 return manage(res);
7154 isl::boolean map::is_equal(const isl::map &map2) const {
7155 auto res = isl_map_is_equal(get(), map2.get());
7156 return manage(res);
7159 isl::boolean map::is_identity() const {
7160 auto res = isl_map_is_identity(get());
7161 return manage(res);
7164 isl::boolean map::is_injective() const {
7165 auto res = isl_map_is_injective(get());
7166 return manage(res);
7169 isl::boolean map::is_product() const {
7170 auto res = isl_map_is_product(get());
7171 return manage(res);
7174 isl::boolean map::is_single_valued() const {
7175 auto res = isl_map_is_single_valued(get());
7176 return manage(res);
7179 isl::boolean map::is_strict_subset(const isl::map &map2) const {
7180 auto res = isl_map_is_strict_subset(get(), map2.get());
7181 return manage(res);
7184 isl::boolean map::is_subset(const isl::map &map2) const {
7185 auto res = isl_map_is_subset(get(), map2.get());
7186 return manage(res);
7189 int map::is_translation() const {
7190 auto res = isl_map_is_translation(get());
7191 return res;
7194 isl::map map::lex_ge(isl::space set_dim) {
7195 auto res = isl_map_lex_ge(set_dim.release());
7196 return manage(res);
7199 isl::map map::lex_ge_first(isl::space dim, unsigned int n) {
7200 auto res = isl_map_lex_ge_first(dim.release(), n);
7201 return manage(res);
7204 isl::map map::lex_ge_map(isl::map map2) const {
7205 auto res = isl_map_lex_ge_map(copy(), map2.release());
7206 return manage(res);
7209 isl::map map::lex_gt(isl::space set_dim) {
7210 auto res = isl_map_lex_gt(set_dim.release());
7211 return manage(res);
7214 isl::map map::lex_gt_first(isl::space dim, unsigned int n) {
7215 auto res = isl_map_lex_gt_first(dim.release(), n);
7216 return manage(res);
7219 isl::map map::lex_gt_map(isl::map map2) const {
7220 auto res = isl_map_lex_gt_map(copy(), map2.release());
7221 return manage(res);
7224 isl::map map::lex_le(isl::space set_dim) {
7225 auto res = isl_map_lex_le(set_dim.release());
7226 return manage(res);
7229 isl::map map::lex_le_first(isl::space dim, unsigned int n) {
7230 auto res = isl_map_lex_le_first(dim.release(), n);
7231 return manage(res);
7234 isl::map map::lex_le_map(isl::map map2) const {
7235 auto res = isl_map_lex_le_map(copy(), map2.release());
7236 return manage(res);
7239 isl::map map::lex_lt(isl::space set_dim) {
7240 auto res = isl_map_lex_lt(set_dim.release());
7241 return manage(res);
7244 isl::map map::lex_lt_first(isl::space dim, unsigned int n) {
7245 auto res = isl_map_lex_lt_first(dim.release(), n);
7246 return manage(res);
7249 isl::map map::lex_lt_map(isl::map map2) const {
7250 auto res = isl_map_lex_lt_map(copy(), map2.release());
7251 return manage(res);
7254 isl::map map::lexmax() const {
7255 auto res = isl_map_lexmax(copy());
7256 return manage(res);
7259 isl::pw_multi_aff map::lexmax_pw_multi_aff() const {
7260 auto res = isl_map_lexmax_pw_multi_aff(copy());
7261 return manage(res);
7264 isl::map map::lexmin() const {
7265 auto res = isl_map_lexmin(copy());
7266 return manage(res);
7269 isl::pw_multi_aff map::lexmin_pw_multi_aff() const {
7270 auto res = isl_map_lexmin_pw_multi_aff(copy());
7271 return manage(res);
7274 isl::map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const {
7275 auto res = isl_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
7276 return manage(res);
7279 isl::map map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
7280 auto res = isl_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
7281 return manage(res);
7284 isl::map map::nat_universe(isl::space dim) {
7285 auto res = isl_map_nat_universe(dim.release());
7286 return manage(res);
7289 isl::map map::neg() const {
7290 auto res = isl_map_neg(copy());
7291 return manage(res);
7294 isl::map map::oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
7295 auto res = isl_map_oppose(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
7296 return manage(res);
7299 isl::map map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
7300 auto res = isl_map_order_ge(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
7301 return manage(res);
7304 isl::map map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
7305 auto res = isl_map_order_gt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
7306 return manage(res);
7309 isl::map map::order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
7310 auto res = isl_map_order_le(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
7311 return manage(res);
7314 isl::map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
7315 auto res = isl_map_order_lt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
7316 return manage(res);
7319 isl::set map::params() const {
7320 auto res = isl_map_params(copy());
7321 return manage(res);
7324 isl::val map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const {
7325 auto res = isl_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
7326 return manage(res);
7329 isl::boolean map::plain_is_empty() const {
7330 auto res = isl_map_plain_is_empty(get());
7331 return manage(res);
7334 isl::boolean map::plain_is_equal(const isl::map &map2) const {
7335 auto res = isl_map_plain_is_equal(get(), map2.get());
7336 return manage(res);
7339 isl::boolean map::plain_is_injective() const {
7340 auto res = isl_map_plain_is_injective(get());
7341 return manage(res);
7344 isl::boolean map::plain_is_single_valued() const {
7345 auto res = isl_map_plain_is_single_valued(get());
7346 return manage(res);
7349 isl::boolean map::plain_is_universe() const {
7350 auto res = isl_map_plain_is_universe(get());
7351 return manage(res);
7354 isl::basic_map map::plain_unshifted_simple_hull() const {
7355 auto res = isl_map_plain_unshifted_simple_hull(copy());
7356 return manage(res);
7359 isl::basic_map map::polyhedral_hull() const {
7360 auto res = isl_map_polyhedral_hull(copy());
7361 return manage(res);
7364 isl::map map::preimage_domain_multi_aff(isl::multi_aff ma) const {
7365 auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
7366 return manage(res);
7369 isl::map map::preimage_domain_multi_pw_aff(isl::multi_pw_aff mpa) const {
7370 auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
7371 return manage(res);
7374 isl::map map::preimage_domain_pw_multi_aff(isl::pw_multi_aff pma) const {
7375 auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
7376 return manage(res);
7379 isl::map map::preimage_range_multi_aff(isl::multi_aff ma) const {
7380 auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
7381 return manage(res);
7384 isl::map map::preimage_range_pw_multi_aff(isl::pw_multi_aff pma) const {
7385 auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
7386 return manage(res);
7389 isl::map map::product(isl::map map2) const {
7390 auto res = isl_map_product(copy(), map2.release());
7391 return manage(res);
7394 isl::map map::project_out(isl::dim type, unsigned int first, unsigned int n) const {
7395 auto res = isl_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
7396 return manage(res);
7399 isl::set map::range() const {
7400 auto res = isl_map_range(copy());
7401 return manage(res);
7404 isl::map map::range_curry() const {
7405 auto res = isl_map_range_curry(copy());
7406 return manage(res);
7409 isl::map map::range_factor_domain() const {
7410 auto res = isl_map_range_factor_domain(copy());
7411 return manage(res);
7414 isl::map map::range_factor_range() const {
7415 auto res = isl_map_range_factor_range(copy());
7416 return manage(res);
7419 isl::boolean map::range_is_wrapping() const {
7420 auto res = isl_map_range_is_wrapping(get());
7421 return manage(res);
7424 isl::map map::range_map() const {
7425 auto res = isl_map_range_map(copy());
7426 return manage(res);
7429 isl::map map::range_product(isl::map map2) const {
7430 auto res = isl_map_range_product(copy(), map2.release());
7431 return manage(res);
7434 isl::map map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const {
7435 auto res = isl_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
7436 return manage(res);
7439 isl::map map::remove_divs() const {
7440 auto res = isl_map_remove_divs(copy());
7441 return manage(res);
7444 isl::map map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
7445 auto res = isl_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
7446 return manage(res);
7449 isl::map map::remove_redundancies() const {
7450 auto res = isl_map_remove_redundancies(copy());
7451 return manage(res);
7454 isl::map map::remove_unknown_divs() const {
7455 auto res = isl_map_remove_unknown_divs(copy());
7456 return manage(res);
7459 isl::map map::reset_tuple_id(isl::dim type) const {
7460 auto res = isl_map_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
7461 return manage(res);
7464 isl::map map::reset_user() const {
7465 auto res = isl_map_reset_user(copy());
7466 return manage(res);
7469 isl::map map::reverse() const {
7470 auto res = isl_map_reverse(copy());
7471 return manage(res);
7474 isl::basic_map map::sample() const {
7475 auto res = isl_map_sample(copy());
7476 return manage(res);
7479 isl::map map::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
7480 auto res = isl_map_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
7481 return manage(res);
7484 isl::map map::set_tuple_id(isl::dim type, isl::id id) const {
7485 auto res = isl_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
7486 return manage(res);
7489 isl::map map::set_tuple_name(isl::dim type, const std::string &s) const {
7490 auto res = isl_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
7491 return manage(res);
7494 isl::basic_map map::simple_hull() const {
7495 auto res = isl_map_simple_hull(copy());
7496 return manage(res);
7499 isl::map map::subtract(isl::map map2) const {
7500 auto res = isl_map_subtract(copy(), map2.release());
7501 return manage(res);
7504 isl::map map::subtract_domain(isl::set dom) const {
7505 auto res = isl_map_subtract_domain(copy(), dom.release());
7506 return manage(res);
7509 isl::map map::subtract_range(isl::set dom) const {
7510 auto res = isl_map_subtract_range(copy(), dom.release());
7511 return manage(res);
7514 isl::map map::sum(isl::map map2) const {
7515 auto res = isl_map_sum(copy(), map2.release());
7516 return manage(res);
7519 isl::map map::uncurry() const {
7520 auto res = isl_map_uncurry(copy());
7521 return manage(res);
7524 isl::map map::unite(isl::map map2) const {
7525 auto res = isl_map_union(copy(), map2.release());
7526 return manage(res);
7529 isl::map map::universe(isl::space space) {
7530 auto res = isl_map_universe(space.release());
7531 return manage(res);
7534 isl::basic_map map::unshifted_simple_hull() const {
7535 auto res = isl_map_unshifted_simple_hull(copy());
7536 return manage(res);
7539 isl::basic_map map::unshifted_simple_hull_from_map_list(isl::map_list list) const {
7540 auto res = isl_map_unshifted_simple_hull_from_map_list(copy(), list.release());
7541 return manage(res);
7544 isl::map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const {
7545 auto res = isl_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
7546 return manage(res);
7549 isl::set map::wrap() const {
7550 auto res = isl_map_wrap(copy());
7551 return manage(res);
7554 isl::map map::zip() const {
7555 auto res = isl_map_zip(copy());
7556 return manage(res);
7559 // implementations for isl::map_list
7560 isl::map_list manage(__isl_take isl_map_list *ptr) {
7561 return map_list(ptr);
7563 isl::map_list manage_copy(__isl_keep isl_map_list *ptr) {
7564 return map_list(isl_map_list_copy(ptr));
7566 isl::map_list give(__isl_take isl_map_list *ptr) {
7567 return manage(ptr);
7571 map_list::map_list()
7572 : ptr(nullptr) {}
7574 map_list::map_list(const isl::map_list &obj)
7575 : ptr(obj.copy()) {}
7576 map_list::map_list(std::nullptr_t)
7577 : ptr(nullptr) {}
7580 map_list::map_list(__isl_take isl_map_list *ptr)
7581 : ptr(ptr) {}
7584 map_list &map_list::operator=(isl::map_list obj) {
7585 std::swap(this->ptr, obj.ptr);
7586 return *this;
7589 map_list::~map_list() {
7590 if (ptr)
7591 isl_map_list_free(ptr);
7594 __isl_give isl_map_list *map_list::copy() const & {
7595 return isl_map_list_copy(ptr);
7598 __isl_keep isl_map_list *map_list::get() const {
7599 return ptr;
7602 __isl_give isl_map_list *map_list::release() {
7603 isl_map_list *tmp = ptr;
7604 ptr = nullptr;
7605 return tmp;
7608 bool map_list::is_null() const {
7609 return ptr == nullptr;
7611 __isl_keep isl_map_list *map_list::keep() const {
7612 return get();
7615 __isl_give isl_map_list *map_list::take() {
7616 return release();
7619 map_list::operator bool() const {
7620 return !is_null();
7624 isl::ctx map_list::get_ctx() const {
7625 return isl::ctx(isl_map_list_get_ctx(ptr));
7628 void map_list::dump() const {
7629 isl_map_list_dump(get());
7634 // implementations for isl::mat
7635 isl::mat manage(__isl_take isl_mat *ptr) {
7636 return mat(ptr);
7638 isl::mat manage_copy(__isl_keep isl_mat *ptr) {
7639 return mat(isl_mat_copy(ptr));
7641 isl::mat give(__isl_take isl_mat *ptr) {
7642 return manage(ptr);
7646 mat::mat()
7647 : ptr(nullptr) {}
7649 mat::mat(const isl::mat &obj)
7650 : ptr(obj.copy()) {}
7651 mat::mat(std::nullptr_t)
7652 : ptr(nullptr) {}
7655 mat::mat(__isl_take isl_mat *ptr)
7656 : ptr(ptr) {}
7659 mat &mat::operator=(isl::mat obj) {
7660 std::swap(this->ptr, obj.ptr);
7661 return *this;
7664 mat::~mat() {
7665 if (ptr)
7666 isl_mat_free(ptr);
7669 __isl_give isl_mat *mat::copy() const & {
7670 return isl_mat_copy(ptr);
7673 __isl_keep isl_mat *mat::get() const {
7674 return ptr;
7677 __isl_give isl_mat *mat::release() {
7678 isl_mat *tmp = ptr;
7679 ptr = nullptr;
7680 return tmp;
7683 bool mat::is_null() const {
7684 return ptr == nullptr;
7686 __isl_keep isl_mat *mat::keep() const {
7687 return get();
7690 __isl_give isl_mat *mat::take() {
7691 return release();
7694 mat::operator bool() const {
7695 return !is_null();
7699 isl::ctx mat::get_ctx() const {
7700 return isl::ctx(isl_mat_get_ctx(ptr));
7703 void mat::dump() const {
7704 isl_mat_dump(get());
7708 isl::mat mat::add_rows(unsigned int n) const {
7709 auto res = isl_mat_add_rows(copy(), n);
7710 return manage(res);
7713 isl::mat mat::add_zero_cols(unsigned int n) const {
7714 auto res = isl_mat_add_zero_cols(copy(), n);
7715 return manage(res);
7718 isl::mat mat::add_zero_rows(unsigned int n) const {
7719 auto res = isl_mat_add_zero_rows(copy(), n);
7720 return manage(res);
7723 isl::mat mat::aff_direct_sum(isl::mat right) const {
7724 auto res = isl_mat_aff_direct_sum(copy(), right.release());
7725 return manage(res);
7728 isl::mat mat::alloc(isl::ctx ctx, unsigned int n_row, unsigned int n_col) {
7729 auto res = isl_mat_alloc(ctx.release(), n_row, n_col);
7730 return manage(res);
7733 int mat::cols() const {
7734 auto res = isl_mat_cols(get());
7735 return res;
7738 isl::mat mat::concat(isl::mat bot) const {
7739 auto res = isl_mat_concat(copy(), bot.release());
7740 return manage(res);
7743 isl::mat mat::diagonal(isl::mat mat2) const {
7744 auto res = isl_mat_diagonal(copy(), mat2.release());
7745 return manage(res);
7748 isl::mat mat::drop_cols(unsigned int col, unsigned int n) const {
7749 auto res = isl_mat_drop_cols(copy(), col, n);
7750 return manage(res);
7753 isl::mat mat::drop_rows(unsigned int row, unsigned int n) const {
7754 auto res = isl_mat_drop_rows(copy(), row, n);
7755 return manage(res);
7758 isl::mat mat::from_row_vec(isl::vec vec) {
7759 auto res = isl_mat_from_row_vec(vec.release());
7760 return manage(res);
7763 isl::val mat::get_element_val(int row, int col) const {
7764 auto res = isl_mat_get_element_val(get(), row, col);
7765 return manage(res);
7768 int mat::initial_non_zero_cols() const {
7769 auto res = isl_mat_initial_non_zero_cols(get());
7770 return res;
7773 isl::mat mat::insert_cols(unsigned int col, unsigned int n) const {
7774 auto res = isl_mat_insert_cols(copy(), col, n);
7775 return manage(res);
7778 isl::mat mat::insert_rows(unsigned int row, unsigned int n) const {
7779 auto res = isl_mat_insert_rows(copy(), row, n);
7780 return manage(res);
7783 isl::mat mat::insert_zero_cols(unsigned int first, unsigned int n) const {
7784 auto res = isl_mat_insert_zero_cols(copy(), first, n);
7785 return manage(res);
7788 isl::mat mat::insert_zero_rows(unsigned int row, unsigned int n) const {
7789 auto res = isl_mat_insert_zero_rows(copy(), row, n);
7790 return manage(res);
7793 isl::mat mat::inverse_product(isl::mat right) const {
7794 auto res = isl_mat_inverse_product(copy(), right.release());
7795 return manage(res);
7798 isl::boolean mat::is_equal(const isl::mat &mat2) const {
7799 auto res = isl_mat_is_equal(get(), mat2.get());
7800 return manage(res);
7803 isl::mat mat::lin_to_aff() const {
7804 auto res = isl_mat_lin_to_aff(copy());
7805 return manage(res);
7808 isl::mat mat::move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const {
7809 auto res = isl_mat_move_cols(copy(), dst_col, src_col, n);
7810 return manage(res);
7813 isl::mat mat::normalize() const {
7814 auto res = isl_mat_normalize(copy());
7815 return manage(res);
7818 isl::mat mat::normalize_row(int row) const {
7819 auto res = isl_mat_normalize_row(copy(), row);
7820 return manage(res);
7823 isl::mat mat::product(isl::mat right) const {
7824 auto res = isl_mat_product(copy(), right.release());
7825 return manage(res);
7828 isl::mat mat::right_inverse() const {
7829 auto res = isl_mat_right_inverse(copy());
7830 return manage(res);
7833 isl::mat mat::right_kernel() const {
7834 auto res = isl_mat_right_kernel(copy());
7835 return manage(res);
7838 int mat::rows() const {
7839 auto res = isl_mat_rows(get());
7840 return res;
7843 isl::mat mat::set_element_si(int row, int col, int v) const {
7844 auto res = isl_mat_set_element_si(copy(), row, col, v);
7845 return manage(res);
7848 isl::mat mat::set_element_val(int row, int col, isl::val v) const {
7849 auto res = isl_mat_set_element_val(copy(), row, col, v.release());
7850 return manage(res);
7853 isl::mat mat::swap_cols(unsigned int i, unsigned int j) const {
7854 auto res = isl_mat_swap_cols(copy(), i, j);
7855 return manage(res);
7858 isl::mat mat::swap_rows(unsigned int i, unsigned int j) const {
7859 auto res = isl_mat_swap_rows(copy(), i, j);
7860 return manage(res);
7863 isl::mat mat::transpose() const {
7864 auto res = isl_mat_transpose(copy());
7865 return manage(res);
7868 isl::mat mat::unimodular_complete(int row) const {
7869 auto res = isl_mat_unimodular_complete(copy(), row);
7870 return manage(res);
7873 isl::mat mat::vec_concat(isl::vec bot) const {
7874 auto res = isl_mat_vec_concat(copy(), bot.release());
7875 return manage(res);
7878 isl::vec mat::vec_inverse_product(isl::vec vec) const {
7879 auto res = isl_mat_vec_inverse_product(copy(), vec.release());
7880 return manage(res);
7883 isl::vec mat::vec_product(isl::vec vec) const {
7884 auto res = isl_mat_vec_product(copy(), vec.release());
7885 return manage(res);
7888 // implementations for isl::multi_aff
7889 isl::multi_aff manage(__isl_take isl_multi_aff *ptr) {
7890 return multi_aff(ptr);
7892 isl::multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
7893 return multi_aff(isl_multi_aff_copy(ptr));
7895 isl::multi_aff give(__isl_take isl_multi_aff *ptr) {
7896 return manage(ptr);
7900 multi_aff::multi_aff()
7901 : ptr(nullptr) {}
7903 multi_aff::multi_aff(const isl::multi_aff &obj)
7904 : ptr(obj.copy()) {}
7905 multi_aff::multi_aff(std::nullptr_t)
7906 : ptr(nullptr) {}
7909 multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
7910 : ptr(ptr) {}
7912 multi_aff::multi_aff(isl::ctx ctx, const std::string &str) {
7913 auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
7914 ptr = res;
7916 multi_aff::multi_aff(isl::aff aff) {
7917 auto res = isl_multi_aff_from_aff(aff.release());
7918 ptr = res;
7921 multi_aff &multi_aff::operator=(isl::multi_aff obj) {
7922 std::swap(this->ptr, obj.ptr);
7923 return *this;
7926 multi_aff::~multi_aff() {
7927 if (ptr)
7928 isl_multi_aff_free(ptr);
7931 __isl_give isl_multi_aff *multi_aff::copy() const & {
7932 return isl_multi_aff_copy(ptr);
7935 __isl_keep isl_multi_aff *multi_aff::get() const {
7936 return ptr;
7939 __isl_give isl_multi_aff *multi_aff::release() {
7940 isl_multi_aff *tmp = ptr;
7941 ptr = nullptr;
7942 return tmp;
7945 bool multi_aff::is_null() const {
7946 return ptr == nullptr;
7948 __isl_keep isl_multi_aff *multi_aff::keep() const {
7949 return get();
7952 __isl_give isl_multi_aff *multi_aff::take() {
7953 return release();
7956 multi_aff::operator bool() const {
7957 return !is_null();
7961 isl::ctx multi_aff::get_ctx() const {
7962 return isl::ctx(isl_multi_aff_get_ctx(ptr));
7964 std::string multi_aff::to_str() const {
7965 char *Tmp = isl_multi_aff_to_str(get());
7966 if (!Tmp)
7967 return "";
7968 std::string S(Tmp);
7969 free(Tmp);
7970 return S;
7974 void multi_aff::dump() const {
7975 isl_multi_aff_dump(get());
7979 isl::multi_aff multi_aff::add(isl::multi_aff multi2) const {
7980 auto res = isl_multi_aff_add(copy(), multi2.release());
7981 return manage(res);
7984 isl::multi_aff multi_aff::add_dims(isl::dim type, unsigned int n) const {
7985 auto res = isl_multi_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
7986 return manage(res);
7989 isl::multi_aff multi_aff::align_params(isl::space model) const {
7990 auto res = isl_multi_aff_align_params(copy(), model.release());
7991 return manage(res);
7994 unsigned int multi_aff::dim(isl::dim type) const {
7995 auto res = isl_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
7996 return res;
7999 isl::multi_aff multi_aff::domain_map(isl::space space) {
8000 auto res = isl_multi_aff_domain_map(space.release());
8001 return manage(res);
8004 isl::multi_aff multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
8005 auto res = isl_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8006 return manage(res);
8009 isl::multi_aff multi_aff::factor_range() const {
8010 auto res = isl_multi_aff_factor_range(copy());
8011 return manage(res);
8014 int multi_aff::find_dim_by_id(isl::dim type, const isl::id &id) const {
8015 auto res = isl_multi_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
8016 return res;
8019 int multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const {
8020 auto res = isl_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
8021 return res;
8024 isl::multi_aff multi_aff::flat_range_product(isl::multi_aff multi2) const {
8025 auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
8026 return manage(res);
8029 isl::multi_aff multi_aff::flatten_domain() const {
8030 auto res = isl_multi_aff_flatten_domain(copy());
8031 return manage(res);
8034 isl::multi_aff multi_aff::flatten_range() const {
8035 auto res = isl_multi_aff_flatten_range(copy());
8036 return manage(res);
8039 isl::multi_aff multi_aff::floor() const {
8040 auto res = isl_multi_aff_floor(copy());
8041 return manage(res);
8044 isl::multi_aff multi_aff::from_aff_list(isl::space space, isl::aff_list list) {
8045 auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
8046 return manage(res);
8049 isl::multi_aff multi_aff::from_range() const {
8050 auto res = isl_multi_aff_from_range(copy());
8051 return manage(res);
8054 isl::aff multi_aff::get_aff(int pos) const {
8055 auto res = isl_multi_aff_get_aff(get(), pos);
8056 return manage(res);
8059 isl::id multi_aff::get_dim_id(isl::dim type, unsigned int pos) const {
8060 auto res = isl_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8061 return manage(res);
8064 isl::space multi_aff::get_domain_space() const {
8065 auto res = isl_multi_aff_get_domain_space(get());
8066 return manage(res);
8069 isl::space multi_aff::get_space() const {
8070 auto res = isl_multi_aff_get_space(get());
8071 return manage(res);
8074 isl::id multi_aff::get_tuple_id(isl::dim type) const {
8075 auto res = isl_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8076 return manage(res);
8079 std::string multi_aff::get_tuple_name(isl::dim type) const {
8080 auto res = isl_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8081 std::string tmp(res);
8082 return tmp;
8085 isl::multi_aff multi_aff::gist(isl::set context) const {
8086 auto res = isl_multi_aff_gist(copy(), context.release());
8087 return manage(res);
8090 isl::multi_aff multi_aff::gist_params(isl::set context) const {
8091 auto res = isl_multi_aff_gist_params(copy(), context.release());
8092 return manage(res);
8095 isl::boolean multi_aff::has_tuple_id(isl::dim type) const {
8096 auto res = isl_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8097 return manage(res);
8100 isl::multi_aff multi_aff::identity(isl::space space) {
8101 auto res = isl_multi_aff_identity(space.release());
8102 return manage(res);
8105 isl::multi_aff multi_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
8106 auto res = isl_multi_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8107 return manage(res);
8110 isl::boolean multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
8111 auto res = isl_multi_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
8112 return manage(res);
8115 isl::boolean multi_aff::involves_nan() const {
8116 auto res = isl_multi_aff_involves_nan(get());
8117 return manage(res);
8120 isl::set multi_aff::lex_ge_set(isl::multi_aff ma2) const {
8121 auto res = isl_multi_aff_lex_ge_set(copy(), ma2.release());
8122 return manage(res);
8125 isl::set multi_aff::lex_gt_set(isl::multi_aff ma2) const {
8126 auto res = isl_multi_aff_lex_gt_set(copy(), ma2.release());
8127 return manage(res);
8130 isl::set multi_aff::lex_le_set(isl::multi_aff ma2) const {
8131 auto res = isl_multi_aff_lex_le_set(copy(), ma2.release());
8132 return manage(res);
8135 isl::set multi_aff::lex_lt_set(isl::multi_aff ma2) const {
8136 auto res = isl_multi_aff_lex_lt_set(copy(), ma2.release());
8137 return manage(res);
8140 isl::multi_aff multi_aff::mod_multi_val(isl::multi_val mv) const {
8141 auto res = isl_multi_aff_mod_multi_val(copy(), mv.release());
8142 return manage(res);
8145 isl::multi_aff multi_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
8146 auto res = isl_multi_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
8147 return manage(res);
8150 isl::multi_aff multi_aff::multi_val_on_space(isl::space space, isl::multi_val mv) {
8151 auto res = isl_multi_aff_multi_val_on_space(space.release(), mv.release());
8152 return manage(res);
8155 isl::multi_aff multi_aff::neg() const {
8156 auto res = isl_multi_aff_neg(copy());
8157 return manage(res);
8160 int multi_aff::plain_cmp(const isl::multi_aff &multi2) const {
8161 auto res = isl_multi_aff_plain_cmp(get(), multi2.get());
8162 return res;
8165 isl::boolean multi_aff::plain_is_equal(const isl::multi_aff &multi2) const {
8166 auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
8167 return manage(res);
8170 isl::multi_aff multi_aff::product(isl::multi_aff multi2) const {
8171 auto res = isl_multi_aff_product(copy(), multi2.release());
8172 return manage(res);
8175 isl::multi_aff multi_aff::project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n) {
8176 auto res = isl_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
8177 return manage(res);
8180 isl::multi_aff multi_aff::pullback(isl::multi_aff ma2) const {
8181 auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
8182 return manage(res);
8185 isl::multi_aff multi_aff::range_factor_domain() const {
8186 auto res = isl_multi_aff_range_factor_domain(copy());
8187 return manage(res);
8190 isl::multi_aff multi_aff::range_factor_range() const {
8191 auto res = isl_multi_aff_range_factor_range(copy());
8192 return manage(res);
8195 isl::boolean multi_aff::range_is_wrapping() const {
8196 auto res = isl_multi_aff_range_is_wrapping(get());
8197 return manage(res);
8200 isl::multi_aff multi_aff::range_map(isl::space space) {
8201 auto res = isl_multi_aff_range_map(space.release());
8202 return manage(res);
8205 isl::multi_aff multi_aff::range_product(isl::multi_aff multi2) const {
8206 auto res = isl_multi_aff_range_product(copy(), multi2.release());
8207 return manage(res);
8210 isl::multi_aff multi_aff::range_splice(unsigned int pos, isl::multi_aff multi2) const {
8211 auto res = isl_multi_aff_range_splice(copy(), pos, multi2.release());
8212 return manage(res);
8215 isl::multi_aff multi_aff::reset_tuple_id(isl::dim type) const {
8216 auto res = isl_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
8217 return manage(res);
8220 isl::multi_aff multi_aff::reset_user() const {
8221 auto res = isl_multi_aff_reset_user(copy());
8222 return manage(res);
8225 isl::multi_aff multi_aff::scale_down_multi_val(isl::multi_val mv) const {
8226 auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
8227 return manage(res);
8230 isl::multi_aff multi_aff::scale_down_val(isl::val v) const {
8231 auto res = isl_multi_aff_scale_down_val(copy(), v.release());
8232 return manage(res);
8235 isl::multi_aff multi_aff::scale_multi_val(isl::multi_val mv) const {
8236 auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
8237 return manage(res);
8240 isl::multi_aff multi_aff::scale_val(isl::val v) const {
8241 auto res = isl_multi_aff_scale_val(copy(), v.release());
8242 return manage(res);
8245 isl::multi_aff multi_aff::set_aff(int pos, isl::aff el) const {
8246 auto res = isl_multi_aff_set_aff(copy(), pos, el.release());
8247 return manage(res);
8250 isl::multi_aff multi_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
8251 auto res = isl_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
8252 return manage(res);
8255 isl::multi_aff multi_aff::set_tuple_id(isl::dim type, isl::id id) const {
8256 auto res = isl_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
8257 return manage(res);
8260 isl::multi_aff multi_aff::set_tuple_name(isl::dim type, const std::string &s) const {
8261 auto res = isl_multi_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
8262 return manage(res);
8265 isl::multi_aff multi_aff::splice(unsigned int in_pos, unsigned int out_pos, isl::multi_aff multi2) const {
8266 auto res = isl_multi_aff_splice(copy(), in_pos, out_pos, multi2.release());
8267 return manage(res);
8270 isl::multi_aff multi_aff::sub(isl::multi_aff multi2) const {
8271 auto res = isl_multi_aff_sub(copy(), multi2.release());
8272 return manage(res);
8275 isl::multi_aff multi_aff::zero(isl::space space) {
8276 auto res = isl_multi_aff_zero(space.release());
8277 return manage(res);
8280 // implementations for isl::multi_pw_aff
8281 isl::multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
8282 return multi_pw_aff(ptr);
8284 isl::multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
8285 return multi_pw_aff(isl_multi_pw_aff_copy(ptr));
8287 isl::multi_pw_aff give(__isl_take isl_multi_pw_aff *ptr) {
8288 return manage(ptr);
8292 multi_pw_aff::multi_pw_aff()
8293 : ptr(nullptr) {}
8295 multi_pw_aff::multi_pw_aff(const isl::multi_pw_aff &obj)
8296 : ptr(obj.copy()) {}
8297 multi_pw_aff::multi_pw_aff(std::nullptr_t)
8298 : ptr(nullptr) {}
8301 multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
8302 : ptr(ptr) {}
8304 multi_pw_aff::multi_pw_aff(isl::multi_aff ma) {
8305 auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
8306 ptr = res;
8308 multi_pw_aff::multi_pw_aff(isl::pw_aff pa) {
8309 auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
8310 ptr = res;
8312 multi_pw_aff::multi_pw_aff(isl::pw_multi_aff pma) {
8313 auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
8314 ptr = res;
8316 multi_pw_aff::multi_pw_aff(isl::ctx ctx, const std::string &str) {
8317 auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
8318 ptr = res;
8321 multi_pw_aff &multi_pw_aff::operator=(isl::multi_pw_aff obj) {
8322 std::swap(this->ptr, obj.ptr);
8323 return *this;
8326 multi_pw_aff::~multi_pw_aff() {
8327 if (ptr)
8328 isl_multi_pw_aff_free(ptr);
8331 __isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
8332 return isl_multi_pw_aff_copy(ptr);
8335 __isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
8336 return ptr;
8339 __isl_give isl_multi_pw_aff *multi_pw_aff::release() {
8340 isl_multi_pw_aff *tmp = ptr;
8341 ptr = nullptr;
8342 return tmp;
8345 bool multi_pw_aff::is_null() const {
8346 return ptr == nullptr;
8348 __isl_keep isl_multi_pw_aff *multi_pw_aff::keep() const {
8349 return get();
8352 __isl_give isl_multi_pw_aff *multi_pw_aff::take() {
8353 return release();
8356 multi_pw_aff::operator bool() const {
8357 return !is_null();
8361 isl::ctx multi_pw_aff::get_ctx() const {
8362 return isl::ctx(isl_multi_pw_aff_get_ctx(ptr));
8364 std::string multi_pw_aff::to_str() const {
8365 char *Tmp = isl_multi_pw_aff_to_str(get());
8366 if (!Tmp)
8367 return "";
8368 std::string S(Tmp);
8369 free(Tmp);
8370 return S;
8374 void multi_pw_aff::dump() const {
8375 isl_multi_pw_aff_dump(get());
8379 isl::multi_pw_aff multi_pw_aff::add(isl::multi_pw_aff multi2) const {
8380 auto res = isl_multi_pw_aff_add(copy(), multi2.release());
8381 return manage(res);
8384 isl::multi_pw_aff multi_pw_aff::add_dims(isl::dim type, unsigned int n) const {
8385 auto res = isl_multi_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
8386 return manage(res);
8389 isl::multi_pw_aff multi_pw_aff::align_params(isl::space model) const {
8390 auto res = isl_multi_pw_aff_align_params(copy(), model.release());
8391 return manage(res);
8394 isl::multi_pw_aff multi_pw_aff::coalesce() const {
8395 auto res = isl_multi_pw_aff_coalesce(copy());
8396 return manage(res);
8399 unsigned int multi_pw_aff::dim(isl::dim type) const {
8400 auto res = isl_multi_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
8401 return res;
8404 isl::set multi_pw_aff::domain() const {
8405 auto res = isl_multi_pw_aff_domain(copy());
8406 return manage(res);
8409 isl::multi_pw_aff multi_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
8410 auto res = isl_multi_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8411 return manage(res);
8414 isl::map multi_pw_aff::eq_map(isl::multi_pw_aff mpa2) const {
8415 auto res = isl_multi_pw_aff_eq_map(copy(), mpa2.release());
8416 return manage(res);
8419 isl::multi_pw_aff multi_pw_aff::factor_range() const {
8420 auto res = isl_multi_pw_aff_factor_range(copy());
8421 return manage(res);
8424 int multi_pw_aff::find_dim_by_id(isl::dim type, const isl::id &id) const {
8425 auto res = isl_multi_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
8426 return res;
8429 int multi_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const {
8430 auto res = isl_multi_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
8431 return res;
8434 isl::multi_pw_aff multi_pw_aff::flat_range_product(isl::multi_pw_aff multi2) const {
8435 auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
8436 return manage(res);
8439 isl::multi_pw_aff multi_pw_aff::flatten_range() const {
8440 auto res = isl_multi_pw_aff_flatten_range(copy());
8441 return manage(res);
8444 isl::multi_pw_aff multi_pw_aff::from_pw_aff_list(isl::space space, isl::pw_aff_list list) {
8445 auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
8446 return manage(res);
8449 isl::multi_pw_aff multi_pw_aff::from_range() const {
8450 auto res = isl_multi_pw_aff_from_range(copy());
8451 return manage(res);
8454 isl::id multi_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const {
8455 auto res = isl_multi_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8456 return manage(res);
8459 isl::space multi_pw_aff::get_domain_space() const {
8460 auto res = isl_multi_pw_aff_get_domain_space(get());
8461 return manage(res);
8464 uint32_t multi_pw_aff::get_hash() const {
8465 auto res = isl_multi_pw_aff_get_hash(get());
8466 return res;
8469 isl::pw_aff multi_pw_aff::get_pw_aff(int pos) const {
8470 auto res = isl_multi_pw_aff_get_pw_aff(get(), pos);
8471 return manage(res);
8474 isl::space multi_pw_aff::get_space() const {
8475 auto res = isl_multi_pw_aff_get_space(get());
8476 return manage(res);
8479 isl::id multi_pw_aff::get_tuple_id(isl::dim type) const {
8480 auto res = isl_multi_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8481 return manage(res);
8484 std::string multi_pw_aff::get_tuple_name(isl::dim type) const {
8485 auto res = isl_multi_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8486 std::string tmp(res);
8487 return tmp;
8490 isl::multi_pw_aff multi_pw_aff::gist(isl::set set) const {
8491 auto res = isl_multi_pw_aff_gist(copy(), set.release());
8492 return manage(res);
8495 isl::multi_pw_aff multi_pw_aff::gist_params(isl::set set) const {
8496 auto res = isl_multi_pw_aff_gist_params(copy(), set.release());
8497 return manage(res);
8500 isl::boolean multi_pw_aff::has_tuple_id(isl::dim type) const {
8501 auto res = isl_multi_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8502 return manage(res);
8505 isl::multi_pw_aff multi_pw_aff::identity(isl::space space) {
8506 auto res = isl_multi_pw_aff_identity(space.release());
8507 return manage(res);
8510 isl::multi_pw_aff multi_pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
8511 auto res = isl_multi_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8512 return manage(res);
8515 isl::multi_pw_aff multi_pw_aff::intersect_domain(isl::set domain) const {
8516 auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
8517 return manage(res);
8520 isl::multi_pw_aff multi_pw_aff::intersect_params(isl::set set) const {
8521 auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
8522 return manage(res);
8525 isl::boolean multi_pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
8526 auto res = isl_multi_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
8527 return manage(res);
8530 isl::boolean multi_pw_aff::involves_nan() const {
8531 auto res = isl_multi_pw_aff_involves_nan(get());
8532 return manage(res);
8535 isl::boolean multi_pw_aff::is_cst() const {
8536 auto res = isl_multi_pw_aff_is_cst(get());
8537 return manage(res);
8540 isl::boolean multi_pw_aff::is_equal(const isl::multi_pw_aff &mpa2) const {
8541 auto res = isl_multi_pw_aff_is_equal(get(), mpa2.get());
8542 return manage(res);
8545 isl::map multi_pw_aff::lex_gt_map(isl::multi_pw_aff mpa2) const {
8546 auto res = isl_multi_pw_aff_lex_gt_map(copy(), mpa2.release());
8547 return manage(res);
8550 isl::map multi_pw_aff::lex_lt_map(isl::multi_pw_aff mpa2) const {
8551 auto res = isl_multi_pw_aff_lex_lt_map(copy(), mpa2.release());
8552 return manage(res);
8555 isl::multi_pw_aff multi_pw_aff::mod_multi_val(isl::multi_val mv) const {
8556 auto res = isl_multi_pw_aff_mod_multi_val(copy(), mv.release());
8557 return manage(res);
8560 isl::multi_pw_aff multi_pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
8561 auto res = isl_multi_pw_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
8562 return manage(res);
8565 isl::multi_pw_aff multi_pw_aff::neg() const {
8566 auto res = isl_multi_pw_aff_neg(copy());
8567 return manage(res);
8570 isl::boolean multi_pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const {
8571 auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
8572 return manage(res);
8575 isl::multi_pw_aff multi_pw_aff::product(isl::multi_pw_aff multi2) const {
8576 auto res = isl_multi_pw_aff_product(copy(), multi2.release());
8577 return manage(res);
8580 isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_aff ma) const {
8581 auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
8582 return manage(res);
8585 isl::multi_pw_aff multi_pw_aff::pullback(isl::pw_multi_aff pma) const {
8586 auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
8587 return manage(res);
8590 isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_pw_aff mpa2) const {
8591 auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
8592 return manage(res);
8595 isl::multi_pw_aff multi_pw_aff::range_factor_domain() const {
8596 auto res = isl_multi_pw_aff_range_factor_domain(copy());
8597 return manage(res);
8600 isl::multi_pw_aff multi_pw_aff::range_factor_range() const {
8601 auto res = isl_multi_pw_aff_range_factor_range(copy());
8602 return manage(res);
8605 isl::boolean multi_pw_aff::range_is_wrapping() const {
8606 auto res = isl_multi_pw_aff_range_is_wrapping(get());
8607 return manage(res);
8610 isl::multi_pw_aff multi_pw_aff::range_product(isl::multi_pw_aff multi2) const {
8611 auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
8612 return manage(res);
8615 isl::multi_pw_aff multi_pw_aff::range_splice(unsigned int pos, isl::multi_pw_aff multi2) const {
8616 auto res = isl_multi_pw_aff_range_splice(copy(), pos, multi2.release());
8617 return manage(res);
8620 isl::multi_pw_aff multi_pw_aff::reset_tuple_id(isl::dim type) const {
8621 auto res = isl_multi_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
8622 return manage(res);
8625 isl::multi_pw_aff multi_pw_aff::reset_user() const {
8626 auto res = isl_multi_pw_aff_reset_user(copy());
8627 return manage(res);
8630 isl::multi_pw_aff multi_pw_aff::scale_down_multi_val(isl::multi_val mv) const {
8631 auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
8632 return manage(res);
8635 isl::multi_pw_aff multi_pw_aff::scale_down_val(isl::val v) const {
8636 auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
8637 return manage(res);
8640 isl::multi_pw_aff multi_pw_aff::scale_multi_val(isl::multi_val mv) const {
8641 auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
8642 return manage(res);
8645 isl::multi_pw_aff multi_pw_aff::scale_val(isl::val v) const {
8646 auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
8647 return manage(res);
8650 isl::multi_pw_aff multi_pw_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
8651 auto res = isl_multi_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
8652 return manage(res);
8655 isl::multi_pw_aff multi_pw_aff::set_pw_aff(int pos, isl::pw_aff el) const {
8656 auto res = isl_multi_pw_aff_set_pw_aff(copy(), pos, el.release());
8657 return manage(res);
8660 isl::multi_pw_aff multi_pw_aff::set_tuple_id(isl::dim type, isl::id id) const {
8661 auto res = isl_multi_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
8662 return manage(res);
8665 isl::multi_pw_aff multi_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const {
8666 auto res = isl_multi_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
8667 return manage(res);
8670 isl::multi_pw_aff multi_pw_aff::splice(unsigned int in_pos, unsigned int out_pos, isl::multi_pw_aff multi2) const {
8671 auto res = isl_multi_pw_aff_splice(copy(), in_pos, out_pos, multi2.release());
8672 return manage(res);
8675 isl::multi_pw_aff multi_pw_aff::sub(isl::multi_pw_aff multi2) const {
8676 auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
8677 return manage(res);
8680 isl::multi_pw_aff multi_pw_aff::zero(isl::space space) {
8681 auto res = isl_multi_pw_aff_zero(space.release());
8682 return manage(res);
8685 // implementations for isl::multi_union_pw_aff
8686 isl::multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
8687 return multi_union_pw_aff(ptr);
8689 isl::multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
8690 return multi_union_pw_aff(isl_multi_union_pw_aff_copy(ptr));
8692 isl::multi_union_pw_aff give(__isl_take isl_multi_union_pw_aff *ptr) {
8693 return manage(ptr);
8697 multi_union_pw_aff::multi_union_pw_aff()
8698 : ptr(nullptr) {}
8700 multi_union_pw_aff::multi_union_pw_aff(const isl::multi_union_pw_aff &obj)
8701 : ptr(obj.copy()) {}
8702 multi_union_pw_aff::multi_union_pw_aff(std::nullptr_t)
8703 : ptr(nullptr) {}
8706 multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
8707 : ptr(ptr) {}
8709 multi_union_pw_aff::multi_union_pw_aff(isl::union_pw_aff upa) {
8710 auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
8711 ptr = res;
8713 multi_union_pw_aff::multi_union_pw_aff(isl::multi_pw_aff mpa) {
8714 auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
8715 ptr = res;
8717 multi_union_pw_aff::multi_union_pw_aff(isl::union_pw_multi_aff upma) {
8718 auto res = isl_multi_union_pw_aff_from_union_pw_multi_aff(upma.release());
8719 ptr = res;
8721 multi_union_pw_aff::multi_union_pw_aff(isl::ctx ctx, const std::string &str) {
8722 auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
8723 ptr = res;
8726 multi_union_pw_aff &multi_union_pw_aff::operator=(isl::multi_union_pw_aff obj) {
8727 std::swap(this->ptr, obj.ptr);
8728 return *this;
8731 multi_union_pw_aff::~multi_union_pw_aff() {
8732 if (ptr)
8733 isl_multi_union_pw_aff_free(ptr);
8736 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
8737 return isl_multi_union_pw_aff_copy(ptr);
8740 __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
8741 return ptr;
8744 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
8745 isl_multi_union_pw_aff *tmp = ptr;
8746 ptr = nullptr;
8747 return tmp;
8750 bool multi_union_pw_aff::is_null() const {
8751 return ptr == nullptr;
8753 __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::keep() const {
8754 return get();
8757 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::take() {
8758 return release();
8761 multi_union_pw_aff::operator bool() const {
8762 return !is_null();
8766 isl::ctx multi_union_pw_aff::get_ctx() const {
8767 return isl::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
8769 std::string multi_union_pw_aff::to_str() const {
8770 char *Tmp = isl_multi_union_pw_aff_to_str(get());
8771 if (!Tmp)
8772 return "";
8773 std::string S(Tmp);
8774 free(Tmp);
8775 return S;
8779 void multi_union_pw_aff::dump() const {
8780 isl_multi_union_pw_aff_dump(get());
8784 isl::multi_union_pw_aff multi_union_pw_aff::add(isl::multi_union_pw_aff multi2) const {
8785 auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
8786 return manage(res);
8789 isl::multi_union_pw_aff multi_union_pw_aff::align_params(isl::space model) const {
8790 auto res = isl_multi_union_pw_aff_align_params(copy(), model.release());
8791 return manage(res);
8794 isl::union_pw_aff multi_union_pw_aff::apply_aff(isl::aff aff) const {
8795 auto res = isl_multi_union_pw_aff_apply_aff(copy(), aff.release());
8796 return manage(res);
8799 isl::union_pw_aff multi_union_pw_aff::apply_pw_aff(isl::pw_aff pa) const {
8800 auto res = isl_multi_union_pw_aff_apply_pw_aff(copy(), pa.release());
8801 return manage(res);
8804 isl::multi_union_pw_aff multi_union_pw_aff::apply_pw_multi_aff(isl::pw_multi_aff pma) const {
8805 auto res = isl_multi_union_pw_aff_apply_pw_multi_aff(copy(), pma.release());
8806 return manage(res);
8809 isl::multi_union_pw_aff multi_union_pw_aff::coalesce() const {
8810 auto res = isl_multi_union_pw_aff_coalesce(copy());
8811 return manage(res);
8814 unsigned int multi_union_pw_aff::dim(isl::dim type) const {
8815 auto res = isl_multi_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
8816 return res;
8819 isl::union_set multi_union_pw_aff::domain() const {
8820 auto res = isl_multi_union_pw_aff_domain(copy());
8821 return manage(res);
8824 isl::multi_union_pw_aff multi_union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
8825 auto res = isl_multi_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8826 return manage(res);
8829 isl::multi_pw_aff multi_union_pw_aff::extract_multi_pw_aff(isl::space space) const {
8830 auto res = isl_multi_union_pw_aff_extract_multi_pw_aff(get(), space.release());
8831 return manage(res);
8834 isl::multi_union_pw_aff multi_union_pw_aff::factor_range() const {
8835 auto res = isl_multi_union_pw_aff_factor_range(copy());
8836 return manage(res);
8839 int multi_union_pw_aff::find_dim_by_id(isl::dim type, const isl::id &id) const {
8840 auto res = isl_multi_union_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
8841 return res;
8844 int multi_union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const {
8845 auto res = isl_multi_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
8846 return res;
8849 isl::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::multi_union_pw_aff multi2) const {
8850 auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
8851 return manage(res);
8854 isl::multi_union_pw_aff multi_union_pw_aff::flatten_range() const {
8855 auto res = isl_multi_union_pw_aff_flatten_range(copy());
8856 return manage(res);
8859 isl::multi_union_pw_aff multi_union_pw_aff::floor() const {
8860 auto res = isl_multi_union_pw_aff_floor(copy());
8861 return manage(res);
8864 isl::multi_union_pw_aff multi_union_pw_aff::from_multi_aff(isl::multi_aff ma) {
8865 auto res = isl_multi_union_pw_aff_from_multi_aff(ma.release());
8866 return manage(res);
8869 isl::multi_union_pw_aff multi_union_pw_aff::from_range() const {
8870 auto res = isl_multi_union_pw_aff_from_range(copy());
8871 return manage(res);
8874 isl::multi_union_pw_aff multi_union_pw_aff::from_union_map(isl::union_map umap) {
8875 auto res = isl_multi_union_pw_aff_from_union_map(umap.release());
8876 return manage(res);
8879 isl::multi_union_pw_aff multi_union_pw_aff::from_union_pw_aff_list(isl::space space, isl::union_pw_aff_list list) {
8880 auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
8881 return manage(res);
8884 isl::id multi_union_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const {
8885 auto res = isl_multi_union_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8886 return manage(res);
8889 isl::space multi_union_pw_aff::get_domain_space() const {
8890 auto res = isl_multi_union_pw_aff_get_domain_space(get());
8891 return manage(res);
8894 isl::space multi_union_pw_aff::get_space() const {
8895 auto res = isl_multi_union_pw_aff_get_space(get());
8896 return manage(res);
8899 isl::id multi_union_pw_aff::get_tuple_id(isl::dim type) const {
8900 auto res = isl_multi_union_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8901 return manage(res);
8904 std::string multi_union_pw_aff::get_tuple_name(isl::dim type) const {
8905 auto res = isl_multi_union_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8906 std::string tmp(res);
8907 return tmp;
8910 isl::union_pw_aff multi_union_pw_aff::get_union_pw_aff(int pos) const {
8911 auto res = isl_multi_union_pw_aff_get_union_pw_aff(get(), pos);
8912 return manage(res);
8915 isl::multi_union_pw_aff multi_union_pw_aff::gist(isl::union_set context) const {
8916 auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
8917 return manage(res);
8920 isl::multi_union_pw_aff multi_union_pw_aff::gist_params(isl::set context) const {
8921 auto res = isl_multi_union_pw_aff_gist_params(copy(), context.release());
8922 return manage(res);
8925 isl::boolean multi_union_pw_aff::has_tuple_id(isl::dim type) const {
8926 auto res = isl_multi_union_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8927 return manage(res);
8930 isl::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::union_set uset) const {
8931 auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
8932 return manage(res);
8935 isl::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::set params) const {
8936 auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
8937 return manage(res);
8940 isl::multi_union_pw_aff multi_union_pw_aff::intersect_range(isl::set set) const {
8941 auto res = isl_multi_union_pw_aff_intersect_range(copy(), set.release());
8942 return manage(res);
8945 isl::boolean multi_union_pw_aff::involves_nan() const {
8946 auto res = isl_multi_union_pw_aff_involves_nan(get());
8947 return manage(res);
8950 isl::multi_union_pw_aff multi_union_pw_aff::mod_multi_val(isl::multi_val mv) const {
8951 auto res = isl_multi_union_pw_aff_mod_multi_val(copy(), mv.release());
8952 return manage(res);
8955 isl::multi_union_pw_aff multi_union_pw_aff::multi_aff_on_domain(isl::union_set domain, isl::multi_aff ma) {
8956 auto res = isl_multi_union_pw_aff_multi_aff_on_domain(domain.release(), ma.release());
8957 return manage(res);
8960 isl::multi_union_pw_aff multi_union_pw_aff::multi_val_on_domain(isl::union_set domain, isl::multi_val mv) {
8961 auto res = isl_multi_union_pw_aff_multi_val_on_domain(domain.release(), mv.release());
8962 return manage(res);
8965 isl::multi_union_pw_aff multi_union_pw_aff::neg() const {
8966 auto res = isl_multi_union_pw_aff_neg(copy());
8967 return manage(res);
8970 isl::boolean multi_union_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const {
8971 auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
8972 return manage(res);
8975 isl::multi_union_pw_aff multi_union_pw_aff::pullback(isl::union_pw_multi_aff upma) const {
8976 auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
8977 return manage(res);
8980 isl::multi_union_pw_aff multi_union_pw_aff::range_factor_domain() const {
8981 auto res = isl_multi_union_pw_aff_range_factor_domain(copy());
8982 return manage(res);
8985 isl::multi_union_pw_aff multi_union_pw_aff::range_factor_range() const {
8986 auto res = isl_multi_union_pw_aff_range_factor_range(copy());
8987 return manage(res);
8990 isl::boolean multi_union_pw_aff::range_is_wrapping() const {
8991 auto res = isl_multi_union_pw_aff_range_is_wrapping(get());
8992 return manage(res);
8995 isl::multi_union_pw_aff multi_union_pw_aff::range_product(isl::multi_union_pw_aff multi2) const {
8996 auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
8997 return manage(res);
9000 isl::multi_union_pw_aff multi_union_pw_aff::range_splice(unsigned int pos, isl::multi_union_pw_aff multi2) const {
9001 auto res = isl_multi_union_pw_aff_range_splice(copy(), pos, multi2.release());
9002 return manage(res);
9005 isl::multi_union_pw_aff multi_union_pw_aff::reset_tuple_id(isl::dim type) const {
9006 auto res = isl_multi_union_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
9007 return manage(res);
9010 isl::multi_union_pw_aff multi_union_pw_aff::reset_user() const {
9011 auto res = isl_multi_union_pw_aff_reset_user(copy());
9012 return manage(res);
9015 isl::multi_union_pw_aff multi_union_pw_aff::scale_down_multi_val(isl::multi_val mv) const {
9016 auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
9017 return manage(res);
9020 isl::multi_union_pw_aff multi_union_pw_aff::scale_down_val(isl::val v) const {
9021 auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
9022 return manage(res);
9025 isl::multi_union_pw_aff multi_union_pw_aff::scale_multi_val(isl::multi_val mv) const {
9026 auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
9027 return manage(res);
9030 isl::multi_union_pw_aff multi_union_pw_aff::scale_val(isl::val v) const {
9031 auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
9032 return manage(res);
9035 isl::multi_union_pw_aff multi_union_pw_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
9036 auto res = isl_multi_union_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
9037 return manage(res);
9040 isl::multi_union_pw_aff multi_union_pw_aff::set_tuple_id(isl::dim type, isl::id id) const {
9041 auto res = isl_multi_union_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
9042 return manage(res);
9045 isl::multi_union_pw_aff multi_union_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const {
9046 auto res = isl_multi_union_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
9047 return manage(res);
9050 isl::multi_union_pw_aff multi_union_pw_aff::set_union_pw_aff(int pos, isl::union_pw_aff el) const {
9051 auto res = isl_multi_union_pw_aff_set_union_pw_aff(copy(), pos, el.release());
9052 return manage(res);
9055 isl::multi_union_pw_aff multi_union_pw_aff::sub(isl::multi_union_pw_aff multi2) const {
9056 auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
9057 return manage(res);
9060 isl::multi_union_pw_aff multi_union_pw_aff::union_add(isl::multi_union_pw_aff mupa2) const {
9061 auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
9062 return manage(res);
9065 isl::multi_union_pw_aff multi_union_pw_aff::zero(isl::space space) {
9066 auto res = isl_multi_union_pw_aff_zero(space.release());
9067 return manage(res);
9070 isl::union_set multi_union_pw_aff::zero_union_set() const {
9071 auto res = isl_multi_union_pw_aff_zero_union_set(copy());
9072 return manage(res);
9075 // implementations for isl::multi_val
9076 isl::multi_val manage(__isl_take isl_multi_val *ptr) {
9077 return multi_val(ptr);
9079 isl::multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
9080 return multi_val(isl_multi_val_copy(ptr));
9082 isl::multi_val give(__isl_take isl_multi_val *ptr) {
9083 return manage(ptr);
9087 multi_val::multi_val()
9088 : ptr(nullptr) {}
9090 multi_val::multi_val(const isl::multi_val &obj)
9091 : ptr(obj.copy()) {}
9092 multi_val::multi_val(std::nullptr_t)
9093 : ptr(nullptr) {}
9096 multi_val::multi_val(__isl_take isl_multi_val *ptr)
9097 : ptr(ptr) {}
9099 multi_val::multi_val(isl::ctx ctx, const std::string &str) {
9100 auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
9101 ptr = res;
9104 multi_val &multi_val::operator=(isl::multi_val obj) {
9105 std::swap(this->ptr, obj.ptr);
9106 return *this;
9109 multi_val::~multi_val() {
9110 if (ptr)
9111 isl_multi_val_free(ptr);
9114 __isl_give isl_multi_val *multi_val::copy() const & {
9115 return isl_multi_val_copy(ptr);
9118 __isl_keep isl_multi_val *multi_val::get() const {
9119 return ptr;
9122 __isl_give isl_multi_val *multi_val::release() {
9123 isl_multi_val *tmp = ptr;
9124 ptr = nullptr;
9125 return tmp;
9128 bool multi_val::is_null() const {
9129 return ptr == nullptr;
9131 __isl_keep isl_multi_val *multi_val::keep() const {
9132 return get();
9135 __isl_give isl_multi_val *multi_val::take() {
9136 return release();
9139 multi_val::operator bool() const {
9140 return !is_null();
9144 isl::ctx multi_val::get_ctx() const {
9145 return isl::ctx(isl_multi_val_get_ctx(ptr));
9147 std::string multi_val::to_str() const {
9148 char *Tmp = isl_multi_val_to_str(get());
9149 if (!Tmp)
9150 return "";
9151 std::string S(Tmp);
9152 free(Tmp);
9153 return S;
9157 void multi_val::dump() const {
9158 isl_multi_val_dump(get());
9162 isl::multi_val multi_val::add(isl::multi_val multi2) const {
9163 auto res = isl_multi_val_add(copy(), multi2.release());
9164 return manage(res);
9167 isl::multi_val multi_val::add_dims(isl::dim type, unsigned int n) const {
9168 auto res = isl_multi_val_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
9169 return manage(res);
9172 isl::multi_val multi_val::add_val(isl::val v) const {
9173 auto res = isl_multi_val_add_val(copy(), v.release());
9174 return manage(res);
9177 isl::multi_val multi_val::align_params(isl::space model) const {
9178 auto res = isl_multi_val_align_params(copy(), model.release());
9179 return manage(res);
9182 unsigned int multi_val::dim(isl::dim type) const {
9183 auto res = isl_multi_val_dim(get(), static_cast<enum isl_dim_type>(type));
9184 return res;
9187 isl::multi_val multi_val::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
9188 auto res = isl_multi_val_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9189 return manage(res);
9192 isl::multi_val multi_val::factor_range() const {
9193 auto res = isl_multi_val_factor_range(copy());
9194 return manage(res);
9197 int multi_val::find_dim_by_id(isl::dim type, const isl::id &id) const {
9198 auto res = isl_multi_val_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
9199 return res;
9202 int multi_val::find_dim_by_name(isl::dim type, const std::string &name) const {
9203 auto res = isl_multi_val_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
9204 return res;
9207 isl::multi_val multi_val::flat_range_product(isl::multi_val multi2) const {
9208 auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
9209 return manage(res);
9212 isl::multi_val multi_val::flatten_range() const {
9213 auto res = isl_multi_val_flatten_range(copy());
9214 return manage(res);
9217 isl::multi_val multi_val::from_range() const {
9218 auto res = isl_multi_val_from_range(copy());
9219 return manage(res);
9222 isl::multi_val multi_val::from_val_list(isl::space space, isl::val_list list) {
9223 auto res = isl_multi_val_from_val_list(space.release(), list.release());
9224 return manage(res);
9227 isl::id multi_val::get_dim_id(isl::dim type, unsigned int pos) const {
9228 auto res = isl_multi_val_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
9229 return manage(res);
9232 isl::space multi_val::get_domain_space() const {
9233 auto res = isl_multi_val_get_domain_space(get());
9234 return manage(res);
9237 isl::space multi_val::get_space() const {
9238 auto res = isl_multi_val_get_space(get());
9239 return manage(res);
9242 isl::id multi_val::get_tuple_id(isl::dim type) const {
9243 auto res = isl_multi_val_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9244 return manage(res);
9247 std::string multi_val::get_tuple_name(isl::dim type) const {
9248 auto res = isl_multi_val_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
9249 std::string tmp(res);
9250 return tmp;
9253 isl::val multi_val::get_val(int pos) const {
9254 auto res = isl_multi_val_get_val(get(), pos);
9255 return manage(res);
9258 isl::boolean multi_val::has_tuple_id(isl::dim type) const {
9259 auto res = isl_multi_val_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9260 return manage(res);
9263 isl::multi_val multi_val::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
9264 auto res = isl_multi_val_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9265 return manage(res);
9268 isl::boolean multi_val::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
9269 auto res = isl_multi_val_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
9270 return manage(res);
9273 isl::boolean multi_val::involves_nan() const {
9274 auto res = isl_multi_val_involves_nan(get());
9275 return manage(res);
9278 isl::multi_val multi_val::mod_multi_val(isl::multi_val mv) const {
9279 auto res = isl_multi_val_mod_multi_val(copy(), mv.release());
9280 return manage(res);
9283 isl::multi_val multi_val::mod_val(isl::val v) const {
9284 auto res = isl_multi_val_mod_val(copy(), v.release());
9285 return manage(res);
9288 isl::multi_val multi_val::neg() const {
9289 auto res = isl_multi_val_neg(copy());
9290 return manage(res);
9293 isl::boolean multi_val::plain_is_equal(const isl::multi_val &multi2) const {
9294 auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
9295 return manage(res);
9298 isl::multi_val multi_val::product(isl::multi_val multi2) const {
9299 auto res = isl_multi_val_product(copy(), multi2.release());
9300 return manage(res);
9303 isl::multi_val multi_val::range_factor_domain() const {
9304 auto res = isl_multi_val_range_factor_domain(copy());
9305 return manage(res);
9308 isl::multi_val multi_val::range_factor_range() const {
9309 auto res = isl_multi_val_range_factor_range(copy());
9310 return manage(res);
9313 isl::boolean multi_val::range_is_wrapping() const {
9314 auto res = isl_multi_val_range_is_wrapping(get());
9315 return manage(res);
9318 isl::multi_val multi_val::range_product(isl::multi_val multi2) const {
9319 auto res = isl_multi_val_range_product(copy(), multi2.release());
9320 return manage(res);
9323 isl::multi_val multi_val::range_splice(unsigned int pos, isl::multi_val multi2) const {
9324 auto res = isl_multi_val_range_splice(copy(), pos, multi2.release());
9325 return manage(res);
9328 isl::multi_val multi_val::reset_tuple_id(isl::dim type) const {
9329 auto res = isl_multi_val_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
9330 return manage(res);
9333 isl::multi_val multi_val::reset_user() const {
9334 auto res = isl_multi_val_reset_user(copy());
9335 return manage(res);
9338 isl::multi_val multi_val::scale_down_multi_val(isl::multi_val mv) const {
9339 auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
9340 return manage(res);
9343 isl::multi_val multi_val::scale_down_val(isl::val v) const {
9344 auto res = isl_multi_val_scale_down_val(copy(), v.release());
9345 return manage(res);
9348 isl::multi_val multi_val::scale_multi_val(isl::multi_val mv) const {
9349 auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
9350 return manage(res);
9353 isl::multi_val multi_val::scale_val(isl::val v) const {
9354 auto res = isl_multi_val_scale_val(copy(), v.release());
9355 return manage(res);
9358 isl::multi_val multi_val::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
9359 auto res = isl_multi_val_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
9360 return manage(res);
9363 isl::multi_val multi_val::set_tuple_id(isl::dim type, isl::id id) const {
9364 auto res = isl_multi_val_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
9365 return manage(res);
9368 isl::multi_val multi_val::set_tuple_name(isl::dim type, const std::string &s) const {
9369 auto res = isl_multi_val_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
9370 return manage(res);
9373 isl::multi_val multi_val::set_val(int pos, isl::val el) const {
9374 auto res = isl_multi_val_set_val(copy(), pos, el.release());
9375 return manage(res);
9378 isl::multi_val multi_val::splice(unsigned int in_pos, unsigned int out_pos, isl::multi_val multi2) const {
9379 auto res = isl_multi_val_splice(copy(), in_pos, out_pos, multi2.release());
9380 return manage(res);
9383 isl::multi_val multi_val::sub(isl::multi_val multi2) const {
9384 auto res = isl_multi_val_sub(copy(), multi2.release());
9385 return manage(res);
9388 isl::multi_val multi_val::zero(isl::space space) {
9389 auto res = isl_multi_val_zero(space.release());
9390 return manage(res);
9393 // implementations for isl::point
9394 isl::point manage(__isl_take isl_point *ptr) {
9395 return point(ptr);
9397 isl::point manage_copy(__isl_keep isl_point *ptr) {
9398 return point(isl_point_copy(ptr));
9400 isl::point give(__isl_take isl_point *ptr) {
9401 return manage(ptr);
9405 point::point()
9406 : ptr(nullptr) {}
9408 point::point(const isl::point &obj)
9409 : ptr(obj.copy()) {}
9410 point::point(std::nullptr_t)
9411 : ptr(nullptr) {}
9414 point::point(__isl_take isl_point *ptr)
9415 : ptr(ptr) {}
9417 point::point(isl::space dim) {
9418 auto res = isl_point_zero(dim.release());
9419 ptr = res;
9422 point &point::operator=(isl::point obj) {
9423 std::swap(this->ptr, obj.ptr);
9424 return *this;
9427 point::~point() {
9428 if (ptr)
9429 isl_point_free(ptr);
9432 __isl_give isl_point *point::copy() const & {
9433 return isl_point_copy(ptr);
9436 __isl_keep isl_point *point::get() const {
9437 return ptr;
9440 __isl_give isl_point *point::release() {
9441 isl_point *tmp = ptr;
9442 ptr = nullptr;
9443 return tmp;
9446 bool point::is_null() const {
9447 return ptr == nullptr;
9449 __isl_keep isl_point *point::keep() const {
9450 return get();
9453 __isl_give isl_point *point::take() {
9454 return release();
9457 point::operator bool() const {
9458 return !is_null();
9462 isl::ctx point::get_ctx() const {
9463 return isl::ctx(isl_point_get_ctx(ptr));
9465 std::string point::to_str() const {
9466 char *Tmp = isl_point_to_str(get());
9467 if (!Tmp)
9468 return "";
9469 std::string S(Tmp);
9470 free(Tmp);
9471 return S;
9475 void point::dump() const {
9476 isl_point_dump(get());
9480 isl::point point::add_ui(isl::dim type, int pos, unsigned int val) const {
9481 auto res = isl_point_add_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
9482 return manage(res);
9485 isl::val point::get_coordinate_val(isl::dim type, int pos) const {
9486 auto res = isl_point_get_coordinate_val(get(), static_cast<enum isl_dim_type>(type), pos);
9487 return manage(res);
9490 isl::space point::get_space() const {
9491 auto res = isl_point_get_space(get());
9492 return manage(res);
9495 isl::point point::set_coordinate_val(isl::dim type, int pos, isl::val v) const {
9496 auto res = isl_point_set_coordinate_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
9497 return manage(res);
9500 isl::point point::sub_ui(isl::dim type, int pos, unsigned int val) const {
9501 auto res = isl_point_sub_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
9502 return manage(res);
9505 // implementations for isl::pw_aff
9506 isl::pw_aff manage(__isl_take isl_pw_aff *ptr) {
9507 return pw_aff(ptr);
9509 isl::pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
9510 return pw_aff(isl_pw_aff_copy(ptr));
9512 isl::pw_aff give(__isl_take isl_pw_aff *ptr) {
9513 return manage(ptr);
9517 pw_aff::pw_aff()
9518 : ptr(nullptr) {}
9520 pw_aff::pw_aff(const isl::pw_aff &obj)
9521 : ptr(obj.copy()) {}
9522 pw_aff::pw_aff(std::nullptr_t)
9523 : ptr(nullptr) {}
9526 pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
9527 : ptr(ptr) {}
9529 pw_aff::pw_aff(isl::aff aff) {
9530 auto res = isl_pw_aff_from_aff(aff.release());
9531 ptr = res;
9533 pw_aff::pw_aff(isl::local_space ls) {
9534 auto res = isl_pw_aff_zero_on_domain(ls.release());
9535 ptr = res;
9537 pw_aff::pw_aff(isl::set domain, isl::val v) {
9538 auto res = isl_pw_aff_val_on_domain(domain.release(), v.release());
9539 ptr = res;
9541 pw_aff::pw_aff(isl::ctx ctx, const std::string &str) {
9542 auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
9543 ptr = res;
9546 pw_aff &pw_aff::operator=(isl::pw_aff obj) {
9547 std::swap(this->ptr, obj.ptr);
9548 return *this;
9551 pw_aff::~pw_aff() {
9552 if (ptr)
9553 isl_pw_aff_free(ptr);
9556 __isl_give isl_pw_aff *pw_aff::copy() const & {
9557 return isl_pw_aff_copy(ptr);
9560 __isl_keep isl_pw_aff *pw_aff::get() const {
9561 return ptr;
9564 __isl_give isl_pw_aff *pw_aff::release() {
9565 isl_pw_aff *tmp = ptr;
9566 ptr = nullptr;
9567 return tmp;
9570 bool pw_aff::is_null() const {
9571 return ptr == nullptr;
9573 __isl_keep isl_pw_aff *pw_aff::keep() const {
9574 return get();
9577 __isl_give isl_pw_aff *pw_aff::take() {
9578 return release();
9581 pw_aff::operator bool() const {
9582 return !is_null();
9586 isl::ctx pw_aff::get_ctx() const {
9587 return isl::ctx(isl_pw_aff_get_ctx(ptr));
9589 std::string pw_aff::to_str() const {
9590 char *Tmp = isl_pw_aff_to_str(get());
9591 if (!Tmp)
9592 return "";
9593 std::string S(Tmp);
9594 free(Tmp);
9595 return S;
9599 void pw_aff::dump() const {
9600 isl_pw_aff_dump(get());
9604 isl::pw_aff pw_aff::add(isl::pw_aff pwaff2) const {
9605 auto res = isl_pw_aff_add(copy(), pwaff2.release());
9606 return manage(res);
9609 isl::pw_aff pw_aff::add_dims(isl::dim type, unsigned int n) const {
9610 auto res = isl_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
9611 return manage(res);
9614 isl::pw_aff pw_aff::align_params(isl::space model) const {
9615 auto res = isl_pw_aff_align_params(copy(), model.release());
9616 return manage(res);
9619 isl::pw_aff pw_aff::alloc(isl::set set, isl::aff aff) {
9620 auto res = isl_pw_aff_alloc(set.release(), aff.release());
9621 return manage(res);
9624 isl::pw_aff pw_aff::ceil() const {
9625 auto res = isl_pw_aff_ceil(copy());
9626 return manage(res);
9629 isl::pw_aff pw_aff::coalesce() const {
9630 auto res = isl_pw_aff_coalesce(copy());
9631 return manage(res);
9634 isl::pw_aff pw_aff::cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const {
9635 auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
9636 return manage(res);
9639 unsigned int pw_aff::dim(isl::dim type) const {
9640 auto res = isl_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
9641 return res;
9644 isl::pw_aff pw_aff::div(isl::pw_aff pa2) const {
9645 auto res = isl_pw_aff_div(copy(), pa2.release());
9646 return manage(res);
9649 isl::set pw_aff::domain() const {
9650 auto res = isl_pw_aff_domain(copy());
9651 return manage(res);
9654 isl::pw_aff pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
9655 auto res = isl_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9656 return manage(res);
9659 isl::pw_aff pw_aff::empty(isl::space dim) {
9660 auto res = isl_pw_aff_empty(dim.release());
9661 return manage(res);
9664 isl::map pw_aff::eq_map(isl::pw_aff pa2) const {
9665 auto res = isl_pw_aff_eq_map(copy(), pa2.release());
9666 return manage(res);
9669 isl::set pw_aff::eq_set(isl::pw_aff pwaff2) const {
9670 auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
9671 return manage(res);
9674 int pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const {
9675 auto res = isl_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
9676 return res;
9679 isl::pw_aff pw_aff::floor() const {
9680 auto res = isl_pw_aff_floor(copy());
9681 return manage(res);
9684 isl::stat pw_aff::foreach_piece(const std::function<isl::stat(isl::set, isl::aff)> &fn) const {
9685 auto fn_p = &fn;
9686 auto fn_lambda = [](isl_set *arg_0, isl_aff *arg_1, void *arg_2) -> isl_stat {
9687 auto *func = *static_cast<const std::function<isl::stat(isl::set, isl::aff)> **>(arg_2);
9688 stat ret = (*func)(isl::manage(arg_0), isl::manage(arg_1));
9689 return isl_stat(ret);
9691 auto res = isl_pw_aff_foreach_piece(get(), fn_lambda, &fn_p);
9692 return isl::stat(res);
9695 isl::pw_aff pw_aff::from_range() const {
9696 auto res = isl_pw_aff_from_range(copy());
9697 return manage(res);
9700 isl::set pw_aff::ge_set(isl::pw_aff pwaff2) const {
9701 auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
9702 return manage(res);
9705 isl::id pw_aff::get_dim_id(isl::dim type, unsigned int pos) const {
9706 auto res = isl_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
9707 return manage(res);
9710 std::string pw_aff::get_dim_name(isl::dim type, unsigned int pos) const {
9711 auto res = isl_pw_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
9712 std::string tmp(res);
9713 return tmp;
9716 isl::space pw_aff::get_domain_space() const {
9717 auto res = isl_pw_aff_get_domain_space(get());
9718 return manage(res);
9721 uint32_t pw_aff::get_hash() const {
9722 auto res = isl_pw_aff_get_hash(get());
9723 return res;
9726 isl::space pw_aff::get_space() const {
9727 auto res = isl_pw_aff_get_space(get());
9728 return manage(res);
9731 isl::id pw_aff::get_tuple_id(isl::dim type) const {
9732 auto res = isl_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9733 return manage(res);
9736 isl::pw_aff pw_aff::gist(isl::set context) const {
9737 auto res = isl_pw_aff_gist(copy(), context.release());
9738 return manage(res);
9741 isl::pw_aff pw_aff::gist_params(isl::set context) const {
9742 auto res = isl_pw_aff_gist_params(copy(), context.release());
9743 return manage(res);
9746 isl::map pw_aff::gt_map(isl::pw_aff pa2) const {
9747 auto res = isl_pw_aff_gt_map(copy(), pa2.release());
9748 return manage(res);
9751 isl::set pw_aff::gt_set(isl::pw_aff pwaff2) const {
9752 auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
9753 return manage(res);
9756 isl::boolean pw_aff::has_dim_id(isl::dim type, unsigned int pos) const {
9757 auto res = isl_pw_aff_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
9758 return manage(res);
9761 isl::boolean pw_aff::has_tuple_id(isl::dim type) const {
9762 auto res = isl_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9763 return manage(res);
9766 isl::pw_aff pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
9767 auto res = isl_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9768 return manage(res);
9771 isl::pw_aff pw_aff::intersect_domain(isl::set set) const {
9772 auto res = isl_pw_aff_intersect_domain(copy(), set.release());
9773 return manage(res);
9776 isl::pw_aff pw_aff::intersect_params(isl::set set) const {
9777 auto res = isl_pw_aff_intersect_params(copy(), set.release());
9778 return manage(res);
9781 isl::boolean pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
9782 auto res = isl_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
9783 return manage(res);
9786 isl::boolean pw_aff::involves_nan() const {
9787 auto res = isl_pw_aff_involves_nan(get());
9788 return manage(res);
9791 isl::boolean pw_aff::is_cst() const {
9792 auto res = isl_pw_aff_is_cst(get());
9793 return manage(res);
9796 isl::boolean pw_aff::is_empty() const {
9797 auto res = isl_pw_aff_is_empty(get());
9798 return manage(res);
9801 isl::boolean pw_aff::is_equal(const isl::pw_aff &pa2) const {
9802 auto res = isl_pw_aff_is_equal(get(), pa2.get());
9803 return manage(res);
9806 isl::set pw_aff::le_set(isl::pw_aff pwaff2) const {
9807 auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
9808 return manage(res);
9811 isl::map pw_aff::lt_map(isl::pw_aff pa2) const {
9812 auto res = isl_pw_aff_lt_map(copy(), pa2.release());
9813 return manage(res);
9816 isl::set pw_aff::lt_set(isl::pw_aff pwaff2) const {
9817 auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
9818 return manage(res);
9821 isl::pw_aff pw_aff::max(isl::pw_aff pwaff2) const {
9822 auto res = isl_pw_aff_max(copy(), pwaff2.release());
9823 return manage(res);
9826 isl::pw_aff pw_aff::min(isl::pw_aff pwaff2) const {
9827 auto res = isl_pw_aff_min(copy(), pwaff2.release());
9828 return manage(res);
9831 isl::pw_aff pw_aff::mod(isl::val mod) const {
9832 auto res = isl_pw_aff_mod_val(copy(), mod.release());
9833 return manage(res);
9836 isl::pw_aff pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
9837 auto res = isl_pw_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
9838 return manage(res);
9841 isl::pw_aff pw_aff::mul(isl::pw_aff pwaff2) const {
9842 auto res = isl_pw_aff_mul(copy(), pwaff2.release());
9843 return manage(res);
9846 isl::pw_aff pw_aff::nan_on_domain(isl::local_space ls) {
9847 auto res = isl_pw_aff_nan_on_domain(ls.release());
9848 return manage(res);
9851 isl::set pw_aff::ne_set(isl::pw_aff pwaff2) const {
9852 auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
9853 return manage(res);
9856 isl::pw_aff pw_aff::neg() const {
9857 auto res = isl_pw_aff_neg(copy());
9858 return manage(res);
9861 isl::set pw_aff::non_zero_set() const {
9862 auto res = isl_pw_aff_non_zero_set(copy());
9863 return manage(res);
9866 isl::set pw_aff::nonneg_set() const {
9867 auto res = isl_pw_aff_nonneg_set(copy());
9868 return manage(res);
9871 isl::set pw_aff::params() const {
9872 auto res = isl_pw_aff_params(copy());
9873 return manage(res);
9876 int pw_aff::plain_cmp(const isl::pw_aff &pa2) const {
9877 auto res = isl_pw_aff_plain_cmp(get(), pa2.get());
9878 return res;
9881 isl::boolean pw_aff::plain_is_equal(const isl::pw_aff &pwaff2) const {
9882 auto res = isl_pw_aff_plain_is_equal(get(), pwaff2.get());
9883 return manage(res);
9886 isl::set pw_aff::pos_set() const {
9887 auto res = isl_pw_aff_pos_set(copy());
9888 return manage(res);
9891 isl::pw_aff pw_aff::project_domain_on_params() const {
9892 auto res = isl_pw_aff_project_domain_on_params(copy());
9893 return manage(res);
9896 isl::pw_aff pw_aff::pullback(isl::multi_aff ma) const {
9897 auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
9898 return manage(res);
9901 isl::pw_aff pw_aff::pullback(isl::pw_multi_aff pma) const {
9902 auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
9903 return manage(res);
9906 isl::pw_aff pw_aff::pullback(isl::multi_pw_aff mpa) const {
9907 auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
9908 return manage(res);
9911 isl::pw_aff pw_aff::reset_tuple_id(isl::dim type) const {
9912 auto res = isl_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
9913 return manage(res);
9916 isl::pw_aff pw_aff::reset_user() const {
9917 auto res = isl_pw_aff_reset_user(copy());
9918 return manage(res);
9921 isl::pw_aff pw_aff::scale(isl::val v) const {
9922 auto res = isl_pw_aff_scale_val(copy(), v.release());
9923 return manage(res);
9926 isl::pw_aff pw_aff::scale_down(isl::val f) const {
9927 auto res = isl_pw_aff_scale_down_val(copy(), f.release());
9928 return manage(res);
9931 isl::pw_aff pw_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
9932 auto res = isl_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
9933 return manage(res);
9936 isl::pw_aff pw_aff::set_tuple_id(isl::dim type, isl::id id) const {
9937 auto res = isl_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
9938 return manage(res);
9941 isl::pw_aff pw_aff::sub(isl::pw_aff pwaff2) const {
9942 auto res = isl_pw_aff_sub(copy(), pwaff2.release());
9943 return manage(res);
9946 isl::pw_aff pw_aff::subtract_domain(isl::set set) const {
9947 auto res = isl_pw_aff_subtract_domain(copy(), set.release());
9948 return manage(res);
9951 isl::pw_aff pw_aff::tdiv_q(isl::pw_aff pa2) const {
9952 auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
9953 return manage(res);
9956 isl::pw_aff pw_aff::tdiv_r(isl::pw_aff pa2) const {
9957 auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
9958 return manage(res);
9961 isl::pw_aff pw_aff::union_add(isl::pw_aff pwaff2) const {
9962 auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
9963 return manage(res);
9966 isl::pw_aff pw_aff::union_max(isl::pw_aff pwaff2) const {
9967 auto res = isl_pw_aff_union_max(copy(), pwaff2.release());
9968 return manage(res);
9971 isl::pw_aff pw_aff::union_min(isl::pw_aff pwaff2) const {
9972 auto res = isl_pw_aff_union_min(copy(), pwaff2.release());
9973 return manage(res);
9976 isl::pw_aff pw_aff::var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos) {
9977 auto res = isl_pw_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
9978 return manage(res);
9981 isl::set pw_aff::zero_set() const {
9982 auto res = isl_pw_aff_zero_set(copy());
9983 return manage(res);
9986 // implementations for isl::pw_aff_list
9987 isl::pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
9988 return pw_aff_list(ptr);
9990 isl::pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
9991 return pw_aff_list(isl_pw_aff_list_copy(ptr));
9993 isl::pw_aff_list give(__isl_take isl_pw_aff_list *ptr) {
9994 return manage(ptr);
9998 pw_aff_list::pw_aff_list()
9999 : ptr(nullptr) {}
10001 pw_aff_list::pw_aff_list(const isl::pw_aff_list &obj)
10002 : ptr(obj.copy()) {}
10003 pw_aff_list::pw_aff_list(std::nullptr_t)
10004 : ptr(nullptr) {}
10007 pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
10008 : ptr(ptr) {}
10011 pw_aff_list &pw_aff_list::operator=(isl::pw_aff_list obj) {
10012 std::swap(this->ptr, obj.ptr);
10013 return *this;
10016 pw_aff_list::~pw_aff_list() {
10017 if (ptr)
10018 isl_pw_aff_list_free(ptr);
10021 __isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
10022 return isl_pw_aff_list_copy(ptr);
10025 __isl_keep isl_pw_aff_list *pw_aff_list::get() const {
10026 return ptr;
10029 __isl_give isl_pw_aff_list *pw_aff_list::release() {
10030 isl_pw_aff_list *tmp = ptr;
10031 ptr = nullptr;
10032 return tmp;
10035 bool pw_aff_list::is_null() const {
10036 return ptr == nullptr;
10038 __isl_keep isl_pw_aff_list *pw_aff_list::keep() const {
10039 return get();
10042 __isl_give isl_pw_aff_list *pw_aff_list::take() {
10043 return release();
10046 pw_aff_list::operator bool() const {
10047 return !is_null();
10051 isl::ctx pw_aff_list::get_ctx() const {
10052 return isl::ctx(isl_pw_aff_list_get_ctx(ptr));
10055 void pw_aff_list::dump() const {
10056 isl_pw_aff_list_dump(get());
10061 // implementations for isl::pw_multi_aff
10062 isl::pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
10063 return pw_multi_aff(ptr);
10065 isl::pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
10066 return pw_multi_aff(isl_pw_multi_aff_copy(ptr));
10068 isl::pw_multi_aff give(__isl_take isl_pw_multi_aff *ptr) {
10069 return manage(ptr);
10073 pw_multi_aff::pw_multi_aff()
10074 : ptr(nullptr) {}
10076 pw_multi_aff::pw_multi_aff(const isl::pw_multi_aff &obj)
10077 : ptr(obj.copy()) {}
10078 pw_multi_aff::pw_multi_aff(std::nullptr_t)
10079 : ptr(nullptr) {}
10082 pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
10083 : ptr(ptr) {}
10085 pw_multi_aff::pw_multi_aff(isl::multi_aff ma) {
10086 auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
10087 ptr = res;
10089 pw_multi_aff::pw_multi_aff(isl::pw_aff pa) {
10090 auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
10091 ptr = res;
10093 pw_multi_aff::pw_multi_aff(isl::ctx ctx, const std::string &str) {
10094 auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
10095 ptr = res;
10098 pw_multi_aff &pw_multi_aff::operator=(isl::pw_multi_aff obj) {
10099 std::swap(this->ptr, obj.ptr);
10100 return *this;
10103 pw_multi_aff::~pw_multi_aff() {
10104 if (ptr)
10105 isl_pw_multi_aff_free(ptr);
10108 __isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
10109 return isl_pw_multi_aff_copy(ptr);
10112 __isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
10113 return ptr;
10116 __isl_give isl_pw_multi_aff *pw_multi_aff::release() {
10117 isl_pw_multi_aff *tmp = ptr;
10118 ptr = nullptr;
10119 return tmp;
10122 bool pw_multi_aff::is_null() const {
10123 return ptr == nullptr;
10125 __isl_keep isl_pw_multi_aff *pw_multi_aff::keep() const {
10126 return get();
10129 __isl_give isl_pw_multi_aff *pw_multi_aff::take() {
10130 return release();
10133 pw_multi_aff::operator bool() const {
10134 return !is_null();
10138 isl::ctx pw_multi_aff::get_ctx() const {
10139 return isl::ctx(isl_pw_multi_aff_get_ctx(ptr));
10141 std::string pw_multi_aff::to_str() const {
10142 char *Tmp = isl_pw_multi_aff_to_str(get());
10143 if (!Tmp)
10144 return "";
10145 std::string S(Tmp);
10146 free(Tmp);
10147 return S;
10151 void pw_multi_aff::dump() const {
10152 isl_pw_multi_aff_dump(get());
10156 isl::pw_multi_aff pw_multi_aff::add(isl::pw_multi_aff pma2) const {
10157 auto res = isl_pw_multi_aff_add(copy(), pma2.release());
10158 return manage(res);
10161 isl::pw_multi_aff pw_multi_aff::align_params(isl::space model) const {
10162 auto res = isl_pw_multi_aff_align_params(copy(), model.release());
10163 return manage(res);
10166 isl::pw_multi_aff pw_multi_aff::alloc(isl::set set, isl::multi_aff maff) {
10167 auto res = isl_pw_multi_aff_alloc(set.release(), maff.release());
10168 return manage(res);
10171 isl::pw_multi_aff pw_multi_aff::coalesce() const {
10172 auto res = isl_pw_multi_aff_coalesce(copy());
10173 return manage(res);
10176 unsigned int pw_multi_aff::dim(isl::dim type) const {
10177 auto res = isl_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
10178 return res;
10181 isl::set pw_multi_aff::domain() const {
10182 auto res = isl_pw_multi_aff_domain(copy());
10183 return manage(res);
10186 isl::pw_multi_aff pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
10187 auto res = isl_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10188 return manage(res);
10191 isl::pw_multi_aff pw_multi_aff::empty(isl::space space) {
10192 auto res = isl_pw_multi_aff_empty(space.release());
10193 return manage(res);
10196 int pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const {
10197 auto res = isl_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
10198 return res;
10201 isl::pw_multi_aff pw_multi_aff::fix_si(isl::dim type, unsigned int pos, int value) const {
10202 auto res = isl_pw_multi_aff_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
10203 return manage(res);
10206 isl::pw_multi_aff pw_multi_aff::flat_range_product(isl::pw_multi_aff pma2) const {
10207 auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
10208 return manage(res);
10211 isl::stat pw_multi_aff::foreach_piece(const std::function<isl::stat(isl::set, isl::multi_aff)> &fn) const {
10212 auto fn_p = &fn;
10213 auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
10214 auto *func = *static_cast<const std::function<isl::stat(isl::set, isl::multi_aff)> **>(arg_2);
10215 stat ret = (*func)(isl::manage(arg_0), isl::manage(arg_1));
10216 return isl_stat(ret);
10218 auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_p);
10219 return isl::stat(res);
10222 isl::pw_multi_aff pw_multi_aff::from_domain(isl::set set) {
10223 auto res = isl_pw_multi_aff_from_domain(set.release());
10224 return manage(res);
10227 isl::pw_multi_aff pw_multi_aff::from_map(isl::map map) {
10228 auto res = isl_pw_multi_aff_from_map(map.release());
10229 return manage(res);
10232 isl::pw_multi_aff pw_multi_aff::from_multi_pw_aff(isl::multi_pw_aff mpa) {
10233 auto res = isl_pw_multi_aff_from_multi_pw_aff(mpa.release());
10234 return manage(res);
10237 isl::pw_multi_aff pw_multi_aff::from_set(isl::set set) {
10238 auto res = isl_pw_multi_aff_from_set(set.release());
10239 return manage(res);
10242 isl::id pw_multi_aff::get_dim_id(isl::dim type, unsigned int pos) const {
10243 auto res = isl_pw_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
10244 return manage(res);
10247 std::string pw_multi_aff::get_dim_name(isl::dim type, unsigned int pos) const {
10248 auto res = isl_pw_multi_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
10249 std::string tmp(res);
10250 return tmp;
10253 isl::space pw_multi_aff::get_domain_space() const {
10254 auto res = isl_pw_multi_aff_get_domain_space(get());
10255 return manage(res);
10258 isl::pw_aff pw_multi_aff::get_pw_aff(int pos) const {
10259 auto res = isl_pw_multi_aff_get_pw_aff(get(), pos);
10260 return manage(res);
10263 isl::space pw_multi_aff::get_space() const {
10264 auto res = isl_pw_multi_aff_get_space(get());
10265 return manage(res);
10268 isl::id pw_multi_aff::get_tuple_id(isl::dim type) const {
10269 auto res = isl_pw_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10270 return manage(res);
10273 std::string pw_multi_aff::get_tuple_name(isl::dim type) const {
10274 auto res = isl_pw_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10275 std::string tmp(res);
10276 return tmp;
10279 isl::pw_multi_aff pw_multi_aff::gist(isl::set set) const {
10280 auto res = isl_pw_multi_aff_gist(copy(), set.release());
10281 return manage(res);
10284 isl::pw_multi_aff pw_multi_aff::gist_params(isl::set set) const {
10285 auto res = isl_pw_multi_aff_gist_params(copy(), set.release());
10286 return manage(res);
10289 isl::boolean pw_multi_aff::has_tuple_id(isl::dim type) const {
10290 auto res = isl_pw_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10291 return manage(res);
10294 isl::boolean pw_multi_aff::has_tuple_name(isl::dim type) const {
10295 auto res = isl_pw_multi_aff_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10296 return manage(res);
10299 isl::pw_multi_aff pw_multi_aff::identity(isl::space space) {
10300 auto res = isl_pw_multi_aff_identity(space.release());
10301 return manage(res);
10304 isl::pw_multi_aff pw_multi_aff::intersect_domain(isl::set set) const {
10305 auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
10306 return manage(res);
10309 isl::pw_multi_aff pw_multi_aff::intersect_params(isl::set set) const {
10310 auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
10311 return manage(res);
10314 isl::boolean pw_multi_aff::involves_nan() const {
10315 auto res = isl_pw_multi_aff_involves_nan(get());
10316 return manage(res);
10319 isl::boolean pw_multi_aff::is_equal(const isl::pw_multi_aff &pma2) const {
10320 auto res = isl_pw_multi_aff_is_equal(get(), pma2.get());
10321 return manage(res);
10324 isl::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::set domain, isl::multi_val mv) {
10325 auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
10326 return manage(res);
10329 isl::pw_multi_aff pw_multi_aff::neg() const {
10330 auto res = isl_pw_multi_aff_neg(copy());
10331 return manage(res);
10334 isl::boolean pw_multi_aff::plain_is_equal(const isl::pw_multi_aff &pma2) const {
10335 auto res = isl_pw_multi_aff_plain_is_equal(get(), pma2.get());
10336 return manage(res);
10339 isl::pw_multi_aff pw_multi_aff::product(isl::pw_multi_aff pma2) const {
10340 auto res = isl_pw_multi_aff_product(copy(), pma2.release());
10341 return manage(res);
10344 isl::pw_multi_aff pw_multi_aff::project_domain_on_params() const {
10345 auto res = isl_pw_multi_aff_project_domain_on_params(copy());
10346 return manage(res);
10349 isl::pw_multi_aff pw_multi_aff::project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n) {
10350 auto res = isl_pw_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
10351 return manage(res);
10354 isl::pw_multi_aff pw_multi_aff::pullback(isl::multi_aff ma) const {
10355 auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
10356 return manage(res);
10359 isl::pw_multi_aff pw_multi_aff::pullback(isl::pw_multi_aff pma2) const {
10360 auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
10361 return manage(res);
10364 isl::pw_multi_aff pw_multi_aff::range_map(isl::space space) {
10365 auto res = isl_pw_multi_aff_range_map(space.release());
10366 return manage(res);
10369 isl::pw_multi_aff pw_multi_aff::range_product(isl::pw_multi_aff pma2) const {
10370 auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
10371 return manage(res);
10374 isl::pw_multi_aff pw_multi_aff::reset_tuple_id(isl::dim type) const {
10375 auto res = isl_pw_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
10376 return manage(res);
10379 isl::pw_multi_aff pw_multi_aff::reset_user() const {
10380 auto res = isl_pw_multi_aff_reset_user(copy());
10381 return manage(res);
10384 isl::pw_multi_aff pw_multi_aff::scale_down_val(isl::val v) const {
10385 auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
10386 return manage(res);
10389 isl::pw_multi_aff pw_multi_aff::scale_multi_val(isl::multi_val mv) const {
10390 auto res = isl_pw_multi_aff_scale_multi_val(copy(), mv.release());
10391 return manage(res);
10394 isl::pw_multi_aff pw_multi_aff::scale_val(isl::val v) const {
10395 auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
10396 return manage(res);
10399 isl::pw_multi_aff pw_multi_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
10400 auto res = isl_pw_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
10401 return manage(res);
10404 isl::pw_multi_aff pw_multi_aff::set_pw_aff(unsigned int pos, isl::pw_aff pa) const {
10405 auto res = isl_pw_multi_aff_set_pw_aff(copy(), pos, pa.release());
10406 return manage(res);
10409 isl::pw_multi_aff pw_multi_aff::set_tuple_id(isl::dim type, isl::id id) const {
10410 auto res = isl_pw_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
10411 return manage(res);
10414 isl::pw_multi_aff pw_multi_aff::sub(isl::pw_multi_aff pma2) const {
10415 auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
10416 return manage(res);
10419 isl::pw_multi_aff pw_multi_aff::subtract_domain(isl::set set) const {
10420 auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
10421 return manage(res);
10424 isl::pw_multi_aff pw_multi_aff::union_add(isl::pw_multi_aff pma2) const {
10425 auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
10426 return manage(res);
10429 isl::pw_multi_aff pw_multi_aff::union_lexmax(isl::pw_multi_aff pma2) const {
10430 auto res = isl_pw_multi_aff_union_lexmax(copy(), pma2.release());
10431 return manage(res);
10434 isl::pw_multi_aff pw_multi_aff::union_lexmin(isl::pw_multi_aff pma2) const {
10435 auto res = isl_pw_multi_aff_union_lexmin(copy(), pma2.release());
10436 return manage(res);
10439 isl::pw_multi_aff pw_multi_aff::zero(isl::space space) {
10440 auto res = isl_pw_multi_aff_zero(space.release());
10441 return manage(res);
10444 // implementations for isl::pw_qpolynomial
10445 isl::pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr) {
10446 return pw_qpolynomial(ptr);
10448 isl::pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr) {
10449 return pw_qpolynomial(isl_pw_qpolynomial_copy(ptr));
10451 isl::pw_qpolynomial give(__isl_take isl_pw_qpolynomial *ptr) {
10452 return manage(ptr);
10456 pw_qpolynomial::pw_qpolynomial()
10457 : ptr(nullptr) {}
10459 pw_qpolynomial::pw_qpolynomial(const isl::pw_qpolynomial &obj)
10460 : ptr(obj.copy()) {}
10461 pw_qpolynomial::pw_qpolynomial(std::nullptr_t)
10462 : ptr(nullptr) {}
10465 pw_qpolynomial::pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr)
10466 : ptr(ptr) {}
10468 pw_qpolynomial::pw_qpolynomial(isl::ctx ctx, const std::string &str) {
10469 auto res = isl_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
10470 ptr = res;
10473 pw_qpolynomial &pw_qpolynomial::operator=(isl::pw_qpolynomial obj) {
10474 std::swap(this->ptr, obj.ptr);
10475 return *this;
10478 pw_qpolynomial::~pw_qpolynomial() {
10479 if (ptr)
10480 isl_pw_qpolynomial_free(ptr);
10483 __isl_give isl_pw_qpolynomial *pw_qpolynomial::copy() const & {
10484 return isl_pw_qpolynomial_copy(ptr);
10487 __isl_keep isl_pw_qpolynomial *pw_qpolynomial::get() const {
10488 return ptr;
10491 __isl_give isl_pw_qpolynomial *pw_qpolynomial::release() {
10492 isl_pw_qpolynomial *tmp = ptr;
10493 ptr = nullptr;
10494 return tmp;
10497 bool pw_qpolynomial::is_null() const {
10498 return ptr == nullptr;
10500 __isl_keep isl_pw_qpolynomial *pw_qpolynomial::keep() const {
10501 return get();
10504 __isl_give isl_pw_qpolynomial *pw_qpolynomial::take() {
10505 return release();
10508 pw_qpolynomial::operator bool() const {
10509 return !is_null();
10513 isl::ctx pw_qpolynomial::get_ctx() const {
10514 return isl::ctx(isl_pw_qpolynomial_get_ctx(ptr));
10516 std::string pw_qpolynomial::to_str() const {
10517 char *Tmp = isl_pw_qpolynomial_to_str(get());
10518 if (!Tmp)
10519 return "";
10520 std::string S(Tmp);
10521 free(Tmp);
10522 return S;
10526 void pw_qpolynomial::dump() const {
10527 isl_pw_qpolynomial_dump(get());
10531 isl::pw_qpolynomial pw_qpolynomial::add(isl::pw_qpolynomial pwqp2) const {
10532 auto res = isl_pw_qpolynomial_add(copy(), pwqp2.release());
10533 return manage(res);
10536 isl::pw_qpolynomial pw_qpolynomial::add_dims(isl::dim type, unsigned int n) const {
10537 auto res = isl_pw_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10538 return manage(res);
10541 isl::pw_qpolynomial pw_qpolynomial::alloc(isl::set set, isl::qpolynomial qp) {
10542 auto res = isl_pw_qpolynomial_alloc(set.release(), qp.release());
10543 return manage(res);
10546 isl::pw_qpolynomial pw_qpolynomial::coalesce() const {
10547 auto res = isl_pw_qpolynomial_coalesce(copy());
10548 return manage(res);
10551 unsigned int pw_qpolynomial::dim(isl::dim type) const {
10552 auto res = isl_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
10553 return res;
10556 isl::set pw_qpolynomial::domain() const {
10557 auto res = isl_pw_qpolynomial_domain(copy());
10558 return manage(res);
10561 isl::pw_qpolynomial pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
10562 auto res = isl_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10563 return manage(res);
10566 isl::val pw_qpolynomial::eval(isl::point pnt) const {
10567 auto res = isl_pw_qpolynomial_eval(copy(), pnt.release());
10568 return manage(res);
10571 int pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const {
10572 auto res = isl_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
10573 return res;
10576 isl::pw_qpolynomial pw_qpolynomial::fix_val(isl::dim type, unsigned int n, isl::val v) const {
10577 auto res = isl_pw_qpolynomial_fix_val(copy(), static_cast<enum isl_dim_type>(type), n, v.release());
10578 return manage(res);
10581 isl::stat pw_qpolynomial::foreach_piece(const std::function<isl::stat(isl::set, isl::qpolynomial)> &fn) const {
10582 auto fn_p = &fn;
10583 auto fn_lambda = [](isl_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
10584 auto *func = *static_cast<const std::function<isl::stat(isl::set, isl::qpolynomial)> **>(arg_2);
10585 stat ret = (*func)(isl::manage(arg_0), isl::manage(arg_1));
10586 return isl_stat(ret);
10588 auto res = isl_pw_qpolynomial_foreach_piece(get(), fn_lambda, &fn_p);
10589 return isl::stat(res);
10592 isl::pw_qpolynomial pw_qpolynomial::from_pw_aff(isl::pw_aff pwaff) {
10593 auto res = isl_pw_qpolynomial_from_pw_aff(pwaff.release());
10594 return manage(res);
10597 isl::pw_qpolynomial pw_qpolynomial::from_qpolynomial(isl::qpolynomial qp) {
10598 auto res = isl_pw_qpolynomial_from_qpolynomial(qp.release());
10599 return manage(res);
10602 isl::pw_qpolynomial pw_qpolynomial::from_range() const {
10603 auto res = isl_pw_qpolynomial_from_range(copy());
10604 return manage(res);
10607 isl::space pw_qpolynomial::get_domain_space() const {
10608 auto res = isl_pw_qpolynomial_get_domain_space(get());
10609 return manage(res);
10612 isl::space pw_qpolynomial::get_space() const {
10613 auto res = isl_pw_qpolynomial_get_space(get());
10614 return manage(res);
10617 isl::pw_qpolynomial pw_qpolynomial::gist(isl::set context) const {
10618 auto res = isl_pw_qpolynomial_gist(copy(), context.release());
10619 return manage(res);
10622 isl::pw_qpolynomial pw_qpolynomial::gist_params(isl::set context) const {
10623 auto res = isl_pw_qpolynomial_gist_params(copy(), context.release());
10624 return manage(res);
10627 isl::boolean pw_qpolynomial::has_equal_space(const isl::pw_qpolynomial &pwqp2) const {
10628 auto res = isl_pw_qpolynomial_has_equal_space(get(), pwqp2.get());
10629 return manage(res);
10632 isl::pw_qpolynomial pw_qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
10633 auto res = isl_pw_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10634 return manage(res);
10637 isl::pw_qpolynomial pw_qpolynomial::intersect_domain(isl::set set) const {
10638 auto res = isl_pw_qpolynomial_intersect_domain(copy(), set.release());
10639 return manage(res);
10642 isl::pw_qpolynomial pw_qpolynomial::intersect_params(isl::set set) const {
10643 auto res = isl_pw_qpolynomial_intersect_params(copy(), set.release());
10644 return manage(res);
10647 isl::boolean pw_qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
10648 auto res = isl_pw_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
10649 return manage(res);
10652 isl::boolean pw_qpolynomial::involves_nan() const {
10653 auto res = isl_pw_qpolynomial_involves_nan(get());
10654 return manage(res);
10657 isl::boolean pw_qpolynomial::is_zero() const {
10658 auto res = isl_pw_qpolynomial_is_zero(get());
10659 return manage(res);
10662 isl::val pw_qpolynomial::max() const {
10663 auto res = isl_pw_qpolynomial_max(copy());
10664 return manage(res);
10667 isl::val pw_qpolynomial::min() const {
10668 auto res = isl_pw_qpolynomial_min(copy());
10669 return manage(res);
10672 isl::pw_qpolynomial pw_qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
10673 auto res = isl_pw_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
10674 return manage(res);
10677 isl::pw_qpolynomial pw_qpolynomial::mul(isl::pw_qpolynomial pwqp2) const {
10678 auto res = isl_pw_qpolynomial_mul(copy(), pwqp2.release());
10679 return manage(res);
10682 isl::pw_qpolynomial pw_qpolynomial::neg() const {
10683 auto res = isl_pw_qpolynomial_neg(copy());
10684 return manage(res);
10687 isl::boolean pw_qpolynomial::plain_is_equal(const isl::pw_qpolynomial &pwqp2) const {
10688 auto res = isl_pw_qpolynomial_plain_is_equal(get(), pwqp2.get());
10689 return manage(res);
10692 isl::pw_qpolynomial pw_qpolynomial::pow(unsigned int exponent) const {
10693 auto res = isl_pw_qpolynomial_pow(copy(), exponent);
10694 return manage(res);
10697 isl::pw_qpolynomial pw_qpolynomial::project_domain_on_params() const {
10698 auto res = isl_pw_qpolynomial_project_domain_on_params(copy());
10699 return manage(res);
10702 isl::pw_qpolynomial pw_qpolynomial::reset_domain_space(isl::space dim) const {
10703 auto res = isl_pw_qpolynomial_reset_domain_space(copy(), dim.release());
10704 return manage(res);
10707 isl::pw_qpolynomial pw_qpolynomial::reset_user() const {
10708 auto res = isl_pw_qpolynomial_reset_user(copy());
10709 return manage(res);
10712 isl::pw_qpolynomial pw_qpolynomial::scale_down_val(isl::val v) const {
10713 auto res = isl_pw_qpolynomial_scale_down_val(copy(), v.release());
10714 return manage(res);
10717 isl::pw_qpolynomial pw_qpolynomial::scale_val(isl::val v) const {
10718 auto res = isl_pw_qpolynomial_scale_val(copy(), v.release());
10719 return manage(res);
10722 isl::pw_qpolynomial pw_qpolynomial::split_dims(isl::dim type, unsigned int first, unsigned int n) const {
10723 auto res = isl_pw_qpolynomial_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10724 return manage(res);
10727 isl::pw_qpolynomial pw_qpolynomial::split_periods(int max_periods) const {
10728 auto res = isl_pw_qpolynomial_split_periods(copy(), max_periods);
10729 return manage(res);
10732 isl::pw_qpolynomial pw_qpolynomial::sub(isl::pw_qpolynomial pwqp2) const {
10733 auto res = isl_pw_qpolynomial_sub(copy(), pwqp2.release());
10734 return manage(res);
10737 isl::pw_qpolynomial pw_qpolynomial::subtract_domain(isl::set set) const {
10738 auto res = isl_pw_qpolynomial_subtract_domain(copy(), set.release());
10739 return manage(res);
10742 isl::pw_qpolynomial pw_qpolynomial::to_polynomial(int sign) const {
10743 auto res = isl_pw_qpolynomial_to_polynomial(copy(), sign);
10744 return manage(res);
10747 isl::pw_qpolynomial pw_qpolynomial::zero(isl::space dim) {
10748 auto res = isl_pw_qpolynomial_zero(dim.release());
10749 return manage(res);
10752 // implementations for isl::qpolynomial
10753 isl::qpolynomial manage(__isl_take isl_qpolynomial *ptr) {
10754 return qpolynomial(ptr);
10756 isl::qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr) {
10757 return qpolynomial(isl_qpolynomial_copy(ptr));
10759 isl::qpolynomial give(__isl_take isl_qpolynomial *ptr) {
10760 return manage(ptr);
10764 qpolynomial::qpolynomial()
10765 : ptr(nullptr) {}
10767 qpolynomial::qpolynomial(const isl::qpolynomial &obj)
10768 : ptr(obj.copy()) {}
10769 qpolynomial::qpolynomial(std::nullptr_t)
10770 : ptr(nullptr) {}
10773 qpolynomial::qpolynomial(__isl_take isl_qpolynomial *ptr)
10774 : ptr(ptr) {}
10777 qpolynomial &qpolynomial::operator=(isl::qpolynomial obj) {
10778 std::swap(this->ptr, obj.ptr);
10779 return *this;
10782 qpolynomial::~qpolynomial() {
10783 if (ptr)
10784 isl_qpolynomial_free(ptr);
10787 __isl_give isl_qpolynomial *qpolynomial::copy() const & {
10788 return isl_qpolynomial_copy(ptr);
10791 __isl_keep isl_qpolynomial *qpolynomial::get() const {
10792 return ptr;
10795 __isl_give isl_qpolynomial *qpolynomial::release() {
10796 isl_qpolynomial *tmp = ptr;
10797 ptr = nullptr;
10798 return tmp;
10801 bool qpolynomial::is_null() const {
10802 return ptr == nullptr;
10804 __isl_keep isl_qpolynomial *qpolynomial::keep() const {
10805 return get();
10808 __isl_give isl_qpolynomial *qpolynomial::take() {
10809 return release();
10812 qpolynomial::operator bool() const {
10813 return !is_null();
10817 isl::ctx qpolynomial::get_ctx() const {
10818 return isl::ctx(isl_qpolynomial_get_ctx(ptr));
10821 void qpolynomial::dump() const {
10822 isl_qpolynomial_dump(get());
10826 isl::qpolynomial qpolynomial::add(isl::qpolynomial qp2) const {
10827 auto res = isl_qpolynomial_add(copy(), qp2.release());
10828 return manage(res);
10831 isl::qpolynomial qpolynomial::add_dims(isl::dim type, unsigned int n) const {
10832 auto res = isl_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10833 return manage(res);
10836 isl::qpolynomial qpolynomial::align_params(isl::space model) const {
10837 auto res = isl_qpolynomial_align_params(copy(), model.release());
10838 return manage(res);
10841 isl::stat qpolynomial::as_polynomial_on_domain(const isl::basic_set &bset, const std::function<isl::stat(isl::basic_set, isl::qpolynomial)> &fn) const {
10842 auto fn_p = &fn;
10843 auto fn_lambda = [](isl_basic_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
10844 auto *func = *static_cast<const std::function<isl::stat(isl::basic_set, isl::qpolynomial)> **>(arg_2);
10845 stat ret = (*func)(isl::manage(arg_0), isl::manage(arg_1));
10846 return isl_stat(ret);
10848 auto res = isl_qpolynomial_as_polynomial_on_domain(get(), bset.get(), fn_lambda, &fn_p);
10849 return isl::stat(res);
10852 unsigned int qpolynomial::dim(isl::dim type) const {
10853 auto res = isl_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
10854 return res;
10857 isl::qpolynomial qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
10858 auto res = isl_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10859 return manage(res);
10862 isl::val qpolynomial::eval(isl::point pnt) const {
10863 auto res = isl_qpolynomial_eval(copy(), pnt.release());
10864 return manage(res);
10867 isl::stat qpolynomial::foreach_term(const std::function<isl::stat(isl::term)> &fn) const {
10868 auto fn_p = &fn;
10869 auto fn_lambda = [](isl_term *arg_0, void *arg_1) -> isl_stat {
10870 auto *func = *static_cast<const std::function<isl::stat(isl::term)> **>(arg_1);
10871 stat ret = (*func)(isl::manage(arg_0));
10872 return isl_stat(ret);
10874 auto res = isl_qpolynomial_foreach_term(get(), fn_lambda, &fn_p);
10875 return isl::stat(res);
10878 isl::qpolynomial qpolynomial::from_aff(isl::aff aff) {
10879 auto res = isl_qpolynomial_from_aff(aff.release());
10880 return manage(res);
10883 isl::qpolynomial qpolynomial::from_constraint(isl::constraint c, isl::dim type, unsigned int pos) {
10884 auto res = isl_qpolynomial_from_constraint(c.release(), static_cast<enum isl_dim_type>(type), pos);
10885 return manage(res);
10888 isl::qpolynomial qpolynomial::from_term(isl::term term) {
10889 auto res = isl_qpolynomial_from_term(term.release());
10890 return manage(res);
10893 isl::val qpolynomial::get_constant_val() const {
10894 auto res = isl_qpolynomial_get_constant_val(get());
10895 return manage(res);
10898 isl::space qpolynomial::get_domain_space() const {
10899 auto res = isl_qpolynomial_get_domain_space(get());
10900 return manage(res);
10903 isl::space qpolynomial::get_space() const {
10904 auto res = isl_qpolynomial_get_space(get());
10905 return manage(res);
10908 isl::qpolynomial qpolynomial::gist(isl::set context) const {
10909 auto res = isl_qpolynomial_gist(copy(), context.release());
10910 return manage(res);
10913 isl::qpolynomial qpolynomial::gist_params(isl::set context) const {
10914 auto res = isl_qpolynomial_gist_params(copy(), context.release());
10915 return manage(res);
10918 isl::qpolynomial qpolynomial::homogenize() const {
10919 auto res = isl_qpolynomial_homogenize(copy());
10920 return manage(res);
10923 isl::qpolynomial qpolynomial::infty_on_domain(isl::space dim) {
10924 auto res = isl_qpolynomial_infty_on_domain(dim.release());
10925 return manage(res);
10928 isl::qpolynomial qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const {
10929 auto res = isl_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10930 return manage(res);
10933 isl::boolean qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
10934 auto res = isl_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
10935 return manage(res);
10938 isl::boolean qpolynomial::is_infty() const {
10939 auto res = isl_qpolynomial_is_infty(get());
10940 return manage(res);
10943 isl::boolean qpolynomial::is_nan() const {
10944 auto res = isl_qpolynomial_is_nan(get());
10945 return manage(res);
10948 isl::boolean qpolynomial::is_neginfty() const {
10949 auto res = isl_qpolynomial_is_neginfty(get());
10950 return manage(res);
10953 isl::boolean qpolynomial::is_zero() const {
10954 auto res = isl_qpolynomial_is_zero(get());
10955 return manage(res);
10958 isl::qpolynomial qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
10959 auto res = isl_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
10960 return manage(res);
10963 isl::qpolynomial qpolynomial::mul(isl::qpolynomial qp2) const {
10964 auto res = isl_qpolynomial_mul(copy(), qp2.release());
10965 return manage(res);
10968 isl::qpolynomial qpolynomial::nan_on_domain(isl::space dim) {
10969 auto res = isl_qpolynomial_nan_on_domain(dim.release());
10970 return manage(res);
10973 isl::qpolynomial qpolynomial::neg() const {
10974 auto res = isl_qpolynomial_neg(copy());
10975 return manage(res);
10978 isl::qpolynomial qpolynomial::neginfty_on_domain(isl::space dim) {
10979 auto res = isl_qpolynomial_neginfty_on_domain(dim.release());
10980 return manage(res);
10983 isl::qpolynomial qpolynomial::one_on_domain(isl::space dim) {
10984 auto res = isl_qpolynomial_one_on_domain(dim.release());
10985 return manage(res);
10988 isl::boolean qpolynomial::plain_is_equal(const isl::qpolynomial &qp2) const {
10989 auto res = isl_qpolynomial_plain_is_equal(get(), qp2.get());
10990 return manage(res);
10993 isl::qpolynomial qpolynomial::pow(unsigned int power) const {
10994 auto res = isl_qpolynomial_pow(copy(), power);
10995 return manage(res);
10998 isl::qpolynomial qpolynomial::project_domain_on_params() const {
10999 auto res = isl_qpolynomial_project_domain_on_params(copy());
11000 return manage(res);
11003 isl::qpolynomial qpolynomial::scale_down_val(isl::val v) const {
11004 auto res = isl_qpolynomial_scale_down_val(copy(), v.release());
11005 return manage(res);
11008 isl::qpolynomial qpolynomial::scale_val(isl::val v) const {
11009 auto res = isl_qpolynomial_scale_val(copy(), v.release());
11010 return manage(res);
11013 int qpolynomial::sgn() const {
11014 auto res = isl_qpolynomial_sgn(get());
11015 return res;
11018 isl::qpolynomial qpolynomial::sub(isl::qpolynomial qp2) const {
11019 auto res = isl_qpolynomial_sub(copy(), qp2.release());
11020 return manage(res);
11023 isl::qpolynomial qpolynomial::val_on_domain(isl::space space, isl::val val) {
11024 auto res = isl_qpolynomial_val_on_domain(space.release(), val.release());
11025 return manage(res);
11028 isl::qpolynomial qpolynomial::var_on_domain(isl::space dim, isl::dim type, unsigned int pos) {
11029 auto res = isl_qpolynomial_var_on_domain(dim.release(), static_cast<enum isl_dim_type>(type), pos);
11030 return manage(res);
11033 isl::qpolynomial qpolynomial::zero_on_domain(isl::space dim) {
11034 auto res = isl_qpolynomial_zero_on_domain(dim.release());
11035 return manage(res);
11038 // implementations for isl::schedule
11039 isl::schedule manage(__isl_take isl_schedule *ptr) {
11040 return schedule(ptr);
11042 isl::schedule manage_copy(__isl_keep isl_schedule *ptr) {
11043 return schedule(isl_schedule_copy(ptr));
11045 isl::schedule give(__isl_take isl_schedule *ptr) {
11046 return manage(ptr);
11050 schedule::schedule()
11051 : ptr(nullptr) {}
11053 schedule::schedule(const isl::schedule &obj)
11054 : ptr(obj.copy()) {}
11055 schedule::schedule(std::nullptr_t)
11056 : ptr(nullptr) {}
11059 schedule::schedule(__isl_take isl_schedule *ptr)
11060 : ptr(ptr) {}
11062 schedule::schedule(isl::ctx ctx, const std::string &str) {
11063 auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
11064 ptr = res;
11067 schedule &schedule::operator=(isl::schedule obj) {
11068 std::swap(this->ptr, obj.ptr);
11069 return *this;
11072 schedule::~schedule() {
11073 if (ptr)
11074 isl_schedule_free(ptr);
11077 __isl_give isl_schedule *schedule::copy() const & {
11078 return isl_schedule_copy(ptr);
11081 __isl_keep isl_schedule *schedule::get() const {
11082 return ptr;
11085 __isl_give isl_schedule *schedule::release() {
11086 isl_schedule *tmp = ptr;
11087 ptr = nullptr;
11088 return tmp;
11091 bool schedule::is_null() const {
11092 return ptr == nullptr;
11094 __isl_keep isl_schedule *schedule::keep() const {
11095 return get();
11098 __isl_give isl_schedule *schedule::take() {
11099 return release();
11102 schedule::operator bool() const {
11103 return !is_null();
11107 isl::ctx schedule::get_ctx() const {
11108 return isl::ctx(isl_schedule_get_ctx(ptr));
11110 std::string schedule::to_str() const {
11111 char *Tmp = isl_schedule_to_str(get());
11112 if (!Tmp)
11113 return "";
11114 std::string S(Tmp);
11115 free(Tmp);
11116 return S;
11120 void schedule::dump() const {
11121 isl_schedule_dump(get());
11125 isl::schedule schedule::align_params(isl::space space) const {
11126 auto res = isl_schedule_align_params(copy(), space.release());
11127 return manage(res);
11130 isl::schedule schedule::empty(isl::space space) {
11131 auto res = isl_schedule_empty(space.release());
11132 return manage(res);
11135 isl::schedule schedule::from_domain(isl::union_set domain) {
11136 auto res = isl_schedule_from_domain(domain.release());
11137 return manage(res);
11140 isl::union_set schedule::get_domain() const {
11141 auto res = isl_schedule_get_domain(get());
11142 return manage(res);
11145 isl::union_map schedule::get_map() const {
11146 auto res = isl_schedule_get_map(get());
11147 return manage(res);
11150 isl::schedule_node schedule::get_root() const {
11151 auto res = isl_schedule_get_root(get());
11152 return manage(res);
11155 isl::schedule schedule::gist_domain_params(isl::set context) const {
11156 auto res = isl_schedule_gist_domain_params(copy(), context.release());
11157 return manage(res);
11160 isl::schedule schedule::insert_context(isl::set context) const {
11161 auto res = isl_schedule_insert_context(copy(), context.release());
11162 return manage(res);
11165 isl::schedule schedule::insert_guard(isl::set guard) const {
11166 auto res = isl_schedule_insert_guard(copy(), guard.release());
11167 return manage(res);
11170 isl::schedule schedule::insert_partial_schedule(isl::multi_union_pw_aff partial) const {
11171 auto res = isl_schedule_insert_partial_schedule(copy(), partial.release());
11172 return manage(res);
11175 isl::schedule schedule::intersect_domain(isl::union_set domain) const {
11176 auto res = isl_schedule_intersect_domain(copy(), domain.release());
11177 return manage(res);
11180 isl::boolean schedule::plain_is_equal(const isl::schedule &schedule2) const {
11181 auto res = isl_schedule_plain_is_equal(get(), schedule2.get());
11182 return manage(res);
11185 isl::schedule schedule::pullback(isl::union_pw_multi_aff upma) const {
11186 auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
11187 return manage(res);
11190 isl::schedule schedule::reset_user() const {
11191 auto res = isl_schedule_reset_user(copy());
11192 return manage(res);
11195 isl::schedule schedule::sequence(isl::schedule schedule2) const {
11196 auto res = isl_schedule_sequence(copy(), schedule2.release());
11197 return manage(res);
11200 isl::schedule schedule::set(isl::schedule schedule2) const {
11201 auto res = isl_schedule_set(copy(), schedule2.release());
11202 return manage(res);
11205 // implementations for isl::schedule_constraints
11206 isl::schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
11207 return schedule_constraints(ptr);
11209 isl::schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
11210 return schedule_constraints(isl_schedule_constraints_copy(ptr));
11212 isl::schedule_constraints give(__isl_take isl_schedule_constraints *ptr) {
11213 return manage(ptr);
11217 schedule_constraints::schedule_constraints()
11218 : ptr(nullptr) {}
11220 schedule_constraints::schedule_constraints(const isl::schedule_constraints &obj)
11221 : ptr(obj.copy()) {}
11222 schedule_constraints::schedule_constraints(std::nullptr_t)
11223 : ptr(nullptr) {}
11226 schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
11227 : ptr(ptr) {}
11229 schedule_constraints::schedule_constraints(isl::ctx ctx, const std::string &str) {
11230 auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
11231 ptr = res;
11234 schedule_constraints &schedule_constraints::operator=(isl::schedule_constraints obj) {
11235 std::swap(this->ptr, obj.ptr);
11236 return *this;
11239 schedule_constraints::~schedule_constraints() {
11240 if (ptr)
11241 isl_schedule_constraints_free(ptr);
11244 __isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
11245 return isl_schedule_constraints_copy(ptr);
11248 __isl_keep isl_schedule_constraints *schedule_constraints::get() const {
11249 return ptr;
11252 __isl_give isl_schedule_constraints *schedule_constraints::release() {
11253 isl_schedule_constraints *tmp = ptr;
11254 ptr = nullptr;
11255 return tmp;
11258 bool schedule_constraints::is_null() const {
11259 return ptr == nullptr;
11261 __isl_keep isl_schedule_constraints *schedule_constraints::keep() const {
11262 return get();
11265 __isl_give isl_schedule_constraints *schedule_constraints::take() {
11266 return release();
11269 schedule_constraints::operator bool() const {
11270 return !is_null();
11274 isl::ctx schedule_constraints::get_ctx() const {
11275 return isl::ctx(isl_schedule_constraints_get_ctx(ptr));
11277 std::string schedule_constraints::to_str() const {
11278 char *Tmp = isl_schedule_constraints_to_str(get());
11279 if (!Tmp)
11280 return "";
11281 std::string S(Tmp);
11282 free(Tmp);
11283 return S;
11287 void schedule_constraints::dump() const {
11288 isl_schedule_constraints_dump(get());
11292 isl::schedule_constraints schedule_constraints::apply(isl::union_map umap) const {
11293 auto res = isl_schedule_constraints_apply(copy(), umap.release());
11294 return manage(res);
11297 isl::schedule schedule_constraints::compute_schedule() const {
11298 auto res = isl_schedule_constraints_compute_schedule(copy());
11299 return manage(res);
11302 isl::union_map schedule_constraints::get_coincidence() const {
11303 auto res = isl_schedule_constraints_get_coincidence(get());
11304 return manage(res);
11307 isl::union_map schedule_constraints::get_conditional_validity() const {
11308 auto res = isl_schedule_constraints_get_conditional_validity(get());
11309 return manage(res);
11312 isl::union_map schedule_constraints::get_conditional_validity_condition() const {
11313 auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
11314 return manage(res);
11317 isl::set schedule_constraints::get_context() const {
11318 auto res = isl_schedule_constraints_get_context(get());
11319 return manage(res);
11322 isl::union_set schedule_constraints::get_domain() const {
11323 auto res = isl_schedule_constraints_get_domain(get());
11324 return manage(res);
11327 isl::union_map schedule_constraints::get_proximity() const {
11328 auto res = isl_schedule_constraints_get_proximity(get());
11329 return manage(res);
11332 isl::union_map schedule_constraints::get_validity() const {
11333 auto res = isl_schedule_constraints_get_validity(get());
11334 return manage(res);
11337 isl::schedule_constraints schedule_constraints::on_domain(isl::union_set domain) {
11338 auto res = isl_schedule_constraints_on_domain(domain.release());
11339 return manage(res);
11342 isl::schedule_constraints schedule_constraints::set_coincidence(isl::union_map coincidence) const {
11343 auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
11344 return manage(res);
11347 isl::schedule_constraints schedule_constraints::set_conditional_validity(isl::union_map condition, isl::union_map validity) const {
11348 auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
11349 return manage(res);
11352 isl::schedule_constraints schedule_constraints::set_context(isl::set context) const {
11353 auto res = isl_schedule_constraints_set_context(copy(), context.release());
11354 return manage(res);
11357 isl::schedule_constraints schedule_constraints::set_proximity(isl::union_map proximity) const {
11358 auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
11359 return manage(res);
11362 isl::schedule_constraints schedule_constraints::set_validity(isl::union_map validity) const {
11363 auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
11364 return manage(res);
11367 // implementations for isl::schedule_node
11368 isl::schedule_node manage(__isl_take isl_schedule_node *ptr) {
11369 return schedule_node(ptr);
11371 isl::schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
11372 return schedule_node(isl_schedule_node_copy(ptr));
11374 isl::schedule_node give(__isl_take isl_schedule_node *ptr) {
11375 return manage(ptr);
11379 schedule_node::schedule_node()
11380 : ptr(nullptr) {}
11382 schedule_node::schedule_node(const isl::schedule_node &obj)
11383 : ptr(obj.copy()) {}
11384 schedule_node::schedule_node(std::nullptr_t)
11385 : ptr(nullptr) {}
11388 schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
11389 : ptr(ptr) {}
11392 schedule_node &schedule_node::operator=(isl::schedule_node obj) {
11393 std::swap(this->ptr, obj.ptr);
11394 return *this;
11397 schedule_node::~schedule_node() {
11398 if (ptr)
11399 isl_schedule_node_free(ptr);
11402 __isl_give isl_schedule_node *schedule_node::copy() const & {
11403 return isl_schedule_node_copy(ptr);
11406 __isl_keep isl_schedule_node *schedule_node::get() const {
11407 return ptr;
11410 __isl_give isl_schedule_node *schedule_node::release() {
11411 isl_schedule_node *tmp = ptr;
11412 ptr = nullptr;
11413 return tmp;
11416 bool schedule_node::is_null() const {
11417 return ptr == nullptr;
11419 __isl_keep isl_schedule_node *schedule_node::keep() const {
11420 return get();
11423 __isl_give isl_schedule_node *schedule_node::take() {
11424 return release();
11427 schedule_node::operator bool() const {
11428 return !is_null();
11432 isl::ctx schedule_node::get_ctx() const {
11433 return isl::ctx(isl_schedule_node_get_ctx(ptr));
11435 std::string schedule_node::to_str() const {
11436 char *Tmp = isl_schedule_node_to_str(get());
11437 if (!Tmp)
11438 return "";
11439 std::string S(Tmp);
11440 free(Tmp);
11441 return S;
11445 void schedule_node::dump() const {
11446 isl_schedule_node_dump(get());
11450 isl::schedule_node schedule_node::align_params(isl::space space) const {
11451 auto res = isl_schedule_node_align_params(copy(), space.release());
11452 return manage(res);
11455 isl::schedule_node schedule_node::ancestor(int generation) const {
11456 auto res = isl_schedule_node_ancestor(copy(), generation);
11457 return manage(res);
11460 isl::boolean schedule_node::band_member_get_coincident(int pos) const {
11461 auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
11462 return manage(res);
11465 isl::schedule_node schedule_node::band_member_set_coincident(int pos, int coincident) const {
11466 auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
11467 return manage(res);
11470 isl::schedule_node schedule_node::band_set_ast_build_options(isl::union_set options) const {
11471 auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
11472 return manage(res);
11475 isl::schedule_node schedule_node::child(int pos) const {
11476 auto res = isl_schedule_node_child(copy(), pos);
11477 return manage(res);
11480 isl::set schedule_node::context_get_context() const {
11481 auto res = isl_schedule_node_context_get_context(get());
11482 return manage(res);
11485 isl::schedule_node schedule_node::cut() const {
11486 auto res = isl_schedule_node_cut(copy());
11487 return manage(res);
11490 isl::union_set schedule_node::domain_get_domain() const {
11491 auto res = isl_schedule_node_domain_get_domain(get());
11492 return manage(res);
11495 isl::union_pw_multi_aff schedule_node::expansion_get_contraction() const {
11496 auto res = isl_schedule_node_expansion_get_contraction(get());
11497 return manage(res);
11500 isl::union_map schedule_node::expansion_get_expansion() const {
11501 auto res = isl_schedule_node_expansion_get_expansion(get());
11502 return manage(res);
11505 isl::union_map schedule_node::extension_get_extension() const {
11506 auto res = isl_schedule_node_extension_get_extension(get());
11507 return manage(res);
11510 isl::union_set schedule_node::filter_get_filter() const {
11511 auto res = isl_schedule_node_filter_get_filter(get());
11512 return manage(res);
11515 isl::schedule_node schedule_node::first_child() const {
11516 auto res = isl_schedule_node_first_child(copy());
11517 return manage(res);
11520 isl::stat schedule_node::foreach_ancestor_top_down(const std::function<isl::stat(isl::schedule_node)> &fn) const {
11521 auto fn_p = &fn;
11522 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
11523 auto *func = *static_cast<const std::function<isl::stat(isl::schedule_node)> **>(arg_1);
11524 stat ret = (*func)(isl::manage(arg_0));
11525 return isl_stat(ret);
11527 auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_p);
11528 return isl::stat(res);
11531 isl::schedule_node schedule_node::from_domain(isl::union_set domain) {
11532 auto res = isl_schedule_node_from_domain(domain.release());
11533 return manage(res);
11536 isl::schedule_node schedule_node::from_extension(isl::union_map extension) {
11537 auto res = isl_schedule_node_from_extension(extension.release());
11538 return manage(res);
11541 int schedule_node::get_ancestor_child_position(const isl::schedule_node &ancestor) const {
11542 auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
11543 return res;
11546 isl::schedule_node schedule_node::get_child(int pos) const {
11547 auto res = isl_schedule_node_get_child(get(), pos);
11548 return manage(res);
11551 int schedule_node::get_child_position() const {
11552 auto res = isl_schedule_node_get_child_position(get());
11553 return res;
11556 isl::union_set schedule_node::get_domain() const {
11557 auto res = isl_schedule_node_get_domain(get());
11558 return manage(res);
11561 isl::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const {
11562 auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
11563 return manage(res);
11566 isl::union_map schedule_node::get_prefix_schedule_relation() const {
11567 auto res = isl_schedule_node_get_prefix_schedule_relation(get());
11568 return manage(res);
11571 isl::union_map schedule_node::get_prefix_schedule_union_map() const {
11572 auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
11573 return manage(res);
11576 isl::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const {
11577 auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
11578 return manage(res);
11581 isl::schedule schedule_node::get_schedule() const {
11582 auto res = isl_schedule_node_get_schedule(get());
11583 return manage(res);
11586 int schedule_node::get_schedule_depth() const {
11587 auto res = isl_schedule_node_get_schedule_depth(get());
11588 return res;
11591 isl::schedule_node schedule_node::get_shared_ancestor(const isl::schedule_node &node2) const {
11592 auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
11593 return manage(res);
11596 isl::union_pw_multi_aff schedule_node::get_subtree_contraction() const {
11597 auto res = isl_schedule_node_get_subtree_contraction(get());
11598 return manage(res);
11601 isl::union_map schedule_node::get_subtree_expansion() const {
11602 auto res = isl_schedule_node_get_subtree_expansion(get());
11603 return manage(res);
11606 isl::union_map schedule_node::get_subtree_schedule_union_map() const {
11607 auto res = isl_schedule_node_get_subtree_schedule_union_map(get());
11608 return manage(res);
11611 int schedule_node::get_tree_depth() const {
11612 auto res = isl_schedule_node_get_tree_depth(get());
11613 return res;
11616 isl::union_set schedule_node::get_universe_domain() const {
11617 auto res = isl_schedule_node_get_universe_domain(get());
11618 return manage(res);
11621 isl::schedule_node schedule_node::graft_after(isl::schedule_node graft) const {
11622 auto res = isl_schedule_node_graft_after(copy(), graft.release());
11623 return manage(res);
11626 isl::schedule_node schedule_node::graft_before(isl::schedule_node graft) const {
11627 auto res = isl_schedule_node_graft_before(copy(), graft.release());
11628 return manage(res);
11631 isl::schedule_node schedule_node::group(isl::id group_id) const {
11632 auto res = isl_schedule_node_group(copy(), group_id.release());
11633 return manage(res);
11636 isl::set schedule_node::guard_get_guard() const {
11637 auto res = isl_schedule_node_guard_get_guard(get());
11638 return manage(res);
11641 isl::boolean schedule_node::has_children() const {
11642 auto res = isl_schedule_node_has_children(get());
11643 return manage(res);
11646 isl::boolean schedule_node::has_next_sibling() const {
11647 auto res = isl_schedule_node_has_next_sibling(get());
11648 return manage(res);
11651 isl::boolean schedule_node::has_parent() const {
11652 auto res = isl_schedule_node_has_parent(get());
11653 return manage(res);
11656 isl::boolean schedule_node::has_previous_sibling() const {
11657 auto res = isl_schedule_node_has_previous_sibling(get());
11658 return manage(res);
11661 isl::schedule_node schedule_node::insert_context(isl::set context) const {
11662 auto res = isl_schedule_node_insert_context(copy(), context.release());
11663 return manage(res);
11666 isl::schedule_node schedule_node::insert_filter(isl::union_set filter) const {
11667 auto res = isl_schedule_node_insert_filter(copy(), filter.release());
11668 return manage(res);
11671 isl::schedule_node schedule_node::insert_guard(isl::set context) const {
11672 auto res = isl_schedule_node_insert_guard(copy(), context.release());
11673 return manage(res);
11676 isl::schedule_node schedule_node::insert_mark(isl::id mark) const {
11677 auto res = isl_schedule_node_insert_mark(copy(), mark.release());
11678 return manage(res);
11681 isl::schedule_node schedule_node::insert_partial_schedule(isl::multi_union_pw_aff schedule) const {
11682 auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
11683 return manage(res);
11686 isl::schedule_node schedule_node::insert_sequence(isl::union_set_list filters) const {
11687 auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
11688 return manage(res);
11691 isl::schedule_node schedule_node::insert_set(isl::union_set_list filters) const {
11692 auto res = isl_schedule_node_insert_set(copy(), filters.release());
11693 return manage(res);
11696 isl::boolean schedule_node::is_equal(const isl::schedule_node &node2) const {
11697 auto res = isl_schedule_node_is_equal(get(), node2.get());
11698 return manage(res);
11701 isl::boolean schedule_node::is_subtree_anchored() const {
11702 auto res = isl_schedule_node_is_subtree_anchored(get());
11703 return manage(res);
11706 isl::id schedule_node::mark_get_id() const {
11707 auto res = isl_schedule_node_mark_get_id(get());
11708 return manage(res);
11711 isl::schedule_node schedule_node::next_sibling() const {
11712 auto res = isl_schedule_node_next_sibling(copy());
11713 return manage(res);
11716 isl::schedule_node schedule_node::order_after(isl::union_set filter) const {
11717 auto res = isl_schedule_node_order_after(copy(), filter.release());
11718 return manage(res);
11721 isl::schedule_node schedule_node::order_before(isl::union_set filter) const {
11722 auto res = isl_schedule_node_order_before(copy(), filter.release());
11723 return manage(res);
11726 isl::schedule_node schedule_node::parent() const {
11727 auto res = isl_schedule_node_parent(copy());
11728 return manage(res);
11731 isl::schedule_node schedule_node::previous_sibling() const {
11732 auto res = isl_schedule_node_previous_sibling(copy());
11733 return manage(res);
11736 isl::schedule_node schedule_node::reset_user() const {
11737 auto res = isl_schedule_node_reset_user(copy());
11738 return manage(res);
11741 isl::schedule_node schedule_node::root() const {
11742 auto res = isl_schedule_node_root(copy());
11743 return manage(res);
11746 isl::schedule_node schedule_node::sequence_splice_child(int pos) const {
11747 auto res = isl_schedule_node_sequence_splice_child(copy(), pos);
11748 return manage(res);
11751 // implementations for isl::set
11752 isl::set manage(__isl_take isl_set *ptr) {
11753 return set(ptr);
11755 isl::set manage_copy(__isl_keep isl_set *ptr) {
11756 return set(isl_set_copy(ptr));
11758 isl::set give(__isl_take isl_set *ptr) {
11759 return manage(ptr);
11763 set::set()
11764 : ptr(nullptr) {}
11766 set::set(const isl::set &obj)
11767 : ptr(obj.copy()) {}
11768 set::set(std::nullptr_t)
11769 : ptr(nullptr) {}
11772 set::set(__isl_take isl_set *ptr)
11773 : ptr(ptr) {}
11775 set::set(isl::ctx ctx, const std::string &str) {
11776 auto res = isl_set_read_from_str(ctx.release(), str.c_str());
11777 ptr = res;
11779 set::set(isl::basic_set bset) {
11780 auto res = isl_set_from_basic_set(bset.release());
11781 ptr = res;
11783 set::set(isl::point pnt) {
11784 auto res = isl_set_from_point(pnt.release());
11785 ptr = res;
11787 set::set(isl::union_set uset) {
11788 auto res = isl_set_from_union_set(uset.release());
11789 ptr = res;
11792 set &set::operator=(isl::set obj) {
11793 std::swap(this->ptr, obj.ptr);
11794 return *this;
11797 set::~set() {
11798 if (ptr)
11799 isl_set_free(ptr);
11802 __isl_give isl_set *set::copy() const & {
11803 return isl_set_copy(ptr);
11806 __isl_keep isl_set *set::get() const {
11807 return ptr;
11810 __isl_give isl_set *set::release() {
11811 isl_set *tmp = ptr;
11812 ptr = nullptr;
11813 return tmp;
11816 bool set::is_null() const {
11817 return ptr == nullptr;
11819 __isl_keep isl_set *set::keep() const {
11820 return get();
11823 __isl_give isl_set *set::take() {
11824 return release();
11827 set::operator bool() const {
11828 return !is_null();
11832 isl::ctx set::get_ctx() const {
11833 return isl::ctx(isl_set_get_ctx(ptr));
11835 std::string set::to_str() const {
11836 char *Tmp = isl_set_to_str(get());
11837 if (!Tmp)
11838 return "";
11839 std::string S(Tmp);
11840 free(Tmp);
11841 return S;
11845 void set::dump() const {
11846 isl_set_dump(get());
11850 isl::set set::add_constraint(isl::constraint constraint) const {
11851 auto res = isl_set_add_constraint(copy(), constraint.release());
11852 return manage(res);
11855 isl::set set::add_dims(isl::dim type, unsigned int n) const {
11856 auto res = isl_set_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
11857 return manage(res);
11860 isl::basic_set set::affine_hull() const {
11861 auto res = isl_set_affine_hull(copy());
11862 return manage(res);
11865 isl::set set::align_params(isl::space model) const {
11866 auto res = isl_set_align_params(copy(), model.release());
11867 return manage(res);
11870 isl::set set::apply(isl::map map) const {
11871 auto res = isl_set_apply(copy(), map.release());
11872 return manage(res);
11875 isl::basic_set set::bounded_simple_hull() const {
11876 auto res = isl_set_bounded_simple_hull(copy());
11877 return manage(res);
11880 isl::set set::box_from_points(isl::point pnt1, isl::point pnt2) {
11881 auto res = isl_set_box_from_points(pnt1.release(), pnt2.release());
11882 return manage(res);
11885 isl::set set::coalesce() const {
11886 auto res = isl_set_coalesce(copy());
11887 return manage(res);
11890 isl::basic_set set::coefficients() const {
11891 auto res = isl_set_coefficients(copy());
11892 return manage(res);
11895 isl::set set::complement() const {
11896 auto res = isl_set_complement(copy());
11897 return manage(res);
11900 isl::basic_set set::convex_hull() const {
11901 auto res = isl_set_convex_hull(copy());
11902 return manage(res);
11905 isl::val set::count_val() const {
11906 auto res = isl_set_count_val(get());
11907 return manage(res);
11910 isl::set set::detect_equalities() const {
11911 auto res = isl_set_detect_equalities(copy());
11912 return manage(res);
11915 unsigned int set::dim(isl::dim type) const {
11916 auto res = isl_set_dim(get(), static_cast<enum isl_dim_type>(type));
11917 return res;
11920 isl::boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const {
11921 auto res = isl_set_dim_has_any_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
11922 return manage(res);
11925 isl::boolean set::dim_has_any_upper_bound(isl::dim type, unsigned int pos) const {
11926 auto res = isl_set_dim_has_any_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
11927 return manage(res);
11930 isl::boolean set::dim_has_lower_bound(isl::dim type, unsigned int pos) const {
11931 auto res = isl_set_dim_has_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
11932 return manage(res);
11935 isl::boolean set::dim_has_upper_bound(isl::dim type, unsigned int pos) const {
11936 auto res = isl_set_dim_has_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
11937 return manage(res);
11940 isl::boolean set::dim_is_bounded(isl::dim type, unsigned int pos) const {
11941 auto res = isl_set_dim_is_bounded(get(), static_cast<enum isl_dim_type>(type), pos);
11942 return manage(res);
11945 isl::pw_aff set::dim_max(int pos) const {
11946 auto res = isl_set_dim_max(copy(), pos);
11947 return manage(res);
11950 isl::pw_aff set::dim_min(int pos) const {
11951 auto res = isl_set_dim_min(copy(), pos);
11952 return manage(res);
11955 isl::set set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
11956 auto res = isl_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11957 return manage(res);
11960 isl::set set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
11961 auto res = isl_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11962 return manage(res);
11965 isl::set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const {
11966 auto res = isl_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
11967 return manage(res);
11970 isl::set set::empty(isl::space space) {
11971 auto res = isl_set_empty(space.release());
11972 return manage(res);
11975 isl::set set::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const {
11976 auto res = isl_set_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
11977 return manage(res);
11980 int set::find_dim_by_id(isl::dim type, const isl::id &id) const {
11981 auto res = isl_set_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
11982 return res;
11985 int set::find_dim_by_name(isl::dim type, const std::string &name) const {
11986 auto res = isl_set_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
11987 return res;
11990 isl::set set::fix_si(isl::dim type, unsigned int pos, int value) const {
11991 auto res = isl_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
11992 return manage(res);
11995 isl::set set::fix_val(isl::dim type, unsigned int pos, isl::val v) const {
11996 auto res = isl_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
11997 return manage(res);
12000 isl::set set::flat_product(isl::set set2) const {
12001 auto res = isl_set_flat_product(copy(), set2.release());
12002 return manage(res);
12005 isl::set set::flatten() const {
12006 auto res = isl_set_flatten(copy());
12007 return manage(res);
12010 isl::map set::flatten_map() const {
12011 auto res = isl_set_flatten_map(copy());
12012 return manage(res);
12015 int set::follows_at(const isl::set &set2, int pos) const {
12016 auto res = isl_set_follows_at(get(), set2.get(), pos);
12017 return res;
12020 isl::stat set::foreach_basic_set(const std::function<isl::stat(isl::basic_set)> &fn) const {
12021 auto fn_p = &fn;
12022 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
12023 auto *func = *static_cast<const std::function<isl::stat(isl::basic_set)> **>(arg_1);
12024 stat ret = (*func)(isl::manage(arg_0));
12025 return isl_stat(ret);
12027 auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_p);
12028 return isl::stat(res);
12031 isl::stat set::foreach_point(const std::function<isl::stat(isl::point)> &fn) const {
12032 auto fn_p = &fn;
12033 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
12034 auto *func = *static_cast<const std::function<isl::stat(isl::point)> **>(arg_1);
12035 stat ret = (*func)(isl::manage(arg_0));
12036 return isl_stat(ret);
12038 auto res = isl_set_foreach_point(get(), fn_lambda, &fn_p);
12039 return isl::stat(res);
12042 isl::set set::from_multi_pw_aff(isl::multi_pw_aff mpa) {
12043 auto res = isl_set_from_multi_pw_aff(mpa.release());
12044 return manage(res);
12047 isl::set set::from_params() const {
12048 auto res = isl_set_from_params(copy());
12049 return manage(res);
12052 isl::set set::from_pw_aff(isl::pw_aff pwaff) {
12053 auto res = isl_set_from_pw_aff(pwaff.release());
12054 return manage(res);
12057 isl::set set::from_pw_multi_aff(isl::pw_multi_aff pma) {
12058 auto res = isl_set_from_pw_multi_aff(pma.release());
12059 return manage(res);
12062 isl::basic_set_list set::get_basic_set_list() const {
12063 auto res = isl_set_get_basic_set_list(get());
12064 return manage(res);
12067 isl::id set::get_dim_id(isl::dim type, unsigned int pos) const {
12068 auto res = isl_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12069 return manage(res);
12072 std::string set::get_dim_name(isl::dim type, unsigned int pos) const {
12073 auto res = isl_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
12074 std::string tmp(res);
12075 return tmp;
12078 isl::space set::get_space() const {
12079 auto res = isl_set_get_space(get());
12080 return manage(res);
12083 isl::id set::get_tuple_id() const {
12084 auto res = isl_set_get_tuple_id(get());
12085 return manage(res);
12088 std::string set::get_tuple_name() const {
12089 auto res = isl_set_get_tuple_name(get());
12090 std::string tmp(res);
12091 return tmp;
12094 isl::set set::gist(isl::set context) const {
12095 auto res = isl_set_gist(copy(), context.release());
12096 return manage(res);
12099 isl::set set::gist_basic_set(isl::basic_set context) const {
12100 auto res = isl_set_gist_basic_set(copy(), context.release());
12101 return manage(res);
12104 isl::set set::gist_params(isl::set context) const {
12105 auto res = isl_set_gist_params(copy(), context.release());
12106 return manage(res);
12109 isl::boolean set::has_dim_id(isl::dim type, unsigned int pos) const {
12110 auto res = isl_set_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12111 return manage(res);
12114 isl::boolean set::has_dim_name(isl::dim type, unsigned int pos) const {
12115 auto res = isl_set_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
12116 return manage(res);
12119 isl::boolean set::has_equal_space(const isl::set &set2) const {
12120 auto res = isl_set_has_equal_space(get(), set2.get());
12121 return manage(res);
12124 isl::boolean set::has_tuple_id() const {
12125 auto res = isl_set_has_tuple_id(get());
12126 return manage(res);
12129 isl::boolean set::has_tuple_name() const {
12130 auto res = isl_set_has_tuple_name(get());
12131 return manage(res);
12134 isl::map set::identity() const {
12135 auto res = isl_set_identity(copy());
12136 return manage(res);
12139 isl::pw_aff set::indicator_function() const {
12140 auto res = isl_set_indicator_function(copy());
12141 return manage(res);
12144 isl::set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const {
12145 auto res = isl_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
12146 return manage(res);
12149 isl::set set::intersect(isl::set set2) const {
12150 auto res = isl_set_intersect(copy(), set2.release());
12151 return manage(res);
12154 isl::set set::intersect_params(isl::set params) const {
12155 auto res = isl_set_intersect_params(copy(), params.release());
12156 return manage(res);
12159 isl::boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
12160 auto res = isl_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
12161 return manage(res);
12164 isl::boolean set::is_bounded() const {
12165 auto res = isl_set_is_bounded(get());
12166 return manage(res);
12169 isl::boolean set::is_box() const {
12170 auto res = isl_set_is_box(get());
12171 return manage(res);
12174 isl::boolean set::is_disjoint(const isl::set &set2) const {
12175 auto res = isl_set_is_disjoint(get(), set2.get());
12176 return manage(res);
12179 isl::boolean set::is_empty() const {
12180 auto res = isl_set_is_empty(get());
12181 return manage(res);
12184 isl::boolean set::is_equal(const isl::set &set2) const {
12185 auto res = isl_set_is_equal(get(), set2.get());
12186 return manage(res);
12189 isl::boolean set::is_params() const {
12190 auto res = isl_set_is_params(get());
12191 return manage(res);
12194 isl::boolean set::is_singleton() const {
12195 auto res = isl_set_is_singleton(get());
12196 return manage(res);
12199 isl::boolean set::is_strict_subset(const isl::set &set2) const {
12200 auto res = isl_set_is_strict_subset(get(), set2.get());
12201 return manage(res);
12204 isl::boolean set::is_subset(const isl::set &set2) const {
12205 auto res = isl_set_is_subset(get(), set2.get());
12206 return manage(res);
12209 isl::boolean set::is_wrapping() const {
12210 auto res = isl_set_is_wrapping(get());
12211 return manage(res);
12214 isl::map set::lex_ge_set(isl::set set2) const {
12215 auto res = isl_set_lex_ge_set(copy(), set2.release());
12216 return manage(res);
12219 isl::map set::lex_gt_set(isl::set set2) const {
12220 auto res = isl_set_lex_gt_set(copy(), set2.release());
12221 return manage(res);
12224 isl::map set::lex_le_set(isl::set set2) const {
12225 auto res = isl_set_lex_le_set(copy(), set2.release());
12226 return manage(res);
12229 isl::map set::lex_lt_set(isl::set set2) const {
12230 auto res = isl_set_lex_lt_set(copy(), set2.release());
12231 return manage(res);
12234 isl::set set::lexmax() const {
12235 auto res = isl_set_lexmax(copy());
12236 return manage(res);
12239 isl::pw_multi_aff set::lexmax_pw_multi_aff() const {
12240 auto res = isl_set_lexmax_pw_multi_aff(copy());
12241 return manage(res);
12244 isl::set set::lexmin() const {
12245 auto res = isl_set_lexmin(copy());
12246 return manage(res);
12249 isl::pw_multi_aff set::lexmin_pw_multi_aff() const {
12250 auto res = isl_set_lexmin_pw_multi_aff(copy());
12251 return manage(res);
12254 isl::set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const {
12255 auto res = isl_set_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
12256 return manage(res);
12259 isl::set set::lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const {
12260 auto res = isl_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
12261 return manage(res);
12264 isl::val set::max_val(const isl::aff &obj) const {
12265 auto res = isl_set_max_val(get(), obj.get());
12266 return manage(res);
12269 isl::val set::min_val(const isl::aff &obj) const {
12270 auto res = isl_set_min_val(get(), obj.get());
12271 return manage(res);
12274 isl::set set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
12275 auto res = isl_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
12276 return manage(res);
12279 isl::set set::nat_universe(isl::space dim) {
12280 auto res = isl_set_nat_universe(dim.release());
12281 return manage(res);
12284 isl::set set::neg() const {
12285 auto res = isl_set_neg(copy());
12286 return manage(res);
12289 isl::set set::params() const {
12290 auto res = isl_set_params(copy());
12291 return manage(res);
12294 int set::plain_cmp(const isl::set &set2) const {
12295 auto res = isl_set_plain_cmp(get(), set2.get());
12296 return res;
12299 isl::val set::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const {
12300 auto res = isl_set_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
12301 return manage(res);
12304 isl::boolean set::plain_is_disjoint(const isl::set &set2) const {
12305 auto res = isl_set_plain_is_disjoint(get(), set2.get());
12306 return manage(res);
12309 isl::boolean set::plain_is_empty() const {
12310 auto res = isl_set_plain_is_empty(get());
12311 return manage(res);
12314 isl::boolean set::plain_is_equal(const isl::set &set2) const {
12315 auto res = isl_set_plain_is_equal(get(), set2.get());
12316 return manage(res);
12319 isl::boolean set::plain_is_universe() const {
12320 auto res = isl_set_plain_is_universe(get());
12321 return manage(res);
12324 isl::basic_set set::plain_unshifted_simple_hull() const {
12325 auto res = isl_set_plain_unshifted_simple_hull(copy());
12326 return manage(res);
12329 isl::basic_set set::polyhedral_hull() const {
12330 auto res = isl_set_polyhedral_hull(copy());
12331 return manage(res);
12334 isl::set set::preimage_multi_aff(isl::multi_aff ma) const {
12335 auto res = isl_set_preimage_multi_aff(copy(), ma.release());
12336 return manage(res);
12339 isl::set set::preimage_multi_pw_aff(isl::multi_pw_aff mpa) const {
12340 auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
12341 return manage(res);
12344 isl::set set::preimage_pw_multi_aff(isl::pw_multi_aff pma) const {
12345 auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
12346 return manage(res);
12349 isl::set set::product(isl::set set2) const {
12350 auto res = isl_set_product(copy(), set2.release());
12351 return manage(res);
12354 isl::map set::project_onto_map(isl::dim type, unsigned int first, unsigned int n) const {
12355 auto res = isl_set_project_onto_map(copy(), static_cast<enum isl_dim_type>(type), first, n);
12356 return manage(res);
12359 isl::set set::project_out(isl::dim type, unsigned int first, unsigned int n) const {
12360 auto res = isl_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
12361 return manage(res);
12364 isl::set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const {
12365 auto res = isl_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12366 return manage(res);
12369 isl::set set::remove_divs() const {
12370 auto res = isl_set_remove_divs(copy());
12371 return manage(res);
12374 isl::set set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const {
12375 auto res = isl_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12376 return manage(res);
12379 isl::set set::remove_redundancies() const {
12380 auto res = isl_set_remove_redundancies(copy());
12381 return manage(res);
12384 isl::set set::remove_unknown_divs() const {
12385 auto res = isl_set_remove_unknown_divs(copy());
12386 return manage(res);
12389 isl::set set::reset_space(isl::space dim) const {
12390 auto res = isl_set_reset_space(copy(), dim.release());
12391 return manage(res);
12394 isl::set set::reset_tuple_id() const {
12395 auto res = isl_set_reset_tuple_id(copy());
12396 return manage(res);
12399 isl::set set::reset_user() const {
12400 auto res = isl_set_reset_user(copy());
12401 return manage(res);
12404 isl::basic_set set::sample() const {
12405 auto res = isl_set_sample(copy());
12406 return manage(res);
12409 isl::point set::sample_point() const {
12410 auto res = isl_set_sample_point(copy());
12411 return manage(res);
12414 isl::set set::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
12415 auto res = isl_set_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
12416 return manage(res);
12419 isl::set set::set_tuple_id(isl::id id) const {
12420 auto res = isl_set_set_tuple_id(copy(), id.release());
12421 return manage(res);
12424 isl::set set::set_tuple_name(const std::string &s) const {
12425 auto res = isl_set_set_tuple_name(copy(), s.c_str());
12426 return manage(res);
12429 isl::basic_set set::simple_hull() const {
12430 auto res = isl_set_simple_hull(copy());
12431 return manage(res);
12434 int set::size() const {
12435 auto res = isl_set_size(get());
12436 return res;
12439 isl::basic_set set::solutions() const {
12440 auto res = isl_set_solutions(copy());
12441 return manage(res);
12444 isl::set set::split_dims(isl::dim type, unsigned int first, unsigned int n) const {
12445 auto res = isl_set_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12446 return manage(res);
12449 isl::set set::subtract(isl::set set2) const {
12450 auto res = isl_set_subtract(copy(), set2.release());
12451 return manage(res);
12454 isl::set set::sum(isl::set set2) const {
12455 auto res = isl_set_sum(copy(), set2.release());
12456 return manage(res);
12459 isl::set set::unite(isl::set set2) const {
12460 auto res = isl_set_union(copy(), set2.release());
12461 return manage(res);
12464 isl::set set::universe(isl::space space) {
12465 auto res = isl_set_universe(space.release());
12466 return manage(res);
12469 isl::basic_set set::unshifted_simple_hull() const {
12470 auto res = isl_set_unshifted_simple_hull(copy());
12471 return manage(res);
12474 isl::basic_set set::unshifted_simple_hull_from_set_list(isl::set_list list) const {
12475 auto res = isl_set_unshifted_simple_hull_from_set_list(copy(), list.release());
12476 return manage(res);
12479 isl::map set::unwrap() const {
12480 auto res = isl_set_unwrap(copy());
12481 return manage(res);
12484 isl::set set::upper_bound_si(isl::dim type, unsigned int pos, int value) const {
12485 auto res = isl_set_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
12486 return manage(res);
12489 isl::set set::upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const {
12490 auto res = isl_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
12491 return manage(res);
12494 isl::map set::wrapped_domain_map() const {
12495 auto res = isl_set_wrapped_domain_map(copy());
12496 return manage(res);
12499 // implementations for isl::set_list
12500 isl::set_list manage(__isl_take isl_set_list *ptr) {
12501 return set_list(ptr);
12503 isl::set_list manage_copy(__isl_keep isl_set_list *ptr) {
12504 return set_list(isl_set_list_copy(ptr));
12506 isl::set_list give(__isl_take isl_set_list *ptr) {
12507 return manage(ptr);
12511 set_list::set_list()
12512 : ptr(nullptr) {}
12514 set_list::set_list(const isl::set_list &obj)
12515 : ptr(obj.copy()) {}
12516 set_list::set_list(std::nullptr_t)
12517 : ptr(nullptr) {}
12520 set_list::set_list(__isl_take isl_set_list *ptr)
12521 : ptr(ptr) {}
12524 set_list &set_list::operator=(isl::set_list obj) {
12525 std::swap(this->ptr, obj.ptr);
12526 return *this;
12529 set_list::~set_list() {
12530 if (ptr)
12531 isl_set_list_free(ptr);
12534 __isl_give isl_set_list *set_list::copy() const & {
12535 return isl_set_list_copy(ptr);
12538 __isl_keep isl_set_list *set_list::get() const {
12539 return ptr;
12542 __isl_give isl_set_list *set_list::release() {
12543 isl_set_list *tmp = ptr;
12544 ptr = nullptr;
12545 return tmp;
12548 bool set_list::is_null() const {
12549 return ptr == nullptr;
12551 __isl_keep isl_set_list *set_list::keep() const {
12552 return get();
12555 __isl_give isl_set_list *set_list::take() {
12556 return release();
12559 set_list::operator bool() const {
12560 return !is_null();
12564 isl::ctx set_list::get_ctx() const {
12565 return isl::ctx(isl_set_list_get_ctx(ptr));
12568 void set_list::dump() const {
12569 isl_set_list_dump(get());
12574 // implementations for isl::space
12575 isl::space manage(__isl_take isl_space *ptr) {
12576 return space(ptr);
12578 isl::space manage_copy(__isl_keep isl_space *ptr) {
12579 return space(isl_space_copy(ptr));
12581 isl::space give(__isl_take isl_space *ptr) {
12582 return manage(ptr);
12586 space::space()
12587 : ptr(nullptr) {}
12589 space::space(const isl::space &obj)
12590 : ptr(obj.copy()) {}
12591 space::space(std::nullptr_t)
12592 : ptr(nullptr) {}
12595 space::space(__isl_take isl_space *ptr)
12596 : ptr(ptr) {}
12598 space::space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out) {
12599 auto res = isl_space_alloc(ctx.release(), nparam, n_in, n_out);
12600 ptr = res;
12602 space::space(isl::ctx ctx, unsigned int nparam, unsigned int dim) {
12603 auto res = isl_space_set_alloc(ctx.release(), nparam, dim);
12604 ptr = res;
12607 space &space::operator=(isl::space obj) {
12608 std::swap(this->ptr, obj.ptr);
12609 return *this;
12612 space::~space() {
12613 if (ptr)
12614 isl_space_free(ptr);
12617 __isl_give isl_space *space::copy() const & {
12618 return isl_space_copy(ptr);
12621 __isl_keep isl_space *space::get() const {
12622 return ptr;
12625 __isl_give isl_space *space::release() {
12626 isl_space *tmp = ptr;
12627 ptr = nullptr;
12628 return tmp;
12631 bool space::is_null() const {
12632 return ptr == nullptr;
12634 __isl_keep isl_space *space::keep() const {
12635 return get();
12638 __isl_give isl_space *space::take() {
12639 return release();
12642 space::operator bool() const {
12643 return !is_null();
12647 isl::ctx space::get_ctx() const {
12648 return isl::ctx(isl_space_get_ctx(ptr));
12650 std::string space::to_str() const {
12651 char *Tmp = isl_space_to_str(get());
12652 if (!Tmp)
12653 return "";
12654 std::string S(Tmp);
12655 free(Tmp);
12656 return S;
12660 void space::dump() const {
12661 isl_space_dump(get());
12665 isl::space space::add_dims(isl::dim type, unsigned int n) const {
12666 auto res = isl_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
12667 return manage(res);
12670 isl::space space::align_params(isl::space dim2) const {
12671 auto res = isl_space_align_params(copy(), dim2.release());
12672 return manage(res);
12675 isl::boolean space::can_curry() const {
12676 auto res = isl_space_can_curry(get());
12677 return manage(res);
12680 isl::boolean space::can_range_curry() const {
12681 auto res = isl_space_can_range_curry(get());
12682 return manage(res);
12685 isl::boolean space::can_uncurry() const {
12686 auto res = isl_space_can_uncurry(get());
12687 return manage(res);
12690 isl::boolean space::can_zip() const {
12691 auto res = isl_space_can_zip(get());
12692 return manage(res);
12695 isl::space space::curry() const {
12696 auto res = isl_space_curry(copy());
12697 return manage(res);
12700 unsigned int space::dim(isl::dim type) const {
12701 auto res = isl_space_dim(get(), static_cast<enum isl_dim_type>(type));
12702 return res;
12705 isl::space space::domain() const {
12706 auto res = isl_space_domain(copy());
12707 return manage(res);
12710 isl::space space::domain_factor_domain() const {
12711 auto res = isl_space_domain_factor_domain(copy());
12712 return manage(res);
12715 isl::space space::domain_factor_range() const {
12716 auto res = isl_space_domain_factor_range(copy());
12717 return manage(res);
12720 isl::boolean space::domain_is_wrapping() const {
12721 auto res = isl_space_domain_is_wrapping(get());
12722 return manage(res);
12725 isl::space space::domain_map() const {
12726 auto res = isl_space_domain_map(copy());
12727 return manage(res);
12730 isl::space space::domain_product(isl::space right) const {
12731 auto res = isl_space_domain_product(copy(), right.release());
12732 return manage(res);
12735 isl::space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const {
12736 auto res = isl_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, num);
12737 return manage(res);
12740 isl::space space::factor_domain() const {
12741 auto res = isl_space_factor_domain(copy());
12742 return manage(res);
12745 isl::space space::factor_range() const {
12746 auto res = isl_space_factor_range(copy());
12747 return manage(res);
12750 int space::find_dim_by_id(isl::dim type, const isl::id &id) const {
12751 auto res = isl_space_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
12752 return res;
12755 int space::find_dim_by_name(isl::dim type, const std::string &name) const {
12756 auto res = isl_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
12757 return res;
12760 isl::space space::from_domain() const {
12761 auto res = isl_space_from_domain(copy());
12762 return manage(res);
12765 isl::space space::from_range() const {
12766 auto res = isl_space_from_range(copy());
12767 return manage(res);
12770 isl::id space::get_dim_id(isl::dim type, unsigned int pos) const {
12771 auto res = isl_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12772 return manage(res);
12775 std::string space::get_dim_name(isl::dim type, unsigned int pos) const {
12776 auto res = isl_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
12777 std::string tmp(res);
12778 return tmp;
12781 isl::id space::get_tuple_id(isl::dim type) const {
12782 auto res = isl_space_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12783 return manage(res);
12786 std::string space::get_tuple_name(isl::dim type) const {
12787 auto res = isl_space_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
12788 std::string tmp(res);
12789 return tmp;
12792 isl::boolean space::has_dim_id(isl::dim type, unsigned int pos) const {
12793 auto res = isl_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12794 return manage(res);
12797 isl::boolean space::has_dim_name(isl::dim type, unsigned int pos) const {
12798 auto res = isl_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
12799 return manage(res);
12802 isl::boolean space::has_equal_params(const isl::space &space2) const {
12803 auto res = isl_space_has_equal_params(get(), space2.get());
12804 return manage(res);
12807 isl::boolean space::has_equal_tuples(const isl::space &space2) const {
12808 auto res = isl_space_has_equal_tuples(get(), space2.get());
12809 return manage(res);
12812 isl::boolean space::has_tuple_id(isl::dim type) const {
12813 auto res = isl_space_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12814 return manage(res);
12817 isl::boolean space::has_tuple_name(isl::dim type) const {
12818 auto res = isl_space_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
12819 return manage(res);
12822 isl::space space::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const {
12823 auto res = isl_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
12824 return manage(res);
12827 isl::boolean space::is_domain(const isl::space &space2) const {
12828 auto res = isl_space_is_domain(get(), space2.get());
12829 return manage(res);
12832 isl::boolean space::is_equal(const isl::space &space2) const {
12833 auto res = isl_space_is_equal(get(), space2.get());
12834 return manage(res);
12837 isl::boolean space::is_map() const {
12838 auto res = isl_space_is_map(get());
12839 return manage(res);
12842 isl::boolean space::is_params() const {
12843 auto res = isl_space_is_params(get());
12844 return manage(res);
12847 isl::boolean space::is_product() const {
12848 auto res = isl_space_is_product(get());
12849 return manage(res);
12852 isl::boolean space::is_range(const isl::space &space2) const {
12853 auto res = isl_space_is_range(get(), space2.get());
12854 return manage(res);
12857 isl::boolean space::is_set() const {
12858 auto res = isl_space_is_set(get());
12859 return manage(res);
12862 isl::boolean space::is_wrapping() const {
12863 auto res = isl_space_is_wrapping(get());
12864 return manage(res);
12867 isl::space space::join(isl::space right) const {
12868 auto res = isl_space_join(copy(), right.release());
12869 return manage(res);
12872 isl::space space::map_from_domain_and_range(isl::space range) const {
12873 auto res = isl_space_map_from_domain_and_range(copy(), range.release());
12874 return manage(res);
12877 isl::space space::map_from_set() const {
12878 auto res = isl_space_map_from_set(copy());
12879 return manage(res);
12882 isl::space space::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const {
12883 auto res = isl_space_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
12884 return manage(res);
12887 isl::space space::params() const {
12888 auto res = isl_space_params(copy());
12889 return manage(res);
12892 isl::space space::params_alloc(isl::ctx ctx, unsigned int nparam) {
12893 auto res = isl_space_params_alloc(ctx.release(), nparam);
12894 return manage(res);
12897 isl::space space::product(isl::space right) const {
12898 auto res = isl_space_product(copy(), right.release());
12899 return manage(res);
12902 isl::space space::range() const {
12903 auto res = isl_space_range(copy());
12904 return manage(res);
12907 isl::space space::range_curry() const {
12908 auto res = isl_space_range_curry(copy());
12909 return manage(res);
12912 isl::space space::range_factor_domain() const {
12913 auto res = isl_space_range_factor_domain(copy());
12914 return manage(res);
12917 isl::space space::range_factor_range() const {
12918 auto res = isl_space_range_factor_range(copy());
12919 return manage(res);
12922 isl::boolean space::range_is_wrapping() const {
12923 auto res = isl_space_range_is_wrapping(get());
12924 return manage(res);
12927 isl::space space::range_map() const {
12928 auto res = isl_space_range_map(copy());
12929 return manage(res);
12932 isl::space space::range_product(isl::space right) const {
12933 auto res = isl_space_range_product(copy(), right.release());
12934 return manage(res);
12937 isl::space space::reset_tuple_id(isl::dim type) const {
12938 auto res = isl_space_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
12939 return manage(res);
12942 isl::space space::reset_user() const {
12943 auto res = isl_space_reset_user(copy());
12944 return manage(res);
12947 isl::space space::reverse() const {
12948 auto res = isl_space_reverse(copy());
12949 return manage(res);
12952 isl::space space::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const {
12953 auto res = isl_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
12954 return manage(res);
12957 isl::space space::set_from_params() const {
12958 auto res = isl_space_set_from_params(copy());
12959 return manage(res);
12962 isl::space space::set_tuple_id(isl::dim type, isl::id id) const {
12963 auto res = isl_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
12964 return manage(res);
12967 isl::space space::set_tuple_name(isl::dim type, const std::string &s) const {
12968 auto res = isl_space_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
12969 return manage(res);
12972 isl::boolean space::tuple_is_equal(isl::dim type1, const isl::space &space2, isl::dim type2) const {
12973 auto res = isl_space_tuple_is_equal(get(), static_cast<enum isl_dim_type>(type1), space2.get(), static_cast<enum isl_dim_type>(type2));
12974 return manage(res);
12977 isl::space space::uncurry() const {
12978 auto res = isl_space_uncurry(copy());
12979 return manage(res);
12982 isl::space space::unwrap() const {
12983 auto res = isl_space_unwrap(copy());
12984 return manage(res);
12987 isl::space space::wrap() const {
12988 auto res = isl_space_wrap(copy());
12989 return manage(res);
12992 isl::space space::zip() const {
12993 auto res = isl_space_zip(copy());
12994 return manage(res);
12997 // implementations for isl::term
12998 isl::term manage(__isl_take isl_term *ptr) {
12999 return term(ptr);
13001 isl::term manage_copy(__isl_keep isl_term *ptr) {
13002 return term(isl_term_copy(ptr));
13004 isl::term give(__isl_take isl_term *ptr) {
13005 return manage(ptr);
13009 term::term()
13010 : ptr(nullptr) {}
13012 term::term(const isl::term &obj)
13013 : ptr(obj.copy()) {}
13014 term::term(std::nullptr_t)
13015 : ptr(nullptr) {}
13018 term::term(__isl_take isl_term *ptr)
13019 : ptr(ptr) {}
13022 term &term::operator=(isl::term obj) {
13023 std::swap(this->ptr, obj.ptr);
13024 return *this;
13027 term::~term() {
13028 if (ptr)
13029 isl_term_free(ptr);
13032 __isl_give isl_term *term::copy() const & {
13033 return isl_term_copy(ptr);
13036 __isl_keep isl_term *term::get() const {
13037 return ptr;
13040 __isl_give isl_term *term::release() {
13041 isl_term *tmp = ptr;
13042 ptr = nullptr;
13043 return tmp;
13046 bool term::is_null() const {
13047 return ptr == nullptr;
13049 __isl_keep isl_term *term::keep() const {
13050 return get();
13053 __isl_give isl_term *term::take() {
13054 return release();
13057 term::operator bool() const {
13058 return !is_null();
13062 isl::ctx term::get_ctx() const {
13063 return isl::ctx(isl_term_get_ctx(ptr));
13067 unsigned int term::dim(isl::dim type) const {
13068 auto res = isl_term_dim(get(), static_cast<enum isl_dim_type>(type));
13069 return res;
13072 isl::val term::get_coefficient_val() const {
13073 auto res = isl_term_get_coefficient_val(get());
13074 return manage(res);
13077 isl::aff term::get_div(unsigned int pos) const {
13078 auto res = isl_term_get_div(get(), pos);
13079 return manage(res);
13082 int term::get_exp(isl::dim type, unsigned int pos) const {
13083 auto res = isl_term_get_exp(get(), static_cast<enum isl_dim_type>(type), pos);
13084 return res;
13087 // implementations for isl::union_access_info
13088 isl::union_access_info manage(__isl_take isl_union_access_info *ptr) {
13089 return union_access_info(ptr);
13091 isl::union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
13092 return union_access_info(isl_union_access_info_copy(ptr));
13094 isl::union_access_info give(__isl_take isl_union_access_info *ptr) {
13095 return manage(ptr);
13099 union_access_info::union_access_info()
13100 : ptr(nullptr) {}
13102 union_access_info::union_access_info(const isl::union_access_info &obj)
13103 : ptr(obj.copy()) {}
13104 union_access_info::union_access_info(std::nullptr_t)
13105 : ptr(nullptr) {}
13108 union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
13109 : ptr(ptr) {}
13111 union_access_info::union_access_info(isl::union_map sink) {
13112 auto res = isl_union_access_info_from_sink(sink.release());
13113 ptr = res;
13116 union_access_info &union_access_info::operator=(isl::union_access_info obj) {
13117 std::swap(this->ptr, obj.ptr);
13118 return *this;
13121 union_access_info::~union_access_info() {
13122 if (ptr)
13123 isl_union_access_info_free(ptr);
13126 __isl_give isl_union_access_info *union_access_info::copy() const & {
13127 return isl_union_access_info_copy(ptr);
13130 __isl_keep isl_union_access_info *union_access_info::get() const {
13131 return ptr;
13134 __isl_give isl_union_access_info *union_access_info::release() {
13135 isl_union_access_info *tmp = ptr;
13136 ptr = nullptr;
13137 return tmp;
13140 bool union_access_info::is_null() const {
13141 return ptr == nullptr;
13143 __isl_keep isl_union_access_info *union_access_info::keep() const {
13144 return get();
13147 __isl_give isl_union_access_info *union_access_info::take() {
13148 return release();
13151 union_access_info::operator bool() const {
13152 return !is_null();
13156 isl::ctx union_access_info::get_ctx() const {
13157 return isl::ctx(isl_union_access_info_get_ctx(ptr));
13159 std::string union_access_info::to_str() const {
13160 char *Tmp = isl_union_access_info_to_str(get());
13161 if (!Tmp)
13162 return "";
13163 std::string S(Tmp);
13164 free(Tmp);
13165 return S;
13170 isl::union_flow union_access_info::compute_flow() const {
13171 auto res = isl_union_access_info_compute_flow(copy());
13172 return manage(res);
13175 isl::union_access_info union_access_info::set_kill(isl::union_map kill) const {
13176 auto res = isl_union_access_info_set_kill(copy(), kill.release());
13177 return manage(res);
13180 isl::union_access_info union_access_info::set_may_source(isl::union_map may_source) const {
13181 auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
13182 return manage(res);
13185 isl::union_access_info union_access_info::set_must_source(isl::union_map must_source) const {
13186 auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
13187 return manage(res);
13190 isl::union_access_info union_access_info::set_schedule(isl::schedule schedule) const {
13191 auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
13192 return manage(res);
13195 isl::union_access_info union_access_info::set_schedule_map(isl::union_map schedule_map) const {
13196 auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
13197 return manage(res);
13200 // implementations for isl::union_flow
13201 isl::union_flow manage(__isl_take isl_union_flow *ptr) {
13202 return union_flow(ptr);
13204 isl::union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
13205 return union_flow(isl_union_flow_copy(ptr));
13207 isl::union_flow give(__isl_take isl_union_flow *ptr) {
13208 return manage(ptr);
13212 union_flow::union_flow()
13213 : ptr(nullptr) {}
13215 union_flow::union_flow(const isl::union_flow &obj)
13216 : ptr(obj.copy()) {}
13217 union_flow::union_flow(std::nullptr_t)
13218 : ptr(nullptr) {}
13221 union_flow::union_flow(__isl_take isl_union_flow *ptr)
13222 : ptr(ptr) {}
13225 union_flow &union_flow::operator=(isl::union_flow obj) {
13226 std::swap(this->ptr, obj.ptr);
13227 return *this;
13230 union_flow::~union_flow() {
13231 if (ptr)
13232 isl_union_flow_free(ptr);
13235 __isl_give isl_union_flow *union_flow::copy() const & {
13236 return isl_union_flow_copy(ptr);
13239 __isl_keep isl_union_flow *union_flow::get() const {
13240 return ptr;
13243 __isl_give isl_union_flow *union_flow::release() {
13244 isl_union_flow *tmp = ptr;
13245 ptr = nullptr;
13246 return tmp;
13249 bool union_flow::is_null() const {
13250 return ptr == nullptr;
13252 __isl_keep isl_union_flow *union_flow::keep() const {
13253 return get();
13256 __isl_give isl_union_flow *union_flow::take() {
13257 return release();
13260 union_flow::operator bool() const {
13261 return !is_null();
13265 isl::ctx union_flow::get_ctx() const {
13266 return isl::ctx(isl_union_flow_get_ctx(ptr));
13268 std::string union_flow::to_str() const {
13269 char *Tmp = isl_union_flow_to_str(get());
13270 if (!Tmp)
13271 return "";
13272 std::string S(Tmp);
13273 free(Tmp);
13274 return S;
13279 isl::union_map union_flow::get_full_may_dependence() const {
13280 auto res = isl_union_flow_get_full_may_dependence(get());
13281 return manage(res);
13284 isl::union_map union_flow::get_full_must_dependence() const {
13285 auto res = isl_union_flow_get_full_must_dependence(get());
13286 return manage(res);
13289 isl::union_map union_flow::get_may_dependence() const {
13290 auto res = isl_union_flow_get_may_dependence(get());
13291 return manage(res);
13294 isl::union_map union_flow::get_may_no_source() const {
13295 auto res = isl_union_flow_get_may_no_source(get());
13296 return manage(res);
13299 isl::union_map union_flow::get_must_dependence() const {
13300 auto res = isl_union_flow_get_must_dependence(get());
13301 return manage(res);
13304 isl::union_map union_flow::get_must_no_source() const {
13305 auto res = isl_union_flow_get_must_no_source(get());
13306 return manage(res);
13309 // implementations for isl::union_map
13310 isl::union_map manage(__isl_take isl_union_map *ptr) {
13311 return union_map(ptr);
13313 isl::union_map manage_copy(__isl_keep isl_union_map *ptr) {
13314 return union_map(isl_union_map_copy(ptr));
13316 isl::union_map give(__isl_take isl_union_map *ptr) {
13317 return manage(ptr);
13321 union_map::union_map()
13322 : ptr(nullptr) {}
13324 union_map::union_map(const isl::union_map &obj)
13325 : ptr(obj.copy()) {}
13326 union_map::union_map(std::nullptr_t)
13327 : ptr(nullptr) {}
13330 union_map::union_map(__isl_take isl_union_map *ptr)
13331 : ptr(ptr) {}
13333 union_map::union_map(isl::ctx ctx, const std::string &str) {
13334 auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
13335 ptr = res;
13337 union_map::union_map(isl::union_pw_aff upa) {
13338 auto res = isl_union_map_from_union_pw_aff(upa.release());
13339 ptr = res;
13341 union_map::union_map(isl::basic_map bmap) {
13342 auto res = isl_union_map_from_basic_map(bmap.release());
13343 ptr = res;
13345 union_map::union_map(isl::map map) {
13346 auto res = isl_union_map_from_map(map.release());
13347 ptr = res;
13350 union_map &union_map::operator=(isl::union_map obj) {
13351 std::swap(this->ptr, obj.ptr);
13352 return *this;
13355 union_map::~union_map() {
13356 if (ptr)
13357 isl_union_map_free(ptr);
13360 __isl_give isl_union_map *union_map::copy() const & {
13361 return isl_union_map_copy(ptr);
13364 __isl_keep isl_union_map *union_map::get() const {
13365 return ptr;
13368 __isl_give isl_union_map *union_map::release() {
13369 isl_union_map *tmp = ptr;
13370 ptr = nullptr;
13371 return tmp;
13374 bool union_map::is_null() const {
13375 return ptr == nullptr;
13377 __isl_keep isl_union_map *union_map::keep() const {
13378 return get();
13381 __isl_give isl_union_map *union_map::take() {
13382 return release();
13385 union_map::operator bool() const {
13386 return !is_null();
13390 isl::ctx union_map::get_ctx() const {
13391 return isl::ctx(isl_union_map_get_ctx(ptr));
13393 std::string union_map::to_str() const {
13394 char *Tmp = isl_union_map_to_str(get());
13395 if (!Tmp)
13396 return "";
13397 std::string S(Tmp);
13398 free(Tmp);
13399 return S;
13403 void union_map::dump() const {
13404 isl_union_map_dump(get());
13408 isl::union_map union_map::add_map(isl::map map) const {
13409 auto res = isl_union_map_add_map(copy(), map.release());
13410 return manage(res);
13413 isl::union_map union_map::affine_hull() const {
13414 auto res = isl_union_map_affine_hull(copy());
13415 return manage(res);
13418 isl::union_map union_map::align_params(isl::space model) const {
13419 auto res = isl_union_map_align_params(copy(), model.release());
13420 return manage(res);
13423 isl::union_map union_map::apply_domain(isl::union_map umap2) const {
13424 auto res = isl_union_map_apply_domain(copy(), umap2.release());
13425 return manage(res);
13428 isl::union_map union_map::apply_range(isl::union_map umap2) const {
13429 auto res = isl_union_map_apply_range(copy(), umap2.release());
13430 return manage(res);
13433 isl::union_map union_map::coalesce() const {
13434 auto res = isl_union_map_coalesce(copy());
13435 return manage(res);
13438 isl::boolean union_map::contains(const isl::space &space) const {
13439 auto res = isl_union_map_contains(get(), space.get());
13440 return manage(res);
13443 isl::union_map union_map::curry() const {
13444 auto res = isl_union_map_curry(copy());
13445 return manage(res);
13448 isl::union_set union_map::deltas() const {
13449 auto res = isl_union_map_deltas(copy());
13450 return manage(res);
13453 isl::union_map union_map::deltas_map() const {
13454 auto res = isl_union_map_deltas_map(copy());
13455 return manage(res);
13458 isl::union_map union_map::detect_equalities() const {
13459 auto res = isl_union_map_detect_equalities(copy());
13460 return manage(res);
13463 unsigned int union_map::dim(isl::dim type) const {
13464 auto res = isl_union_map_dim(get(), static_cast<enum isl_dim_type>(type));
13465 return res;
13468 isl::union_set union_map::domain() const {
13469 auto res = isl_union_map_domain(copy());
13470 return manage(res);
13473 isl::union_map union_map::domain_factor_domain() const {
13474 auto res = isl_union_map_domain_factor_domain(copy());
13475 return manage(res);
13478 isl::union_map union_map::domain_factor_range() const {
13479 auto res = isl_union_map_domain_factor_range(copy());
13480 return manage(res);
13483 isl::union_map union_map::domain_map() const {
13484 auto res = isl_union_map_domain_map(copy());
13485 return manage(res);
13488 isl::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const {
13489 auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
13490 return manage(res);
13493 isl::union_map union_map::domain_product(isl::union_map umap2) const {
13494 auto res = isl_union_map_domain_product(copy(), umap2.release());
13495 return manage(res);
13498 isl::union_map union_map::empty(isl::space space) {
13499 auto res = isl_union_map_empty(space.release());
13500 return manage(res);
13503 isl::union_map union_map::eq_at(isl::multi_union_pw_aff mupa) const {
13504 auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
13505 return manage(res);
13508 isl::map union_map::extract_map(isl::space dim) const {
13509 auto res = isl_union_map_extract_map(get(), dim.release());
13510 return manage(res);
13513 isl::union_map union_map::factor_domain() const {
13514 auto res = isl_union_map_factor_domain(copy());
13515 return manage(res);
13518 isl::union_map union_map::factor_range() const {
13519 auto res = isl_union_map_factor_range(copy());
13520 return manage(res);
13523 int union_map::find_dim_by_name(isl::dim type, const std::string &name) const {
13524 auto res = isl_union_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
13525 return res;
13528 isl::union_map union_map::fixed_power(isl::val exp) const {
13529 auto res = isl_union_map_fixed_power_val(copy(), exp.release());
13530 return manage(res);
13533 isl::union_map union_map::flat_domain_product(isl::union_map umap2) const {
13534 auto res = isl_union_map_flat_domain_product(copy(), umap2.release());
13535 return manage(res);
13538 isl::union_map union_map::flat_range_product(isl::union_map umap2) const {
13539 auto res = isl_union_map_flat_range_product(copy(), umap2.release());
13540 return manage(res);
13543 isl::stat union_map::foreach_map(const std::function<isl::stat(isl::map)> &fn) const {
13544 auto fn_p = &fn;
13545 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
13546 auto *func = *static_cast<const std::function<isl::stat(isl::map)> **>(arg_1);
13547 stat ret = (*func)(isl::manage(arg_0));
13548 return isl_stat(ret);
13550 auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_p);
13551 return isl::stat(res);
13554 isl::union_map union_map::from(isl::union_pw_multi_aff upma) {
13555 auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
13556 return manage(res);
13559 isl::union_map union_map::from(isl::multi_union_pw_aff mupa) {
13560 auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
13561 return manage(res);
13564 isl::union_map union_map::from_domain(isl::union_set uset) {
13565 auto res = isl_union_map_from_domain(uset.release());
13566 return manage(res);
13569 isl::union_map union_map::from_domain_and_range(isl::union_set domain, isl::union_set range) {
13570 auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
13571 return manage(res);
13574 isl::union_map union_map::from_range(isl::union_set uset) {
13575 auto res = isl_union_map_from_range(uset.release());
13576 return manage(res);
13579 isl::id union_map::get_dim_id(isl::dim type, unsigned int pos) const {
13580 auto res = isl_union_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
13581 return manage(res);
13584 uint32_t union_map::get_hash() const {
13585 auto res = isl_union_map_get_hash(get());
13586 return res;
13589 isl::space union_map::get_space() const {
13590 auto res = isl_union_map_get_space(get());
13591 return manage(res);
13594 isl::union_map union_map::gist(isl::union_map context) const {
13595 auto res = isl_union_map_gist(copy(), context.release());
13596 return manage(res);
13599 isl::union_map union_map::gist_domain(isl::union_set uset) const {
13600 auto res = isl_union_map_gist_domain(copy(), uset.release());
13601 return manage(res);
13604 isl::union_map union_map::gist_params(isl::set set) const {
13605 auto res = isl_union_map_gist_params(copy(), set.release());
13606 return manage(res);
13609 isl::union_map union_map::gist_range(isl::union_set uset) const {
13610 auto res = isl_union_map_gist_range(copy(), uset.release());
13611 return manage(res);
13614 isl::union_map union_map::intersect(isl::union_map umap2) const {
13615 auto res = isl_union_map_intersect(copy(), umap2.release());
13616 return manage(res);
13619 isl::union_map union_map::intersect_domain(isl::union_set uset) const {
13620 auto res = isl_union_map_intersect_domain(copy(), uset.release());
13621 return manage(res);
13624 isl::union_map union_map::intersect_params(isl::set set) const {
13625 auto res = isl_union_map_intersect_params(copy(), set.release());
13626 return manage(res);
13629 isl::union_map union_map::intersect_range(isl::union_set uset) const {
13630 auto res = isl_union_map_intersect_range(copy(), uset.release());
13631 return manage(res);
13634 isl::union_map union_map::intersect_range_factor_range(isl::union_map factor) const {
13635 auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
13636 return manage(res);
13639 isl::boolean union_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const {
13640 auto res = isl_union_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
13641 return manage(res);
13644 isl::boolean union_map::is_bijective() const {
13645 auto res = isl_union_map_is_bijective(get());
13646 return manage(res);
13649 isl::boolean union_map::is_disjoint(const isl::union_map &umap2) const {
13650 auto res = isl_union_map_is_disjoint(get(), umap2.get());
13651 return manage(res);
13654 isl::boolean union_map::is_empty() const {
13655 auto res = isl_union_map_is_empty(get());
13656 return manage(res);
13659 isl::boolean union_map::is_equal(const isl::union_map &umap2) const {
13660 auto res = isl_union_map_is_equal(get(), umap2.get());
13661 return manage(res);
13664 isl::boolean union_map::is_identity() const {
13665 auto res = isl_union_map_is_identity(get());
13666 return manage(res);
13669 isl::boolean union_map::is_injective() const {
13670 auto res = isl_union_map_is_injective(get());
13671 return manage(res);
13674 isl::boolean union_map::is_single_valued() const {
13675 auto res = isl_union_map_is_single_valued(get());
13676 return manage(res);
13679 isl::boolean union_map::is_strict_subset(const isl::union_map &umap2) const {
13680 auto res = isl_union_map_is_strict_subset(get(), umap2.get());
13681 return manage(res);
13684 isl::boolean union_map::is_subset(const isl::union_map &umap2) const {
13685 auto res = isl_union_map_is_subset(get(), umap2.get());
13686 return manage(res);
13689 isl::union_map union_map::lex_ge_union_map(isl::union_map umap2) const {
13690 auto res = isl_union_map_lex_ge_union_map(copy(), umap2.release());
13691 return manage(res);
13694 isl::union_map union_map::lex_gt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const {
13695 auto res = isl_union_map_lex_gt_at_multi_union_pw_aff(copy(), mupa.release());
13696 return manage(res);
13699 isl::union_map union_map::lex_gt_union_map(isl::union_map umap2) const {
13700 auto res = isl_union_map_lex_gt_union_map(copy(), umap2.release());
13701 return manage(res);
13704 isl::union_map union_map::lex_le_union_map(isl::union_map umap2) const {
13705 auto res = isl_union_map_lex_le_union_map(copy(), umap2.release());
13706 return manage(res);
13709 isl::union_map union_map::lex_lt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const {
13710 auto res = isl_union_map_lex_lt_at_multi_union_pw_aff(copy(), mupa.release());
13711 return manage(res);
13714 isl::union_map union_map::lex_lt_union_map(isl::union_map umap2) const {
13715 auto res = isl_union_map_lex_lt_union_map(copy(), umap2.release());
13716 return manage(res);
13719 isl::union_map union_map::lexmax() const {
13720 auto res = isl_union_map_lexmax(copy());
13721 return manage(res);
13724 isl::union_map union_map::lexmin() const {
13725 auto res = isl_union_map_lexmin(copy());
13726 return manage(res);
13729 isl::set union_map::params() const {
13730 auto res = isl_union_map_params(copy());
13731 return manage(res);
13734 isl::boolean union_map::plain_is_injective() const {
13735 auto res = isl_union_map_plain_is_injective(get());
13736 return manage(res);
13739 isl::union_map union_map::polyhedral_hull() const {
13740 auto res = isl_union_map_polyhedral_hull(copy());
13741 return manage(res);
13744 isl::union_map union_map::preimage_domain_multi_aff(isl::multi_aff ma) const {
13745 auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
13746 return manage(res);
13749 isl::union_map union_map::preimage_domain_multi_pw_aff(isl::multi_pw_aff mpa) const {
13750 auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
13751 return manage(res);
13754 isl::union_map union_map::preimage_domain_pw_multi_aff(isl::pw_multi_aff pma) const {
13755 auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
13756 return manage(res);
13759 isl::union_map union_map::preimage_domain_union_pw_multi_aff(isl::union_pw_multi_aff upma) const {
13760 auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
13761 return manage(res);
13764 isl::union_map union_map::preimage_range_multi_aff(isl::multi_aff ma) const {
13765 auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
13766 return manage(res);
13769 isl::union_map union_map::preimage_range_pw_multi_aff(isl::pw_multi_aff pma) const {
13770 auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
13771 return manage(res);
13774 isl::union_map union_map::preimage_range_union_pw_multi_aff(isl::union_pw_multi_aff upma) const {
13775 auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
13776 return manage(res);
13779 isl::union_map union_map::product(isl::union_map umap2) const {
13780 auto res = isl_union_map_product(copy(), umap2.release());
13781 return manage(res);
13784 isl::union_map union_map::project_out(isl::dim type, unsigned int first, unsigned int n) const {
13785 auto res = isl_union_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
13786 return manage(res);
13789 isl::union_set union_map::range() const {
13790 auto res = isl_union_map_range(copy());
13791 return manage(res);
13794 isl::union_map union_map::range_curry() const {
13795 auto res = isl_union_map_range_curry(copy());
13796 return manage(res);
13799 isl::union_map union_map::range_factor_domain() const {
13800 auto res = isl_union_map_range_factor_domain(copy());
13801 return manage(res);
13804 isl::union_map union_map::range_factor_range() const {
13805 auto res = isl_union_map_range_factor_range(copy());
13806 return manage(res);
13809 isl::union_map union_map::range_map() const {
13810 auto res = isl_union_map_range_map(copy());
13811 return manage(res);
13814 isl::union_map union_map::range_product(isl::union_map umap2) const {
13815 auto res = isl_union_map_range_product(copy(), umap2.release());
13816 return manage(res);
13819 isl::union_map union_map::remove_divs() const {
13820 auto res = isl_union_map_remove_divs(copy());
13821 return manage(res);
13824 isl::union_map union_map::remove_redundancies() const {
13825 auto res = isl_union_map_remove_redundancies(copy());
13826 return manage(res);
13829 isl::union_map union_map::reset_user() const {
13830 auto res = isl_union_map_reset_user(copy());
13831 return manage(res);
13834 isl::union_map union_map::reverse() const {
13835 auto res = isl_union_map_reverse(copy());
13836 return manage(res);
13839 isl::basic_map union_map::sample() const {
13840 auto res = isl_union_map_sample(copy());
13841 return manage(res);
13844 isl::union_map union_map::simple_hull() const {
13845 auto res = isl_union_map_simple_hull(copy());
13846 return manage(res);
13849 isl::union_map union_map::subtract(isl::union_map umap2) const {
13850 auto res = isl_union_map_subtract(copy(), umap2.release());
13851 return manage(res);
13854 isl::union_map union_map::subtract_domain(isl::union_set dom) const {
13855 auto res = isl_union_map_subtract_domain(copy(), dom.release());
13856 return manage(res);
13859 isl::union_map union_map::subtract_range(isl::union_set dom) const {
13860 auto res = isl_union_map_subtract_range(copy(), dom.release());
13861 return manage(res);
13864 isl::union_map union_map::uncurry() const {
13865 auto res = isl_union_map_uncurry(copy());
13866 return manage(res);
13869 isl::union_map union_map::unite(isl::union_map umap2) const {
13870 auto res = isl_union_map_union(copy(), umap2.release());
13871 return manage(res);
13874 isl::union_map union_map::universe() const {
13875 auto res = isl_union_map_universe(copy());
13876 return manage(res);
13879 isl::union_set union_map::wrap() const {
13880 auto res = isl_union_map_wrap(copy());
13881 return manage(res);
13884 isl::union_map union_map::zip() const {
13885 auto res = isl_union_map_zip(copy());
13886 return manage(res);
13889 // implementations for isl::union_map_list
13890 isl::union_map_list manage(__isl_take isl_union_map_list *ptr) {
13891 return union_map_list(ptr);
13893 isl::union_map_list manage_copy(__isl_keep isl_union_map_list *ptr) {
13894 return union_map_list(isl_union_map_list_copy(ptr));
13896 isl::union_map_list give(__isl_take isl_union_map_list *ptr) {
13897 return manage(ptr);
13901 union_map_list::union_map_list()
13902 : ptr(nullptr) {}
13904 union_map_list::union_map_list(const isl::union_map_list &obj)
13905 : ptr(obj.copy()) {}
13906 union_map_list::union_map_list(std::nullptr_t)
13907 : ptr(nullptr) {}
13910 union_map_list::union_map_list(__isl_take isl_union_map_list *ptr)
13911 : ptr(ptr) {}
13914 union_map_list &union_map_list::operator=(isl::union_map_list obj) {
13915 std::swap(this->ptr, obj.ptr);
13916 return *this;
13919 union_map_list::~union_map_list() {
13920 if (ptr)
13921 isl_union_map_list_free(ptr);
13924 __isl_give isl_union_map_list *union_map_list::copy() const & {
13925 return isl_union_map_list_copy(ptr);
13928 __isl_keep isl_union_map_list *union_map_list::get() const {
13929 return ptr;
13932 __isl_give isl_union_map_list *union_map_list::release() {
13933 isl_union_map_list *tmp = ptr;
13934 ptr = nullptr;
13935 return tmp;
13938 bool union_map_list::is_null() const {
13939 return ptr == nullptr;
13941 __isl_keep isl_union_map_list *union_map_list::keep() const {
13942 return get();
13945 __isl_give isl_union_map_list *union_map_list::take() {
13946 return release();
13949 union_map_list::operator bool() const {
13950 return !is_null();
13954 isl::ctx union_map_list::get_ctx() const {
13955 return isl::ctx(isl_union_map_list_get_ctx(ptr));
13958 void union_map_list::dump() const {
13959 isl_union_map_list_dump(get());
13964 // implementations for isl::union_pw_aff
13965 isl::union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
13966 return union_pw_aff(ptr);
13968 isl::union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
13969 return union_pw_aff(isl_union_pw_aff_copy(ptr));
13971 isl::union_pw_aff give(__isl_take isl_union_pw_aff *ptr) {
13972 return manage(ptr);
13976 union_pw_aff::union_pw_aff()
13977 : ptr(nullptr) {}
13979 union_pw_aff::union_pw_aff(const isl::union_pw_aff &obj)
13980 : ptr(obj.copy()) {}
13981 union_pw_aff::union_pw_aff(std::nullptr_t)
13982 : ptr(nullptr) {}
13985 union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
13986 : ptr(ptr) {}
13988 union_pw_aff::union_pw_aff(isl::pw_aff pa) {
13989 auto res = isl_union_pw_aff_from_pw_aff(pa.release());
13990 ptr = res;
13992 union_pw_aff::union_pw_aff(isl::union_set domain, isl::val v) {
13993 auto res = isl_union_pw_aff_val_on_domain(domain.release(), v.release());
13994 ptr = res;
13996 union_pw_aff::union_pw_aff(isl::ctx ctx, const std::string &str) {
13997 auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
13998 ptr = res;
14001 union_pw_aff &union_pw_aff::operator=(isl::union_pw_aff obj) {
14002 std::swap(this->ptr, obj.ptr);
14003 return *this;
14006 union_pw_aff::~union_pw_aff() {
14007 if (ptr)
14008 isl_union_pw_aff_free(ptr);
14011 __isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
14012 return isl_union_pw_aff_copy(ptr);
14015 __isl_keep isl_union_pw_aff *union_pw_aff::get() const {
14016 return ptr;
14019 __isl_give isl_union_pw_aff *union_pw_aff::release() {
14020 isl_union_pw_aff *tmp = ptr;
14021 ptr = nullptr;
14022 return tmp;
14025 bool union_pw_aff::is_null() const {
14026 return ptr == nullptr;
14028 __isl_keep isl_union_pw_aff *union_pw_aff::keep() const {
14029 return get();
14032 __isl_give isl_union_pw_aff *union_pw_aff::take() {
14033 return release();
14036 union_pw_aff::operator bool() const {
14037 return !is_null();
14041 isl::ctx union_pw_aff::get_ctx() const {
14042 return isl::ctx(isl_union_pw_aff_get_ctx(ptr));
14044 std::string union_pw_aff::to_str() const {
14045 char *Tmp = isl_union_pw_aff_to_str(get());
14046 if (!Tmp)
14047 return "";
14048 std::string S(Tmp);
14049 free(Tmp);
14050 return S;
14054 void union_pw_aff::dump() const {
14055 isl_union_pw_aff_dump(get());
14059 isl::union_pw_aff union_pw_aff::add(isl::union_pw_aff upa2) const {
14060 auto res = isl_union_pw_aff_add(copy(), upa2.release());
14061 return manage(res);
14064 isl::union_pw_aff union_pw_aff::add_pw_aff(isl::pw_aff pa) const {
14065 auto res = isl_union_pw_aff_add_pw_aff(copy(), pa.release());
14066 return manage(res);
14069 isl::union_pw_aff union_pw_aff::aff_on_domain(isl::union_set domain, isl::aff aff) {
14070 auto res = isl_union_pw_aff_aff_on_domain(domain.release(), aff.release());
14071 return manage(res);
14074 isl::union_pw_aff union_pw_aff::align_params(isl::space model) const {
14075 auto res = isl_union_pw_aff_align_params(copy(), model.release());
14076 return manage(res);
14079 isl::union_pw_aff union_pw_aff::coalesce() const {
14080 auto res = isl_union_pw_aff_coalesce(copy());
14081 return manage(res);
14084 unsigned int union_pw_aff::dim(isl::dim type) const {
14085 auto res = isl_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
14086 return res;
14089 isl::union_set union_pw_aff::domain() const {
14090 auto res = isl_union_pw_aff_domain(copy());
14091 return manage(res);
14094 isl::union_pw_aff union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
14095 auto res = isl_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14096 return manage(res);
14099 isl::union_pw_aff union_pw_aff::empty(isl::space space) {
14100 auto res = isl_union_pw_aff_empty(space.release());
14101 return manage(res);
14104 isl::pw_aff union_pw_aff::extract_pw_aff(isl::space space) const {
14105 auto res = isl_union_pw_aff_extract_pw_aff(get(), space.release());
14106 return manage(res);
14109 int union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const {
14110 auto res = isl_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
14111 return res;
14114 isl::union_pw_aff union_pw_aff::floor() const {
14115 auto res = isl_union_pw_aff_floor(copy());
14116 return manage(res);
14119 isl::stat union_pw_aff::foreach_pw_aff(const std::function<isl::stat(isl::pw_aff)> &fn) const {
14120 auto fn_p = &fn;
14121 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
14122 auto *func = *static_cast<const std::function<isl::stat(isl::pw_aff)> **>(arg_1);
14123 stat ret = (*func)(isl::manage(arg_0));
14124 return isl_stat(ret);
14126 auto res = isl_union_pw_aff_foreach_pw_aff(get(), fn_lambda, &fn_p);
14127 return isl::stat(res);
14130 isl::space union_pw_aff::get_space() const {
14131 auto res = isl_union_pw_aff_get_space(get());
14132 return manage(res);
14135 isl::union_pw_aff union_pw_aff::gist(isl::union_set context) const {
14136 auto res = isl_union_pw_aff_gist(copy(), context.release());
14137 return manage(res);
14140 isl::union_pw_aff union_pw_aff::gist_params(isl::set context) const {
14141 auto res = isl_union_pw_aff_gist_params(copy(), context.release());
14142 return manage(res);
14145 isl::union_pw_aff union_pw_aff::intersect_domain(isl::union_set uset) const {
14146 auto res = isl_union_pw_aff_intersect_domain(copy(), uset.release());
14147 return manage(res);
14150 isl::union_pw_aff union_pw_aff::intersect_params(isl::set set) const {
14151 auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
14152 return manage(res);
14155 isl::boolean union_pw_aff::involves_nan() const {
14156 auto res = isl_union_pw_aff_involves_nan(get());
14157 return manage(res);
14160 isl::union_pw_aff union_pw_aff::mod_val(isl::val f) const {
14161 auto res = isl_union_pw_aff_mod_val(copy(), f.release());
14162 return manage(res);
14165 isl::union_pw_aff union_pw_aff::neg() const {
14166 auto res = isl_union_pw_aff_neg(copy());
14167 return manage(res);
14170 isl::boolean union_pw_aff::plain_is_equal(const isl::union_pw_aff &upa2) const {
14171 auto res = isl_union_pw_aff_plain_is_equal(get(), upa2.get());
14172 return manage(res);
14175 isl::union_pw_aff union_pw_aff::pullback(isl::union_pw_multi_aff upma) const {
14176 auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
14177 return manage(res);
14180 isl::union_pw_aff union_pw_aff::reset_user() const {
14181 auto res = isl_union_pw_aff_reset_user(copy());
14182 return manage(res);
14185 isl::union_pw_aff union_pw_aff::scale_down_val(isl::val v) const {
14186 auto res = isl_union_pw_aff_scale_down_val(copy(), v.release());
14187 return manage(res);
14190 isl::union_pw_aff union_pw_aff::scale_val(isl::val v) const {
14191 auto res = isl_union_pw_aff_scale_val(copy(), v.release());
14192 return manage(res);
14195 isl::union_pw_aff union_pw_aff::sub(isl::union_pw_aff upa2) const {
14196 auto res = isl_union_pw_aff_sub(copy(), upa2.release());
14197 return manage(res);
14200 isl::union_pw_aff union_pw_aff::subtract_domain(isl::union_set uset) const {
14201 auto res = isl_union_pw_aff_subtract_domain(copy(), uset.release());
14202 return manage(res);
14205 isl::union_pw_aff union_pw_aff::union_add(isl::union_pw_aff upa2) const {
14206 auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
14207 return manage(res);
14210 isl::union_set union_pw_aff::zero_union_set() const {
14211 auto res = isl_union_pw_aff_zero_union_set(copy());
14212 return manage(res);
14215 // implementations for isl::union_pw_aff_list
14216 isl::union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
14217 return union_pw_aff_list(ptr);
14219 isl::union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
14220 return union_pw_aff_list(isl_union_pw_aff_list_copy(ptr));
14222 isl::union_pw_aff_list give(__isl_take isl_union_pw_aff_list *ptr) {
14223 return manage(ptr);
14227 union_pw_aff_list::union_pw_aff_list()
14228 : ptr(nullptr) {}
14230 union_pw_aff_list::union_pw_aff_list(const isl::union_pw_aff_list &obj)
14231 : ptr(obj.copy()) {}
14232 union_pw_aff_list::union_pw_aff_list(std::nullptr_t)
14233 : ptr(nullptr) {}
14236 union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
14237 : ptr(ptr) {}
14240 union_pw_aff_list &union_pw_aff_list::operator=(isl::union_pw_aff_list obj) {
14241 std::swap(this->ptr, obj.ptr);
14242 return *this;
14245 union_pw_aff_list::~union_pw_aff_list() {
14246 if (ptr)
14247 isl_union_pw_aff_list_free(ptr);
14250 __isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
14251 return isl_union_pw_aff_list_copy(ptr);
14254 __isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
14255 return ptr;
14258 __isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
14259 isl_union_pw_aff_list *tmp = ptr;
14260 ptr = nullptr;
14261 return tmp;
14264 bool union_pw_aff_list::is_null() const {
14265 return ptr == nullptr;
14267 __isl_keep isl_union_pw_aff_list *union_pw_aff_list::keep() const {
14268 return get();
14271 __isl_give isl_union_pw_aff_list *union_pw_aff_list::take() {
14272 return release();
14275 union_pw_aff_list::operator bool() const {
14276 return !is_null();
14280 isl::ctx union_pw_aff_list::get_ctx() const {
14281 return isl::ctx(isl_union_pw_aff_list_get_ctx(ptr));
14284 void union_pw_aff_list::dump() const {
14285 isl_union_pw_aff_list_dump(get());
14290 // implementations for isl::union_pw_multi_aff
14291 isl::union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
14292 return union_pw_multi_aff(ptr);
14294 isl::union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
14295 return union_pw_multi_aff(isl_union_pw_multi_aff_copy(ptr));
14297 isl::union_pw_multi_aff give(__isl_take isl_union_pw_multi_aff *ptr) {
14298 return manage(ptr);
14302 union_pw_multi_aff::union_pw_multi_aff()
14303 : ptr(nullptr) {}
14305 union_pw_multi_aff::union_pw_multi_aff(const isl::union_pw_multi_aff &obj)
14306 : ptr(obj.copy()) {}
14307 union_pw_multi_aff::union_pw_multi_aff(std::nullptr_t)
14308 : ptr(nullptr) {}
14311 union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
14312 : ptr(ptr) {}
14314 union_pw_multi_aff::union_pw_multi_aff(isl::pw_multi_aff pma) {
14315 auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
14316 ptr = res;
14318 union_pw_multi_aff::union_pw_multi_aff(isl::union_set uset) {
14319 auto res = isl_union_pw_multi_aff_from_domain(uset.release());
14320 ptr = res;
14322 union_pw_multi_aff::union_pw_multi_aff(isl::union_map umap) {
14323 auto res = isl_union_pw_multi_aff_from_union_map(umap.release());
14324 ptr = res;
14326 union_pw_multi_aff::union_pw_multi_aff(isl::ctx ctx, const std::string &str) {
14327 auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
14328 ptr = res;
14330 union_pw_multi_aff::union_pw_multi_aff(isl::union_pw_aff upa) {
14331 auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
14332 ptr = res;
14335 union_pw_multi_aff &union_pw_multi_aff::operator=(isl::union_pw_multi_aff obj) {
14336 std::swap(this->ptr, obj.ptr);
14337 return *this;
14340 union_pw_multi_aff::~union_pw_multi_aff() {
14341 if (ptr)
14342 isl_union_pw_multi_aff_free(ptr);
14345 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
14346 return isl_union_pw_multi_aff_copy(ptr);
14349 __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
14350 return ptr;
14353 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
14354 isl_union_pw_multi_aff *tmp = ptr;
14355 ptr = nullptr;
14356 return tmp;
14359 bool union_pw_multi_aff::is_null() const {
14360 return ptr == nullptr;
14362 __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::keep() const {
14363 return get();
14366 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::take() {
14367 return release();
14370 union_pw_multi_aff::operator bool() const {
14371 return !is_null();
14375 isl::ctx union_pw_multi_aff::get_ctx() const {
14376 return isl::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
14378 std::string union_pw_multi_aff::to_str() const {
14379 char *Tmp = isl_union_pw_multi_aff_to_str(get());
14380 if (!Tmp)
14381 return "";
14382 std::string S(Tmp);
14383 free(Tmp);
14384 return S;
14388 void union_pw_multi_aff::dump() const {
14389 isl_union_pw_multi_aff_dump(get());
14393 isl::union_pw_multi_aff union_pw_multi_aff::add(isl::union_pw_multi_aff upma2) const {
14394 auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
14395 return manage(res);
14398 isl::union_pw_multi_aff union_pw_multi_aff::add_pw_multi_aff(isl::pw_multi_aff pma) const {
14399 auto res = isl_union_pw_multi_aff_add_pw_multi_aff(copy(), pma.release());
14400 return manage(res);
14403 isl::union_pw_multi_aff union_pw_multi_aff::align_params(isl::space model) const {
14404 auto res = isl_union_pw_multi_aff_align_params(copy(), model.release());
14405 return manage(res);
14408 isl::union_pw_multi_aff union_pw_multi_aff::coalesce() const {
14409 auto res = isl_union_pw_multi_aff_coalesce(copy());
14410 return manage(res);
14413 unsigned int union_pw_multi_aff::dim(isl::dim type) const {
14414 auto res = isl_union_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
14415 return res;
14418 isl::union_set union_pw_multi_aff::domain() const {
14419 auto res = isl_union_pw_multi_aff_domain(copy());
14420 return manage(res);
14423 isl::union_pw_multi_aff union_pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
14424 auto res = isl_union_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14425 return manage(res);
14428 isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::space space) {
14429 auto res = isl_union_pw_multi_aff_empty(space.release());
14430 return manage(res);
14433 isl::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::space space) const {
14434 auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
14435 return manage(res);
14438 int union_pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const {
14439 auto res = isl_union_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
14440 return res;
14443 isl::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::union_pw_multi_aff upma2) const {
14444 auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
14445 return manage(res);
14448 isl::stat union_pw_multi_aff::foreach_pw_multi_aff(const std::function<isl::stat(isl::pw_multi_aff)> &fn) const {
14449 auto fn_p = &fn;
14450 auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
14451 auto *func = *static_cast<const std::function<isl::stat(isl::pw_multi_aff)> **>(arg_1);
14452 stat ret = (*func)(isl::manage(arg_0));
14453 return isl_stat(ret);
14455 auto res = isl_union_pw_multi_aff_foreach_pw_multi_aff(get(), fn_lambda, &fn_p);
14456 return isl::stat(res);
14459 isl::union_pw_multi_aff union_pw_multi_aff::from_aff(isl::aff aff) {
14460 auto res = isl_union_pw_multi_aff_from_aff(aff.release());
14461 return manage(res);
14464 isl::union_pw_multi_aff union_pw_multi_aff::from_multi_union_pw_aff(isl::multi_union_pw_aff mupa) {
14465 auto res = isl_union_pw_multi_aff_from_multi_union_pw_aff(mupa.release());
14466 return manage(res);
14469 isl::union_pw_multi_aff union_pw_multi_aff::from_union_set(isl::union_set uset) {
14470 auto res = isl_union_pw_multi_aff_from_union_set(uset.release());
14471 return manage(res);
14474 isl::space union_pw_multi_aff::get_space() const {
14475 auto res = isl_union_pw_multi_aff_get_space(get());
14476 return manage(res);
14479 isl::union_pw_aff union_pw_multi_aff::get_union_pw_aff(int pos) const {
14480 auto res = isl_union_pw_multi_aff_get_union_pw_aff(get(), pos);
14481 return manage(res);
14484 isl::union_pw_multi_aff union_pw_multi_aff::gist(isl::union_set context) const {
14485 auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
14486 return manage(res);
14489 isl::union_pw_multi_aff union_pw_multi_aff::gist_params(isl::set context) const {
14490 auto res = isl_union_pw_multi_aff_gist_params(copy(), context.release());
14491 return manage(res);
14494 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::union_set uset) const {
14495 auto res = isl_union_pw_multi_aff_intersect_domain(copy(), uset.release());
14496 return manage(res);
14499 isl::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::set set) const {
14500 auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
14501 return manage(res);
14504 isl::boolean union_pw_multi_aff::involves_nan() const {
14505 auto res = isl_union_pw_multi_aff_involves_nan(get());
14506 return manage(res);
14509 isl::union_pw_multi_aff union_pw_multi_aff::multi_val_on_domain(isl::union_set domain, isl::multi_val mv) {
14510 auto res = isl_union_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
14511 return manage(res);
14514 isl::union_pw_multi_aff union_pw_multi_aff::neg() const {
14515 auto res = isl_union_pw_multi_aff_neg(copy());
14516 return manage(res);
14519 isl::boolean union_pw_multi_aff::plain_is_equal(const isl::union_pw_multi_aff &upma2) const {
14520 auto res = isl_union_pw_multi_aff_plain_is_equal(get(), upma2.get());
14521 return manage(res);
14524 isl::union_pw_multi_aff union_pw_multi_aff::pullback(isl::union_pw_multi_aff upma2) const {
14525 auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
14526 return manage(res);
14529 isl::union_pw_multi_aff union_pw_multi_aff::reset_user() const {
14530 auto res = isl_union_pw_multi_aff_reset_user(copy());
14531 return manage(res);
14534 isl::union_pw_multi_aff union_pw_multi_aff::scale_down_val(isl::val val) const {
14535 auto res = isl_union_pw_multi_aff_scale_down_val(copy(), val.release());
14536 return manage(res);
14539 isl::union_pw_multi_aff union_pw_multi_aff::scale_multi_val(isl::multi_val mv) const {
14540 auto res = isl_union_pw_multi_aff_scale_multi_val(copy(), mv.release());
14541 return manage(res);
14544 isl::union_pw_multi_aff union_pw_multi_aff::scale_val(isl::val val) const {
14545 auto res = isl_union_pw_multi_aff_scale_val(copy(), val.release());
14546 return manage(res);
14549 isl::union_pw_multi_aff union_pw_multi_aff::sub(isl::union_pw_multi_aff upma2) const {
14550 auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
14551 return manage(res);
14554 isl::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::union_set uset) const {
14555 auto res = isl_union_pw_multi_aff_subtract_domain(copy(), uset.release());
14556 return manage(res);
14559 isl::union_pw_multi_aff union_pw_multi_aff::union_add(isl::union_pw_multi_aff upma2) const {
14560 auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
14561 return manage(res);
14564 // implementations for isl::union_pw_multi_aff_list
14565 isl::union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr) {
14566 return union_pw_multi_aff_list(ptr);
14568 isl::union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr) {
14569 return union_pw_multi_aff_list(isl_union_pw_multi_aff_list_copy(ptr));
14571 isl::union_pw_multi_aff_list give(__isl_take isl_union_pw_multi_aff_list *ptr) {
14572 return manage(ptr);
14576 union_pw_multi_aff_list::union_pw_multi_aff_list()
14577 : ptr(nullptr) {}
14579 union_pw_multi_aff_list::union_pw_multi_aff_list(const isl::union_pw_multi_aff_list &obj)
14580 : ptr(obj.copy()) {}
14581 union_pw_multi_aff_list::union_pw_multi_aff_list(std::nullptr_t)
14582 : ptr(nullptr) {}
14585 union_pw_multi_aff_list::union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr)
14586 : ptr(ptr) {}
14589 union_pw_multi_aff_list &union_pw_multi_aff_list::operator=(isl::union_pw_multi_aff_list obj) {
14590 std::swap(this->ptr, obj.ptr);
14591 return *this;
14594 union_pw_multi_aff_list::~union_pw_multi_aff_list() {
14595 if (ptr)
14596 isl_union_pw_multi_aff_list_free(ptr);
14599 __isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::copy() const & {
14600 return isl_union_pw_multi_aff_list_copy(ptr);
14603 __isl_keep isl_union_pw_multi_aff_list *union_pw_multi_aff_list::get() const {
14604 return ptr;
14607 __isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::release() {
14608 isl_union_pw_multi_aff_list *tmp = ptr;
14609 ptr = nullptr;
14610 return tmp;
14613 bool union_pw_multi_aff_list::is_null() const {
14614 return ptr == nullptr;
14616 __isl_keep isl_union_pw_multi_aff_list *union_pw_multi_aff_list::keep() const {
14617 return get();
14620 __isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::take() {
14621 return release();
14624 union_pw_multi_aff_list::operator bool() const {
14625 return !is_null();
14629 isl::ctx union_pw_multi_aff_list::get_ctx() const {
14630 return isl::ctx(isl_union_pw_multi_aff_list_get_ctx(ptr));
14633 void union_pw_multi_aff_list::dump() const {
14634 isl_union_pw_multi_aff_list_dump(get());
14639 // implementations for isl::union_pw_qpolynomial
14640 isl::union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr) {
14641 return union_pw_qpolynomial(ptr);
14643 isl::union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr) {
14644 return union_pw_qpolynomial(isl_union_pw_qpolynomial_copy(ptr));
14646 isl::union_pw_qpolynomial give(__isl_take isl_union_pw_qpolynomial *ptr) {
14647 return manage(ptr);
14651 union_pw_qpolynomial::union_pw_qpolynomial()
14652 : ptr(nullptr) {}
14654 union_pw_qpolynomial::union_pw_qpolynomial(const isl::union_pw_qpolynomial &obj)
14655 : ptr(obj.copy()) {}
14656 union_pw_qpolynomial::union_pw_qpolynomial(std::nullptr_t)
14657 : ptr(nullptr) {}
14660 union_pw_qpolynomial::union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr)
14661 : ptr(ptr) {}
14663 union_pw_qpolynomial::union_pw_qpolynomial(isl::ctx ctx, const std::string &str) {
14664 auto res = isl_union_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
14665 ptr = res;
14668 union_pw_qpolynomial &union_pw_qpolynomial::operator=(isl::union_pw_qpolynomial obj) {
14669 std::swap(this->ptr, obj.ptr);
14670 return *this;
14673 union_pw_qpolynomial::~union_pw_qpolynomial() {
14674 if (ptr)
14675 isl_union_pw_qpolynomial_free(ptr);
14678 __isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::copy() const & {
14679 return isl_union_pw_qpolynomial_copy(ptr);
14682 __isl_keep isl_union_pw_qpolynomial *union_pw_qpolynomial::get() const {
14683 return ptr;
14686 __isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::release() {
14687 isl_union_pw_qpolynomial *tmp = ptr;
14688 ptr = nullptr;
14689 return tmp;
14692 bool union_pw_qpolynomial::is_null() const {
14693 return ptr == nullptr;
14695 __isl_keep isl_union_pw_qpolynomial *union_pw_qpolynomial::keep() const {
14696 return get();
14699 __isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::take() {
14700 return release();
14703 union_pw_qpolynomial::operator bool() const {
14704 return !is_null();
14708 isl::ctx union_pw_qpolynomial::get_ctx() const {
14709 return isl::ctx(isl_union_pw_qpolynomial_get_ctx(ptr));
14711 std::string union_pw_qpolynomial::to_str() const {
14712 char *Tmp = isl_union_pw_qpolynomial_to_str(get());
14713 if (!Tmp)
14714 return "";
14715 std::string S(Tmp);
14716 free(Tmp);
14717 return S;
14722 isl::union_pw_qpolynomial union_pw_qpolynomial::add(isl::union_pw_qpolynomial upwqp2) const {
14723 auto res = isl_union_pw_qpolynomial_add(copy(), upwqp2.release());
14724 return manage(res);
14727 isl::union_pw_qpolynomial union_pw_qpolynomial::add_pw_qpolynomial(isl::pw_qpolynomial pwqp) const {
14728 auto res = isl_union_pw_qpolynomial_add_pw_qpolynomial(copy(), pwqp.release());
14729 return manage(res);
14732 isl::union_pw_qpolynomial union_pw_qpolynomial::align_params(isl::space model) const {
14733 auto res = isl_union_pw_qpolynomial_align_params(copy(), model.release());
14734 return manage(res);
14737 isl::union_pw_qpolynomial union_pw_qpolynomial::coalesce() const {
14738 auto res = isl_union_pw_qpolynomial_coalesce(copy());
14739 return manage(res);
14742 unsigned int union_pw_qpolynomial::dim(isl::dim type) const {
14743 auto res = isl_union_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
14744 return res;
14747 isl::union_set union_pw_qpolynomial::domain() const {
14748 auto res = isl_union_pw_qpolynomial_domain(copy());
14749 return manage(res);
14752 isl::union_pw_qpolynomial union_pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const {
14753 auto res = isl_union_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14754 return manage(res);
14757 isl::val union_pw_qpolynomial::eval(isl::point pnt) const {
14758 auto res = isl_union_pw_qpolynomial_eval(copy(), pnt.release());
14759 return manage(res);
14762 isl::pw_qpolynomial union_pw_qpolynomial::extract_pw_qpolynomial(isl::space dim) const {
14763 auto res = isl_union_pw_qpolynomial_extract_pw_qpolynomial(get(), dim.release());
14764 return manage(res);
14767 int union_pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const {
14768 auto res = isl_union_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
14769 return res;
14772 isl::stat union_pw_qpolynomial::foreach_pw_qpolynomial(const std::function<isl::stat(isl::pw_qpolynomial)> &fn) const {
14773 auto fn_p = &fn;
14774 auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat {
14775 auto *func = *static_cast<const std::function<isl::stat(isl::pw_qpolynomial)> **>(arg_1);
14776 stat ret = (*func)(isl::manage(arg_0));
14777 return isl_stat(ret);
14779 auto res = isl_union_pw_qpolynomial_foreach_pw_qpolynomial(get(), fn_lambda, &fn_p);
14780 return isl::stat(res);
14783 isl::union_pw_qpolynomial union_pw_qpolynomial::from_pw_qpolynomial(isl::pw_qpolynomial pwqp) {
14784 auto res = isl_union_pw_qpolynomial_from_pw_qpolynomial(pwqp.release());
14785 return manage(res);
14788 isl::space union_pw_qpolynomial::get_space() const {
14789 auto res = isl_union_pw_qpolynomial_get_space(get());
14790 return manage(res);
14793 isl::union_pw_qpolynomial union_pw_qpolynomial::gist(isl::union_set context) const {
14794 auto res = isl_union_pw_qpolynomial_gist(copy(), context.release());
14795 return manage(res);
14798 isl::union_pw_qpolynomial union_pw_qpolynomial::gist_params(isl::set context) const {
14799 auto res = isl_union_pw_qpolynomial_gist_params(copy(), context.release());
14800 return manage(res);
14803 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_domain(isl::union_set uset) const {
14804 auto res = isl_union_pw_qpolynomial_intersect_domain(copy(), uset.release());
14805 return manage(res);
14808 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_params(isl::set set) const {
14809 auto res = isl_union_pw_qpolynomial_intersect_params(copy(), set.release());
14810 return manage(res);
14813 isl::boolean union_pw_qpolynomial::involves_nan() const {
14814 auto res = isl_union_pw_qpolynomial_involves_nan(get());
14815 return manage(res);
14818 isl::union_pw_qpolynomial union_pw_qpolynomial::mul(isl::union_pw_qpolynomial upwqp2) const {
14819 auto res = isl_union_pw_qpolynomial_mul(copy(), upwqp2.release());
14820 return manage(res);
14823 isl::union_pw_qpolynomial union_pw_qpolynomial::neg() const {
14824 auto res = isl_union_pw_qpolynomial_neg(copy());
14825 return manage(res);
14828 isl::boolean union_pw_qpolynomial::plain_is_equal(const isl::union_pw_qpolynomial &upwqp2) const {
14829 auto res = isl_union_pw_qpolynomial_plain_is_equal(get(), upwqp2.get());
14830 return manage(res);
14833 isl::union_pw_qpolynomial union_pw_qpolynomial::reset_user() const {
14834 auto res = isl_union_pw_qpolynomial_reset_user(copy());
14835 return manage(res);
14838 isl::union_pw_qpolynomial union_pw_qpolynomial::scale_down_val(isl::val v) const {
14839 auto res = isl_union_pw_qpolynomial_scale_down_val(copy(), v.release());
14840 return manage(res);
14843 isl::union_pw_qpolynomial union_pw_qpolynomial::scale_val(isl::val v) const {
14844 auto res = isl_union_pw_qpolynomial_scale_val(copy(), v.release());
14845 return manage(res);
14848 isl::union_pw_qpolynomial union_pw_qpolynomial::sub(isl::union_pw_qpolynomial upwqp2) const {
14849 auto res = isl_union_pw_qpolynomial_sub(copy(), upwqp2.release());
14850 return manage(res);
14853 isl::union_pw_qpolynomial union_pw_qpolynomial::subtract_domain(isl::union_set uset) const {
14854 auto res = isl_union_pw_qpolynomial_subtract_domain(copy(), uset.release());
14855 return manage(res);
14858 isl::union_pw_qpolynomial union_pw_qpolynomial::to_polynomial(int sign) const {
14859 auto res = isl_union_pw_qpolynomial_to_polynomial(copy(), sign);
14860 return manage(res);
14863 isl::union_pw_qpolynomial union_pw_qpolynomial::zero(isl::space dim) {
14864 auto res = isl_union_pw_qpolynomial_zero(dim.release());
14865 return manage(res);
14868 // implementations for isl::union_set
14869 isl::union_set manage(__isl_take isl_union_set *ptr) {
14870 return union_set(ptr);
14872 isl::union_set manage_copy(__isl_keep isl_union_set *ptr) {
14873 return union_set(isl_union_set_copy(ptr));
14875 isl::union_set give(__isl_take isl_union_set *ptr) {
14876 return manage(ptr);
14880 union_set::union_set()
14881 : ptr(nullptr) {}
14883 union_set::union_set(const isl::union_set &obj)
14884 : ptr(obj.copy()) {}
14885 union_set::union_set(std::nullptr_t)
14886 : ptr(nullptr) {}
14889 union_set::union_set(__isl_take isl_union_set *ptr)
14890 : ptr(ptr) {}
14892 union_set::union_set(isl::basic_set bset) {
14893 auto res = isl_union_set_from_basic_set(bset.release());
14894 ptr = res;
14896 union_set::union_set(isl::set set) {
14897 auto res = isl_union_set_from_set(set.release());
14898 ptr = res;
14900 union_set::union_set(isl::point pnt) {
14901 auto res = isl_union_set_from_point(pnt.release());
14902 ptr = res;
14904 union_set::union_set(isl::ctx ctx, const std::string &str) {
14905 auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
14906 ptr = res;
14909 union_set &union_set::operator=(isl::union_set obj) {
14910 std::swap(this->ptr, obj.ptr);
14911 return *this;
14914 union_set::~union_set() {
14915 if (ptr)
14916 isl_union_set_free(ptr);
14919 __isl_give isl_union_set *union_set::copy() const & {
14920 return isl_union_set_copy(ptr);
14923 __isl_keep isl_union_set *union_set::get() const {
14924 return ptr;
14927 __isl_give isl_union_set *union_set::release() {
14928 isl_union_set *tmp = ptr;
14929 ptr = nullptr;
14930 return tmp;
14933 bool union_set::is_null() const {
14934 return ptr == nullptr;
14936 __isl_keep isl_union_set *union_set::keep() const {
14937 return get();
14940 __isl_give isl_union_set *union_set::take() {
14941 return release();
14944 union_set::operator bool() const {
14945 return !is_null();
14949 isl::ctx union_set::get_ctx() const {
14950 return isl::ctx(isl_union_set_get_ctx(ptr));
14952 std::string union_set::to_str() const {
14953 char *Tmp = isl_union_set_to_str(get());
14954 if (!Tmp)
14955 return "";
14956 std::string S(Tmp);
14957 free(Tmp);
14958 return S;
14962 void union_set::dump() const {
14963 isl_union_set_dump(get());
14967 isl::union_set union_set::add_set(isl::set set) const {
14968 auto res = isl_union_set_add_set(copy(), set.release());
14969 return manage(res);
14972 isl::union_set union_set::affine_hull() const {
14973 auto res = isl_union_set_affine_hull(copy());
14974 return manage(res);
14977 isl::union_set union_set::align_params(isl::space model) const {
14978 auto res = isl_union_set_align_params(copy(), model.release());
14979 return manage(res);
14982 isl::union_set union_set::apply(isl::union_map umap) const {
14983 auto res = isl_union_set_apply(copy(), umap.release());
14984 return manage(res);
14987 isl::union_set union_set::coalesce() const {
14988 auto res = isl_union_set_coalesce(copy());
14989 return manage(res);
14992 isl::union_set union_set::coefficients() const {
14993 auto res = isl_union_set_coefficients(copy());
14994 return manage(res);
14997 isl::schedule union_set::compute_schedule(isl::union_map validity, isl::union_map proximity) const {
14998 auto res = isl_union_set_compute_schedule(copy(), validity.release(), proximity.release());
14999 return manage(res);
15002 isl::boolean union_set::contains(const isl::space &space) const {
15003 auto res = isl_union_set_contains(get(), space.get());
15004 return manage(res);
15007 isl::union_set union_set::detect_equalities() const {
15008 auto res = isl_union_set_detect_equalities(copy());
15009 return manage(res);
15012 unsigned int union_set::dim(isl::dim type) const {
15013 auto res = isl_union_set_dim(get(), static_cast<enum isl_dim_type>(type));
15014 return res;
15017 isl::union_set union_set::empty(isl::space space) {
15018 auto res = isl_union_set_empty(space.release());
15019 return manage(res);
15022 isl::set union_set::extract_set(isl::space dim) const {
15023 auto res = isl_union_set_extract_set(get(), dim.release());
15024 return manage(res);
15027 isl::stat union_set::foreach_point(const std::function<isl::stat(isl::point)> &fn) const {
15028 auto fn_p = &fn;
15029 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
15030 auto *func = *static_cast<const std::function<isl::stat(isl::point)> **>(arg_1);
15031 stat ret = (*func)(isl::manage(arg_0));
15032 return isl_stat(ret);
15034 auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_p);
15035 return isl::stat(res);
15038 isl::stat union_set::foreach_set(const std::function<isl::stat(isl::set)> &fn) const {
15039 auto fn_p = &fn;
15040 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
15041 auto *func = *static_cast<const std::function<isl::stat(isl::set)> **>(arg_1);
15042 stat ret = (*func)(isl::manage(arg_0));
15043 return isl_stat(ret);
15045 auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_p);
15046 return isl::stat(res);
15049 isl::basic_set_list union_set::get_basic_set_list() const {
15050 auto res = isl_union_set_get_basic_set_list(get());
15051 return manage(res);
15054 uint32_t union_set::get_hash() const {
15055 auto res = isl_union_set_get_hash(get());
15056 return res;
15059 isl::space union_set::get_space() const {
15060 auto res = isl_union_set_get_space(get());
15061 return manage(res);
15064 isl::union_set union_set::gist(isl::union_set context) const {
15065 auto res = isl_union_set_gist(copy(), context.release());
15066 return manage(res);
15069 isl::union_set union_set::gist_params(isl::set set) const {
15070 auto res = isl_union_set_gist_params(copy(), set.release());
15071 return manage(res);
15074 isl::union_map union_set::identity() const {
15075 auto res = isl_union_set_identity(copy());
15076 return manage(res);
15079 isl::union_pw_multi_aff union_set::identity_union_pw_multi_aff() const {
15080 auto res = isl_union_set_identity_union_pw_multi_aff(copy());
15081 return manage(res);
15084 isl::union_set union_set::intersect(isl::union_set uset2) const {
15085 auto res = isl_union_set_intersect(copy(), uset2.release());
15086 return manage(res);
15089 isl::union_set union_set::intersect_params(isl::set set) const {
15090 auto res = isl_union_set_intersect_params(copy(), set.release());
15091 return manage(res);
15094 isl::boolean union_set::is_disjoint(const isl::union_set &uset2) const {
15095 auto res = isl_union_set_is_disjoint(get(), uset2.get());
15096 return manage(res);
15099 isl::boolean union_set::is_empty() const {
15100 auto res = isl_union_set_is_empty(get());
15101 return manage(res);
15104 isl::boolean union_set::is_equal(const isl::union_set &uset2) const {
15105 auto res = isl_union_set_is_equal(get(), uset2.get());
15106 return manage(res);
15109 isl::boolean union_set::is_params() const {
15110 auto res = isl_union_set_is_params(get());
15111 return manage(res);
15114 isl::boolean union_set::is_strict_subset(const isl::union_set &uset2) const {
15115 auto res = isl_union_set_is_strict_subset(get(), uset2.get());
15116 return manage(res);
15119 isl::boolean union_set::is_subset(const isl::union_set &uset2) const {
15120 auto res = isl_union_set_is_subset(get(), uset2.get());
15121 return manage(res);
15124 isl::union_map union_set::lex_ge_union_set(isl::union_set uset2) const {
15125 auto res = isl_union_set_lex_ge_union_set(copy(), uset2.release());
15126 return manage(res);
15129 isl::union_map union_set::lex_gt_union_set(isl::union_set uset2) const {
15130 auto res = isl_union_set_lex_gt_union_set(copy(), uset2.release());
15131 return manage(res);
15134 isl::union_map union_set::lex_le_union_set(isl::union_set uset2) const {
15135 auto res = isl_union_set_lex_le_union_set(copy(), uset2.release());
15136 return manage(res);
15139 isl::union_map union_set::lex_lt_union_set(isl::union_set uset2) const {
15140 auto res = isl_union_set_lex_lt_union_set(copy(), uset2.release());
15141 return manage(res);
15144 isl::union_set union_set::lexmax() const {
15145 auto res = isl_union_set_lexmax(copy());
15146 return manage(res);
15149 isl::union_set union_set::lexmin() const {
15150 auto res = isl_union_set_lexmin(copy());
15151 return manage(res);
15154 isl::multi_val union_set::min_multi_union_pw_aff(const isl::multi_union_pw_aff &obj) const {
15155 auto res = isl_union_set_min_multi_union_pw_aff(get(), obj.get());
15156 return manage(res);
15159 isl::set union_set::params() const {
15160 auto res = isl_union_set_params(copy());
15161 return manage(res);
15164 isl::union_set union_set::polyhedral_hull() const {
15165 auto res = isl_union_set_polyhedral_hull(copy());
15166 return manage(res);
15169 isl::union_set union_set::preimage(isl::multi_aff ma) const {
15170 auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
15171 return manage(res);
15174 isl::union_set union_set::preimage(isl::pw_multi_aff pma) const {
15175 auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
15176 return manage(res);
15179 isl::union_set union_set::preimage(isl::union_pw_multi_aff upma) const {
15180 auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
15181 return manage(res);
15184 isl::union_set union_set::product(isl::union_set uset2) const {
15185 auto res = isl_union_set_product(copy(), uset2.release());
15186 return manage(res);
15189 isl::union_set union_set::project_out(isl::dim type, unsigned int first, unsigned int n) const {
15190 auto res = isl_union_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
15191 return manage(res);
15194 isl::union_set union_set::remove_divs() const {
15195 auto res = isl_union_set_remove_divs(copy());
15196 return manage(res);
15199 isl::union_set union_set::remove_redundancies() const {
15200 auto res = isl_union_set_remove_redundancies(copy());
15201 return manage(res);
15204 isl::union_set union_set::reset_user() const {
15205 auto res = isl_union_set_reset_user(copy());
15206 return manage(res);
15209 isl::basic_set union_set::sample() const {
15210 auto res = isl_union_set_sample(copy());
15211 return manage(res);
15214 isl::point union_set::sample_point() const {
15215 auto res = isl_union_set_sample_point(copy());
15216 return manage(res);
15219 isl::union_set union_set::simple_hull() const {
15220 auto res = isl_union_set_simple_hull(copy());
15221 return manage(res);
15224 isl::union_set union_set::solutions() const {
15225 auto res = isl_union_set_solutions(copy());
15226 return manage(res);
15229 isl::union_set union_set::subtract(isl::union_set uset2) const {
15230 auto res = isl_union_set_subtract(copy(), uset2.release());
15231 return manage(res);
15234 isl::union_set union_set::unite(isl::union_set uset2) const {
15235 auto res = isl_union_set_union(copy(), uset2.release());
15236 return manage(res);
15239 isl::union_set union_set::universe() const {
15240 auto res = isl_union_set_universe(copy());
15241 return manage(res);
15244 isl::union_map union_set::unwrap() const {
15245 auto res = isl_union_set_unwrap(copy());
15246 return manage(res);
15249 isl::union_map union_set::wrapped_domain_map() const {
15250 auto res = isl_union_set_wrapped_domain_map(copy());
15251 return manage(res);
15254 // implementations for isl::union_set_list
15255 isl::union_set_list manage(__isl_take isl_union_set_list *ptr) {
15256 return union_set_list(ptr);
15258 isl::union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
15259 return union_set_list(isl_union_set_list_copy(ptr));
15261 isl::union_set_list give(__isl_take isl_union_set_list *ptr) {
15262 return manage(ptr);
15266 union_set_list::union_set_list()
15267 : ptr(nullptr) {}
15269 union_set_list::union_set_list(const isl::union_set_list &obj)
15270 : ptr(obj.copy()) {}
15271 union_set_list::union_set_list(std::nullptr_t)
15272 : ptr(nullptr) {}
15275 union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
15276 : ptr(ptr) {}
15279 union_set_list &union_set_list::operator=(isl::union_set_list obj) {
15280 std::swap(this->ptr, obj.ptr);
15281 return *this;
15284 union_set_list::~union_set_list() {
15285 if (ptr)
15286 isl_union_set_list_free(ptr);
15289 __isl_give isl_union_set_list *union_set_list::copy() const & {
15290 return isl_union_set_list_copy(ptr);
15293 __isl_keep isl_union_set_list *union_set_list::get() const {
15294 return ptr;
15297 __isl_give isl_union_set_list *union_set_list::release() {
15298 isl_union_set_list *tmp = ptr;
15299 ptr = nullptr;
15300 return tmp;
15303 bool union_set_list::is_null() const {
15304 return ptr == nullptr;
15306 __isl_keep isl_union_set_list *union_set_list::keep() const {
15307 return get();
15310 __isl_give isl_union_set_list *union_set_list::take() {
15311 return release();
15314 union_set_list::operator bool() const {
15315 return !is_null();
15319 isl::ctx union_set_list::get_ctx() const {
15320 return isl::ctx(isl_union_set_list_get_ctx(ptr));
15323 void union_set_list::dump() const {
15324 isl_union_set_list_dump(get());
15329 // implementations for isl::val
15330 isl::val manage(__isl_take isl_val *ptr) {
15331 return val(ptr);
15333 isl::val manage_copy(__isl_keep isl_val *ptr) {
15334 return val(isl_val_copy(ptr));
15336 isl::val give(__isl_take isl_val *ptr) {
15337 return manage(ptr);
15341 val::val()
15342 : ptr(nullptr) {}
15344 val::val(const isl::val &obj)
15345 : ptr(obj.copy()) {}
15346 val::val(std::nullptr_t)
15347 : ptr(nullptr) {}
15350 val::val(__isl_take isl_val *ptr)
15351 : ptr(ptr) {}
15353 val::val(isl::ctx ctx, long i) {
15354 auto res = isl_val_int_from_si(ctx.release(), i);
15355 ptr = res;
15357 val::val(isl::ctx ctx, const std::string &str) {
15358 auto res = isl_val_read_from_str(ctx.release(), str.c_str());
15359 ptr = res;
15362 val &val::operator=(isl::val obj) {
15363 std::swap(this->ptr, obj.ptr);
15364 return *this;
15367 val::~val() {
15368 if (ptr)
15369 isl_val_free(ptr);
15372 __isl_give isl_val *val::copy() const & {
15373 return isl_val_copy(ptr);
15376 __isl_keep isl_val *val::get() const {
15377 return ptr;
15380 __isl_give isl_val *val::release() {
15381 isl_val *tmp = ptr;
15382 ptr = nullptr;
15383 return tmp;
15386 bool val::is_null() const {
15387 return ptr == nullptr;
15389 __isl_keep isl_val *val::keep() const {
15390 return get();
15393 __isl_give isl_val *val::take() {
15394 return release();
15397 val::operator bool() const {
15398 return !is_null();
15402 isl::ctx val::get_ctx() const {
15403 return isl::ctx(isl_val_get_ctx(ptr));
15405 std::string val::to_str() const {
15406 char *Tmp = isl_val_to_str(get());
15407 if (!Tmp)
15408 return "";
15409 std::string S(Tmp);
15410 free(Tmp);
15411 return S;
15415 void val::dump() const {
15416 isl_val_dump(get());
15420 isl::val val::two_exp() const {
15421 auto res = isl_val_2exp(copy());
15422 return manage(res);
15425 isl::val val::abs() const {
15426 auto res = isl_val_abs(copy());
15427 return manage(res);
15430 isl::boolean val::abs_eq(const isl::val &v2) const {
15431 auto res = isl_val_abs_eq(get(), v2.get());
15432 return manage(res);
15435 isl::val val::add(isl::val v2) const {
15436 auto res = isl_val_add(copy(), v2.release());
15437 return manage(res);
15440 isl::val val::add_ui(unsigned long v2) const {
15441 auto res = isl_val_add_ui(copy(), v2);
15442 return manage(res);
15445 isl::val val::ceil() const {
15446 auto res = isl_val_ceil(copy());
15447 return manage(res);
15450 int val::cmp_si(long i) const {
15451 auto res = isl_val_cmp_si(get(), i);
15452 return res;
15455 isl::val val::div(isl::val v2) const {
15456 auto res = isl_val_div(copy(), v2.release());
15457 return manage(res);
15460 isl::val val::div_ui(unsigned long v2) const {
15461 auto res = isl_val_div_ui(copy(), v2);
15462 return manage(res);
15465 isl::boolean val::eq(const isl::val &v2) const {
15466 auto res = isl_val_eq(get(), v2.get());
15467 return manage(res);
15470 isl::val val::floor() const {
15471 auto res = isl_val_floor(copy());
15472 return manage(res);
15475 isl::val val::gcd(isl::val v2) const {
15476 auto res = isl_val_gcd(copy(), v2.release());
15477 return manage(res);
15480 isl::boolean val::ge(const isl::val &v2) const {
15481 auto res = isl_val_ge(get(), v2.get());
15482 return manage(res);
15485 uint32_t val::get_hash() const {
15486 auto res = isl_val_get_hash(get());
15487 return res;
15490 long val::get_num_si() const {
15491 auto res = isl_val_get_num_si(get());
15492 return res;
15495 isl::boolean val::gt(const isl::val &v2) const {
15496 auto res = isl_val_gt(get(), v2.get());
15497 return manage(res);
15500 isl::val val::infty(isl::ctx ctx) {
15501 auto res = isl_val_infty(ctx.release());
15502 return manage(res);
15505 isl::val val::int_from_ui(isl::ctx ctx, unsigned long u) {
15506 auto res = isl_val_int_from_ui(ctx.release(), u);
15507 return manage(res);
15510 isl::val val::inv() const {
15511 auto res = isl_val_inv(copy());
15512 return manage(res);
15515 isl::boolean val::is_divisible_by(const isl::val &v2) const {
15516 auto res = isl_val_is_divisible_by(get(), v2.get());
15517 return manage(res);
15520 isl::boolean val::is_infty() const {
15521 auto res = isl_val_is_infty(get());
15522 return manage(res);
15525 isl::boolean val::is_int() const {
15526 auto res = isl_val_is_int(get());
15527 return manage(res);
15530 isl::boolean val::is_nan() const {
15531 auto res = isl_val_is_nan(get());
15532 return manage(res);
15535 isl::boolean val::is_neg() const {
15536 auto res = isl_val_is_neg(get());
15537 return manage(res);
15540 isl::boolean val::is_neginfty() const {
15541 auto res = isl_val_is_neginfty(get());
15542 return manage(res);
15545 isl::boolean val::is_negone() const {
15546 auto res = isl_val_is_negone(get());
15547 return manage(res);
15550 isl::boolean val::is_nonneg() const {
15551 auto res = isl_val_is_nonneg(get());
15552 return manage(res);
15555 isl::boolean val::is_nonpos() const {
15556 auto res = isl_val_is_nonpos(get());
15557 return manage(res);
15560 isl::boolean val::is_one() const {
15561 auto res = isl_val_is_one(get());
15562 return manage(res);
15565 isl::boolean val::is_pos() const {
15566 auto res = isl_val_is_pos(get());
15567 return manage(res);
15570 isl::boolean val::is_rat() const {
15571 auto res = isl_val_is_rat(get());
15572 return manage(res);
15575 isl::boolean val::is_zero() const {
15576 auto res = isl_val_is_zero(get());
15577 return manage(res);
15580 isl::boolean val::le(const isl::val &v2) const {
15581 auto res = isl_val_le(get(), v2.get());
15582 return manage(res);
15585 isl::boolean val::lt(const isl::val &v2) const {
15586 auto res = isl_val_lt(get(), v2.get());
15587 return manage(res);
15590 isl::val val::max(isl::val v2) const {
15591 auto res = isl_val_max(copy(), v2.release());
15592 return manage(res);
15595 isl::val val::min(isl::val v2) const {
15596 auto res = isl_val_min(copy(), v2.release());
15597 return manage(res);
15600 isl::val val::mod(isl::val v2) const {
15601 auto res = isl_val_mod(copy(), v2.release());
15602 return manage(res);
15605 isl::val val::mul(isl::val v2) const {
15606 auto res = isl_val_mul(copy(), v2.release());
15607 return manage(res);
15610 isl::val val::mul_ui(unsigned long v2) const {
15611 auto res = isl_val_mul_ui(copy(), v2);
15612 return manage(res);
15615 isl::val val::nan(isl::ctx ctx) {
15616 auto res = isl_val_nan(ctx.release());
15617 return manage(res);
15620 isl::boolean val::ne(const isl::val &v2) const {
15621 auto res = isl_val_ne(get(), v2.get());
15622 return manage(res);
15625 isl::val val::neg() const {
15626 auto res = isl_val_neg(copy());
15627 return manage(res);
15630 isl::val val::neginfty(isl::ctx ctx) {
15631 auto res = isl_val_neginfty(ctx.release());
15632 return manage(res);
15635 isl::val val::negone(isl::ctx ctx) {
15636 auto res = isl_val_negone(ctx.release());
15637 return manage(res);
15640 isl::val val::one(isl::ctx ctx) {
15641 auto res = isl_val_one(ctx.release());
15642 return manage(res);
15645 isl::val val::set_si(long i) const {
15646 auto res = isl_val_set_si(copy(), i);
15647 return manage(res);
15650 int val::sgn() const {
15651 auto res = isl_val_sgn(get());
15652 return res;
15655 isl::val val::sub(isl::val v2) const {
15656 auto res = isl_val_sub(copy(), v2.release());
15657 return manage(res);
15660 isl::val val::sub_ui(unsigned long v2) const {
15661 auto res = isl_val_sub_ui(copy(), v2);
15662 return manage(res);
15665 isl::val val::trunc() const {
15666 auto res = isl_val_trunc(copy());
15667 return manage(res);
15670 isl::val val::zero(isl::ctx ctx) {
15671 auto res = isl_val_zero(ctx.release());
15672 return manage(res);
15675 // implementations for isl::val_list
15676 isl::val_list manage(__isl_take isl_val_list *ptr) {
15677 return val_list(ptr);
15679 isl::val_list manage_copy(__isl_keep isl_val_list *ptr) {
15680 return val_list(isl_val_list_copy(ptr));
15682 isl::val_list give(__isl_take isl_val_list *ptr) {
15683 return manage(ptr);
15687 val_list::val_list()
15688 : ptr(nullptr) {}
15690 val_list::val_list(const isl::val_list &obj)
15691 : ptr(obj.copy()) {}
15692 val_list::val_list(std::nullptr_t)
15693 : ptr(nullptr) {}
15696 val_list::val_list(__isl_take isl_val_list *ptr)
15697 : ptr(ptr) {}
15700 val_list &val_list::operator=(isl::val_list obj) {
15701 std::swap(this->ptr, obj.ptr);
15702 return *this;
15705 val_list::~val_list() {
15706 if (ptr)
15707 isl_val_list_free(ptr);
15710 __isl_give isl_val_list *val_list::copy() const & {
15711 return isl_val_list_copy(ptr);
15714 __isl_keep isl_val_list *val_list::get() const {
15715 return ptr;
15718 __isl_give isl_val_list *val_list::release() {
15719 isl_val_list *tmp = ptr;
15720 ptr = nullptr;
15721 return tmp;
15724 bool val_list::is_null() const {
15725 return ptr == nullptr;
15727 __isl_keep isl_val_list *val_list::keep() const {
15728 return get();
15731 __isl_give isl_val_list *val_list::take() {
15732 return release();
15735 val_list::operator bool() const {
15736 return !is_null();
15740 isl::ctx val_list::get_ctx() const {
15741 return isl::ctx(isl_val_list_get_ctx(ptr));
15744 void val_list::dump() const {
15745 isl_val_list_dump(get());
15750 // implementations for isl::vec
15751 isl::vec manage(__isl_take isl_vec *ptr) {
15752 return vec(ptr);
15754 isl::vec manage_copy(__isl_keep isl_vec *ptr) {
15755 return vec(isl_vec_copy(ptr));
15757 isl::vec give(__isl_take isl_vec *ptr) {
15758 return manage(ptr);
15762 vec::vec()
15763 : ptr(nullptr) {}
15765 vec::vec(const isl::vec &obj)
15766 : ptr(obj.copy()) {}
15767 vec::vec(std::nullptr_t)
15768 : ptr(nullptr) {}
15771 vec::vec(__isl_take isl_vec *ptr)
15772 : ptr(ptr) {}
15775 vec &vec::operator=(isl::vec obj) {
15776 std::swap(this->ptr, obj.ptr);
15777 return *this;
15780 vec::~vec() {
15781 if (ptr)
15782 isl_vec_free(ptr);
15785 __isl_give isl_vec *vec::copy() const & {
15786 return isl_vec_copy(ptr);
15789 __isl_keep isl_vec *vec::get() const {
15790 return ptr;
15793 __isl_give isl_vec *vec::release() {
15794 isl_vec *tmp = ptr;
15795 ptr = nullptr;
15796 return tmp;
15799 bool vec::is_null() const {
15800 return ptr == nullptr;
15802 __isl_keep isl_vec *vec::keep() const {
15803 return get();
15806 __isl_give isl_vec *vec::take() {
15807 return release();
15810 vec::operator bool() const {
15811 return !is_null();
15815 isl::ctx vec::get_ctx() const {
15816 return isl::ctx(isl_vec_get_ctx(ptr));
15819 void vec::dump() const {
15820 isl_vec_dump(get());
15824 isl::vec vec::add(isl::vec vec2) const {
15825 auto res = isl_vec_add(copy(), vec2.release());
15826 return manage(res);
15829 isl::vec vec::alloc(isl::ctx ctx, unsigned int size) {
15830 auto res = isl_vec_alloc(ctx.release(), size);
15831 return manage(res);
15834 isl::vec vec::ceil() const {
15835 auto res = isl_vec_ceil(copy());
15836 return manage(res);
15839 isl::vec vec::clr() const {
15840 auto res = isl_vec_clr(copy());
15841 return manage(res);
15844 int vec::cmp_element(const isl::vec &vec2, int pos) const {
15845 auto res = isl_vec_cmp_element(get(), vec2.get(), pos);
15846 return res;
15849 isl::vec vec::concat(isl::vec vec2) const {
15850 auto res = isl_vec_concat(copy(), vec2.release());
15851 return manage(res);
15854 isl::vec vec::drop_els(unsigned int pos, unsigned int n) const {
15855 auto res = isl_vec_drop_els(copy(), pos, n);
15856 return manage(res);
15859 isl::vec vec::extend(unsigned int size) const {
15860 auto res = isl_vec_extend(copy(), size);
15861 return manage(res);
15864 isl::val vec::get_element_val(int pos) const {
15865 auto res = isl_vec_get_element_val(get(), pos);
15866 return manage(res);
15869 isl::vec vec::insert_els(unsigned int pos, unsigned int n) const {
15870 auto res = isl_vec_insert_els(copy(), pos, n);
15871 return manage(res);
15874 isl::vec vec::insert_zero_els(unsigned int pos, unsigned int n) const {
15875 auto res = isl_vec_insert_zero_els(copy(), pos, n);
15876 return manage(res);
15879 isl::boolean vec::is_equal(const isl::vec &vec2) const {
15880 auto res = isl_vec_is_equal(get(), vec2.get());
15881 return manage(res);
15884 isl::vec vec::mat_product(isl::mat mat) const {
15885 auto res = isl_vec_mat_product(copy(), mat.release());
15886 return manage(res);
15889 isl::vec vec::move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const {
15890 auto res = isl_vec_move_els(copy(), dst_col, src_col, n);
15891 return manage(res);
15894 isl::vec vec::neg() const {
15895 auto res = isl_vec_neg(copy());
15896 return manage(res);
15899 isl::vec vec::set_element_si(int pos, int v) const {
15900 auto res = isl_vec_set_element_si(copy(), pos, v);
15901 return manage(res);
15904 isl::vec vec::set_element_val(int pos, isl::val v) const {
15905 auto res = isl_vec_set_element_val(copy(), pos, v.release());
15906 return manage(res);
15909 isl::vec vec::set_si(int v) const {
15910 auto res = isl_vec_set_si(copy(), v);
15911 return manage(res);
15914 isl::vec vec::set_val(isl::val v) const {
15915 auto res = isl_vec_set_val(copy(), v.release());
15916 return manage(res);
15919 int vec::size() const {
15920 auto res = isl_vec_size(get());
15921 return res;
15924 isl::vec vec::sort() const {
15925 auto res = isl_vec_sort(copy());
15926 return manage(res);
15928 } // namespace noexceptions
15929 } // namespace isl
15931 #endif /* ISL_CPP_NOEXCEPTIONS */