Polly 23.0.0git
cpp-checked.h
Go to the documentation of this file.
1/// These are automatically generated checked C++ bindings for isl.
2///
3/// isl is a library for computing with integer sets and maps described by
4/// Presburger formulas. On top of this, isl provides various tools for
5/// polyhedral compilation, ranging from dependence analysis over scheduling
6/// to AST generation.
7
8#ifndef ISL_CPP_CHECKED
9#define ISL_CPP_CHECKED
10
11#include <stdio.h>
12#include <stdlib.h>
13
14#include <functional>
15#include <memory>
16#include <ostream>
17#include <string>
18#include <type_traits>
19
20#if __cplusplus >= 201703L
21#include <any>
22#include <optional>
23#endif
24
25namespace isl {
26namespace checked {
27
28#define ISLPP_STRINGIZE_(X) #X
29#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
30
31#define ISLPP_ASSERT(test, message) \
32 do { \
33 if (test) \
34 break; \
35 fputs("Assertion \"" #test "\" failed at " __FILE__ \
36 ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
37 stderr); \
38 abort(); \
39 } while (0)
40
41/* Class used to check that isl::checked::boolean,
42 * isl::checked::stat and isl::checked::size values are checked for errors.
43 */
44struct checker {
45 bool checked = false;
47 ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
48 }
49};
50
51class boolean {
52private:
53 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
55
56 friend boolean manage(isl_bool val);
58public:
59 static boolean error() {
60 return boolean(isl_bool_error);
61 }
64
65 /* implicit */ boolean(bool val)
67
69 auto tmp = val;
71 check->checked = true;
72 return tmp;
73 }
74
75 bool is_error() const { check->checked = true; return val == isl_bool_error; }
76 bool is_false() const { check->checked = true; return val == isl_bool_false; }
77 bool is_true() const { check->checked = true; return val == isl_bool_true; }
78
79 explicit operator bool() const {
80 ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
81 ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
82 return is_true();
83 }
84
85 boolean negate() {
86 if (val == isl_bool_true)
88 else if (val == isl_bool_false)
90 return *this;
91 }
92
93 boolean operator!() const {
94 return boolean(*this).negate();
95 }
96};
97
98inline boolean manage(isl_bool val) {
99 return boolean(val);
100}
101
102class ctx {
104public:
105 /* implicit */ ctx(isl_ctx *ctx) : ptr(ctx) {}
107 auto tmp = ptr;
108 ptr = nullptr;
109 return tmp;
110 }
112 return ptr;
113 }
114#if __cplusplus >= 201703L
115 static void free_user(void *user) {
116 std::any *p = static_cast<std::any *>(user);
117 delete p;
118 }
119#endif
120};
121
122/* Class encapsulating an isl_stat value.
123 */
124class stat {
125private:
126 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
128
129 friend stat manage(isl_stat val);
131public:
132 static stat ok() {
133 return stat(isl_stat_ok);
134 }
135 static stat error() {
136 return stat(isl_stat_error);
137 }
139
141 check->checked = true;
142 return val;
143 }
144
145 bool is_error() const {
146 check->checked = true;
147 return val == isl_stat_error;
148 }
149 bool is_ok() const {
150 check->checked = true;
151 return val == isl_stat_ok;
152 }
153};
154
156{
157 return stat(val);
158}
159
160/* Class encapsulating an isl_size value.
161 */
162class size {
163private:
164 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
166
167 friend size manage(isl_size val);
169public:
171
173 auto tmp = val;
175 check->checked = true;
176 return tmp;
177 }
178
179 bool is_error() const {
180 check->checked = true;
181 return val == isl_size_error;
182 }
183
184 explicit operator unsigned() const {
185 ISLPP_ASSERT(check->checked,
186 "IMPLEMENTATION ERROR: Unchecked error state");
188 "IMPLEMENTATION ERROR: Unhandled error state");
189 return val;
190 }
191};
192
194{
195 return size(val);
196}
197
198}
199} // namespace isl
200
201#include <isl/id.h>
202#include <isl/id_to_id.h>
203#include <isl/space.h>
204#include <isl/val.h>
205#include <isl/aff.h>
206#include <isl/set.h>
207#include <isl/map.h>
208#include <isl/ilp.h>
209#include <isl/union_set.h>
210#include <isl/union_map.h>
211#include <isl/flow.h>
212#include <isl/schedule.h>
213#include <isl/schedule_node.h>
214#include <isl/ast_build.h>
215#include <isl/fixed_box.h>
216
217namespace isl {
218
219namespace checked {
220
221// forward declarations
222class aff;
223class aff_list;
224class ast_build;
225class ast_expr;
226class ast_expr_id;
227class ast_expr_int;
228class ast_expr_op;
229class ast_expr_op_access;
230class ast_expr_op_add;
231class ast_expr_op_address_of;
232class ast_expr_op_and;
233class ast_expr_op_and_then;
234class ast_expr_op_call;
235class ast_expr_op_cond;
236class ast_expr_op_div;
237class ast_expr_op_eq;
238class ast_expr_op_fdiv_q;
239class ast_expr_op_ge;
240class ast_expr_op_gt;
241class ast_expr_op_le;
242class ast_expr_op_lt;
243class ast_expr_op_max;
244class ast_expr_op_member;
245class ast_expr_op_min;
246class ast_expr_op_minus;
247class ast_expr_op_mul;
248class ast_expr_op_or;
249class ast_expr_op_or_else;
250class ast_expr_op_pdiv_q;
251class ast_expr_op_pdiv_r;
252class ast_expr_op_select;
253class ast_expr_op_sub;
254class ast_expr_op_zdiv_r;
255class ast_node;
256class ast_node_block;
257class ast_node_for;
258class ast_node_if;
259class ast_node_list;
260class ast_node_mark;
261class ast_node_user;
262class basic_map;
263class basic_set;
264class fixed_box;
265class id;
266class id_list;
267class id_to_ast_expr;
268class id_to_id;
269class map;
270class map_list;
271class multi_aff;
272class multi_id;
273class multi_pw_aff;
274class multi_union_pw_aff;
275class multi_val;
276class point;
277class pw_aff;
278class pw_aff_list;
279class pw_multi_aff;
280class pw_multi_aff_list;
281class schedule;
282class schedule_constraints;
283class schedule_node;
284class schedule_node_band;
285class schedule_node_context;
286class schedule_node_domain;
287class schedule_node_expansion;
288class schedule_node_extension;
289class schedule_node_filter;
290class schedule_node_guard;
291class schedule_node_leaf;
292class schedule_node_mark;
293class schedule_node_sequence;
294class schedule_node_set;
295class set;
296class set_list;
297class space;
298class union_access_info;
299class union_flow;
300class union_map;
301class union_pw_aff;
302class union_pw_aff_list;
303class union_pw_multi_aff;
304class union_set;
305class union_set_list;
306class val;
307class val_list;
308
309// declarations for isl::aff
310inline aff manage(__isl_take isl_aff *ptr);
311inline aff manage_copy(__isl_keep isl_aff *ptr);
312
313class aff {
314 friend inline aff manage(__isl_take isl_aff *ptr);
315 friend inline aff manage_copy(__isl_keep isl_aff *ptr);
316
317 protected:
318 isl_aff *ptr = nullptr;
319
320 inline explicit aff(__isl_take isl_aff *ptr);
321
322 public:
323 inline /* implicit */ aff();
324 inline /* implicit */ aff(const aff &obj);
325 inline explicit aff(isl::checked::ctx ctx, const std::string &str);
326 inline aff &operator=(aff obj);
327 inline ~aff();
328 inline __isl_give isl_aff *copy() const &;
329 inline __isl_give isl_aff *copy() && = delete;
330 inline __isl_keep isl_aff *get() const;
331 inline __isl_give isl_aff *release();
332 inline bool is_null() const;
333 inline isl::checked::ctx ctx() const;
334
335 inline isl::checked::aff add(isl::checked::aff aff2) const;
336 inline isl::checked::multi_aff add(const isl::checked::multi_aff &multi2) const;
337 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
338 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
339 inline isl::checked::pw_aff add(const isl::checked::pw_aff &pwaff2) const;
340 inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
341 inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
342 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
343 inline isl::checked::aff add_constant(isl::checked::val v) const;
344 inline isl::checked::aff add_constant(long v) const;
345 inline isl::checked::multi_aff add_constant(const isl::checked::multi_val &mv) const;
346 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
347 inline isl::checked::aff as_aff() const;
348 inline isl::checked::map as_map() const;
349 inline isl::checked::multi_aff as_multi_aff() const;
351 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
352 inline isl::checked::set as_set() const;
353 inline isl::checked::union_map as_union_map() const;
354 inline isl::checked::aff at(int pos) const;
355 inline isl::checked::basic_set bind(isl::checked::id id) const;
356 inline isl::checked::basic_set bind(const std::string &id) const;
357 inline isl::checked::basic_set bind(const isl::checked::multi_id &tuple) const;
358 inline isl::checked::pw_aff bind_domain(const isl::checked::multi_id &tuple) const;
360 inline isl::checked::aff ceil() const;
361 inline isl::checked::pw_aff coalesce() const;
362 inline isl::checked::pw_aff cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const;
363 inline isl::checked::multi_val constant_multi_val() const;
364 inline isl::checked::val constant_val() const;
365 inline isl::checked::val get_constant_val() const;
366 inline isl::checked::aff div(isl::checked::aff aff2) const;
367 inline isl::checked::pw_aff div(const isl::checked::pw_aff &pa2) const;
368 inline isl::checked::set domain() const;
369 inline isl::checked::aff domain_reverse() const;
370 inline isl::checked::pw_aff drop_unused_params() const;
371 inline isl::checked::set eq_set(isl::checked::aff aff2) const;
372 inline isl::checked::set eq_set(const isl::checked::pw_aff &pwaff2) const;
373 inline isl::checked::val eval(isl::checked::point pnt) const;
375 inline isl::checked::multi_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
376 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
378 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
380 inline isl::checked::aff floor() const;
381 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
382 inline isl::checked::set ge_set(isl::checked::aff aff2) const;
383 inline isl::checked::set ge_set(const isl::checked::pw_aff &pwaff2) const;
384 inline isl::checked::aff gist(isl::checked::set context) const;
385 inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
386 inline isl::checked::aff gist(const isl::checked::basic_set &context) const;
387 inline isl::checked::aff gist(const isl::checked::point &context) const;
388 inline isl::checked::aff gist_params(isl::checked::set context) const;
389 inline isl::checked::set gt_set(isl::checked::aff aff2) const;
390 inline isl::checked::set gt_set(const isl::checked::pw_aff &pwaff2) const;
391 inline boolean has_range_tuple_id() const;
392 inline isl::checked::multi_aff identity() const;
393 inline isl::checked::pw_aff insert_domain(const isl::checked::space &domain) const;
394 inline isl::checked::pw_aff intersect_domain(const isl::checked::set &set) const;
396 inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
399 inline isl::checked::pw_aff intersect_params(const isl::checked::set &set) const;
400 inline boolean involves_locals() const;
401 inline boolean involves_nan() const;
402 inline boolean involves_param(const isl::checked::id &id) const;
403 inline boolean involves_param(const std::string &id) const;
404 inline boolean involves_param(const isl::checked::id_list &list) const;
405 inline boolean is_cst() const;
406 inline boolean isa_aff() const;
407 inline boolean isa_multi_aff() const;
408 inline boolean isa_pw_multi_aff() const;
409 inline isl::checked::set le_set(isl::checked::aff aff2) const;
410 inline isl::checked::set le_set(const isl::checked::pw_aff &pwaff2) const;
411 inline isl::checked::aff_list list() const;
412 inline isl::checked::set lt_set(isl::checked::aff aff2) const;
413 inline isl::checked::set lt_set(const isl::checked::pw_aff &pwaff2) const;
414 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
415 inline isl::checked::pw_aff max(const isl::checked::pw_aff &pwaff2) const;
416 inline isl::checked::multi_val max_multi_val() const;
417 inline isl::checked::val max_val() const;
418 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
419 inline isl::checked::pw_aff min(const isl::checked::pw_aff &pwaff2) const;
420 inline isl::checked::multi_val min_multi_val() const;
421 inline isl::checked::val min_val() const;
422 inline isl::checked::aff mod(isl::checked::val mod) const;
423 inline isl::checked::aff mod(long mod) const;
424 inline isl::checked::aff mul(isl::checked::aff aff2) const;
425 inline isl::checked::pw_aff mul(const isl::checked::pw_aff &pwaff2) const;
426 inline class size n_piece() const;
427 inline isl::checked::set ne_set(isl::checked::aff aff2) const;
428 inline isl::checked::set ne_set(const isl::checked::pw_aff &pwaff2) const;
429 inline isl::checked::aff neg() const;
430 inline isl::checked::set params() const;
431 inline boolean plain_is_empty() const;
432 inline boolean plain_is_equal(const isl::checked::aff &aff2) const;
433 inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
434 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
435 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
436 inline boolean plain_is_equal(const isl::checked::pw_aff &pwaff2) const;
437 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
438 inline boolean plain_is_equal(const isl::checked::union_pw_aff &upa2) const;
439 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
442 inline isl::checked::multi_aff product(const isl::checked::multi_aff &multi2) const;
443 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
444 inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
445 inline isl::checked::aff pullback(isl::checked::multi_aff ma) const;
446 inline isl::checked::pw_aff pullback(const isl::checked::multi_pw_aff &mpa) const;
447 inline isl::checked::pw_aff pullback(const isl::checked::pw_multi_aff &pma) const;
448 inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
449 inline isl::checked::aff pullback(const isl::checked::aff &ma) const;
453 inline isl::checked::multi_aff range_product(const isl::checked::multi_aff &multi2) const;
454 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
456 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
458 inline isl::checked::id range_tuple_id() const;
459 inline isl::checked::multi_aff reset_range_tuple_id() const;
460 inline isl::checked::aff scale(isl::checked::val v) const;
461 inline isl::checked::aff scale(long v) const;
462 inline isl::checked::multi_aff scale(const isl::checked::multi_val &mv) const;
463 inline isl::checked::aff scale_down(isl::checked::val v) const;
464 inline isl::checked::aff scale_down(long v) const;
465 inline isl::checked::multi_aff scale_down(const isl::checked::multi_val &mv) const;
466 inline isl::checked::multi_aff set_at(int pos, const isl::checked::aff &el) const;
467 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
468 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
469 inline isl::checked::multi_aff set_range_tuple(const isl::checked::id &id) const;
470 inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
471 inline class size size() const;
472 inline isl::checked::space space() const;
473 inline isl::checked::aff sub(isl::checked::aff aff2) const;
474 inline isl::checked::multi_aff sub(const isl::checked::multi_aff &multi2) const;
475 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
476 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
477 inline isl::checked::pw_aff sub(const isl::checked::pw_aff &pwaff2) const;
478 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
479 inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
480 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
481 inline isl::checked::pw_aff subtract_domain(const isl::checked::set &set) const;
482 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
483 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
484 inline isl::checked::pw_aff tdiv_q(const isl::checked::pw_aff &pa2) const;
485 inline isl::checked::pw_aff tdiv_r(const isl::checked::pw_aff &pa2) const;
486 inline isl::checked::aff_list to_list() const;
487 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
489 inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
490 inline isl::checked::union_pw_aff to_union_pw_aff() const;
493 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
495 inline isl::checked::pw_aff union_add(const isl::checked::pw_aff &pwaff2) const;
496 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
497 inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
499 static inline isl::checked::aff zero_on_domain(isl::checked::space space);
500};
501
502// declarations for isl::aff_list
503inline aff_list manage(__isl_take isl_aff_list *ptr);
504inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
505
506class aff_list {
507 friend inline aff_list manage(__isl_take isl_aff_list *ptr);
508 friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
509
510 protected:
511 isl_aff_list *ptr = nullptr;
512
513 inline explicit aff_list(__isl_take isl_aff_list *ptr);
514
515 public:
516 inline /* implicit */ aff_list();
517 inline /* implicit */ aff_list(const aff_list &obj);
518 inline explicit aff_list(isl::checked::ctx ctx, int n);
519 inline explicit aff_list(isl::checked::aff el);
520 inline explicit aff_list(isl::checked::ctx ctx, const std::string &str);
522 inline ~aff_list();
523 inline __isl_give isl_aff_list *copy() const &;
524 inline __isl_give isl_aff_list *copy() && = delete;
525 inline __isl_keep isl_aff_list *get() const;
526 inline __isl_give isl_aff_list *release();
527 inline bool is_null() const;
528 inline isl::checked::ctx ctx() const;
529
530 inline isl::checked::aff_list add(isl::checked::aff el) const;
531 inline isl::checked::aff at(int index) const;
532 inline isl::checked::aff get_at(int index) const;
533 inline isl::checked::aff_list clear() const;
534 inline isl::checked::aff_list concat(isl::checked::aff_list list2) const;
535 inline isl::checked::aff_list drop(unsigned int first, unsigned int n) const;
536 inline stat foreach(const std::function<stat(isl::checked::aff)> &fn) const;
537 inline stat foreach_scc(const std::function<boolean(isl::checked::aff, isl::checked::aff)> &follows, const std::function<stat(isl::checked::aff_list)> &fn) const;
538 inline isl::checked::aff_list insert(unsigned int pos, isl::checked::aff el) const;
539 inline isl::checked::aff_list set_at(int index, isl::checked::aff el) const;
540 inline class size size() const;
541};
542
543// declarations for isl::ast_build
546
550
551 protected:
552 isl_ast_build *ptr = nullptr;
553
554 inline explicit ast_build(__isl_take isl_ast_build *ptr);
555
556 public:
557 inline /* implicit */ ast_build();
558 inline /* implicit */ ast_build(const ast_build &obj);
559 inline explicit ast_build(isl::checked::ctx ctx);
561 inline ~ast_build();
562 inline __isl_give isl_ast_build *copy() const &;
563 inline __isl_give isl_ast_build *copy() && = delete;
564 inline __isl_keep isl_ast_build *get() const;
566 inline bool is_null() const;
567 inline isl::checked::ctx ctx() const;
568
569 private:
570 inline ast_build &copy_callbacks(const ast_build &obj);
574 std::shared_ptr<at_each_domain_data> at_each_domain_data;
575 static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
577 public:
588 inline isl::checked::union_map schedule() const;
590};
591
592// declarations for isl::ast_expr
595
596class ast_expr {
597 friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
599
600 protected:
601 isl_ast_expr *ptr = nullptr;
602
603 inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
604
605 public:
606 inline /* implicit */ ast_expr();
607 inline /* implicit */ ast_expr(const ast_expr &obj);
609 inline ~ast_expr();
610 inline __isl_give isl_ast_expr *copy() const &;
611 inline __isl_give isl_ast_expr *copy() && = delete;
612 inline __isl_keep isl_ast_expr *get() const;
614 inline bool is_null() const;
615 private:
616 template <typename T,
617 typename = typename std::enable_if<std::is_same<
618 const decltype(isl_ast_expr_get_type(NULL)),
619 const T>::value>::type>
620 inline boolean isa_type(T subtype) const;
621 public:
622 template <class T> inline boolean isa() const;
623 template <class T> inline T as() const;
624 inline isl::checked::ctx ctx() const;
625
626 inline std::string to_C_str() const;
627};
628
629// declarations for isl::ast_expr_id
630
631class ast_expr_id : public ast_expr {
632 template <class T>
633 friend boolean ast_expr::isa() const;
635 static const auto type = isl_ast_expr_id;
636
637 protected:
638 inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
639
640 public:
641 inline /* implicit */ ast_expr_id();
642 inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
644 inline isl::checked::ctx ctx() const;
645
646 inline isl::checked::id id() const;
647 inline isl::checked::id get_id() const;
648};
649
650// declarations for isl::ast_expr_int
651
652class ast_expr_int : public ast_expr {
653 template <class T>
654 friend boolean ast_expr::isa() const;
656 static const auto type = isl_ast_expr_int;
657
658 protected:
659 inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
660
661 public:
662 inline /* implicit */ ast_expr_int();
663 inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
665 inline isl::checked::ctx ctx() const;
666
667 inline isl::checked::val val() const;
668 inline isl::checked::val get_val() const;
669};
670
671// declarations for isl::ast_expr_op
672
673class ast_expr_op : public ast_expr {
674 template <class T>
675 friend boolean ast_expr::isa() const;
677 static const auto type = isl_ast_expr_op;
678
679 protected:
680 inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
681
682 public:
683 inline /* implicit */ ast_expr_op();
684 inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
686 private:
687 template <typename T,
688 typename = typename std::enable_if<std::is_same<
689 const decltype(isl_ast_expr_op_get_type(NULL)),
690 const T>::value>::type>
691 inline boolean isa_type(T subtype) const;
692 public:
693 template <class T> inline boolean isa() const;
694 template <class T> inline T as() const;
695 inline isl::checked::ctx ctx() const;
696
697 inline isl::checked::ast_expr arg(int pos) const;
698 inline isl::checked::ast_expr get_arg(int pos) const;
699 inline class size n_arg() const;
700 inline class size get_n_arg() const;
701};
702
703// declarations for isl::ast_expr_op_access
704
706 template <class T>
707 friend boolean ast_expr_op::isa() const;
709 static const auto type = isl_ast_expr_op_access;
710
711 protected:
713
714 public:
715 inline /* implicit */ ast_expr_op_access();
716 inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
718 inline isl::checked::ctx ctx() const;
719
720};
721
722// declarations for isl::ast_expr_op_add
723
725 template <class T>
726 friend boolean ast_expr_op::isa() const;
728 static const auto type = isl_ast_expr_op_add;
729
730 protected:
731 inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
732
733 public:
734 inline /* implicit */ ast_expr_op_add();
735 inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
737 inline isl::checked::ctx ctx() const;
738
739};
740
741// declarations for isl::ast_expr_op_address_of
742
744 template <class T>
745 friend boolean ast_expr_op::isa() const;
747 static const auto type = isl_ast_expr_op_address_of;
748
749 protected:
751
752 public:
753 inline /* implicit */ ast_expr_op_address_of();
754 inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
756 inline isl::checked::ctx ctx() const;
757
758};
759
760// declarations for isl::ast_expr_op_and
761
763 template <class T>
764 friend boolean ast_expr_op::isa() const;
766 static const auto type = isl_ast_expr_op_and;
767
768 protected:
769 inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
770
771 public:
772 inline /* implicit */ ast_expr_op_and();
773 inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
775 inline isl::checked::ctx ctx() const;
776
777};
778
779// declarations for isl::ast_expr_op_and_then
780
782 template <class T>
783 friend boolean ast_expr_op::isa() const;
785 static const auto type = isl_ast_expr_op_and_then;
786
787 protected:
789
790 public:
791 inline /* implicit */ ast_expr_op_and_then();
792 inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
794 inline isl::checked::ctx ctx() const;
795
796};
797
798// declarations for isl::ast_expr_op_call
799
801 template <class T>
802 friend boolean ast_expr_op::isa() const;
804 static const auto type = isl_ast_expr_op_call;
805
806 protected:
808
809 public:
810 inline /* implicit */ ast_expr_op_call();
811 inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
813 inline isl::checked::ctx ctx() const;
814
815};
816
817// declarations for isl::ast_expr_op_cond
818
820 template <class T>
821 friend boolean ast_expr_op::isa() const;
823 static const auto type = isl_ast_expr_op_cond;
824
825 protected:
827
828 public:
829 inline /* implicit */ ast_expr_op_cond();
830 inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
832 inline isl::checked::ctx ctx() const;
833
834};
835
836// declarations for isl::ast_expr_op_div
837
839 template <class T>
840 friend boolean ast_expr_op::isa() const;
842 static const auto type = isl_ast_expr_op_div;
843
844 protected:
845 inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
846
847 public:
848 inline /* implicit */ ast_expr_op_div();
849 inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
851 inline isl::checked::ctx ctx() const;
852
853};
854
855// declarations for isl::ast_expr_op_eq
856
858 template <class T>
859 friend boolean ast_expr_op::isa() const;
861 static const auto type = isl_ast_expr_op_eq;
862
863 protected:
864 inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
865
866 public:
867 inline /* implicit */ ast_expr_op_eq();
868 inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
870 inline isl::checked::ctx ctx() const;
871
872};
873
874// declarations for isl::ast_expr_op_fdiv_q
875
877 template <class T>
878 friend boolean ast_expr_op::isa() const;
880 static const auto type = isl_ast_expr_op_fdiv_q;
881
882 protected:
884
885 public:
886 inline /* implicit */ ast_expr_op_fdiv_q();
887 inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
889 inline isl::checked::ctx ctx() const;
890
891};
892
893// declarations for isl::ast_expr_op_ge
894
896 template <class T>
897 friend boolean ast_expr_op::isa() const;
899 static const auto type = isl_ast_expr_op_ge;
900
901 protected:
902 inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
903
904 public:
905 inline /* implicit */ ast_expr_op_ge();
906 inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
908 inline isl::checked::ctx ctx() const;
909
910};
911
912// declarations for isl::ast_expr_op_gt
913
915 template <class T>
916 friend boolean ast_expr_op::isa() const;
918 static const auto type = isl_ast_expr_op_gt;
919
920 protected:
921 inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
922
923 public:
924 inline /* implicit */ ast_expr_op_gt();
925 inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
927 inline isl::checked::ctx ctx() const;
928
929};
930
931// declarations for isl::ast_expr_op_le
932
934 template <class T>
935 friend boolean ast_expr_op::isa() const;
937 static const auto type = isl_ast_expr_op_le;
938
939 protected:
940 inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
941
942 public:
943 inline /* implicit */ ast_expr_op_le();
944 inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
946 inline isl::checked::ctx ctx() const;
947
948};
949
950// declarations for isl::ast_expr_op_lt
951
953 template <class T>
954 friend boolean ast_expr_op::isa() const;
956 static const auto type = isl_ast_expr_op_lt;
957
958 protected:
959 inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
960
961 public:
962 inline /* implicit */ ast_expr_op_lt();
963 inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
965 inline isl::checked::ctx ctx() const;
966
967};
968
969// declarations for isl::ast_expr_op_max
970
972 template <class T>
973 friend boolean ast_expr_op::isa() const;
975 static const auto type = isl_ast_expr_op_max;
976
977 protected:
978 inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
979
980 public:
981 inline /* implicit */ ast_expr_op_max();
982 inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
984 inline isl::checked::ctx ctx() const;
985
986};
987
988// declarations for isl::ast_expr_op_member
989
991 template <class T>
992 friend boolean ast_expr_op::isa() const;
994 static const auto type = isl_ast_expr_op_member;
995
996 protected:
998
999 public:
1000 inline /* implicit */ ast_expr_op_member();
1001 inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
1003 inline isl::checked::ctx ctx() const;
1004
1005};
1006
1007// declarations for isl::ast_expr_op_min
1008
1010 template <class T>
1011 friend boolean ast_expr_op::isa() const;
1013 static const auto type = isl_ast_expr_op_min;
1014
1015 protected:
1016 inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
1017
1018 public:
1019 inline /* implicit */ ast_expr_op_min();
1020 inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
1022 inline isl::checked::ctx ctx() const;
1023
1024};
1025
1026// declarations for isl::ast_expr_op_minus
1027
1029 template <class T>
1030 friend boolean ast_expr_op::isa() const;
1032 static const auto type = isl_ast_expr_op_minus;
1033
1034 protected:
1035 inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
1036
1037 public:
1038 inline /* implicit */ ast_expr_op_minus();
1039 inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
1041 inline isl::checked::ctx ctx() const;
1042
1043};
1044
1045// declarations for isl::ast_expr_op_mul
1046
1048 template <class T>
1049 friend boolean ast_expr_op::isa() const;
1051 static const auto type = isl_ast_expr_op_mul;
1052
1053 protected:
1054 inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
1055
1056 public:
1057 inline /* implicit */ ast_expr_op_mul();
1058 inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
1060 inline isl::checked::ctx ctx() const;
1061
1062};
1063
1064// declarations for isl::ast_expr_op_or
1065
1067 template <class T>
1068 friend boolean ast_expr_op::isa() const;
1070 static const auto type = isl_ast_expr_op_or;
1071
1072 protected:
1073 inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
1074
1075 public:
1076 inline /* implicit */ ast_expr_op_or();
1077 inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
1079 inline isl::checked::ctx ctx() const;
1080
1081};
1082
1083// declarations for isl::ast_expr_op_or_else
1084
1086 template <class T>
1087 friend boolean ast_expr_op::isa() const;
1089 static const auto type = isl_ast_expr_op_or_else;
1090
1091 protected:
1093
1094 public:
1095 inline /* implicit */ ast_expr_op_or_else();
1096 inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
1098 inline isl::checked::ctx ctx() const;
1099
1100};
1101
1102// declarations for isl::ast_expr_op_pdiv_q
1103
1105 template <class T>
1106 friend boolean ast_expr_op::isa() const;
1108 static const auto type = isl_ast_expr_op_pdiv_q;
1109
1110 protected:
1112
1113 public:
1114 inline /* implicit */ ast_expr_op_pdiv_q();
1115 inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
1117 inline isl::checked::ctx ctx() const;
1118
1119};
1120
1121// declarations for isl::ast_expr_op_pdiv_r
1122
1124 template <class T>
1125 friend boolean ast_expr_op::isa() const;
1127 static const auto type = isl_ast_expr_op_pdiv_r;
1128
1129 protected:
1131
1132 public:
1133 inline /* implicit */ ast_expr_op_pdiv_r();
1134 inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
1136 inline isl::checked::ctx ctx() const;
1137
1138};
1139
1140// declarations for isl::ast_expr_op_select
1141
1143 template <class T>
1144 friend boolean ast_expr_op::isa() const;
1146 static const auto type = isl_ast_expr_op_select;
1147
1148 protected:
1150
1151 public:
1152 inline /* implicit */ ast_expr_op_select();
1153 inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
1155 inline isl::checked::ctx ctx() const;
1156
1157};
1158
1159// declarations for isl::ast_expr_op_sub
1160
1162 template <class T>
1163 friend boolean ast_expr_op::isa() const;
1165 static const auto type = isl_ast_expr_op_sub;
1166
1167 protected:
1168 inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
1169
1170 public:
1171 inline /* implicit */ ast_expr_op_sub();
1172 inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
1174 inline isl::checked::ctx ctx() const;
1175
1176};
1177
1178// declarations for isl::ast_expr_op_zdiv_r
1179
1181 template <class T>
1182 friend boolean ast_expr_op::isa() const;
1184 static const auto type = isl_ast_expr_op_zdiv_r;
1185
1186 protected:
1188
1189 public:
1190 inline /* implicit */ ast_expr_op_zdiv_r();
1191 inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
1193 inline isl::checked::ctx ctx() const;
1194
1195};
1196
1197// declarations for isl::ast_node
1200
1202 friend inline ast_node manage(__isl_take isl_ast_node *ptr);
1204
1205 protected:
1206 isl_ast_node *ptr = nullptr;
1207
1208 inline explicit ast_node(__isl_take isl_ast_node *ptr);
1209
1210 public:
1211 inline /* implicit */ ast_node();
1212 inline /* implicit */ ast_node(const ast_node &obj);
1213 inline ast_node &operator=(ast_node obj);
1214 inline ~ast_node();
1215 inline __isl_give isl_ast_node *copy() const &;
1216 inline __isl_give isl_ast_node *copy() && = delete;
1217 inline __isl_keep isl_ast_node *get() const;
1219 inline bool is_null() const;
1220 private:
1221 template <typename T,
1222 typename = typename std::enable_if<std::is_same<
1223 const decltype(isl_ast_node_get_type(NULL)),
1224 const T>::value>::type>
1225 inline boolean isa_type(T subtype) const;
1226 public:
1227 template <class T> inline boolean isa() const;
1228 template <class T> inline T as() const;
1229 inline isl::checked::ctx ctx() const;
1230
1231 inline isl::checked::ast_node map_descendant_bottom_up(const std::function<isl::checked::ast_node(isl::checked::ast_node)> &fn) const;
1232 inline std::string to_C_str() const;
1233 inline isl::checked::ast_node_list to_list() const;
1234};
1235
1236// declarations for isl::ast_node_block
1237
1238class ast_node_block : public ast_node {
1239 template <class T>
1240 friend boolean ast_node::isa() const;
1242 static const auto type = isl_ast_node_block;
1243
1244 protected:
1245 inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
1246
1247 public:
1248 inline /* implicit */ ast_node_block();
1249 inline /* implicit */ ast_node_block(const ast_node_block &obj);
1250 inline explicit ast_node_block(isl::checked::ast_node_list list);
1252 inline isl::checked::ctx ctx() const;
1253
1256};
1257
1258// declarations for isl::ast_node_for
1259
1260class ast_node_for : public ast_node {
1261 template <class T>
1262 friend boolean ast_node::isa() const;
1264 static const auto type = isl_ast_node_for;
1265
1266 protected:
1267 inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
1268
1269 public:
1270 inline /* implicit */ ast_node_for();
1271 inline /* implicit */ ast_node_for(const ast_node_for &obj);
1273 inline isl::checked::ctx ctx() const;
1274
1275 inline isl::checked::ast_node body() const;
1276 inline isl::checked::ast_node get_body() const;
1277 inline isl::checked::ast_expr cond() const;
1278 inline isl::checked::ast_expr get_cond() const;
1279 inline isl::checked::ast_expr inc() const;
1280 inline isl::checked::ast_expr get_inc() const;
1281 inline isl::checked::ast_expr init() const;
1282 inline isl::checked::ast_expr get_init() const;
1283 inline boolean is_degenerate() const;
1284 inline isl::checked::ast_expr iterator() const;
1285 inline isl::checked::ast_expr get_iterator() const;
1286};
1287
1288// declarations for isl::ast_node_if
1289
1290class ast_node_if : public ast_node {
1291 template <class T>
1292 friend boolean ast_node::isa() const;
1294 static const auto type = isl_ast_node_if;
1295
1296 protected:
1297 inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
1298
1299 public:
1300 inline /* implicit */ ast_node_if();
1301 inline /* implicit */ ast_node_if(const ast_node_if &obj);
1303 inline isl::checked::ctx ctx() const;
1304
1305 inline isl::checked::ast_expr cond() const;
1306 inline isl::checked::ast_expr get_cond() const;
1307 inline isl::checked::ast_node else_node() const;
1309 inline boolean has_else_node() const;
1310 inline isl::checked::ast_node then_node() const;
1312};
1313
1314// declarations for isl::ast_node_list
1315inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1316inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1317
1319 friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1320 friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1321
1322 protected:
1323 isl_ast_node_list *ptr = nullptr;
1324
1325 inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
1326
1327 public:
1328 inline /* implicit */ ast_node_list();
1329 inline /* implicit */ ast_node_list(const ast_node_list &obj);
1330 inline explicit ast_node_list(isl::checked::ctx ctx, int n);
1331 inline explicit ast_node_list(isl::checked::ast_node el);
1333 inline ~ast_node_list();
1334 inline __isl_give isl_ast_node_list *copy() const &;
1335 inline __isl_give isl_ast_node_list *copy() && = delete;
1336 inline __isl_keep isl_ast_node_list *get() const;
1337 inline __isl_give isl_ast_node_list *release();
1338 inline bool is_null() const;
1339 inline isl::checked::ctx ctx() const;
1340
1341 inline isl::checked::ast_node_list add(isl::checked::ast_node el) const;
1342 inline isl::checked::ast_node at(int index) const;
1343 inline isl::checked::ast_node get_at(int index) const;
1344 inline isl::checked::ast_node_list clear() const;
1345 inline isl::checked::ast_node_list concat(isl::checked::ast_node_list list2) const;
1346 inline isl::checked::ast_node_list drop(unsigned int first, unsigned int n) const;
1347 inline stat foreach(const std::function<stat(isl::checked::ast_node)> &fn) const;
1348 inline stat foreach_scc(const std::function<boolean(isl::checked::ast_node, isl::checked::ast_node)> &follows, const std::function<stat(isl::checked::ast_node_list)> &fn) const;
1349 inline isl::checked::ast_node_list insert(unsigned int pos, isl::checked::ast_node el) const;
1350 inline isl::checked::ast_node_list set_at(int index, isl::checked::ast_node el) const;
1351 inline class size size() const;
1352};
1353
1354// declarations for isl::ast_node_mark
1355
1356class ast_node_mark : public ast_node {
1357 template <class T>
1358 friend boolean ast_node::isa() const;
1360 static const auto type = isl_ast_node_mark;
1361
1362 protected:
1363 inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
1364
1365 public:
1366 inline /* implicit */ ast_node_mark();
1367 inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
1369 inline isl::checked::ctx ctx() const;
1370
1371 inline isl::checked::id id() const;
1372 inline isl::checked::id get_id() const;
1373 inline isl::checked::ast_node node() const;
1374 inline isl::checked::ast_node get_node() const;
1375};
1376
1377// declarations for isl::ast_node_user
1378
1379class ast_node_user : public ast_node {
1380 template <class T>
1381 friend boolean ast_node::isa() const;
1383 static const auto type = isl_ast_node_user;
1384
1385 protected:
1386 inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
1387
1388 public:
1389 inline /* implicit */ ast_node_user();
1390 inline /* implicit */ ast_node_user(const ast_node_user &obj);
1391 inline explicit ast_node_user(isl::checked::ast_expr expr);
1393 inline isl::checked::ctx ctx() const;
1394
1395 inline isl::checked::ast_expr expr() const;
1396 inline isl::checked::ast_expr get_expr() const;
1397};
1398
1399// declarations for isl::basic_map
1402
1406
1407 protected:
1408 isl_basic_map *ptr = nullptr;
1409
1410 inline explicit basic_map(__isl_take isl_basic_map *ptr);
1411
1412 public:
1413 inline /* implicit */ basic_map();
1414 inline /* implicit */ basic_map(const basic_map &obj);
1415 inline explicit basic_map(isl::checked::ctx ctx, const std::string &str);
1417 inline ~basic_map();
1418 inline __isl_give isl_basic_map *copy() const &;
1419 inline __isl_give isl_basic_map *copy() && = delete;
1420 inline __isl_keep isl_basic_map *get() const;
1422 inline bool is_null() const;
1423 inline isl::checked::ctx ctx() const;
1424
1425 inline isl::checked::basic_map affine_hull() const;
1426 inline isl::checked::basic_map apply_domain(isl::checked::basic_map bmap2) const;
1427 inline isl::checked::map apply_domain(const isl::checked::map &map2) const;
1428 inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1429 inline isl::checked::basic_map apply_range(isl::checked::basic_map bmap2) const;
1430 inline isl::checked::map apply_range(const isl::checked::map &map2) const;
1431 inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1432 inline isl::checked::map as_map() const;
1434 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1436 inline isl::checked::set bind_domain(const isl::checked::multi_id &tuple) const;
1437 inline isl::checked::set bind_range(const isl::checked::multi_id &tuple) const;
1438 inline isl::checked::map coalesce() const;
1439 inline isl::checked::map complement() const;
1440 inline isl::checked::union_map compute_divs() const;
1441 inline isl::checked::map curry() const;
1442 inline isl::checked::basic_set deltas() const;
1443 inline isl::checked::basic_map detect_equalities() const;
1444 inline isl::checked::set domain() const;
1445 inline isl::checked::map domain_factor_domain() const;
1446 inline isl::checked::map domain_factor_range() const;
1447 inline isl::checked::union_map domain_map() const;
1449 inline isl::checked::map domain_product(const isl::checked::map &map2) const;
1450 inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1451 inline isl::checked::map domain_reverse() const;
1452 inline class size domain_tuple_dim() const;
1453 inline isl::checked::id domain_tuple_id() const;
1454 inline isl::checked::map drop_unused_params() const;
1455 inline isl::checked::map eq_at(const isl::checked::multi_pw_aff &mpa) const;
1456 inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1457 inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1458 inline isl::checked::map extract_map(const isl::checked::space &space) const;
1459 inline isl::checked::map factor_domain() const;
1460 inline isl::checked::map factor_range() const;
1461 inline isl::checked::map fixed_power(const isl::checked::val &exp) const;
1462 inline isl::checked::map fixed_power(long exp) const;
1463 inline isl::checked::basic_map flatten() const;
1464 inline isl::checked::basic_map flatten_domain() const;
1465 inline isl::checked::basic_map flatten_range() const;
1466 inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1467 inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1469 inline isl::checked::map gist(const isl::checked::map &context) const;
1470 inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1471 inline isl::checked::map gist_domain(const isl::checked::set &context) const;
1472 inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1473 inline isl::checked::map gist_params(const isl::checked::set &context) const;
1474 inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1475 inline boolean has_domain_tuple_id() const;
1476 inline boolean has_range_tuple_id() const;
1477 inline isl::checked::basic_map intersect(isl::checked::basic_map bmap2) const;
1478 inline isl::checked::map intersect(const isl::checked::map &map2) const;
1479 inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1480 inline isl::checked::basic_map intersect_domain(isl::checked::basic_set bset) const;
1481 inline isl::checked::map intersect_domain(const isl::checked::set &set) const;
1482 inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1483 inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1484 inline isl::checked::basic_map intersect_domain(const isl::checked::point &bset) const;
1485 inline isl::checked::map intersect_domain_factor_domain(const isl::checked::map &factor) const;
1487 inline isl::checked::map intersect_domain_factor_range(const isl::checked::map &factor) const;
1488 inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
1491 inline isl::checked::basic_map intersect_params(isl::checked::basic_set bset) const;
1492 inline isl::checked::map intersect_params(const isl::checked::set &params) const;
1493 inline isl::checked::basic_map intersect_params(const isl::checked::point &bset) const;
1494 inline isl::checked::basic_map intersect_range(isl::checked::basic_set bset) const;
1495 inline isl::checked::map intersect_range(const isl::checked::set &set) const;
1496 inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
1497 inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
1498 inline isl::checked::basic_map intersect_range(const isl::checked::point &bset) const;
1499 inline isl::checked::map intersect_range_factor_domain(const isl::checked::map &factor) const;
1500 inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
1501 inline isl::checked::map intersect_range_factor_range(const isl::checked::map &factor) const;
1502 inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
1505 inline boolean is_bijective() const;
1506 inline boolean is_disjoint(const isl::checked::map &map2) const;
1507 inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
1508 inline boolean is_empty() const;
1509 inline boolean is_equal(const isl::checked::basic_map &bmap2) const;
1510 inline boolean is_equal(const isl::checked::map &map2) const;
1511 inline boolean is_equal(const isl::checked::union_map &umap2) const;
1512 inline boolean is_injective() const;
1513 inline boolean is_single_valued() const;
1514 inline boolean is_strict_subset(const isl::checked::map &map2) const;
1515 inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
1516 inline boolean is_subset(const isl::checked::basic_map &bmap2) const;
1517 inline boolean is_subset(const isl::checked::map &map2) const;
1518 inline boolean is_subset(const isl::checked::union_map &umap2) const;
1519 inline boolean isa_map() const;
1520 inline isl::checked::map lex_ge_at(const isl::checked::multi_pw_aff &mpa) const;
1521 inline isl::checked::map lex_gt_at(const isl::checked::multi_pw_aff &mpa) const;
1522 inline isl::checked::map lex_le_at(const isl::checked::multi_pw_aff &mpa) const;
1523 inline isl::checked::map lex_lt_at(const isl::checked::multi_pw_aff &mpa) const;
1524 inline isl::checked::map lexmax() const;
1526 inline isl::checked::map lexmin() const;
1528 inline isl::checked::map lower_bound(const isl::checked::multi_pw_aff &lower) const;
1529 inline isl::checked::map_list map_list() const;
1530 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1531 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1532 inline class size n_basic_map() const;
1533 inline isl::checked::set params() const;
1534 inline isl::checked::basic_map polyhedral_hull() const;
1535 inline isl::checked::map preimage_domain(const isl::checked::multi_aff &ma) const;
1536 inline isl::checked::map preimage_domain(const isl::checked::multi_pw_aff &mpa) const;
1537 inline isl::checked::map preimage_domain(const isl::checked::pw_multi_aff &pma) const;
1538 inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
1539 inline isl::checked::map preimage_range(const isl::checked::multi_aff &ma) const;
1540 inline isl::checked::map preimage_range(const isl::checked::pw_multi_aff &pma) const;
1541 inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
1542 inline isl::checked::map product(const isl::checked::map &map2) const;
1543 inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
1544 inline isl::checked::map project_out_all_params() const;
1545 inline isl::checked::map project_out_param(const isl::checked::id &id) const;
1546 inline isl::checked::map project_out_param(const std::string &id) const;
1547 inline isl::checked::map project_out_param(const isl::checked::id_list &list) const;
1548 inline isl::checked::set range() const;
1549 inline isl::checked::map range_factor_domain() const;
1550 inline isl::checked::map range_factor_range() const;
1551 inline isl::checked::fixed_box range_lattice_tile() const;
1552 inline isl::checked::union_map range_map() const;
1553 inline isl::checked::map range_product(const isl::checked::map &map2) const;
1554 inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
1555 inline isl::checked::map range_reverse() const;
1557 inline class size range_tuple_dim() const;
1558 inline isl::checked::id range_tuple_id() const;
1559 inline isl::checked::basic_map reverse() const;
1560 inline isl::checked::basic_map sample() const;
1561 inline isl::checked::map set_domain_tuple(const isl::checked::id &id) const;
1562 inline isl::checked::map set_domain_tuple(const std::string &id) const;
1563 inline isl::checked::map set_range_tuple(const isl::checked::id &id) const;
1564 inline isl::checked::map set_range_tuple(const std::string &id) const;
1565 inline isl::checked::space space() const;
1566 inline isl::checked::map subtract(const isl::checked::map &map2) const;
1567 inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
1568 inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
1569 inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
1570 inline isl::checked::map_list to_list() const;
1571 inline isl::checked::union_map to_union_map() const;
1572 inline isl::checked::map uncurry() const;
1573 inline isl::checked::map unite(isl::checked::basic_map bmap2) const;
1574 inline isl::checked::map unite(const isl::checked::map &map2) const;
1575 inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
1576 inline isl::checked::basic_map unshifted_simple_hull() const;
1577 inline isl::checked::map upper_bound(const isl::checked::multi_pw_aff &upper) const;
1578 inline isl::checked::set wrap() const;
1579 inline isl::checked::map zip() const;
1580};
1581
1582// declarations for isl::basic_set
1585
1589
1590 protected:
1591 isl_basic_set *ptr = nullptr;
1592
1593 inline explicit basic_set(__isl_take isl_basic_set *ptr);
1594
1595 public:
1596 inline /* implicit */ basic_set();
1597 inline /* implicit */ basic_set(const basic_set &obj);
1598 inline /* implicit */ basic_set(isl::checked::point pnt);
1599 inline explicit basic_set(isl::checked::ctx ctx, const std::string &str);
1601 inline ~basic_set();
1602 inline __isl_give isl_basic_set *copy() const &;
1603 inline __isl_give isl_basic_set *copy() && = delete;
1604 inline __isl_keep isl_basic_set *get() const;
1606 inline bool is_null() const;
1607 inline isl::checked::ctx ctx() const;
1608
1609 inline isl::checked::basic_set affine_hull() const;
1610 inline isl::checked::basic_set apply(isl::checked::basic_map bmap) const;
1611 inline isl::checked::set apply(const isl::checked::map &map) const;
1612 inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
1613 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1614 inline isl::checked::set as_set() const;
1615 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
1616 inline isl::checked::set coalesce() const;
1617 inline isl::checked::set complement() const;
1618 inline isl::checked::union_set compute_divs() const;
1619 inline isl::checked::basic_set detect_equalities() const;
1620 inline isl::checked::val dim_max_val(int pos) const;
1621 inline isl::checked::val dim_min_val(int pos) const;
1622 inline isl::checked::set drop_unused_params() const;
1623 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
1624 inline isl::checked::set extract_set(const isl::checked::space &space) const;
1625 inline isl::checked::basic_set flatten() const;
1626 inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
1627 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
1628 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
1630 inline isl::checked::set gist(const isl::checked::set &context) const;
1631 inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
1632 inline isl::checked::basic_set gist(const isl::checked::point &context) const;
1633 inline isl::checked::set gist_params(const isl::checked::set &context) const;
1634 inline isl::checked::map identity() const;
1635 inline isl::checked::pw_aff indicator_function() const;
1636 inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
1637 inline isl::checked::basic_set intersect(isl::checked::basic_set bset2) const;
1638 inline isl::checked::set intersect(const isl::checked::set &set2) const;
1639 inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
1640 inline isl::checked::basic_set intersect(const isl::checked::point &bset2) const;
1641 inline isl::checked::basic_set intersect_params(isl::checked::basic_set bset2) const;
1642 inline isl::checked::set intersect_params(const isl::checked::set &params) const;
1643 inline isl::checked::basic_set intersect_params(const isl::checked::point &bset2) const;
1644 inline boolean involves_locals() const;
1645 inline boolean is_disjoint(const isl::checked::set &set2) const;
1646 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
1647 inline boolean is_empty() const;
1648 inline boolean is_equal(const isl::checked::basic_set &bset2) const;
1649 inline boolean is_equal(const isl::checked::set &set2) const;
1650 inline boolean is_equal(const isl::checked::union_set &uset2) const;
1651 inline boolean is_equal(const isl::checked::point &bset2) const;
1652 inline boolean is_singleton() const;
1653 inline boolean is_strict_subset(const isl::checked::set &set2) const;
1654 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
1655 inline boolean is_subset(const isl::checked::basic_set &bset2) const;
1656 inline boolean is_subset(const isl::checked::set &set2) const;
1657 inline boolean is_subset(const isl::checked::union_set &uset2) const;
1658 inline boolean is_subset(const isl::checked::point &bset2) const;
1659 inline boolean is_wrapping() const;
1660 inline boolean isa_set() const;
1661 inline isl::checked::fixed_box lattice_tile() const;
1662 inline isl::checked::set lexmax() const;
1664 inline isl::checked::set lexmin() const;
1666 inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
1667 inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
1668 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1669 inline isl::checked::val max_val(const isl::checked::aff &obj) const;
1670 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1671 inline isl::checked::val min_val(const isl::checked::aff &obj) const;
1672 inline class size n_basic_set() const;
1673 inline isl::checked::pw_aff param_pw_aff_on_domain(const isl::checked::id &id) const;
1674 inline isl::checked::pw_aff param_pw_aff_on_domain(const std::string &id) const;
1675 inline isl::checked::basic_set params() const;
1677 inline isl::checked::basic_set polyhedral_hull() const;
1678 inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
1679 inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
1680 inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
1681 inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
1682 inline isl::checked::set product(const isl::checked::set &set2) const;
1683 inline isl::checked::set project_out_all_params() const;
1684 inline isl::checked::set project_out_param(const isl::checked::id &id) const;
1685 inline isl::checked::set project_out_param(const std::string &id) const;
1686 inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
1687 inline isl::checked::pw_aff pw_aff_on_domain(const isl::checked::val &v) const;
1688 inline isl::checked::pw_aff pw_aff_on_domain(long v) const;
1690 inline isl::checked::basic_set sample() const;
1691 inline isl::checked::point sample_point() const;
1692 inline isl::checked::set_list set_list() const;
1693 inline isl::checked::fixed_box simple_fixed_box_hull() const;
1694 inline isl::checked::space space() const;
1695 inline isl::checked::val stride(int pos) const;
1696 inline isl::checked::set subtract(const isl::checked::set &set2) const;
1697 inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
1698 inline isl::checked::set_list to_list() const;
1699 inline isl::checked::set to_set() const;
1700 inline isl::checked::union_set to_union_set() const;
1701 inline isl::checked::map translation() const;
1702 inline class size tuple_dim() const;
1703 inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
1705 inline isl::checked::set unite(isl::checked::basic_set bset2) const;
1706 inline isl::checked::set unite(const isl::checked::set &set2) const;
1707 inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
1708 inline isl::checked::set unite(const isl::checked::point &bset2) const;
1709 inline isl::checked::basic_set unshifted_simple_hull() const;
1710 inline isl::checked::map unwrap() const;
1711 inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
1712 inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
1713 inline isl::checked::set wrapped_reverse() const;
1714};
1715
1716// declarations for isl::fixed_box
1719
1723
1724 protected:
1725 isl_fixed_box *ptr = nullptr;
1726
1727 inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1728
1729 public:
1730 inline /* implicit */ fixed_box();
1731 inline /* implicit */ fixed_box(const fixed_box &obj);
1732 inline explicit fixed_box(isl::checked::ctx ctx, const std::string &str);
1734 inline ~fixed_box();
1735 inline __isl_give isl_fixed_box *copy() const &;
1736 inline __isl_give isl_fixed_box *copy() && = delete;
1737 inline __isl_keep isl_fixed_box *get() const;
1739 inline bool is_null() const;
1740 inline isl::checked::ctx ctx() const;
1741
1742 inline boolean is_valid() const;
1743 inline isl::checked::multi_aff offset() const;
1744 inline isl::checked::multi_aff get_offset() const;
1745 inline boolean plain_is_equal(const isl::checked::fixed_box &box2) const;
1746 inline isl::checked::multi_val size() const;
1747 inline isl::checked::multi_val get_size() const;
1748 inline isl::checked::space space() const;
1749 inline isl::checked::space get_space() const;
1750};
1751
1752// declarations for isl::id
1753inline id manage(__isl_take isl_id *ptr);
1754inline id manage_copy(__isl_keep isl_id *ptr);
1755
1756class id {
1757 friend inline id manage(__isl_take isl_id *ptr);
1758 friend inline id manage_copy(__isl_keep isl_id *ptr);
1759
1760 protected:
1761 isl_id *ptr = nullptr;
1762
1763 inline explicit id(__isl_take isl_id *ptr);
1764
1765 public:
1766 inline /* implicit */ id();
1767 inline /* implicit */ id(const id &obj);
1768 inline explicit id(isl::checked::ctx ctx, const std::string &str);
1769 inline id &operator=(id obj);
1770 inline ~id();
1771 inline __isl_give isl_id *copy() const &;
1772 inline __isl_give isl_id *copy() && = delete;
1773 inline __isl_keep isl_id *get() const;
1774 inline __isl_give isl_id *release();
1775 inline bool is_null() const;
1776 inline isl::checked::ctx ctx() const;
1777
1778 inline std::string name() const;
1779 inline std::string get_name() const;
1780 inline isl::checked::id_list to_list() const;
1781
1782#if __cplusplus >= 201703L
1783 inline explicit id(isl::checked::ctx ctx, const std::string &str, const std::any &any);
1784 template <class T>
1785 std::optional<T> try_user() const;
1786 template <class T>
1787 T user() const;
1788#endif
1789};
1790
1791// declarations for isl::id_list
1792inline id_list manage(__isl_take isl_id_list *ptr);
1793inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1794
1795class id_list {
1796 friend inline id_list manage(__isl_take isl_id_list *ptr);
1797 friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1798
1799 protected:
1800 isl_id_list *ptr = nullptr;
1801
1802 inline explicit id_list(__isl_take isl_id_list *ptr);
1803
1804 public:
1805 inline /* implicit */ id_list();
1806 inline /* implicit */ id_list(const id_list &obj);
1807 inline explicit id_list(isl::checked::ctx ctx, int n);
1808 inline explicit id_list(isl::checked::id el);
1809 inline explicit id_list(isl::checked::ctx ctx, const std::string &str);
1810 inline id_list &operator=(id_list obj);
1811 inline ~id_list();
1812 inline __isl_give isl_id_list *copy() const &;
1813 inline __isl_give isl_id_list *copy() && = delete;
1814 inline __isl_keep isl_id_list *get() const;
1815 inline __isl_give isl_id_list *release();
1816 inline bool is_null() const;
1817 inline isl::checked::ctx ctx() const;
1818
1819 inline isl::checked::id_list add(isl::checked::id el) const;
1820 inline isl::checked::id_list add(const std::string &el) const;
1821 inline isl::checked::id at(int index) const;
1822 inline isl::checked::id get_at(int index) const;
1823 inline isl::checked::id_list clear() const;
1824 inline isl::checked::id_list concat(isl::checked::id_list list2) const;
1825 inline isl::checked::id_list drop(unsigned int first, unsigned int n) const;
1826 inline stat foreach(const std::function<stat(isl::checked::id)> &fn) const;
1827 inline stat foreach_scc(const std::function<boolean(isl::checked::id, isl::checked::id)> &follows, const std::function<stat(isl::checked::id_list)> &fn) const;
1828 inline isl::checked::id_list insert(unsigned int pos, isl::checked::id el) const;
1829 inline isl::checked::id_list insert(unsigned int pos, const std::string &el) const;
1830 inline isl::checked::id_list set_at(int index, isl::checked::id el) const;
1831 inline isl::checked::id_list set_at(int index, const std::string &el) const;
1832 inline class size size() const;
1833};
1834
1835// declarations for isl::id_to_ast_expr
1836inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1837inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1838
1840 friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1841 friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1842
1843 protected:
1844 isl_id_to_ast_expr *ptr = nullptr;
1845
1846 inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
1847
1848 public:
1849 inline /* implicit */ id_to_ast_expr();
1850 inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj);
1851 inline explicit id_to_ast_expr(isl::checked::ctx ctx, int min_size);
1852 inline explicit id_to_ast_expr(isl::checked::ctx ctx, const std::string &str);
1854 inline ~id_to_ast_expr();
1855 inline __isl_give isl_id_to_ast_expr *copy() const &;
1856 inline __isl_give isl_id_to_ast_expr *copy() && = delete;
1857 inline __isl_keep isl_id_to_ast_expr *get() const;
1858 inline __isl_give isl_id_to_ast_expr *release();
1859 inline bool is_null() const;
1860 inline isl::checked::ctx ctx() const;
1861
1862 inline boolean is_equal(const isl::checked::id_to_ast_expr &hmap2) const;
1863 inline isl::checked::id_to_ast_expr set(isl::checked::id key, isl::checked::ast_expr val) const;
1864 inline isl::checked::id_to_ast_expr set(const std::string &key, const isl::checked::ast_expr &val) const;
1865};
1866
1867// declarations for isl::id_to_id
1868inline id_to_id manage(__isl_take isl_id_to_id *ptr);
1869inline id_to_id manage_copy(__isl_keep isl_id_to_id *ptr);
1870
1872 friend inline id_to_id manage(__isl_take isl_id_to_id *ptr);
1873 friend inline id_to_id manage_copy(__isl_keep isl_id_to_id *ptr);
1874
1875 protected:
1876 isl_id_to_id *ptr = nullptr;
1877
1878 inline explicit id_to_id(__isl_take isl_id_to_id *ptr);
1879
1880 public:
1881 inline /* implicit */ id_to_id();
1882 inline /* implicit */ id_to_id(const id_to_id &obj);
1883 inline explicit id_to_id(isl::checked::ctx ctx, int min_size);
1884 inline explicit id_to_id(isl::checked::ctx ctx, const std::string &str);
1885 inline id_to_id &operator=(id_to_id obj);
1886 inline ~id_to_id();
1887 inline __isl_give isl_id_to_id *copy() const &;
1888 inline __isl_give isl_id_to_id *copy() && = delete;
1889 inline __isl_keep isl_id_to_id *get() const;
1890 inline __isl_give isl_id_to_id *release();
1891 inline bool is_null() const;
1892 inline isl::checked::ctx ctx() const;
1893
1894 inline boolean is_equal(const isl::checked::id_to_id &hmap2) const;
1895 inline isl::checked::id_to_id set(isl::checked::id key, isl::checked::id val) const;
1896 inline isl::checked::id_to_id set(const isl::checked::id &key, const std::string &val) const;
1897 inline isl::checked::id_to_id set(const std::string &key, const isl::checked::id &val) const;
1898 inline isl::checked::id_to_id set(const std::string &key, const std::string &val) const;
1899};
1900
1901// declarations for isl::map
1904
1905class map {
1906 friend inline map manage(__isl_take isl_map *ptr);
1907 friend inline map manage_copy(__isl_keep isl_map *ptr);
1908
1909 protected:
1910 isl_map *ptr = nullptr;
1911
1912 inline explicit map(__isl_take isl_map *ptr);
1913
1914 public:
1915 inline /* implicit */ map();
1916 inline /* implicit */ map(const map &obj);
1917 inline /* implicit */ map(isl::checked::basic_map bmap);
1918 inline explicit map(isl::checked::ctx ctx, const std::string &str);
1919 inline map &operator=(map obj);
1920 inline ~map();
1921 inline __isl_give isl_map *copy() const &;
1922 inline __isl_give isl_map *copy() && = delete;
1923 inline __isl_keep isl_map *get() const;
1924 inline __isl_give isl_map *release();
1925 inline bool is_null() const;
1926 inline isl::checked::ctx ctx() const;
1927
1928 inline isl::checked::basic_map affine_hull() const;
1929 inline isl::checked::map apply_domain(isl::checked::map map2) const;
1930 inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1931 inline isl::checked::map apply_domain(const isl::checked::basic_map &map2) const;
1932 inline isl::checked::map apply_range(isl::checked::map map2) const;
1933 inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1934 inline isl::checked::map apply_range(const isl::checked::basic_map &map2) const;
1935 inline isl::checked::map as_map() const;
1937 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1939 inline isl::checked::set bind_domain(isl::checked::multi_id tuple) const;
1940 inline isl::checked::set bind_range(isl::checked::multi_id tuple) const;
1941 inline isl::checked::map coalesce() const;
1942 inline isl::checked::map complement() const;
1943 inline isl::checked::union_map compute_divs() const;
1944 inline isl::checked::map curry() const;
1945 inline isl::checked::set deltas() const;
1946 inline isl::checked::map detect_equalities() const;
1947 inline isl::checked::set domain() const;
1948 inline isl::checked::map domain_factor_domain() const;
1949 inline isl::checked::map domain_factor_range() const;
1950 inline isl::checked::union_map domain_map() const;
1952 inline isl::checked::map domain_product(isl::checked::map map2) const;
1953 inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1954 inline isl::checked::map domain_product(const isl::checked::basic_map &map2) const;
1955 inline isl::checked::map domain_reverse() const;
1956 inline class size domain_tuple_dim() const;
1957 inline isl::checked::id domain_tuple_id() const;
1958 inline isl::checked::id get_domain_tuple_id() const;
1959 inline isl::checked::map drop_unused_params() const;
1960 static inline isl::checked::map empty(isl::checked::space space);
1961 inline isl::checked::map eq_at(isl::checked::multi_pw_aff mpa) const;
1962 inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1963 inline isl::checked::map eq_at(const isl::checked::aff &mpa) const;
1964 inline isl::checked::map eq_at(const isl::checked::multi_aff &mpa) const;
1965 inline isl::checked::map eq_at(const isl::checked::pw_aff &mpa) const;
1966 inline isl::checked::map eq_at(const isl::checked::pw_multi_aff &mpa) const;
1967 inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1968 inline isl::checked::map extract_map(const isl::checked::space &space) const;
1969 inline isl::checked::map factor_domain() const;
1970 inline isl::checked::map factor_range() const;
1971 inline isl::checked::map fixed_power(isl::checked::val exp) const;
1972 inline isl::checked::map fixed_power(long exp) const;
1973 inline isl::checked::map flatten() const;
1974 inline isl::checked::map flatten_domain() const;
1975 inline isl::checked::map flatten_range() const;
1976 inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1977 inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1978 inline isl::checked::map gist(isl::checked::map context) const;
1979 inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1980 inline isl::checked::map gist(const isl::checked::basic_map &context) const;
1981 inline isl::checked::map gist_domain(isl::checked::set context) const;
1982 inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1983 inline isl::checked::map gist_domain(const isl::checked::basic_set &context) const;
1984 inline isl::checked::map gist_domain(const isl::checked::point &context) const;
1985 inline isl::checked::map gist_params(isl::checked::set context) const;
1986 inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1987 inline boolean has_domain_tuple_id() const;
1988 inline boolean has_range_tuple_id() const;
1989 inline isl::checked::map intersect(isl::checked::map map2) const;
1990 inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1991 inline isl::checked::map intersect(const isl::checked::basic_map &map2) const;
1992 inline isl::checked::map intersect_domain(isl::checked::set set) const;
1993 inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1994 inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1995 inline isl::checked::map intersect_domain(const isl::checked::basic_set &set) const;
1996 inline isl::checked::map intersect_domain(const isl::checked::point &set) const;
1997 inline isl::checked::map intersect_domain_factor_domain(isl::checked::map factor) const;
1999 inline isl::checked::map intersect_domain_factor_domain(const isl::checked::basic_map &factor) const;
2000 inline isl::checked::map intersect_domain_factor_range(isl::checked::map factor) const;
2001 inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
2002 inline isl::checked::map intersect_domain_factor_range(const isl::checked::basic_map &factor) const;
2007 inline isl::checked::map intersect_params(isl::checked::set params) const;
2008 inline isl::checked::map intersect_range(isl::checked::set set) const;
2009 inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
2010 inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
2011 inline isl::checked::map intersect_range(const isl::checked::basic_set &set) const;
2012 inline isl::checked::map intersect_range(const isl::checked::point &set) const;
2013 inline isl::checked::map intersect_range_factor_domain(isl::checked::map factor) const;
2014 inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
2015 inline isl::checked::map intersect_range_factor_domain(const isl::checked::basic_map &factor) const;
2016 inline isl::checked::map intersect_range_factor_range(isl::checked::map factor) const;
2017 inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
2018 inline isl::checked::map intersect_range_factor_range(const isl::checked::basic_map &factor) const;
2023 inline boolean is_bijective() const;
2024 inline boolean is_disjoint(const isl::checked::map &map2) const;
2025 inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
2026 inline boolean is_disjoint(const isl::checked::basic_map &map2) const;
2027 inline boolean is_empty() const;
2028 inline boolean is_equal(const isl::checked::map &map2) const;
2029 inline boolean is_equal(const isl::checked::union_map &umap2) const;
2030 inline boolean is_equal(const isl::checked::basic_map &map2) const;
2031 inline boolean is_injective() const;
2032 inline boolean is_single_valued() const;
2033 inline boolean is_strict_subset(const isl::checked::map &map2) const;
2034 inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
2035 inline boolean is_strict_subset(const isl::checked::basic_map &map2) const;
2036 inline boolean is_subset(const isl::checked::map &map2) const;
2037 inline boolean is_subset(const isl::checked::union_map &umap2) const;
2038 inline boolean is_subset(const isl::checked::basic_map &map2) const;
2039 inline boolean isa_map() const;
2040 inline isl::checked::map lex_ge_at(isl::checked::multi_pw_aff mpa) const;
2041 inline isl::checked::map lex_gt_at(isl::checked::multi_pw_aff mpa) const;
2042 inline isl::checked::map lex_le_at(isl::checked::multi_pw_aff mpa) const;
2043 inline isl::checked::map lex_lt_at(isl::checked::multi_pw_aff mpa) const;
2044 inline isl::checked::map lexmax() const;
2046 inline isl::checked::map lexmin() const;
2048 inline isl::checked::map lower_bound(isl::checked::multi_pw_aff lower) const;
2049 inline isl::checked::map_list map_list() const;
2050 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
2051 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
2052 inline class size n_basic_map() const;
2053 inline isl::checked::set params() const;
2054 inline isl::checked::basic_map polyhedral_hull() const;
2056 inline isl::checked::map preimage_domain(isl::checked::multi_pw_aff mpa) const;
2058 inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
2059 inline isl::checked::map preimage_range(isl::checked::multi_aff ma) const;
2061 inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
2062 inline isl::checked::map product(isl::checked::map map2) const;
2063 inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
2064 inline isl::checked::map product(const isl::checked::basic_map &map2) const;
2065 inline isl::checked::map project_out_all_params() const;
2066 inline isl::checked::map project_out_param(isl::checked::id id) const;
2067 inline isl::checked::map project_out_param(const std::string &id) const;
2068 inline isl::checked::map project_out_param(isl::checked::id_list list) const;
2069 inline isl::checked::set range() const;
2070 inline isl::checked::map range_factor_domain() const;
2071 inline isl::checked::map range_factor_range() const;
2072 inline isl::checked::fixed_box range_lattice_tile() const;
2074 inline isl::checked::union_map range_map() const;
2075 inline isl::checked::map range_product(isl::checked::map map2) const;
2076 inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
2077 inline isl::checked::map range_product(const isl::checked::basic_map &map2) const;
2078 inline isl::checked::map range_reverse() const;
2081 inline class size range_tuple_dim() const;
2082 inline isl::checked::id range_tuple_id() const;
2083 inline isl::checked::id get_range_tuple_id() const;
2084 inline isl::checked::map reverse() const;
2085 inline isl::checked::basic_map sample() const;
2086 inline isl::checked::map set_domain_tuple(isl::checked::id id) const;
2087 inline isl::checked::map set_domain_tuple(const std::string &id) const;
2088 inline isl::checked::map set_range_tuple(isl::checked::id id) const;
2089 inline isl::checked::map set_range_tuple(const std::string &id) const;
2090 inline isl::checked::space space() const;
2091 inline isl::checked::space get_space() const;
2092 inline isl::checked::map subtract(isl::checked::map map2) const;
2093 inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
2094 inline isl::checked::map subtract(const isl::checked::basic_map &map2) const;
2095 inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
2096 inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
2097 inline isl::checked::map_list to_list() const;
2098 inline isl::checked::union_map to_union_map() const;
2099 inline isl::checked::map uncurry() const;
2100 inline isl::checked::map unite(isl::checked::map map2) const;
2101 inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
2102 inline isl::checked::map unite(const isl::checked::basic_map &map2) const;
2103 static inline isl::checked::map universe(isl::checked::space space);
2104 inline isl::checked::basic_map unshifted_simple_hull() const;
2105 inline isl::checked::map upper_bound(isl::checked::multi_pw_aff upper) const;
2106 inline isl::checked::set wrap() const;
2107 inline isl::checked::map zip() const;
2108};
2109
2110// declarations for isl::map_list
2111inline map_list manage(__isl_take isl_map_list *ptr);
2112inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2113
2115 friend inline map_list manage(__isl_take isl_map_list *ptr);
2116 friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2117
2118 protected:
2119 isl_map_list *ptr = nullptr;
2120
2121 inline explicit map_list(__isl_take isl_map_list *ptr);
2122
2123 public:
2124 inline /* implicit */ map_list();
2125 inline /* implicit */ map_list(const map_list &obj);
2126 inline explicit map_list(isl::checked::ctx ctx, int n);
2127 inline explicit map_list(isl::checked::map el);
2128 inline explicit map_list(isl::checked::ctx ctx, const std::string &str);
2129 inline map_list &operator=(map_list obj);
2130 inline ~map_list();
2131 inline __isl_give isl_map_list *copy() const &;
2132 inline __isl_give isl_map_list *copy() && = delete;
2133 inline __isl_keep isl_map_list *get() const;
2134 inline __isl_give isl_map_list *release();
2135 inline bool is_null() const;
2136 inline isl::checked::ctx ctx() const;
2137
2138 inline isl::checked::map_list add(isl::checked::map el) const;
2139 inline isl::checked::map at(int index) const;
2140 inline isl::checked::map get_at(int index) const;
2141 inline isl::checked::map_list clear() const;
2142 inline isl::checked::map_list concat(isl::checked::map_list list2) const;
2143 inline isl::checked::map_list drop(unsigned int first, unsigned int n) const;
2144 inline stat foreach(const std::function<stat(isl::checked::map)> &fn) const;
2145 inline stat foreach_scc(const std::function<boolean(isl::checked::map, isl::checked::map)> &follows, const std::function<stat(isl::checked::map_list)> &fn) const;
2146 inline isl::checked::map_list insert(unsigned int pos, isl::checked::map el) const;
2147 inline isl::checked::map_list set_at(int index, isl::checked::map el) const;
2148 inline class size size() const;
2149};
2150
2151// declarations for isl::multi_aff
2154
2158
2159 protected:
2160 isl_multi_aff *ptr = nullptr;
2161
2162 inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
2163
2164 public:
2165 inline /* implicit */ multi_aff();
2166 inline /* implicit */ multi_aff(const multi_aff &obj);
2167 inline /* implicit */ multi_aff(isl::checked::aff aff);
2169 inline explicit multi_aff(isl::checked::ctx ctx, const std::string &str);
2171 inline ~multi_aff();
2172 inline __isl_give isl_multi_aff *copy() const &;
2173 inline __isl_give isl_multi_aff *copy() && = delete;
2174 inline __isl_keep isl_multi_aff *get() const;
2176 inline bool is_null() const;
2177 inline isl::checked::ctx ctx() const;
2178
2179 inline isl::checked::multi_aff add(isl::checked::multi_aff multi2) const;
2180 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2181 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2182 inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
2183 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2184 inline isl::checked::multi_aff add(const isl::checked::aff &multi2) const;
2185 inline isl::checked::multi_aff add_constant(isl::checked::multi_val mv) const;
2186 inline isl::checked::multi_aff add_constant(isl::checked::val v) const;
2187 inline isl::checked::multi_aff add_constant(long v) const;
2188 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2189 inline isl::checked::map as_map() const;
2190 inline isl::checked::multi_aff as_multi_aff() const;
2192 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2193 inline isl::checked::set as_set() const;
2194 inline isl::checked::union_map as_union_map() const;
2195 inline isl::checked::aff at(int pos) const;
2196 inline isl::checked::aff get_at(int pos) const;
2197 inline isl::checked::basic_set bind(isl::checked::multi_id tuple) const;
2200 inline isl::checked::pw_multi_aff coalesce() const;
2201 inline isl::checked::multi_val constant_multi_val() const;
2203 inline isl::checked::set domain() const;
2204 static inline isl::checked::multi_aff domain_map(isl::checked::space space);
2205 inline isl::checked::multi_aff domain_reverse() const;
2206 inline isl::checked::pw_multi_aff drop_unused_params() const;
2208 inline isl::checked::multi_aff flat_range_product(isl::checked::multi_aff multi2) const;
2209 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2211 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2213 inline isl::checked::multi_aff flat_range_product(const isl::checked::aff &multi2) const;
2214 inline isl::checked::multi_aff floor() const;
2215 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2216 inline isl::checked::multi_aff gist(isl::checked::set context) const;
2217 inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
2218 inline isl::checked::multi_aff gist(const isl::checked::basic_set &context) const;
2219 inline isl::checked::multi_aff gist(const isl::checked::point &context) const;
2221 inline boolean has_range_tuple_id() const;
2222 inline isl::checked::multi_aff identity() const;
2225 inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::set &set) const;
2227 inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
2230 inline isl::checked::pw_multi_aff intersect_params(const isl::checked::set &set) const;
2231 inline boolean involves_locals() const;
2232 inline boolean involves_nan() const;
2233 inline boolean involves_param(const isl::checked::id &id) const;
2234 inline boolean involves_param(const std::string &id) const;
2235 inline boolean involves_param(const isl::checked::id_list &list) const;
2236 inline boolean isa_multi_aff() const;
2237 inline boolean isa_pw_multi_aff() const;
2238 inline isl::checked::aff_list list() const;
2239 inline isl::checked::aff_list get_list() const;
2240 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2241 inline isl::checked::multi_val max_multi_val() const;
2242 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2243 inline isl::checked::multi_val min_multi_val() const;
2245 inline class size n_piece() const;
2246 inline isl::checked::multi_aff neg() const;
2247 inline boolean plain_is_empty() const;
2248 inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2249 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2250 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2251 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
2252 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
2253 inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2256 inline isl::checked::multi_aff product(isl::checked::multi_aff multi2) const;
2257 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2258 inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2259 inline isl::checked::multi_aff product(const isl::checked::aff &multi2) const;
2260 inline isl::checked::multi_aff pullback(isl::checked::multi_aff ma2) const;
2261 inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
2262 inline isl::checked::pw_multi_aff pullback(const isl::checked::pw_multi_aff &pma2) const;
2263 inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
2264 inline isl::checked::multi_aff pullback(const isl::checked::aff &ma2) const;
2267 inline isl::checked::pw_multi_aff range_factor_range() const;
2268 static inline isl::checked::multi_aff range_map(isl::checked::space space);
2269 inline isl::checked::multi_aff range_product(isl::checked::multi_aff multi2) const;
2270 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2272 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2274 inline isl::checked::multi_aff range_product(const isl::checked::aff &multi2) const;
2275 inline isl::checked::id range_tuple_id() const;
2276 inline isl::checked::id get_range_tuple_id() const;
2277 inline isl::checked::multi_aff reset_range_tuple_id() const;
2278 inline isl::checked::multi_aff scale(isl::checked::multi_val mv) const;
2279 inline isl::checked::multi_aff scale(isl::checked::val v) const;
2280 inline isl::checked::multi_aff scale(long v) const;
2281 inline isl::checked::multi_aff scale_down(isl::checked::multi_val mv) const;
2282 inline isl::checked::multi_aff scale_down(isl::checked::val v) const;
2283 inline isl::checked::multi_aff scale_down(long v) const;
2284 inline isl::checked::multi_aff set_at(int pos, isl::checked::aff el) const;
2285 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2286 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2287 inline isl::checked::multi_aff set_range_tuple(isl::checked::id id) const;
2288 inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
2289 inline class size size() const;
2290 inline isl::checked::space space() const;
2291 inline isl::checked::space get_space() const;
2292 inline isl::checked::multi_aff sub(isl::checked::multi_aff multi2) const;
2293 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2294 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2295 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2296 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2297 inline isl::checked::multi_aff sub(const isl::checked::aff &multi2) const;
2298 inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::set &set) const;
2300 inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
2301 inline isl::checked::pw_multi_aff_list to_list() const;
2302 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2304 inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
2307 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2308 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2309 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2310 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2311 static inline isl::checked::multi_aff zero(isl::checked::space space);
2312};
2313
2314// declarations for isl::multi_id
2317
2319 friend inline multi_id manage(__isl_take isl_multi_id *ptr);
2321
2322 protected:
2323 isl_multi_id *ptr = nullptr;
2324
2325 inline explicit multi_id(__isl_take isl_multi_id *ptr);
2326
2327 public:
2328 inline /* implicit */ multi_id();
2329 inline /* implicit */ multi_id(const multi_id &obj);
2331 inline explicit multi_id(isl::checked::ctx ctx, const std::string &str);
2332 inline multi_id &operator=(multi_id obj);
2333 inline ~multi_id();
2334 inline __isl_give isl_multi_id *copy() const &;
2335 inline __isl_give isl_multi_id *copy() && = delete;
2336 inline __isl_keep isl_multi_id *get() const;
2338 inline bool is_null() const;
2339 inline isl::checked::ctx ctx() const;
2340
2341 inline isl::checked::id at(int pos) const;
2342 inline isl::checked::id get_at(int pos) const;
2343 inline isl::checked::multi_id flat_range_product(isl::checked::multi_id multi2) const;
2344 inline isl::checked::id_list list() const;
2345 inline isl::checked::id_list get_list() const;
2346 inline boolean plain_is_equal(const isl::checked::multi_id &multi2) const;
2347 inline isl::checked::multi_id range_product(isl::checked::multi_id multi2) const;
2348 inline isl::checked::multi_id set_at(int pos, isl::checked::id el) const;
2349 inline isl::checked::multi_id set_at(int pos, const std::string &el) const;
2350 inline class size size() const;
2351 inline isl::checked::space space() const;
2352 inline isl::checked::space get_space() const;
2353};
2354
2355// declarations for isl::multi_pw_aff
2358
2362
2363 protected:
2365
2366 inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
2367
2368 public:
2369 inline /* implicit */ multi_pw_aff();
2370 inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
2371 inline /* implicit */ multi_pw_aff(isl::checked::aff aff);
2372 inline /* implicit */ multi_pw_aff(isl::checked::multi_aff ma);
2373 inline /* implicit */ multi_pw_aff(isl::checked::pw_aff pa);
2375 inline /* implicit */ multi_pw_aff(isl::checked::pw_multi_aff pma);
2376 inline explicit multi_pw_aff(isl::checked::ctx ctx, const std::string &str);
2378 inline ~multi_pw_aff();
2379 inline __isl_give isl_multi_pw_aff *copy() const &;
2380 inline __isl_give isl_multi_pw_aff *copy() && = delete;
2381 inline __isl_keep isl_multi_pw_aff *get() const;
2383 inline bool is_null() const;
2384 inline isl::checked::ctx ctx() const;
2385
2386 inline isl::checked::multi_pw_aff add(isl::checked::multi_pw_aff multi2) const;
2387 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2388 inline isl::checked::multi_pw_aff add(const isl::checked::aff &multi2) const;
2389 inline isl::checked::multi_pw_aff add(const isl::checked::multi_aff &multi2) const;
2390 inline isl::checked::multi_pw_aff add(const isl::checked::pw_aff &multi2) const;
2391 inline isl::checked::multi_pw_aff add(const isl::checked::pw_multi_aff &multi2) const;
2393 inline isl::checked::multi_pw_aff add_constant(isl::checked::val v) const;
2394 inline isl::checked::multi_pw_aff add_constant(long v) const;
2395 inline isl::checked::map as_map() const;
2396 inline isl::checked::multi_aff as_multi_aff() const;
2397 inline isl::checked::set as_set() const;
2398 inline isl::checked::pw_aff at(int pos) const;
2399 inline isl::checked::pw_aff get_at(int pos) const;
2400 inline isl::checked::set bind(isl::checked::multi_id tuple) const;
2403 inline isl::checked::multi_pw_aff coalesce() const;
2404 inline isl::checked::set domain() const;
2405 inline isl::checked::multi_pw_aff domain_reverse() const;
2408 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::aff &multi2) const;
2409 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
2410 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_aff &multi2) const;
2411 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_multi_aff &multi2) const;
2412 inline isl::checked::multi_pw_aff gist(isl::checked::set set) const;
2413 inline isl::checked::multi_union_pw_aff gist(const isl::checked::union_set &context) const;
2414 inline isl::checked::multi_pw_aff gist(const isl::checked::basic_set &set) const;
2415 inline isl::checked::multi_pw_aff gist(const isl::checked::point &set) const;
2417 inline boolean has_range_tuple_id() const;
2418 inline isl::checked::multi_pw_aff identity() const;
2422 inline isl::checked::multi_union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2426 inline boolean involves_nan() const;
2427 inline boolean involves_param(const isl::checked::id &id) const;
2428 inline boolean involves_param(const std::string &id) const;
2429 inline boolean involves_param(const isl::checked::id_list &list) const;
2430 inline boolean isa_multi_aff() const;
2431 inline isl::checked::pw_aff_list list() const;
2432 inline isl::checked::pw_aff_list get_list() const;
2433 inline isl::checked::multi_pw_aff max(isl::checked::multi_pw_aff multi2) const;
2434 inline isl::checked::multi_val max_multi_val() const;
2435 inline isl::checked::multi_pw_aff min(isl::checked::multi_pw_aff multi2) const;
2436 inline isl::checked::multi_val min_multi_val() const;
2437 inline isl::checked::multi_pw_aff neg() const;
2438 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2439 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2440 inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2441 inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2442 inline boolean plain_is_equal(const isl::checked::pw_aff &multi2) const;
2443 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &multi2) const;
2444 inline isl::checked::multi_pw_aff product(isl::checked::multi_pw_aff multi2) const;
2446 inline isl::checked::multi_pw_aff pullback(isl::checked::multi_pw_aff mpa2) const;
2448 inline isl::checked::multi_union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2449 inline isl::checked::multi_pw_aff range_product(isl::checked::multi_pw_aff multi2) const;
2451 inline isl::checked::multi_pw_aff range_product(const isl::checked::aff &multi2) const;
2452 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_aff &multi2) const;
2453 inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_aff &multi2) const;
2454 inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_multi_aff &multi2) const;
2455 inline isl::checked::id range_tuple_id() const;
2456 inline isl::checked::id get_range_tuple_id() const;
2458 inline isl::checked::multi_pw_aff scale(isl::checked::multi_val mv) const;
2459 inline isl::checked::multi_pw_aff scale(isl::checked::val v) const;
2460 inline isl::checked::multi_pw_aff scale(long v) const;
2461 inline isl::checked::multi_pw_aff scale_down(isl::checked::multi_val mv) const;
2462 inline isl::checked::multi_pw_aff scale_down(isl::checked::val v) const;
2463 inline isl::checked::multi_pw_aff scale_down(long v) const;
2464 inline isl::checked::multi_pw_aff set_at(int pos, isl::checked::pw_aff el) const;
2465 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2466 inline isl::checked::multi_pw_aff set_range_tuple(isl::checked::id id) const;
2467 inline isl::checked::multi_pw_aff set_range_tuple(const std::string &id) const;
2468 inline class size size() const;
2469 inline isl::checked::space space() const;
2470 inline isl::checked::space get_space() const;
2471 inline isl::checked::multi_pw_aff sub(isl::checked::multi_pw_aff multi2) const;
2472 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2473 inline isl::checked::multi_pw_aff sub(const isl::checked::aff &multi2) const;
2474 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_aff &multi2) const;
2475 inline isl::checked::multi_pw_aff sub(const isl::checked::pw_aff &multi2) const;
2476 inline isl::checked::multi_pw_aff sub(const isl::checked::pw_multi_aff &multi2) const;
2478 inline isl::checked::multi_pw_aff union_add(isl::checked::multi_pw_aff mpa2) const;
2479 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2480 inline isl::checked::multi_pw_aff union_add(const isl::checked::aff &mpa2) const;
2481 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_aff &mpa2) const;
2482 inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_aff &mpa2) const;
2483 inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_multi_aff &mpa2) const;
2484 static inline isl::checked::multi_pw_aff zero(isl::checked::space space);
2485};
2486
2487// declarations for isl::multi_union_pw_aff
2490
2494
2495 protected:
2497
2499
2500 public:
2501 inline /* implicit */ multi_union_pw_aff();
2502 inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
2503 inline /* implicit */ multi_union_pw_aff(isl::checked::multi_pw_aff mpa);
2504 inline /* implicit */ multi_union_pw_aff(isl::checked::union_pw_aff upa);
2506 inline explicit multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str);
2508 inline ~multi_union_pw_aff();
2509 inline __isl_give isl_multi_union_pw_aff *copy() const &;
2511 inline __isl_keep isl_multi_union_pw_aff *get() const;
2513 inline bool is_null() const;
2514 inline isl::checked::ctx ctx() const;
2515
2517 inline isl::checked::union_pw_aff at(int pos) const;
2518 inline isl::checked::union_pw_aff get_at(int pos) const;
2519 inline isl::checked::union_set bind(isl::checked::multi_id tuple) const;
2520 inline isl::checked::multi_union_pw_aff coalesce() const;
2521 inline isl::checked::union_set domain() const;
2525 inline boolean has_range_tuple_id() const;
2528 inline boolean involves_nan() const;
2529 inline isl::checked::union_pw_aff_list list() const;
2530 inline isl::checked::union_pw_aff_list get_list() const;
2531 inline isl::checked::multi_union_pw_aff neg() const;
2532 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2535 inline isl::checked::id range_tuple_id() const;
2536 inline isl::checked::id get_range_tuple_id() const;
2539 inline isl::checked::multi_union_pw_aff scale(isl::checked::val v) const;
2540 inline isl::checked::multi_union_pw_aff scale(long v) const;
2543 inline isl::checked::multi_union_pw_aff scale_down(long v) const;
2544 inline isl::checked::multi_union_pw_aff set_at(int pos, isl::checked::union_pw_aff el) const;
2545 inline isl::checked::multi_union_pw_aff set_range_tuple(isl::checked::id id) const;
2546 inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
2547 inline class size size() const;
2548 inline isl::checked::space space() const;
2549 inline isl::checked::space get_space() const;
2553};
2554
2555// declarations for isl::multi_val
2558
2562
2563 protected:
2564 isl_multi_val *ptr = nullptr;
2565
2566 inline explicit multi_val(__isl_take isl_multi_val *ptr);
2567
2568 public:
2569 inline /* implicit */ multi_val();
2570 inline /* implicit */ multi_val(const multi_val &obj);
2572 inline explicit multi_val(isl::checked::ctx ctx, const std::string &str);
2574 inline ~multi_val();
2575 inline __isl_give isl_multi_val *copy() const &;
2576 inline __isl_give isl_multi_val *copy() && = delete;
2577 inline __isl_keep isl_multi_val *get() const;
2579 inline bool is_null() const;
2580 inline isl::checked::ctx ctx() const;
2581
2582 inline isl::checked::multi_val add(isl::checked::multi_val multi2) const;
2583 inline isl::checked::multi_val add(isl::checked::val v) const;
2584 inline isl::checked::multi_val add(long v) const;
2585 inline isl::checked::val at(int pos) const;
2586 inline isl::checked::val get_at(int pos) const;
2587 inline isl::checked::multi_val flat_range_product(isl::checked::multi_val multi2) const;
2588 inline boolean has_range_tuple_id() const;
2589 inline boolean involves_nan() const;
2590 inline boolean is_equal(const isl::checked::multi_val &mv2) const;
2591 inline isl::checked::val_list list() const;
2592 inline isl::checked::val_list get_list() const;
2593 inline isl::checked::multi_val max(isl::checked::multi_val multi2) const;
2594 inline isl::checked::multi_val min(isl::checked::multi_val multi2) const;
2595 inline isl::checked::multi_val neg() const;
2596 inline boolean plain_is_equal(const isl::checked::multi_val &multi2) const;
2597 inline isl::checked::multi_val product(isl::checked::multi_val multi2) const;
2598 inline isl::checked::multi_val range_product(isl::checked::multi_val multi2) const;
2599 inline isl::checked::id range_tuple_id() const;
2600 inline isl::checked::id get_range_tuple_id() const;
2601 inline isl::checked::multi_val reset_range_tuple_id() const;
2602 inline isl::checked::multi_val scale(isl::checked::multi_val mv) const;
2603 inline isl::checked::multi_val scale(isl::checked::val v) const;
2604 inline isl::checked::multi_val scale(long v) const;
2605 inline isl::checked::multi_val scale_down(isl::checked::multi_val mv) const;
2606 inline isl::checked::multi_val scale_down(isl::checked::val v) const;
2607 inline isl::checked::multi_val scale_down(long v) const;
2608 inline isl::checked::multi_val set_at(int pos, isl::checked::val el) const;
2609 inline isl::checked::multi_val set_at(int pos, long el) const;
2610 inline isl::checked::multi_val set_range_tuple(isl::checked::id id) const;
2611 inline isl::checked::multi_val set_range_tuple(const std::string &id) const;
2612 inline class size size() const;
2613 inline isl::checked::space space() const;
2614 inline isl::checked::space get_space() const;
2615 inline isl::checked::multi_val sub(isl::checked::multi_val multi2) const;
2616 static inline isl::checked::multi_val zero(isl::checked::space space);
2617};
2618
2619// declarations for isl::point
2622
2623class point {
2624 friend inline point manage(__isl_take isl_point *ptr);
2625 friend inline point manage_copy(__isl_keep isl_point *ptr);
2626
2627 protected:
2628 isl_point *ptr = nullptr;
2629
2630 inline explicit point(__isl_take isl_point *ptr);
2631
2632 public:
2633 inline /* implicit */ point();
2634 inline /* implicit */ point(const point &obj);
2635 inline point &operator=(point obj);
2636 inline ~point();
2637 inline __isl_give isl_point *copy() const &;
2638 inline __isl_give isl_point *copy() && = delete;
2639 inline __isl_keep isl_point *get() const;
2640 inline __isl_give isl_point *release();
2641 inline bool is_null() const;
2642 inline isl::checked::ctx ctx() const;
2643
2644 inline isl::checked::basic_set affine_hull() const;
2645 inline isl::checked::basic_set apply(const isl::checked::basic_map &bmap) const;
2646 inline isl::checked::set apply(const isl::checked::map &map) const;
2647 inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
2648 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2649 inline isl::checked::set as_set() const;
2650 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2651 inline isl::checked::set coalesce() const;
2652 inline isl::checked::set complement() const;
2653 inline isl::checked::union_set compute_divs() const;
2654 inline isl::checked::basic_set detect_equalities() const;
2655 inline isl::checked::val dim_max_val(int pos) const;
2656 inline isl::checked::val dim_min_val(int pos) const;
2657 inline isl::checked::set drop_unused_params() const;
2658 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
2659 inline isl::checked::set extract_set(const isl::checked::space &space) const;
2660 inline isl::checked::basic_set flatten() const;
2661 inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
2662 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
2663 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
2664 inline isl::checked::basic_set gist(const isl::checked::basic_set &context) const;
2665 inline isl::checked::set gist(const isl::checked::set &context) const;
2666 inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
2667 inline isl::checked::set gist_params(const isl::checked::set &context) const;
2668 inline isl::checked::map identity() const;
2669 inline isl::checked::pw_aff indicator_function() const;
2670 inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
2671 inline isl::checked::basic_set intersect(const isl::checked::basic_set &bset2) const;
2672 inline isl::checked::set intersect(const isl::checked::set &set2) const;
2673 inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
2674 inline isl::checked::basic_set intersect_params(const isl::checked::basic_set &bset2) const;
2675 inline isl::checked::set intersect_params(const isl::checked::set &params) const;
2676 inline boolean involves_locals() const;
2677 inline boolean is_disjoint(const isl::checked::set &set2) const;
2678 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
2679 inline boolean is_empty() const;
2680 inline boolean is_equal(const isl::checked::basic_set &bset2) const;
2681 inline boolean is_equal(const isl::checked::set &set2) const;
2682 inline boolean is_equal(const isl::checked::union_set &uset2) const;
2683 inline boolean is_singleton() const;
2684 inline boolean is_strict_subset(const isl::checked::set &set2) const;
2685 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
2686 inline boolean is_subset(const isl::checked::basic_set &bset2) const;
2687 inline boolean is_subset(const isl::checked::set &set2) const;
2688 inline boolean is_subset(const isl::checked::union_set &uset2) const;
2689 inline boolean is_wrapping() const;
2690 inline boolean isa_set() const;
2691 inline isl::checked::fixed_box lattice_tile() const;
2692 inline isl::checked::set lexmax() const;
2694 inline isl::checked::set lexmin() const;
2696 inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
2697 inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
2698 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
2699 inline isl::checked::val max_val(const isl::checked::aff &obj) const;
2700 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
2701 inline isl::checked::val min_val(const isl::checked::aff &obj) const;
2702 inline isl::checked::multi_val multi_val() const;
2703 inline isl::checked::multi_val get_multi_val() const;
2704 inline class size n_basic_set() const;
2705 inline isl::checked::pw_aff param_pw_aff_on_domain(const isl::checked::id &id) const;
2706 inline isl::checked::pw_aff param_pw_aff_on_domain(const std::string &id) const;
2707 inline isl::checked::basic_set params() const;
2709 inline isl::checked::basic_set polyhedral_hull() const;
2710 inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
2711 inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
2712 inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
2713 inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
2714 inline isl::checked::set product(const isl::checked::set &set2) const;
2715 inline isl::checked::set project_out_all_params() const;
2716 inline isl::checked::set project_out_param(const isl::checked::id &id) const;
2717 inline isl::checked::set project_out_param(const std::string &id) const;
2718 inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
2719 inline isl::checked::pw_aff pw_aff_on_domain(const isl::checked::val &v) const;
2720 inline isl::checked::pw_aff pw_aff_on_domain(long v) const;
2722 inline isl::checked::basic_set sample() const;
2723 inline isl::checked::point sample_point() const;
2724 inline isl::checked::set_list set_list() const;
2725 inline isl::checked::fixed_box simple_fixed_box_hull() const;
2726 inline isl::checked::space space() const;
2727 inline isl::checked::val stride(int pos) const;
2728 inline isl::checked::set subtract(const isl::checked::set &set2) const;
2729 inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
2730 inline isl::checked::set_list to_list() const;
2731 inline isl::checked::set to_set() const;
2732 inline isl::checked::union_set to_union_set() const;
2733 inline isl::checked::map translation() const;
2734 inline class size tuple_dim() const;
2735 inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
2737 inline isl::checked::set unite(const isl::checked::basic_set &bset2) const;
2738 inline isl::checked::set unite(const isl::checked::set &set2) const;
2739 inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
2740 inline isl::checked::basic_set unshifted_simple_hull() const;
2741 inline isl::checked::map unwrap() const;
2742 inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
2743 inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
2744 inline isl::checked::set wrapped_reverse() const;
2745};
2746
2747// declarations for isl::pw_aff
2750
2751class pw_aff {
2752 friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2753 friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2754
2755 protected:
2756 isl_pw_aff *ptr = nullptr;
2757
2758 inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
2759
2760 public:
2761 inline /* implicit */ pw_aff();
2762 inline /* implicit */ pw_aff(const pw_aff &obj);
2763 inline /* implicit */ pw_aff(isl::checked::aff aff);
2764 inline explicit pw_aff(isl::checked::ctx ctx, const std::string &str);
2765 inline pw_aff &operator=(pw_aff obj);
2766 inline ~pw_aff();
2767 inline __isl_give isl_pw_aff *copy() const &;
2768 inline __isl_give isl_pw_aff *copy() && = delete;
2769 inline __isl_keep isl_pw_aff *get() const;
2770 inline __isl_give isl_pw_aff *release();
2771 inline bool is_null() const;
2772 inline isl::checked::ctx ctx() const;
2773
2774 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2775 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2776 inline isl::checked::pw_aff add(isl::checked::pw_aff pwaff2) const;
2777 inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
2778 inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
2779 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2780 inline isl::checked::pw_aff add(const isl::checked::aff &pwaff2) const;
2781 inline isl::checked::pw_aff add_constant(isl::checked::val v) const;
2782 inline isl::checked::pw_aff add_constant(long v) const;
2783 inline isl::checked::pw_multi_aff add_constant(const isl::checked::multi_val &mv) const;
2784 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2785 inline isl::checked::aff as_aff() const;
2786 inline isl::checked::map as_map() const;
2787 inline isl::checked::multi_aff as_multi_aff() const;
2789 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2790 inline isl::checked::set as_set() const;
2791 inline isl::checked::union_map as_union_map() const;
2792 inline isl::checked::pw_aff at(int pos) const;
2793 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2794 inline isl::checked::set bind(isl::checked::id id) const;
2795 inline isl::checked::set bind(const std::string &id) const;
2798 inline isl::checked::pw_aff ceil() const;
2799 inline isl::checked::pw_aff coalesce() const;
2800 inline isl::checked::pw_aff cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const;
2801 inline isl::checked::pw_aff div(isl::checked::pw_aff pa2) const;
2802 inline isl::checked::set domain() const;
2803 inline isl::checked::pw_aff domain_reverse() const;
2804 inline isl::checked::pw_aff drop_unused_params() const;
2805 inline isl::checked::set eq_set(isl::checked::pw_aff pwaff2) const;
2806 inline isl::checked::val eval(isl::checked::point pnt) const;
2808 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2810 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2812 inline isl::checked::pw_aff floor() const;
2813 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2814 inline isl::checked::set ge_set(isl::checked::pw_aff pwaff2) const;
2815 inline isl::checked::pw_aff gist(isl::checked::set context) const;
2816 inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
2817 inline isl::checked::pw_aff gist(const isl::checked::basic_set &context) const;
2818 inline isl::checked::pw_aff gist(const isl::checked::point &context) const;
2819 inline isl::checked::pw_aff gist_params(isl::checked::set context) const;
2820 inline isl::checked::set gt_set(isl::checked::pw_aff pwaff2) const;
2821 inline boolean has_range_tuple_id() const;
2822 inline isl::checked::multi_pw_aff identity() const;
2824 inline isl::checked::pw_aff intersect_domain(isl::checked::set set) const;
2825 inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
2826 inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2827 inline isl::checked::pw_aff intersect_domain(const isl::checked::basic_set &set) const;
2828 inline isl::checked::pw_aff intersect_domain(const isl::checked::point &set) const;
2831 inline isl::checked::pw_aff intersect_params(isl::checked::set set) const;
2832 inline boolean involves_locals() const;
2833 inline boolean involves_nan() const;
2834 inline boolean involves_param(const isl::checked::id &id) const;
2835 inline boolean involves_param(const std::string &id) const;
2836 inline boolean involves_param(const isl::checked::id_list &list) const;
2837 inline boolean isa_aff() const;
2838 inline boolean isa_multi_aff() const;
2839 inline boolean isa_pw_multi_aff() const;
2840 inline isl::checked::set le_set(isl::checked::pw_aff pwaff2) const;
2841 inline isl::checked::pw_aff_list list() const;
2842 inline isl::checked::set lt_set(isl::checked::pw_aff pwaff2) const;
2843 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2844 inline isl::checked::pw_aff max(isl::checked::pw_aff pwaff2) const;
2845 inline isl::checked::pw_aff max(const isl::checked::aff &pwaff2) const;
2846 inline isl::checked::multi_val max_multi_val() const;
2847 inline isl::checked::val max_val() const;
2848 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2849 inline isl::checked::pw_aff min(isl::checked::pw_aff pwaff2) const;
2850 inline isl::checked::pw_aff min(const isl::checked::aff &pwaff2) const;
2851 inline isl::checked::multi_val min_multi_val() const;
2852 inline isl::checked::val min_val() const;
2853 inline isl::checked::pw_aff mod(isl::checked::val mod) const;
2854 inline isl::checked::pw_aff mod(long mod) const;
2855 inline isl::checked::pw_aff mul(isl::checked::pw_aff pwaff2) const;
2856 inline class size n_piece() const;
2857 inline isl::checked::set ne_set(isl::checked::pw_aff pwaff2) const;
2858 inline isl::checked::pw_aff neg() const;
2859 static inline isl::checked::pw_aff param_on_domain(isl::checked::set domain, isl::checked::id id);
2860 inline isl::checked::set params() const;
2861 inline boolean plain_is_empty() const;
2862 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2863 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2864 inline boolean plain_is_equal(const isl::checked::pw_aff &pwaff2) const;
2865 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
2866 inline boolean plain_is_equal(const isl::checked::union_pw_aff &upa2) const;
2867 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
2868 inline boolean plain_is_equal(const isl::checked::aff &pwaff2) const;
2871 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2872 inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2873 inline isl::checked::pw_aff pullback(isl::checked::multi_aff ma) const;
2874 inline isl::checked::pw_aff pullback(isl::checked::multi_pw_aff mpa) const;
2876 inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2879 inline isl::checked::pw_multi_aff range_factor_range() const;
2880 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2882 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2884 inline isl::checked::id range_tuple_id() const;
2886 inline isl::checked::pw_aff scale(isl::checked::val v) const;
2887 inline isl::checked::pw_aff scale(long v) const;
2888 inline isl::checked::pw_multi_aff scale(const isl::checked::multi_val &mv) const;
2889 inline isl::checked::pw_aff scale_down(isl::checked::val f) const;
2890 inline isl::checked::pw_aff scale_down(long f) const;
2891 inline isl::checked::pw_multi_aff scale_down(const isl::checked::multi_val &mv) const;
2892 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2893 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2894 inline isl::checked::pw_multi_aff set_range_tuple(const isl::checked::id &id) const;
2895 inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
2896 inline class size size() const;
2897 inline isl::checked::space space() const;
2898 inline isl::checked::space get_space() const;
2899 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2900 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2901 inline isl::checked::pw_aff sub(isl::checked::pw_aff pwaff2) const;
2902 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2903 inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
2904 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2905 inline isl::checked::pw_aff sub(const isl::checked::aff &pwaff2) const;
2906 inline isl::checked::pw_aff subtract_domain(isl::checked::set set) const;
2907 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
2908 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
2909 inline isl::checked::pw_aff subtract_domain(const isl::checked::basic_set &set) const;
2910 inline isl::checked::pw_aff subtract_domain(const isl::checked::point &set) const;
2911 inline isl::checked::pw_aff tdiv_q(isl::checked::pw_aff pa2) const;
2912 inline isl::checked::pw_aff tdiv_r(isl::checked::pw_aff pa2) const;
2913 inline isl::checked::pw_aff_list to_list() const;
2914 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2915 inline isl::checked::union_pw_aff to_union_pw_aff() const;
2918 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2919 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2920 inline isl::checked::pw_aff union_add(isl::checked::pw_aff pwaff2) const;
2921 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2922 inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
2923 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2924 inline isl::checked::pw_aff union_add(const isl::checked::aff &pwaff2) const;
2925};
2926
2927// declarations for isl::pw_aff_list
2928inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2929inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2930
2932 friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2933 friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2934
2935 protected:
2936 isl_pw_aff_list *ptr = nullptr;
2937
2938 inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
2939
2940 public:
2941 inline /* implicit */ pw_aff_list();
2942 inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
2943 inline explicit pw_aff_list(isl::checked::ctx ctx, int n);
2944 inline explicit pw_aff_list(isl::checked::pw_aff el);
2945 inline explicit pw_aff_list(isl::checked::ctx ctx, const std::string &str);
2947 inline ~pw_aff_list();
2948 inline __isl_give isl_pw_aff_list *copy() const &;
2949 inline __isl_give isl_pw_aff_list *copy() && = delete;
2950 inline __isl_keep isl_pw_aff_list *get() const;
2951 inline __isl_give isl_pw_aff_list *release();
2952 inline bool is_null() const;
2953 inline isl::checked::ctx ctx() const;
2954
2955 inline isl::checked::pw_aff_list add(isl::checked::pw_aff el) const;
2956 inline isl::checked::pw_aff at(int index) const;
2957 inline isl::checked::pw_aff get_at(int index) const;
2958 inline isl::checked::pw_aff_list clear() const;
2959 inline isl::checked::pw_aff_list concat(isl::checked::pw_aff_list list2) const;
2960 inline isl::checked::pw_aff_list drop(unsigned int first, unsigned int n) const;
2961 inline stat foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const;
2962 inline stat foreach_scc(const std::function<boolean(isl::checked::pw_aff, isl::checked::pw_aff)> &follows, const std::function<stat(isl::checked::pw_aff_list)> &fn) const;
2963 inline isl::checked::pw_aff_list insert(unsigned int pos, isl::checked::pw_aff el) const;
2964 inline isl::checked::pw_aff_list set_at(int index, isl::checked::pw_aff el) const;
2965 inline class size size() const;
2966};
2967
2968// declarations for isl::pw_multi_aff
2971
2975
2976 protected:
2978
2979 inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
2980
2981 public:
2982 inline /* implicit */ pw_multi_aff();
2983 inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
2984 inline /* implicit */ pw_multi_aff(isl::checked::multi_aff ma);
2985 inline /* implicit */ pw_multi_aff(isl::checked::pw_aff pa);
2986 inline explicit pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
2988 inline ~pw_multi_aff();
2989 inline __isl_give isl_pw_multi_aff *copy() const &;
2990 inline __isl_give isl_pw_multi_aff *copy() && = delete;
2991 inline __isl_keep isl_pw_multi_aff *get() const;
2993 inline bool is_null() const;
2994 inline isl::checked::ctx ctx() const;
2995
2996 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2997 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2998 inline isl::checked::pw_multi_aff add(isl::checked::pw_multi_aff pma2) const;
2999 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
3000 inline isl::checked::pw_multi_aff add(const isl::checked::multi_aff &pma2) const;
3001 inline isl::checked::pw_multi_aff add(const isl::checked::pw_aff &pma2) const;
3003 inline isl::checked::pw_multi_aff add_constant(isl::checked::val v) const;
3004 inline isl::checked::pw_multi_aff add_constant(long v) const;
3005 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
3006 inline isl::checked::map as_map() const;
3007 inline isl::checked::multi_aff as_multi_aff() const;
3009 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3010 inline isl::checked::set as_set() const;
3011 inline isl::checked::union_map as_union_map() const;
3012 inline isl::checked::pw_aff at(int pos) const;
3013 inline isl::checked::pw_aff get_at(int pos) const;
3014 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
3017 inline isl::checked::pw_multi_aff coalesce() const;
3018 inline isl::checked::set domain() const;
3020 inline isl::checked::pw_multi_aff domain_reverse() const;
3021 inline isl::checked::pw_multi_aff drop_unused_params() const;
3023 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
3027 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::multi_aff &pma2) const;
3028 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_aff &pma2) const;
3029 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
3030 inline isl::checked::pw_multi_aff gist(isl::checked::set set) const;
3031 inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
3032 inline isl::checked::pw_multi_aff gist(const isl::checked::basic_set &set) const;
3033 inline isl::checked::pw_multi_aff gist(const isl::checked::point &set) const;
3035 inline boolean has_range_tuple_id() const;
3036 inline isl::checked::multi_pw_aff identity() const;
3041 inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
3043 inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::point &set) const;
3047 inline boolean involves_locals() const;
3048 inline boolean involves_nan() const;
3049 inline boolean involves_param(const isl::checked::id &id) const;
3050 inline boolean involves_param(const std::string &id) const;
3051 inline boolean involves_param(const isl::checked::id_list &list) const;
3052 inline boolean isa_multi_aff() const;
3053 inline boolean isa_pw_multi_aff() const;
3054 inline isl::checked::pw_aff_list list() const;
3055 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
3056 inline isl::checked::multi_val max_multi_val() const;
3057 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
3058 inline isl::checked::multi_val min_multi_val() const;
3060 inline class size n_piece() const;
3061 inline isl::checked::multi_pw_aff neg() const;
3062 inline boolean plain_is_empty() const;
3063 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
3064 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
3065 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
3066 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
3067 inline boolean plain_is_equal(const isl::checked::multi_aff &pma2) const;
3068 inline boolean plain_is_equal(const isl::checked::pw_aff &pma2) const;
3073 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
3074 inline isl::checked::pw_multi_aff product(isl::checked::pw_multi_aff pma2) const;
3075 inline isl::checked::pw_multi_aff product(const isl::checked::multi_aff &pma2) const;
3076 inline isl::checked::pw_multi_aff product(const isl::checked::pw_aff &pma2) const;
3077 inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
3079 inline isl::checked::pw_multi_aff pullback(isl::checked::pw_multi_aff pma2) const;
3080 inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
3083 inline isl::checked::pw_multi_aff range_factor_range() const;
3085 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
3089 inline isl::checked::pw_multi_aff range_product(const isl::checked::multi_aff &pma2) const;
3090 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_aff &pma2) const;
3091 inline isl::checked::id range_tuple_id() const;
3092 inline isl::checked::id get_range_tuple_id() const;
3094 inline isl::checked::pw_multi_aff scale(isl::checked::multi_val mv) const;
3095 inline isl::checked::pw_multi_aff scale(isl::checked::val v) const;
3096 inline isl::checked::pw_multi_aff scale(long v) const;
3097 inline isl::checked::pw_multi_aff scale_down(isl::checked::multi_val mv) const;
3098 inline isl::checked::pw_multi_aff scale_down(isl::checked::val v) const;
3099 inline isl::checked::pw_multi_aff scale_down(long v) const;
3100 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
3101 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
3102 inline isl::checked::pw_multi_aff set_range_tuple(isl::checked::id id) const;
3103 inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
3104 inline class size size() const;
3105 inline isl::checked::space space() const;
3106 inline isl::checked::space get_space() const;
3107 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
3108 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
3109 inline isl::checked::pw_multi_aff sub(isl::checked::pw_multi_aff pma2) const;
3110 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
3111 inline isl::checked::pw_multi_aff sub(const isl::checked::multi_aff &pma2) const;
3112 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_aff &pma2) const;
3115 inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
3117 inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::point &set) const;
3118 inline isl::checked::pw_multi_aff_list to_list() const;
3119 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
3122 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
3123 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
3124 inline isl::checked::pw_multi_aff union_add(isl::checked::pw_multi_aff pma2) const;
3125 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
3126 inline isl::checked::pw_multi_aff union_add(const isl::checked::multi_aff &pma2) const;
3127 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_aff &pma2) const;
3128 static inline isl::checked::pw_multi_aff zero(isl::checked::space space);
3129};
3130
3131// declarations for isl::pw_multi_aff_list
3132inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3133inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3134
3136 friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3137 friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3138
3139 protected:
3140 isl_pw_multi_aff_list *ptr = nullptr;
3141
3142 inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
3143
3144 public:
3145 inline /* implicit */ pw_multi_aff_list();
3146 inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
3147 inline explicit pw_multi_aff_list(isl::checked::ctx ctx, int n);
3149 inline explicit pw_multi_aff_list(isl::checked::ctx ctx, const std::string &str);
3151 inline ~pw_multi_aff_list();
3152 inline __isl_give isl_pw_multi_aff_list *copy() const &;
3153 inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
3154 inline __isl_keep isl_pw_multi_aff_list *get() const;
3155 inline __isl_give isl_pw_multi_aff_list *release();
3156 inline bool is_null() const;
3157 inline isl::checked::ctx ctx() const;
3158
3160 inline isl::checked::pw_multi_aff at(int index) const;
3161 inline isl::checked::pw_multi_aff get_at(int index) const;
3162 inline isl::checked::pw_multi_aff_list clear() const;
3164 inline isl::checked::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3165 inline stat foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const;
3166 inline stat foreach_scc(const std::function<boolean(isl::checked::pw_multi_aff, isl::checked::pw_multi_aff)> &follows, const std::function<stat(isl::checked::pw_multi_aff_list)> &fn) const;
3167 inline isl::checked::pw_multi_aff_list insert(unsigned int pos, isl::checked::pw_multi_aff el) const;
3168 inline isl::checked::pw_multi_aff_list set_at(int index, isl::checked::pw_multi_aff el) const;
3169 inline class size size() const;
3170};
3171
3172// declarations for isl::schedule
3175
3177 friend inline schedule manage(__isl_take isl_schedule *ptr);
3179
3180 protected:
3181 isl_schedule *ptr = nullptr;
3182
3183 inline explicit schedule(__isl_take isl_schedule *ptr);
3184
3185 public:
3186 inline /* implicit */ schedule();
3187 inline /* implicit */ schedule(const schedule &obj);
3188 inline explicit schedule(isl::checked::ctx ctx, const std::string &str);
3189 inline schedule &operator=(schedule obj);
3190 inline ~schedule();
3191 inline __isl_give isl_schedule *copy() const &;
3192 inline __isl_give isl_schedule *copy() && = delete;
3193 inline __isl_keep isl_schedule *get() const;
3195 inline bool is_null() const;
3196 inline isl::checked::ctx ctx() const;
3197
3198 inline isl::checked::union_set domain() const;
3199 inline isl::checked::union_set get_domain() const;
3201 inline isl::checked::union_map map() const;
3202 inline isl::checked::union_map get_map() const;
3203 inline isl::checked::schedule pullback(isl::checked::union_pw_multi_aff upma) const;
3204 inline isl::checked::schedule_node root() const;
3205 inline isl::checked::schedule_node get_root() const;
3206};
3207
3208// declarations for isl::schedule_constraints
3211
3215
3216 protected:
3218
3220
3221 public:
3222 inline /* implicit */ schedule_constraints();
3223 inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
3224 inline explicit schedule_constraints(isl::checked::ctx ctx, const std::string &str);
3226 inline ~schedule_constraints();
3227 inline __isl_give isl_schedule_constraints *copy() const &;
3229 inline __isl_keep isl_schedule_constraints *get() const;
3231 inline bool is_null() const;
3232 inline isl::checked::ctx ctx() const;
3233
3234 inline isl::checked::union_map coincidence() const;
3235 inline isl::checked::union_map get_coincidence() const;
3236 inline isl::checked::schedule compute_schedule() const;
3237 inline isl::checked::union_map conditional_validity() const;
3241 inline isl::checked::set context() const;
3242 inline isl::checked::set get_context() const;
3243 inline isl::checked::union_set domain() const;
3244 inline isl::checked::union_set get_domain() const;
3246 inline isl::checked::union_map proximity() const;
3247 inline isl::checked::union_map get_proximity() const;
3253 inline isl::checked::union_map validity() const;
3254 inline isl::checked::union_map get_validity() const;
3255};
3256
3257// declarations for isl::schedule_node
3260
3264
3265 protected:
3267
3269
3270 public:
3271 inline /* implicit */ schedule_node();
3272 inline /* implicit */ schedule_node(const schedule_node &obj);
3274 inline ~schedule_node();
3275 inline __isl_give isl_schedule_node *copy() const &;
3276 inline __isl_give isl_schedule_node *copy() && = delete;
3277 inline __isl_keep isl_schedule_node *get() const;
3279 inline bool is_null() const;
3280 private:
3281 template <typename T,
3282 typename = typename std::enable_if<std::is_same<
3283 const decltype(isl_schedule_node_get_type(NULL)),
3284 const T>::value>::type>
3285 inline boolean isa_type(T subtype) const;
3286 public:
3287 template <class T> inline boolean isa() const;
3288 template <class T> inline T as() const;
3289 inline isl::checked::ctx ctx() const;
3290
3291 inline isl::checked::schedule_node ancestor(int generation) const;
3292 inline class size ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
3294 inline isl::checked::schedule_node child(int pos) const;
3295 inline class size child_position() const;
3296 inline class size get_child_position() const;
3297 inline boolean every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const;
3298 inline isl::checked::schedule_node first_child() const;
3299 inline stat foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const;
3300 inline stat foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const;
3302 static inline isl::checked::schedule_node from_extension(isl::checked::union_map extension);
3305 inline boolean has_children() const;
3306 inline boolean has_next_sibling() const;
3307 inline boolean has_parent() const;
3308 inline boolean has_previous_sibling() const;
3310 inline isl::checked::schedule_node insert_filter(isl::checked::union_set filter) const;
3312 inline isl::checked::schedule_node insert_mark(isl::checked::id mark) const;
3313 inline isl::checked::schedule_node insert_mark(const std::string &mark) const;
3316 inline isl::checked::schedule_node insert_set(isl::checked::union_set_list filters) const;
3317 inline boolean is_equal(const isl::checked::schedule_node &node2) const;
3318 inline boolean is_subtree_anchored() const;
3320 inline class size n_children() const;
3321 inline isl::checked::schedule_node next_sibling() const;
3322 inline isl::checked::schedule_node order_after(isl::checked::union_set filter) const;
3323 inline isl::checked::schedule_node order_before(isl::checked::union_set filter) const;
3324 inline isl::checked::schedule_node parent() const;
3331 inline isl::checked::schedule_node previous_sibling() const;
3332 inline isl::checked::schedule_node root() const;
3333 inline isl::checked::schedule schedule() const;
3334 inline isl::checked::schedule get_schedule() const;
3335 inline isl::checked::schedule_node shared_ancestor(const isl::checked::schedule_node &node2) const;
3336 inline isl::checked::schedule_node get_shared_ancestor(const isl::checked::schedule_node &node2) const;
3337 inline class size tree_depth() const;
3338 inline class size get_tree_depth() const;
3339};
3340
3341// declarations for isl::schedule_node_band
3342
3344 template <class T>
3345 friend boolean schedule_node::isa() const;
3347 static const auto type = isl_schedule_node_band;
3348
3349 protected:
3351
3352 public:
3353 inline /* implicit */ schedule_node_band();
3354 inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
3356 inline isl::checked::ctx ctx() const;
3357
3362 inline boolean member_get_coincident(int pos) const;
3363 inline schedule_node_band member_set_coincident(int pos, int coincident) const;
3365 inline class size n_member() const;
3368 inline boolean permutable() const;
3369 inline boolean get_permutable() const;
3375 inline schedule_node_band split(int pos) const;
3381};
3382
3383// declarations for isl::schedule_node_context
3384
3386 template <class T>
3387 friend boolean schedule_node::isa() const;
3389 static const auto type = isl_schedule_node_context;
3390
3391 protected:
3393
3394 public:
3395 inline /* implicit */ schedule_node_context();
3396 inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
3398 inline isl::checked::ctx ctx() const;
3399
3400 inline isl::checked::set context() const;
3401 inline isl::checked::set get_context() const;
3402};
3403
3404// declarations for isl::schedule_node_domain
3405
3407 template <class T>
3408 friend boolean schedule_node::isa() const;
3410 static const auto type = isl_schedule_node_domain;
3411
3412 protected:
3414
3415 public:
3416 inline /* implicit */ schedule_node_domain();
3417 inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
3419 inline isl::checked::ctx ctx() const;
3420
3421 inline isl::checked::union_set domain() const;
3422 inline isl::checked::union_set get_domain() const;
3423};
3424
3425// declarations for isl::schedule_node_expansion
3426
3428 template <class T>
3429 friend boolean schedule_node::isa() const;
3432
3433 protected:
3435
3436 public:
3437 inline /* implicit */ schedule_node_expansion();
3438 inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
3440 inline isl::checked::ctx ctx() const;
3441
3444 inline isl::checked::union_map expansion() const;
3446};
3447
3448// declarations for isl::schedule_node_extension
3449
3451 template <class T>
3452 friend boolean schedule_node::isa() const;
3455
3456 protected:
3458
3459 public:
3460 inline /* implicit */ schedule_node_extension();
3461 inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
3463 inline isl::checked::ctx ctx() const;
3464
3465 inline isl::checked::union_map extension() const;
3467};
3468
3469// declarations for isl::schedule_node_filter
3470
3472 template <class T>
3473 friend boolean schedule_node::isa() const;
3475 static const auto type = isl_schedule_node_filter;
3476
3477 protected:
3479
3480 public:
3481 inline /* implicit */ schedule_node_filter();
3482 inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
3484 inline isl::checked::ctx ctx() const;
3485
3486 inline isl::checked::union_set filter() const;
3487 inline isl::checked::union_set get_filter() const;
3488};
3489
3490// declarations for isl::schedule_node_guard
3491
3493 template <class T>
3494 friend boolean schedule_node::isa() const;
3496 static const auto type = isl_schedule_node_guard;
3497
3498 protected:
3500
3501 public:
3502 inline /* implicit */ schedule_node_guard();
3503 inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
3505 inline isl::checked::ctx ctx() const;
3506
3507 inline isl::checked::set guard() const;
3508 inline isl::checked::set get_guard() const;
3509};
3510
3511// declarations for isl::schedule_node_leaf
3512
3514 template <class T>
3515 friend boolean schedule_node::isa() const;
3517 static const auto type = isl_schedule_node_leaf;
3518
3519 protected:
3521
3522 public:
3523 inline /* implicit */ schedule_node_leaf();
3524 inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
3526 inline isl::checked::ctx ctx() const;
3527
3528};
3529
3530// declarations for isl::schedule_node_mark
3531
3533 template <class T>
3534 friend boolean schedule_node::isa() const;
3536 static const auto type = isl_schedule_node_mark;
3537
3538 protected:
3540
3541 public:
3542 inline /* implicit */ schedule_node_mark();
3543 inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
3545 inline isl::checked::ctx ctx() const;
3546
3547};
3548
3549// declarations for isl::schedule_node_sequence
3550
3552 template <class T>
3553 friend boolean schedule_node::isa() const;
3556
3557 protected:
3559
3560 public:
3561 inline /* implicit */ schedule_node_sequence();
3562 inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
3564 inline isl::checked::ctx ctx() const;
3565
3566};
3567
3568// declarations for isl::schedule_node_set
3569
3571 template <class T>
3572 friend boolean schedule_node::isa() const;
3574 static const auto type = isl_schedule_node_set;
3575
3576 protected:
3578
3579 public:
3580 inline /* implicit */ schedule_node_set();
3581 inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
3583 inline isl::checked::ctx ctx() const;
3584
3585};
3586
3587// declarations for isl::set
3588inline set manage(__isl_take isl_set *ptr);
3589inline set manage_copy(__isl_keep isl_set *ptr);
3590
3591class set {
3592 friend inline set manage(__isl_take isl_set *ptr);
3593 friend inline set manage_copy(__isl_keep isl_set *ptr);
3594
3595 protected:
3596 isl_set *ptr = nullptr;
3597
3598 inline explicit set(__isl_take isl_set *ptr);
3599
3600 public:
3601 inline /* implicit */ set();
3602 inline /* implicit */ set(const set &obj);
3603 inline /* implicit */ set(isl::checked::basic_set bset);
3604 inline /* implicit */ set(isl::checked::point pnt);
3605 inline explicit set(isl::checked::ctx ctx, const std::string &str);
3606 inline set &operator=(set obj);
3607 inline ~set();
3608 inline __isl_give isl_set *copy() const &;
3609 inline __isl_give isl_set *copy() && = delete;
3610 inline __isl_keep isl_set *get() const;
3611 inline __isl_give isl_set *release();
3612 inline bool is_null() const;
3613 inline isl::checked::ctx ctx() const;
3614
3615 inline isl::checked::basic_set affine_hull() const;
3616 inline isl::checked::set apply(isl::checked::map map) const;
3617 inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
3618 inline isl::checked::set apply(const isl::checked::basic_map &map) const;
3619 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3620 inline isl::checked::set as_set() const;
3621 inline isl::checked::set bind(isl::checked::multi_id tuple) const;
3622 inline isl::checked::set coalesce() const;
3623 inline isl::checked::set complement() const;
3624 inline isl::checked::union_set compute_divs() const;
3625 inline isl::checked::set detect_equalities() const;
3626 inline isl::checked::val dim_max_val(int pos) const;
3627 inline isl::checked::val dim_min_val(int pos) const;
3628 inline isl::checked::set drop_unused_params() const;
3629 static inline isl::checked::set empty(isl::checked::space space);
3630 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
3631 inline isl::checked::set extract_set(const isl::checked::space &space) const;
3632 inline isl::checked::set flatten() const;
3633 inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
3634 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
3635 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
3636 inline isl::checked::set gist(isl::checked::set context) const;
3637 inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
3638 inline isl::checked::set gist(const isl::checked::basic_set &context) const;
3639 inline isl::checked::set gist(const isl::checked::point &context) const;
3640 inline isl::checked::set gist_params(isl::checked::set context) const;
3641 inline isl::checked::map identity() const;
3642 inline isl::checked::pw_aff indicator_function() const;
3643 inline isl::checked::map insert_domain(isl::checked::space domain) const;
3644 inline isl::checked::set intersect(isl::checked::set set2) const;
3645 inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
3646 inline isl::checked::set intersect(const isl::checked::basic_set &set2) const;
3647 inline isl::checked::set intersect(const isl::checked::point &set2) const;
3648 inline isl::checked::set intersect_params(isl::checked::set params) const;
3649 inline boolean involves_locals() const;
3650 inline boolean is_disjoint(const isl::checked::set &set2) const;
3651 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
3652 inline boolean is_disjoint(const isl::checked::basic_set &set2) const;
3653 inline boolean is_disjoint(const isl::checked::point &set2) const;
3654 inline boolean is_empty() const;
3655 inline boolean is_equal(const isl::checked::set &set2) const;
3656 inline boolean is_equal(const isl::checked::union_set &uset2) const;
3657 inline boolean is_equal(const isl::checked::basic_set &set2) const;
3658 inline boolean is_equal(const isl::checked::point &set2) const;
3659 inline boolean is_singleton() const;
3660 inline boolean is_strict_subset(const isl::checked::set &set2) const;
3661 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
3662 inline boolean is_strict_subset(const isl::checked::basic_set &set2) const;
3663 inline boolean is_strict_subset(const isl::checked::point &set2) const;
3664 inline boolean is_subset(const isl::checked::set &set2) const;
3665 inline boolean is_subset(const isl::checked::union_set &uset2) const;
3666 inline boolean is_subset(const isl::checked::basic_set &set2) const;
3667 inline boolean is_subset(const isl::checked::point &set2) const;
3668 inline boolean is_wrapping() const;
3669 inline boolean isa_set() const;
3670 inline isl::checked::fixed_box lattice_tile() const;
3671 inline isl::checked::fixed_box get_lattice_tile() const;
3672 inline isl::checked::set lexmax() const;
3674 inline isl::checked::set lexmin() const;
3676 inline isl::checked::set lower_bound(isl::checked::multi_pw_aff lower) const;
3677 inline isl::checked::set lower_bound(isl::checked::multi_val lower) const;
3678 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
3679 inline isl::checked::val max_val(const isl::checked::aff &obj) const;
3680 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
3681 inline isl::checked::val min_val(const isl::checked::aff &obj) const;
3682 inline class size n_basic_set() const;
3683 inline isl::checked::pw_aff param_pw_aff_on_domain(isl::checked::id id) const;
3684 inline isl::checked::pw_aff param_pw_aff_on_domain(const std::string &id) const;
3685 inline isl::checked::set params() const;
3688 inline isl::checked::basic_set polyhedral_hull() const;
3689 inline isl::checked::set preimage(isl::checked::multi_aff ma) const;
3690 inline isl::checked::set preimage(isl::checked::multi_pw_aff mpa) const;
3691 inline isl::checked::set preimage(isl::checked::pw_multi_aff pma) const;
3692 inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
3693 inline isl::checked::set product(isl::checked::set set2) const;
3694 inline isl::checked::set project_out_all_params() const;
3695 inline isl::checked::set project_out_param(isl::checked::id id) const;
3696 inline isl::checked::set project_out_param(const std::string &id) const;
3697 inline isl::checked::set project_out_param(isl::checked::id_list list) const;
3698 inline isl::checked::pw_aff pw_aff_on_domain(isl::checked::val v) const;
3699 inline isl::checked::pw_aff pw_aff_on_domain(long v) const;
3701 inline isl::checked::basic_set sample() const;
3702 inline isl::checked::point sample_point() const;
3703 inline isl::checked::set_list set_list() const;
3704 inline isl::checked::fixed_box simple_fixed_box_hull() const;
3706 inline isl::checked::space space() const;
3707 inline isl::checked::space get_space() const;
3708 inline isl::checked::val stride(int pos) const;
3709 inline isl::checked::val get_stride(int pos) const;
3710 inline isl::checked::set subtract(isl::checked::set set2) const;
3711 inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
3712 inline isl::checked::set subtract(const isl::checked::basic_set &set2) const;
3713 inline isl::checked::set subtract(const isl::checked::point &set2) const;
3714 inline isl::checked::set_list to_list() const;
3715 inline isl::checked::union_set to_union_set() const;
3716 inline isl::checked::map translation() const;
3717 inline class size tuple_dim() const;
3720 inline isl::checked::set unite(isl::checked::set set2) const;
3721 inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
3722 inline isl::checked::set unite(const isl::checked::basic_set &set2) const;
3723 inline isl::checked::set unite(const isl::checked::point &set2) const;
3724 static inline isl::checked::set universe(isl::checked::space space);
3725 inline isl::checked::basic_set unshifted_simple_hull() const;
3726 inline isl::checked::map unwrap() const;
3727 inline isl::checked::set upper_bound(isl::checked::multi_pw_aff upper) const;
3728 inline isl::checked::set upper_bound(isl::checked::multi_val upper) const;
3729 inline isl::checked::set wrapped_reverse() const;
3730};
3731
3732// declarations for isl::set_list
3735
3737 friend inline set_list manage(__isl_take isl_set_list *ptr);
3739
3740 protected:
3741 isl_set_list *ptr = nullptr;
3742
3743 inline explicit set_list(__isl_take isl_set_list *ptr);
3744
3745 public:
3746 inline /* implicit */ set_list();
3747 inline /* implicit */ set_list(const set_list &obj);
3748 inline explicit set_list(isl::checked::ctx ctx, int n);
3749 inline explicit set_list(isl::checked::set el);
3750 inline explicit set_list(isl::checked::ctx ctx, const std::string &str);
3751 inline set_list &operator=(set_list obj);
3752 inline ~set_list();
3753 inline __isl_give isl_set_list *copy() const &;
3754 inline __isl_give isl_set_list *copy() && = delete;
3755 inline __isl_keep isl_set_list *get() const;
3757 inline bool is_null() const;
3758 inline isl::checked::ctx ctx() const;
3759
3760 inline isl::checked::set_list add(isl::checked::set el) const;
3761 inline isl::checked::set at(int index) const;
3762 inline isl::checked::set get_at(int index) const;
3763 inline isl::checked::set_list clear() const;
3764 inline isl::checked::set_list concat(isl::checked::set_list list2) const;
3765 inline isl::checked::set_list drop(unsigned int first, unsigned int n) const;
3766 inline stat foreach(const std::function<stat(isl::checked::set)> &fn) const;
3767 inline stat foreach_scc(const std::function<boolean(isl::checked::set, isl::checked::set)> &follows, const std::function<stat(isl::checked::set_list)> &fn) const;
3768 inline isl::checked::set_list insert(unsigned int pos, isl::checked::set el) const;
3769 inline isl::checked::set_list set_at(int index, isl::checked::set el) const;
3770 inline class size size() const;
3771};
3772
3773// declarations for isl::space
3776
3777class space {
3778 friend inline space manage(__isl_take isl_space *ptr);
3779 friend inline space manage_copy(__isl_keep isl_space *ptr);
3780
3781 protected:
3782 isl_space *ptr = nullptr;
3783
3784 inline explicit space(__isl_take isl_space *ptr);
3785
3786 public:
3787 inline /* implicit */ space();
3788 inline /* implicit */ space(const space &obj);
3789 inline explicit space(isl::checked::ctx ctx, const std::string &str);
3790 inline space &operator=(space obj);
3791 inline ~space();
3792 inline __isl_give isl_space *copy() const &;
3793 inline __isl_give isl_space *copy() && = delete;
3794 inline __isl_keep isl_space *get() const;
3795 inline __isl_give isl_space *release();
3796 inline bool is_null() const;
3797 inline isl::checked::ctx ctx() const;
3798
3799 inline isl::checked::space add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const;
3800 inline isl::checked::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
3801 inline isl::checked::space add_param(isl::checked::id id) const;
3802 inline isl::checked::space add_param(const std::string &id) const;
3803 inline isl::checked::space add_unnamed_tuple(unsigned int dim) const;
3804 inline isl::checked::space curry() const;
3805 inline isl::checked::space domain() const;
3806 inline isl::checked::multi_aff domain_map_multi_aff() const;
3808 inline isl::checked::space domain_reverse() const;
3809 inline isl::checked::id domain_tuple_id() const;
3810 inline isl::checked::id get_domain_tuple_id() const;
3811 inline isl::checked::space drop_all_params() const;
3812 inline isl::checked::space flatten_domain() const;
3813 inline isl::checked::space flatten_range() const;
3814 inline boolean has_domain_tuple_id() const;
3815 inline boolean has_range_tuple_id() const;
3819 inline boolean is_equal(const isl::checked::space &space2) const;
3820 inline boolean is_wrapping() const;
3821 inline isl::checked::space map_from_set() const;
3822 inline isl::checked::multi_aff multi_aff(isl::checked::aff_list list) const;
3824 inline isl::checked::multi_id multi_id(isl::checked::id_list list) const;
3827 inline isl::checked::multi_val multi_val(isl::checked::val_list list) const;
3828 inline isl::checked::aff param_aff_on_domain(isl::checked::id id) const;
3829 inline isl::checked::aff param_aff_on_domain(const std::string &id) const;
3830 inline isl::checked::space params() const;
3831 inline isl::checked::space product(isl::checked::space right) const;
3832 inline isl::checked::space range() const;
3833 inline isl::checked::multi_aff range_map_multi_aff() const;
3835 inline isl::checked::space range_reverse() const;
3836 inline isl::checked::id range_tuple_id() const;
3837 inline isl::checked::id get_range_tuple_id() const;
3838 inline isl::checked::space reverse() const;
3839 inline isl::checked::space set_domain_tuple(isl::checked::id id) const;
3840 inline isl::checked::space set_domain_tuple(const std::string &id) const;
3841 inline isl::checked::space set_range_tuple(isl::checked::id id) const;
3842 inline isl::checked::space set_range_tuple(const std::string &id) const;
3843 inline isl::checked::space uncurry() const;
3844 static inline isl::checked::space unit(isl::checked::ctx ctx);
3845 inline isl::checked::map universe_map() const;
3846 inline isl::checked::set universe_set() const;
3847 inline isl::checked::space unwrap() const;
3848 inline isl::checked::space wrap() const;
3849 inline isl::checked::space wrapped_reverse() const;
3850 inline isl::checked::aff zero_aff_on_domain() const;
3851 inline isl::checked::multi_aff zero_multi_aff() const;
3852 inline isl::checked::multi_pw_aff zero_multi_pw_aff() const;
3854 inline isl::checked::multi_val zero_multi_val() const;
3855};
3856
3857// declarations for isl::union_access_info
3860
3864
3865 protected:
3867
3869
3870 public:
3871 inline /* implicit */ union_access_info();
3872 inline /* implicit */ union_access_info(const union_access_info &obj);
3873 inline explicit union_access_info(isl::checked::union_map sink);
3875 inline ~union_access_info();
3876 inline __isl_give isl_union_access_info *copy() const &;
3878 inline __isl_keep isl_union_access_info *get() const;
3880 inline bool is_null() const;
3881 inline isl::checked::ctx ctx() const;
3882
3883 inline isl::checked::union_flow compute_flow() const;
3884 inline isl::checked::union_access_info set_kill(isl::checked::union_map kill) const;
3885 inline isl::checked::union_access_info set_may_source(isl::checked::union_map may_source) const;
3886 inline isl::checked::union_access_info set_must_source(isl::checked::union_map must_source) const;
3888 inline isl::checked::union_access_info set_schedule_map(isl::checked::union_map schedule_map) const;
3889};
3890
3891// declarations for isl::union_flow
3894
3898
3899 protected:
3901
3902 inline explicit union_flow(__isl_take isl_union_flow *ptr);
3903
3904 public:
3905 inline /* implicit */ union_flow();
3906 inline /* implicit */ union_flow(const union_flow &obj);
3908 inline ~union_flow();
3909 inline __isl_give isl_union_flow *copy() const &;
3910 inline __isl_give isl_union_flow *copy() && = delete;
3911 inline __isl_keep isl_union_flow *get() const;
3913 inline bool is_null() const;
3914 inline isl::checked::ctx ctx() const;
3915
3916 inline isl::checked::union_map full_may_dependence() const;
3918 inline isl::checked::union_map full_must_dependence() const;
3920 inline isl::checked::union_map may_dependence() const;
3921 inline isl::checked::union_map get_may_dependence() const;
3922 inline isl::checked::union_map may_no_source() const;
3923 inline isl::checked::union_map get_may_no_source() const;
3924 inline isl::checked::union_map must_dependence() const;
3925 inline isl::checked::union_map get_must_dependence() const;
3926 inline isl::checked::union_map must_no_source() const;
3927 inline isl::checked::union_map get_must_no_source() const;
3928};
3929
3930// declarations for isl::union_map
3933
3937
3938 protected:
3939 isl_union_map *ptr = nullptr;
3940
3941 inline explicit union_map(__isl_take isl_union_map *ptr);
3942
3943 public:
3944 inline /* implicit */ union_map();
3945 inline /* implicit */ union_map(const union_map &obj);
3946 inline /* implicit */ union_map(isl::checked::basic_map bmap);
3947 inline /* implicit */ union_map(isl::checked::map map);
3948 inline explicit union_map(isl::checked::ctx ctx, const std::string &str);
3950 inline ~union_map();
3951 inline __isl_give isl_union_map *copy() const &;
3952 inline __isl_give isl_union_map *copy() && = delete;
3953 inline __isl_keep isl_union_map *get() const;
3955 inline bool is_null() const;
3956 inline isl::checked::ctx ctx() const;
3957
3958 inline isl::checked::union_map affine_hull() const;
3959 inline isl::checked::union_map apply_domain(isl::checked::union_map umap2) const;
3960 inline isl::checked::union_map apply_range(isl::checked::union_map umap2) const;
3961 inline isl::checked::map as_map() const;
3965 inline isl::checked::union_map coalesce() const;
3966 inline isl::checked::union_map compute_divs() const;
3967 inline isl::checked::union_map curry() const;
3968 inline isl::checked::union_set deltas() const;
3969 inline isl::checked::union_map detect_equalities() const;
3970 inline isl::checked::union_set domain() const;
3971 inline isl::checked::union_map domain_factor_domain() const;
3972 inline isl::checked::union_map domain_factor_range() const;
3973 inline isl::checked::union_map domain_map() const;
3975 inline isl::checked::union_map domain_product(isl::checked::union_map umap2) const;
3976 inline isl::checked::union_map domain_reverse() const;
3977 inline isl::checked::union_map drop_unused_params() const;
3978 static inline isl::checked::union_map empty(isl::checked::ctx ctx);
3980 inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
3981 inline isl::checked::map extract_map(isl::checked::space space) const;
3982 inline isl::checked::union_map factor_domain() const;
3983 inline isl::checked::union_map factor_range() const;
3984 inline isl::checked::union_map fixed_power(isl::checked::val exp) const;
3985 inline isl::checked::union_map fixed_power(long exp) const;
3986 inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
3988 static inline isl::checked::union_map from(isl::checked::union_pw_multi_aff upma);
3989 static inline isl::checked::union_map from_domain(isl::checked::union_set uset);
3991 static inline isl::checked::union_map from_range(isl::checked::union_set uset);
3993 inline isl::checked::union_map gist_domain(isl::checked::union_set uset) const;
3994 inline isl::checked::union_map gist_params(isl::checked::set set) const;
3995 inline isl::checked::union_map gist_range(isl::checked::union_set uset) const;
3996 inline isl::checked::union_map intersect(isl::checked::union_map umap2) const;
3998 inline isl::checked::union_map intersect_domain(isl::checked::union_set uset) const;
4004 inline isl::checked::union_map intersect_range(isl::checked::union_set uset) const;
4008 inline boolean is_bijective() const;
4009 inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
4010 inline boolean is_empty() const;
4011 inline boolean is_equal(const isl::checked::union_map &umap2) const;
4012 inline boolean is_injective() const;
4013 inline boolean is_single_valued() const;
4014 inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
4015 inline boolean is_subset(const isl::checked::union_map &umap2) const;
4016 inline boolean isa_map() const;
4017 inline isl::checked::union_map lexmax() const;
4018 inline isl::checked::union_map lexmin() const;
4019 inline isl::checked::map_list map_list() const;
4020 inline isl::checked::map_list get_map_list() const;
4021 inline isl::checked::set params() const;
4022 inline isl::checked::union_map polyhedral_hull() const;
4030 inline isl::checked::union_map product(isl::checked::union_map umap2) const;
4032 inline isl::checked::union_map project_out_param(isl::checked::id id) const;
4033 inline isl::checked::union_map project_out_param(const std::string &id) const;
4034 inline isl::checked::union_map project_out_param(isl::checked::id_list list) const;
4035 inline isl::checked::union_set range() const;
4036 inline isl::checked::union_map range_factor_domain() const;
4037 inline isl::checked::union_map range_factor_range() const;
4038 inline isl::checked::union_map range_map() const;
4039 inline isl::checked::union_map range_product(isl::checked::union_map umap2) const;
4040 inline isl::checked::union_map range_reverse() const;
4041 inline isl::checked::union_map reverse() const;
4042 inline isl::checked::space space() const;
4043 inline isl::checked::space get_space() const;
4044 inline isl::checked::union_map subtract(isl::checked::union_map umap2) const;
4046 inline isl::checked::union_map subtract_range(isl::checked::union_set dom) const;
4047 inline isl::checked::union_map uncurry() const;
4048 inline isl::checked::union_map unite(isl::checked::union_map umap2) const;
4049 inline isl::checked::union_map universe() const;
4050 inline isl::checked::union_set wrap() const;
4051 inline isl::checked::union_map zip() const;
4052};
4053
4054// declarations for isl::union_pw_aff
4057
4061
4062 protected:
4064
4065 inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
4066
4067 public:
4068 inline /* implicit */ union_pw_aff();
4069 inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
4070 inline /* implicit */ union_pw_aff(isl::checked::aff aff);
4071 inline /* implicit */ union_pw_aff(isl::checked::pw_aff pa);
4072 inline explicit union_pw_aff(isl::checked::ctx ctx, const std::string &str);
4074 inline ~union_pw_aff();
4075 inline __isl_give isl_union_pw_aff *copy() const &;
4076 inline __isl_give isl_union_pw_aff *copy() && = delete;
4077 inline __isl_keep isl_union_pw_aff *get() const;
4079 inline bool is_null() const;
4080 inline isl::checked::ctx ctx() const;
4081
4082 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
4083 inline isl::checked::union_pw_aff add(isl::checked::union_pw_aff upa2) const;
4084 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
4085 inline isl::checked::union_pw_aff add(const isl::checked::aff &upa2) const;
4086 inline isl::checked::union_pw_aff add(const isl::checked::pw_aff &upa2) const;
4087 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
4089 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
4090 inline isl::checked::union_map as_union_map() const;
4091 inline isl::checked::union_pw_aff at(int pos) const;
4092 inline isl::checked::union_set bind(const isl::checked::multi_id &tuple) const;
4093 inline isl::checked::union_set bind(isl::checked::id id) const;
4094 inline isl::checked::union_set bind(const std::string &id) const;
4095 inline isl::checked::union_pw_aff coalesce() const;
4096 inline isl::checked::union_set domain() const;
4097 inline isl::checked::union_pw_aff drop_unused_params() const;
4103 inline boolean has_range_tuple_id() const;
4109 inline boolean involves_locals() const;
4110 inline boolean involves_nan() const;
4111 inline boolean isa_pw_multi_aff() const;
4112 inline isl::checked::union_pw_aff_list list() const;
4113 inline isl::checked::multi_union_pw_aff neg() const;
4114 inline boolean plain_is_empty() const;
4115 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
4116 inline boolean plain_is_equal(const isl::checked::union_pw_aff &upa2) const;
4117 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
4118 inline boolean plain_is_equal(const isl::checked::aff &upa2) const;
4119 inline boolean plain_is_equal(const isl::checked::pw_aff &upa2) const;
4127 inline isl::checked::id range_tuple_id() const;
4129 inline isl::checked::multi_union_pw_aff scale(const isl::checked::multi_val &mv) const;
4130 inline isl::checked::multi_union_pw_aff scale(const isl::checked::val &v) const;
4131 inline isl::checked::multi_union_pw_aff scale(long v) const;
4132 inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::multi_val &mv) const;
4133 inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::val &v) const;
4134 inline isl::checked::multi_union_pw_aff scale_down(long v) const;
4135 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
4136 inline isl::checked::multi_union_pw_aff set_range_tuple(const isl::checked::id &id) const;
4137 inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
4138 inline class size size() const;
4139 inline isl::checked::space space() const;
4140 inline isl::checked::space get_space() const;
4141 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
4142 inline isl::checked::union_pw_aff sub(isl::checked::union_pw_aff upa2) const;
4143 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
4144 inline isl::checked::union_pw_aff sub(const isl::checked::aff &upa2) const;
4145 inline isl::checked::union_pw_aff sub(const isl::checked::pw_aff &upa2) const;
4148 inline isl::checked::union_pw_aff_list to_list() const;
4149 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
4150 inline isl::checked::union_pw_aff union_add(isl::checked::union_pw_aff upa2) const;
4151 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
4152 inline isl::checked::union_pw_aff union_add(const isl::checked::aff &upa2) const;
4153 inline isl::checked::union_pw_aff union_add(const isl::checked::pw_aff &upa2) const;
4154};
4155
4156// declarations for isl::union_pw_aff_list
4157inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4158inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4159
4161 friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4162 friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4163
4164 protected:
4165 isl_union_pw_aff_list *ptr = nullptr;
4166
4167 inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
4168
4169 public:
4170 inline /* implicit */ union_pw_aff_list();
4171 inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
4172 inline explicit union_pw_aff_list(isl::checked::ctx ctx, int n);
4174 inline explicit union_pw_aff_list(isl::checked::ctx ctx, const std::string &str);
4176 inline ~union_pw_aff_list();
4177 inline __isl_give isl_union_pw_aff_list *copy() const &;
4178 inline __isl_give isl_union_pw_aff_list *copy() && = delete;
4179 inline __isl_keep isl_union_pw_aff_list *get() const;
4180 inline __isl_give isl_union_pw_aff_list *release();
4181 inline bool is_null() const;
4182 inline isl::checked::ctx ctx() const;
4183
4185 inline isl::checked::union_pw_aff at(int index) const;
4186 inline isl::checked::union_pw_aff get_at(int index) const;
4187 inline isl::checked::union_pw_aff_list clear() const;
4189 inline isl::checked::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
4190 inline stat foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const;
4191 inline stat foreach_scc(const std::function<boolean(isl::checked::union_pw_aff, isl::checked::union_pw_aff)> &follows, const std::function<stat(isl::checked::union_pw_aff_list)> &fn) const;
4192 inline isl::checked::union_pw_aff_list insert(unsigned int pos, isl::checked::union_pw_aff el) const;
4193 inline isl::checked::union_pw_aff_list set_at(int index, isl::checked::union_pw_aff el) const;
4194 inline class size size() const;
4195};
4196
4197// declarations for isl::union_pw_multi_aff
4200
4204
4205 protected:
4207
4209
4210 public:
4211 inline /* implicit */ union_pw_multi_aff();
4212 inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
4213 inline /* implicit */ union_pw_multi_aff(isl::checked::multi_aff ma);
4214 inline /* implicit */ union_pw_multi_aff(isl::checked::pw_multi_aff pma);
4215 inline /* implicit */ union_pw_multi_aff(isl::checked::union_pw_aff upa);
4216 inline explicit union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
4218 inline ~union_pw_multi_aff();
4219 inline __isl_give isl_union_pw_multi_aff *copy() const &;
4221 inline __isl_keep isl_union_pw_multi_aff *get() const;
4223 inline bool is_null() const;
4224 inline isl::checked::ctx ctx() const;
4225
4229 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
4230 inline isl::checked::union_map as_union_map() const;
4231 inline isl::checked::union_pw_multi_aff coalesce() const;
4232 inline isl::checked::union_set domain() const;
4234 static inline isl::checked::union_pw_multi_aff empty(isl::checked::ctx ctx);
4243 inline boolean involves_locals() const;
4244 inline boolean isa_pw_multi_aff() const;
4245 inline boolean plain_is_empty() const;
4246 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
4254 inline isl::checked::space space() const;
4255 inline isl::checked::space get_space() const;
4260};
4261
4262// declarations for isl::union_set
4265
4269
4270 protected:
4271 isl_union_set *ptr = nullptr;
4272
4273 inline explicit union_set(__isl_take isl_union_set *ptr);
4274
4275 public:
4276 inline /* implicit */ union_set();
4277 inline /* implicit */ union_set(const union_set &obj);
4278 inline /* implicit */ union_set(isl::checked::basic_set bset);
4279 inline /* implicit */ union_set(isl::checked::point pnt);
4280 inline /* implicit */ union_set(isl::checked::set set);
4281 inline explicit union_set(isl::checked::ctx ctx, const std::string &str);
4283 inline ~union_set();
4284 inline __isl_give isl_union_set *copy() const &;
4285 inline __isl_give isl_union_set *copy() && = delete;
4286 inline __isl_keep isl_union_set *get() const;
4288 inline bool is_null() const;
4289 inline isl::checked::ctx ctx() const;
4290
4291 inline isl::checked::union_set affine_hull() const;
4292 inline isl::checked::union_set apply(isl::checked::union_map umap) const;
4293 inline isl::checked::set as_set() const;
4294 inline isl::checked::union_set coalesce() const;
4295 inline isl::checked::union_set compute_divs() const;
4296 inline isl::checked::union_set detect_equalities() const;
4297 inline isl::checked::union_set drop_unused_params() const;
4298 static inline isl::checked::union_set empty(isl::checked::ctx ctx);
4299 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
4300 inline isl::checked::set extract_set(isl::checked::space space) const;
4301 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
4302 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
4304 inline isl::checked::union_set gist_params(isl::checked::set set) const;
4305 inline isl::checked::union_map identity() const;
4306 inline isl::checked::union_set intersect(isl::checked::union_set uset2) const;
4308 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
4309 inline boolean is_empty() const;
4310 inline boolean is_equal(const isl::checked::union_set &uset2) const;
4311 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
4312 inline boolean is_subset(const isl::checked::union_set &uset2) const;
4313 inline boolean isa_set() const;
4314 inline isl::checked::union_set lexmax() const;
4315 inline isl::checked::union_set lexmin() const;
4316 inline isl::checked::set params() const;
4317 inline isl::checked::union_set polyhedral_hull() const;
4318 inline isl::checked::union_set preimage(isl::checked::multi_aff ma) const;
4322 inline isl::checked::point sample_point() const;
4323 inline isl::checked::set_list set_list() const;
4324 inline isl::checked::set_list get_set_list() const;
4325 inline isl::checked::space space() const;
4326 inline isl::checked::space get_space() const;
4327 inline isl::checked::union_set subtract(isl::checked::union_set uset2) const;
4328 inline isl::checked::union_set_list to_list() const;
4329 inline isl::checked::union_set unite(isl::checked::union_set uset2) const;
4330 inline isl::checked::union_set universe() const;
4331 inline isl::checked::union_map unwrap() const;
4332};
4333
4334// declarations for isl::union_set_list
4337
4341
4342 protected:
4344
4346
4347 public:
4348 inline /* implicit */ union_set_list();
4349 inline /* implicit */ union_set_list(const union_set_list &obj);
4350 inline explicit union_set_list(isl::checked::ctx ctx, int n);
4351 inline explicit union_set_list(isl::checked::union_set el);
4352 inline explicit union_set_list(isl::checked::ctx ctx, const std::string &str);
4354 inline ~union_set_list();
4355 inline __isl_give isl_union_set_list *copy() const &;
4356 inline __isl_give isl_union_set_list *copy() && = delete;
4357 inline __isl_keep isl_union_set_list *get() const;
4359 inline bool is_null() const;
4360 inline isl::checked::ctx ctx() const;
4361
4362 inline isl::checked::union_set_list add(isl::checked::union_set el) const;
4363 inline isl::checked::union_set at(int index) const;
4364 inline isl::checked::union_set get_at(int index) const;
4365 inline isl::checked::union_set_list clear() const;
4366 inline isl::checked::union_set_list concat(isl::checked::union_set_list list2) const;
4367 inline isl::checked::union_set_list drop(unsigned int first, unsigned int n) const;
4368 inline stat foreach(const std::function<stat(isl::checked::union_set)> &fn) const;
4369 inline stat foreach_scc(const std::function<boolean(isl::checked::union_set, isl::checked::union_set)> &follows, const std::function<stat(isl::checked::union_set_list)> &fn) const;
4370 inline isl::checked::union_set_list insert(unsigned int pos, isl::checked::union_set el) const;
4371 inline isl::checked::union_set_list set_at(int index, isl::checked::union_set el) const;
4372 inline class size size() const;
4373};
4374
4375// declarations for isl::val
4378
4379class val {
4380 friend inline val manage(__isl_take isl_val *ptr);
4381 friend inline val manage_copy(__isl_keep isl_val *ptr);
4382
4383 protected:
4384 isl_val *ptr = nullptr;
4385
4386 inline explicit val(__isl_take isl_val *ptr);
4387
4388 public:
4389 inline /* implicit */ val();
4390 inline /* implicit */ val(const val &obj);
4391 inline explicit val(isl::checked::ctx ctx, long i);
4392 inline explicit val(isl::checked::ctx ctx, const std::string &str);
4393 inline val &operator=(val obj);
4394 inline ~val();
4395 inline __isl_give isl_val *copy() const &;
4396 inline __isl_give isl_val *copy() && = delete;
4397 inline __isl_keep isl_val *get() const;
4398 inline __isl_give isl_val *release();
4399 inline bool is_null() const;
4400 inline isl::checked::ctx ctx() const;
4401
4402 inline isl::checked::val abs() const;
4403 inline boolean abs_eq(const isl::checked::val &v2) const;
4404 inline boolean abs_eq(long v2) const;
4405 inline isl::checked::val add(isl::checked::val v2) const;
4406 inline isl::checked::val add(long v2) const;
4407 inline isl::checked::val ceil() const;
4408 inline int cmp_si(long i) const;
4409 inline long den_si() const;
4410 inline long get_den_si() const;
4411 inline isl::checked::val div(isl::checked::val v2) const;
4412 inline isl::checked::val div(long v2) const;
4413 inline boolean eq(const isl::checked::val &v2) const;
4414 inline boolean eq(long v2) const;
4415 inline isl::checked::val floor() const;
4416 inline isl::checked::val gcd(isl::checked::val v2) const;
4417 inline isl::checked::val gcd(long v2) const;
4418 inline boolean ge(const isl::checked::val &v2) const;
4419 inline boolean ge(long v2) const;
4420 inline boolean gt(const isl::checked::val &v2) const;
4421 inline boolean gt(long v2) const;
4422 static inline isl::checked::val infty(isl::checked::ctx ctx);
4423 inline isl::checked::val inv() const;
4424 inline boolean is_divisible_by(const isl::checked::val &v2) const;
4425 inline boolean is_divisible_by(long v2) const;
4426 inline boolean is_infty() const;
4427 inline boolean is_int() const;
4428 inline boolean is_nan() const;
4429 inline boolean is_neg() const;
4430 inline boolean is_neginfty() const;
4431 inline boolean is_negone() const;
4432 inline boolean is_nonneg() const;
4433 inline boolean is_nonpos() const;
4434 inline boolean is_one() const;
4435 inline boolean is_pos() const;
4436 inline boolean is_rat() const;
4437 inline boolean is_zero() const;
4438 inline boolean le(const isl::checked::val &v2) const;
4439 inline boolean le(long v2) const;
4440 inline boolean lt(const isl::checked::val &v2) const;
4441 inline boolean lt(long v2) const;
4442 inline isl::checked::val max(isl::checked::val v2) const;
4443 inline isl::checked::val max(long v2) const;
4444 inline isl::checked::val min(isl::checked::val v2) const;
4445 inline isl::checked::val min(long v2) const;
4446 inline isl::checked::val mod(isl::checked::val v2) const;
4447 inline isl::checked::val mod(long v2) const;
4448 inline isl::checked::val mul(isl::checked::val v2) const;
4449 inline isl::checked::val mul(long v2) const;
4450 static inline isl::checked::val nan(isl::checked::ctx ctx);
4451 inline boolean ne(const isl::checked::val &v2) const;
4452 inline boolean ne(long v2) const;
4453 inline isl::checked::val neg() const;
4454 static inline isl::checked::val neginfty(isl::checked::ctx ctx);
4455 static inline isl::checked::val negone(isl::checked::ctx ctx);
4456 inline long num_si() const;
4457 inline long get_num_si() const;
4458 static inline isl::checked::val one(isl::checked::ctx ctx);
4459 inline isl::checked::val pow2() const;
4460 inline int sgn() const;
4461 inline isl::checked::val sub(isl::checked::val v2) const;
4462 inline isl::checked::val sub(long v2) const;
4463 inline isl::checked::val_list to_list() const;
4464 inline isl::checked::val trunc() const;
4465 static inline isl::checked::val zero(isl::checked::ctx ctx);
4466};
4467
4468// declarations for isl::val_list
4469inline val_list manage(__isl_take isl_val_list *ptr);
4470inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4471
4473 friend inline val_list manage(__isl_take isl_val_list *ptr);
4474 friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4475
4476 protected:
4477 isl_val_list *ptr = nullptr;
4478
4479 inline explicit val_list(__isl_take isl_val_list *ptr);
4480
4481 public:
4482 inline /* implicit */ val_list();
4483 inline /* implicit */ val_list(const val_list &obj);
4484 inline explicit val_list(isl::checked::ctx ctx, int n);
4485 inline explicit val_list(isl::checked::val el);
4486 inline explicit val_list(isl::checked::ctx ctx, const std::string &str);
4487 inline val_list &operator=(val_list obj);
4488 inline ~val_list();
4489 inline __isl_give isl_val_list *copy() const &;
4490 inline __isl_give isl_val_list *copy() && = delete;
4491 inline __isl_keep isl_val_list *get() const;
4492 inline __isl_give isl_val_list *release();
4493 inline bool is_null() const;
4494 inline isl::checked::ctx ctx() const;
4495
4496 inline isl::checked::val_list add(isl::checked::val el) const;
4497 inline isl::checked::val_list add(long el) const;
4498 inline isl::checked::val at(int index) const;
4499 inline isl::checked::val get_at(int index) const;
4500 inline isl::checked::val_list clear() const;
4501 inline isl::checked::val_list concat(isl::checked::val_list list2) const;
4502 inline isl::checked::val_list drop(unsigned int first, unsigned int n) const;
4503 inline stat foreach(const std::function<stat(isl::checked::val)> &fn) const;
4504 inline stat foreach_scc(const std::function<boolean(isl::checked::val, isl::checked::val)> &follows, const std::function<stat(isl::checked::val_list)> &fn) const;
4505 inline isl::checked::val_list insert(unsigned int pos, isl::checked::val el) const;
4506 inline isl::checked::val_list insert(unsigned int pos, long el) const;
4507 inline isl::checked::val_list set_at(int index, isl::checked::val el) const;
4508 inline isl::checked::val_list set_at(int index, long el) const;
4509 inline class size size() const;
4510};
4511
4512// implementations for isl::aff
4514 return aff(ptr);
4515}
4517 ptr = isl_aff_copy(ptr);
4518 return aff(ptr);
4519}
4520
4523
4525 : ptr(nullptr) {}
4526
4528 : ptr(nullptr)
4529{
4530 ptr = obj.copy();
4531}
4532
4533aff::aff(isl::checked::ctx ctx, const std::string &str)
4534{
4535 auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
4536 ptr = res;
4537}
4538
4540 std::swap(this->ptr, obj.ptr);
4541 return *this;
4542}
4543
4545 if (ptr)
4547}
4548
4550 return isl_aff_copy(ptr);
4551}
4552
4554 return ptr;
4555}
4556
4558 isl_aff *tmp = ptr;
4559 ptr = nullptr;
4560 return tmp;
4561}
4562
4563bool aff::is_null() const {
4564 return ptr == nullptr;
4565}
4566
4570
4572{
4573 auto res = isl_aff_add(copy(), aff2.release());
4574 return manage(res);
4575}
4576
4578{
4579 return isl::checked::multi_aff(*this).add(multi2);
4580}
4581
4583{
4584 return isl::checked::pw_aff(*this).add(multi2);
4585}
4586
4591
4593{
4594 return isl::checked::pw_aff(*this).add(pwaff2);
4595}
4596
4598{
4599 return isl::checked::pw_aff(*this).add(pma2);
4600}
4601
4603{
4604 return isl::checked::pw_aff(*this).add(upa2);
4605}
4606
4611
4617
4619{
4620 return this->add_constant(isl::checked::val(ctx(), v));
4621}
4622
4627
4632
4634{
4635 return isl::checked::pw_aff(*this).as_aff();
4636}
4637
4639{
4640 return isl::checked::pw_aff(*this).as_map();
4641}
4642
4647
4652
4657
4659{
4660 return isl::checked::multi_aff(*this).as_set();
4661}
4662
4667
4669{
4670 return isl::checked::multi_aff(*this).at(pos);
4671}
4672
4674{
4675 auto res = isl_aff_bind_id(copy(), id.release());
4676 return manage(res);
4677}
4678
4679isl::checked::basic_set aff::bind(const std::string &id) const
4680{
4681 return this->bind(isl::checked::id(ctx(), id));
4682}
4683
4688
4693
4698
4700{
4701 auto res = isl_aff_ceil(copy());
4702 return manage(res);
4703}
4704
4706{
4707 return isl::checked::pw_aff(*this).coalesce();
4708}
4709
4711{
4712 return isl::checked::pw_aff(*this).cond(pwaff_true, pwaff_false);
4713}
4714
4719
4721{
4723 return manage(res);
4724}
4725
4727{
4728 return constant_val();
4729}
4730
4732{
4733 auto res = isl_aff_div(copy(), aff2.release());
4734 return manage(res);
4735}
4736
4738{
4739 return isl::checked::pw_aff(*this).div(pa2);
4740}
4741
4743{
4744 return isl::checked::pw_aff(*this).domain();
4745}
4746
4748{
4750 return manage(res);
4751}
4752
4757
4759{
4760 auto res = isl_aff_eq_set(copy(), aff2.release());
4761 return manage(res);
4762}
4763
4765{
4766 return isl::checked::pw_aff(*this).eq_set(pwaff2);
4767}
4768
4770{
4771 auto res = isl_aff_eval(copy(), pnt.release());
4772 return manage(res);
4773}
4774
4779
4784
4789
4794
4799
4804
4806{
4807 auto res = isl_aff_floor(copy());
4808 return manage(res);
4809}
4810
4812{
4813 return isl::checked::pw_aff(*this).foreach_piece(fn);
4814}
4815
4817{
4818 auto res = isl_aff_ge_set(copy(), aff2.release());
4819 return manage(res);
4820}
4821
4823{
4824 return isl::checked::pw_aff(*this).ge_set(pwaff2);
4825}
4826
4828{
4829 auto res = isl_aff_gist(copy(), context.release());
4830 return manage(res);
4831}
4832
4837
4842
4847
4849{
4850 auto res = isl_aff_gist_params(copy(), context.release());
4851 return manage(res);
4852}
4853
4855{
4856 auto res = isl_aff_gt_set(copy(), aff2.release());
4857 return manage(res);
4858}
4859
4861{
4862 return isl::checked::pw_aff(*this).gt_set(pwaff2);
4863}
4864
4866{
4868}
4869
4874
4879
4884
4889
4894
4899
4904
4909
4911{
4913}
4914
4915boolean aff::involves_nan() const
4916{
4917 return isl::checked::multi_aff(*this).involves_nan();
4918}
4919
4921{
4922 return isl::checked::pw_aff(*this).involves_param(id);
4923}
4924
4925boolean aff::involves_param(const std::string &id) const
4926{
4927 return this->involves_param(isl::checked::id(ctx(), id));
4928}
4929
4931{
4933}
4934
4935boolean aff::is_cst() const
4936{
4937 auto res = isl_aff_is_cst(get());
4938 return manage(res);
4939}
4940
4941boolean aff::isa_aff() const
4942{
4943 return isl::checked::pw_aff(*this).isa_aff();
4944}
4945
4946boolean aff::isa_multi_aff() const
4947{
4948 return isl::checked::pw_aff(*this).isa_multi_aff();
4949}
4950
4952{
4953 return isl::checked::pw_aff(*this).isa_pw_multi_aff();
4954}
4955
4957{
4958 auto res = isl_aff_le_set(copy(), aff2.release());
4959 return manage(res);
4960}
4961
4963{
4964 return isl::checked::pw_aff(*this).le_set(pwaff2);
4965}
4966
4968{
4969 return isl::checked::multi_aff(*this).list();
4970}
4971
4973{
4974 auto res = isl_aff_lt_set(copy(), aff2.release());
4975 return manage(res);
4976}
4977
4979{
4980 return isl::checked::pw_aff(*this).lt_set(pwaff2);
4981}
4982
4984{
4985 return isl::checked::pw_aff(*this).max(multi2);
4986}
4987
4989{
4990 return isl::checked::pw_aff(*this).max(pwaff2);
4991}
4992
4997
4999{
5000 return isl::checked::pw_aff(*this).max_val();
5001}
5002
5004{
5005 return isl::checked::pw_aff(*this).min(multi2);
5006}
5007
5009{
5010 return isl::checked::pw_aff(*this).min(pwaff2);
5011}
5012
5017
5019{
5020 return isl::checked::pw_aff(*this).min_val();
5021}
5022
5024{
5025 auto res = isl_aff_mod_val(copy(), mod.release());
5026 return manage(res);
5027}
5028
5030{
5031 return this->mod(isl::checked::val(ctx(), mod));
5032}
5033
5035{
5036 auto res = isl_aff_mul(copy(), aff2.release());
5037 return manage(res);
5038}
5039
5041{
5042 return isl::checked::pw_aff(*this).mul(pwaff2);
5043}
5044
5045class size aff::n_piece() const
5046{
5047 return isl::checked::pw_aff(*this).n_piece();
5048}
5049
5051{
5052 auto res = isl_aff_ne_set(copy(), aff2.release());
5053 return manage(res);
5054}
5055
5057{
5058 return isl::checked::pw_aff(*this).ne_set(pwaff2);
5059}
5060
5062{
5063 auto res = isl_aff_neg(copy());
5064 return manage(res);
5065}
5066
5068{
5069 return isl::checked::pw_aff(*this).params();
5070}
5071
5072boolean aff::plain_is_empty() const
5073{
5074 return isl::checked::pw_aff(*this).plain_is_empty();
5075}
5076
5077boolean aff::plain_is_equal(const isl::checked::aff &aff2) const
5078{
5079 auto res = isl_aff_plain_is_equal(get(), aff2.get());
5080 return manage(res);
5081}
5082
5084{
5085 return isl::checked::multi_aff(*this).plain_is_equal(multi2);
5086}
5087
5089{
5090 return isl::checked::pw_aff(*this).plain_is_equal(multi2);
5091}
5092
5094{
5095 return isl::checked::pw_aff(*this).plain_is_equal(multi2);
5096}
5097
5098boolean aff::plain_is_equal(const isl::checked::pw_aff &pwaff2) const
5099{
5100 return isl::checked::pw_aff(*this).plain_is_equal(pwaff2);
5101}
5102
5104{
5105 return isl::checked::pw_aff(*this).plain_is_equal(pma2);
5106}
5107
5109{
5110 return isl::checked::pw_aff(*this).plain_is_equal(upa2);
5111}
5112
5114{
5115 return isl::checked::pw_aff(*this).plain_is_equal(upma2);
5116}
5117
5122
5127
5129{
5130 return isl::checked::multi_aff(*this).product(multi2);
5131}
5132
5134{
5135 return isl::checked::pw_aff(*this).product(multi2);
5136}
5137
5142
5144{
5145 auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
5146 return manage(res);
5147}
5148
5153
5158
5163
5168
5173
5178
5183
5188
5193
5198
5203
5208
5213
5218
5220{
5221 auto res = isl_aff_scale_val(copy(), v.release());
5222 return manage(res);
5223}
5224
5226{
5227 return this->scale(isl::checked::val(ctx(), v));
5228}
5229
5234
5240
5242{
5243 return this->scale_down(isl::checked::val(ctx(), v));
5244}
5245
5250
5252{
5253 return isl::checked::multi_aff(*this).set_at(pos, el);
5254}
5255
5257{
5258 return isl::checked::pw_aff(*this).set_at(pos, el);
5259}
5260
5265
5270
5272{
5273 return this->set_range_tuple(isl::checked::id(ctx(), id));
5274}
5275
5276class size aff::size() const
5277{
5278 return isl::checked::multi_aff(*this).size();
5279}
5280
5282{
5283 return isl::checked::pw_aff(*this).space();
5284}
5285
5287{
5288 auto res = isl_aff_sub(copy(), aff2.release());
5289 return manage(res);
5290}
5291
5293{
5294 return isl::checked::multi_aff(*this).sub(multi2);
5295}
5296
5298{
5299 return isl::checked::pw_aff(*this).sub(multi2);
5300}
5301
5306
5308{
5309 return isl::checked::pw_aff(*this).sub(pwaff2);
5310}
5311
5313{
5314 return isl::checked::pw_aff(*this).sub(pma2);
5315}
5316
5318{
5319 return isl::checked::pw_aff(*this).sub(upa2);
5320}
5321
5326
5331
5336
5341
5343{
5344 return isl::checked::pw_aff(*this).tdiv_q(pa2);
5345}
5346
5348{
5349 return isl::checked::pw_aff(*this).tdiv_r(pa2);
5350}
5351
5353{
5354 auto res = isl_aff_to_list(copy());
5355 return manage(res);
5356}
5357
5362
5367
5372
5377
5382
5388
5393
5398
5400{
5401 return isl::checked::pw_aff(*this).union_add(pwaff2);
5402}
5403
5408
5413
5418
5424
5425inline std::ostream &operator<<(std::ostream &os, const aff &obj)
5426{
5427 char *str = isl_aff_to_str(obj.get());
5428 if (!str) {
5429 os.setstate(std::ios_base::badbit);
5430 return os;
5431 }
5432 os << str;
5433 free(str);
5434 return os;
5435}
5436
5437// implementations for isl::aff_list
5439 return aff_list(ptr);
5440}
5442 ptr = isl_aff_list_copy(ptr);
5443 return aff_list(ptr);
5444}
5445
5447 : ptr(ptr) {}
5448
5450 : ptr(nullptr) {}
5451
5453 : ptr(nullptr)
5454{
5455 ptr = obj.copy();
5456}
5457
5459{
5460 auto res = isl_aff_list_alloc(ctx.release(), n);
5461 ptr = res;
5462}
5463
5465{
5466 auto res = isl_aff_list_from_aff(el.release());
5467 ptr = res;
5468}
5469
5471{
5472 auto res = isl_aff_list_read_from_str(ctx.release(), str.c_str());
5473 ptr = res;
5474}
5475
5477 std::swap(this->ptr, obj.ptr);
5478 return *this;
5479}
5480
5482 if (ptr)
5483 isl_aff_list_free(ptr);
5484}
5485
5486__isl_give isl_aff_list *aff_list::copy() const & {
5487 return isl_aff_list_copy(ptr);
5488}
5489
5490__isl_keep isl_aff_list *aff_list::get() const {
5491 return ptr;
5492}
5493
5495 isl_aff_list *tmp = ptr;
5496 ptr = nullptr;
5497 return tmp;
5498}
5499
5500bool aff_list::is_null() const {
5501 return ptr == nullptr;
5502}
5503
5505 return isl::checked::ctx(isl_aff_list_get_ctx(ptr));
5506}
5507
5509{
5510 auto res = isl_aff_list_add(copy(), el.release());
5511 return manage(res);
5512}
5513
5515{
5516 auto res = isl_aff_list_get_at(get(), index);
5517 return manage(res);
5518}
5519
5521{
5522 return at(index);
5523}
5524
5526{
5527 auto res = isl_aff_list_clear(copy());
5528 return manage(res);
5529}
5530
5532{
5533 auto res = isl_aff_list_concat(copy(), list2.release());
5534 return manage(res);
5535}
5536
5537isl::checked::aff_list aff_list::drop(unsigned int first, unsigned int n) const
5538{
5539 auto res = isl_aff_list_drop(copy(), first, n);
5540 return manage(res);
5541}
5542
5543stat aff_list::foreach(const std::function<stat(isl::checked::aff)> &fn) const
5544{
5545 struct fn_data {
5546 std::function<stat(isl::checked::aff)> func;
5547 } fn_data = { fn };
5548 auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
5549 auto *data = static_cast<struct fn_data *>(arg_1);
5550 auto ret = (data->func)(manage(arg_0));
5551 return ret.release();
5552 };
5553 auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
5554 return manage(res);
5555}
5556
5557stat aff_list::foreach_scc(const std::function<boolean(isl::checked::aff, isl::checked::aff)> &follows, const std::function<stat(isl::checked::aff_list)> &fn) const
5558{
5559 struct follows_data {
5560 std::function<boolean(isl::checked::aff, isl::checked::aff)> func;
5561 } follows_data = { follows };
5562 auto follows_lambda = [](isl_aff *arg_0, isl_aff *arg_1, void *arg_2) -> isl_bool {
5563 auto *data = static_cast<struct follows_data *>(arg_2);
5564 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
5565 return ret.release();
5566 };
5567 struct fn_data {
5568 std::function<stat(isl::checked::aff_list)> func;
5569 } fn_data = { fn };
5570 auto fn_lambda = [](isl_aff_list *arg_0, void *arg_1) -> isl_stat {
5571 auto *data = static_cast<struct fn_data *>(arg_1);
5572 auto ret = (data->func)(manage(arg_0));
5573 return ret.release();
5574 };
5575 auto res = isl_aff_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
5576 return manage(res);
5577}
5578
5580{
5581 auto res = isl_aff_list_insert(copy(), pos, el.release());
5582 return manage(res);
5583}
5584
5586{
5587 auto res = isl_aff_list_set_at(copy(), index, el.release());
5588 return manage(res);
5589}
5590
5592{
5593 auto res = isl_aff_list_size(get());
5594 return manage(res);
5595}
5596
5597inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
5598{
5599 char *str = isl_aff_list_to_str(obj.get());
5600 if (!str) {
5601 os.setstate(std::ios_base::badbit);
5602 return os;
5603 }
5604 os << str;
5605 free(str);
5606 return os;
5607}
5608
5609// implementations for isl::ast_build
5617
5620
5622 : ptr(nullptr) {}
5623
5625 : ptr(nullptr)
5626{
5627 ptr = obj.copy();
5629}
5630
5632{
5633 auto res = isl_ast_build_alloc(ctx.release());
5634 ptr = res;
5635}
5636
5638 std::swap(this->ptr, obj.ptr);
5640 return *this;
5641}
5642
5647
5651
5653 return ptr;
5654}
5655
5658 isl_die(ctx().get(), isl_error_invalid, "cannot release object with persistent callbacks", return nullptr);
5659 isl_ast_build *tmp = ptr;
5660 ptr = nullptr;
5661 return tmp;
5662}
5663
5665 return ptr == nullptr;
5666}
5667
5671
5673{
5674 at_each_domain_data = obj.at_each_domain_data;
5675 return *this;
5676}
5677
5679{
5680 auto *data = static_cast<struct at_each_domain_data *>(arg_2);
5681 auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
5682 return ret.release();
5683}
5684
5691
5693{
5694 auto copy = *this;
5695 copy.set_at_each_domain_data(fn);
5696 return copy;
5697}
5698
5704
5710
5716
5722
5728
5734
5740
5746
5752
5758
5763
5764// implementations for isl::ast_expr
5772
5775
5777 : ptr(nullptr) {}
5778
5780 : ptr(nullptr)
5781{
5782 ptr = obj.copy();
5783}
5784
5786 std::swap(this->ptr, obj.ptr);
5787 return *this;
5788}
5789
5794
5798
5800 return ptr;
5801}
5802
5804 isl_ast_expr *tmp = ptr;
5805 ptr = nullptr;
5806 return tmp;
5807}
5808
5809bool ast_expr::is_null() const {
5810 return ptr == nullptr;
5811}
5812
5813template <typename T, typename>
5814boolean ast_expr::isa_type(T subtype) const
5815{
5816 if (is_null())
5817 return boolean();
5818 return isl_ast_expr_get_type(get()) == subtype;
5819}
5820template <class T>
5821boolean ast_expr::isa() const
5822{
5823 return isa_type<decltype(T::type)>(T::type);
5824}
5825template <class T>
5827{
5828 if (isa<T>().is_false())
5829 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5830 return T(copy());
5831}
5832
5836
5837std::string ast_expr::to_C_str() const
5838{
5839 auto res = isl_ast_expr_to_C_str(get());
5840 std::string tmp(res);
5841 free(res);
5842 return tmp;
5843}
5844
5845inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
5846{
5847 char *str = isl_ast_expr_to_str(obj.get());
5848 if (!str) {
5849 os.setstate(std::ios_base::badbit);
5850 return os;
5851 }
5852 os << str;
5853 free(str);
5854 return os;
5855}
5856
5857// implementations for isl::ast_expr_id
5860
5863
5868
5870 std::swap(this->ptr, obj.ptr);
5871 return *this;
5872}
5873
5877
5879{
5880 auto res = isl_ast_expr_id_get_id(get());
5881 return manage(res);
5882}
5883
5885{
5886 return id();
5887}
5888
5889inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
5890{
5891 char *str = isl_ast_expr_to_str(obj.get());
5892 if (!str) {
5893 os.setstate(std::ios_base::badbit);
5894 return os;
5895 }
5896 os << str;
5897 free(str);
5898 return os;
5899}
5900
5901// implementations for isl::ast_expr_int
5904
5907
5912
5914 std::swap(this->ptr, obj.ptr);
5915 return *this;
5916}
5917
5921
5923{
5925 return manage(res);
5926}
5927
5929{
5930 return val();
5931}
5932
5933inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
5934{
5935 char *str = isl_ast_expr_to_str(obj.get());
5936 if (!str) {
5937 os.setstate(std::ios_base::badbit);
5938 return os;
5939 }
5940 os << str;
5941 free(str);
5942 return os;
5943}
5944
5945// implementations for isl::ast_expr_op
5948
5951
5956
5958 std::swap(this->ptr, obj.ptr);
5959 return *this;
5960}
5961
5962template <typename T, typename>
5963boolean ast_expr_op::isa_type(T subtype) const
5964{
5965 if (is_null())
5966 return boolean();
5967 return isl_ast_expr_op_get_type(get()) == subtype;
5968}
5969template <class T>
5970boolean ast_expr_op::isa() const
5971{
5972 return isa_type<decltype(T::type)>(T::type);
5973}
5974template <class T>
5976{
5977 if (isa<T>().is_false())
5978 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5979 return T(copy());
5980}
5981
5985
5987{
5989 return manage(res);
5990}
5991
5993{
5994 return arg(pos);
5995}
5996
5998{
6000 return manage(res);
6001}
6002
6004{
6005 return n_arg();
6006}
6007
6008inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
6009{
6010 char *str = isl_ast_expr_to_str(obj.get());
6011 if (!str) {
6012 os.setstate(std::ios_base::badbit);
6013 return os;
6014 }
6015 os << str;
6016 free(str);
6017 return os;
6018}
6019
6020// implementations for isl::ast_expr_op_access
6023
6026
6031
6033 std::swap(this->ptr, obj.ptr);
6034 return *this;
6035}
6036
6040
6041inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
6042{
6043 char *str = isl_ast_expr_to_str(obj.get());
6044 if (!str) {
6045 os.setstate(std::ios_base::badbit);
6046 return os;
6047 }
6048 os << str;
6049 free(str);
6050 return os;
6051}
6052
6053// implementations for isl::ast_expr_op_add
6056
6059
6064
6066 std::swap(this->ptr, obj.ptr);
6067 return *this;
6068}
6069
6073
6074inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
6075{
6076 char *str = isl_ast_expr_to_str(obj.get());
6077 if (!str) {
6078 os.setstate(std::ios_base::badbit);
6079 return os;
6080 }
6081 os << str;
6082 free(str);
6083 return os;
6084}
6085
6086// implementations for isl::ast_expr_op_address_of
6089
6092
6097
6099 std::swap(this->ptr, obj.ptr);
6100 return *this;
6101}
6102
6106
6107inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
6108{
6109 char *str = isl_ast_expr_to_str(obj.get());
6110 if (!str) {
6111 os.setstate(std::ios_base::badbit);
6112 return os;
6113 }
6114 os << str;
6115 free(str);
6116 return os;
6117}
6118
6119// implementations for isl::ast_expr_op_and
6122
6125
6130
6132 std::swap(this->ptr, obj.ptr);
6133 return *this;
6134}
6135
6139
6140inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
6141{
6142 char *str = isl_ast_expr_to_str(obj.get());
6143 if (!str) {
6144 os.setstate(std::ios_base::badbit);
6145 return os;
6146 }
6147 os << str;
6148 free(str);
6149 return os;
6150}
6151
6152// implementations for isl::ast_expr_op_and_then
6155
6158
6163
6165 std::swap(this->ptr, obj.ptr);
6166 return *this;
6167}
6168
6172
6173inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
6174{
6175 char *str = isl_ast_expr_to_str(obj.get());
6176 if (!str) {
6177 os.setstate(std::ios_base::badbit);
6178 return os;
6179 }
6180 os << str;
6181 free(str);
6182 return os;
6183}
6184
6185// implementations for isl::ast_expr_op_call
6188
6191
6196
6198 std::swap(this->ptr, obj.ptr);
6199 return *this;
6200}
6201
6205
6206inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
6207{
6208 char *str = isl_ast_expr_to_str(obj.get());
6209 if (!str) {
6210 os.setstate(std::ios_base::badbit);
6211 return os;
6212 }
6213 os << str;
6214 free(str);
6215 return os;
6216}
6217
6218// implementations for isl::ast_expr_op_cond
6221
6224
6229
6231 std::swap(this->ptr, obj.ptr);
6232 return *this;
6233}
6234
6238
6239inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
6240{
6241 char *str = isl_ast_expr_to_str(obj.get());
6242 if (!str) {
6243 os.setstate(std::ios_base::badbit);
6244 return os;
6245 }
6246 os << str;
6247 free(str);
6248 return os;
6249}
6250
6251// implementations for isl::ast_expr_op_div
6254
6257
6262
6264 std::swap(this->ptr, obj.ptr);
6265 return *this;
6266}
6267
6271
6272inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
6273{
6274 char *str = isl_ast_expr_to_str(obj.get());
6275 if (!str) {
6276 os.setstate(std::ios_base::badbit);
6277 return os;
6278 }
6279 os << str;
6280 free(str);
6281 return os;
6282}
6283
6284// implementations for isl::ast_expr_op_eq
6287
6290
6295
6297 std::swap(this->ptr, obj.ptr);
6298 return *this;
6299}
6300
6304
6305inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
6306{
6307 char *str = isl_ast_expr_to_str(obj.get());
6308 if (!str) {
6309 os.setstate(std::ios_base::badbit);
6310 return os;
6311 }
6312 os << str;
6313 free(str);
6314 return os;
6315}
6316
6317// implementations for isl::ast_expr_op_fdiv_q
6320
6323
6328
6330 std::swap(this->ptr, obj.ptr);
6331 return *this;
6332}
6333
6337
6338inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
6339{
6340 char *str = isl_ast_expr_to_str(obj.get());
6341 if (!str) {
6342 os.setstate(std::ios_base::badbit);
6343 return os;
6344 }
6345 os << str;
6346 free(str);
6347 return os;
6348}
6349
6350// implementations for isl::ast_expr_op_ge
6353
6356
6361
6363 std::swap(this->ptr, obj.ptr);
6364 return *this;
6365}
6366
6370
6371inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
6372{
6373 char *str = isl_ast_expr_to_str(obj.get());
6374 if (!str) {
6375 os.setstate(std::ios_base::badbit);
6376 return os;
6377 }
6378 os << str;
6379 free(str);
6380 return os;
6381}
6382
6383// implementations for isl::ast_expr_op_gt
6386
6389
6394
6396 std::swap(this->ptr, obj.ptr);
6397 return *this;
6398}
6399
6403
6404inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
6405{
6406 char *str = isl_ast_expr_to_str(obj.get());
6407 if (!str) {
6408 os.setstate(std::ios_base::badbit);
6409 return os;
6410 }
6411 os << str;
6412 free(str);
6413 return os;
6414}
6415
6416// implementations for isl::ast_expr_op_le
6419
6422
6427
6429 std::swap(this->ptr, obj.ptr);
6430 return *this;
6431}
6432
6436
6437inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
6438{
6439 char *str = isl_ast_expr_to_str(obj.get());
6440 if (!str) {
6441 os.setstate(std::ios_base::badbit);
6442 return os;
6443 }
6444 os << str;
6445 free(str);
6446 return os;
6447}
6448
6449// implementations for isl::ast_expr_op_lt
6452
6455
6460
6462 std::swap(this->ptr, obj.ptr);
6463 return *this;
6464}
6465
6469
6470inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
6471{
6472 char *str = isl_ast_expr_to_str(obj.get());
6473 if (!str) {
6474 os.setstate(std::ios_base::badbit);
6475 return os;
6476 }
6477 os << str;
6478 free(str);
6479 return os;
6480}
6481
6482// implementations for isl::ast_expr_op_max
6485
6488
6493
6495 std::swap(this->ptr, obj.ptr);
6496 return *this;
6497}
6498
6502
6503inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
6504{
6505 char *str = isl_ast_expr_to_str(obj.get());
6506 if (!str) {
6507 os.setstate(std::ios_base::badbit);
6508 return os;
6509 }
6510 os << str;
6511 free(str);
6512 return os;
6513}
6514
6515// implementations for isl::ast_expr_op_member
6518
6521
6526
6528 std::swap(this->ptr, obj.ptr);
6529 return *this;
6530}
6531
6535
6536inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
6537{
6538 char *str = isl_ast_expr_to_str(obj.get());
6539 if (!str) {
6540 os.setstate(std::ios_base::badbit);
6541 return os;
6542 }
6543 os << str;
6544 free(str);
6545 return os;
6546}
6547
6548// implementations for isl::ast_expr_op_min
6551
6554
6559
6561 std::swap(this->ptr, obj.ptr);
6562 return *this;
6563}
6564
6568
6569inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
6570{
6571 char *str = isl_ast_expr_to_str(obj.get());
6572 if (!str) {
6573 os.setstate(std::ios_base::badbit);
6574 return os;
6575 }
6576 os << str;
6577 free(str);
6578 return os;
6579}
6580
6581// implementations for isl::ast_expr_op_minus
6584
6587
6592
6594 std::swap(this->ptr, obj.ptr);
6595 return *this;
6596}
6597
6601
6602inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
6603{
6604 char *str = isl_ast_expr_to_str(obj.get());
6605 if (!str) {
6606 os.setstate(std::ios_base::badbit);
6607 return os;
6608 }
6609 os << str;
6610 free(str);
6611 return os;
6612}
6613
6614// implementations for isl::ast_expr_op_mul
6617
6620
6625
6627 std::swap(this->ptr, obj.ptr);
6628 return *this;
6629}
6630
6634
6635inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
6636{
6637 char *str = isl_ast_expr_to_str(obj.get());
6638 if (!str) {
6639 os.setstate(std::ios_base::badbit);
6640 return os;
6641 }
6642 os << str;
6643 free(str);
6644 return os;
6645}
6646
6647// implementations for isl::ast_expr_op_or
6650
6653
6658
6660 std::swap(this->ptr, obj.ptr);
6661 return *this;
6662}
6663
6667
6668inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
6669{
6670 char *str = isl_ast_expr_to_str(obj.get());
6671 if (!str) {
6672 os.setstate(std::ios_base::badbit);
6673 return os;
6674 }
6675 os << str;
6676 free(str);
6677 return os;
6678}
6679
6680// implementations for isl::ast_expr_op_or_else
6683
6686
6691
6693 std::swap(this->ptr, obj.ptr);
6694 return *this;
6695}
6696
6700
6701inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
6702{
6703 char *str = isl_ast_expr_to_str(obj.get());
6704 if (!str) {
6705 os.setstate(std::ios_base::badbit);
6706 return os;
6707 }
6708 os << str;
6709 free(str);
6710 return os;
6711}
6712
6713// implementations for isl::ast_expr_op_pdiv_q
6716
6719
6724
6726 std::swap(this->ptr, obj.ptr);
6727 return *this;
6728}
6729
6733
6734inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
6735{
6736 char *str = isl_ast_expr_to_str(obj.get());
6737 if (!str) {
6738 os.setstate(std::ios_base::badbit);
6739 return os;
6740 }
6741 os << str;
6742 free(str);
6743 return os;
6744}
6745
6746// implementations for isl::ast_expr_op_pdiv_r
6749
6752
6757
6759 std::swap(this->ptr, obj.ptr);
6760 return *this;
6761}
6762
6766
6767inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
6768{
6769 char *str = isl_ast_expr_to_str(obj.get());
6770 if (!str) {
6771 os.setstate(std::ios_base::badbit);
6772 return os;
6773 }
6774 os << str;
6775 free(str);
6776 return os;
6777}
6778
6779// implementations for isl::ast_expr_op_select
6782
6785
6790
6792 std::swap(this->ptr, obj.ptr);
6793 return *this;
6794}
6795
6799
6800inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
6801{
6802 char *str = isl_ast_expr_to_str(obj.get());
6803 if (!str) {
6804 os.setstate(std::ios_base::badbit);
6805 return os;
6806 }
6807 os << str;
6808 free(str);
6809 return os;
6810}
6811
6812// implementations for isl::ast_expr_op_sub
6815
6818
6823
6825 std::swap(this->ptr, obj.ptr);
6826 return *this;
6827}
6828
6832
6833inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
6834{
6835 char *str = isl_ast_expr_to_str(obj.get());
6836 if (!str) {
6837 os.setstate(std::ios_base::badbit);
6838 return os;
6839 }
6840 os << str;
6841 free(str);
6842 return os;
6843}
6844
6845// implementations for isl::ast_expr_op_zdiv_r
6848
6851
6856
6858 std::swap(this->ptr, obj.ptr);
6859 return *this;
6860}
6861
6865
6866inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
6867{
6868 char *str = isl_ast_expr_to_str(obj.get());
6869 if (!str) {
6870 os.setstate(std::ios_base::badbit);
6871 return os;
6872 }
6873 os << str;
6874 free(str);
6875 return os;
6876}
6877
6878// implementations for isl::ast_node
6886
6889
6891 : ptr(nullptr) {}
6892
6894 : ptr(nullptr)
6895{
6896 ptr = obj.copy();
6897}
6898
6900 std::swap(this->ptr, obj.ptr);
6901 return *this;
6902}
6903
6908
6912
6914 return ptr;
6915}
6916
6918 isl_ast_node *tmp = ptr;
6919 ptr = nullptr;
6920 return tmp;
6921}
6922
6923bool ast_node::is_null() const {
6924 return ptr == nullptr;
6925}
6926
6927template <typename T, typename>
6928boolean ast_node::isa_type(T subtype) const
6929{
6930 if (is_null())
6931 return boolean();
6932 return isl_ast_node_get_type(get()) == subtype;
6933}
6934template <class T>
6935boolean ast_node::isa() const
6936{
6937 return isa_type<decltype(T::type)>(T::type);
6938}
6939template <class T>
6941{
6942 if (isa<T>().is_false())
6943 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6944 return T(copy());
6945}
6946
6950
6952{
6953 struct fn_data {
6955 } fn_data = { fn };
6956 auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_ast_node * {
6957 auto *data = static_cast<struct fn_data *>(arg_1);
6958 auto ret = (data->func)(manage(arg_0));
6959 return ret.release();
6960 };
6961 auto res = isl_ast_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
6962 return manage(res);
6963}
6964
6965std::string ast_node::to_C_str() const
6966{
6967 auto res = isl_ast_node_to_C_str(get());
6968 std::string tmp(res);
6969 free(res);
6970 return tmp;
6971}
6972
6974{
6975 auto res = isl_ast_node_to_list(copy());
6976 return manage(res);
6977}
6978
6979inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
6980{
6981 char *str = isl_ast_node_to_str(obj.get());
6982 if (!str) {
6983 os.setstate(std::ios_base::badbit);
6984 return os;
6985 }
6986 os << str;
6987 free(str);
6988 return os;
6989}
6990
6991// implementations for isl::ast_node_block
6994
6997
7002
7008
7010 std::swap(this->ptr, obj.ptr);
7011 return *this;
7012}
7013
7017
7023
7028
7029inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
7030{
7031 char *str = isl_ast_node_to_str(obj.get());
7032 if (!str) {
7033 os.setstate(std::ios_base::badbit);
7034 return os;
7035 }
7036 os << str;
7037 free(str);
7038 return os;
7039}
7040
7041// implementations for isl::ast_node_for
7044
7047
7052
7054 std::swap(this->ptr, obj.ptr);
7055 return *this;
7056}
7057
7061
7063{
7065 return manage(res);
7066}
7067
7069{
7070 return body();
7071}
7072
7074{
7076 return manage(res);
7077}
7078
7080{
7081 return cond();
7082}
7083
7085{
7087 return manage(res);
7088}
7089
7091{
7092 return inc();
7093}
7094
7096{
7098 return manage(res);
7099}
7100
7102{
7103 return init();
7104}
7105
7107{
7109 return manage(res);
7110}
7111
7117
7122
7123inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
7124{
7125 char *str = isl_ast_node_to_str(obj.get());
7126 if (!str) {
7127 os.setstate(std::ios_base::badbit);
7128 return os;
7129 }
7130 os << str;
7131 free(str);
7132 return os;
7133}
7134
7135// implementations for isl::ast_node_if
7138
7141
7146
7148 std::swap(this->ptr, obj.ptr);
7149 return *this;
7150}
7151
7155
7157{
7159 return manage(res);
7160}
7161
7163{
7164 return cond();
7165}
7166
7172
7177
7179{
7181 return manage(res);
7182}
7183
7189
7194
7195inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
7196{
7197 char *str = isl_ast_node_to_str(obj.get());
7198 if (!str) {
7199 os.setstate(std::ios_base::badbit);
7200 return os;
7201 }
7202 os << str;
7203 free(str);
7204 return os;
7205}
7206
7207// implementations for isl::ast_node_list
7208ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
7209 return ast_node_list(ptr);
7210}
7212 ptr = isl_ast_node_list_copy(ptr);
7213 return ast_node_list(ptr);
7214}
7215
7217 : ptr(ptr) {}
7218
7221
7223 : ptr(nullptr)
7224{
7225 ptr = obj.copy();
7226}
7227
7229{
7230 auto res = isl_ast_node_list_alloc(ctx.release(), n);
7231 ptr = res;
7232}
7233
7235{
7236 auto res = isl_ast_node_list_from_ast_node(el.release());
7237 ptr = res;
7238}
7239
7241 std::swap(this->ptr, obj.ptr);
7242 return *this;
7243}
7244
7246 if (ptr)
7247 isl_ast_node_list_free(ptr);
7248}
7249
7250__isl_give isl_ast_node_list *ast_node_list::copy() const & {
7251 return isl_ast_node_list_copy(ptr);
7252}
7253
7254__isl_keep isl_ast_node_list *ast_node_list::get() const {
7255 return ptr;
7256}
7257
7259 isl_ast_node_list *tmp = ptr;
7260 ptr = nullptr;
7261 return tmp;
7262}
7263
7265 return ptr == nullptr;
7266}
7267
7269 return isl::checked::ctx(isl_ast_node_list_get_ctx(ptr));
7270}
7271
7273{
7274 auto res = isl_ast_node_list_add(copy(), el.release());
7275 return manage(res);
7276}
7277
7279{
7280 auto res = isl_ast_node_list_get_at(get(), index);
7281 return manage(res);
7282}
7283
7285{
7286 return at(index);
7287}
7288
7290{
7291 auto res = isl_ast_node_list_clear(copy());
7292 return manage(res);
7293}
7294
7296{
7297 auto res = isl_ast_node_list_concat(copy(), list2.release());
7298 return manage(res);
7299}
7300
7301isl::checked::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
7302{
7303 auto res = isl_ast_node_list_drop(copy(), first, n);
7304 return manage(res);
7305}
7306
7308{
7309 struct fn_data {
7310 std::function<stat(isl::checked::ast_node)> func;
7311 } fn_data = { fn };
7312 auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
7313 auto *data = static_cast<struct fn_data *>(arg_1);
7314 auto ret = (data->func)(manage(arg_0));
7315 return ret.release();
7316 };
7317 auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
7318 return manage(res);
7319}
7320
7321stat ast_node_list::foreach_scc(const std::function<boolean(isl::checked::ast_node, isl::checked::ast_node)> &follows, const std::function<stat(isl::checked::ast_node_list)> &fn) const
7322{
7323 struct follows_data {
7325 } follows_data = { follows };
7326 auto follows_lambda = [](isl_ast_node *arg_0, isl_ast_node *arg_1, void *arg_2) -> isl_bool {
7327 auto *data = static_cast<struct follows_data *>(arg_2);
7328 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
7329 return ret.release();
7330 };
7331 struct fn_data {
7332 std::function<stat(isl::checked::ast_node_list)> func;
7333 } fn_data = { fn };
7334 auto fn_lambda = [](isl_ast_node_list *arg_0, void *arg_1) -> isl_stat {
7335 auto *data = static_cast<struct fn_data *>(arg_1);
7336 auto ret = (data->func)(manage(arg_0));
7337 return ret.release();
7338 };
7339 auto res = isl_ast_node_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
7340 return manage(res);
7341}
7342
7344{
7345 auto res = isl_ast_node_list_insert(copy(), pos, el.release());
7346 return manage(res);
7347}
7348
7350{
7351 auto res = isl_ast_node_list_set_at(copy(), index, el.release());
7352 return manage(res);
7353}
7354
7356{
7357 auto res = isl_ast_node_list_size(get());
7358 return manage(res);
7359}
7360
7361inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
7362{
7363 char *str = isl_ast_node_list_to_str(obj.get());
7364 if (!str) {
7365 os.setstate(std::ios_base::badbit);
7366 return os;
7367 }
7368 os << str;
7369 free(str);
7370 return os;
7371}
7372
7373// implementations for isl::ast_node_mark
7376
7379
7384
7386 std::swap(this->ptr, obj.ptr);
7387 return *this;
7388}
7389
7393
7395{
7397 return manage(res);
7398}
7399
7401{
7402 return id();
7403}
7404
7410
7412{
7413 return node();
7414}
7415
7416inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
7417{
7418 char *str = isl_ast_node_to_str(obj.get());
7419 if (!str) {
7420 os.setstate(std::ios_base::badbit);
7421 return os;
7422 }
7423 os << str;
7424 free(str);
7425 return os;
7426}
7427
7428// implementations for isl::ast_node_user
7431
7434
7439
7445
7447 std::swap(this->ptr, obj.ptr);
7448 return *this;
7449}
7450
7454
7460
7462{
7463 return expr();
7464}
7465
7466inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
7467{
7468 char *str = isl_ast_node_to_str(obj.get());
7469 if (!str) {
7470 os.setstate(std::ios_base::badbit);
7471 return os;
7472 }
7473 os << str;
7474 free(str);
7475 return os;
7476}
7477
7478// implementations for isl::basic_map
7486
7489
7491 : ptr(nullptr) {}
7492
7494 : ptr(nullptr)
7495{
7496 ptr = obj.copy();
7497}
7498
7500{
7501 auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
7502 ptr = res;
7503}
7504
7506 std::swap(this->ptr, obj.ptr);
7507 return *this;
7508}
7509
7514
7518
7520 return ptr;
7521}
7522
7524 isl_basic_map *tmp = ptr;
7525 ptr = nullptr;
7526 return tmp;
7527}
7528
7530 return ptr == nullptr;
7531}
7532
7536
7542
7548
7553
7558
7564
7569
7574
7576{
7577 return isl::checked::map(*this).as_map();
7578}
7579
7584
7589
7594
7599
7604
7606{
7607 return isl::checked::map(*this).coalesce();
7608}
7609
7614
7619
7621{
7622 return isl::checked::map(*this).curry();
7623}
7624
7626{
7627 auto res = isl_basic_map_deltas(copy());
7628 return manage(res);
7629}
7630
7636
7638{
7639 return isl::checked::map(*this).domain();
7640}
7641
7646
7651
7656
7661
7666
7671
7676
7678{
7679 return isl::checked::map(*this).domain_tuple_dim();
7680}
7681
7686
7691
7693{
7694 return isl::checked::map(*this).eq_at(mpa);
7695}
7696
7701
7702boolean basic_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
7703{
7704 return isl::checked::map(*this).every_map(test);
7705}
7706
7711
7716
7721
7723{
7724 return isl::checked::map(*this).fixed_power(exp);
7725}
7726
7728{
7729 return this->fixed_power(isl::checked::val(ctx(), exp));
7730}
7731
7733{
7734 auto res = isl_basic_map_flatten(copy());
7735 return manage(res);
7736}
7737
7743
7749
7751{
7752 return isl::checked::map(*this).foreach_basic_map(fn);
7753}
7754
7756{
7757 return isl::checked::map(*this).foreach_map(fn);
7758}
7759
7765
7770
7775
7780
7785
7790
7795
7797{
7798 return isl::checked::map(*this).has_domain_tuple_id();
7799}
7800
7802{
7803 return isl::checked::map(*this).has_range_tuple_id();
7804}
7805
7811
7816
7821
7827
7832
7837
7842
7847
7852
7857
7862
7867
7872
7877
7883
7888
7893
7899
7904
7909
7914
7919
7924
7929
7934
7939
7944
7949
7951{
7952 return isl::checked::map(*this).is_bijective();
7953}
7954
7956{
7957 return isl::checked::map(*this).is_disjoint(map2);
7958}
7959
7961{
7962 return isl::checked::map(*this).is_disjoint(umap2);
7963}
7964
7965boolean basic_map::is_empty() const
7966{
7967 auto res = isl_basic_map_is_empty(get());
7968 return manage(res);
7969}
7970
7972{
7973 auto res = isl_basic_map_is_equal(get(), bmap2.get());
7974 return manage(res);
7975}
7976
7978{
7979 return isl::checked::map(*this).is_equal(map2);
7980}
7981
7983{
7984 return isl::checked::map(*this).is_equal(umap2);
7985}
7986
7988{
7989 return isl::checked::map(*this).is_injective();
7990}
7991
7993{
7994 return isl::checked::map(*this).is_single_valued();
7995}
7996
7998{
8000}
8001
8003{
8004 return isl::checked::map(*this).is_strict_subset(umap2);
8005}
8006
8008{
8009 auto res = isl_basic_map_is_subset(get(), bmap2.get());
8010 return manage(res);
8011}
8012
8014{
8015 return isl::checked::map(*this).is_subset(map2);
8016}
8017
8019{
8020 return isl::checked::map(*this).is_subset(umap2);
8021}
8022
8023boolean basic_map::isa_map() const
8024{
8025 return isl::checked::map(*this).isa_map();
8026}
8027
8032
8037
8042
8047
8049{
8050 auto res = isl_basic_map_lexmax(copy());
8051 return manage(res);
8052}
8053
8058
8060{
8061 auto res = isl_basic_map_lexmin(copy());
8062 return manage(res);
8063}
8064
8069
8074
8079
8084
8089
8091{
8092 return isl::checked::map(*this).n_basic_map();
8093}
8094
8096{
8097 return isl::checked::map(*this).params();
8098}
8099
8104
8109
8114
8119
8124
8129
8134
8139
8144
8146{
8147 return isl::checked::map(*this).product(umap2);
8148}
8149
8154
8159
8161{
8162 return this->project_out_param(isl::checked::id(ctx(), id));
8163}
8164
8169
8171{
8172 return isl::checked::map(*this).range();
8173}
8174
8179
8184
8189
8194
8199
8204
8209
8214
8216{
8217 return isl::checked::map(*this).range_tuple_dim();
8218}
8219
8224
8226{
8227 auto res = isl_basic_map_reverse(copy());
8228 return manage(res);
8229}
8230
8232{
8233 auto res = isl_basic_map_sample(copy());
8234 return manage(res);
8235}
8236
8241
8243{
8244 return this->set_domain_tuple(isl::checked::id(ctx(), id));
8245}
8246
8251
8253{
8254 return this->set_range_tuple(isl::checked::id(ctx(), id));
8255}
8256
8258{
8259 return isl::checked::map(*this).space();
8260}
8261
8266
8268{
8269 return isl::checked::map(*this).subtract(umap2);
8270}
8271
8276
8281
8283{
8284 return isl::checked::map(*this).to_list();
8285}
8286
8291
8293{
8294 return isl::checked::map(*this).uncurry();
8295}
8296
8298{
8299 auto res = isl_basic_map_union(copy(), bmap2.release());
8300 return manage(res);
8301}
8302
8307
8309{
8310 return isl::checked::map(*this).unite(umap2);
8311}
8312
8317
8322
8324{
8325 return isl::checked::map(*this).wrap();
8326}
8327
8329{
8330 return isl::checked::map(*this).zip();
8331}
8332
8333inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
8334{
8335 char *str = isl_basic_map_to_str(obj.get());
8336 if (!str) {
8337 os.setstate(std::ios_base::badbit);
8338 return os;
8339 }
8340 os << str;
8341 free(str);
8342 return os;
8343}
8344
8345// implementations for isl::basic_set
8353
8356
8358 : ptr(nullptr) {}
8359
8361 : ptr(nullptr)
8362{
8363 ptr = obj.copy();
8364}
8365
8371
8373{
8374 auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
8375 ptr = res;
8376}
8377
8379 std::swap(this->ptr, obj.ptr);
8380 return *this;
8381}
8382
8387
8391
8393 return ptr;
8394}
8395
8397 isl_basic_set *tmp = ptr;
8398 ptr = nullptr;
8399 return tmp;
8400}
8401
8403 return ptr == nullptr;
8404}
8405
8409
8415
8421
8426
8428{
8429 return isl::checked::set(*this).apply(umap);
8430}
8431
8436
8438{
8439 return isl::checked::set(*this).as_set();
8440}
8441
8446
8448{
8449 return isl::checked::set(*this).coalesce();
8450}
8451
8456
8461
8467
8469{
8471 return manage(res);
8472}
8473
8478
8483
8484boolean basic_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
8485{
8486 return isl::checked::set(*this).every_set(test);
8487}
8488
8493
8495{
8496 auto res = isl_basic_set_flatten(copy());
8497 return manage(res);
8498}
8499
8501{
8502 return isl::checked::set(*this).foreach_basic_set(fn);
8503}
8504
8506{
8507 return isl::checked::set(*this).foreach_point(fn);
8508}
8509
8511{
8512 return isl::checked::set(*this).foreach_set(fn);
8513}
8514
8520
8525
8530
8535
8540
8542{
8543 return isl::checked::set(*this).identity();
8544}
8545
8550
8555
8561
8566
8571
8576
8582
8587
8592
8594{
8595 return isl::checked::set(*this).involves_locals();
8596}
8597
8599{
8600 return isl::checked::set(*this).is_disjoint(set2);
8601}
8602
8604{
8605 return isl::checked::set(*this).is_disjoint(uset2);
8606}
8607
8608boolean basic_set::is_empty() const
8609{
8610 auto res = isl_basic_set_is_empty(get());
8611 return manage(res);
8612}
8613
8615{
8616 auto res = isl_basic_set_is_equal(get(), bset2.get());
8617 return manage(res);
8618}
8619
8621{
8622 return isl::checked::set(*this).is_equal(set2);
8623}
8624
8626{
8627 return isl::checked::set(*this).is_equal(uset2);
8628}
8629
8630boolean basic_set::is_equal(const isl::checked::point &bset2) const
8631{
8632 return this->is_equal(isl::checked::basic_set(bset2));
8633}
8634
8636{
8637 return isl::checked::set(*this).is_singleton();
8638}
8639
8641{
8643}
8644
8646{
8647 return isl::checked::set(*this).is_strict_subset(uset2);
8648}
8649
8651{
8652 auto res = isl_basic_set_is_subset(get(), bset2.get());
8653 return manage(res);
8654}
8655
8657{
8658 return isl::checked::set(*this).is_subset(set2);
8659}
8660
8662{
8663 return isl::checked::set(*this).is_subset(uset2);
8664}
8665
8667{
8668 return this->is_subset(isl::checked::basic_set(bset2));
8669}
8670
8672{
8674 return manage(res);
8675}
8676
8677boolean basic_set::isa_set() const
8678{
8679 return isl::checked::set(*this).isa_set();
8680}
8681
8686
8688{
8689 auto res = isl_basic_set_lexmax(copy());
8690 return manage(res);
8691}
8692
8697
8699{
8700 auto res = isl_basic_set_lexmin(copy());
8701 return manage(res);
8702}
8703
8708
8713
8715{
8716 return isl::checked::set(*this).lower_bound(lower);
8717}
8718
8723
8728
8733
8738
8740{
8741 return isl::checked::set(*this).n_basic_set();
8742}
8743
8748
8750{
8751 return this->param_pw_aff_on_domain(isl::checked::id(ctx(), id));
8752}
8753
8755{
8756 auto res = isl_basic_set_params(copy());
8757 return manage(res);
8758}
8759
8764
8769
8774
8779
8784
8789
8794
8799
8804
8806{
8807 return this->project_out_param(isl::checked::id(ctx(), id));
8808}
8809
8814
8819
8824
8829
8831{
8832 auto res = isl_basic_set_sample(copy());
8833 return manage(res);
8834}
8835
8841
8846
8851
8853{
8854 return isl::checked::set(*this).space();
8855}
8856
8858{
8859 return isl::checked::set(*this).stride(pos);
8860}
8861
8866
8868{
8869 return isl::checked::set(*this).subtract(uset2);
8870}
8871
8873{
8874 return isl::checked::set(*this).to_list();
8875}
8876
8878{
8879 auto res = isl_basic_set_to_set(copy());
8880 return manage(res);
8881}
8882
8887
8892
8894{
8895 return isl::checked::set(*this).tuple_dim();
8896}
8897
8902
8907
8909{
8910 auto res = isl_basic_set_union(copy(), bset2.release());
8911 return manage(res);
8912}
8913
8918
8920{
8921 return isl::checked::set(*this).unite(uset2);
8922}
8923
8925{
8926 return this->unite(isl::checked::basic_set(bset2));
8927}
8928
8933
8935{
8936 return isl::checked::set(*this).unwrap();
8937}
8938
8943
8945{
8946 return isl::checked::set(*this).upper_bound(upper);
8947}
8948
8953
8954inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
8955{
8956 char *str = isl_basic_set_to_str(obj.get());
8957 if (!str) {
8958 os.setstate(std::ios_base::badbit);
8959 return os;
8960 }
8961 os << str;
8962 free(str);
8963 return os;
8964}
8965
8966// implementations for isl::fixed_box
8974
8977
8979 : ptr(nullptr) {}
8980
8982 : ptr(nullptr)
8983{
8984 ptr = obj.copy();
8985}
8986
8988{
8989 auto res = isl_fixed_box_read_from_str(ctx.release(), str.c_str());
8990 ptr = res;
8991}
8992
8994 std::swap(this->ptr, obj.ptr);
8995 return *this;
8996}
8997
9002
9006
9008 return ptr;
9009}
9010
9012 isl_fixed_box *tmp = ptr;
9013 ptr = nullptr;
9014 return tmp;
9015}
9016
9018 return ptr == nullptr;
9019}
9020
9024
9025boolean fixed_box::is_valid() const
9026{
9027 auto res = isl_fixed_box_is_valid(get());
9028 return manage(res);
9029}
9030
9032{
9034 return manage(res);
9035}
9036
9038{
9039 return offset();
9040}
9041
9043{
9044 auto res = isl_fixed_box_plain_is_equal(get(), box2.get());
9045 return manage(res);
9046}
9047
9049{
9050 auto res = isl_fixed_box_get_size(get());
9051 return manage(res);
9052}
9053
9055{
9056 return size();
9057}
9058
9060{
9062 return manage(res);
9063}
9064
9066{
9067 return space();
9068}
9069
9070inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
9071{
9072 char *str = isl_fixed_box_to_str(obj.get());
9073 if (!str) {
9074 os.setstate(std::ios_base::badbit);
9075 return os;
9076 }
9077 os << str;
9078 free(str);
9079 return os;
9080}
9081
9082// implementations for isl::id
9084 return id(ptr);
9085}
9087 ptr = isl_id_copy(ptr);
9088 return id(ptr);
9089}
9090
9093
9095 : ptr(nullptr) {}
9096
9097id::id(const id &obj)
9098 : ptr(nullptr)
9099{
9100 ptr = obj.copy();
9101}
9102
9103id::id(isl::checked::ctx ctx, const std::string &str)
9104{
9105 auto res = isl_id_read_from_str(ctx.release(), str.c_str());
9106 ptr = res;
9107}
9108
9110 std::swap(this->ptr, obj.ptr);
9111 return *this;
9112}
9113
9115 if (ptr)
9117}
9118
9120 return isl_id_copy(ptr);
9121}
9122
9124 return ptr;
9125}
9126
9128 isl_id *tmp = ptr;
9129 ptr = nullptr;
9130 return tmp;
9131}
9132
9133bool id::is_null() const {
9134 return ptr == nullptr;
9135}
9136
9140
9141std::string id::name() const
9142{
9143 auto res = isl_id_get_name(get());
9144 std::string tmp(res);
9145 return tmp;
9146}
9147
9148std::string id::get_name() const
9149{
9150 return name();
9151}
9152
9154{
9155 auto res = isl_id_to_list(copy());
9156 return manage(res);
9157}
9158
9159#if __cplusplus >= 201703L
9160id::id(isl::checked::ctx ctx, const std::string &str, const std::any &any)
9161{
9162 std::any *p = new std::any(any);
9163 auto res = isl_id_alloc(ctx.get(), str.c_str(), p);
9164 res = isl_id_set_free_user(res, &ctx::free_user);
9165 if (!res) {
9166 delete p;
9167 }
9168 ptr = res;
9169}
9170
9171template <class T>
9172std::optional<T> id::try_user() const
9173{
9174 std::any *p = (std::any *) isl_id_get_user(ptr);
9175 if (!p)
9176 return std::nullopt;
9177 if (isl_id_get_free_user(ptr) != &ctx::free_user)
9178 return std::nullopt;
9179 T *res = std::any_cast<T>(p);
9180 if (!res)
9181 return std::nullopt;
9182 return *res;
9183}
9184
9185template <class T>
9186T id::user() const
9187{
9188 std::any *p = (std::any *) isl_id_get_user(ptr);
9189 if (!p)
9190 isl_die(ctx().get(), isl_error_invalid, "no user pointer", return T());
9191 if (isl_id_get_free_user(ptr) != &ctx::free_user)
9192 isl_die(ctx().get(), isl_error_invalid, "user pointer not attached by C++ interface", return T());
9193 T *res = std::any_cast<T>(p);
9194 if (!res)
9195 isl_die(ctx().get(), isl_error_invalid, "user pointer not of given type", return T());
9196 return *res;
9197}
9198#endif
9199
9200inline std::ostream &operator<<(std::ostream &os, const id &obj)
9201{
9202 char *str = isl_id_to_str(obj.get());
9203 if (!str) {
9204 os.setstate(std::ios_base::badbit);
9205 return os;
9206 }
9207 os << str;
9208 free(str);
9209 return os;
9210}
9211
9212// implementations for isl::id_list
9214 return id_list(ptr);
9215}
9217 ptr = isl_id_list_copy(ptr);
9218 return id_list(ptr);
9219}
9220
9222 : ptr(ptr) {}
9223
9225 : ptr(nullptr) {}
9226
9228 : ptr(nullptr)
9229{
9230 ptr = obj.copy();
9231}
9232
9234{
9235 auto res = isl_id_list_alloc(ctx.release(), n);
9236 ptr = res;
9237}
9238
9240{
9241 auto res = isl_id_list_from_id(el.release());
9242 ptr = res;
9243}
9244
9246{
9247 auto res = isl_id_list_read_from_str(ctx.release(), str.c_str());
9248 ptr = res;
9249}
9250
9252 std::swap(this->ptr, obj.ptr);
9253 return *this;
9254}
9255
9257 if (ptr)
9258 isl_id_list_free(ptr);
9259}
9260
9261__isl_give isl_id_list *id_list::copy() const & {
9262 return isl_id_list_copy(ptr);
9263}
9264
9265__isl_keep isl_id_list *id_list::get() const {
9266 return ptr;
9267}
9268
9270 isl_id_list *tmp = ptr;
9271 ptr = nullptr;
9272 return tmp;
9273}
9274
9275bool id_list::is_null() const {
9276 return ptr == nullptr;
9277}
9278
9280 return isl::checked::ctx(isl_id_list_get_ctx(ptr));
9281}
9282
9284{
9285 auto res = isl_id_list_add(copy(), el.release());
9286 return manage(res);
9287}
9288
9289isl::checked::id_list id_list::add(const std::string &el) const
9290{
9291 return this->add(isl::checked::id(ctx(), el));
9292}
9293
9295{
9296 auto res = isl_id_list_get_at(get(), index);
9297 return manage(res);
9298}
9299
9301{
9302 return at(index);
9303}
9304
9306{
9307 auto res = isl_id_list_clear(copy());
9308 return manage(res);
9309}
9310
9312{
9313 auto res = isl_id_list_concat(copy(), list2.release());
9314 return manage(res);
9315}
9316
9317isl::checked::id_list id_list::drop(unsigned int first, unsigned int n) const
9318{
9319 auto res = isl_id_list_drop(copy(), first, n);
9320 return manage(res);
9321}
9322
9323stat id_list::foreach(const std::function<stat(isl::checked::id)> &fn) const
9324{
9325 struct fn_data {
9326 std::function<stat(isl::checked::id)> func;
9327 } fn_data = { fn };
9328 auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
9329 auto *data = static_cast<struct fn_data *>(arg_1);
9330 auto ret = (data->func)(manage(arg_0));
9331 return ret.release();
9332 };
9333 auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
9334 return manage(res);
9335}
9336
9337stat id_list::foreach_scc(const std::function<boolean(isl::checked::id, isl::checked::id)> &follows, const std::function<stat(isl::checked::id_list)> &fn) const
9338{
9339 struct follows_data {
9340 std::function<boolean(isl::checked::id, isl::checked::id)> func;
9341 } follows_data = { follows };
9342 auto follows_lambda = [](isl_id *arg_0, isl_id *arg_1, void *arg_2) -> isl_bool {
9343 auto *data = static_cast<struct follows_data *>(arg_2);
9344 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
9345 return ret.release();
9346 };
9347 struct fn_data {
9348 std::function<stat(isl::checked::id_list)> func;
9349 } fn_data = { fn };
9350 auto fn_lambda = [](isl_id_list *arg_0, void *arg_1) -> isl_stat {
9351 auto *data = static_cast<struct fn_data *>(arg_1);
9352 auto ret = (data->func)(manage(arg_0));
9353 return ret.release();
9354 };
9355 auto res = isl_id_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
9356 return manage(res);
9357}
9358
9360{
9361 auto res = isl_id_list_insert(copy(), pos, el.release());
9362 return manage(res);
9363}
9364
9365isl::checked::id_list id_list::insert(unsigned int pos, const std::string &el) const
9366{
9367 return this->insert(pos, isl::checked::id(ctx(), el));
9368}
9369
9371{
9372 auto res = isl_id_list_set_at(copy(), index, el.release());
9373 return manage(res);
9374}
9375
9376isl::checked::id_list id_list::set_at(int index, const std::string &el) const
9377{
9378 return this->set_at(index, isl::checked::id(ctx(), el));
9379}
9380
9381class size id_list::size() const
9382{
9383 auto res = isl_id_list_size(get());
9384 return manage(res);
9385}
9386
9387inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
9388{
9389 char *str = isl_id_list_to_str(obj.get());
9390 if (!str) {
9391 os.setstate(std::ios_base::badbit);
9392 return os;
9393 }
9394 os << str;
9395 free(str);
9396 return os;
9397}
9398
9399// implementations for isl::id_to_ast_expr
9400id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
9401 return id_to_ast_expr(ptr);
9402}
9404 ptr = isl_id_to_ast_expr_copy(ptr);
9405 return id_to_ast_expr(ptr);
9406}
9407
9409 : ptr(ptr) {}
9410
9413
9415 : ptr(nullptr)
9416{
9417 ptr = obj.copy();
9418}
9419
9421{
9422 auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
9423 ptr = res;
9424}
9425
9427{
9428 auto res = isl_id_to_ast_expr_read_from_str(ctx.release(), str.c_str());
9429 ptr = res;
9430}
9431
9433 std::swap(this->ptr, obj.ptr);
9434 return *this;
9435}
9436
9438 if (ptr)
9439 isl_id_to_ast_expr_free(ptr);
9440}
9441
9442__isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
9443 return isl_id_to_ast_expr_copy(ptr);
9444}
9445
9446__isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
9447 return ptr;
9448}
9449
9451 isl_id_to_ast_expr *tmp = ptr;
9452 ptr = nullptr;
9453 return tmp;
9454}
9455
9457 return ptr == nullptr;
9458}
9459
9461 return isl::checked::ctx(isl_id_to_ast_expr_get_ctx(ptr));
9462}
9463
9465{
9466 auto res = isl_id_to_ast_expr_is_equal(get(), hmap2.get());
9467 return manage(res);
9468}
9469
9471{
9472 auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
9473 return manage(res);
9474}
9475
9477{
9478 return this->set(isl::checked::id(ctx(), key), val);
9479}
9480
9481inline std::ostream &operator<<(std::ostream &os, const id_to_ast_expr &obj)
9482{
9483 char *str = isl_id_to_ast_expr_to_str(obj.get());
9484 if (!str) {
9485 os.setstate(std::ios_base::badbit);
9486 return os;
9487 }
9488 os << str;
9489 free(str);
9490 return os;
9491}
9492
9493// implementations for isl::id_to_id
9495 return id_to_id(ptr);
9496}
9498 ptr = isl_id_to_id_copy(ptr);
9499 return id_to_id(ptr);
9500}
9501
9503 : ptr(ptr) {}
9504
9506 : ptr(nullptr) {}
9507
9509 : ptr(nullptr)
9510{
9511 ptr = obj.copy();
9512}
9513
9515{
9516 auto res = isl_id_to_id_alloc(ctx.release(), min_size);
9517 ptr = res;
9518}
9519
9521{
9522 auto res = isl_id_to_id_read_from_str(ctx.release(), str.c_str());
9523 ptr = res;
9524}
9525
9527 std::swap(this->ptr, obj.ptr);
9528 return *this;
9529}
9530
9532 if (ptr)
9533 isl_id_to_id_free(ptr);
9534}
9535
9536__isl_give isl_id_to_id *id_to_id::copy() const & {
9537 return isl_id_to_id_copy(ptr);
9538}
9539
9540__isl_keep isl_id_to_id *id_to_id::get() const {
9541 return ptr;
9542}
9543
9545 isl_id_to_id *tmp = ptr;
9546 ptr = nullptr;
9547 return tmp;
9548}
9549
9550bool id_to_id::is_null() const {
9551 return ptr == nullptr;
9552}
9553
9555 return isl::checked::ctx(isl_id_to_id_get_ctx(ptr));
9556}
9557
9559{
9560 auto res = isl_id_to_id_is_equal(get(), hmap2.get());
9561 return manage(res);
9562}
9563
9565{
9566 auto res = isl_id_to_id_set(copy(), key.release(), val.release());
9567 return manage(res);
9568}
9569
9571{
9572 return this->set(key, isl::checked::id(ctx(), val));
9573}
9574
9576{
9577 return this->set(isl::checked::id(ctx(), key), val);
9578}
9579
9580isl::checked::id_to_id id_to_id::set(const std::string &key, const std::string &val) const
9581{
9582 return this->set(isl::checked::id(ctx(), key), isl::checked::id(ctx(), val));
9583}
9584
9585inline std::ostream &operator<<(std::ostream &os, const id_to_id &obj)
9586{
9587 char *str = isl_id_to_id_to_str(obj.get());
9588 if (!str) {
9589 os.setstate(std::ios_base::badbit);
9590 return os;
9591 }
9592 os << str;
9593 free(str);
9594 return os;
9595}
9596
9597// implementations for isl::map
9599 return map(ptr);
9600}
9602 ptr = isl_map_copy(ptr);
9603 return map(ptr);
9604}
9605
9608
9610 : ptr(nullptr) {}
9611
9613 : ptr(nullptr)
9614{
9615 ptr = obj.copy();
9616}
9617
9619{
9620 auto res = isl_map_from_basic_map(bmap.release());
9621 ptr = res;
9622}
9623
9624map::map(isl::checked::ctx ctx, const std::string &str)
9625{
9626 auto res = isl_map_read_from_str(ctx.release(), str.c_str());
9627 ptr = res;
9628}
9629
9631 std::swap(this->ptr, obj.ptr);
9632 return *this;
9633}
9634
9636 if (ptr)
9638}
9639
9641 return isl_map_copy(ptr);
9642}
9643
9645 return ptr;
9646}
9647
9649 isl_map *tmp = ptr;
9650 ptr = nullptr;
9651 return tmp;
9652}
9653
9654bool map::is_null() const {
9655 return ptr == nullptr;
9656}
9657
9661
9663{
9664 auto res = isl_map_affine_hull(copy());
9665 return manage(res);
9666}
9667
9669{
9670 auto res = isl_map_apply_domain(copy(), map2.release());
9671 return manage(res);
9672}
9673
9678
9683
9685{
9686 auto res = isl_map_apply_range(copy(), map2.release());
9687 return manage(res);
9688}
9689
9694
9699
9701{
9702 return isl::checked::union_map(*this).as_map();
9703}
9704
9709
9715
9720
9722{
9723 auto res = isl_map_bind_domain(copy(), tuple.release());
9724 return manage(res);
9725}
9726
9728{
9729 auto res = isl_map_bind_range(copy(), tuple.release());
9730 return manage(res);
9731}
9732
9734{
9735 auto res = isl_map_coalesce(copy());
9736 return manage(res);
9737}
9738
9740{
9741 auto res = isl_map_complement(copy());
9742 return manage(res);
9743}
9744
9749
9751{
9752 auto res = isl_map_curry(copy());
9753 return manage(res);
9754}
9755
9757{
9758 auto res = isl_map_deltas(copy());
9759 return manage(res);
9760}
9761
9763{
9765 return manage(res);
9766}
9767
9769{
9770 auto res = isl_map_domain(copy());
9771 return manage(res);
9772}
9773
9779
9785
9790
9795
9797{
9798 auto res = isl_map_domain_product(copy(), map2.release());
9799 return manage(res);
9800}
9801
9806
9811
9813{
9815 return manage(res);
9816}
9817
9819{
9821 return manage(res);
9822}
9823
9825{
9827 return manage(res);
9828}
9829
9834
9840
9842{
9843 auto res = isl_map_empty(space.release());
9844 return manage(res);
9845}
9846
9852
9857
9859{
9860 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9861}
9862
9864{
9865 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9866}
9867
9869{
9870 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9871}
9872
9874{
9875 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9876}
9877
9878boolean map::every_map(const std::function<boolean(isl::checked::map)> &test) const
9879{
9880 return isl::checked::union_map(*this).every_map(test);
9881}
9882
9887
9889{
9890 auto res = isl_map_factor_domain(copy());
9891 return manage(res);
9892}
9893
9895{
9896 auto res = isl_map_factor_range(copy());
9897 return manage(res);
9898}
9899
9901{
9902 auto res = isl_map_fixed_power_val(copy(), exp.release());
9903 return manage(res);
9904}
9905
9907{
9908 return this->fixed_power(isl::checked::val(ctx(), exp));
9909}
9910
9912{
9913 auto res = isl_map_flatten(copy());
9914 return manage(res);
9915}
9916
9918{
9920 return manage(res);
9921}
9922
9924{
9925 auto res = isl_map_flatten_range(copy());
9926 return manage(res);
9927}
9928
9930{
9931 struct fn_data {
9932 std::function<stat(isl::checked::basic_map)> func;
9933 } fn_data = { fn };
9934 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
9935 auto *data = static_cast<struct fn_data *>(arg_1);
9936 auto ret = (data->func)(manage(arg_0));
9937 return ret.release();
9938 };
9939 auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
9940 return manage(res);
9941}
9942
9943stat map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
9944{
9945 return isl::checked::union_map(*this).foreach_map(fn);
9946}
9947
9949{
9950 auto res = isl_map_gist(copy(), context.release());
9951 return manage(res);
9952}
9953
9958
9963
9965{
9966 auto res = isl_map_gist_domain(copy(), context.release());
9967 return manage(res);
9968}
9969
9974
9979
9984
9986{
9987 auto res = isl_map_gist_params(copy(), context.release());
9988 return manage(res);
9989}
9990
9995
9997{
9999 return manage(res);
10000}
10001
10003{
10005 return manage(res);
10006}
10007
10009{
10010 auto res = isl_map_intersect(copy(), map2.release());
10011 return manage(res);
10012}
10013
10015{
10016 return isl::checked::union_map(*this).intersect(umap2);
10017}
10018
10023
10029
10034
10039
10044
10049
10055
10060
10065
10071
10076
10081
10087
10092
10097
10102
10104{
10105 auto res = isl_map_intersect_params(copy(), params.release());
10106 return manage(res);
10107}
10108
10114
10119
10124
10129
10134
10140
10145
10150
10156
10161
10166
10172
10177
10182
10187
10188boolean map::is_bijective() const
10189{
10190 auto res = isl_map_is_bijective(get());
10191 return manage(res);
10192}
10193
10195{
10196 auto res = isl_map_is_disjoint(get(), map2.get());
10197 return manage(res);
10198}
10199
10201{
10202 return isl::checked::union_map(*this).is_disjoint(umap2);
10203}
10204
10206{
10207 return this->is_disjoint(isl::checked::map(map2));
10208}
10209
10210boolean map::is_empty() const
10211{
10212 auto res = isl_map_is_empty(get());
10213 return manage(res);
10214}
10215
10217{
10218 auto res = isl_map_is_equal(get(), map2.get());
10219 return manage(res);
10220}
10221
10222boolean map::is_equal(const isl::checked::union_map &umap2) const
10223{
10224 return isl::checked::union_map(*this).is_equal(umap2);
10225}
10226
10228{
10229 return this->is_equal(isl::checked::map(map2));
10230}
10231
10232boolean map::is_injective() const
10233{
10234 auto res = isl_map_is_injective(get());
10235 return manage(res);
10236}
10237
10239{
10241 return manage(res);
10242}
10243
10245{
10246 auto res = isl_map_is_strict_subset(get(), map2.get());
10247 return manage(res);
10248}
10249
10251{
10252 return isl::checked::union_map(*this).is_strict_subset(umap2);
10253}
10254
10256{
10258}
10259
10261{
10262 auto res = isl_map_is_subset(get(), map2.get());
10263 return manage(res);
10264}
10265
10266boolean map::is_subset(const isl::checked::union_map &umap2) const
10267{
10268 return isl::checked::union_map(*this).is_subset(umap2);
10269}
10270
10272{
10273 return this->is_subset(isl::checked::map(map2));
10274}
10275
10276boolean map::isa_map() const
10277{
10278 return isl::checked::union_map(*this).isa_map();
10279}
10280
10286
10292
10298
10304
10306{
10307 auto res = isl_map_lexmax(copy());
10308 return manage(res);
10309}
10310
10316
10318{
10319 auto res = isl_map_lexmin(copy());
10320 return manage(res);
10321}
10322
10328
10334
10336{
10337 return isl::checked::union_map(*this).map_list();
10338}
10339
10341{
10343 return manage(res);
10344}
10345
10347{
10349 return manage(res);
10350}
10351
10352class size map::n_basic_map() const
10353{
10354 auto res = isl_map_n_basic_map(get());
10355 return manage(res);
10356}
10357
10359{
10360 auto res = isl_map_params(copy());
10361 return manage(res);
10362}
10363
10365{
10367 return manage(res);
10368}
10369
10375
10381
10387
10392
10398
10404
10409
10411{
10412 auto res = isl_map_product(copy(), map2.release());
10413 return manage(res);
10414}
10415
10417{
10418 return isl::checked::union_map(*this).product(umap2);
10419}
10420
10425
10431
10437
10438isl::checked::map map::project_out_param(const std::string &id) const
10439{
10440 return this->project_out_param(isl::checked::id(ctx(), id));
10441}
10442
10448
10450{
10451 auto res = isl_map_range(copy());
10452 return manage(res);
10453}
10454
10456{
10458 return manage(res);
10459}
10460
10462{
10464 return manage(res);
10465}
10466
10472
10477
10479{
10480 return isl::checked::union_map(*this).range_map();
10481}
10482
10484{
10485 auto res = isl_map_range_product(copy(), map2.release());
10486 return manage(res);
10487}
10488
10493
10498
10500{
10501 auto res = isl_map_range_reverse(copy());
10502 return manage(res);
10503}
10504
10510
10515
10517{
10519 return manage(res);
10520}
10521
10523{
10525 return manage(res);
10526}
10527
10529{
10530 return range_tuple_id();
10531}
10532
10534{
10535 auto res = isl_map_reverse(copy());
10536 return manage(res);
10537}
10538
10540{
10541 auto res = isl_map_sample(copy());
10542 return manage(res);
10543}
10544
10550
10551isl::checked::map map::set_domain_tuple(const std::string &id) const
10552{
10553 return this->set_domain_tuple(isl::checked::id(ctx(), id));
10554}
10555
10557{
10559 return manage(res);
10560}
10561
10562isl::checked::map map::set_range_tuple(const std::string &id) const
10563{
10564 return this->set_range_tuple(isl::checked::id(ctx(), id));
10565}
10566
10568{
10569 auto res = isl_map_get_space(get());
10570 return manage(res);
10571}
10572
10574{
10575 return space();
10576}
10577
10579{
10580 auto res = isl_map_subtract(copy(), map2.release());
10581 return manage(res);
10582}
10583
10585{
10586 return isl::checked::union_map(*this).subtract(umap2);
10587}
10588
10593
10598
10603
10605{
10606 auto res = isl_map_to_list(copy());
10607 return manage(res);
10608}
10609
10611{
10612 auto res = isl_map_to_union_map(copy());
10613 return manage(res);
10614}
10615
10617{
10618 auto res = isl_map_uncurry(copy());
10619 return manage(res);
10620}
10621
10623{
10624 auto res = isl_map_union(copy(), map2.release());
10625 return manage(res);
10626}
10627
10629{
10630 return isl::checked::union_map(*this).unite(umap2);
10631}
10632
10634{
10635 return this->unite(isl::checked::map(map2));
10636}
10637
10639{
10640 auto res = isl_map_universe(space.release());
10641 return manage(res);
10642}
10643
10649
10655
10657{
10658 auto res = isl_map_wrap(copy());
10659 return manage(res);
10660}
10661
10663{
10664 auto res = isl_map_zip(copy());
10665 return manage(res);
10666}
10667
10668inline std::ostream &operator<<(std::ostream &os, const map &obj)
10669{
10670 char *str = isl_map_to_str(obj.get());
10671 if (!str) {
10672 os.setstate(std::ios_base::badbit);
10673 return os;
10674 }
10675 os << str;
10676 free(str);
10677 return os;
10678}
10679
10680// implementations for isl::map_list
10682 return map_list(ptr);
10683}
10685 ptr = isl_map_list_copy(ptr);
10686 return map_list(ptr);
10687}
10688
10690 : ptr(ptr) {}
10691
10693 : ptr(nullptr) {}
10694
10696 : ptr(nullptr)
10697{
10698 ptr = obj.copy();
10699}
10700
10702{
10703 auto res = isl_map_list_alloc(ctx.release(), n);
10704 ptr = res;
10705}
10706
10708{
10709 auto res = isl_map_list_from_map(el.release());
10710 ptr = res;
10711}
10712
10714{
10715 auto res = isl_map_list_read_from_str(ctx.release(), str.c_str());
10716 ptr = res;
10717}
10718
10720 std::swap(this->ptr, obj.ptr);
10721 return *this;
10722}
10723
10725 if (ptr)
10726 isl_map_list_free(ptr);
10727}
10728
10729__isl_give isl_map_list *map_list::copy() const & {
10730 return isl_map_list_copy(ptr);
10731}
10732
10733__isl_keep isl_map_list *map_list::get() const {
10734 return ptr;
10735}
10736
10738 isl_map_list *tmp = ptr;
10739 ptr = nullptr;
10740 return tmp;
10741}
10742
10743bool map_list::is_null() const {
10744 return ptr == nullptr;
10745}
10746
10748 return isl::checked::ctx(isl_map_list_get_ctx(ptr));
10749}
10750
10752{
10753 auto res = isl_map_list_add(copy(), el.release());
10754 return manage(res);
10755}
10756
10758{
10759 auto res = isl_map_list_get_at(get(), index);
10760 return manage(res);
10761}
10762
10764{
10765 return at(index);
10766}
10767
10769{
10770 auto res = isl_map_list_clear(copy());
10771 return manage(res);
10772}
10773
10775{
10776 auto res = isl_map_list_concat(copy(), list2.release());
10777 return manage(res);
10778}
10779
10780isl::checked::map_list map_list::drop(unsigned int first, unsigned int n) const
10781{
10782 auto res = isl_map_list_drop(copy(), first, n);
10783 return manage(res);
10784}
10785
10786stat map_list::foreach(const std::function<stat(isl::checked::map)> &fn) const
10787{
10788 struct fn_data {
10789 std::function<stat(isl::checked::map)> func;
10790 } fn_data = { fn };
10791 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
10792 auto *data = static_cast<struct fn_data *>(arg_1);
10793 auto ret = (data->func)(manage(arg_0));
10794 return ret.release();
10795 };
10796 auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
10797 return manage(res);
10798}
10799
10800stat map_list::foreach_scc(const std::function<boolean(isl::checked::map, isl::checked::map)> &follows, const std::function<stat(isl::checked::map_list)> &fn) const
10801{
10802 struct follows_data {
10803 std::function<boolean(isl::checked::map, isl::checked::map)> func;
10804 } follows_data = { follows };
10805 auto follows_lambda = [](isl_map *arg_0, isl_map *arg_1, void *arg_2) -> isl_bool {
10806 auto *data = static_cast<struct follows_data *>(arg_2);
10807 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
10808 return ret.release();
10809 };
10810 struct fn_data {
10811 std::function<stat(isl::checked::map_list)> func;
10812 } fn_data = { fn };
10813 auto fn_lambda = [](isl_map_list *arg_0, void *arg_1) -> isl_stat {
10814 auto *data = static_cast<struct fn_data *>(arg_1);
10815 auto ret = (data->func)(manage(arg_0));
10816 return ret.release();
10817 };
10818 auto res = isl_map_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
10819 return manage(res);
10820}
10821
10823{
10824 auto res = isl_map_list_insert(copy(), pos, el.release());
10825 return manage(res);
10826}
10827
10829{
10830 auto res = isl_map_list_set_at(copy(), index, el.release());
10831 return manage(res);
10832}
10833
10834class size map_list::size() const
10835{
10836 auto res = isl_map_list_size(get());
10837 return manage(res);
10838}
10839
10840inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
10841{
10842 char *str = isl_map_list_to_str(obj.get());
10843 if (!str) {
10844 os.setstate(std::ios_base::badbit);
10845 return os;
10846 }
10847 os << str;
10848 free(str);
10849 return os;
10850}
10851
10852// implementations for isl::multi_aff
10857 ptr = isl_multi_aff_copy(ptr);
10858 return multi_aff(ptr);
10859}
10860
10863
10865 : ptr(nullptr) {}
10866
10868 : ptr(nullptr)
10869{
10870 ptr = obj.copy();
10871}
10872
10878
10880{
10881 auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
10882 ptr = res;
10883}
10884
10886{
10887 auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
10888 ptr = res;
10889}
10890
10892 std::swap(this->ptr, obj.ptr);
10893 return *this;
10894}
10895
10897 if (ptr)
10898 isl_multi_aff_free(ptr);
10899}
10900
10902 return isl_multi_aff_copy(ptr);
10903}
10904
10906 return ptr;
10907}
10908
10910 isl_multi_aff *tmp = ptr;
10911 ptr = nullptr;
10912 return tmp;
10913}
10914
10916 return ptr == nullptr;
10917}
10918
10920 return isl::checked::ctx(isl_multi_aff_get_ctx(ptr));
10921}
10922
10924{
10925 auto res = isl_multi_aff_add(copy(), multi2.release());
10926 return manage(res);
10927}
10928
10930{
10931 return isl::checked::pw_multi_aff(*this).add(multi2);
10932}
10933
10938
10943
10948
10950{
10951 return this->add(isl::checked::multi_aff(multi2));
10952}
10953
10955{
10956 auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
10957 return manage(res);
10958}
10959
10961{
10962 auto res = isl_multi_aff_add_constant_val(copy(), v.release());
10963 return manage(res);
10964}
10965
10967{
10968 return this->add_constant(isl::checked::val(ctx(), v));
10969}
10970
10975
10977{
10978 auto res = isl_multi_aff_as_map(copy());
10979 return manage(res);
10980}
10981
10986
10991
10996
10998{
10999 auto res = isl_multi_aff_as_set(copy());
11000 return manage(res);
11001}
11002
11007
11009{
11010 auto res = isl_multi_aff_get_at(get(), pos);
11011 return manage(res);
11012}
11013
11015{
11016 return at(pos);
11017}
11018
11020{
11021 auto res = isl_multi_aff_bind(copy(), tuple.release());
11022 return manage(res);
11023}
11024
11026{
11027 auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
11028 return manage(res);
11029}
11030
11032{
11033 auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
11034 return manage(res);
11035}
11036
11041
11047
11052
11054{
11055 return isl::checked::pw_multi_aff(*this).domain();
11056}
11057
11063
11065{
11066 auto res = isl_multi_aff_domain_reverse(copy());
11067 return manage(res);
11068}
11069
11074
11079
11081{
11082 auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
11083 return manage(res);
11084}
11085
11090
11095
11100
11105
11110
11112{
11113 auto res = isl_multi_aff_floor(copy());
11114 return manage(res);
11115}
11116
11121
11123{
11124 auto res = isl_multi_aff_gist(copy(), context.release());
11125 return manage(res);
11126}
11127
11132
11137
11142
11148
11150{
11151 auto res = isl_multi_aff_has_range_tuple_id(get());
11152 return manage(res);
11153}
11154
11156{
11157 auto res = isl_multi_aff_identity_multi_aff(copy());
11158 return manage(res);
11159}
11160
11162{
11163 auto res = isl_multi_aff_identity_on_domain_space(space.release());
11164 return manage(res);
11165}
11166
11168{
11169 auto res = isl_multi_aff_insert_domain(copy(), domain.release());
11170 return manage(res);
11171}
11172
11177
11182
11187
11192
11197
11202
11204{
11205 auto res = isl_multi_aff_involves_locals(get());
11206 return manage(res);
11207}
11208
11210{
11211 auto res = isl_multi_aff_involves_nan(get());
11212 return manage(res);
11213}
11214
11216{
11218}
11219
11220boolean multi_aff::involves_param(const std::string &id) const
11221{
11222 return this->involves_param(isl::checked::id(ctx(), id));
11223}
11224
11229
11231{
11233}
11234
11236{
11238}
11239
11241{
11242 auto res = isl_multi_aff_get_list(get());
11243 return manage(res);
11244}
11245
11247{
11248 return list();
11249}
11250
11252{
11253 return isl::checked::pw_multi_aff(*this).max(multi2);
11254}
11255
11260
11262{
11263 return isl::checked::pw_multi_aff(*this).min(multi2);
11264}
11265
11270
11276
11277class size multi_aff::n_piece() const
11278{
11279 return isl::checked::pw_multi_aff(*this).n_piece();
11280}
11281
11283{
11284 auto res = isl_multi_aff_neg(copy());
11285 return manage(res);
11286}
11287
11289{
11291}
11292
11294{
11295 auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
11296 return manage(res);
11297}
11298
11300{
11301 return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
11302}
11303
11305{
11306 return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
11307}
11308
11310{
11311 return isl::checked::pw_multi_aff(*this).plain_is_equal(pma2);
11312}
11313
11315{
11316 return isl::checked::pw_multi_aff(*this).plain_is_equal(upma2);
11317}
11318
11320{
11321 return this->plain_is_equal(isl::checked::multi_aff(multi2));
11322}
11323
11328
11333
11335{
11336 auto res = isl_multi_aff_product(copy(), multi2.release());
11337 return manage(res);
11338}
11339
11344
11349
11351{
11352 return this->product(isl::checked::multi_aff(multi2));
11353}
11354
11360
11365
11370
11375
11377{
11378 return this->pullback(isl::checked::multi_aff(ma2));
11379}
11380
11385
11390
11395
11401
11403{
11404 auto res = isl_multi_aff_range_product(copy(), multi2.release());
11405 return manage(res);
11406}
11407
11412
11417
11422
11427
11429{
11430 return this->range_product(isl::checked::multi_aff(multi2));
11431}
11432
11434{
11435 auto res = isl_multi_aff_get_range_tuple_id(get());
11436 return manage(res);
11437}
11438
11443
11445{
11446 auto res = isl_multi_aff_reset_range_tuple_id(copy());
11447 return manage(res);
11448}
11449
11451{
11452 auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
11453 return manage(res);
11454}
11455
11457{
11458 auto res = isl_multi_aff_scale_val(copy(), v.release());
11459 return manage(res);
11460}
11461
11463{
11464 return this->scale(isl::checked::val(ctx(), v));
11465}
11466
11468{
11469 auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
11470 return manage(res);
11471}
11472
11474{
11475 auto res = isl_multi_aff_scale_down_val(copy(), v.release());
11476 return manage(res);
11477}
11478
11480{
11481 return this->scale_down(isl::checked::val(ctx(), v));
11482}
11483
11485{
11486 auto res = isl_multi_aff_set_at(copy(), pos, el.release());
11487 return manage(res);
11488}
11489
11494
11499
11501{
11502 auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
11503 return manage(res);
11504}
11505
11507{
11508 return this->set_range_tuple(isl::checked::id(ctx(), id));
11509}
11510
11511class size multi_aff::size() const
11512{
11513 auto res = isl_multi_aff_size(get());
11514 return manage(res);
11515}
11516
11518{
11519 auto res = isl_multi_aff_get_space(get());
11520 return manage(res);
11521}
11522
11524{
11525 return space();
11526}
11527
11529{
11530 auto res = isl_multi_aff_sub(copy(), multi2.release());
11531 return manage(res);
11532}
11533
11535{
11536 return isl::checked::pw_multi_aff(*this).sub(multi2);
11537}
11538
11543
11548
11553
11555{
11556 return this->sub(isl::checked::multi_aff(multi2));
11557}
11558
11563
11568
11573
11578
11584
11590
11596
11601
11603{
11604 auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
11605 return manage(res);
11606}
11607
11612
11617
11622
11627
11629{
11630 auto res = isl_multi_aff_zero(space.release());
11631 return manage(res);
11632}
11633
11634inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
11635{
11636 char *str = isl_multi_aff_to_str(obj.get());
11637 if (!str) {
11638 os.setstate(std::ios_base::badbit);
11639 return os;
11640 }
11641 os << str;
11642 free(str);
11643 return os;
11644}
11645
11646// implementations for isl::multi_id
11651 ptr = isl_multi_id_copy(ptr);
11652 return multi_id(ptr);
11653}
11654
11657
11659 : ptr(nullptr) {}
11660
11662 : ptr(nullptr)
11663{
11664 ptr = obj.copy();
11665}
11666
11668{
11669 auto res = isl_multi_id_from_id_list(space.release(), list.release());
11670 ptr = res;
11671}
11672
11674{
11675 auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
11676 ptr = res;
11677}
11678
11680 std::swap(this->ptr, obj.ptr);
11681 return *this;
11682}
11683
11685 if (ptr)
11686 isl_multi_id_free(ptr);
11687}
11688
11690 return isl_multi_id_copy(ptr);
11691}
11692
11694 return ptr;
11695}
11696
11698 isl_multi_id *tmp = ptr;
11699 ptr = nullptr;
11700 return tmp;
11701}
11702
11703bool multi_id::is_null() const {
11704 return ptr == nullptr;
11705}
11706
11708 return isl::checked::ctx(isl_multi_id_get_ctx(ptr));
11709}
11710
11712{
11713 auto res = isl_multi_id_get_at(get(), pos);
11714 return manage(res);
11715}
11716
11718{
11719 return at(pos);
11720}
11721
11723{
11724 auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
11725 return manage(res);
11726}
11727
11729{
11730 auto res = isl_multi_id_get_list(get());
11731 return manage(res);
11732}
11733
11735{
11736 return list();
11737}
11738
11740{
11741 auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
11742 return manage(res);
11743}
11744
11746{
11747 auto res = isl_multi_id_range_product(copy(), multi2.release());
11748 return manage(res);
11749}
11750
11752{
11753 auto res = isl_multi_id_set_at(copy(), pos, el.release());
11754 return manage(res);
11755}
11756
11757isl::checked::multi_id multi_id::set_at(int pos, const std::string &el) const
11758{
11759 return this->set_at(pos, isl::checked::id(ctx(), el));
11760}
11761
11762class size multi_id::size() const
11763{
11764 auto res = isl_multi_id_size(get());
11765 return manage(res);
11766}
11767
11769{
11770 auto res = isl_multi_id_get_space(get());
11771 return manage(res);
11772}
11773
11775{
11776 return space();
11777}
11778
11779inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
11780{
11781 char *str = isl_multi_id_to_str(obj.get());
11782 if (!str) {
11783 os.setstate(std::ios_base::badbit);
11784 return os;
11785 }
11786 os << str;
11787 free(str);
11788 return os;
11789}
11790
11791// implementations for isl::multi_pw_aff
11796 ptr = isl_multi_pw_aff_copy(ptr);
11797 return multi_pw_aff(ptr);
11798}
11799
11802
11804 : ptr(nullptr) {}
11805
11807 : ptr(nullptr)
11808{
11809 ptr = obj.copy();
11810}
11811
11817
11823
11829
11831{
11832 auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
11833 ptr = res;
11834}
11835
11841
11843{
11844 auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
11845 ptr = res;
11846}
11847
11849 std::swap(this->ptr, obj.ptr);
11850 return *this;
11851}
11852
11854 if (ptr)
11855 isl_multi_pw_aff_free(ptr);
11856}
11857
11859 return isl_multi_pw_aff_copy(ptr);
11860}
11861
11863 return ptr;
11864}
11865
11867 isl_multi_pw_aff *tmp = ptr;
11868 ptr = nullptr;
11869 return tmp;
11870}
11871
11873 return ptr == nullptr;
11874}
11875
11877 return isl::checked::ctx(isl_multi_pw_aff_get_ctx(ptr));
11878}
11879
11881{
11882 auto res = isl_multi_pw_aff_add(copy(), multi2.release());
11883 return manage(res);
11884}
11885
11890
11892{
11893 return this->add(isl::checked::multi_pw_aff(multi2));
11894}
11895
11897{
11898 return this->add(isl::checked::multi_pw_aff(multi2));
11899}
11900
11902{
11903 return this->add(isl::checked::multi_pw_aff(multi2));
11904}
11905
11907{
11908 return this->add(isl::checked::multi_pw_aff(multi2));
11909}
11910
11912{
11913 auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
11914 return manage(res);
11915}
11916
11918{
11919 auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
11920 return manage(res);
11921}
11922
11924{
11925 return this->add_constant(isl::checked::val(ctx(), v));
11926}
11927
11929{
11931 return manage(res);
11932}
11933
11939
11941{
11943 return manage(res);
11944}
11945
11947{
11948 auto res = isl_multi_pw_aff_get_at(get(), pos);
11949 return manage(res);
11950}
11951
11953{
11954 return at(pos);
11955}
11956
11958{
11959 auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
11960 return manage(res);
11961}
11962
11964{
11965 auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
11966 return manage(res);
11967}
11968
11970{
11971 auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
11972 return manage(res);
11973}
11974
11980
11982{
11984 return manage(res);
11985}
11986
11988{
11989 auto res = isl_multi_pw_aff_domain_reverse(copy());
11990 return manage(res);
11991}
11992
11994{
11995 auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
11996 return manage(res);
11997}
11998
12003
12008
12013
12018
12023
12029
12034
12039
12044
12050
12052{
12053 auto res = isl_multi_pw_aff_has_range_tuple_id(get());
12054 return manage(res);
12055}
12056
12058{
12059 auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
12060 return manage(res);
12061}
12062
12064{
12065 auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
12066 return manage(res);
12067}
12068
12070{
12071 auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
12072 return manage(res);
12073}
12074
12080
12085
12090
12095
12101
12103{
12104 auto res = isl_multi_pw_aff_involves_nan(get());
12105 return manage(res);
12106}
12107
12109{
12110 auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
12111 return manage(res);
12112}
12113
12114boolean multi_pw_aff::involves_param(const std::string &id) const
12115{
12116 return this->involves_param(isl::checked::id(ctx(), id));
12117}
12118
12120{
12121 auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
12122 return manage(res);
12123}
12124
12126{
12128 return manage(res);
12129}
12130
12132{
12133 auto res = isl_multi_pw_aff_get_list(get());
12134 return manage(res);
12135}
12136
12138{
12139 return list();
12140}
12141
12143{
12144 auto res = isl_multi_pw_aff_max(copy(), multi2.release());
12145 return manage(res);
12146}
12147
12153
12155{
12156 auto res = isl_multi_pw_aff_min(copy(), multi2.release());
12157 return manage(res);
12158}
12159
12165
12167{
12168 auto res = isl_multi_pw_aff_neg(copy());
12169 return manage(res);
12170}
12171
12173{
12174 auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
12175 return manage(res);
12176}
12177
12179{
12181}
12182
12184{
12185 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12186}
12187
12189{
12190 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12191}
12192
12194{
12195 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12196}
12197
12199{
12200 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12201}
12202
12204{
12205 auto res = isl_multi_pw_aff_product(copy(), multi2.release());
12206 return manage(res);
12207}
12208
12214
12220
12226
12231
12233{
12234 auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
12235 return manage(res);
12236}
12237
12242
12247
12252
12257
12262
12264{
12265 auto res = isl_multi_pw_aff_get_range_tuple_id(get());
12266 return manage(res);
12267}
12268
12273
12275{
12276 auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
12277 return manage(res);
12278}
12279
12281{
12282 auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
12283 return manage(res);
12284}
12285
12287{
12288 auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
12289 return manage(res);
12290}
12291
12293{
12294 return this->scale(isl::checked::val(ctx(), v));
12295}
12296
12298{
12299 auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
12300 return manage(res);
12301}
12302
12304{
12305 auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
12306 return manage(res);
12307}
12308
12310{
12311 return this->scale_down(isl::checked::val(ctx(), v));
12312}
12313
12315{
12316 auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
12317 return manage(res);
12318}
12319
12324
12326{
12327 auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
12328 return manage(res);
12329}
12330
12332{
12333 return this->set_range_tuple(isl::checked::id(ctx(), id));
12334}
12335
12336class size multi_pw_aff::size() const
12337{
12338 auto res = isl_multi_pw_aff_size(get());
12339 return manage(res);
12340}
12341
12343{
12344 auto res = isl_multi_pw_aff_get_space(get());
12345 return manage(res);
12346}
12347
12349{
12350 return space();
12351}
12352
12354{
12355 auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
12356 return manage(res);
12357}
12358
12363
12365{
12366 return this->sub(isl::checked::multi_pw_aff(multi2));
12367}
12368
12370{
12371 return this->sub(isl::checked::multi_pw_aff(multi2));
12372}
12373
12375{
12376 return this->sub(isl::checked::multi_pw_aff(multi2));
12377}
12378
12380{
12381 return this->sub(isl::checked::multi_pw_aff(multi2));
12382}
12383
12385{
12386 auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
12387 return manage(res);
12388}
12389
12395
12400
12405
12410
12415
12420
12422{
12423 auto res = isl_multi_pw_aff_zero(space.release());
12424 return manage(res);
12425}
12426
12427inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
12428{
12429 char *str = isl_multi_pw_aff_to_str(obj.get());
12430 if (!str) {
12431 os.setstate(std::ios_base::badbit);
12432 return os;
12433 }
12434 os << str;
12435 free(str);
12436 return os;
12437}
12438
12439// implementations for isl::multi_union_pw_aff
12444 ptr = isl_multi_union_pw_aff_copy(ptr);
12445 return multi_union_pw_aff(ptr);
12446}
12447
12450
12453
12455 : ptr(nullptr)
12456{
12457 ptr = obj.copy();
12458}
12459
12465
12471
12473{
12474 auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
12475 ptr = res;
12476}
12477
12479{
12480 auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
12481 ptr = res;
12482}
12483
12485 std::swap(this->ptr, obj.ptr);
12486 return *this;
12487}
12488
12490 if (ptr)
12491 isl_multi_union_pw_aff_free(ptr);
12492}
12493
12495 return isl_multi_union_pw_aff_copy(ptr);
12496}
12497
12501
12504 ptr = nullptr;
12505 return tmp;
12506}
12507
12509 return ptr == nullptr;
12510}
12511
12513 return isl::checked::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
12514}
12515
12517{
12518 auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
12519 return manage(res);
12520}
12521
12523{
12524 auto res = isl_multi_union_pw_aff_get_at(get(), pos);
12525 return manage(res);
12526}
12527
12529{
12530 return at(pos);
12531}
12532
12538
12544
12550
12552{
12553 auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
12554 return manage(res);
12555}
12556
12562
12568
12570{
12571 auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
12572 return manage(res);
12573}
12574
12580
12586
12588{
12589 auto res = isl_multi_union_pw_aff_involves_nan(get());
12590 return manage(res);
12591}
12592
12594{
12595 auto res = isl_multi_union_pw_aff_get_list(get());
12596 return manage(res);
12597}
12598
12603
12605{
12606 auto res = isl_multi_union_pw_aff_neg(copy());
12607 return manage(res);
12608}
12609
12611{
12612 auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
12613 return manage(res);
12614}
12615
12621
12623{
12624 auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
12625 return manage(res);
12626}
12627
12629{
12630 auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
12631 return manage(res);
12632}
12633
12638
12640{
12641 auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
12642 return manage(res);
12643}
12644
12646{
12647 auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
12648 return manage(res);
12649}
12650
12652{
12653 auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
12654 return manage(res);
12655}
12656
12658{
12659 return this->scale(isl::checked::val(ctx(), v));
12660}
12661
12663{
12664 auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
12665 return manage(res);
12666}
12667
12669{
12670 auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
12671 return manage(res);
12672}
12673
12678
12680{
12681 auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
12682 return manage(res);
12683}
12684
12686{
12687 auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
12688 return manage(res);
12689}
12690
12692{
12693 return this->set_range_tuple(isl::checked::id(ctx(), id));
12694}
12695
12697{
12698 auto res = isl_multi_union_pw_aff_size(get());
12699 return manage(res);
12700}
12701
12703{
12704 auto res = isl_multi_union_pw_aff_get_space(get());
12705 return manage(res);
12706}
12707
12709{
12710 return space();
12711}
12712
12714{
12715 auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
12716 return manage(res);
12717}
12718
12724
12730
12731inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
12732{
12733 char *str = isl_multi_union_pw_aff_to_str(obj.get());
12734 if (!str) {
12735 os.setstate(std::ios_base::badbit);
12736 return os;
12737 }
12738 os << str;
12739 free(str);
12740 return os;
12741}
12742
12743// implementations for isl::multi_val
12748 ptr = isl_multi_val_copy(ptr);
12749 return multi_val(ptr);
12750}
12751
12754
12756 : ptr(nullptr) {}
12757
12759 : ptr(nullptr)
12760{
12761 ptr = obj.copy();
12762}
12763
12765{
12766 auto res = isl_multi_val_from_val_list(space.release(), list.release());
12767 ptr = res;
12768}
12769
12771{
12772 auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
12773 ptr = res;
12774}
12775
12777 std::swap(this->ptr, obj.ptr);
12778 return *this;
12779}
12780
12782 if (ptr)
12783 isl_multi_val_free(ptr);
12784}
12785
12787 return isl_multi_val_copy(ptr);
12788}
12789
12791 return ptr;
12792}
12793
12795 isl_multi_val *tmp = ptr;
12796 ptr = nullptr;
12797 return tmp;
12798}
12799
12801 return ptr == nullptr;
12802}
12803
12805 return isl::checked::ctx(isl_multi_val_get_ctx(ptr));
12806}
12807
12809{
12810 auto res = isl_multi_val_add(copy(), multi2.release());
12811 return manage(res);
12812}
12813
12815{
12816 auto res = isl_multi_val_add_val(copy(), v.release());
12817 return manage(res);
12818}
12819
12821{
12822 return this->add(isl::checked::val(ctx(), v));
12823}
12824
12826{
12827 auto res = isl_multi_val_get_at(get(), pos);
12828 return manage(res);
12829}
12830
12832{
12833 return at(pos);
12834}
12835
12837{
12838 auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
12839 return manage(res);
12840}
12841
12843{
12844 auto res = isl_multi_val_has_range_tuple_id(get());
12845 return manage(res);
12846}
12847
12849{
12850 auto res = isl_multi_val_involves_nan(get());
12851 return manage(res);
12852}
12853
12855{
12856 auto res = isl_multi_val_is_equal(get(), mv2.get());
12857 return manage(res);
12858}
12859
12861{
12862 auto res = isl_multi_val_get_list(get());
12863 return manage(res);
12864}
12865
12867{
12868 return list();
12869}
12870
12872{
12873 auto res = isl_multi_val_max(copy(), multi2.release());
12874 return manage(res);
12875}
12876
12878{
12879 auto res = isl_multi_val_min(copy(), multi2.release());
12880 return manage(res);
12881}
12882
12884{
12885 auto res = isl_multi_val_neg(copy());
12886 return manage(res);
12887}
12888
12890{
12891 auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
12892 return manage(res);
12893}
12894
12896{
12897 auto res = isl_multi_val_product(copy(), multi2.release());
12898 return manage(res);
12899}
12900
12902{
12903 auto res = isl_multi_val_range_product(copy(), multi2.release());
12904 return manage(res);
12905}
12906
12908{
12909 auto res = isl_multi_val_get_range_tuple_id(get());
12910 return manage(res);
12911}
12912
12917
12919{
12920 auto res = isl_multi_val_reset_range_tuple_id(copy());
12921 return manage(res);
12922}
12923
12925{
12926 auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
12927 return manage(res);
12928}
12929
12931{
12932 auto res = isl_multi_val_scale_val(copy(), v.release());
12933 return manage(res);
12934}
12935
12937{
12938 return this->scale(isl::checked::val(ctx(), v));
12939}
12940
12942{
12943 auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
12944 return manage(res);
12945}
12946
12948{
12949 auto res = isl_multi_val_scale_down_val(copy(), v.release());
12950 return manage(res);
12951}
12952
12954{
12955 return this->scale_down(isl::checked::val(ctx(), v));
12956}
12957
12959{
12960 auto res = isl_multi_val_set_at(copy(), pos, el.release());
12961 return manage(res);
12962}
12963
12965{
12966 return this->set_at(pos, isl::checked::val(ctx(), el));
12967}
12968
12970{
12971 auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
12972 return manage(res);
12973}
12974
12976{
12977 return this->set_range_tuple(isl::checked::id(ctx(), id));
12978}
12979
12980class size multi_val::size() const
12981{
12982 auto res = isl_multi_val_size(get());
12983 return manage(res);
12984}
12985
12987{
12988 auto res = isl_multi_val_get_space(get());
12989 return manage(res);
12990}
12991
12993{
12994 return space();
12995}
12996
12998{
12999 auto res = isl_multi_val_sub(copy(), multi2.release());
13000 return manage(res);
13001}
13002
13004{
13005 auto res = isl_multi_val_zero(space.release());
13006 return manage(res);
13007}
13008
13009inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
13010{
13011 char *str = isl_multi_val_to_str(obj.get());
13012 if (!str) {
13013 os.setstate(std::ios_base::badbit);
13014 return os;
13015 }
13016 os << str;
13017 free(str);
13018 return os;
13019}
13020
13021// implementations for isl::point
13023 return point(ptr);
13024}
13029
13032
13034 : ptr(nullptr) {}
13035
13037 : ptr(nullptr)
13038{
13039 ptr = obj.copy();
13040}
13041
13043 std::swap(this->ptr, obj.ptr);
13044 return *this;
13045}
13046
13048 if (ptr)
13050}
13051
13053 return isl_point_copy(ptr);
13054}
13055
13057 return ptr;
13058}
13059
13061 isl_point *tmp = ptr;
13062 ptr = nullptr;
13063 return tmp;
13064}
13065
13066bool point::is_null() const {
13067 return ptr == nullptr;
13068}
13069
13073
13078
13080{
13081 return isl::checked::basic_set(*this).apply(bmap);
13082}
13083
13085{
13086 return isl::checked::basic_set(*this).apply(map);
13087}
13088
13090{
13091 return isl::checked::basic_set(*this).apply(umap);
13092}
13093
13098
13100{
13101 return isl::checked::basic_set(*this).as_set();
13102}
13103
13108
13110{
13111 return isl::checked::basic_set(*this).coalesce();
13112}
13113
13115{
13116 return isl::checked::basic_set(*this).complement();
13117}
13118
13123
13128
13130{
13132}
13133
13135{
13137}
13138
13143
13144boolean point::every_set(const std::function<boolean(isl::checked::set)> &test) const
13145{
13146 return isl::checked::basic_set(*this).every_set(test);
13147}
13148
13153
13155{
13156 return isl::checked::basic_set(*this).flatten();
13157}
13158
13160{
13162}
13163
13165{
13167}
13168
13169stat point::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
13170{
13171 return isl::checked::basic_set(*this).foreach_set(fn);
13172}
13173
13178
13183
13188
13193
13195{
13196 return isl::checked::basic_set(*this).identity();
13197}
13198
13203
13208
13210{
13211 return isl::checked::basic_set(*this).intersect(bset2);
13212}
13213
13218
13220{
13221 return isl::checked::basic_set(*this).intersect(uset2);
13222}
13223
13228
13233
13235{
13237}
13238
13240{
13242}
13243
13245{
13246 return isl::checked::basic_set(*this).is_disjoint(uset2);
13247}
13248
13249boolean point::is_empty() const
13250{
13251 return isl::checked::basic_set(*this).is_empty();
13252}
13253
13254boolean point::is_equal(const isl::checked::basic_set &bset2) const
13255{
13256 return isl::checked::basic_set(*this).is_equal(bset2);
13257}
13258
13260{
13261 return isl::checked::basic_set(*this).is_equal(set2);
13262}
13263
13264boolean point::is_equal(const isl::checked::union_set &uset2) const
13265{
13266 return isl::checked::basic_set(*this).is_equal(uset2);
13267}
13268
13269boolean point::is_singleton() const
13270{
13271 return isl::checked::basic_set(*this).is_singleton();
13272}
13273
13275{
13277}
13278
13280{
13281 return isl::checked::basic_set(*this).is_strict_subset(uset2);
13282}
13283
13285{
13286 return isl::checked::basic_set(*this).is_subset(bset2);
13287}
13288
13290{
13291 return isl::checked::basic_set(*this).is_subset(set2);
13292}
13293
13295{
13296 return isl::checked::basic_set(*this).is_subset(uset2);
13297}
13298
13299boolean point::is_wrapping() const
13300{
13301 return isl::checked::basic_set(*this).is_wrapping();
13302}
13303
13304boolean point::isa_set() const
13305{
13306 return isl::checked::basic_set(*this).isa_set();
13307}
13308
13313
13315{
13316 return isl::checked::basic_set(*this).lexmax();
13317}
13318
13323
13325{
13326 return isl::checked::basic_set(*this).lexmin();
13327}
13328
13333
13335{
13336 return isl::checked::basic_set(*this).lower_bound(lower);
13337}
13338
13340{
13341 return isl::checked::basic_set(*this).lower_bound(lower);
13342}
13343
13348
13353
13358
13363
13365{
13367 return manage(res);
13368}
13369
13371{
13372 return multi_val();
13373}
13374
13375class size point::n_basic_set() const
13376{
13377 return isl::checked::basic_set(*this).n_basic_set();
13378}
13379
13384
13386{
13387 return this->param_pw_aff_on_domain(isl::checked::id(ctx(), id));
13388}
13389
13391{
13392 return isl::checked::basic_set(*this).params();
13393}
13394
13399
13404
13409
13411{
13412 return isl::checked::basic_set(*this).preimage(mpa);
13413}
13414
13419
13424
13429
13434
13439
13441{
13442 return this->project_out_param(isl::checked::id(ctx(), id));
13443}
13444
13449
13454
13456{
13457 return this->pw_aff_on_domain(isl::checked::val(ctx(), v));
13458}
13459
13464
13466{
13467 return isl::checked::basic_set(*this).sample();
13468}
13469
13474
13476{
13477 return isl::checked::basic_set(*this).set_list();
13478}
13479
13484
13486{
13487 return isl::checked::basic_set(*this).space();
13488}
13489
13491{
13492 return isl::checked::basic_set(*this).stride(pos);
13493}
13494
13499
13501{
13502 return isl::checked::basic_set(*this).subtract(uset2);
13503}
13504
13506{
13507 return isl::checked::basic_set(*this).to_list();
13508}
13509
13511{
13512 auto res = isl_point_to_set(copy());
13513 return manage(res);
13514}
13515
13520
13522{
13523 return isl::checked::basic_set(*this).translation();
13524}
13525
13526class size point::tuple_dim() const
13527{
13528 return isl::checked::basic_set(*this).tuple_dim();
13529}
13530
13535
13540
13542{
13543 return isl::checked::basic_set(*this).unite(bset2);
13544}
13545
13547{
13548 return isl::checked::basic_set(*this).unite(set2);
13549}
13550
13552{
13553 return isl::checked::basic_set(*this).unite(uset2);
13554}
13555
13560
13562{
13563 return isl::checked::basic_set(*this).unwrap();
13564}
13565
13567{
13568 return isl::checked::basic_set(*this).upper_bound(upper);
13569}
13570
13572{
13573 return isl::checked::basic_set(*this).upper_bound(upper);
13574}
13575
13580
13581inline std::ostream &operator<<(std::ostream &os, const point &obj)
13582{
13583 char *str = isl_point_to_str(obj.get());
13584 if (!str) {
13585 os.setstate(std::ios_base::badbit);
13586 return os;
13587 }
13588 os << str;
13589 free(str);
13590 return os;
13591}
13592
13593// implementations for isl::pw_aff
13595 return pw_aff(ptr);
13596}
13601
13604
13606 : ptr(nullptr) {}
13607
13609 : ptr(nullptr)
13610{
13611 ptr = obj.copy();
13612}
13613
13619
13621{
13622 auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
13623 ptr = res;
13624}
13625
13627 std::swap(this->ptr, obj.ptr);
13628 return *this;
13629}
13630
13632 if (ptr)
13634}
13635
13637 return isl_pw_aff_copy(ptr);
13638}
13639
13641 return ptr;
13642}
13643
13645 isl_pw_aff *tmp = ptr;
13646 ptr = nullptr;
13647 return tmp;
13648}
13649
13650bool pw_aff::is_null() const {
13651 return ptr == nullptr;
13652}
13653
13657
13659{
13660 return isl::checked::pw_multi_aff(*this).add(multi2);
13661}
13662
13667
13669{
13670 auto res = isl_pw_aff_add(copy(), pwaff2.release());
13671 return manage(res);
13672}
13673
13675{
13676 return isl::checked::pw_multi_aff(*this).add(pma2);
13677}
13678
13680{
13681 return isl::checked::union_pw_aff(*this).add(upa2);
13682}
13683
13688
13690{
13691 return this->add(isl::checked::pw_aff(pwaff2));
13692}
13693
13699
13701{
13702 return this->add_constant(isl::checked::val(ctx(), v));
13703}
13704
13709
13714
13716{
13717 auto res = isl_pw_aff_as_aff(copy());
13718 return manage(res);
13719}
13720
13722{
13723 auto res = isl_pw_aff_as_map(copy());
13724 return manage(res);
13725}
13726
13731
13736
13741
13743{
13744 return isl::checked::pw_multi_aff(*this).as_set();
13745}
13746
13751
13753{
13754 return isl::checked::pw_multi_aff(*this).at(pos);
13755}
13756
13761
13763{
13764 auto res = isl_pw_aff_bind_id(copy(), id.release());
13765 return manage(res);
13766}
13767
13768isl::checked::set pw_aff::bind(const std::string &id) const
13769{
13770 return this->bind(isl::checked::id(ctx(), id));
13771}
13772
13778
13784
13786{
13787 auto res = isl_pw_aff_ceil(copy());
13788 return manage(res);
13789}
13790
13792{
13793 auto res = isl_pw_aff_coalesce(copy());
13794 return manage(res);
13795}
13796
13798{
13799 auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
13800 return manage(res);
13801}
13802
13804{
13805 auto res = isl_pw_aff_div(copy(), pa2.release());
13806 return manage(res);
13807}
13808
13810{
13811 auto res = isl_pw_aff_domain(copy());
13812 return manage(res);
13813}
13814
13816{
13818 return manage(res);
13819}
13820
13826
13828{
13829 auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
13830 return manage(res);
13831}
13832
13834{
13835 auto res = isl_pw_aff_eval(copy(), pnt.release());
13836 return manage(res);
13837}
13838
13843
13848
13853
13858
13863
13865{
13866 auto res = isl_pw_aff_floor(copy());
13867 return manage(res);
13868}
13869
13874
13876{
13877 auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
13878 return manage(res);
13879}
13880
13882{
13883 auto res = isl_pw_aff_gist(copy(), context.release());
13884 return manage(res);
13885}
13886
13891
13896
13901
13907
13909{
13910 auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
13911 return manage(res);
13912}
13913
13915{
13917}
13918
13923
13929
13935
13940
13945
13950
13955
13960
13965
13971
13973{
13975}
13976
13978{
13980}
13981
13983{
13985}
13986
13987boolean pw_aff::involves_param(const std::string &id) const
13988{
13989 return this->involves_param(isl::checked::id(ctx(), id));
13990}
13991
13993{
13995}
13996
13997boolean pw_aff::isa_aff() const
13998{
13999 auto res = isl_pw_aff_isa_aff(get());
14000 return manage(res);
14001}
14002
14004{
14006}
14007
14009{
14011}
14012
14014{
14015 auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
14016 return manage(res);
14017}
14018
14020{
14021 return isl::checked::multi_pw_aff(*this).list();
14022}
14023
14025{
14026 auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
14027 return manage(res);
14028}
14029
14031{
14032 return isl::checked::pw_multi_aff(*this).max(multi2);
14033}
14034
14036{
14037 auto res = isl_pw_aff_max(copy(), pwaff2.release());
14038 return manage(res);
14039}
14040
14042{
14043 return this->max(isl::checked::pw_aff(pwaff2));
14044}
14045
14050
14052{
14053 auto res = isl_pw_aff_max_val(copy());
14054 return manage(res);
14055}
14056
14058{
14059 return isl::checked::pw_multi_aff(*this).min(multi2);
14060}
14061
14063{
14064 auto res = isl_pw_aff_min(copy(), pwaff2.release());
14065 return manage(res);
14066}
14067
14069{
14070 return this->min(isl::checked::pw_aff(pwaff2));
14071}
14072
14077
14079{
14080 auto res = isl_pw_aff_min_val(copy());
14081 return manage(res);
14082}
14083
14085{
14086 auto res = isl_pw_aff_mod_val(copy(), mod.release());
14087 return manage(res);
14088}
14089
14091{
14092 return this->mod(isl::checked::val(ctx(), mod));
14093}
14094
14096{
14097 auto res = isl_pw_aff_mul(copy(), pwaff2.release());
14098 return manage(res);
14099}
14100
14101class size pw_aff::n_piece() const
14102{
14103 return isl::checked::pw_multi_aff(*this).n_piece();
14104}
14105
14107{
14108 auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
14109 return manage(res);
14110}
14111
14113{
14114 auto res = isl_pw_aff_neg(copy());
14115 return manage(res);
14116}
14117
14123
14125{
14126 auto res = isl_pw_aff_params(copy());
14127 return manage(res);
14128}
14129
14131{
14133}
14134
14136{
14137 return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
14138}
14139
14141{
14142 return isl::checked::union_pw_aff(*this).plain_is_equal(multi2);
14143}
14144
14146{
14147 auto res = isl_pw_aff_plain_is_equal(get(), pwaff2.get());
14148 return manage(res);
14149}
14150
14152{
14153 return isl::checked::pw_multi_aff(*this).plain_is_equal(pma2);
14154}
14155
14157{
14158 return isl::checked::union_pw_aff(*this).plain_is_equal(upa2);
14159}
14160
14162{
14163 return isl::checked::union_pw_aff(*this).plain_is_equal(upma2);
14164}
14165
14166boolean pw_aff::plain_is_equal(const isl::checked::aff &pwaff2) const
14167{
14168 return this->plain_is_equal(isl::checked::pw_aff(pwaff2));
14169}
14170
14175
14180
14182{
14183 return isl::checked::pw_multi_aff(*this).product(multi2);
14184}
14185
14190
14196
14202
14208
14213
14218
14223
14228
14233
14238
14243
14248
14253
14258
14260{
14261 auto res = isl_pw_aff_scale_val(copy(), v.release());
14262 return manage(res);
14263}
14264
14266{
14267 return this->scale(isl::checked::val(ctx(), v));
14268}
14269
14274
14276{
14277 auto res = isl_pw_aff_scale_down_val(copy(), f.release());
14278 return manage(res);
14279}
14280
14282{
14283 return this->scale_down(isl::checked::val(ctx(), f));
14284}
14285
14290
14292{
14293 return isl::checked::pw_multi_aff(*this).set_at(pos, el);
14294}
14295
14300
14305
14307{
14308 return this->set_range_tuple(isl::checked::id(ctx(), id));
14309}
14310
14311class size pw_aff::size() const
14312{
14313 return isl::checked::multi_pw_aff(*this).size();
14314}
14315
14317{
14318 auto res = isl_pw_aff_get_space(get());
14319 return manage(res);
14320}
14321
14323{
14324 return space();
14325}
14326
14328{
14329 return isl::checked::pw_multi_aff(*this).sub(multi2);
14330}
14331
14336
14338{
14339 auto res = isl_pw_aff_sub(copy(), pwaff2.release());
14340 return manage(res);
14341}
14342
14344{
14345 return isl::checked::pw_multi_aff(*this).sub(pma2);
14346}
14347
14349{
14350 return isl::checked::union_pw_aff(*this).sub(upa2);
14351}
14352
14357
14359{
14360 return this->sub(isl::checked::pw_aff(pwaff2));
14361}
14362
14368
14373
14378
14383
14388
14390{
14391 auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
14392 return manage(res);
14393}
14394
14396{
14397 auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
14398 return manage(res);
14399}
14400
14402{
14403 auto res = isl_pw_aff_to_list(copy());
14404 return manage(res);
14405}
14406
14411
14417
14422
14427
14432
14437
14439{
14440 auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
14441 return manage(res);
14442}
14443
14448
14453
14458
14460{
14461 return this->union_add(isl::checked::pw_aff(pwaff2));
14462}
14463
14464inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
14465{
14466 char *str = isl_pw_aff_to_str(obj.get());
14467 if (!str) {
14468 os.setstate(std::ios_base::badbit);
14469 return os;
14470 }
14471 os << str;
14472 free(str);
14473 return os;
14474}
14475
14476// implementations for isl::pw_aff_list
14478 return pw_aff_list(ptr);
14479}
14481 ptr = isl_pw_aff_list_copy(ptr);
14482 return pw_aff_list(ptr);
14483}
14484
14486 : ptr(ptr) {}
14487
14489 : ptr(nullptr) {}
14490
14492 : ptr(nullptr)
14493{
14494 ptr = obj.copy();
14495}
14496
14498{
14499 auto res = isl_pw_aff_list_alloc(ctx.release(), n);
14500 ptr = res;
14501}
14502
14504{
14505 auto res = isl_pw_aff_list_from_pw_aff(el.release());
14506 ptr = res;
14507}
14508
14510{
14511 auto res = isl_pw_aff_list_read_from_str(ctx.release(), str.c_str());
14512 ptr = res;
14513}
14514
14516 std::swap(this->ptr, obj.ptr);
14517 return *this;
14518}
14519
14521 if (ptr)
14522 isl_pw_aff_list_free(ptr);
14523}
14524
14525__isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
14526 return isl_pw_aff_list_copy(ptr);
14527}
14528
14529__isl_keep isl_pw_aff_list *pw_aff_list::get() const {
14530 return ptr;
14531}
14532
14534 isl_pw_aff_list *tmp = ptr;
14535 ptr = nullptr;
14536 return tmp;
14537}
14538
14540 return ptr == nullptr;
14541}
14542
14544 return isl::checked::ctx(isl_pw_aff_list_get_ctx(ptr));
14545}
14546
14548{
14549 auto res = isl_pw_aff_list_add(copy(), el.release());
14550 return manage(res);
14551}
14552
14554{
14555 auto res = isl_pw_aff_list_get_at(get(), index);
14556 return manage(res);
14557}
14558
14560{
14561 return at(index);
14562}
14563
14565{
14566 auto res = isl_pw_aff_list_clear(copy());
14567 return manage(res);
14568}
14569
14571{
14572 auto res = isl_pw_aff_list_concat(copy(), list2.release());
14573 return manage(res);
14574}
14575
14576isl::checked::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
14577{
14578 auto res = isl_pw_aff_list_drop(copy(), first, n);
14579 return manage(res);
14580}
14581
14583{
14584 struct fn_data {
14585 std::function<stat(isl::checked::pw_aff)> func;
14586 } fn_data = { fn };
14587 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
14588 auto *data = static_cast<struct fn_data *>(arg_1);
14589 auto ret = (data->func)(manage(arg_0));
14590 return ret.release();
14591 };
14592 auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
14593 return manage(res);
14594}
14595
14596stat pw_aff_list::foreach_scc(const std::function<boolean(isl::checked::pw_aff, isl::checked::pw_aff)> &follows, const std::function<stat(isl::checked::pw_aff_list)> &fn) const
14597{
14598 struct follows_data {
14600 } follows_data = { follows };
14601 auto follows_lambda = [](isl_pw_aff *arg_0, isl_pw_aff *arg_1, void *arg_2) -> isl_bool {
14602 auto *data = static_cast<struct follows_data *>(arg_2);
14603 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
14604 return ret.release();
14605 };
14606 struct fn_data {
14607 std::function<stat(isl::checked::pw_aff_list)> func;
14608 } fn_data = { fn };
14609 auto fn_lambda = [](isl_pw_aff_list *arg_0, void *arg_1) -> isl_stat {
14610 auto *data = static_cast<struct fn_data *>(arg_1);
14611 auto ret = (data->func)(manage(arg_0));
14612 return ret.release();
14613 };
14614 auto res = isl_pw_aff_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
14615 return manage(res);
14616}
14617
14619{
14620 auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
14621 return manage(res);
14622}
14623
14625{
14626 auto res = isl_pw_aff_list_set_at(copy(), index, el.release());
14627 return manage(res);
14628}
14629
14630class size pw_aff_list::size() const
14631{
14632 auto res = isl_pw_aff_list_size(get());
14633 return manage(res);
14634}
14635
14636inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
14637{
14638 char *str = isl_pw_aff_list_to_str(obj.get());
14639 if (!str) {
14640 os.setstate(std::ios_base::badbit);
14641 return os;
14642 }
14643 os << str;
14644 free(str);
14645 return os;
14646}
14647
14648// implementations for isl::pw_multi_aff
14656
14659
14661 : ptr(nullptr) {}
14662
14664 : ptr(nullptr)
14665{
14666 ptr = obj.copy();
14667}
14668
14674
14680
14682{
14683 auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
14684 ptr = res;
14685}
14686
14688 std::swap(this->ptr, obj.ptr);
14689 return *this;
14690}
14691
14696
14700
14702 return ptr;
14703}
14704
14706 isl_pw_multi_aff *tmp = ptr;
14707 ptr = nullptr;
14708 return tmp;
14709}
14710
14712 return ptr == nullptr;
14713}
14714
14718
14720{
14721 return isl::checked::multi_pw_aff(*this).add(multi2);
14722}
14723
14728
14734
14739
14744
14746{
14747 return this->add(isl::checked::pw_multi_aff(pma2));
14748}
14749
14755
14761
14763{
14764 return this->add_constant(isl::checked::val(ctx(), v));
14765}
14766
14771
14773{
14775 return manage(res);
14776}
14777
14783
14788
14793
14795{
14797 return manage(res);
14798}
14799
14804
14806{
14808 return manage(res);
14809}
14810
14812{
14813 return at(pos);
14814}
14815
14820
14826
14832
14838
14840{
14842 return manage(res);
14843}
14844
14850
14856
14862
14867
14872
14877
14883
14888
14893
14898
14900{
14901 struct fn_data {
14902 std::function<stat(isl::checked::set, isl::checked::multi_aff)> func;
14903 } fn_data = { fn };
14904 auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
14905 auto *data = static_cast<struct fn_data *>(arg_2);
14906 auto ret = (data->func)(manage(arg_0), manage(arg_1));
14907 return ret.release();
14908 };
14909 auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
14910 return manage(res);
14911}
14912
14918
14923
14928
14933
14939
14941{
14943 return manage(res);
14944}
14945
14950
14956
14962
14968
14973
14978
14983
14988
14993
14998
15004
15006{
15008 return manage(res);
15009}
15010
15012{
15014}
15015
15017{
15019}
15020
15021boolean pw_multi_aff::involves_param(const std::string &id) const
15022{
15023 return this->involves_param(isl::checked::id(ctx(), id));
15024}
15025
15030
15032{
15034 return manage(res);
15035}
15036
15038{
15040}
15041
15046
15048{
15049 return isl::checked::multi_pw_aff(*this).max(multi2);
15050}
15051
15057
15059{
15060 return isl::checked::multi_pw_aff(*this).min(multi2);
15061}
15062
15068
15074
15076{
15078 return manage(res);
15079}
15080
15085
15087{
15089}
15090
15092{
15093 return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
15094}
15095
15097{
15098 return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
15099}
15100
15102{
15103 auto res = isl_pw_multi_aff_plain_is_equal(get(), pma2.get());
15104 return manage(res);
15105}
15106
15108{
15110}
15111
15113{
15114 return this->plain_is_equal(isl::checked::pw_multi_aff(pma2));
15115}
15116
15118{
15119 return this->plain_is_equal(isl::checked::pw_multi_aff(pma2));
15120}
15121
15127
15132
15137
15142
15147
15153
15158
15163
15168
15174
15180
15185
15190
15196
15202
15208
15213
15218
15224
15229
15234
15239
15245
15250
15255
15261
15267
15269{
15270 return this->scale(isl::checked::val(ctx(), v));
15271}
15272
15278
15284
15286{
15287 return this->scale_down(isl::checked::val(ctx(), v));
15288}
15289
15294
15299
15305
15307{
15308 return this->set_range_tuple(isl::checked::id(ctx(), id));
15309}
15310
15311class size pw_multi_aff::size() const
15312{
15313 return isl::checked::multi_pw_aff(*this).size();
15314}
15315
15317{
15319 return manage(res);
15320}
15321
15323{
15324 return space();
15325}
15326
15328{
15329 return isl::checked::multi_pw_aff(*this).sub(multi2);
15330}
15331
15336
15342
15347
15352
15354{
15355 return this->sub(isl::checked::pw_multi_aff(pma2));
15356}
15357
15363
15368
15373
15378
15383
15385{
15386 auto res = isl_pw_multi_aff_to_list(copy());
15387 return manage(res);
15388}
15389
15395
15401
15406
15411
15416
15422
15427
15432
15437
15443
15444inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
15445{
15446 char *str = isl_pw_multi_aff_to_str(obj.get());
15447 if (!str) {
15448 os.setstate(std::ios_base::badbit);
15449 return os;
15450 }
15451 os << str;
15452 free(str);
15453 return os;
15454}
15455
15456// implementations for isl::pw_multi_aff_list
15457pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
15458 return pw_multi_aff_list(ptr);
15459}
15461 ptr = isl_pw_multi_aff_list_copy(ptr);
15462 return pw_multi_aff_list(ptr);
15463}
15464
15466 : ptr(ptr) {}
15467
15470
15472 : ptr(nullptr)
15473{
15474 ptr = obj.copy();
15475}
15476
15478{
15479 auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
15480 ptr = res;
15481}
15482
15484{
15485 auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
15486 ptr = res;
15487}
15488
15490{
15491 auto res = isl_pw_multi_aff_list_read_from_str(ctx.release(), str.c_str());
15492 ptr = res;
15493}
15494
15496 std::swap(this->ptr, obj.ptr);
15497 return *this;
15498}
15499
15501 if (ptr)
15502 isl_pw_multi_aff_list_free(ptr);
15503}
15504
15505__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
15506 return isl_pw_multi_aff_list_copy(ptr);
15507}
15508
15509__isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
15510 return ptr;
15511}
15512
15513__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
15514 isl_pw_multi_aff_list *tmp = ptr;
15515 ptr = nullptr;
15516 return tmp;
15517}
15518
15520 return ptr == nullptr;
15521}
15522
15524 return isl::checked::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
15525}
15526
15528{
15529 auto res = isl_pw_multi_aff_list_add(copy(), el.release());
15530 return manage(res);
15531}
15532
15534{
15535 auto res = isl_pw_multi_aff_list_get_at(get(), index);
15536 return manage(res);
15537}
15538
15540{
15541 return at(index);
15542}
15543
15545{
15546 auto res = isl_pw_multi_aff_list_clear(copy());
15547 return manage(res);
15548}
15549
15551{
15552 auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
15553 return manage(res);
15554}
15555
15556isl::checked::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
15557{
15558 auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
15559 return manage(res);
15560}
15561
15563{
15564 struct fn_data {
15565 std::function<stat(isl::checked::pw_multi_aff)> func;
15566 } fn_data = { fn };
15567 auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
15568 auto *data = static_cast<struct fn_data *>(arg_1);
15569 auto ret = (data->func)(manage(arg_0));
15570 return ret.release();
15571 };
15572 auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
15573 return manage(res);
15574}
15575
15577{
15578 struct follows_data {
15580 } follows_data = { follows };
15581 auto follows_lambda = [](isl_pw_multi_aff *arg_0, isl_pw_multi_aff *arg_1, void *arg_2) -> isl_bool {
15582 auto *data = static_cast<struct follows_data *>(arg_2);
15583 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
15584 return ret.release();
15585 };
15586 struct fn_data {
15587 std::function<stat(isl::checked::pw_multi_aff_list)> func;
15588 } fn_data = { fn };
15589 auto fn_lambda = [](isl_pw_multi_aff_list *arg_0, void *arg_1) -> isl_stat {
15590 auto *data = static_cast<struct fn_data *>(arg_1);
15591 auto ret = (data->func)(manage(arg_0));
15592 return ret.release();
15593 };
15594 auto res = isl_pw_multi_aff_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
15595 return manage(res);
15596}
15597
15599{
15600 auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
15601 return manage(res);
15602}
15603
15605{
15606 auto res = isl_pw_multi_aff_list_set_at(copy(), index, el.release());
15607 return manage(res);
15608}
15609
15611{
15612 auto res = isl_pw_multi_aff_list_size(get());
15613 return manage(res);
15614}
15615
15616inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
15617{
15618 char *str = isl_pw_multi_aff_list_to_str(obj.get());
15619 if (!str) {
15620 os.setstate(std::ios_base::badbit);
15621 return os;
15622 }
15623 os << str;
15624 free(str);
15625 return os;
15626}
15627
15628// implementations for isl::schedule
15636
15639
15641 : ptr(nullptr) {}
15642
15644 : ptr(nullptr)
15645{
15646 ptr = obj.copy();
15647}
15648
15650{
15651 auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
15652 ptr = res;
15653}
15654
15656 std::swap(this->ptr, obj.ptr);
15657 return *this;
15658}
15659
15661 if (ptr)
15663}
15664
15666 return isl_schedule_copy(ptr);
15667}
15668
15670 return ptr;
15671}
15672
15674 isl_schedule *tmp = ptr;
15675 ptr = nullptr;
15676 return tmp;
15677}
15678
15679bool schedule::is_null() const {
15680 return ptr == nullptr;
15681}
15682
15686
15688{
15690 return manage(res);
15691}
15692
15694{
15695 return domain();
15696}
15697
15703
15705{
15706 auto res = isl_schedule_get_map(get());
15707 return manage(res);
15708}
15709
15711{
15712 return map();
15713}
15714
15720
15722{
15723 auto res = isl_schedule_get_root(get());
15724 return manage(res);
15725}
15726
15728{
15729 return root();
15730}
15731
15732inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
15733{
15734 char *str = isl_schedule_to_str(obj.get());
15735 if (!str) {
15736 os.setstate(std::ios_base::badbit);
15737 return os;
15738 }
15739 os << str;
15740 free(str);
15741 return os;
15742}
15743
15744// implementations for isl::schedule_constraints
15752
15755
15758
15760 : ptr(nullptr)
15761{
15762 ptr = obj.copy();
15763}
15764
15766{
15767 auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
15768 ptr = res;
15769}
15770
15772 std::swap(this->ptr, obj.ptr);
15773 return *this;
15774}
15775
15780
15784
15788
15791 ptr = nullptr;
15792 return tmp;
15793}
15794
15796 return ptr == nullptr;
15797}
15798
15802
15808
15813
15819
15825
15830
15836
15841
15847
15849{
15850 return context();
15851}
15852
15858
15863
15869
15875
15880
15886
15892
15898
15904
15910
15916
15921
15922inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
15923{
15925 if (!str) {
15926 os.setstate(std::ios_base::badbit);
15927 return os;
15928 }
15929 os << str;
15930 free(str);
15931 return os;
15932}
15933
15934// implementations for isl::schedule_node
15942
15945
15947 : ptr(nullptr) {}
15948
15950 : ptr(nullptr)
15951{
15952 ptr = obj.copy();
15953}
15954
15956 std::swap(this->ptr, obj.ptr);
15957 return *this;
15958}
15959
15964
15968
15970 return ptr;
15971}
15972
15974 isl_schedule_node *tmp = ptr;
15975 ptr = nullptr;
15976 return tmp;
15977}
15978
15980 return ptr == nullptr;
15981}
15982
15983template <typename T, typename>
15984boolean schedule_node::isa_type(T subtype) const
15985{
15986 if (is_null())
15987 return boolean();
15988 return isl_schedule_node_get_type(get()) == subtype;
15989}
15990template <class T>
15991boolean schedule_node::isa() const
15992{
15993 return isa_type<decltype(T::type)>(T::type);
15994}
15995template <class T>
15997{
15998 if (isa<T>().is_false())
15999 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
16000 return T(copy());
16001}
16002
16006
16008{
16009 auto res = isl_schedule_node_ancestor(copy(), generation);
16010 return manage(res);
16011}
16012
16013class size schedule_node::ancestor_child_position(const isl::checked::schedule_node &ancestor) const
16014{
16016 return manage(res);
16017}
16018
16019class size schedule_node::get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const
16020{
16022}
16023
16025{
16027 return manage(res);
16028}
16029
16031{
16033 return manage(res);
16034}
16035
16037{
16038 return child_position();
16039}
16040
16041boolean schedule_node::every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const
16042{
16043 struct test_data {
16044 std::function<boolean(isl::checked::schedule_node)> func;
16045 } test_data = { test };
16046 auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
16047 auto *data = static_cast<struct test_data *>(arg_1);
16048 auto ret = (data->func)(manage_copy(arg_0));
16049 return ret.release();
16050 };
16051 auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
16052 return manage(res);
16053}
16054
16060
16062{
16063 struct fn_data {
16064 std::function<stat(isl::checked::schedule_node)> func;
16065 } fn_data = { fn };
16066 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
16067 auto *data = static_cast<struct fn_data *>(arg_1);
16068 auto ret = (data->func)(manage_copy(arg_0));
16069 return ret.release();
16070 };
16071 auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
16072 return manage(res);
16073}
16074
16076{
16077 struct fn_data {
16078 std::function<boolean(isl::checked::schedule_node)> func;
16079 } fn_data = { fn };
16080 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
16081 auto *data = static_cast<struct fn_data *>(arg_1);
16082 auto ret = (data->func)(manage_copy(arg_0));
16083 return ret.release();
16084 };
16085 auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
16086 return manage(res);
16087}
16088
16094
16100
16106
16112
16114{
16116 return manage(res);
16117}
16118
16120{
16122 return manage(res);
16123}
16124
16126{
16128 return manage(res);
16129}
16130
16132{
16134 return manage(res);
16135}
16136
16142
16148
16154
16160
16162{
16163 return this->insert_mark(isl::checked::id(ctx(), mark));
16164}
16165