Polly 19.0.0git
isl-noexceptions.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// clang-format off
9
10#ifndef ISL_CPP_CHECKED
11#define ISL_CPP_CHECKED
12
13#include <stdio.h>
14#include <stdlib.h>
15#include <isl/set.h>
16
17#include <functional>
18#include <memory>
19#include <ostream>
20#include <string>
21#include <type_traits>
22
23namespace isl {
24
25#define ISLPP_STRINGIZE_(X) #X
26#define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
27
28#define ISLPP_ASSERT(test, message) \
29 do { \
30 if (test) \
31 break; \
32 fputs("Assertion \"" #test "\" failed at " __FILE__ \
33 ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
34 stderr); \
35 abort(); \
36 } while (0)
37
38/* Class used to check that isl::checked::boolean,
39 * isl::checked::stat and isl::checked::size values are checked for errors.
40 */
41struct checker {
42 bool checked = false;
44 //ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
45 }
46};
47
48class boolean {
49private:
50 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
52
53 friend boolean manage(isl_bool val);
55public:
56 static boolean error() {
57 return boolean(isl_bool_error);
58 }
61
62 /* implicit */ boolean(bool val)
64
66 auto tmp = val;
68 check->checked = true;
69 return tmp;
70 }
71
72 bool is_error() const { check->checked = true; return val == isl_bool_error; }
73 bool is_false() const { check->checked = true; return val == isl_bool_false; }
74 bool is_true() const { check->checked = true; return val == isl_bool_true; }
75
76 operator bool() const {
77 //ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
78 ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
79 return is_true();
80 }
81
82 boolean negate() {
83 if (val == isl_bool_true)
85 else if (val == isl_bool_false)
87 return *this;
88 }
89
90 boolean operator!() const {
91 return boolean(*this).negate();
92 }
93};
94
95inline boolean manage(isl_bool val) {
96 return boolean(val);
97}
98
99class ctx {
101public:
102 /* implicit */ ctx(isl_ctx *ctx)
103 : ptr(ctx) {}
105 auto tmp = ptr;
106 ptr = nullptr;
107 return tmp;
108 }
110 return ptr;
111 }
112};
113
114/* Class encapsulating an isl_stat value.
115 */
116class stat {
117private:
118 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
120
121 friend stat manage(isl_stat val);
123public:
124 static stat ok() {
125 return stat(isl_stat_ok);
126 }
127 static stat error() {
128 return stat(isl_stat_error);
129 }
131
133 check->checked = true;
134 return val;
135 }
136
137 bool is_error() const {
138 check->checked = true;
139 return val == isl_stat_error;
140 }
141 bool is_ok() const {
142 check->checked = true;
143 return val == isl_stat_ok;
144 }
145};
146
148{
149 return stat(val);
150}
151
152/* Class encapsulating an isl_size value.
153 */
154class size {
155private:
156 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
158
159 friend size manage(isl_size val);
161public:
163
165 auto tmp = val;
167 check->checked = true;
168 return tmp;
169 }
170
171 bool is_error() const {
172 check->checked = true;
173 return val == isl_size_error;
174 }
175
176 explicit operator unsigned() const {
177 ISLPP_ASSERT(check->checked,
178 "IMPLEMENTATION ERROR: Unchecked error state");
180 "IMPLEMENTATION ERROR: Unhandled error state");
181 return val;
182 }
183};
184
186{
187 return size(val);
188}
189
190enum class dim {
193 in = isl_dim_in,
198};
199
200} // namespace isl
201#include <isl/id.h>
202#include <isl/space.h>
203#include <isl/val.h>
204#include <isl/aff.h>
205#include <isl/set.h>
206#include <isl/map.h>
207#include <isl/ilp.h>
208#include <isl/constraint.h>
209#include <isl/union_set.h>
210#include <isl/union_map.h>
211#include <isl/flow.h>
212#include <isl/schedule.h>
213#include <isl/schedule_node.h>
214#include <isl/ast_build.h>
215#include <isl/fixed_box.h>
216
217namespace isl {
218
219// forward declarations
220class aff;
221class aff_list;
222class ast_build;
223class ast_expr;
224class ast_expr_id;
225class ast_expr_int;
226class ast_expr_op;
227class ast_expr_op_access;
228class ast_expr_op_add;
229class ast_expr_op_address_of;
230class ast_expr_op_and;
231class ast_expr_op_and_then;
232class ast_expr_op_call;
233class ast_expr_op_cond;
234class ast_expr_op_div;
235class ast_expr_op_eq;
236class ast_expr_op_fdiv_q;
237class ast_expr_op_ge;
238class ast_expr_op_gt;
239class ast_expr_op_le;
240class ast_expr_op_lt;
241class ast_expr_op_max;
242class ast_expr_op_member;
243class ast_expr_op_min;
244class ast_expr_op_minus;
245class ast_expr_op_mul;
246class ast_expr_op_or;
247class ast_expr_op_or_else;
248class ast_expr_op_pdiv_q;
249class ast_expr_op_pdiv_r;
250class ast_expr_op_select;
251class ast_expr_op_sub;
252class ast_expr_op_zdiv_r;
253class ast_node;
254class ast_node_block;
255class ast_node_for;
256class ast_node_if;
257class ast_node_list;
258class ast_node_mark;
259class ast_node_user;
260class basic_map;
261class basic_map_list;
262class basic_set;
263class basic_set_list;
264class constraint;
265class fixed_box;
266class id;
267class id_list;
268class id_to_ast_expr;
269class local_space;
270class map;
271class map_list;
272class multi_aff;
273class multi_id;
274class multi_pw_aff;
275class multi_union_pw_aff;
276class multi_val;
277class point;
278class pw_aff;
279class pw_aff_list;
280class pw_multi_aff;
281class pw_multi_aff_list;
282class schedule;
283class schedule_constraints;
284class schedule_node;
285class schedule_node_band;
286class schedule_node_context;
287class schedule_node_domain;
288class schedule_node_expansion;
289class schedule_node_extension;
290class schedule_node_filter;
291class schedule_node_guard;
292class schedule_node_leaf;
293class schedule_node_mark;
294class schedule_node_sequence;
295class schedule_node_set;
296class set;
297class set_list;
298class space;
299class union_access_info;
300class union_flow;
301class union_map;
302class union_pw_aff;
303class union_pw_aff_list;
304class union_pw_multi_aff;
305class union_set;
306class union_set_list;
307class val;
308class val_list;
309
310// declarations for isl::aff
311inline aff manage(__isl_take isl_aff *ptr);
312inline aff manage_copy(__isl_keep isl_aff *ptr);
313
314class aff {
315 friend inline aff manage(__isl_take isl_aff *ptr);
316 friend inline aff manage_copy(__isl_keep isl_aff *ptr);
317
318protected:
319 isl_aff *ptr = nullptr;
320
321 inline explicit aff(__isl_take isl_aff *ptr);
322
323public:
324 inline /* implicit */ aff();
325 inline /* implicit */ aff(const aff &obj);
326 inline explicit aff(isl::ctx ctx, const std::string &str);
327 inline explicit aff(isl::local_space ls, isl::val val);
328 inline explicit aff(isl::local_space ls);
329 inline aff &operator=(aff obj);
330 inline ~aff();
331 inline __isl_give isl_aff *copy() const &;
332 inline __isl_give isl_aff *copy() && = delete;
333 inline __isl_keep isl_aff *get() const;
334 inline __isl_give isl_aff *release();
335 inline bool is_null() const;
336 inline isl::ctx ctx() const;
337
338 inline isl::aff add(isl::aff aff2) const;
339 inline isl::multi_aff add(const isl::multi_aff &multi2) const;
340 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
341 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
342 inline isl::pw_aff add(const isl::pw_aff &pwaff2) const;
343 inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
344 inline isl::union_pw_aff add(const isl::union_pw_aff &upa2) const;
345 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
346 inline isl::aff add_constant(isl::val v) const;
347 inline isl::aff add_constant(long v) const;
348 inline isl::multi_aff add_constant(const isl::multi_val &mv) const;
349 inline isl::aff add_constant_si(int v) const;
350 inline isl::pw_aff add_dims(isl::dim type, unsigned int n) const;
352 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
353 inline isl::aff as_aff() const;
354 inline isl::map as_map() const;
355 inline isl::multi_aff as_multi_aff() const;
357 inline isl::pw_multi_aff as_pw_multi_aff() const;
358 inline isl::set as_set() const;
359 inline isl::union_map as_union_map() const;
360 inline isl::aff at(int pos) const;
361 inline isl::basic_set bind(isl::id id) const;
362 inline isl::basic_set bind(const std::string &id) const;
363 inline isl::basic_set bind(const isl::multi_id &tuple) const;
364 inline isl::pw_aff bind_domain(const isl::multi_id &tuple) const;
365 inline isl::pw_aff bind_domain_wrapped_domain(const isl::multi_id &tuple) const;
366 inline isl::aff ceil() const;
367 inline isl::pw_aff coalesce() const;
368 inline isl::pw_aff cond(const isl::pw_aff &pwaff_true, const isl::pw_aff &pwaff_false) const;
369 inline isl::multi_val constant_multi_val() const;
370 inline isl::val constant_val() const;
371 inline isl::val get_constant_val() const;
372 inline isl::val denominator_val() const;
373 inline isl::val get_denominator_val() const;
374 inline class size dim(isl::dim type) const;
375 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
376 inline isl::aff div(isl::aff aff2) const;
377 inline isl::pw_aff div(const isl::pw_aff &pa2) const;
378 inline isl::set domain() const;
379 inline isl::space domain_space() const;
380 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
381 inline isl::set eq_set(isl::aff aff2) const;
382 inline isl::set eq_set(const isl::pw_aff &pwaff2) const;
383 inline isl::val eval(isl::point pnt) const;
384 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
385 inline isl::multi_aff flat_range_product(const isl::multi_aff &multi2) const;
386 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
387 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
388 inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
390 inline isl::aff floor() const;
391 inline stat foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const;
392 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
393 inline stat foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const;
394 inline isl::set ge_set(isl::aff aff2) const;
395 inline isl::set ge_set(const isl::pw_aff &pwaff2) const;
396 inline isl::aff gist(isl::set context) const;
397 inline isl::union_pw_aff gist(const isl::union_set &context) const;
398 inline isl::aff gist(const isl::basic_set &context) const;
399 inline isl::aff gist(const isl::point &context) const;
400 inline isl::set gt_set(isl::aff aff2) const;
401 inline isl::set gt_set(const isl::pw_aff &pwaff2) const;
402 inline boolean has_range_tuple_id() const;
403 inline isl::multi_aff identity() const;
404 inline isl::pw_aff insert_domain(const isl::space &domain) const;
405 inline isl::pw_aff intersect_domain(const isl::set &set) const;
406 inline isl::union_pw_aff intersect_domain(const isl::space &space) const;
407 inline isl::union_pw_aff intersect_domain(const isl::union_set &uset) const;
409 inline isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
410 inline isl::pw_aff intersect_params(const isl::set &set) const;
411 inline boolean involves_locals() const;
412 inline boolean involves_nan() const;
413 inline boolean involves_param(const isl::id &id) const;
414 inline boolean involves_param(const std::string &id) const;
415 inline boolean involves_param(const isl::id_list &list) const;
416 inline boolean is_cst() const;
417 inline boolean is_equal(const isl::pw_aff &pa2) const;
418 inline boolean isa_aff() const;
419 inline boolean isa_multi_aff() const;
420 inline boolean isa_pw_multi_aff() const;
421 inline isl::set le_set(isl::aff aff2) const;
422 inline isl::set le_set(const isl::pw_aff &pwaff2) const;
423 inline isl::aff_list list() const;
424 inline isl::set lt_set(isl::aff aff2) const;
425 inline isl::set lt_set(const isl::pw_aff &pwaff2) const;
426 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
427 inline isl::pw_aff max(const isl::pw_aff &pwaff2) const;
428 inline isl::multi_val max_multi_val() const;
429 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
430 inline isl::pw_aff min(const isl::pw_aff &pwaff2) const;
431 inline isl::multi_val min_multi_val() const;
432 inline isl::aff mod(isl::val mod) const;
433 inline isl::aff mod(long mod) const;
434 inline isl::aff mul(isl::aff aff2) const;
435 inline isl::pw_aff mul(const isl::pw_aff &pwaff2) const;
436 inline class size n_piece() const;
437 inline isl::set ne_set(isl::aff aff2) const;
438 inline isl::set ne_set(const isl::pw_aff &pwaff2) const;
439 inline isl::aff neg() const;
440 inline boolean plain_is_empty() const;
441 inline boolean plain_is_equal(const isl::multi_aff &multi2) const;
442 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
443 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
446 inline isl::multi_aff product(const isl::multi_aff &multi2) const;
447 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
448 inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
449 inline isl::aff pullback(isl::multi_aff ma) const;
450 inline isl::pw_aff pullback(const isl::multi_pw_aff &mpa) const;
451 inline isl::pw_aff pullback(const isl::pw_multi_aff &pma) const;
452 inline isl::union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
453 inline isl::aff pullback(const isl::aff &ma) const;
455 inline isl::pw_multi_aff range_factor_domain() const;
456 inline isl::pw_multi_aff range_factor_range() const;
457 inline isl::multi_aff range_product(const isl::multi_aff &multi2) const;
458 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
459 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
460 inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
461 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
462 inline isl::id range_tuple_id() const;
463 inline isl::multi_aff reset_range_tuple_id() const;
464 inline isl::multi_aff reset_tuple_id(isl::dim type) const;
465 inline isl::aff scale(isl::val v) const;
466 inline isl::aff scale(long v) const;
467 inline isl::multi_aff scale(const isl::multi_val &mv) const;
468 inline isl::aff scale_down(isl::val v) const;
469 inline isl::aff scale_down(long v) const;
470 inline isl::multi_aff scale_down(const isl::multi_val &mv) const;
471 inline isl::multi_aff set_aff(int pos, const isl::aff &el) const;
472 inline isl::multi_aff set_at(int pos, const isl::aff &el) const;
473 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
474 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
475 inline isl::aff set_constant_si(int v) const;
476 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
477 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const;
478 inline isl::multi_aff set_range_tuple(const isl::id &id) const;
479 inline isl::multi_aff set_range_tuple(const std::string &id) const;
480 inline isl::pw_aff set_tuple_id(isl::dim type, const isl::id &id) const;
481 inline isl::pw_aff set_tuple_id(isl::dim type, const std::string &id) const;
482 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
483 inline class size size() const;
484 inline isl::space space() const;
485 inline isl::aff sub(isl::aff aff2) const;
486 inline isl::multi_aff sub(const isl::multi_aff &multi2) const;
487 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
488 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
489 inline isl::pw_aff sub(const isl::pw_aff &pwaff2) const;
490 inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
491 inline isl::union_pw_aff sub(const isl::union_pw_aff &upa2) const;
492 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
493 inline isl::pw_aff subtract_domain(const isl::set &set) const;
494 inline isl::union_pw_aff subtract_domain(const isl::space &space) const;
495 inline isl::union_pw_aff subtract_domain(const isl::union_set &uset) const;
496 inline isl::pw_aff tdiv_q(const isl::pw_aff &pa2) const;
497 inline isl::pw_aff tdiv_r(const isl::pw_aff &pa2) const;
498 inline isl::aff_list to_list() const;
499 inline isl::multi_pw_aff to_multi_pw_aff() const;
501 inline isl::pw_multi_aff to_pw_multi_aff() const;
502 inline isl::union_pw_aff to_union_pw_aff() const;
504 inline isl::id tuple_id(isl::dim type) const;
506 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
507 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
508 inline isl::pw_aff union_add(const isl::pw_aff &pwaff2) const;
509 inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
510 inline isl::union_pw_aff union_add(const isl::union_pw_aff &upa2) const;
511 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
512 static inline isl::aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
513 static inline isl::aff zero_on_domain(isl::space space);
514};
515
516// declarations for isl::aff_list
517inline aff_list manage(__isl_take isl_aff_list *ptr);
518inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
519
520class aff_list {
521 friend inline aff_list manage(__isl_take isl_aff_list *ptr);
522 friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
523
524protected:
525 isl_aff_list *ptr = nullptr;
526
527 inline explicit aff_list(__isl_take isl_aff_list *ptr);
528
529public:
530 inline /* implicit */ aff_list();
531 inline /* implicit */ aff_list(const aff_list &obj);
532 inline explicit aff_list(isl::ctx ctx, int n);
533 inline explicit aff_list(isl::aff el);
534 inline explicit aff_list(isl::ctx ctx, const std::string &str);
536 inline ~aff_list();
537 inline __isl_give isl_aff_list *copy() const &;
538 inline __isl_give isl_aff_list *copy() && = delete;
539 inline __isl_keep isl_aff_list *get() const;
540 inline __isl_give isl_aff_list *release();
541 inline bool is_null() const;
542 inline isl::ctx ctx() const;
543
544 inline isl::aff_list add(isl::aff el) const;
545 inline isl::aff at(int index) const;
546 inline isl::aff get_at(int index) const;
547 inline isl::aff_list clear() const;
548 inline isl::aff_list concat(isl::aff_list list2) const;
549 inline isl::aff_list drop(unsigned int first, unsigned int n) const;
550 inline stat foreach(const std::function<stat(isl::aff)> &fn) const;
551 inline isl::aff_list insert(unsigned int pos, isl::aff el) const;
552 inline class size size() const;
553};
554
555// declarations for isl::ast_build
558
562
563protected:
564 isl_ast_build *ptr = nullptr;
565
566 inline explicit ast_build(__isl_take isl_ast_build *ptr);
567
568public:
569 inline /* implicit */ ast_build();
570 inline /* implicit */ ast_build(const ast_build &obj);
571 inline explicit ast_build(isl::ctx ctx);
573 inline ~ast_build();
574 inline __isl_give isl_ast_build *copy() const &;
575 inline __isl_give isl_ast_build *copy() && = delete;
576 inline __isl_keep isl_ast_build *get() const;
578 inline bool is_null() const;
579 inline isl::ctx ctx() const;
580
581private:
582 inline ast_build &copy_callbacks(const ast_build &obj);
585 };
586 std::shared_ptr<at_each_domain_data> at_each_domain_data;
587 static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
588 inline void set_at_each_domain_data(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn);
589public:
590 inline isl::ast_build set_at_each_domain(const std::function<isl::ast_node(isl::ast_node, isl::ast_build)> &fn) const;
591 inline isl::ast_expr access_from(isl::multi_pw_aff mpa) const;
592 inline isl::ast_expr access_from(isl::pw_multi_aff pma) const;
593 inline isl::ast_expr call_from(isl::multi_pw_aff mpa) const;
594 inline isl::ast_expr call_from(isl::pw_multi_aff pma) const;
595 inline isl::ast_expr expr_from(isl::pw_aff pa) const;
596 inline isl::ast_expr expr_from(isl::set set) const;
597 static inline isl::ast_build from_context(isl::set set);
598 inline isl::ast_node node_from(isl::schedule schedule) const;
599 inline isl::ast_node node_from_schedule_map(isl::union_map schedule) const;
600 inline isl::ast_build restrict(isl::set set) const;
601 inline isl::union_map schedule() const;
602 inline isl::union_map get_schedule() const;
603};
604
605// declarations for isl::ast_expr
608
609class ast_expr {
610 friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
611 friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
612
613protected:
614 isl_ast_expr *ptr = nullptr;
615
616 inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
617
618public:
619 inline /* implicit */ ast_expr();
620 inline /* implicit */ ast_expr(const ast_expr &obj);
621 inline ast_expr &operator=(ast_expr obj);
622 inline ~ast_expr();
623 inline __isl_give isl_ast_expr *copy() const &;
624 inline __isl_give isl_ast_expr *copy() && = delete;
625 inline __isl_keep isl_ast_expr *get() const;
626 inline __isl_give isl_ast_expr *release();
627 inline bool is_null() const;
628private:
629 template <typename T,
630 typename = typename std::enable_if<std::is_same<
631 const decltype(isl_ast_expr_get_type(nullptr)),
632 const T>::value>::type>
633 inline boolean isa_type(T subtype) const;
634public:
635 template <class T> inline boolean isa() const;
636 template <class T> inline T as() const;
637 inline isl::ctx ctx() const;
638
639 inline isl::ast_expr add(isl::ast_expr expr2) const;
640 inline isl::ast_expr address_of() const;
641 inline isl::ast_expr eq(isl::ast_expr expr2) const;
642 static inline isl::ast_expr from_val(isl::val v);
643 inline isl::id id() const;
644 inline isl::id get_id() const;
645 inline isl::ast_expr le(isl::ast_expr expr2) const;
646 inline isl::ast_expr mul(isl::ast_expr expr2) const;
647 inline isl::ast_expr op_arg(int pos) const;
648 inline isl::ast_expr get_op_arg(int pos) const;
649 inline std::string to_C_str() const;
650 inline isl::val val() const;
651 inline isl::val get_val() const;
652};
653
654// declarations for isl::ast_expr_id
655
656class ast_expr_id : public ast_expr {
657 template <class T>
658 friend boolean ast_expr::isa() const;
659 friend ast_expr_id ast_expr::as<ast_expr_id>() const;
660 static const auto type = isl_ast_expr_id;
661
662protected:
663 inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
664
665public:
666 inline /* implicit */ ast_expr_id();
667 inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
668 inline ast_expr_id &operator=(ast_expr_id obj);
669 inline isl::ctx ctx() const;
670
671 inline isl::id id() const;
672 inline isl::id get_id() const;
673};
674
675// declarations for isl::ast_expr_int
676
677class ast_expr_int : public ast_expr {
678 template <class T>
679 friend boolean ast_expr::isa() const;
680 friend ast_expr_int ast_expr::as<ast_expr_int>() const;
681 static const auto type = isl_ast_expr_int;
682
683protected:
684 inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
685
686public:
687 inline /* implicit */ ast_expr_int();
688 inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
689 inline ast_expr_int &operator=(ast_expr_int obj);
690 inline isl::ctx ctx() const;
691
692 inline isl::val val() const;
693 inline isl::val get_val() const;
694};
695
696// declarations for isl::ast_expr_op
697
698class ast_expr_op : public ast_expr {
699 template <class T>
700 friend boolean ast_expr::isa() const;
701 friend ast_expr_op ast_expr::as<ast_expr_op>() const;
702 static const auto type = isl_ast_expr_op;
703
704protected:
705 inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
706
707public:
708 inline /* implicit */ ast_expr_op();
709 inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
710 inline ast_expr_op &operator=(ast_expr_op obj);
711private:
712 template <typename T,
713 typename = typename std::enable_if<std::is_same<
714 const decltype(isl_ast_expr_op_get_type(nullptr)),
715 const T>::value>::type>
716 inline boolean isa_type(T subtype) const;
717public:
718 template <class T> inline boolean isa() const;
719 template <class T> inline T as() const;
720 inline isl::ctx ctx() const;
721
722 inline isl::ast_expr arg(int pos) const;
723 inline isl::ast_expr get_arg(int pos) const;
724 inline class size n_arg() const;
725 inline class size get_n_arg() const;
726};
727
728// declarations for isl::ast_expr_op_access
729
731 template <class T>
732 friend boolean ast_expr_op::isa() const;
733 friend ast_expr_op_access ast_expr_op::as<ast_expr_op_access>() const;
734 static const auto type = isl_ast_expr_op_access;
735
736protected:
737 inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
738
739public:
740 inline /* implicit */ ast_expr_op_access();
741 inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
742 inline ast_expr_op_access &operator=(ast_expr_op_access obj);
743 inline isl::ctx ctx() const;
744
745};
746
747// declarations for isl::ast_expr_op_add
748
750 template <class T>
751 friend boolean ast_expr_op::isa() const;
752 friend ast_expr_op_add ast_expr_op::as<ast_expr_op_add>() const;
753 static const auto type = isl_ast_expr_op_add;
754
755protected:
756 inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
757
758public:
759 inline /* implicit */ ast_expr_op_add();
760 inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
761 inline ast_expr_op_add &operator=(ast_expr_op_add obj);
762 inline isl::ctx ctx() const;
763
764};
765
766// declarations for isl::ast_expr_op_address_of
767
769 template <class T>
770 friend boolean ast_expr_op::isa() const;
771 friend ast_expr_op_address_of ast_expr_op::as<ast_expr_op_address_of>() const;
772 static const auto type = isl_ast_expr_op_address_of;
773
774protected:
775 inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
776
777public:
778 inline /* implicit */ ast_expr_op_address_of();
779 inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
781 inline isl::ctx ctx() const;
782
783};
784
785// declarations for isl::ast_expr_op_and
786
788 template <class T>
789 friend boolean ast_expr_op::isa() const;
790 friend ast_expr_op_and ast_expr_op::as<ast_expr_op_and>() const;
791 static const auto type = isl_ast_expr_op_and;
792
793protected:
794 inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
795
796public:
797 inline /* implicit */ ast_expr_op_and();
798 inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
799 inline ast_expr_op_and &operator=(ast_expr_op_and obj);
800 inline isl::ctx ctx() const;
801
802};
803
804// declarations for isl::ast_expr_op_and_then
805
807 template <class T>
808 friend boolean ast_expr_op::isa() const;
809 friend ast_expr_op_and_then ast_expr_op::as<ast_expr_op_and_then>() const;
810 static const auto type = isl_ast_expr_op_and_then;
811
812protected:
813 inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
814
815public:
816 inline /* implicit */ ast_expr_op_and_then();
817 inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
819 inline isl::ctx ctx() const;
820
821};
822
823// declarations for isl::ast_expr_op_call
824
826 template <class T>
827 friend boolean ast_expr_op::isa() const;
828 friend ast_expr_op_call ast_expr_op::as<ast_expr_op_call>() const;
829 static const auto type = isl_ast_expr_op_call;
830
831protected:
832 inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
833
834public:
835 inline /* implicit */ ast_expr_op_call();
836 inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
837 inline ast_expr_op_call &operator=(ast_expr_op_call obj);
838 inline isl::ctx ctx() const;
839
840};
841
842// declarations for isl::ast_expr_op_cond
843
845 template <class T>
846 friend boolean ast_expr_op::isa() const;
847 friend ast_expr_op_cond ast_expr_op::as<ast_expr_op_cond>() const;
848 static const auto type = isl_ast_expr_op_cond;
849
850protected:
851 inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
852
853public:
854 inline /* implicit */ ast_expr_op_cond();
855 inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
856 inline ast_expr_op_cond &operator=(ast_expr_op_cond obj);
857 inline isl::ctx ctx() const;
858
859};
860
861// declarations for isl::ast_expr_op_div
862
864 template <class T>
865 friend boolean ast_expr_op::isa() const;
866 friend ast_expr_op_div ast_expr_op::as<ast_expr_op_div>() const;
867 static const auto type = isl_ast_expr_op_div;
868
869protected:
870 inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
871
872public:
873 inline /* implicit */ ast_expr_op_div();
874 inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
875 inline ast_expr_op_div &operator=(ast_expr_op_div obj);
876 inline isl::ctx ctx() const;
877
878};
879
880// declarations for isl::ast_expr_op_eq
881
883 template <class T>
884 friend boolean ast_expr_op::isa() const;
885 friend ast_expr_op_eq ast_expr_op::as<ast_expr_op_eq>() const;
886 static const auto type = isl_ast_expr_op_eq;
887
888protected:
889 inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
890
891public:
892 inline /* implicit */ ast_expr_op_eq();
893 inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
894 inline ast_expr_op_eq &operator=(ast_expr_op_eq obj);
895 inline isl::ctx ctx() const;
896
897};
898
899// declarations for isl::ast_expr_op_fdiv_q
900
902 template <class T>
903 friend boolean ast_expr_op::isa() const;
904 friend ast_expr_op_fdiv_q ast_expr_op::as<ast_expr_op_fdiv_q>() const;
905 static const auto type = isl_ast_expr_op_fdiv_q;
906
907protected:
908 inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
909
910public:
911 inline /* implicit */ ast_expr_op_fdiv_q();
912 inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
913 inline ast_expr_op_fdiv_q &operator=(ast_expr_op_fdiv_q obj);
914 inline isl::ctx ctx() const;
915
916};
917
918// declarations for isl::ast_expr_op_ge
919
921 template <class T>
922 friend boolean ast_expr_op::isa() const;
923 friend ast_expr_op_ge ast_expr_op::as<ast_expr_op_ge>() const;
924 static const auto type = isl_ast_expr_op_ge;
925
926protected:
927 inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
928
929public:
930 inline /* implicit */ ast_expr_op_ge();
931 inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
932 inline ast_expr_op_ge &operator=(ast_expr_op_ge obj);
933 inline isl::ctx ctx() const;
934
935};
936
937// declarations for isl::ast_expr_op_gt
938
940 template <class T>
941 friend boolean ast_expr_op::isa() const;
942 friend ast_expr_op_gt ast_expr_op::as<ast_expr_op_gt>() const;
943 static const auto type = isl_ast_expr_op_gt;
944
945protected:
946 inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
947
948public:
949 inline /* implicit */ ast_expr_op_gt();
950 inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
951 inline ast_expr_op_gt &operator=(ast_expr_op_gt obj);
952 inline isl::ctx ctx() const;
953
954};
955
956// declarations for isl::ast_expr_op_le
957
959 template <class T>
960 friend boolean ast_expr_op::isa() const;
961 friend ast_expr_op_le ast_expr_op::as<ast_expr_op_le>() const;
962 static const auto type = isl_ast_expr_op_le;
963
964protected:
965 inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
966
967public:
968 inline /* implicit */ ast_expr_op_le();
969 inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
970 inline ast_expr_op_le &operator=(ast_expr_op_le obj);
971 inline isl::ctx ctx() const;
972
973};
974
975// declarations for isl::ast_expr_op_lt
976
978 template <class T>
979 friend boolean ast_expr_op::isa() const;
980 friend ast_expr_op_lt ast_expr_op::as<ast_expr_op_lt>() const;
981 static const auto type = isl_ast_expr_op_lt;
982
983protected:
984 inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
985
986public:
987 inline /* implicit */ ast_expr_op_lt();
988 inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
989 inline ast_expr_op_lt &operator=(ast_expr_op_lt obj);
990 inline isl::ctx ctx() const;
991
992};
993
994// declarations for isl::ast_expr_op_max
995
997 template <class T>
998 friend boolean ast_expr_op::isa() const;
999 friend ast_expr_op_max ast_expr_op::as<ast_expr_op_max>() const;
1000 static const auto type = isl_ast_expr_op_max;
1001
1002protected:
1003 inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
1004
1005public:
1006 inline /* implicit */ ast_expr_op_max();
1007 inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
1008 inline ast_expr_op_max &operator=(ast_expr_op_max obj);
1009 inline isl::ctx ctx() const;
1010
1011};
1012
1013// declarations for isl::ast_expr_op_member
1014
1016 template <class T>
1017 friend boolean ast_expr_op::isa() const;
1018 friend ast_expr_op_member ast_expr_op::as<ast_expr_op_member>() const;
1019 static const auto type = isl_ast_expr_op_member;
1020
1021protected:
1022 inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
1023
1024public:
1025 inline /* implicit */ ast_expr_op_member();
1026 inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
1027 inline ast_expr_op_member &operator=(ast_expr_op_member obj);
1028 inline isl::ctx ctx() const;
1029
1030};
1031
1032// declarations for isl::ast_expr_op_min
1033
1035 template <class T>
1036 friend boolean ast_expr_op::isa() const;
1037 friend ast_expr_op_min ast_expr_op::as<ast_expr_op_min>() const;
1038 static const auto type = isl_ast_expr_op_min;
1039
1040protected:
1041 inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
1042
1043public:
1044 inline /* implicit */ ast_expr_op_min();
1045 inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
1046 inline ast_expr_op_min &operator=(ast_expr_op_min obj);
1047 inline isl::ctx ctx() const;
1048
1049};
1050
1051// declarations for isl::ast_expr_op_minus
1052
1054 template <class T>
1055 friend boolean ast_expr_op::isa() const;
1056 friend ast_expr_op_minus ast_expr_op::as<ast_expr_op_minus>() const;
1057 static const auto type = isl_ast_expr_op_minus;
1058
1059protected:
1060 inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
1061
1062public:
1063 inline /* implicit */ ast_expr_op_minus();
1064 inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
1065 inline ast_expr_op_minus &operator=(ast_expr_op_minus obj);
1066 inline isl::ctx ctx() const;
1067
1068};
1069
1070// declarations for isl::ast_expr_op_mul
1071
1073 template <class T>
1074 friend boolean ast_expr_op::isa() const;
1075 friend ast_expr_op_mul ast_expr_op::as<ast_expr_op_mul>() const;
1076 static const auto type = isl_ast_expr_op_mul;
1077
1078protected:
1079 inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
1080
1081public:
1082 inline /* implicit */ ast_expr_op_mul();
1083 inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
1084 inline ast_expr_op_mul &operator=(ast_expr_op_mul obj);
1085 inline isl::ctx ctx() const;
1086
1087};
1088
1089// declarations for isl::ast_expr_op_or
1090
1092 template <class T>
1093 friend boolean ast_expr_op::isa() const;
1094 friend ast_expr_op_or ast_expr_op::as<ast_expr_op_or>() const;
1095 static const auto type = isl_ast_expr_op_or;
1096
1097protected:
1098 inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
1099
1100public:
1101 inline /* implicit */ ast_expr_op_or();
1102 inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
1103 inline ast_expr_op_or &operator=(ast_expr_op_or obj);
1104 inline isl::ctx ctx() const;
1105
1106};
1107
1108// declarations for isl::ast_expr_op_or_else
1109
1111 template <class T>
1112 friend boolean ast_expr_op::isa() const;
1113 friend ast_expr_op_or_else ast_expr_op::as<ast_expr_op_or_else>() const;
1114 static const auto type = isl_ast_expr_op_or_else;
1115
1116protected:
1117 inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
1118
1119public:
1120 inline /* implicit */ ast_expr_op_or_else();
1121 inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
1122 inline ast_expr_op_or_else &operator=(ast_expr_op_or_else obj);
1123 inline isl::ctx ctx() const;
1124
1125};
1126
1127// declarations for isl::ast_expr_op_pdiv_q
1128
1130 template <class T>
1131 friend boolean ast_expr_op::isa() const;
1132 friend ast_expr_op_pdiv_q ast_expr_op::as<ast_expr_op_pdiv_q>() const;
1133 static const auto type = isl_ast_expr_op_pdiv_q;
1134
1135protected:
1136 inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
1137
1138public:
1139 inline /* implicit */ ast_expr_op_pdiv_q();
1140 inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
1141 inline ast_expr_op_pdiv_q &operator=(ast_expr_op_pdiv_q obj);
1142 inline isl::ctx ctx() const;
1143
1144};
1145
1146// declarations for isl::ast_expr_op_pdiv_r
1147
1149 template <class T>
1150 friend boolean ast_expr_op::isa() const;
1151 friend ast_expr_op_pdiv_r ast_expr_op::as<ast_expr_op_pdiv_r>() const;
1152 static const auto type = isl_ast_expr_op_pdiv_r;
1153
1154protected:
1155 inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
1156
1157public:
1158 inline /* implicit */ ast_expr_op_pdiv_r();
1159 inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
1160 inline ast_expr_op_pdiv_r &operator=(ast_expr_op_pdiv_r obj);
1161 inline isl::ctx ctx() const;
1162
1163};
1164
1165// declarations for isl::ast_expr_op_select
1166
1168 template <class T>
1169 friend boolean ast_expr_op::isa() const;
1170 friend ast_expr_op_select ast_expr_op::as<ast_expr_op_select>() const;
1171 static const auto type = isl_ast_expr_op_select;
1172
1173protected:
1174 inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
1175
1176public:
1177 inline /* implicit */ ast_expr_op_select();
1178 inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
1179 inline ast_expr_op_select &operator=(ast_expr_op_select obj);
1180 inline isl::ctx ctx() const;
1181
1182};
1183
1184// declarations for isl::ast_expr_op_sub
1185
1187 template <class T>
1188 friend boolean ast_expr_op::isa() const;
1189 friend ast_expr_op_sub ast_expr_op::as<ast_expr_op_sub>() const;
1190 static const auto type = isl_ast_expr_op_sub;
1191
1192protected:
1193 inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
1194
1195public:
1196 inline /* implicit */ ast_expr_op_sub();
1197 inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
1198 inline ast_expr_op_sub &operator=(ast_expr_op_sub obj);
1199 inline isl::ctx ctx() const;
1200
1201};
1202
1203// declarations for isl::ast_expr_op_zdiv_r
1204
1206 template <class T>
1207 friend boolean ast_expr_op::isa() const;
1208 friend ast_expr_op_zdiv_r ast_expr_op::as<ast_expr_op_zdiv_r>() const;
1209 static const auto type = isl_ast_expr_op_zdiv_r;
1210
1211protected:
1212 inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
1213
1214public:
1215 inline /* implicit */ ast_expr_op_zdiv_r();
1216 inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
1217 inline ast_expr_op_zdiv_r &operator=(ast_expr_op_zdiv_r obj);
1218 inline isl::ctx ctx() const;
1219
1220};
1221
1222// declarations for isl::ast_node
1225
1227 friend inline ast_node manage(__isl_take isl_ast_node *ptr);
1228 friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1229
1230protected:
1231 isl_ast_node *ptr = nullptr;
1232
1233 inline explicit ast_node(__isl_take isl_ast_node *ptr);
1234
1235public:
1236 inline /* implicit */ ast_node();
1237 inline /* implicit */ ast_node(const ast_node &obj);
1238 inline ast_node &operator=(ast_node obj);
1239 inline ~ast_node();
1240 inline __isl_give isl_ast_node *copy() const &;
1241 inline __isl_give isl_ast_node *copy() && = delete;
1242 inline __isl_keep isl_ast_node *get() const;
1243 inline __isl_give isl_ast_node *release();
1244 inline bool is_null() const;
1245private:
1246 template <typename T,
1247 typename = typename std::enable_if<std::is_same<
1248 const decltype(isl_ast_node_get_type(nullptr)),
1249 const T>::value>::type>
1250 inline boolean isa_type(T subtype) const;
1251public:
1252 template <class T> inline boolean isa() const;
1253 template <class T> inline T as() const;
1254 inline isl::ctx ctx() const;
1255
1256 inline isl::id annotation() const;
1257 inline isl::id get_annotation() const;
1258 inline std::string to_C_str() const;
1259 inline isl::ast_node_list to_list() const;
1260};
1261
1262// declarations for isl::ast_node_block
1263
1264class ast_node_block : public ast_node {
1265 template <class T>
1266 friend boolean ast_node::isa() const;
1267 friend ast_node_block ast_node::as<ast_node_block>() const;
1268 static const auto type = isl_ast_node_block;
1269
1270protected:
1271 inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
1272
1273public:
1274 inline /* implicit */ ast_node_block();
1275 inline /* implicit */ ast_node_block(const ast_node_block &obj);
1276 inline ast_node_block &operator=(ast_node_block obj);
1277 inline isl::ctx ctx() const;
1278
1279 inline isl::ast_node_list children() const;
1280 inline isl::ast_node_list get_children() const;
1281};
1282
1283// declarations for isl::ast_node_for
1284
1285class ast_node_for : public ast_node {
1286 template <class T>
1287 friend boolean ast_node::isa() const;
1288 friend ast_node_for ast_node::as<ast_node_for>() const;
1289 static const auto type = isl_ast_node_for;
1290
1291protected:
1292 inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
1293
1294public:
1295 inline /* implicit */ ast_node_for();
1296 inline /* implicit */ ast_node_for(const ast_node_for &obj);
1297 inline ast_node_for &operator=(ast_node_for obj);
1298 inline isl::ctx ctx() const;
1299
1300 inline isl::ast_node body() const;
1301 inline isl::ast_node get_body() const;
1302 inline isl::ast_expr cond() const;
1303 inline isl::ast_expr get_cond() const;
1304 inline isl::ast_expr inc() const;
1305 inline isl::ast_expr get_inc() const;
1306 inline isl::ast_expr init() const;
1307 inline isl::ast_expr get_init() const;
1308 inline boolean is_degenerate() const;
1309 inline isl::ast_expr iterator() const;
1310 inline isl::ast_expr get_iterator() const;
1311};
1312
1313// declarations for isl::ast_node_if
1314
1315class ast_node_if : public ast_node {
1316 template <class T>
1317 friend boolean ast_node::isa() const;
1318 friend ast_node_if ast_node::as<ast_node_if>() const;
1319 static const auto type = isl_ast_node_if;
1320
1321protected:
1322 inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
1323
1324public:
1325 inline /* implicit */ ast_node_if();
1326 inline /* implicit */ ast_node_if(const ast_node_if &obj);
1327 inline ast_node_if &operator=(ast_node_if obj);
1328 inline isl::ctx ctx() const;
1329
1330 inline isl::ast_expr cond() const;
1331 inline isl::ast_expr get_cond() const;
1332 inline isl::ast_node else_node() const;
1333 inline isl::ast_node get_else_node() const;
1334 inline boolean has_else_node() const;
1335 inline isl::ast_node then_node() const;
1336 inline isl::ast_node get_then_node() const;
1337};
1338
1339// declarations for isl::ast_node_list
1340inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1341inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1342
1344 friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1345 friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1346
1347protected:
1348 isl_ast_node_list *ptr = nullptr;
1349
1350 inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
1351
1352public:
1353 inline /* implicit */ ast_node_list();
1354 inline /* implicit */ ast_node_list(const ast_node_list &obj);
1355 inline explicit ast_node_list(isl::ctx ctx, int n);
1356 inline explicit ast_node_list(isl::ast_node el);
1357 inline ast_node_list &operator=(ast_node_list obj);
1358 inline ~ast_node_list();
1359 inline __isl_give isl_ast_node_list *copy() const &;
1360 inline __isl_give isl_ast_node_list *copy() && = delete;
1361 inline __isl_keep isl_ast_node_list *get() const;
1362 inline __isl_give isl_ast_node_list *release();
1363 inline bool is_null() const;
1364 inline isl::ctx ctx() const;
1365
1366 inline isl::ast_node_list add(isl::ast_node el) const;
1367 inline isl::ast_node at(int index) const;
1368 inline isl::ast_node get_at(int index) const;
1369 inline isl::ast_node_list clear() const;
1370 inline isl::ast_node_list concat(isl::ast_node_list list2) const;
1371 inline isl::ast_node_list drop(unsigned int first, unsigned int n) const;
1372 inline stat foreach(const std::function<stat(isl::ast_node)> &fn) const;
1373 inline isl::ast_node_list insert(unsigned int pos, isl::ast_node el) const;
1374 inline class size size() const;
1375};
1376
1377// declarations for isl::ast_node_mark
1378
1379class ast_node_mark : public ast_node {
1380 template <class T>
1381 friend boolean ast_node::isa() const;
1382 friend ast_node_mark ast_node::as<ast_node_mark>() const;
1383 static const auto type = isl_ast_node_mark;
1384
1385protected:
1386 inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
1387
1388public:
1389 inline /* implicit */ ast_node_mark();
1390 inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
1391 inline ast_node_mark &operator=(ast_node_mark obj);
1392 inline isl::ctx ctx() const;
1393
1394 inline isl::id id() const;
1395 inline isl::id get_id() const;
1396 inline isl::ast_node node() const;
1397 inline isl::ast_node get_node() const;
1398};
1399
1400// declarations for isl::ast_node_user
1401
1402class ast_node_user : public ast_node {
1403 template <class T>
1404 friend boolean ast_node::isa() const;
1405 friend ast_node_user ast_node::as<ast_node_user>() const;
1406 static const auto type = isl_ast_node_user;
1407
1408protected:
1409 inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
1410
1411public:
1412 inline /* implicit */ ast_node_user();
1413 inline /* implicit */ ast_node_user(const ast_node_user &obj);
1414 inline ast_node_user &operator=(ast_node_user obj);
1415 inline isl::ctx ctx() const;
1416
1417 inline isl::ast_expr expr() const;
1418 inline isl::ast_expr get_expr() const;
1419};
1420
1421// declarations for isl::basic_map
1424
1426 friend inline basic_map manage(__isl_take isl_basic_map *ptr);
1427 friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1428
1429protected:
1430 isl_basic_map *ptr = nullptr;
1431
1432 inline explicit basic_map(__isl_take isl_basic_map *ptr);
1433
1434public:
1435 inline /* implicit */ basic_map();
1436 inline /* implicit */ basic_map(const basic_map &obj);
1437 inline explicit basic_map(isl::ctx ctx, const std::string &str);
1438 inline basic_map &operator=(basic_map obj);
1439 inline ~basic_map();
1440 inline __isl_give isl_basic_map *copy() const &;
1441 inline __isl_give isl_basic_map *copy() && = delete;
1442 inline __isl_keep isl_basic_map *get() const;
1443 inline __isl_give isl_basic_map *release();
1444 inline bool is_null() const;
1445 inline isl::ctx ctx() const;
1446
1447 inline isl::map add_constraint(const isl::constraint &constraint) const;
1448 inline isl::map add_dims(isl::dim type, unsigned int n) const;
1449 inline isl::basic_map affine_hull() const;
1450 inline isl::map align_params(const isl::space &model) const;
1451 inline isl::basic_map apply_domain(isl::basic_map bmap2) const;
1452 inline isl::map apply_domain(const isl::map &map2) const;
1453 inline isl::union_map apply_domain(const isl::union_map &umap2) const;
1454 inline isl::basic_map apply_range(isl::basic_map bmap2) const;
1455 inline isl::map apply_range(const isl::map &map2) const;
1456 inline isl::union_map apply_range(const isl::union_map &umap2) const;
1457 inline isl::map as_map() const;
1458 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
1459 inline isl::pw_multi_aff as_pw_multi_aff() const;
1460 inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
1461 inline isl::basic_map_list basic_map_list() const;
1462 inline isl::set bind_domain(const isl::multi_id &tuple) const;
1463 inline isl::set bind_range(const isl::multi_id &tuple) const;
1464 inline boolean can_curry() const;
1465 inline isl::map coalesce() const;
1466 inline isl::map complement() const;
1467 inline isl::union_map compute_divs() const;
1468 inline isl::map curry() const;
1469 inline isl::basic_set deltas() const;
1470 inline isl::basic_map detect_equalities() const;
1471 inline class size dim(isl::dim type) const;
1472 inline isl::pw_aff dim_max(int pos) const;
1473 inline isl::pw_aff dim_min(int pos) const;
1474 inline isl::basic_set domain() const;
1475 inline isl::map domain_factor_domain() const;
1476 inline isl::map domain_factor_range() const;
1477 inline isl::map domain_map() const;
1478 inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1479 inline isl::map domain_product(const isl::map &map2) const;
1480 inline isl::union_map domain_product(const isl::union_map &umap2) const;
1481 inline class size domain_tuple_dim() const;
1482 inline isl::id domain_tuple_id() const;
1483 inline isl::map eq_at(const isl::multi_pw_aff &mpa) const;
1484 inline isl::union_map eq_at(const isl::multi_union_pw_aff &mupa) const;
1485 static inline isl::basic_map equal(isl::space space, unsigned int n_equal);
1486 inline isl::basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1487 inline boolean every_map(const std::function<boolean(isl::map)> &test) const;
1488 inline isl::map extract_map(const isl::space &space) const;
1489 inline isl::map factor_domain() const;
1490 inline isl::map factor_range() const;
1491 inline isl::basic_map fix_si(isl::dim type, unsigned int pos, int value) const;
1492 inline isl::basic_map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
1493 inline isl::basic_map fix_val(isl::dim type, unsigned int pos, long v) const;
1494 inline isl::union_map fixed_power(const isl::val &exp) const;
1495 inline isl::union_map fixed_power(long exp) const;
1496 inline isl::map flat_range_product(const isl::map &map2) const;
1497 inline isl::union_map flat_range_product(const isl::union_map &umap2) const;
1498 inline isl::basic_map flatten() const;
1499 inline isl::basic_map flatten_domain() const;
1500 inline isl::basic_map flatten_range() const;
1501 inline isl::map floordiv_val(const isl::val &d) const;
1502 inline isl::map floordiv_val(long d) const;
1503 inline stat foreach_basic_map(const std::function<stat(isl::basic_map)> &fn) const;
1504 inline stat foreach_map(const std::function<stat(isl::map)> &fn) const;
1505 static inline isl::basic_map from_aff(isl::aff aff);
1506 static inline isl::basic_map from_domain_and_range(isl::basic_set domain, isl::basic_set range);
1507 inline isl::basic_map gist(isl::basic_map context) const;
1508 inline isl::map gist(const isl::map &context) const;
1509 inline isl::union_map gist(const isl::union_map &context) const;
1510 inline isl::map gist_domain(const isl::set &context) const;
1511 inline isl::union_map gist_domain(const isl::union_set &uset) const;
1512 inline isl::map gist_params(const isl::set &context) const;
1513 inline isl::union_map gist_range(const isl::union_set &uset) const;
1514 inline boolean has_domain_tuple_id() const;
1515 inline boolean has_equal_space(const isl::map &map2) const;
1516 inline boolean has_range_tuple_id() const;
1517 inline boolean has_tuple_id(isl::dim type) const;
1518 inline boolean has_tuple_name(isl::dim type) const;
1519 inline isl::basic_map intersect(isl::basic_map bmap2) const;
1520 inline isl::map intersect(const isl::map &map2) const;
1521 inline isl::union_map intersect(const isl::union_map &umap2) const;
1522 inline isl::basic_map intersect_domain(isl::basic_set bset) const;
1523 inline isl::map intersect_domain(const isl::set &set) const;
1524 inline isl::union_map intersect_domain(const isl::space &space) const;
1525 inline isl::union_map intersect_domain(const isl::union_set &uset) const;
1526 inline isl::basic_map intersect_domain(const isl::point &bset) const;
1527 inline isl::map intersect_domain_factor_domain(const isl::map &factor) const;
1528 inline isl::union_map intersect_domain_factor_domain(const isl::union_map &factor) const;
1529 inline isl::map intersect_domain_factor_range(const isl::map &factor) const;
1530 inline isl::union_map intersect_domain_factor_range(const isl::union_map &factor) const;
1531 inline isl::map intersect_params(const isl::set &params) const;
1532 inline isl::basic_map intersect_range(isl::basic_set bset) const;
1533 inline isl::map intersect_range(const isl::set &set) const;
1534 inline isl::union_map intersect_range(const isl::space &space) const;
1535 inline isl::union_map intersect_range(const isl::union_set &uset) const;
1536 inline isl::basic_map intersect_range(const isl::point &bset) const;
1537 inline isl::map intersect_range_factor_domain(const isl::map &factor) const;
1538 inline isl::union_map intersect_range_factor_domain(const isl::union_map &factor) const;
1539 inline isl::map intersect_range_factor_range(const isl::map &factor) const;
1540 inline isl::union_map intersect_range_factor_range(const isl::union_map &factor) const;
1541 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1542 inline boolean is_bijective() const;
1543 inline boolean is_disjoint(const isl::map &map2) const;
1544 inline boolean is_disjoint(const isl::union_map &umap2) const;
1545 inline boolean is_empty() const;
1546 inline boolean is_equal(const isl::basic_map &bmap2) const;
1547 inline boolean is_equal(const isl::map &map2) const;
1548 inline boolean is_equal(const isl::union_map &umap2) const;
1549 inline boolean is_injective() const;
1550 inline boolean is_single_valued() const;
1551 inline boolean is_strict_subset(const isl::map &map2) const;
1552 inline boolean is_strict_subset(const isl::union_map &umap2) const;
1553 inline boolean is_subset(const isl::basic_map &bmap2) const;
1554 inline boolean is_subset(const isl::map &map2) const;
1555 inline boolean is_subset(const isl::union_map &umap2) const;
1556 inline boolean isa_map() const;
1557 inline isl::map lex_ge_at(const isl::multi_pw_aff &mpa) const;
1558 inline isl::map lex_gt_at(const isl::multi_pw_aff &mpa) const;
1559 inline isl::map lex_le_at(const isl::multi_pw_aff &mpa) const;
1560 inline isl::map lex_lt_at(const isl::multi_pw_aff &mpa) const;
1561 inline isl::map lexmax() const;
1562 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
1563 inline isl::map lexmin() const;
1564 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
1565 inline isl::map lower_bound(const isl::multi_pw_aff &lower) const;
1566 inline isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1567 inline isl::map_list map_list() const;
1568 inline isl::multi_pw_aff max_multi_pw_aff() const;
1569 inline isl::multi_pw_aff min_multi_pw_aff() const;
1570 inline isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1571 inline class size n_basic_map() const;
1572 inline isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1573 inline isl::set params() const;
1574 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1575 inline isl::basic_map polyhedral_hull() const;
1576 inline isl::map preimage_domain(const isl::multi_aff &ma) const;
1577 inline isl::map preimage_domain(const isl::multi_pw_aff &mpa) const;
1578 inline isl::map preimage_domain(const isl::pw_multi_aff &pma) const;
1579 inline isl::union_map preimage_domain(const isl::union_pw_multi_aff &upma) const;
1580 inline isl::map preimage_range(const isl::multi_aff &ma) const;
1581 inline isl::map preimage_range(const isl::pw_multi_aff &pma) const;
1582 inline isl::union_map preimage_range(const isl::union_pw_multi_aff &upma) const;
1583 inline isl::map product(const isl::map &map2) const;
1584 inline isl::union_map product(const isl::union_map &umap2) const;
1585 inline isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const;
1586 inline isl::map project_out_all_params() const;
1587 inline isl::set range() const;
1588 inline isl::map range_factor_domain() const;
1589 inline isl::map range_factor_range() const;
1590 inline isl::fixed_box range_lattice_tile() const;
1591 inline isl::map range_map() const;
1592 inline isl::map range_product(const isl::map &map2) const;
1593 inline isl::union_map range_product(const isl::union_map &umap2) const;
1594 inline isl::map range_reverse() const;
1595 inline isl::fixed_box range_simple_fixed_box_hull() const;
1596 inline class size range_tuple_dim() const;
1597 inline isl::id range_tuple_id() const;
1598 inline isl::basic_map reverse() const;
1599 inline isl::basic_map sample() const;
1600 inline isl::map set_domain_tuple(const isl::id &id) const;
1601 inline isl::map set_domain_tuple(const std::string &id) const;
1602 inline isl::map set_range_tuple(const isl::id &id) const;
1603 inline isl::map set_range_tuple(const std::string &id) const;
1604 inline isl::map set_tuple_id(isl::dim type, const isl::id &id) const;
1605 inline isl::map set_tuple_id(isl::dim type, const std::string &id) const;
1606 inline isl::space space() const;
1607 inline isl::map subtract(const isl::map &map2) const;
1608 inline isl::union_map subtract(const isl::union_map &umap2) const;
1609 inline isl::union_map subtract_domain(const isl::union_set &dom) const;
1610 inline isl::union_map subtract_range(const isl::union_set &dom) const;
1611 inline isl::map sum(const isl::map &map2) const;
1612 inline isl::basic_map_list to_list() const;
1613 inline isl::union_map to_union_map() const;
1614 inline isl::id tuple_id(isl::dim type) const;
1615 inline isl::map uncurry() const;
1616 inline isl::map unite(isl::basic_map bmap2) const;
1617 inline isl::map unite(const isl::map &map2) const;
1618 inline isl::union_map unite(const isl::union_map &umap2) const;
1619 static inline isl::basic_map universe(isl::space space);
1620 inline isl::basic_map unshifted_simple_hull() const;
1621 inline isl::map upper_bound(const isl::multi_pw_aff &upper) const;
1622 inline isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
1623 inline isl::set wrap() const;
1624 inline isl::map zip() const;
1625};
1626
1627// declarations for isl::basic_map_list
1628inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
1629inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
1630
1632 friend inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
1633 friend inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
1634
1635protected:
1636 isl_basic_map_list *ptr = nullptr;
1637
1638 inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
1639
1640public:
1641 inline /* implicit */ basic_map_list();
1642 inline /* implicit */ basic_map_list(const basic_map_list &obj);
1643 inline explicit basic_map_list(isl::ctx ctx, int n);
1644 inline explicit basic_map_list(isl::basic_map el);
1645 inline basic_map_list &operator=(basic_map_list obj);
1646 inline ~basic_map_list();
1647 inline __isl_give isl_basic_map_list *copy() const &;
1648 inline __isl_give isl_basic_map_list *copy() && = delete;
1649 inline __isl_keep isl_basic_map_list *get() const;
1650 inline __isl_give isl_basic_map_list *release();
1651 inline bool is_null() const;
1652 inline isl::ctx ctx() const;
1653
1654 inline isl::basic_map_list add(isl::basic_map el) const;
1655 inline isl::basic_map at(int index) const;
1656 inline isl::basic_map get_at(int index) const;
1657 inline isl::basic_map_list clear() const;
1658 inline isl::basic_map_list concat(isl::basic_map_list list2) const;
1659 inline isl::basic_map_list drop(unsigned int first, unsigned int n) const;
1660 inline stat foreach(const std::function<stat(isl::basic_map)> &fn) const;
1661 inline isl::basic_map_list insert(unsigned int pos, isl::basic_map el) const;
1662 inline class size size() const;
1663};
1664
1665// declarations for isl::basic_set
1666inline basic_set manage(__isl_take isl_basic_set *ptr);
1667inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1668
1670 friend inline basic_set manage(__isl_take isl_basic_set *ptr);
1671 friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1672
1673protected:
1674 isl_basic_set *ptr = nullptr;
1675
1676 inline explicit basic_set(__isl_take isl_basic_set *ptr);
1677
1678public:
1679 inline /* implicit */ basic_set();
1680 inline /* implicit */ basic_set(const basic_set &obj);
1681 inline /* implicit */ basic_set(isl::point pnt);
1682 inline explicit basic_set(isl::ctx ctx, const std::string &str);
1683 inline basic_set &operator=(basic_set obj);
1684 inline ~basic_set();
1685 inline __isl_give isl_basic_set *copy() const &;
1686 inline __isl_give isl_basic_set *copy() && = delete;
1687 inline __isl_keep isl_basic_set *get() const;
1688 inline __isl_give isl_basic_set *release();
1689 inline bool is_null() const;
1690 inline isl::ctx ctx() const;
1691
1692 inline isl::set add_constraint(const isl::constraint &constraint) const;
1693 inline isl::set add_dims(isl::dim type, unsigned int n) const;
1694 inline isl::basic_set affine_hull() const;
1695 inline isl::set align_params(const isl::space &model) const;
1696 inline isl::basic_set apply(isl::basic_map bmap) const;
1697 inline isl::set apply(const isl::map &map) const;
1698 inline isl::union_set apply(const isl::union_map &umap) const;
1699 inline isl::pw_multi_aff as_pw_multi_aff() const;
1700 inline isl::set as_set() const;
1701 inline isl::basic_set_list basic_set_list() const;
1702 inline isl::set bind(const isl::multi_id &tuple) const;
1703 inline isl::set coalesce() const;
1704 inline isl::set complement() const;
1705 inline isl::union_set compute_divs() const;
1706 inline boolean contains(const isl::space &space) const;
1707 inline isl::basic_set convex_hull() const;
1708 inline isl::basic_set detect_equalities() const;
1709 inline class size dim(isl::dim type) const;
1710 inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
1711 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
1712 inline isl::pw_aff dim_max(int pos) const;
1713 inline isl::val dim_max_val(int pos) const;
1714 inline isl::pw_aff dim_min(int pos) const;
1715 inline isl::val dim_min_val(int pos) const;
1716 inline std::string dim_name(isl::dim type, unsigned int pos) const;
1717 inline isl::aff div(int pos) const;
1718 inline isl::aff get_div(int pos) const;
1719 inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1720 inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
1721 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
1722 inline isl::set extract_set(const isl::space &space) const;
1723 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1724 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
1725 inline isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
1726 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
1727 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, long v) const;
1728 inline isl::basic_set flatten() const;
1729 inline stat foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const;
1730 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
1731 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
1732 inline isl::basic_set gist(isl::basic_set context) const;
1733 inline isl::set gist(const isl::set &context) const;
1734 inline isl::union_set gist(const isl::union_set &context) const;
1735 inline isl::basic_set gist(const isl::point &context) const;
1736 inline isl::set gist_params(const isl::set &context) const;
1737 inline boolean has_equal_space(const isl::set &set2) const;
1738 inline isl::map identity() const;
1739 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
1740 inline isl::pw_aff indicator_function() const;
1741 inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
1742 inline isl::map insert_domain(const isl::space &domain) const;
1743 inline isl::basic_set intersect(isl::basic_set bset2) const;
1744 inline isl::set intersect(const isl::set &set2) const;
1745 inline isl::union_set intersect(const isl::union_set &uset2) const;
1746 inline isl::basic_set intersect(const isl::point &bset2) const;
1747 inline isl::basic_set intersect_params(isl::basic_set bset2) const;
1748 inline isl::set intersect_params(const isl::set &params) const;
1749 inline isl::basic_set intersect_params(const isl::point &bset2) const;
1750 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1751 inline boolean involves_locals() const;
1752 inline boolean is_bounded() const;
1753 inline boolean is_disjoint(const isl::set &set2) const;
1754 inline boolean is_disjoint(const isl::union_set &uset2) const;
1755 inline boolean is_empty() const;
1756 inline boolean is_equal(const isl::basic_set &bset2) const;
1757 inline boolean is_equal(const isl::set &set2) const;
1758 inline boolean is_equal(const isl::union_set &uset2) const;
1759 inline boolean is_equal(const isl::point &bset2) const;
1760 inline boolean is_params() const;
1761 inline boolean is_singleton() const;
1762 inline boolean is_strict_subset(const isl::set &set2) const;
1763 inline boolean is_strict_subset(const isl::union_set &uset2) const;
1764 inline boolean is_subset(const isl::basic_set &bset2) const;
1765 inline boolean is_subset(const isl::set &set2) const;
1766 inline boolean is_subset(const isl::union_set &uset2) const;
1767 inline boolean is_subset(const isl::point &bset2) const;
1768 inline boolean is_wrapping() const;
1769 inline boolean isa_set() const;
1770 inline isl::set lexmax() const;
1771 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
1772 inline isl::set lexmin() const;
1773 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
1774 inline isl::set lower_bound(const isl::multi_pw_aff &lower) const;
1775 inline isl::set lower_bound(const isl::multi_val &lower) const;
1776 inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1777 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
1778 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, long value) const;
1779 inline isl::multi_pw_aff max_multi_pw_aff() const;
1780 inline isl::val max_val(const isl::aff &obj) const;
1781 inline isl::multi_pw_aff min_multi_pw_aff() const;
1782 inline isl::val min_val(const isl::aff &obj) const;
1783 inline class size n_basic_set() const;
1784 inline isl::basic_set params() const;
1785 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1786 inline isl::multi_val plain_multi_val_if_fixed() const;
1787 inline isl::basic_set polyhedral_hull() const;
1788 inline isl::set preimage(const isl::multi_aff &ma) const;
1789 inline isl::set preimage(const isl::multi_pw_aff &mpa) const;
1790 inline isl::set preimage(const isl::pw_multi_aff &pma) const;
1791 inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
1792 inline isl::set product(const isl::set &set2) const;
1793 inline isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
1794 inline isl::set project_out_all_params() const;
1795 inline isl::set project_out_param(const isl::id &id) const;
1796 inline isl::set project_out_param(const std::string &id) const;
1797 inline isl::set project_out_param(const isl::id_list &list) const;
1798 inline isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const;
1799 inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
1800 inline isl::set remove_divs() const;
1801 inline isl::set remove_redundancies() const;
1802 inline isl::set reset_tuple_id() const;
1803 inline isl::basic_set sample() const;
1804 inline isl::point sample_point() const;
1805 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const;
1806 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
1807 inline isl::set_list set_list() const;
1808 inline isl::set set_tuple_id(const isl::id &id) const;
1809 inline isl::set set_tuple_id(const std::string &id) const;
1810 inline isl::fixed_box simple_fixed_box_hull() const;
1811 inline isl::basic_set simple_hull() const;
1812 inline isl::space space() const;
1813 inline isl::space get_space() const;
1814 inline isl::val stride(int pos) const;
1815 inline isl::set subtract(const isl::set &set2) const;
1816 inline isl::union_set subtract(const isl::union_set &uset2) const;
1817 inline isl::basic_set_list to_list() const;
1818 inline isl::set to_set() const;
1819 inline isl::union_set to_union_set() const;
1820 inline isl::map translation() const;
1821 inline class size tuple_dim() const;
1822 inline isl::id tuple_id() const;
1823 inline std::string tuple_name() const;
1824 inline isl::set unbind_params(const isl::multi_id &tuple) const;
1825 inline isl::map unbind_params_insert_domain(const isl::multi_id &domain) const;
1826 inline isl::set unite(isl::basic_set bset2) const;
1827 inline isl::set unite(const isl::set &set2) const;
1828 inline isl::union_set unite(const isl::union_set &uset2) const;
1829 inline isl::set unite(const isl::point &bset2) const;
1830 static inline isl::basic_set universe(isl::space space);
1831 inline isl::basic_set unshifted_simple_hull() const;
1832 inline isl::map unwrap() const;
1833 inline isl::set upper_bound(const isl::multi_pw_aff &upper) const;
1834 inline isl::set upper_bound(const isl::multi_val &upper) const;
1835 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
1836 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, long value) const;
1837};
1838
1839// declarations for isl::basic_set_list
1840inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
1841inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
1842
1846
1847protected:
1848 isl_basic_set_list *ptr = nullptr;
1849
1850 inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
1851
1852public:
1853 inline /* implicit */ basic_set_list();
1854 inline /* implicit */ basic_set_list(const basic_set_list &obj);
1855 inline explicit basic_set_list(isl::ctx ctx, int n);
1856 inline explicit basic_set_list(isl::basic_set el);
1857 inline basic_set_list &operator=(basic_set_list obj);
1858 inline ~basic_set_list();
1859 inline __isl_give isl_basic_set_list *copy() const &;
1860 inline __isl_give isl_basic_set_list *copy() && = delete;
1861 inline __isl_keep isl_basic_set_list *get() const;
1862 inline __isl_give isl_basic_set_list *release();
1863 inline bool is_null() const;
1864 inline isl::ctx ctx() const;
1865
1866 inline isl::basic_set_list add(isl::basic_set el) const;
1867 inline isl::basic_set at(int index) const;
1868 inline isl::basic_set get_at(int index) const;
1869 inline isl::basic_set_list clear() const;
1870 inline isl::basic_set_list concat(isl::basic_set_list list2) const;
1871 inline isl::basic_set_list drop(unsigned int first, unsigned int n) const;
1872 inline stat foreach(const std::function<stat(isl::basic_set)> &fn) const;
1873 inline isl::basic_set_list insert(unsigned int pos, isl::basic_set el) const;
1874 inline class size size() const;
1875};
1876
1877// declarations for isl::constraint
1878inline constraint manage(__isl_take isl_constraint *ptr);
1879inline constraint manage_copy(__isl_keep isl_constraint *ptr);
1880
1882 friend inline constraint manage(__isl_take isl_constraint *ptr);
1883 friend inline constraint manage_copy(__isl_keep isl_constraint *ptr);
1884
1885protected:
1886 isl_constraint *ptr = nullptr;
1887
1888 inline explicit constraint(__isl_take isl_constraint *ptr);
1889
1890public:
1891 inline /* implicit */ constraint();
1892 inline /* implicit */ constraint(const constraint &obj);
1893 inline constraint &operator=(constraint obj);
1894 inline ~constraint();
1895 inline __isl_give isl_constraint *copy() const &;
1896 inline __isl_give isl_constraint *copy() && = delete;
1897 inline __isl_keep isl_constraint *get() const;
1898 inline __isl_give isl_constraint *release();
1899 inline bool is_null() const;
1900 inline isl::ctx ctx() const;
1901
1902 static inline isl::constraint alloc_equality(isl::local_space ls);
1903 static inline isl::constraint alloc_inequality(isl::local_space ls);
1904 inline isl::constraint set_coefficient_si(isl::dim type, int pos, int v) const;
1905 inline isl::constraint set_constant_si(int v) const;
1906 inline isl::constraint set_constant_val(isl::val v) const;
1907 inline isl::constraint set_constant_val(long v) const;
1908};
1909
1910// declarations for isl::fixed_box
1911inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1912inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1913
1915 friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1916 friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1917
1918protected:
1919 isl_fixed_box *ptr = nullptr;
1920
1921 inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1922
1923public:
1924 inline /* implicit */ fixed_box();
1925 inline /* implicit */ fixed_box(const fixed_box &obj);
1926 inline fixed_box &operator=(fixed_box obj);
1927 inline ~fixed_box();
1928 inline __isl_give isl_fixed_box *copy() const &;
1929 inline __isl_give isl_fixed_box *copy() && = delete;
1930 inline __isl_keep isl_fixed_box *get() const;
1931 inline __isl_give isl_fixed_box *release();
1932 inline bool is_null() const;
1933 inline isl::ctx ctx() const;
1934
1935 inline boolean is_valid() const;
1936 inline isl::multi_aff offset() const;
1937 inline isl::multi_aff get_offset() const;
1938 inline isl::multi_val size() const;
1939 inline isl::multi_val get_size() const;
1940 inline isl::space space() const;
1941 inline isl::space get_space() const;
1942};
1943
1944// declarations for isl::id
1945inline id manage(__isl_take isl_id *ptr);
1946inline id manage_copy(__isl_keep isl_id *ptr);
1947
1948class id {
1949 friend inline id manage(__isl_take isl_id *ptr);
1950 friend inline id manage_copy(__isl_keep isl_id *ptr);
1951
1952protected:
1953 isl_id *ptr = nullptr;
1954
1955 inline explicit id(__isl_take isl_id *ptr);
1956
1957public:
1958 inline /* implicit */ id();
1959 inline /* implicit */ id(const id &obj);
1960 inline explicit id(isl::ctx ctx, const std::string &str);
1961 inline id &operator=(id obj);
1962 inline ~id();
1963 inline __isl_give isl_id *copy() const &;
1964 inline __isl_give isl_id *copy() && = delete;
1965 inline __isl_keep isl_id *get() const;
1966 inline __isl_give isl_id *release();
1967 inline bool is_null() const;
1968 inline isl::ctx ctx() const;
1969
1970 static inline isl::id alloc(isl::ctx ctx, const std::string &name, void * user);
1971 inline std::string name() const;
1972 inline std::string get_name() const;
1973 inline isl::id_list to_list() const;
1974 inline void * user() const;
1975 inline void * get_user() const;
1976};
1977
1978// declarations for isl::id_list
1979inline id_list manage(__isl_take isl_id_list *ptr);
1980inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1981
1982class id_list {
1983 friend inline id_list manage(__isl_take isl_id_list *ptr);
1984 friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1985
1986protected:
1987 isl_id_list *ptr = nullptr;
1988
1989 inline explicit id_list(__isl_take isl_id_list *ptr);
1990
1991public:
1992 inline /* implicit */ id_list();
1993 inline /* implicit */ id_list(const id_list &obj);
1994 inline explicit id_list(isl::ctx ctx, int n);
1995 inline explicit id_list(isl::id el);
1996 inline explicit id_list(isl::ctx ctx, const std::string &str);
1997 inline id_list &operator=(id_list obj);
1998 inline ~id_list();
1999 inline __isl_give isl_id_list *copy() const &;
2000 inline __isl_give isl_id_list *copy() && = delete;
2001 inline __isl_keep isl_id_list *get() const;
2002 inline __isl_give isl_id_list *release();
2003 inline bool is_null() const;
2004 inline isl::ctx ctx() const;
2005
2006 inline isl::id_list add(isl::id el) const;
2007 inline isl::id_list add(const std::string &el) const;
2008 inline isl::id at(int index) const;
2009 inline isl::id get_at(int index) const;
2010 inline isl::id_list clear() const;
2011 inline isl::id_list concat(isl::id_list list2) const;
2012 inline isl::id_list drop(unsigned int first, unsigned int n) const;
2013 inline stat foreach(const std::function<stat(isl::id)> &fn) const;
2014 inline isl::id_list insert(unsigned int pos, isl::id el) const;
2015 inline isl::id_list insert(unsigned int pos, const std::string &el) const;
2016 inline class size size() const;
2017};
2018
2019// declarations for isl::id_to_ast_expr
2020inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
2021inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
2022
2024 friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
2025 friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
2026
2027protected:
2028 isl_id_to_ast_expr *ptr = nullptr;
2029
2030 inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
2031
2032public:
2033 inline /* implicit */ id_to_ast_expr();
2034 inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj);
2035 inline id_to_ast_expr &operator=(id_to_ast_expr obj);
2036 inline ~id_to_ast_expr();
2037 inline __isl_give isl_id_to_ast_expr *copy() const &;
2038 inline __isl_give isl_id_to_ast_expr *copy() && = delete;
2039 inline __isl_keep isl_id_to_ast_expr *get() const;
2040 inline __isl_give isl_id_to_ast_expr *release();
2041 inline bool is_null() const;
2042 inline isl::ctx ctx() const;
2043
2044 static inline isl::id_to_ast_expr alloc(isl::ctx ctx, int min_size);
2045 inline isl::id_to_ast_expr set(isl::id key, isl::ast_expr val) const;
2046 inline isl::id_to_ast_expr set(const std::string &key, const isl::ast_expr &val) const;
2047};
2048
2049// declarations for isl::local_space
2050inline local_space manage(__isl_take isl_local_space *ptr);
2051inline local_space manage_copy(__isl_keep isl_local_space *ptr);
2052
2054 friend inline local_space manage(__isl_take isl_local_space *ptr);
2056
2057protected:
2058 isl_local_space *ptr = nullptr;
2059
2060 inline explicit local_space(__isl_take isl_local_space *ptr);
2061
2062public:
2063 inline /* implicit */ local_space();
2064 inline /* implicit */ local_space(const local_space &obj);
2065 inline explicit local_space(isl::space space);
2066 inline local_space &operator=(local_space obj);
2067 inline ~local_space();
2068 inline __isl_give isl_local_space *copy() const &;
2069 inline __isl_give isl_local_space *copy() && = delete;
2070 inline __isl_keep isl_local_space *get() const;
2071 inline __isl_give isl_local_space *release();
2072 inline bool is_null() const;
2073 inline isl::ctx ctx() const;
2074
2075};
2076
2077// declarations for isl::map
2078inline map manage(__isl_take isl_map *ptr);
2079inline map manage_copy(__isl_keep isl_map *ptr);
2080
2081class map {
2082 friend inline map manage(__isl_take isl_map *ptr);
2083 friend inline map manage_copy(__isl_keep isl_map *ptr);
2084
2085protected:
2086 isl_map *ptr = nullptr;
2087
2088 inline explicit map(__isl_take isl_map *ptr);
2089
2090public:
2091 inline /* implicit */ map();
2092 inline /* implicit */ map(const map &obj);
2093 inline /* implicit */ map(isl::basic_map bmap);
2094 inline explicit map(isl::ctx ctx, const std::string &str);
2095 inline map &operator=(map obj);
2096 inline ~map();
2097 inline __isl_give isl_map *copy() const &;
2098 inline __isl_give isl_map *copy() && = delete;
2099 inline __isl_keep isl_map *get() const;
2100 inline __isl_give isl_map *release();
2101 inline bool is_null() const;
2102 inline isl::ctx ctx() const;
2103
2105 inline isl::map add_dims(isl::dim type, unsigned int n) const;
2106 inline isl::basic_map affine_hull() const;
2107 inline isl::map align_params(isl::space model) const;
2108 inline isl::map apply_domain(isl::map map2) const;
2109 inline isl::union_map apply_domain(const isl::union_map &umap2) const;
2110 inline isl::map apply_domain(const isl::basic_map &map2) const;
2111 inline isl::map apply_range(isl::map map2) const;
2112 inline isl::union_map apply_range(const isl::union_map &umap2) const;
2113 inline isl::map apply_range(const isl::basic_map &map2) const;
2114 inline isl::map as_map() const;
2115 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
2116 inline isl::pw_multi_aff as_pw_multi_aff() const;
2117 inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
2118 inline isl::basic_map_list basic_map_list() const;
2119 inline isl::basic_map_list get_basic_map_list() const;
2120 inline isl::set bind_domain(isl::multi_id tuple) const;
2121 inline isl::set bind_range(isl::multi_id tuple) const;
2122 inline boolean can_curry() const;
2123 inline isl::map coalesce() const;
2124 inline isl::map complement() const;
2125 inline isl::union_map compute_divs() const;
2126 inline isl::map curry() const;
2127 inline isl::set deltas() const;
2128 inline isl::map detect_equalities() const;
2129 inline class size dim(isl::dim type) const;
2130 inline isl::pw_aff dim_max(int pos) const;
2131 inline isl::pw_aff dim_min(int pos) const;
2132 inline isl::set domain() const;
2133 inline isl::map domain_factor_domain() const;
2134 inline isl::map domain_factor_range() const;
2135 inline isl::map domain_map() const;
2136 inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
2137 inline isl::map domain_product(isl::map map2) const;
2138 inline isl::union_map domain_product(const isl::union_map &umap2) const;
2139 inline isl::map domain_product(const isl::basic_map &map2) const;
2140 inline class size domain_tuple_dim() const;
2141 inline isl::id domain_tuple_id() const;
2142 inline isl::id get_domain_tuple_id() const;
2143 static inline isl::map empty(isl::space space);
2144 inline isl::map eq_at(isl::multi_pw_aff mpa) const;
2145 inline isl::union_map eq_at(const isl::multi_union_pw_aff &mupa) const;
2146 inline isl::map eq_at(const isl::aff &mpa) const;
2147 inline isl::map eq_at(const isl::multi_aff &mpa) const;
2148 inline isl::map eq_at(const isl::pw_aff &mpa) const;
2149 inline isl::map eq_at(const isl::pw_multi_aff &mpa) const;
2150 inline isl::map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2151 inline boolean every_map(const std::function<boolean(isl::map)> &test) const;
2152 inline isl::map extract_map(const isl::space &space) const;
2153 inline isl::map factor_domain() const;
2154 inline isl::map factor_range() const;
2155 inline isl::map fix_si(isl::dim type, unsigned int pos, int value) const;
2156 inline isl::union_map fixed_power(const isl::val &exp) const;
2157 inline isl::union_map fixed_power(long exp) const;
2158 inline isl::map flat_range_product(isl::map map2) const;
2159 inline isl::union_map flat_range_product(const isl::union_map &umap2) const;
2160 inline isl::map flat_range_product(const isl::basic_map &map2) const;
2161 inline isl::map flatten() const;
2162 inline isl::map flatten_domain() const;
2163 inline isl::map flatten_range() const;
2164 inline isl::map floordiv_val(isl::val d) const;
2165 inline isl::map floordiv_val(long d) const;
2166 inline stat foreach_basic_map(const std::function<stat(isl::basic_map)> &fn) const;
2167 inline stat foreach_map(const std::function<stat(isl::map)> &fn) const;
2168 static inline isl::map from_aff(isl::aff aff);
2169 static inline isl::map from_domain(isl::set set);
2170 static inline isl::map from_domain_and_range(isl::set domain, isl::set range);
2171 static inline isl::map from_multi_aff(isl::multi_aff maff);
2172 static inline isl::map from_pw_aff(isl::pw_aff pwaff);
2173 static inline isl::map from_range(isl::set set);
2174 static inline isl::map from_union_map(isl::union_map umap);
2175 inline isl::map gist(isl::map context) const;
2176 inline isl::union_map gist(const isl::union_map &context) const;
2177 inline isl::map gist(const isl::basic_map &context) const;
2178 inline isl::map gist_domain(isl::set context) const;
2179 inline isl::union_map gist_domain(const isl::union_set &uset) const;
2180 inline isl::map gist_domain(const isl::basic_set &context) const;
2181 inline isl::map gist_domain(const isl::point &context) const;
2182 inline isl::map gist_params(isl::set context) const;
2183 inline isl::union_map gist_range(const isl::union_set &uset) const;
2184 inline boolean has_domain_tuple_id() const;
2185 inline boolean has_equal_space(const isl::map &map2) const;
2186 inline boolean has_range_tuple_id() const;
2187 inline boolean has_tuple_id(isl::dim type) const;
2188 inline boolean has_tuple_name(isl::dim type) const;
2189 static inline isl::map identity(isl::space space);
2190 inline isl::map intersect(isl::map map2) const;
2191 inline isl::union_map intersect(const isl::union_map &umap2) const;
2192 inline isl::map intersect(const isl::basic_map &map2) const;
2193 inline isl::map intersect_domain(isl::set set) const;
2194 inline isl::union_map intersect_domain(const isl::space &space) const;
2195 inline isl::union_map intersect_domain(const isl::union_set &uset) const;
2196 inline isl::map intersect_domain(const isl::basic_set &set) const;
2197 inline isl::map intersect_domain(const isl::point &set) const;
2198 inline isl::map intersect_domain_factor_domain(isl::map factor) const;
2199 inline isl::union_map intersect_domain_factor_domain(const isl::union_map &factor) const;
2200 inline isl::map intersect_domain_factor_domain(const isl::basic_map &factor) const;
2201 inline isl::map intersect_domain_factor_range(isl::map factor) const;
2202 inline isl::union_map intersect_domain_factor_range(const isl::union_map &factor) const;
2203 inline isl::map intersect_domain_factor_range(const isl::basic_map &factor) const;
2204 inline isl::map intersect_params(isl::set params) const;
2205 inline isl::map intersect_range(isl::set set) const;
2206 inline isl::union_map intersect_range(const isl::space &space) const;
2207 inline isl::union_map intersect_range(const isl::union_set &uset) const;
2208 inline isl::map intersect_range(const isl::basic_set &set) const;
2209 inline isl::map intersect_range(const isl::point &set) const;
2210 inline isl::map intersect_range_factor_domain(isl::map factor) const;
2211 inline isl::union_map intersect_range_factor_domain(const isl::union_map &factor) const;
2212 inline isl::map intersect_range_factor_domain(const isl::basic_map &factor) const;
2213 inline isl::map intersect_range_factor_range(isl::map factor) const;
2214 inline isl::union_map intersect_range_factor_range(const isl::union_map &factor) const;
2215 inline isl::map intersect_range_factor_range(const isl::basic_map &factor) const;
2216 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2217 inline boolean is_bijective() const;
2218 inline boolean is_disjoint(const isl::map &map2) const;
2219 inline boolean is_disjoint(const isl::union_map &umap2) const;
2220 inline boolean is_disjoint(const isl::basic_map &map2) const;
2221 inline boolean is_empty() const;
2222 inline boolean is_equal(const isl::map &map2) const;
2223 inline boolean is_equal(const isl::union_map &umap2) const;
2224 inline boolean is_equal(const isl::basic_map &map2) const;
2225 inline boolean is_injective() const;
2226 inline boolean is_single_valued() const;
2227 inline boolean is_strict_subset(const isl::map &map2) const;
2228 inline boolean is_strict_subset(const isl::union_map &umap2) const;
2229 inline boolean is_strict_subset(const isl::basic_map &map2) const;
2230 inline boolean is_subset(const isl::map &map2) const;
2231 inline boolean is_subset(const isl::union_map &umap2) const;
2232 inline boolean is_subset(const isl::basic_map &map2) const;
2233 inline boolean isa_map() const;
2234 static inline isl::map lex_ge(isl::space set_space);
2235 inline isl::map lex_ge_at(isl::multi_pw_aff mpa) const;
2236 static inline isl::map lex_gt(isl::space set_space);
2237 inline isl::map lex_gt_at(isl::multi_pw_aff mpa) const;
2238 static inline isl::map lex_le(isl::space set_space);
2239 inline isl::map lex_le_at(isl::multi_pw_aff mpa) const;
2240 static inline isl::map lex_lt(isl::space set_space);
2241 inline isl::map lex_lt_at(isl::multi_pw_aff mpa) const;
2242 inline isl::map lexmax() const;
2243 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
2244 inline isl::map lexmin() const;
2245 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
2246 inline isl::map lower_bound(isl::multi_pw_aff lower) const;
2247 inline isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2248 inline isl::map_list map_list() const;
2249 inline isl::multi_pw_aff max_multi_pw_aff() const;
2250 inline isl::multi_pw_aff min_multi_pw_aff() const;
2251 inline isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2252 inline class size n_basic_map() const;
2253 inline isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2254 inline isl::set params() const;
2255 inline isl::basic_map polyhedral_hull() const;
2256 inline isl::map preimage_domain(isl::multi_aff ma) const;
2257 inline isl::map preimage_domain(isl::multi_pw_aff mpa) const;
2258 inline isl::map preimage_domain(isl::pw_multi_aff pma) const;
2259 inline isl::union_map preimage_domain(const isl::union_pw_multi_aff &upma) const;
2260 inline isl::map preimage_range(isl::multi_aff ma) const;
2261 inline isl::map preimage_range(isl::pw_multi_aff pma) const;
2262 inline isl::union_map preimage_range(const isl::union_pw_multi_aff &upma) const;
2263 inline isl::map product(isl::map map2) const;
2264 inline isl::union_map product(const isl::union_map &umap2) const;
2265 inline isl::map product(const isl::basic_map &map2) const;
2266 inline isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const;
2267 inline isl::map project_out_all_params() const;
2268 inline isl::set range() const;
2269 inline isl::map range_factor_domain() const;
2270 inline isl::map range_factor_range() const;
2271 inline isl::fixed_box range_lattice_tile() const;
2272 inline isl::fixed_box get_range_lattice_tile() const;
2273 inline isl::map range_map() const;
2274 inline isl::map range_product(isl::map map2) const;
2275 inline isl::union_map range_product(const isl::union_map &umap2) const;
2276 inline isl::map range_product(const isl::basic_map &map2) const;
2277 inline isl::map range_reverse() const;
2278 inline isl::fixed_box range_simple_fixed_box_hull() const;
2279 inline isl::fixed_box get_range_simple_fixed_box_hull() const;
2280 inline class size range_tuple_dim() const;
2281 inline isl::id range_tuple_id() const;
2282 inline isl::id get_range_tuple_id() const;
2283 inline isl::map reverse() const;
2284 inline isl::basic_map sample() const;
2285 inline isl::map set_domain_tuple(isl::id id) const;
2286 inline isl::map set_domain_tuple(const std::string &id) const;
2287 inline isl::map set_range_tuple(isl::id id) const;
2288 inline isl::map set_range_tuple(const std::string &id) const;
2289 inline isl::map set_tuple_id(isl::dim type, isl::id id) const;
2290 inline isl::map set_tuple_id(isl::dim type, const std::string &id) const;
2291 inline isl::space space() const;
2292 inline isl::space get_space() const;
2293 inline isl::map subtract(isl::map map2) const;
2294 inline isl::union_map subtract(const isl::union_map &umap2) const;
2295 inline isl::map subtract(const isl::basic_map &map2) const;
2296 inline isl::union_map subtract_domain(const isl::union_set &dom) const;
2297 inline isl::union_map subtract_range(const isl::union_set &dom) const;
2298 inline isl::map sum(isl::map map2) const;
2299 inline isl::map_list to_list() const;
2300 inline isl::union_map to_union_map() const;
2301 inline isl::id tuple_id(isl::dim type) const;
2302 inline isl::id get_tuple_id(isl::dim type) const;
2303 inline isl::map uncurry() const;
2304 inline isl::map unite(isl::map map2) const;
2305 inline isl::union_map unite(const isl::union_map &umap2) const;
2306 inline isl::map unite(const isl::basic_map &map2) const;
2307 static inline isl::map universe(isl::space space);
2308 inline isl::basic_map unshifted_simple_hull() const;
2309 inline isl::map upper_bound(isl::multi_pw_aff upper) const;
2310 inline isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
2311 inline isl::set wrap() const;
2312 inline isl::map zip() const;
2313};
2314
2315// declarations for isl::map_list
2316inline map_list manage(__isl_take isl_map_list *ptr);
2317inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2318
2320 friend inline map_list manage(__isl_take isl_map_list *ptr);
2321 friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2322
2323protected:
2324 isl_map_list *ptr = nullptr;
2325
2326 inline explicit map_list(__isl_take isl_map_list *ptr);
2327
2328public:
2329 inline /* implicit */ map_list();
2330 inline /* implicit */ map_list(const map_list &obj);
2331 inline explicit map_list(isl::ctx ctx, int n);
2332 inline explicit map_list(isl::map el);
2333 inline explicit map_list(isl::ctx ctx, const std::string &str);
2334 inline map_list &operator=(map_list obj);
2335 inline ~map_list();
2336 inline __isl_give isl_map_list *copy() const &;
2337 inline __isl_give isl_map_list *copy() && = delete;
2338 inline __isl_keep isl_map_list *get() const;
2339 inline __isl_give isl_map_list *release();
2340 inline bool is_null() const;
2341 inline isl::ctx ctx() const;
2342
2343 inline isl::map_list add(isl::map el) const;
2344 inline isl::map at(int index) const;
2345 inline isl::map get_at(int index) const;
2346 inline isl::map_list clear() const;
2347 inline isl::map_list concat(isl::map_list list2) const;
2348 inline isl::map_list drop(unsigned int first, unsigned int n) const;
2349 inline stat foreach(const std::function<stat(isl::map)> &fn) const;
2350 inline isl::map_list insert(unsigned int pos, isl::map el) const;
2351 inline class size size() const;
2352};
2353
2354// declarations for isl::multi_aff
2355inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2356inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2357
2359 friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2360 friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2361
2362protected:
2363 isl_multi_aff *ptr = nullptr;
2364
2365 inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
2366
2367public:
2368 inline /* implicit */ multi_aff();
2369 inline /* implicit */ multi_aff(const multi_aff &obj);
2370 inline /* implicit */ multi_aff(isl::aff aff);
2371 inline explicit multi_aff(isl::space space, isl::aff_list list);
2372 inline explicit multi_aff(isl::ctx ctx, const std::string &str);
2373 inline multi_aff &operator=(multi_aff obj);
2374 inline ~multi_aff();
2375 inline __isl_give isl_multi_aff *copy() const &;
2376 inline __isl_give isl_multi_aff *copy() && = delete;
2377 inline __isl_keep isl_multi_aff *get() const;
2378 inline __isl_give isl_multi_aff *release();
2379 inline bool is_null() const;
2380 inline isl::ctx ctx() const;
2381
2382 inline isl::multi_aff add(isl::multi_aff multi2) const;
2383 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
2384 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
2385 inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
2386 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
2387 inline isl::multi_aff add(const isl::aff &multi2) const;
2388 inline isl::multi_aff add_constant(isl::multi_val mv) const;
2389 inline isl::multi_aff add_constant(isl::val v) const;
2390 inline isl::multi_aff add_constant(long v) const;
2391 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
2392 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
2393 inline isl::map as_map() const;
2394 inline isl::multi_aff as_multi_aff() const;
2395 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
2396 inline isl::pw_multi_aff as_pw_multi_aff() const;
2397 inline isl::set as_set() const;
2398 inline isl::union_map as_union_map() const;
2399 inline isl::aff at(int pos) const;
2400 inline isl::aff get_at(int pos) const;
2401 inline isl::basic_set bind(isl::multi_id tuple) const;
2402 inline isl::multi_aff bind_domain(isl::multi_id tuple) const;
2404 inline isl::pw_multi_aff coalesce() const;
2405 inline isl::multi_val constant_multi_val() const;
2406 inline isl::multi_val get_constant_multi_val() const;
2407 inline class size dim(isl::dim type) const;
2408 inline isl::set domain() const;
2409 static inline isl::multi_aff domain_map(isl::space space);
2410 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2411 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
2412 inline isl::multi_aff flat_range_product(isl::multi_aff multi2) const;
2413 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
2414 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
2415 inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
2416 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
2417 inline isl::multi_aff flat_range_product(const isl::aff &multi2) const;
2418 inline isl::multi_aff floor() const;
2419 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
2420 inline isl::multi_aff gist(isl::set context) const;
2421 inline isl::union_pw_multi_aff gist(const isl::union_set &context) const;
2422 inline isl::multi_aff gist(const isl::basic_set &context) const;
2423 inline isl::multi_aff gist(const isl::point &context) const;
2424 inline boolean has_range_tuple_id() const;
2425 static inline isl::multi_aff identity(isl::space space);
2426 inline isl::multi_aff identity() const;
2427 static inline isl::multi_aff identity_on_domain(isl::space space);
2428 inline isl::multi_aff insert_domain(isl::space domain) const;
2429 inline isl::pw_multi_aff intersect_domain(const isl::set &set) const;
2430 inline isl::union_pw_multi_aff intersect_domain(const isl::space &space) const;
2431 inline isl::union_pw_multi_aff intersect_domain(const isl::union_set &uset) const;
2432 inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
2433 inline isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
2434 inline isl::pw_multi_aff intersect_params(const isl::set &set) const;
2435 inline boolean involves_locals() const;
2436 inline boolean involves_nan() const;
2437 inline boolean involves_param(const isl::id &id) const;
2438 inline boolean involves_param(const std::string &id) const;
2439 inline boolean involves_param(const isl::id_list &list) const;
2440 inline boolean isa_multi_aff() const;
2441 inline boolean isa_pw_multi_aff() const;
2442 inline isl::aff_list list() const;
2443 inline isl::aff_list get_list() const;
2444 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
2445 inline isl::multi_val max_multi_val() const;
2446 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
2447 inline isl::multi_val min_multi_val() const;
2448 static inline isl::multi_aff multi_val_on_domain(isl::space space, isl::multi_val mv);
2449 inline class size n_piece() const;
2450 inline isl::multi_aff neg() const;
2451 inline boolean plain_is_empty() const;
2452 inline boolean plain_is_equal(const isl::multi_aff &multi2) const;
2453 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
2454 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
2455 inline boolean plain_is_equal(const isl::aff &multi2) const;
2456 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
2457 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
2458 inline isl::multi_aff product(isl::multi_aff multi2) const;
2459 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
2460 inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
2461 inline isl::multi_aff product(const isl::aff &multi2) const;
2462 inline isl::multi_aff pullback(isl::multi_aff ma2) const;
2463 inline isl::multi_pw_aff pullback(const isl::multi_pw_aff &mpa2) const;
2464 inline isl::pw_multi_aff pullback(const isl::pw_multi_aff &pma2) const;
2465 inline isl::union_pw_multi_aff pullback(const isl::union_pw_multi_aff &upma2) const;
2466 inline isl::multi_aff pullback(const isl::aff &ma2) const;
2467 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
2468 inline isl::pw_multi_aff range_factor_domain() const;
2469 inline isl::pw_multi_aff range_factor_range() const;
2470 static inline isl::multi_aff range_map(isl::space space);
2471 inline isl::multi_aff range_product(isl::multi_aff multi2) const;
2472 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
2473 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
2474 inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
2475 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
2476 inline isl::multi_aff range_product(const isl::aff &multi2) const;
2477 inline isl::id range_tuple_id() const;
2478 inline isl::id get_range_tuple_id() const;
2479 inline isl::multi_aff reset_range_tuple_id() const;
2480 inline isl::multi_aff reset_tuple_id(isl::dim type) const;
2481 inline isl::multi_aff scale(isl::multi_val mv) const;
2482 inline isl::multi_aff scale(isl::val v) const;
2483 inline isl::multi_aff scale(long v) const;
2484 inline isl::multi_aff scale_down(isl::multi_val mv) const;
2485 inline isl::multi_aff scale_down(isl::val v) const;
2486 inline isl::multi_aff scale_down(long v) const;
2487 inline isl::multi_aff set_aff(int pos, isl::aff el) const;
2488 inline isl::multi_aff set_at(int pos, isl::aff el) const;
2489 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
2490 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
2491 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
2492 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const;
2493 inline isl::multi_aff set_range_tuple(isl::id id) const;
2494 inline isl::multi_aff set_range_tuple(const std::string &id) const;
2495 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
2496 inline class size size() const;
2497 inline isl::space space() const;
2498 inline isl::space get_space() const;
2499 inline isl::multi_aff sub(isl::multi_aff multi2) const;
2500 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
2501 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
2502 inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
2503 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
2504 inline isl::multi_aff sub(const isl::aff &multi2) const;
2505 inline isl::pw_multi_aff subtract_domain(const isl::set &set) const;
2506 inline isl::union_pw_multi_aff subtract_domain(const isl::space &space) const;
2507 inline isl::union_pw_multi_aff subtract_domain(const isl::union_set &uset) const;
2508 inline isl::pw_multi_aff_list to_list() const;
2509 inline isl::multi_pw_aff to_multi_pw_aff() const;
2510 inline isl::multi_union_pw_aff to_multi_union_pw_aff() const;
2511 inline isl::pw_multi_aff to_pw_multi_aff() const;
2512 inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
2513 inline isl::id tuple_id(isl::dim type) const;
2515 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
2516 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
2517 inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
2518 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
2519 static inline isl::multi_aff zero(isl::space space);
2520};
2521
2522// declarations for isl::multi_id
2523inline multi_id manage(__isl_take isl_multi_id *ptr);
2524inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2525
2527 friend inline multi_id manage(__isl_take isl_multi_id *ptr);
2528 friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2529
2530protected:
2531 isl_multi_id *ptr = nullptr;
2532
2533 inline explicit multi_id(__isl_take isl_multi_id *ptr);
2534
2535public:
2536 inline /* implicit */ multi_id();
2537 inline /* implicit */ multi_id(const multi_id &obj);
2538 inline explicit multi_id(isl::space space, isl::id_list list);
2539 inline explicit multi_id(isl::ctx ctx, const std::string &str);
2540 inline multi_id &operator=(multi_id obj);
2541 inline ~multi_id();
2542 inline __isl_give isl_multi_id *copy() const &;
2543 inline __isl_give isl_multi_id *copy() && = delete;
2544 inline __isl_keep isl_multi_id *get() const;
2545 inline __isl_give isl_multi_id *release();
2546 inline bool is_null() const;
2547 inline isl::ctx ctx() const;
2548
2549 inline isl::id at(int pos) const;
2550 inline isl::id get_at(int pos) const;
2551 inline isl::multi_id flat_range_product(isl::multi_id multi2) const;
2552 inline isl::id_list list() const;
2553 inline isl::id_list get_list() const;
2554 inline boolean plain_is_equal(const isl::multi_id &multi2) const;
2555 inline isl::multi_id range_product(isl::multi_id multi2) const;
2556 inline isl::multi_id set_at(int pos, isl::id el) const;
2557 inline isl::multi_id set_at(int pos, const std::string &el) const;
2558 inline isl::multi_id set_id(int pos, isl::id el) const;
2559 inline isl::multi_id set_id(int pos, const std::string &el) const;
2560 inline class size size() const;
2561 inline isl::space space() const;
2562 inline isl::space get_space() const;
2563};
2564
2565// declarations for isl::multi_pw_aff
2566inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2567inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2568
2570 friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2572
2573protected:
2574 isl_multi_pw_aff *ptr = nullptr;
2575
2576 inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
2577
2578public:
2579 inline /* implicit */ multi_pw_aff();
2580 inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
2581 inline /* implicit */ multi_pw_aff(isl::aff aff);
2582 inline /* implicit */ multi_pw_aff(isl::multi_aff ma);
2583 inline /* implicit */ multi_pw_aff(isl::pw_aff pa);
2584 inline explicit multi_pw_aff(isl::space space, isl::pw_aff_list list);
2585 inline /* implicit */ multi_pw_aff(isl::pw_multi_aff pma);
2586 inline explicit multi_pw_aff(isl::ctx ctx, const std::string &str);
2587 inline multi_pw_aff &operator=(multi_pw_aff obj);
2588 inline ~multi_pw_aff();
2589 inline __isl_give isl_multi_pw_aff *copy() const &;
2590 inline __isl_give isl_multi_pw_aff *copy() && = delete;
2591 inline __isl_keep isl_multi_pw_aff *get() const;
2592 inline __isl_give isl_multi_pw_aff *release();
2593 inline bool is_null() const;
2594 inline isl::ctx ctx() const;
2595
2596 inline isl::multi_pw_aff add(isl::multi_pw_aff multi2) const;
2597 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
2598 inline isl::multi_pw_aff add(const isl::aff &multi2) const;
2599 inline isl::multi_pw_aff add(const isl::multi_aff &multi2) const;
2600 inline isl::multi_pw_aff add(const isl::pw_aff &multi2) const;
2601 inline isl::multi_pw_aff add(const isl::pw_multi_aff &multi2) const;
2602 inline isl::multi_pw_aff add_constant(isl::multi_val mv) const;
2603 inline isl::multi_pw_aff add_constant(isl::val v) const;
2604 inline isl::multi_pw_aff add_constant(long v) const;
2605 inline isl::map as_map() const;
2606 inline isl::multi_aff as_multi_aff() const;
2607 inline isl::set as_set() const;
2608 inline isl::pw_aff at(int pos) const;
2609 inline isl::pw_aff get_at(int pos) const;
2610 inline isl::set bind(isl::multi_id tuple) const;
2611 inline isl::multi_pw_aff bind_domain(isl::multi_id tuple) const;
2613 inline isl::multi_pw_aff coalesce() const;
2614 inline class size dim(isl::dim type) const;
2615 inline isl::set domain() const;
2616 inline isl::multi_pw_aff flat_range_product(isl::multi_pw_aff multi2) const;
2617 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
2618 inline isl::multi_pw_aff flat_range_product(const isl::aff &multi2) const;
2619 inline isl::multi_pw_aff flat_range_product(const isl::multi_aff &multi2) const;
2620 inline isl::multi_pw_aff flat_range_product(const isl::pw_aff &multi2) const;
2621 inline isl::multi_pw_aff flat_range_product(const isl::pw_multi_aff &multi2) const;
2622 inline isl::multi_pw_aff gist(isl::set set) const;
2623 inline isl::multi_union_pw_aff gist(const isl::union_set &context) const;
2624 inline isl::multi_pw_aff gist(const isl::basic_set &set) const;
2625 inline isl::multi_pw_aff gist(const isl::point &set) const;
2626 inline boolean has_range_tuple_id() const;
2627 static inline isl::multi_pw_aff identity(isl::space space);
2628 inline isl::multi_pw_aff identity() const;
2629 static inline isl::multi_pw_aff identity_on_domain(isl::space space);
2630 inline isl::multi_pw_aff insert_domain(isl::space domain) const;
2631 inline isl::multi_pw_aff intersect_domain(isl::set domain) const;
2632 inline isl::multi_union_pw_aff intersect_domain(const isl::union_set &uset) const;
2633 inline isl::multi_pw_aff intersect_domain(const isl::basic_set &domain) const;
2634 inline isl::multi_pw_aff intersect_domain(const isl::point &domain) const;
2635 inline isl::multi_pw_aff intersect_params(isl::set set) const;
2636 inline boolean involves_nan() const;
2637 inline boolean involves_param(const isl::id &id) const;
2638 inline boolean involves_param(const std::string &id) const;
2639 inline boolean involves_param(const isl::id_list &list) const;
2640 inline boolean isa_multi_aff() const;
2641 inline isl::pw_aff_list list() const;
2642 inline isl::pw_aff_list get_list() const;
2643 inline isl::multi_pw_aff max(isl::multi_pw_aff multi2) const;
2644 inline isl::multi_val max_multi_val() const;
2645 inline isl::multi_pw_aff min(isl::multi_pw_aff multi2) const;
2646 inline isl::multi_val min_multi_val() const;
2647 inline isl::multi_pw_aff neg() const;
2648 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
2649 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
2650 inline boolean plain_is_equal(const isl::aff &multi2) const;
2651 inline boolean plain_is_equal(const isl::multi_aff &multi2) const;
2652 inline boolean plain_is_equal(const isl::pw_aff &multi2) const;
2653 inline boolean plain_is_equal(const isl::pw_multi_aff &multi2) const;
2654 inline isl::multi_pw_aff product(isl::multi_pw_aff multi2) const;
2655 inline isl::multi_pw_aff pullback(isl::multi_aff ma) const;
2656 inline isl::multi_pw_aff pullback(isl::multi_pw_aff mpa2) const;
2657 inline isl::multi_pw_aff pullback(isl::pw_multi_aff pma) const;
2658 inline isl::multi_union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
2659 inline isl::multi_pw_aff range_product(isl::multi_pw_aff multi2) const;
2660 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
2661 inline isl::multi_pw_aff range_product(const isl::aff &multi2) const;
2662 inline isl::multi_pw_aff range_product(const isl::multi_aff &multi2) const;
2663 inline isl::multi_pw_aff range_product(const isl::pw_aff &multi2) const;
2664 inline isl::multi_pw_aff range_product(const isl::pw_multi_aff &multi2) const;
2665 inline isl::id range_tuple_id() const;
2666 inline isl::id get_range_tuple_id() const;
2667 inline isl::multi_pw_aff reset_range_tuple_id() const;
2668 inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
2669 inline isl::multi_pw_aff scale(isl::multi_val mv) const;
2670 inline isl::multi_pw_aff scale(isl::val v) const;
2671 inline isl::multi_pw_aff scale(long v) const;
2672 inline isl::multi_pw_aff scale_down(isl::multi_val mv) const;
2673 inline isl::multi_pw_aff scale_down(isl::val v) const;
2674 inline isl::multi_pw_aff scale_down(long v) const;
2675 inline isl::multi_pw_aff set_at(int pos, isl::pw_aff el) const;
2676 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
2677 inline isl::multi_pw_aff set_pw_aff(int pos, isl::pw_aff el) const;
2678 inline isl::multi_pw_aff set_range_tuple(isl::id id) const;
2679 inline isl::multi_pw_aff set_range_tuple(const std::string &id) const;
2680 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
2681 inline class size size() const;
2682 inline isl::space space() const;
2683 inline isl::space get_space() const;
2684 inline isl::multi_pw_aff sub(isl::multi_pw_aff multi2) const;
2685 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
2686 inline isl::multi_pw_aff sub(const isl::aff &multi2) const;
2687 inline isl::multi_pw_aff sub(const isl::multi_aff &multi2) const;
2688 inline isl::multi_pw_aff sub(const isl::pw_aff &multi2) const;
2689 inline isl::multi_pw_aff sub(const isl::pw_multi_aff &multi2) const;
2691 inline isl::multi_pw_aff union_add(isl::multi_pw_aff mpa2) const;
2692 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
2693 inline isl::multi_pw_aff union_add(const isl::aff &mpa2) const;
2694 inline isl::multi_pw_aff union_add(const isl::multi_aff &mpa2) const;
2695 inline isl::multi_pw_aff union_add(const isl::pw_aff &mpa2) const;
2696 inline isl::multi_pw_aff union_add(const isl::pw_multi_aff &mpa2) const;
2697 static inline isl::multi_pw_aff zero(isl::space space);
2698};
2699
2700// declarations for isl::multi_union_pw_aff
2703
2707
2708protected:
2710
2712
2713public:
2714 inline /* implicit */ multi_union_pw_aff();
2715 inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
2716 inline /* implicit */ multi_union_pw_aff(isl::multi_pw_aff mpa);
2717 inline /* implicit */ multi_union_pw_aff(isl::union_pw_aff upa);
2719 inline explicit multi_union_pw_aff(isl::union_pw_multi_aff upma);
2720 inline explicit multi_union_pw_aff(isl::ctx ctx, const std::string &str);
2721 inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
2722 inline ~multi_union_pw_aff();
2723 inline __isl_give isl_multi_union_pw_aff *copy() const &;
2724 inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
2725 inline __isl_keep isl_multi_union_pw_aff *get() const;
2726 inline __isl_give isl_multi_union_pw_aff *release();
2727 inline bool is_null() const;
2728 inline isl::ctx ctx() const;
2729
2730 inline isl::multi_union_pw_aff add(isl::multi_union_pw_aff multi2) const;
2731 inline isl::union_pw_aff at(int pos) const;
2732 inline isl::union_pw_aff get_at(int pos) const;
2733 inline isl::union_set bind(isl::multi_id tuple) const;
2734 inline isl::multi_union_pw_aff coalesce() const;
2735 inline class size dim(isl::dim type) const;
2736 inline isl::union_set domain() const;
2737 inline isl::multi_union_pw_aff flat_range_product(isl::multi_union_pw_aff multi2) const;
2738 static inline isl::multi_union_pw_aff from_union_map(isl::union_map umap);
2740 inline boolean has_range_tuple_id() const;
2741 inline isl::multi_union_pw_aff intersect_domain(isl::union_set uset) const;
2742 inline isl::multi_union_pw_aff intersect_params(isl::set params) const;
2743 inline boolean involves_nan() const;
2744 inline isl::union_pw_aff_list list() const;
2745 inline isl::union_pw_aff_list get_list() const;
2746 inline isl::multi_union_pw_aff neg() const;
2747 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
2748 inline isl::multi_union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
2750 inline isl::id range_tuple_id() const;
2751 inline isl::id get_range_tuple_id() const;
2752 inline isl::multi_union_pw_aff reset_range_tuple_id() const;
2753 inline isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const;
2754 inline isl::multi_union_pw_aff scale(isl::multi_val mv) const;
2755 inline isl::multi_union_pw_aff scale(isl::val v) const;
2756 inline isl::multi_union_pw_aff scale(long v) const;
2757 inline isl::multi_union_pw_aff scale_down(isl::multi_val mv) const;
2758 inline isl::multi_union_pw_aff scale_down(isl::val v) const;
2759 inline isl::multi_union_pw_aff scale_down(long v) const;
2760 inline isl::multi_union_pw_aff set_at(int pos, isl::union_pw_aff el) const;
2761 inline isl::multi_union_pw_aff set_range_tuple(isl::id id) const;
2762 inline isl::multi_union_pw_aff set_range_tuple(const std::string &id) const;
2763 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, isl::union_pw_aff el) const;
2764 inline class size size() const;
2765 inline isl::space space() const;
2766 inline isl::space get_space() const;
2767 inline isl::multi_union_pw_aff sub(isl::multi_union_pw_aff multi2) const;
2768 inline isl::multi_union_pw_aff union_add(isl::multi_union_pw_aff mupa2) const;
2769 static inline isl::multi_union_pw_aff zero(isl::space space);
2770};
2771
2772// declarations for isl::multi_val
2773inline multi_val manage(__isl_take isl_multi_val *ptr);
2774inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2775
2777 friend inline multi_val manage(__isl_take isl_multi_val *ptr);
2778 friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2779
2780protected:
2781 isl_multi_val *ptr = nullptr;
2782
2783 inline explicit multi_val(__isl_take isl_multi_val *ptr);
2784
2785public:
2786 inline /* implicit */ multi_val();
2787 inline /* implicit */ multi_val(const multi_val &obj);
2788 inline explicit multi_val(isl::space space, isl::val_list list);
2789 inline explicit multi_val(isl::ctx ctx, const std::string &str);
2790 inline multi_val &operator=(multi_val obj);
2791 inline ~multi_val();
2792 inline __isl_give isl_multi_val *copy() const &;
2793 inline __isl_give isl_multi_val *copy() && = delete;
2794 inline __isl_keep isl_multi_val *get() const;
2795 inline __isl_give isl_multi_val *release();
2796 inline bool is_null() const;
2797 inline isl::ctx ctx() const;
2798
2799 inline isl::multi_val add(isl::multi_val multi2) const;
2800 inline isl::multi_val add(isl::val v) const;
2801 inline isl::multi_val add(long v) const;
2802 inline isl::val at(int pos) const;
2803 inline isl::val get_at(int pos) const;
2804 inline class size dim(isl::dim type) const;
2805 inline isl::multi_val flat_range_product(isl::multi_val multi2) const;
2806 inline boolean has_range_tuple_id() const;
2807 inline boolean involves_nan() const;
2808 inline isl::val_list list() const;
2809 inline isl::val_list get_list() const;
2810 inline isl::multi_val max(isl::multi_val multi2) const;
2811 inline isl::multi_val min(isl::multi_val multi2) const;
2812 inline isl::multi_val neg() const;
2813 inline boolean plain_is_equal(const isl::multi_val &multi2) const;
2814 inline isl::multi_val product(isl::multi_val multi2) const;
2815 inline isl::multi_val range_product(isl::multi_val multi2) const;
2816 inline isl::id range_tuple_id() const;
2817 inline isl::id get_range_tuple_id() const;
2818 inline isl::multi_val reset_range_tuple_id() const;
2819 inline isl::multi_val reset_tuple_id(isl::dim type) const;
2820 inline isl::multi_val scale(isl::multi_val mv) const;
2821 inline isl::multi_val scale(isl::val v) const;
2822 inline isl::multi_val scale(long v) const;
2823 inline isl::multi_val scale_down(isl::multi_val mv) const;
2824 inline isl::multi_val scale_down(isl::val v) const;
2825 inline isl::multi_val scale_down(long v) const;
2826 inline isl::multi_val set_at(int pos, isl::val el) const;
2827 inline isl::multi_val set_at(int pos, long el) const;
2828 inline isl::multi_val set_range_tuple(isl::id id) const;
2829 inline isl::multi_val set_range_tuple(const std::string &id) const;
2830 inline isl::multi_val set_val(int pos, isl::val el) const;
2831 inline isl::multi_val set_val(int pos, long el) const;
2832 inline class size size() const;
2833 inline isl::space space() const;
2834 inline isl::space get_space() const;
2835 inline isl::multi_val sub(isl::multi_val multi2) const;
2836 static inline isl::multi_val zero(isl::space space);
2837};
2838
2839// declarations for isl::point
2840inline point manage(__isl_take isl_point *ptr);
2841inline point manage_copy(__isl_keep isl_point *ptr);
2842
2843class point {
2844 friend inline point manage(__isl_take isl_point *ptr);
2845 friend inline point manage_copy(__isl_keep isl_point *ptr);
2846
2847protected:
2848 isl_point *ptr = nullptr;
2849
2850 inline explicit point(__isl_take isl_point *ptr);
2851
2852public:
2853 inline /* implicit */ point();
2854 inline /* implicit */ point(const point &obj);
2855 inline explicit point(isl::space space);
2856 inline point &operator=(point obj);
2857 inline ~point();
2858 inline __isl_give isl_point *copy() const &;
2859 inline __isl_give isl_point *copy() && = delete;
2860 inline __isl_keep isl_point *get() const;
2861 inline __isl_give isl_point *release();
2862 inline bool is_null() const;
2863 inline isl::ctx ctx() const;
2864
2865 inline isl::set add_constraint(const isl::constraint &constraint) const;
2866 inline isl::set add_dims(isl::dim type, unsigned int n) const;
2867 inline isl::basic_set affine_hull() const;
2868 inline isl::set align_params(const isl::space &model) const;
2869 inline isl::basic_set apply(const isl::basic_map &bmap) const;
2870 inline isl::set apply(const isl::map &map) const;
2871 inline isl::union_set apply(const isl::union_map &umap) const;
2872 inline isl::pw_multi_aff as_pw_multi_aff() const;
2873 inline isl::set as_set() const;
2874 inline isl::basic_set_list basic_set_list() const;
2875 inline isl::set bind(const isl::multi_id &tuple) const;
2876 inline isl::set coalesce() const;
2877 inline isl::set complement() const;
2878 inline isl::union_set compute_divs() const;
2879 inline boolean contains(const isl::space &space) const;
2880 inline isl::basic_set convex_hull() const;
2881 inline isl::val coordinate_val(isl::dim type, int pos) const;
2882 inline isl::val get_coordinate_val(isl::dim type, int pos) const;
2883 inline isl::basic_set detect_equalities() const;
2884 inline class size dim(isl::dim type) const;
2885 inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
2886 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
2887 inline isl::pw_aff dim_max(int pos) const;
2888 inline isl::val dim_max_val(int pos) const;
2889 inline isl::pw_aff dim_min(int pos) const;
2890 inline isl::val dim_min_val(int pos) const;
2891 inline std::string dim_name(isl::dim type, unsigned int pos) const;
2892 inline isl::aff div(int pos) const;
2893 inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2894 inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
2895 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
2896 inline isl::set extract_set(const isl::space &space) const;
2897 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
2898 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
2899 inline isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
2900 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, const isl::val &v) const;
2901 inline isl::basic_set fix_val(isl::dim type, unsigned int pos, long v) const;
2902 inline isl::basic_set flatten() const;
2903 inline stat foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const;
2904 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
2905 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
2906 inline isl::basic_set gist(const isl::basic_set &context) const;
2907 inline isl::set gist(const isl::set &context) const;
2908 inline isl::union_set gist(const isl::union_set &context) const;
2909 inline isl::set gist_params(const isl::set &context) const;
2910 inline boolean has_equal_space(const isl::set &set2) const;
2911 inline isl::map identity() const;
2912 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
2913 inline isl::pw_aff indicator_function() const;
2914 inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2915 inline isl::map insert_domain(const isl::space &domain) const;
2916 inline isl::basic_set intersect(const isl::basic_set &bset2) const;
2917 inline isl::set intersect(const isl::set &set2) const;
2918 inline isl::union_set intersect(const isl::union_set &uset2) const;
2919 inline isl::basic_set intersect_params(const isl::basic_set &bset2) const;
2920 inline isl::set intersect_params(const isl::set &params) const;
2921 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2922 inline boolean involves_locals() const;
2923 inline boolean is_bounded() const;
2924 inline boolean is_disjoint(const isl::set &set2) const;
2925 inline boolean is_disjoint(const isl::union_set &uset2) const;
2926 inline boolean is_empty() const;
2927 inline boolean is_equal(const isl::basic_set &bset2) const;
2928 inline boolean is_equal(const isl::set &set2) const;
2929 inline boolean is_equal(const isl::union_set &uset2) const;
2930 inline boolean is_params() const;
2931 inline boolean is_singleton() const;
2932 inline boolean is_strict_subset(const isl::set &set2) const;
2933 inline boolean is_strict_subset(const isl::union_set &uset2) const;
2934 inline boolean is_subset(const isl::basic_set &bset2) const;
2935 inline boolean is_subset(const isl::set &set2) const;
2936 inline boolean is_subset(const isl::union_set &uset2) const;
2937 inline boolean is_wrapping() const;
2938 inline boolean isa_set() const;
2939 inline isl::set lexmax() const;
2940 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
2941 inline isl::set lexmin() const;
2942 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
2943 inline isl::set lower_bound(const isl::multi_pw_aff &lower) const;
2944 inline isl::set lower_bound(const isl::multi_val &lower) const;
2945 inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2946 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
2947 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, long value) const;
2948 inline isl::multi_pw_aff max_multi_pw_aff() const;
2949 inline isl::val max_val(const isl::aff &obj) const;
2950 inline isl::multi_pw_aff min_multi_pw_aff() const;
2951 inline isl::val min_val(const isl::aff &obj) const;
2952 inline isl::multi_val multi_val() const;
2953 inline isl::multi_val get_multi_val() const;
2954 inline class size n_basic_set() const;
2955 inline isl::basic_set params() const;
2956 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
2957 inline isl::multi_val plain_multi_val_if_fixed() const;
2958 inline isl::basic_set polyhedral_hull() const;
2959 inline isl::set preimage(const isl::multi_aff &ma) const;
2960 inline isl::set preimage(const isl::multi_pw_aff &mpa) const;
2961 inline isl::set preimage(const isl::pw_multi_aff &pma) const;
2962 inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
2963 inline isl::set product(const isl::set &set2) const;
2964 inline isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
2965 inline isl::set project_out_all_params() const;
2966 inline isl::set project_out_param(const isl::id &id) const;
2967 inline isl::set project_out_param(const std::string &id) const;
2968 inline isl::set project_out_param(const isl::id_list &list) const;
2969 inline isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const;
2970 inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
2971 inline isl::set remove_divs() const;
2972 inline isl::set remove_redundancies() const;
2973 inline isl::set reset_tuple_id() const;
2974 inline isl::basic_set sample() const;
2975 inline isl::point sample_point() const;
2976 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const;
2977 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
2978 inline isl::set_list set_list() const;
2979 inline isl::set set_tuple_id(const isl::id &id) const;
2980 inline isl::set set_tuple_id(const std::string &id) const;
2981 inline isl::fixed_box simple_fixed_box_hull() const;
2982 inline isl::basic_set simple_hull() const;
2983 inline isl::space space() const;
2984 inline isl::val stride(int pos) const;
2985 inline isl::set subtract(const isl::set &set2) const;
2986 inline isl::union_set subtract(const isl::union_set &uset2) const;
2987 inline isl::basic_set_list to_list() const;
2988 inline isl::set to_set() const;
2989 inline isl::union_set to_union_set() const;
2990 inline isl::map translation() const;
2991 inline class size tuple_dim() const;
2992 inline isl::id tuple_id() const;
2993 inline std::string tuple_name() const;
2994 inline isl::set unbind_params(const isl::multi_id &tuple) const;
2995 inline isl::map unbind_params_insert_domain(const isl::multi_id &domain) const;
2996 inline isl::set unite(const isl::basic_set &bset2) const;
2997 inline isl::set unite(const isl::set &set2) const;
2998 inline isl::union_set unite(const isl::union_set &uset2) const;
2999 inline isl::basic_set unshifted_simple_hull() const;
3000 inline isl::map unwrap() const;
3001 inline isl::set upper_bound(const isl::multi_pw_aff &upper) const;
3002 inline isl::set upper_bound(const isl::multi_val &upper) const;
3003 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const;
3004 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, long value) const;
3005};
3006
3007// declarations for isl::pw_aff
3008inline pw_aff manage(__isl_take isl_pw_aff *ptr);
3009inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
3010
3011class pw_aff {
3012 friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
3013 friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
3014
3015protected:
3016 isl_pw_aff *ptr = nullptr;
3017
3018 inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
3019
3020public:
3021 inline /* implicit */ pw_aff();
3022 inline /* implicit */ pw_aff(const pw_aff &obj);
3023 inline /* implicit */ pw_aff(isl::aff aff);
3024 inline explicit pw_aff(isl::ctx ctx, const std::string &str);
3025 inline explicit pw_aff(isl::set domain, isl::val v);
3026 inline explicit pw_aff(isl::local_space ls);
3027 inline pw_aff &operator=(pw_aff obj);
3028 inline ~pw_aff();
3029 inline __isl_give isl_pw_aff *copy() const &;
3030 inline __isl_give isl_pw_aff *copy() && = delete;
3031 inline __isl_keep isl_pw_aff *get() const;
3032 inline __isl_give isl_pw_aff *release();
3033 inline bool is_null() const;
3034 inline isl::ctx ctx() const;
3035
3036 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
3037 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
3038 inline isl::pw_aff add(isl::pw_aff pwaff2) const;
3039 inline isl::pw_multi_aff add(const isl::pw_multi_aff &pma2) const;
3040 inline isl::union_pw_aff add(const isl::union_pw_aff &upa2) const;
3041 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
3042 inline isl::pw_aff add(const isl::aff &pwaff2) const;
3043 inline isl::pw_aff add_constant(isl::val v) const;
3044 inline isl::pw_aff add_constant(long v) const;
3045 inline isl::pw_multi_aff add_constant(const isl::multi_val &mv) const;
3046 inline isl::pw_aff add_dims(isl::dim type, unsigned int n) const;
3047 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
3048 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
3049 inline isl::aff as_aff() const;
3050 inline isl::map as_map() const;
3051 inline isl::multi_aff as_multi_aff() const;
3052 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
3053 inline isl::pw_multi_aff as_pw_multi_aff() const;
3054 inline isl::set as_set() const;
3055 inline isl::union_map as_union_map() const;
3056 inline isl::pw_aff at(int pos) const;
3057 inline isl::set bind(const isl::multi_id &tuple) const;
3058 inline isl::set bind(isl::id id) const;
3059 inline isl::set bind(const std::string &id) const;
3060 inline isl::pw_aff bind_domain(isl::multi_id tuple) const;
3062 inline isl::pw_aff ceil() const;
3063 inline isl::pw_aff coalesce() const;
3064 inline isl::pw_aff cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const;
3065 inline class size dim(isl::dim type) const;
3066 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
3067 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
3068 inline isl::pw_aff div(isl::pw_aff pa2) const;
3069 inline isl::set domain() const;
3070 inline isl::space domain_space() const;
3071 inline isl::space get_domain_space() const;
3072 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3073 inline isl::set eq_set(isl::pw_aff pwaff2) const;
3074 inline isl::val eval(isl::point pnt) const;
3075 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
3076 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
3077 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
3078 inline isl::pw_multi_aff flat_range_product(const isl::pw_multi_aff &pma2) const;
3079 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
3080 inline isl::pw_aff floor() const;
3081 inline stat foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const;
3082 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
3083 inline stat foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const;
3084 inline isl::set ge_set(isl::pw_aff pwaff2) const;
3085 inline isl::pw_aff gist(isl::set context) const;
3086 inline isl::union_pw_aff gist(const isl::union_set &context) const;
3087 inline isl::pw_aff gist(const isl::basic_set &context) const;
3088 inline isl::pw_aff gist(const isl::point &context) const;
3089 inline isl::set gt_set(isl::pw_aff pwaff2) const;
3090 inline boolean has_range_tuple_id() const;
3091 inline isl::multi_pw_aff identity() const;
3092 inline isl::pw_aff insert_domain(isl::space domain) const;
3093 inline isl::pw_aff intersect_domain(isl::set set) const;
3094 inline isl::union_pw_aff intersect_domain(const isl::space &space) const;
3095 inline isl::union_pw_aff intersect_domain(const isl::union_set &uset) const;
3096 inline isl::pw_aff intersect_domain(const isl::basic_set &set) const;
3097 inline isl::pw_aff intersect_domain(const isl::point &set) const;
3098 inline isl::union_pw_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
3099 inline isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
3100 inline isl::pw_aff intersect_params(isl::set set) const;
3101 inline boolean involves_locals() const;
3102 inline boolean involves_nan() const;
3103 inline boolean involves_param(const isl::id &id) const;
3104 inline boolean involves_param(const std::string &id) const;
3105 inline boolean involves_param(const isl::id_list &list) const;
3106 inline boolean is_cst() const;
3107 inline boolean is_equal(const isl::pw_aff &pa2) const;
3108 inline boolean isa_aff() const;
3109 inline boolean isa_multi_aff() const;
3110 inline boolean isa_pw_multi_aff() const;
3111 inline isl::set le_set(isl::pw_aff pwaff2) const;
3112 inline isl::pw_aff_list list() const;
3113 inline isl::set lt_set(isl::pw_aff pwaff2) const;
3114 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
3115 inline isl::pw_aff max(isl::pw_aff pwaff2) const;
3116 inline isl::pw_aff max(const isl::aff &pwaff2) const;
3117 inline isl::multi_val max_multi_val() const;
3118 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
3119 inline isl::pw_aff min(isl::pw_aff pwaff2) const;
3120 inline isl::pw_aff min(const isl::aff &pwaff2) const;
3121 inline isl::multi_val min_multi_val() const;
3122 inline isl::pw_aff mod(isl::val mod) const;
3123 inline isl::pw_aff mod(long mod) const;
3124 inline isl::pw_aff mul(isl::pw_aff pwaff2) const;
3125 inline class size n_piece() const;
3126 inline isl::set ne_set(isl::pw_aff pwaff2) const;
3127 inline isl::pw_aff neg() const;
3128 static inline isl::pw_aff param_on_domain(isl::set domain, isl::id id);
3129 inline boolean plain_is_empty() const;
3130 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
3131 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
3132 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const;
3133 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
3134 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
3135 inline isl::pw_multi_aff product(const isl::pw_multi_aff &pma2) const;
3136 inline isl::pw_aff pullback(isl::multi_aff ma) const;
3137 inline isl::pw_aff pullback(isl::multi_pw_aff mpa) const;
3138 inline isl::pw_aff pullback(isl::pw_multi_aff pma) const;
3139 inline isl::union_pw_aff pullback(const isl::union_pw_multi_aff &upma) const;
3140 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
3141 inline isl::pw_multi_aff range_factor_domain() const;
3142 inline isl::pw_multi_aff range_factor_range() const;
3143 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
3144 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
3145 inline isl::pw_multi_aff range_product(const isl::pw_multi_aff &pma2) const;
3146 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
3147 inline isl::id range_tuple_id() const;
3148 inline isl::multi_pw_aff reset_range_tuple_id() const;
3149 inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
3150 inline isl::multi_pw_aff scale(const isl::multi_val &mv) const;
3151 inline isl::pw_aff scale(isl::val v) const;
3152 inline isl::pw_aff scale(long v) const;
3153 inline isl::multi_pw_aff scale_down(const isl::multi_val &mv) const;
3154 inline isl::pw_aff scale_down(isl::val f) const;
3155 inline isl::pw_aff scale_down(long f) const;
3156 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
3157 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
3158 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
3159 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const;
3160 inline isl::pw_multi_aff set_range_tuple(const isl::id &id) const;
3161 inline isl::pw_multi_aff set_range_tuple(const std::string &id) const;
3162 inline isl::pw_aff set_tuple_id(isl::dim type, isl::id id) const;
3163 inline isl::pw_aff set_tuple_id(isl::dim type, const std::string &id) const;
3164 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
3165 inline class size size() const;
3166 inline isl::space space() const;
3167 inline isl::space get_space() const;
3168 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
3169 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
3170 inline isl::pw_aff sub(isl::pw_aff pwaff2) const;
3171 inline isl::pw_multi_aff sub(const isl::pw_multi_aff &pma2) const;
3172 inline isl::union_pw_aff sub(const isl::union_pw_aff &upa2) const;
3173 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
3174 inline isl::pw_aff sub(const isl::aff &pwaff2) const;
3175 inline isl::pw_aff subtract_domain(isl::set set) const;
3176 inline isl::union_pw_aff subtract_domain(const isl::space &space) const;
3177 inline isl::union_pw_aff subtract_domain(const isl::union_set &uset) const;
3178 inline isl::pw_aff subtract_domain(const isl::basic_set &set) const;
3179 inline isl::pw_aff subtract_domain(const isl::point &set) const;
3180 inline isl::pw_aff tdiv_q(isl::pw_aff pa2) const;
3181 inline isl::pw_aff tdiv_r(isl::pw_aff pa2) const;
3182 inline isl::pw_aff_list to_list() const;
3183 inline isl::multi_pw_aff to_multi_pw_aff() const;
3184 inline isl::union_pw_aff to_union_pw_aff() const;
3185 inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
3186 inline isl::id tuple_id(isl::dim type) const;
3187 inline isl::id get_tuple_id(isl::dim type) const;
3189 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
3190 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
3191 inline isl::pw_aff union_add(isl::pw_aff pwaff2) const;
3192 inline isl::pw_multi_aff union_add(const isl::pw_multi_aff &pma2) const;
3193 inline isl::union_pw_aff union_add(const isl::union_pw_aff &upa2) const;
3194 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
3195 inline isl::pw_aff union_add(const isl::aff &pwaff2) const;
3196 static inline isl::pw_aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
3197};
3198
3199// declarations for isl::pw_aff_list
3200inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
3201inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
3202
3204 friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
3205 friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
3206
3207protected:
3208 isl_pw_aff_list *ptr = nullptr;
3209
3210 inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
3211
3212public:
3213 inline /* implicit */ pw_aff_list();
3214 inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
3215 inline explicit pw_aff_list(isl::ctx ctx, int n);
3216 inline explicit pw_aff_list(isl::pw_aff el);
3217 inline explicit pw_aff_list(isl::ctx ctx, const std::string &str);
3218 inline pw_aff_list &operator=(pw_aff_list obj);
3219 inline ~pw_aff_list();
3220 inline __isl_give isl_pw_aff_list *copy() const &;
3221 inline __isl_give isl_pw_aff_list *copy() && = delete;
3222 inline __isl_keep isl_pw_aff_list *get() const;
3223 inline __isl_give isl_pw_aff_list *release();
3224 inline bool is_null() const;
3225 inline isl::ctx ctx() const;
3226
3227 inline isl::pw_aff_list add(isl::pw_aff el) const;
3228 inline isl::pw_aff at(int index) const;
3229 inline isl::pw_aff get_at(int index) const;
3230 inline isl::pw_aff_list clear() const;
3231 inline isl::pw_aff_list concat(isl::pw_aff_list list2) const;
3232 inline isl::pw_aff_list drop(unsigned int first, unsigned int n) const;
3233 inline stat foreach(const std::function<stat(isl::pw_aff)> &fn) const;
3234 inline isl::pw_aff_list insert(unsigned int pos, isl::pw_aff el) const;
3235 inline class size size() const;
3236};
3237
3238// declarations for isl::pw_multi_aff
3239inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
3240inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
3241
3243 friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
3245
3246protected:
3247 isl_pw_multi_aff *ptr = nullptr;
3248
3249 inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
3250
3251public:
3252 inline /* implicit */ pw_multi_aff();
3253 inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
3254 inline /* implicit */ pw_multi_aff(isl::multi_aff ma);
3255 inline /* implicit */ pw_multi_aff(isl::pw_aff pa);
3256 inline explicit pw_multi_aff(isl::ctx ctx, const std::string &str);
3257 inline pw_multi_aff &operator=(pw_multi_aff obj);
3258 inline ~pw_multi_aff();
3259 inline __isl_give isl_pw_multi_aff *copy() const &;
3260 inline __isl_give isl_pw_multi_aff *copy() && = delete;
3261 inline __isl_keep isl_pw_multi_aff *get() const;
3262 inline __isl_give isl_pw_multi_aff *release();
3263 inline bool is_null() const;
3264 inline isl::ctx ctx() const;
3265
3266 inline isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const;
3267 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
3268 inline isl::pw_multi_aff add(isl::pw_multi_aff pma2) const;
3269 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
3270 inline isl::pw_multi_aff add(const isl::multi_aff &pma2) const;
3271 inline isl::pw_multi_aff add(const isl::pw_aff &pma2) const;
3272 inline isl::pw_multi_aff add_constant(isl::multi_val mv) const;
3273 inline isl::pw_multi_aff add_constant(isl::val v) const;
3274 inline isl::pw_multi_aff add_constant(long v) const;
3275 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
3276 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
3277 inline isl::map as_map() const;
3278 inline isl::multi_aff as_multi_aff() const;
3279 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
3280 inline isl::pw_multi_aff as_pw_multi_aff() const;
3281 inline isl::set as_set() const;
3282 inline isl::union_map as_union_map() const;
3283 inline isl::pw_aff at(int pos) const;
3284 inline isl::pw_aff get_at(int pos) const;
3285 inline isl::set bind(const isl::multi_id &tuple) const;
3286 inline isl::pw_multi_aff bind_domain(isl::multi_id tuple) const;
3288 inline isl::pw_multi_aff coalesce() const;
3289 inline class size dim(isl::dim type) const;
3290 inline isl::set domain() const;
3291 static inline isl::pw_multi_aff domain_map(isl::space space);
3292 inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3293 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
3294 inline isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const;
3295 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
3296 inline isl::pw_multi_aff flat_range_product(isl::pw_multi_aff pma2) const;
3297 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
3298 inline isl::pw_multi_aff flat_range_product(const isl::multi_aff &pma2) const;
3299 inline isl::pw_multi_aff flat_range_product(const isl::pw_aff &pma2) const;
3300 inline stat foreach_piece(const std::function<stat(isl::set, isl::multi_aff)> &fn) const;
3301 static inline isl::pw_multi_aff from_map(isl::map map);
3302 inline isl::pw_multi_aff gist(isl::set set) const;
3303 inline isl::union_pw_multi_aff gist(const isl::union_set &context) const;
3304 inline isl::pw_multi_aff gist(const isl::basic_set &set) const;
3305 inline isl::pw_multi_aff gist(const isl::point &set) const;
3306 inline boolean has_range_tuple_id() const;
3307 inline isl::multi_pw_aff identity() const;
3308 static inline isl::pw_multi_aff identity_on_domain(isl::space space);
3309 inline isl::pw_multi_aff insert_domain(isl::space domain) const;
3310 inline isl::pw_multi_aff intersect_domain(isl::set set) const;
3311 inline isl::union_pw_multi_aff intersect_domain(const isl::space &space) const;
3312 inline isl::union_pw_multi_aff intersect_domain(const isl::union_set &uset) const;
3313 inline isl::pw_multi_aff intersect_domain(const isl::basic_set &set) const;
3314 inline isl::pw_multi_aff intersect_domain(const isl::point &set) const;
3315 inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const;
3316 inline isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const;
3317 inline isl::pw_multi_aff intersect_params(isl::set set) const;
3318 inline boolean involves_locals() const;
3319 inline boolean involves_nan() const;
3320 inline boolean involves_param(const isl::id &id) const;
3321 inline boolean involves_param(const std::string &id) const;
3322 inline boolean involves_param(const isl::id_list &list) const;
3323 inline boolean isa_multi_aff() const;
3324 inline boolean isa_pw_multi_aff() const;
3325 inline isl::pw_aff_list list() const;
3326 inline isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const;
3327 inline isl::multi_val max_multi_val() const;
3328 inline isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const;
3329 inline isl::multi_val min_multi_val() const;
3330 static inline isl::pw_multi_aff multi_val_on_domain(isl::set domain, isl::multi_val mv);
3331 inline class size n_piece() const;
3332 inline isl::multi_pw_aff neg() const;
3333 inline boolean plain_is_empty() const;
3334 inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
3335 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
3336 inline isl::pw_multi_aff preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const;
3337 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
3338 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::multi_aff &pma2) const;
3339 inline isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_aff &pma2) const;
3340 inline isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const;
3341 inline isl::pw_multi_aff product(isl::pw_multi_aff pma2) const;
3342 inline isl::pw_multi_aff product(const isl::multi_aff &pma2) const;
3343 inline isl::pw_multi_aff product(const isl::pw_aff &pma2) const;
3344 static inline isl::pw_multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
3345 inline isl::multi_pw_aff pullback(const isl::multi_pw_aff &mpa2) const;
3346 inline isl::pw_multi_aff pullback(isl::multi_aff ma) const;
3347 inline isl::pw_multi_aff pullback(isl::pw_multi_aff pma2) const;
3348 inline isl::union_pw_multi_aff pullback(const isl::union_pw_multi_aff &upma2) const;
3349 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
3350 inline isl::pw_multi_aff range_factor_domain() const;
3351 inline isl::pw_multi_aff range_factor_range() const;
3352 static inline isl::pw_multi_aff range_map(isl::space space);
3353 inline isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const;
3354 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
3355 inline isl::pw_multi_aff range_product(isl::pw_multi_aff pma2) const;
3356 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
3357 inline isl::pw_multi_aff range_product(const isl::multi_aff &pma2) const;
3358 inline isl::pw_multi_aff range_product(const isl::pw_aff &pma2) const;
3359 inline isl::id range_tuple_id() const;
3360 inline isl::id get_range_tuple_id() const;
3361 inline isl::multi_pw_aff reset_range_tuple_id() const;
3362 inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
3363 inline isl::multi_pw_aff scale(const isl::multi_val &mv) const;
3364 inline isl::pw_multi_aff scale(isl::val v) const;
3365 inline isl::pw_multi_aff scale(long v) const;
3366 inline isl::multi_pw_aff scale_down(const isl::multi_val &mv) const;
3367 inline isl::pw_multi_aff scale_down(isl::val v) const;
3368 inline isl::pw_multi_aff scale_down(long v) const;
3369 inline isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const;
3370 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
3371 inline isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const;
3372 inline isl::pw_multi_aff set_pw_aff(unsigned int pos, isl::pw_aff pa) const;
3373 inline isl::pw_multi_aff set_range_tuple(isl::id id) const;
3374 inline isl::pw_multi_aff set_range_tuple(const std::string &id) const;
3375 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
3376 inline class size size() const;
3377 inline isl::space space() const;
3378 inline isl::space get_space() const;
3379 inline isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const;
3380 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
3381 inline isl::pw_multi_aff sub(isl::pw_multi_aff pma2) const;
3382 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
3383 inline isl::pw_multi_aff sub(const isl::multi_aff &pma2) const;
3384 inline isl::pw_multi_aff sub(const isl::pw_aff &pma2) const;
3385 inline isl::pw_multi_aff subtract_domain(isl::set set) const;
3386 inline isl::union_pw_multi_aff subtract_domain(const isl::space &space) const;
3387 inline isl::union_pw_multi_aff subtract_domain(const isl::union_set &uset) const;
3388 inline isl::pw_multi_aff subtract_domain(const isl::basic_set &set) const;
3389 inline isl::pw_multi_aff subtract_domain(const isl::point &set) const;
3390 inline isl::pw_multi_aff_list to_list() const;
3391 inline isl::multi_pw_aff to_multi_pw_aff() const;
3392 inline isl::union_pw_multi_aff to_union_pw_multi_aff() const;
3393 inline isl::id tuple_id(isl::dim type) const;
3394 inline isl::id get_tuple_id(isl::dim type) const;
3396 inline isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const;
3397 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
3398 inline isl::pw_multi_aff union_add(isl::pw_multi_aff pma2) const;
3399 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
3400 inline isl::pw_multi_aff union_add(const isl::multi_aff &pma2) const;
3401 inline isl::pw_multi_aff union_add(const isl::pw_aff &pma2) const;
3402 static inline isl::pw_multi_aff zero(isl::space space);
3403};
3404
3405// declarations for isl::pw_multi_aff_list
3406inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3407inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3408
3410 friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3411 friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3412
3413protected:
3414 isl_pw_multi_aff_list *ptr = nullptr;
3415
3416 inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
3417
3418public:
3419 inline /* implicit */ pw_multi_aff_list();
3420 inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
3421 inline explicit pw_multi_aff_list(isl::ctx ctx, int n);
3422 inline explicit pw_multi_aff_list(isl::pw_multi_aff el);
3423 inline explicit pw_multi_aff_list(isl::ctx ctx, const std::string &str);
3424 inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
3425 inline ~pw_multi_aff_list();
3426 inline __isl_give isl_pw_multi_aff_list *copy() const &;
3427 inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
3428 inline __isl_keep isl_pw_multi_aff_list *get() const;
3429 inline __isl_give isl_pw_multi_aff_list *release();
3430 inline bool is_null() const;
3431 inline isl::ctx ctx() const;
3432
3433 inline isl::pw_multi_aff_list add(isl::pw_multi_aff el) const;
3434 inline isl::pw_multi_aff at(int index) const;
3435 inline isl::pw_multi_aff get_at(int index) const;
3436 inline isl::pw_multi_aff_list clear() const;
3437 inline isl::pw_multi_aff_list concat(isl::pw_multi_aff_list list2) const;
3438 inline isl::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3439 inline stat foreach(const std::function<stat(isl::pw_multi_aff)> &fn) const;
3440 inline isl::pw_multi_aff_list insert(unsigned int pos, isl::pw_multi_aff el) const;
3441 inline class size size() const;
3442};
3443
3444// declarations for isl::schedule
3445inline schedule manage(__isl_take isl_schedule *ptr);
3446inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3447
3449 friend inline schedule manage(__isl_take isl_schedule *ptr);
3450 friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3451
3452protected:
3453 isl_schedule *ptr = nullptr;
3454
3455 inline explicit schedule(__isl_take isl_schedule *ptr);
3456
3457public:
3458 inline /* implicit */ schedule();
3459 inline /* implicit */ schedule(const schedule &obj);
3460 inline explicit schedule(isl::ctx ctx, const std::string &str);
3461 inline schedule &operator=(schedule obj);
3462 inline ~schedule();
3463 inline __isl_give isl_schedule *copy() const &;
3464 inline __isl_give isl_schedule *copy() && = delete;
3465 inline __isl_keep isl_schedule *get() const;
3466 inline __isl_give isl_schedule *release();
3467 inline bool is_null() const;
3468 inline isl::ctx ctx() const;
3469
3470 inline isl::schedule align_params(isl::space space) const;
3471 inline isl::union_set domain() const;
3472 inline isl::union_set get_domain() const;
3473 static inline isl::schedule from_domain(isl::union_set domain);
3474 inline isl::schedule gist_domain_params(isl::set context) const;
3475 inline isl::schedule insert_partial_schedule(isl::multi_union_pw_aff partial) const;
3476 inline isl::schedule intersect_domain(isl::union_set domain) const;
3477 inline isl::union_map map() const;
3478 inline isl::union_map get_map() const;
3479 inline isl::schedule pullback(isl::union_pw_multi_aff upma) const;
3480 inline isl::schedule_node root() const;
3481 inline isl::schedule_node get_root() const;
3482 inline isl::schedule sequence(isl::schedule schedule2) const;
3483};
3484
3485// declarations for isl::schedule_constraints
3488
3492
3493protected:
3495
3497
3498public:
3499 inline /* implicit */ schedule_constraints();
3500 inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
3501 inline explicit schedule_constraints(isl::ctx ctx, const std::string &str);
3503 inline ~schedule_constraints();
3504 inline __isl_give isl_schedule_constraints *copy() const &;
3505 inline __isl_give isl_schedule_constraints *copy() && = delete;
3506 inline __isl_keep isl_schedule_constraints *get() const;
3507 inline __isl_give isl_schedule_constraints *release();
3508 inline bool is_null() const;
3509 inline isl::ctx ctx() const;
3510
3511 inline isl::union_map coincidence() const;
3512 inline isl::union_map get_coincidence() const;
3513 inline isl::schedule compute_schedule() const;
3514 inline isl::union_map conditional_validity() const;
3515 inline isl::union_map get_conditional_validity() const;
3516 inline isl::union_map conditional_validity_condition() const;
3517 inline isl::union_map get_conditional_validity_condition() const;
3518 inline isl::set context() const;
3519 inline isl::set get_context() const;
3520 inline isl::union_set domain() const;
3521 inline isl::union_set get_domain() const;
3522 static inline isl::schedule_constraints on_domain(isl::union_set domain);
3523 inline isl::union_map proximity() const;
3524 inline isl::union_map get_proximity() const;
3525 inline isl::schedule_constraints set_coincidence(isl::union_map coincidence) const;
3526 inline isl::schedule_constraints set_conditional_validity(isl::union_map condition, isl::union_map validity) const;
3527 inline isl::schedule_constraints set_context(isl::set context) const;
3528 inline isl::schedule_constraints set_proximity(isl::union_map proximity) const;
3529 inline isl::schedule_constraints set_validity(isl::union_map validity) const;
3530 inline isl::union_map validity() const;
3531 inline isl::union_map get_validity() const;
3532};
3533
3534// declarations for isl::schedule_node
3535inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3536inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3537
3541
3542protected:
3543 isl_schedule_node *ptr = nullptr;
3544
3545 inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
3546
3547public:
3548 inline /* implicit */ schedule_node();
3549 inline /* implicit */ schedule_node(const schedule_node &obj);
3550 inline schedule_node &operator=(schedule_node obj);
3551 inline ~schedule_node();
3552 inline __isl_give isl_schedule_node *copy() const &;
3553 inline __isl_give isl_schedule_node *copy() && = delete;
3554 inline __isl_keep isl_schedule_node *get() const;
3555 inline __isl_give isl_schedule_node *release();
3556 inline bool is_null() const;
3557private:
3558 template <typename T,
3559 typename = typename std::enable_if<std::is_same<
3560 const decltype(isl_schedule_node_get_type(nullptr)),
3561 const T>::value>::type>
3562 inline boolean isa_type(T subtype) const;
3563public:
3564 template <class T> inline boolean isa() const;
3565 template <class T> inline T as() const;
3566 inline isl::ctx ctx() const;
3567
3568 inline isl::schedule_node ancestor(int generation) const;
3569 inline class size ancestor_child_position(const isl::schedule_node &ancestor) const;
3570 inline class size get_ancestor_child_position(const isl::schedule_node &ancestor) const;
3571 inline isl::schedule_node child(int pos) const;
3572 inline class size child_position() const;
3573 inline class size get_child_position() const;
3574 inline isl::union_set domain() const;
3575 inline isl::union_set get_domain() const;
3576 inline boolean every_descendant(const std::function<boolean(isl::schedule_node)> &test) const;
3577 inline isl::schedule_node first_child() const;
3578 inline stat foreach_ancestor_top_down(const std::function<stat(isl::schedule_node)> &fn) const;
3579 inline stat foreach_descendant_top_down(const std::function<boolean(isl::schedule_node)> &fn) const;
3580 static inline isl::schedule_node from_domain(isl::union_set domain);
3581 static inline isl::schedule_node from_extension(isl::union_map extension);
3582 inline isl::schedule_node graft_after(isl::schedule_node graft) const;
3583 inline isl::schedule_node graft_before(isl::schedule_node graft) const;
3584 inline boolean has_children() const;
3585 inline boolean has_next_sibling() const;
3586 inline boolean has_parent() const;
3587 inline boolean has_previous_sibling() const;
3588 inline isl::schedule_node insert_context(isl::set context) const;
3589 inline isl::schedule_node insert_filter(isl::union_set filter) const;
3590 inline isl::schedule_node insert_guard(isl::set context) const;
3591 inline isl::schedule_node insert_mark(isl::id mark) const;
3592 inline isl::schedule_node insert_mark(const std::string &mark) const;
3593 inline isl::schedule_node insert_partial_schedule(isl::multi_union_pw_aff schedule) const;
3594 inline isl::schedule_node insert_sequence(isl::union_set_list filters) const;
3595 inline isl::schedule_node insert_set(isl::union_set_list filters) const;
3596 inline boolean is_equal(const isl::schedule_node &node2) const;
3597 inline boolean is_subtree_anchored() const;
3598 inline isl::schedule_node map_descendant_bottom_up(const std::function<isl::schedule_node(isl::schedule_node)> &fn) const;
3599 inline class size n_children() const;
3600 inline isl::schedule_node next_sibling() const;
3601 inline isl::schedule_node order_after(isl::union_set filter) const;
3602 inline isl::schedule_node order_before(isl::union_set filter) const;
3603 inline isl::schedule_node parent() const;
3604 inline isl::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const;
3605 inline isl::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
3606 inline isl::union_map prefix_schedule_relation() const;
3607 inline isl::union_map get_prefix_schedule_relation() const;
3608 inline isl::union_map prefix_schedule_union_map() const;
3609 inline isl::union_map get_prefix_schedule_union_map() const;
3610 inline isl::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const;
3611 inline isl::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
3612 inline isl::schedule_node previous_sibling() const;
3613 inline isl::schedule_node root() const;
3614 inline isl::schedule schedule() const;
3615 inline isl::schedule get_schedule() const;
3616 inline class size schedule_depth() const;
3617 inline class size get_schedule_depth() const;
3618 inline isl::schedule_node shared_ancestor(const isl::schedule_node &node2) const;
3619 inline isl::schedule_node get_shared_ancestor(const isl::schedule_node &node2) const;
3620 inline class size tree_depth() const;
3621 inline class size get_tree_depth() const;
3622 inline isl::union_set universe_domain() const;
3623 inline isl::union_set get_universe_domain() const;
3624};
3625
3626// declarations for isl::schedule_node_band
3627
3629 template <class T>
3630 friend boolean schedule_node::isa() const;
3631 friend schedule_node_band schedule_node::as<schedule_node_band>() const;
3632 static const auto type = isl_schedule_node_band;
3633
3634protected:
3635 inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
3636
3637public:
3638 inline /* implicit */ schedule_node_band();
3639 inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
3640 inline schedule_node_band &operator=(schedule_node_band obj);
3641 inline isl::ctx ctx() const;
3642
3643 inline isl::union_set ast_build_options() const;
3644 inline isl::union_set get_ast_build_options() const;
3645 inline isl::set ast_isolate_option() const;
3646 inline isl::set get_ast_isolate_option() const;
3647 inline boolean member_get_coincident(int pos) const;
3648 inline schedule_node_band member_set_coincident(int pos, int coincident) const;
3649 inline schedule_node_band mod(isl::multi_val mv) const;
3650 inline class size n_member() const;
3651 inline isl::multi_union_pw_aff partial_schedule() const;
3652 inline isl::multi_union_pw_aff get_partial_schedule() const;
3653 inline boolean permutable() const;
3654 inline boolean get_permutable() const;
3655 inline schedule_node_band scale(isl::multi_val mv) const;
3656 inline schedule_node_band scale_down(isl::multi_val mv) const;
3657 inline schedule_node_band set_ast_build_options(isl::union_set options) const;
3658 inline schedule_node_band set_permutable(int permutable) const;
3659 inline schedule_node_band shift(isl::multi_union_pw_aff shift) const;
3660 inline schedule_node_band split(int pos) const;
3662 inline schedule_node_band member_set_ast_loop_default(int pos) const;
3663 inline schedule_node_band member_set_ast_loop_atomic(int pos) const;
3664 inline schedule_node_band member_set_ast_loop_unroll(int pos) const;
3665 inline schedule_node_band member_set_ast_loop_separate(int pos) const;
3666};
3667
3668// declarations for isl::schedule_node_context
3669
3671 template <class T>
3672 friend boolean schedule_node::isa() const;
3673 friend schedule_node_context schedule_node::as<schedule_node_context>() const;
3674 static const auto type = isl_schedule_node_context;
3675
3676protected:
3678
3679public:
3680 inline /* implicit */ schedule_node_context();
3681 inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
3683 inline isl::ctx ctx() const;
3684
3685 inline isl::set context() const;
3686 inline isl::set get_context() const;
3687};
3688
3689// declarations for isl::schedule_node_domain
3690
3692 template <class T>
3693 friend boolean schedule_node::isa() const;
3694 friend schedule_node_domain schedule_node::as<schedule_node_domain>() const;
3695 static const auto type = isl_schedule_node_domain;
3696
3697protected:
3699
3700public:
3701 inline /* implicit */ schedule_node_domain();
3702 inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
3704 inline isl::ctx ctx() const;
3705
3706 inline isl::union_set domain() const;
3707 inline isl::union_set get_domain() const;
3708};
3709
3710// declarations for isl::schedule_node_expansion
3711
3713 template <class T>
3714 friend boolean schedule_node::isa() const;
3715 friend schedule_node_expansion schedule_node::as<schedule_node_expansion>() const;
3717
3718protected:
3720
3721public:
3722 inline /* implicit */ schedule_node_expansion();
3723 inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
3725 inline isl::ctx ctx() const;
3726
3727 inline isl::union_pw_multi_aff contraction() const;
3728 inline isl::union_pw_multi_aff get_contraction() const;
3729 inline isl::union_map expansion() const;
3730 inline isl::union_map get_expansion() const;
3731};
3732
3733// declarations for isl::schedule_node_extension
3734
3736 template <class T>
3737 friend boolean schedule_node::isa() const;
3738 friend schedule_node_extension schedule_node::as<schedule_node_extension>() const;
3740
3741protected:
3743
3744public:
3745 inline /* implicit */ schedule_node_extension();
3746 inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
3748 inline isl::ctx ctx() const;
3749
3750 inline isl::union_map extension() const;
3751 inline isl::union_map get_extension() const;
3752};
3753
3754// declarations for isl::schedule_node_filter
3755
3757 template <class T>
3758 friend boolean schedule_node::isa() const;
3759 friend schedule_node_filter schedule_node::as<schedule_node_filter>() const;
3760 static const auto type = isl_schedule_node_filter;
3761
3762protected:
3764
3765public:
3766 inline /* implicit */ schedule_node_filter();
3767 inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
3769 inline isl::ctx ctx() const;
3770
3771 inline isl::union_set filter() const;
3772 inline isl::union_set get_filter() const;
3773};
3774
3775// declarations for isl::schedule_node_guard
3776
3778 template <class T>
3779 friend boolean schedule_node::isa() const;
3780 friend schedule_node_guard schedule_node::as<schedule_node_guard>() const;
3781 static const auto type = isl_schedule_node_guard;
3782
3783protected:
3784 inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
3785
3786public:
3787 inline /* implicit */ schedule_node_guard();
3788 inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
3789 inline schedule_node_guard &operator=(schedule_node_guard obj);
3790 inline isl::ctx ctx() const;
3791
3792 inline isl::set guard() const;
3793 inline isl::set get_guard() const;
3794};
3795
3796// declarations for isl::schedule_node_leaf
3797
3799 template <class T>
3800 friend boolean schedule_node::isa() const;
3801 friend schedule_node_leaf schedule_node::as<schedule_node_leaf>() const;
3802 static const auto type = isl_schedule_node_leaf;
3803
3804protected:
3805 inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
3806
3807public:
3808 inline /* implicit */ schedule_node_leaf();
3809 inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
3810 inline schedule_node_leaf &operator=(schedule_node_leaf obj);
3811 inline isl::ctx ctx() const;
3812
3813};
3814
3815// declarations for isl::schedule_node_mark
3816
3818 template <class T>
3819 friend boolean schedule_node::isa() const;
3820 friend schedule_node_mark schedule_node::as<schedule_node_mark>() const;
3821 static const auto type = isl_schedule_node_mark;
3822
3823protected:
3824 inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
3825
3826public:
3827 inline /* implicit */ schedule_node_mark();
3828 inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
3829 inline schedule_node_mark &operator=(schedule_node_mark obj);
3830 inline isl::ctx ctx() const;
3831
3832 inline isl::id id() const;
3833 inline isl::id get_id() const;
3834};
3835
3836// declarations for isl::schedule_node_sequence
3837
3839 template <class T>
3840 friend boolean schedule_node::isa() const;
3841 friend schedule_node_sequence schedule_node::as<schedule_node_sequence>() const;
3843
3844protected:
3846
3847public:
3848 inline /* implicit */ schedule_node_sequence();
3849 inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
3851 inline isl::ctx ctx() const;
3852
3853};
3854
3855// declarations for isl::schedule_node_set
3856
3858 template <class T>
3859 friend boolean schedule_node::isa() const;
3860 friend schedule_node_set schedule_node::as<schedule_node_set>() const;
3861 static const auto type = isl_schedule_node_set;
3862
3863protected:
3864 inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
3865
3866public:
3867 inline /* implicit */ schedule_node_set();
3868 inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
3869 inline schedule_node_set &operator=(schedule_node_set obj);
3870 inline isl::ctx ctx() const;
3871
3872};
3873
3874// declarations for isl::set
3875inline set manage(__isl_take isl_set *ptr);
3876inline set manage_copy(__isl_keep isl_set *ptr);
3877
3878class set {
3879 friend inline set manage(__isl_take isl_set *ptr);
3880 friend inline set manage_copy(__isl_keep isl_set *ptr);
3881
3882protected:
3883 isl_set *ptr = nullptr;
3884
3885 inline explicit set(__isl_take isl_set *ptr);
3886
3887public:
3888 inline /* implicit */ set();
3889 inline /* implicit */ set(const set &obj);
3890 inline /* implicit */ set(isl::basic_set bset);
3891 inline /* implicit */ set(isl::point pnt);
3892 inline explicit set(isl::union_set uset);
3893 inline explicit set(isl::ctx ctx, const std::string &str);
3894 inline set &operator=(set obj);
3895 inline ~set();
3896 inline __isl_give isl_set *copy() const &;
3897 inline __isl_give isl_set *copy() && = delete;
3898 inline __isl_keep isl_set *get() const;
3899 inline __isl_give isl_set *release();
3900 inline bool is_null() const;
3901 inline isl::ctx ctx() const;
3902
3904 inline isl::set add_dims(isl::dim type, unsigned int n) const;
3905 inline isl::basic_set affine_hull() const;
3906 inline isl::set align_params(isl::space model) const;
3907 inline isl::set apply(isl::map map) const;
3908 inline isl::union_set apply(const isl::union_map &umap) const;
3909 inline isl::set apply(const isl::basic_map &map) const;
3910 inline isl::pw_multi_aff as_pw_multi_aff() const;
3911 inline isl::set as_set() const;
3912 inline isl::basic_set_list basic_set_list() const;
3913 inline isl::basic_set_list get_basic_set_list() const;
3914 inline isl::set bind(isl::multi_id tuple) const;
3915 inline isl::set coalesce() const;
3916 inline isl::set complement() const;
3917 inline isl::union_set compute_divs() const;
3918 inline boolean contains(const isl::space &space) const;
3919 inline isl::basic_set convex_hull() const;
3920 inline isl::set detect_equalities() const;
3921 inline class size dim(isl::dim type) const;
3922 inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
3923 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
3924 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
3925 inline isl::pw_aff dim_max(int pos) const;
3926 inline isl::val dim_max_val(int pos) const;
3927 inline isl::pw_aff dim_min(int pos) const;
3928 inline isl::val dim_min_val(int pos) const;
3929 inline std::string dim_name(isl::dim type, unsigned int pos) const;
3930 inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
3931 inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
3932 inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
3933 static inline isl::set empty(isl::space space);
3934 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
3935 inline isl::set extract_set(const isl::space &space) const;
3936 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
3937 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
3938 inline isl::set fix_si(isl::dim type, unsigned int pos, int value) const;
3939 inline isl::set flatten() const;
3940 inline stat foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const;
3941 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
3942 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
3943 inline isl::set gist(isl::set context) const;
3944 inline isl::union_set gist(const isl::union_set &context) const;
3945 inline isl::set gist(const isl::basic_set &context) const;
3946 inline isl::set gist(const isl::point &context) const;
3947 inline isl::set gist_params(isl::set context) const;
3948 inline boolean has_equal_space(const isl::set &set2) const;
3949 inline isl::map identity() const;
3950 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
3951 inline isl::pw_aff indicator_function() const;
3952 inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
3953 inline isl::map insert_domain(isl::space domain) const;
3954 inline isl::set intersect(isl::set set2) const;
3955 inline isl::union_set intersect(const isl::union_set &uset2) const;
3956 inline isl::set intersect(const isl::basic_set &set2) const;
3957 inline isl::set intersect(const isl::point &set2) const;
3958 inline isl::set intersect_params(isl::set params) const;
3959 inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
3960 inline boolean involves_locals() const;
3961 inline boolean is_bounded() const;
3962 inline boolean is_disjoint(const isl::set &set2) const;
3963 inline boolean is_disjoint(const isl::union_set &uset2) const;
3964 inline boolean is_disjoint(const isl::basic_set &set2) const;
3965 inline boolean is_disjoint(const isl::point &set2) const;
3966 inline boolean is_empty() const;
3967 inline boolean is_equal(const isl::set &set2) const;
3968 inline boolean is_equal(const isl::union_set &uset2) const;
3969 inline boolean is_equal(const isl::basic_set &set2) const;
3970 inline boolean is_equal(const isl::point &set2) const;
3971 inline boolean is_params() const;
3972 inline boolean is_singleton() const;
3973 inline boolean is_strict_subset(const isl::set &set2) const;
3974 inline boolean is_strict_subset(const isl::union_set &uset2) const;
3975 inline boolean is_strict_subset(const isl::basic_set &set2) const;
3976 inline boolean is_strict_subset(const isl::point &set2) const;
3977 inline boolean is_subset(const isl::set &set2) const;
3978 inline boolean is_subset(const isl::union_set &uset2) const;
3979 inline boolean is_subset(const isl::basic_set &set2) const;
3980 inline boolean is_subset(const isl::point &set2) const;
3981 inline boolean is_wrapping() const;
3982 inline boolean isa_set() const;
3983 inline isl::set lexmax() const;
3984 inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
3985 inline isl::set lexmin() const;
3986 inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
3987 inline isl::set lower_bound(isl::multi_pw_aff lower) const;
3988 inline isl::set lower_bound(isl::multi_val lower) const;
3989 inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
3990 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
3991 inline isl::set lower_bound_val(isl::dim type, unsigned int pos, long value) const;
3992 inline isl::multi_pw_aff max_multi_pw_aff() const;
3993 inline isl::val max_val(const isl::aff &obj) const;
3994 inline isl::multi_pw_aff min_multi_pw_aff() const;
3995 inline isl::val min_val(const isl::aff &obj) const;
3996 inline class size n_basic_set() const;
3997 inline isl::set params() const;
3998 inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
3999 inline isl::multi_val plain_multi_val_if_fixed() const;
4000 inline isl::multi_val get_plain_multi_val_if_fixed() const;
4001 inline isl::basic_set polyhedral_hull() const;
4002 inline isl::set preimage(isl::multi_aff ma) const;
4003 inline isl::set preimage(isl::multi_pw_aff mpa) const;
4004 inline isl::set preimage(isl::pw_multi_aff pma) const;
4005 inline isl::union_set preimage(const isl::union_pw_multi_aff &upma) const;
4006 inline isl::set product(isl::set set2) const;
4007 inline isl::set project_out(isl::dim type, unsigned int first, unsigned int n) const;
4008 inline isl::set project_out_all_params() const;
4009 inline isl::set project_out_param(isl::id id) const;
4010 inline isl::set project_out_param(const std::string &id) const;
4011 inline isl::set project_out_param(isl::id_list list) const;
4012 inline isl::pw_multi_aff pw_multi_aff_on_domain(isl::multi_val mv) const;
4013 inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
4014 inline isl::set remove_divs() const;
4015 inline isl::set remove_redundancies() const;
4016 inline isl::set reset_tuple_id() const;
4017 inline isl::basic_set sample() const;
4018 inline isl::point sample_point() const;
4019 inline isl::set set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
4020 inline isl::set set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
4021 inline isl::set_list set_list() const;
4022 inline isl::set set_tuple_id(isl::id id) const;
4023 inline isl::set set_tuple_id(const std::string &id) const;
4024 inline isl::fixed_box simple_fixed_box_hull() const;
4025 inline isl::fixed_box get_simple_fixed_box_hull() const;
4026 inline isl::basic_set simple_hull() const;
4027 inline isl::space space() const;
4028 inline isl::space get_space() const;
4029 inline isl::val stride(int pos) const;
4030 inline isl::val get_stride(int pos) const;
4031 inline isl::set subtract(isl::set set2) const;
4032 inline isl::union_set subtract(const isl::union_set &uset2) const;
4033 inline isl::set subtract(const isl::basic_set &set2) const;
4034 inline isl::set subtract(const isl::point &set2) const;
4035 inline isl::set_list to_list() const;
4036 inline isl::union_set to_union_set() const;
4037 inline isl::map translation() const;
4038 inline class size tuple_dim() const;
4039 inline isl::id tuple_id() const;
4040 inline isl::id get_tuple_id() const;
4041 inline std::string tuple_name() const;
4042 inline std::string get_tuple_name() const;
4043 inline isl::set unbind_params(isl::multi_id tuple) const;
4045 inline isl::set unite(isl::set set2) const;
4046 inline isl::union_set unite(const isl::union_set &uset2) const;
4047 inline isl::set unite(const isl::basic_set &set2) const;
4048 inline isl::set unite(const isl::point &set2) const;
4049 static inline isl::set universe(isl::space space);
4050 inline isl::basic_set unshifted_simple_hull() const;
4051 inline isl::map unwrap() const;
4052 inline isl::set upper_bound(isl::multi_pw_aff upper) const;
4053 inline isl::set upper_bound(isl::multi_val upper) const;
4054 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
4055 inline isl::set upper_bound_val(isl::dim type, unsigned int pos, long value) const;
4056};
4057
4058// declarations for isl::set_list
4059inline set_list manage(__isl_take isl_set_list *ptr);
4060inline set_list manage_copy(__isl_keep isl_set_list *ptr);
4061
4063 friend inline set_list manage(__isl_take isl_set_list *ptr);
4064 friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
4065
4066protected:
4067 isl_set_list *ptr = nullptr;
4068
4069 inline explicit set_list(__isl_take isl_set_list *ptr);
4070
4071public:
4072 inline /* implicit */ set_list();
4073 inline /* implicit */ set_list(const set_list &obj);
4074 inline explicit set_list(isl::ctx ctx, int n);
4075 inline explicit set_list(isl::set el);
4076 inline explicit set_list(isl::ctx ctx, const std::string &str);
4077 inline set_list &operator=(set_list obj);
4078 inline ~set_list();
4079 inline __isl_give isl_set_list *copy() const &;
4080 inline __isl_give isl_set_list *copy() && = delete;
4081 inline __isl_keep isl_set_list *get() const;
4082 inline __isl_give isl_set_list *release();
4083 inline bool is_null() const;
4084 inline isl::ctx ctx() const;
4085
4086 inline isl::set_list add(isl::set el) const;
4087 inline isl::set at(int index) const;
4088 inline isl::set get_at(int index) const;
4089 inline isl::set_list clear() const;
4090 inline isl::set_list concat(isl::set_list list2) const;
4091 inline isl::set_list drop(unsigned int first, unsigned int n) const;
4092 inline stat foreach(const std::function<stat(isl::set)> &fn) const;
4093 inline isl::set_list insert(unsigned int pos, isl::set el) const;
4094 inline class size size() const;
4095};
4096
4097// declarations for isl::space
4098inline space manage(__isl_take isl_space *ptr);
4099inline space manage_copy(__isl_keep isl_space *ptr);
4100
4101class space {
4102 friend inline space manage(__isl_take isl_space *ptr);
4103 friend inline space manage_copy(__isl_keep isl_space *ptr);
4104
4105protected:
4106 isl_space *ptr = nullptr;
4107
4108 inline explicit space(__isl_take isl_space *ptr);
4109
4110public:
4111 inline /* implicit */ space();
4112 inline /* implicit */ space(const space &obj);
4113 inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out);
4114 inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int dim);
4115 inline space &operator=(space obj);
4116 inline ~space();
4117 inline __isl_give isl_space *copy() const &;
4118 inline __isl_give isl_space *copy() && = delete;
4119 inline __isl_keep isl_space *get() const;
4120 inline __isl_give isl_space *release();
4121 inline bool is_null() const;
4122 inline isl::ctx ctx() const;
4123
4124 inline isl::space add_dims(isl::dim type, unsigned int n) const;
4125 inline isl::space add_named_tuple(isl::id tuple_id, unsigned int dim) const;
4126 inline isl::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
4127 inline isl::space add_param(isl::id id) const;
4128 inline isl::space add_param(const std::string &id) const;
4129 inline isl::space add_unnamed_tuple(unsigned int dim) const;
4130 inline isl::space align_params(isl::space space2) const;
4131 inline isl::space curry() const;
4132 inline class size dim(isl::dim type) const;
4133 inline isl::id dim_id(isl::dim type, unsigned int pos) const;
4134 inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
4135 inline isl::space domain() const;
4136 inline isl::multi_aff domain_map_multi_aff() const;
4137 inline isl::pw_multi_aff domain_map_pw_multi_aff() const;
4138 inline isl::id domain_tuple_id() const;
4139 inline isl::id get_domain_tuple_id() const;
4140 inline isl::space drop_dims(isl::dim type, unsigned int first, unsigned int num) const;
4141 inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
4142 inline int find_dim_by_id(isl::dim type, const std::string &id) const;
4143 inline isl::space flatten_domain() const;
4144 inline isl::space flatten_range() const;
4145 inline boolean has_domain_tuple_id() const;
4146 inline boolean has_equal_tuples(const isl::space &space2) const;
4147 inline boolean has_range_tuple_id() const;
4148 inline boolean has_tuple_id(isl::dim type) const;
4149 inline boolean has_tuple_name(isl::dim type) const;
4150 inline isl::multi_aff identity_multi_aff_on_domain() const;
4151 inline isl::multi_pw_aff identity_multi_pw_aff_on_domain() const;
4152 inline isl::pw_multi_aff identity_pw_multi_aff_on_domain() const;
4153 inline boolean is_equal(const isl::space &space2) const;
4154 inline boolean is_params() const;
4155 inline boolean is_set() const;
4156 inline boolean is_wrapping() const;
4158 inline isl::space map_from_set() const;
4159 inline isl::multi_aff multi_aff(isl::aff_list list) const;
4160 inline isl::multi_aff multi_aff_on_domain(isl::multi_val mv) const;
4161 inline isl::multi_id multi_id(isl::id_list list) const;
4162 inline isl::multi_pw_aff multi_pw_aff(isl::pw_aff_list list) const;
4164 inline isl::multi_val multi_val(isl::val_list list) const;
4165 inline isl::aff param_aff_on_domain(isl::id id) const;
4166 inline isl::aff param_aff_on_domain(const std::string &id) const;
4167 inline isl::space params() const;
4168 static inline isl::space params_alloc(isl::ctx ctx, unsigned int nparam);
4169 inline isl::space product(isl::space right) const;
4170 inline isl::space range() const;
4171 inline isl::multi_aff range_map_multi_aff() const;
4172 inline isl::pw_multi_aff range_map_pw_multi_aff() const;
4173 inline isl::space range_reverse() const;
4174 inline isl::id range_tuple_id() const;
4175 inline isl::id get_range_tuple_id() const;
4176 inline isl::space reverse() const;
4177 inline isl::space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
4178 inline isl::space set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const;
4179 inline isl::space set_domain_tuple(isl::id id) const;
4180 inline isl::space set_domain_tuple(const std::string &id) const;
4181 inline isl::space set_from_params() const;
4182 inline isl::space set_range_tuple(isl::id id) const;
4183 inline isl::space set_range_tuple(const std::string &id) const;
4184 inline isl::space set_tuple_id(isl::dim type, isl::id id) const;
4185 inline isl::space set_tuple_id(isl::dim type, const std::string &id) const;
4186 inline isl::id tuple_id(isl::dim type) const;
4187 inline isl::id get_tuple_id(isl::dim type) const;
4188 inline std::string tuple_name(isl::dim type) const;
4189 inline std::string get_tuple_name(isl::dim type) const;
4190 inline isl::space uncurry() const;
4191 static inline isl::space unit(isl::ctx ctx);
4192 inline isl::map universe_map() const;
4193 inline isl::set universe_set() const;
4194 inline isl::space unwrap() const;
4195 inline isl::space wrap() const;
4196 inline isl::aff zero_aff_on_domain() const;
4197 inline isl::multi_aff zero_multi_aff() const;
4198 inline isl::multi_pw_aff zero_multi_pw_aff() const;
4199 inline isl::multi_union_pw_aff zero_multi_union_pw_aff() const;
4200 inline isl::multi_val zero_multi_val() const;
4201};
4202
4203// declarations for isl::union_access_info
4205inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
4206
4210
4211protected:
4213
4215
4216public:
4217 inline /* implicit */ union_access_info();
4218 inline /* implicit */ union_access_info(const union_access_info &obj);
4219 inline explicit union_access_info(isl::union_map sink);
4220 inline union_access_info &operator=(union_access_info obj);
4221 inline ~union_access_info();
4222 inline __isl_give isl_union_access_info *copy() const &;
4223 inline __isl_give isl_union_access_info *copy() && = delete;
4224 inline __isl_keep isl_union_access_info *get() const;
4225 inline __isl_give isl_union_access_info *release();
4226 inline bool is_null() const;
4227 inline isl::ctx ctx() const;
4228
4229 inline isl::union_flow compute_flow() const;
4230 inline isl::union_access_info set_kill(isl::union_map kill) const;
4231 inline isl::union_access_info set_may_source(isl::union_map may_source) const;
4232 inline isl::union_access_info set_must_source(isl::union_map must_source) const;
4233 inline isl::union_access_info set_schedule(isl::schedule schedule) const;
4234 inline isl::union_access_info set_schedule_map(isl::union_map schedule_map) const;
4235};
4236
4237// declarations for isl::union_flow
4238inline union_flow manage(__isl_take isl_union_flow *ptr);
4239inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
4240
4242 friend inline union_flow manage(__isl_take isl_union_flow *ptr);
4243 friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
4244
4245protected:
4246 isl_union_flow *ptr = nullptr;
4247
4248 inline explicit union_flow(__isl_take isl_union_flow *ptr);
4249
4250public:
4251 inline /* implicit */ union_flow();
4252 inline /* implicit */ union_flow(const union_flow &obj);
4253 inline union_flow &operator=(union_flow obj);
4254 inline ~union_flow();
4255 inline __isl_give isl_union_flow *copy() const &;
4256 inline __isl_give isl_union_flow *copy() && = delete;
4257 inline __isl_keep isl_union_flow *get() const;
4258 inline __isl_give isl_union_flow *release();
4259 inline bool is_null() const;
4260 inline isl::ctx ctx() const;
4261
4262 inline isl::union_map full_may_dependence() const;
4263 inline isl::union_map get_full_may_dependence() const;
4264 inline isl::union_map full_must_dependence() const;
4265 inline isl::union_map get_full_must_dependence() const;
4266 inline isl::union_map may_dependence() const;
4267 inline isl::union_map get_may_dependence() const;
4268 inline isl::union_map may_no_source() const;
4269 inline isl::union_map get_may_no_source() const;
4270 inline isl::union_map must_dependence() const;
4271 inline isl::union_map get_must_dependence() const;
4272 inline isl::union_map must_no_source() const;
4273 inline isl::union_map get_must_no_source() const;
4274};
4275
4276// declarations for isl::union_map
4277inline union_map manage(__isl_take isl_union_map *ptr);
4278inline union_map manage_copy(__isl_keep isl_union_map *ptr);
4279
4281 friend inline union_map manage(__isl_take isl_union_map *ptr);
4282 friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
4283
4284protected:
4285 isl_union_map *ptr = nullptr;
4286
4287 inline explicit union_map(__isl_take isl_union_map *ptr);
4288
4289public:
4290 inline /* implicit */ union_map();
4291 inline /* implicit */ union_map(const union_map &obj);
4292 inline /* implicit */ union_map(isl::basic_map bmap);
4293 inline /* implicit */ union_map(isl::map map);
4294 inline explicit union_map(isl::ctx ctx, const std::string &str);
4295 inline union_map &operator=(union_map obj);
4296 inline ~union_map();
4297 inline __isl_give isl_union_map *copy() const &;
4298 inline __isl_give isl_union_map *copy() && = delete;
4299 inline __isl_keep isl_union_map *get() const;
4300 inline __isl_give isl_union_map *release();
4301 inline bool is_null() const;
4302 inline isl::ctx ctx() const;
4303
4304 inline isl::union_map affine_hull() const;
4305 inline isl::union_map apply_domain(isl::union_map umap2) const;
4306 inline isl::union_map apply_range(isl::union_map umap2) const;
4307 inline isl::map as_map() const;
4308 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
4309 inline isl::union_pw_multi_aff as_union_pw_multi_aff() const;
4310 inline isl::union_set bind_range(isl::multi_id tuple) const;
4311 inline isl::union_map coalesce() const;
4312 inline isl::union_map compute_divs() const;
4313 inline isl::union_map curry() const;
4314 inline isl::union_set deltas() const;
4315 inline isl::union_map detect_equalities() const;
4316 inline isl::union_set domain() const;
4317 inline isl::union_map domain_factor_domain() const;
4318 inline isl::union_map domain_factor_range() const;
4319 inline isl::union_map domain_map() const;
4320 inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
4321 inline isl::union_map domain_product(isl::union_map umap2) const;
4322 static inline isl::union_map empty(isl::ctx ctx);
4323 inline isl::union_map eq_at(isl::multi_union_pw_aff mupa) const;
4324 inline boolean every_map(const std::function<boolean(isl::map)> &test) const;
4325 inline isl::map extract_map(isl::space space) const;
4326 inline isl::union_map factor_domain() const;
4327 inline isl::union_map factor_range() const;
4328 inline isl::union_map fixed_power(isl::val exp) const;
4329 inline isl::union_map fixed_power(long exp) const;
4330 inline isl::union_map flat_range_product(isl::union_map umap2) const;
4331 inline stat foreach_map(const std::function<stat(isl::map)> &fn) const;
4332 static inline isl::union_map from(isl::multi_union_pw_aff mupa);
4333 static inline isl::union_map from(isl::union_pw_multi_aff upma);
4334 static inline isl::union_map from_domain(isl::union_set uset);
4335 static inline isl::union_map from_domain_and_range(isl::union_set domain, isl::union_set range);
4336 static inline isl::union_map from_range(isl::union_set uset);
4337 inline isl::union_map gist(isl::union_map context) const;
4338 inline isl::union_map gist_domain(isl::union_set uset) const;
4339 inline isl::union_map gist_params(isl::set set) const;
4340 inline isl::union_map gist_range(isl::union_set uset) const;
4341 inline isl::union_map intersect(isl::union_map umap2) const;
4342 inline isl::union_map intersect_domain(isl::space space) const;
4343 inline isl::union_map intersect_domain(isl::union_set uset) const;
4344 inline isl::union_map intersect_domain_factor_domain(isl::union_map factor) const;
4345 inline isl::union_map intersect_domain_factor_range(isl::union_map factor) const;
4346 inline isl::union_map intersect_params(isl::set set) const;
4347 inline isl::union_map intersect_range(isl::space space) const;
4348 inline isl::union_map intersect_range(isl::union_set uset) const;
4349 inline isl::union_map intersect_range_factor_domain(isl::union_map factor) const;
4350 inline isl::union_map intersect_range_factor_range(isl::union_map factor) const;
4351 inline boolean is_bijective() const;
4352 inline boolean is_disjoint(const isl::union_map &umap2) const;
4353 inline boolean is_empty() const;
4354 inline boolean is_equal(const isl::union_map &umap2) const;
4355 inline boolean is_injective() const;
4356 inline boolean is_single_valued() const;
4357 inline boolean is_strict_subset(const isl::union_map &umap2) const;
4358 inline boolean is_subset(const isl::union_map &umap2) const;
4359 inline boolean isa_map() const;
4360 inline isl::union_map lexmax() const;
4361 inline isl::union_map lexmin() const;
4362 inline isl::map_list map_list() const;
4363 inline isl::map_list get_map_list() const;
4364 inline isl::set params() const;
4365 inline isl::union_map polyhedral_hull() const;
4366 inline isl::union_map preimage_domain(isl::multi_aff ma) const;
4367 inline isl::union_map preimage_domain(isl::multi_pw_aff mpa) const;
4368 inline isl::union_map preimage_domain(isl::pw_multi_aff pma) const;
4369 inline isl::union_map preimage_domain(isl::union_pw_multi_aff upma) const;
4370 inline isl::union_map preimage_range(isl::multi_aff ma) const;
4371 inline isl::union_map preimage_range(isl::pw_multi_aff pma) const;
4372 inline isl::union_map preimage_range(isl::union_pw_multi_aff upma) const;
4373 inline isl::union_map product(isl::union_map umap2) const;
4374 inline isl::union_map project_out_all_params() const;
4375 inline isl::union_set range() const;
4376 inline isl::union_map range_factor_domain() const;
4377 inline isl::union_map range_factor_range() const;
4378 inline isl::union_map range_map() const;
4379 inline isl::union_map range_product(isl::union_map umap2) const;
4380 inline isl::union_map range_reverse() const;
4381 inline isl::union_map reverse() const;
4382 inline isl::space space() const;
4383 inline isl::space get_space() const;
4384 inline isl::union_map subtract(isl::union_map umap2) const;
4385 inline isl::union_map subtract_domain(isl::union_set dom) const;
4386 inline isl::union_map subtract_range(isl::union_set dom) const;
4387 inline isl::union_map uncurry() const;
4388 inline isl::union_map unite(isl::union_map umap2) const;
4389 inline isl::union_map universe() const;
4390 inline isl::union_set wrap() const;
4391 inline isl::union_map zip() const;
4392};
4393
4394// declarations for isl::union_pw_aff
4395inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
4396inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
4397
4399 friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
4401
4402protected:
4403 isl_union_pw_aff *ptr = nullptr;
4404
4405 inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
4406
4407public:
4408 inline /* implicit */ union_pw_aff();
4409 inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
4410 inline /* implicit */ union_pw_aff(isl::aff aff);
4411 inline /* implicit */ union_pw_aff(isl::pw_aff pa);
4412 inline explicit union_pw_aff(isl::ctx ctx, const std::string &str);
4413 inline explicit union_pw_aff(isl::union_set domain, isl::val v);
4414 inline union_pw_aff &operator=(union_pw_aff obj);
4415 inline ~union_pw_aff();
4416 inline __isl_give isl_union_pw_aff *copy() const &;
4417 inline __isl_give isl_union_pw_aff *copy() && = delete;
4418 inline __isl_keep isl_union_pw_aff *get() const;
4419 inline __isl_give isl_union_pw_aff *release();
4420 inline bool is_null() const;
4421 inline isl::ctx ctx() const;
4422
4423 inline isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const;
4424 inline isl::union_pw_aff add(isl::union_pw_aff upa2) const;
4425 inline isl::union_pw_multi_aff add(const isl::union_pw_multi_aff &upma2) const;
4426 inline isl::union_pw_aff add(const isl::aff &upa2) const;
4427 inline isl::union_pw_aff add(const isl::pw_aff &upa2) const;
4428 inline isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const;
4429 inline isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const;
4430 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
4431 inline isl::pw_multi_aff as_pw_multi_aff() const;
4432 inline isl::union_map as_union_map() const;
4433 inline isl::union_pw_aff at(int pos) const;
4434 inline isl::union_set bind(const isl::multi_id &tuple) const;
4435 inline isl::union_set bind(isl::id id) const;
4436 inline isl::union_set bind(const std::string &id) const;
4437 inline isl::union_pw_aff coalesce() const;
4438 inline class size dim(isl::dim type) const;
4439 inline isl::union_set domain() const;
4440 static inline isl::union_pw_aff empty(isl::space space);
4441 inline isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const;
4442 inline isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const;
4443 inline isl::union_pw_multi_aff flat_range_product(const isl::union_pw_multi_aff &upma2) const;
4444 inline stat foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const;
4445 inline isl::union_pw_aff gist(isl::union_set context) const;
4446 inline boolean has_range_tuple_id() const;
4447 inline isl::union_pw_aff intersect_domain(isl::space space) const;
4448 inline isl::union_pw_aff intersect_domain(isl::union_set uset) const;
4449 inline isl::union_pw_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
4450 inline isl::union_pw_aff intersect_domain_wrapped_range(isl::union_set uset) const;
4451 inline isl::union_pw_aff intersect_params(isl::set set) const;
4452 inline boolean involves_locals() const;
4453 inline boolean involves_nan() const;
4454 inline boolean isa_pw_multi_aff() const;
4455 inline isl::union_pw_aff_list list() const;
4456 inline isl::multi_union_pw_aff neg() const;
4457 inline boolean plain_is_empty() const;
4458 inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
4459 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const;
4460 inline isl::union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
4461 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
4464 inline isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const;
4465 inline isl::union_pw_multi_aff range_product(const isl::union_pw_multi_aff &upma2) const;
4466 inline isl::id range_tuple_id() const;
4467 inline isl::multi_union_pw_aff reset_range_tuple_id() const;
4468 inline isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const;
4469 inline isl::multi_union_pw_aff scale(const isl::multi_val &mv) const;
4470 inline isl::multi_union_pw_aff scale(const isl::val &v) const;
4471 inline isl::multi_union_pw_aff scale(long v) const;
4472 inline isl::multi_union_pw_aff scale_down(const isl::multi_val &mv) const;
4473 inline isl::multi_union_pw_aff scale_down(const isl::val &v) const;
4474 inline isl::multi_union_pw_aff scale_down(long v) const;
4475 inline isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const;
4476 inline isl::multi_union_pw_aff set_range_tuple(const isl::id &id) const;
4477 inline isl::multi_union_pw_aff set_range_tuple(const std::string &id) const;
4478 inline isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const;
4479 inline class size size() const;
4480 inline isl::space space() const;
4481 inline isl::space get_space() const;
4482 inline isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const;
4483 inline isl::union_pw_aff sub(isl::union_pw_aff upa2) const;
4484 inline isl::union_pw_multi_aff sub(const isl::union_pw_multi_aff &upma2) const;
4485 inline isl::union_pw_aff sub(const isl::aff &upa2) const;
4486 inline isl::union_pw_aff sub(const isl::pw_aff &upa2) const;
4487 inline isl::union_pw_aff subtract_domain(isl::space space) const;
4488 inline isl::union_pw_aff subtract_domain(isl::union_set uset) const;
4489 inline isl::union_pw_aff_list to_list() const;
4490 inline isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const;
4491 inline isl::union_pw_aff union_add(isl::union_pw_aff upa2) const;
4492 inline isl::union_pw_multi_aff union_add(const isl::union_pw_multi_aff &upma2) const;
4493 inline isl::union_pw_aff union_add(const isl::aff &upa2) const;
4494 inline isl::union_pw_aff union_add(const isl::pw_aff &upa2) const;
4495};
4496
4497// declarations for isl::union_pw_aff_list
4498inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4499inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4500
4502 friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4503 friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4504
4505protected:
4506 isl_union_pw_aff_list *ptr = nullptr;
4507
4508 inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
4509
4510public:
4511 inline /* implicit */ union_pw_aff_list();
4512 inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
4513 inline explicit union_pw_aff_list(isl::ctx ctx, int n);
4514 inline explicit union_pw_aff_list(isl::union_pw_aff el);
4515 inline explicit union_pw_aff_list(isl::ctx ctx, const std::string &str);
4516 inline union_pw_aff_list &operator=(union_pw_aff_list obj);
4517 inline ~union_pw_aff_list();
4518 inline __isl_give isl_union_pw_aff_list *copy() const &;
4519 inline __isl_give isl_union_pw_aff_list *copy() && = delete;
4520 inline __isl_keep isl_union_pw_aff_list *get() const;
4521 inline __isl_give isl_union_pw_aff_list *release();
4522 inline bool is_null() const;
4523 inline isl::ctx ctx() const;
4524
4525 inline isl::union_pw_aff_list add(isl::union_pw_aff el) const;
4526 inline isl::union_pw_aff at(int index) const;
4527 inline isl::union_pw_aff get_at(int index) const;
4528 inline isl::union_pw_aff_list clear() const;
4529 inline isl::union_pw_aff_list concat(isl::union_pw_aff_list list2) const;
4530 inline isl::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
4531 inline stat foreach(const std::function<stat(isl::union_pw_aff)> &fn) const;
4532 inline isl::union_pw_aff_list insert(unsigned int pos, isl::union_pw_aff el) const;
4533 inline class size size() const;
4534};
4535
4536// declarations for isl::union_pw_multi_aff
4539
4543
4544protected:
4546
4548
4549public:
4550 inline /* implicit */ union_pw_multi_aff();
4551 inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
4552 inline explicit union_pw_multi_aff(isl::union_set uset);
4553 inline /* implicit */ union_pw_multi_aff(isl::multi_aff ma);
4554 inline /* implicit */ union_pw_multi_aff(isl::pw_multi_aff pma);
4555 inline explicit union_pw_multi_aff(isl::union_map umap);
4556 inline /* implicit */ union_pw_multi_aff(isl::union_pw_aff upa);
4557 inline explicit union_pw_multi_aff(isl::ctx ctx, const std::string &str);
4558 inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
4559 inline ~union_pw_multi_aff();
4560 inline __isl_give isl_union_pw_multi_aff *copy() const &;
4561 inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
4562 inline __isl_keep isl_union_pw_multi_aff *get() const;
4563 inline __isl_give isl_union_pw_multi_aff *release();
4564 inline bool is_null() const;
4565 inline isl::ctx ctx() const;
4566
4567 inline isl::union_pw_multi_aff add(isl::union_pw_multi_aff upma2) const;
4568 inline isl::union_pw_multi_aff add_pw_multi_aff(isl::pw_multi_aff pma) const;
4569 inline isl::union_pw_multi_aff apply(isl::union_pw_multi_aff upma2) const;
4570 inline isl::multi_union_pw_aff as_multi_union_pw_aff() const;
4571 inline isl::pw_multi_aff as_pw_multi_aff() const;
4572 inline isl::union_map as_union_map() const;
4573 inline isl::union_pw_multi_aff coalesce() const;
4574 inline isl::union_set domain() const;
4575 static inline isl::union_pw_multi_aff empty(isl::space space);
4576 static inline isl::union_pw_multi_aff empty(isl::ctx ctx);
4577 inline isl::pw_multi_aff extract_pw_multi_aff(isl::space space) const;
4578 inline isl::union_pw_multi_aff flat_range_product(isl::union_pw_multi_aff upma2) const;
4580 inline isl::union_pw_multi_aff intersect_domain(isl::space space) const;
4581 inline isl::union_pw_multi_aff intersect_domain(isl::union_set uset) const;
4582 inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
4583 inline isl::union_pw_multi_aff intersect_domain_wrapped_range(isl::union_set uset) const;
4584 inline isl::union_pw_multi_aff intersect_params(isl::set set) const;
4585 inline boolean involves_locals() const;
4586 inline boolean isa_pw_multi_aff() const;
4587 inline boolean plain_is_empty() const;
4588 inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const;
4589 inline isl::union_pw_multi_aff pullback(isl::union_pw_multi_aff upma2) const;
4590 inline isl::pw_multi_aff_list pw_multi_aff_list() const;
4591 inline isl::pw_multi_aff_list get_pw_multi_aff_list() const;
4595 inline isl::space space() const;
4596 inline isl::space get_space() const;
4597 inline isl::union_pw_multi_aff sub(isl::union_pw_multi_aff upma2) const;
4598 inline isl::union_pw_multi_aff subtract_domain(isl::space space) const;
4599 inline isl::union_pw_multi_aff subtract_domain(isl::union_set uset) const;
4600 inline isl::union_pw_multi_aff union_add(isl::union_pw_multi_aff upma2) const;
4601};
4602
4603// declarations for isl::union_set
4604inline union_set manage(__isl_take isl_union_set *ptr);
4605inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4606
4608 friend inline union_set manage(__isl_take isl_union_set *ptr);
4609 friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4610
4611protected:
4612 isl_union_set *ptr = nullptr;
4613
4614 inline explicit union_set(__isl_take isl_union_set *ptr);
4615
4616public:
4617 inline /* implicit */ union_set();
4618 inline /* implicit */ union_set(const union_set &obj);
4619 inline /* implicit */ union_set(isl::basic_set bset);
4620 inline /* implicit */ union_set(isl::point pnt);
4621 inline /* implicit */ union_set(isl::set set);
4622 inline explicit union_set(isl::ctx ctx, const std::string &str);
4623 inline union_set &operator=(union_set obj);
4624 inline ~union_set();
4625 inline __isl_give isl_union_set *copy() const &;
4626 inline __isl_give isl_union_set *copy() && = delete;
4627 inline __isl_keep isl_union_set *get() const;
4628 inline __isl_give isl_union_set *release();
4629 inline bool is_null() const;
4630 inline isl::ctx ctx() const;
4631
4632 inline isl::union_set affine_hull() const;
4633 inline isl::union_set apply(isl::union_map umap) const;
4634 inline isl::set as_set() const;
4635 inline isl::union_set coalesce() const;
4636 inline isl::union_set compute_divs() const;
4637 inline boolean contains(const isl::space &space) const;
4638 inline isl::union_set detect_equalities() const;
4639 static inline isl::union_set empty(isl::ctx ctx);
4640 inline boolean every_set(const std::function<boolean(isl::set)> &test) const;
4641 inline isl::set extract_set(isl::space space) const;
4642 inline stat foreach_point(const std::function<stat(isl::point)> &fn) const;
4643 inline stat foreach_set(const std::function<stat(isl::set)> &fn) const;
4644 inline isl::union_set gist(isl::union_set context) const;
4645 inline isl::union_set gist_params(isl::set set) const;
4646 inline isl::union_map identity() const;
4647 inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
4648 inline isl::union_set intersect(isl::union_set uset2) const;
4649 inline isl::union_set intersect_params(isl::set set) const;
4650 inline boolean is_disjoint(const isl::union_set &uset2) const;
4651 inline boolean is_empty() const;
4652 inline boolean is_equal(const isl::union_set &uset2) const;
4653 inline boolean is_strict_subset(const isl::union_set &uset2) const;
4654 inline boolean is_subset(const isl::union_set &uset2) const;
4655 inline boolean isa_set() const;
4656 inline isl::union_set lexmax() const;
4657 inline isl::union_set lexmin() const;
4658 inline isl::set params() const;
4659 inline isl::union_set polyhedral_hull() const;
4660 inline isl::union_set preimage(isl::multi_aff ma) const;
4661 inline isl::union_set preimage(isl::pw_multi_aff pma) const;
4662 inline isl::union_set preimage(isl::union_pw_multi_aff upma) const;
4663 inline isl::point sample_point() const;
4664 inline isl::set_list set_list() const;
4665 inline isl::set_list get_set_list() const;
4666 inline isl::space space() const;
4667 inline isl::space get_space() const;
4668 inline isl::union_set subtract(isl::union_set uset2) const;
4669 inline isl::union_set_list to_list() const;
4670 inline isl::union_set unite(isl::union_set uset2) const;
4671 inline isl::union_set universe() const;
4672 inline isl::union_map unwrap() const;
4673};
4674
4675// declarations for isl::union_set_list
4676inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4677inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4678
4682
4683protected:
4684 isl_union_set_list *ptr = nullptr;
4685
4686 inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
4687
4688public:
4689 inline /* implicit */ union_set_list();
4690 inline /* implicit */ union_set_list(const union_set_list &obj);
4691 inline explicit union_set_list(isl::ctx ctx, int n);
4692 inline explicit union_set_list(isl::union_set el);
4693 inline explicit union_set_list(isl::ctx ctx, const std::string &str);
4694 inline union_set_list &operator=(union_set_list obj);
4695 inline ~union_set_list();
4696 inline __isl_give isl_union_set_list *copy() const &;
4697 inline __isl_give isl_union_set_list *copy() && = delete;
4698 inline __isl_keep isl_union_set_list *get() const;
4699 inline __isl_give isl_union_set_list *release();
4700 inline bool is_null() const;
4701 inline isl::ctx ctx() const;
4702
4703 inline isl::union_set_list add(isl::union_set el) const;
4704 inline isl::union_set at(int index) const;
4705 inline isl::union_set get_at(int index) const;
4706 inline isl::union_set_list clear() const;
4707 inline isl::union_set_list concat(isl::union_set_list list2) const;
4708 inline isl::union_set_list drop(unsigned int first, unsigned int n) const;
4709 inline stat foreach(const std::function<stat(isl::union_set)> &fn) const;
4710 inline isl::union_set_list insert(unsigned int pos, isl::union_set el) const;
4711 inline class size size() const;
4712};
4713
4714// declarations for isl::val
4715inline val manage(__isl_take isl_val *ptr);
4716inline val manage_copy(__isl_keep isl_val *ptr);
4717
4718class val {
4719 friend inline val manage(__isl_take isl_val *ptr);
4720 friend inline val manage_copy(__isl_keep isl_val *ptr);
4721
4722protected:
4723 isl_val *ptr = nullptr;
4724
4725 inline explicit val(__isl_take isl_val *ptr);
4726
4727public:
4728 inline /* implicit */ val();
4729 inline /* implicit */ val(const val &obj);
4730 inline explicit val(isl::ctx ctx, long i);
4731 inline explicit val(isl::ctx ctx, const std::string &str);
4732 inline val &operator=(val obj);
4733 inline ~val();
4734 inline __isl_give isl_val *copy() const &;
4735 inline __isl_give isl_val *copy() && = delete;
4736 inline __isl_keep isl_val *get() const;
4737 inline __isl_give isl_val *release();
4738 inline bool is_null() const;
4739 inline isl::ctx ctx() const;
4740
4741 inline isl::val abs() const;
4742 inline boolean abs_eq(const isl::val &v2) const;
4743 inline boolean abs_eq(long v2) const;
4744 inline isl::val add(isl::val v2) const;
4745 inline isl::val add(long v2) const;
4746 inline isl::val ceil() const;
4747 inline int cmp_si(long i) const;
4748 inline long den_si() const;
4749 inline long get_den_si() const;
4750 inline isl::val div(isl::val v2) const;
4751 inline isl::val div(long v2) const;
4752 inline boolean eq(const isl::val &v2) const;
4753 inline boolean eq(long v2) const;
4754 inline isl::val floor() const;
4755 inline isl::val gcd(isl::val v2) const;
4756 inline isl::val gcd(long v2) const;
4757 inline boolean ge(const isl::val &v2) const;
4758 inline boolean ge(long v2) const;
4759 inline boolean gt(const isl::val &v2) const;
4760 inline boolean gt(long v2) const;
4761 static inline isl::val infty(isl::ctx ctx);
4762 static inline isl::val int_from_ui(isl::ctx ctx, unsigned long u);
4763 inline isl::val inv() const;
4764 inline boolean is_divisible_by(const isl::val &v2) const;
4765 inline boolean is_divisible_by(long v2) const;
4766 inline boolean is_infty() const;
4767 inline boolean is_int() const;
4768 inline boolean is_nan() const;
4769 inline boolean is_neg() const;
4770 inline boolean is_neginfty() const;
4771 inline boolean is_negone() const;
4772 inline boolean is_nonneg() const;
4773 inline boolean is_nonpos() const;
4774 inline boolean is_one() const;
4775 inline boolean is_pos() const;
4776 inline boolean is_rat() const;
4777 inline boolean is_zero() const;
4778 inline boolean le(const isl::val &v2) const;
4779 inline boolean le(long v2) const;
4780 inline boolean lt(const isl::val &v2) const;
4781 inline boolean lt(long v2) const;
4782 inline isl::val max(isl::val v2) const;
4783 inline isl::val max(long v2) const;
4784 inline isl::val min(isl::val v2) const;
4785 inline isl::val min(long v2) const;
4786 inline isl::val mod(isl::val v2) const;
4787 inline isl::val mod(long v2) const;
4788 inline isl::val mul(isl::val v2) const;
4789 inline isl::val mul(long v2) const;
4790 static inline isl::val nan(isl::ctx ctx);
4791 inline boolean ne(const isl::val &v2) const;
4792 inline boolean ne(long v2) const;
4793 inline isl::val neg() const;
4794 static inline isl::val neginfty(isl::ctx ctx);
4795 static inline isl::val negone(isl::ctx ctx);
4796 inline long num_si() const;
4797 inline long get_num_si() const;
4798 static inline isl::val one(isl::ctx ctx);
4799 inline isl::val pow2() const;
4800 inline int sgn() const;
4801 inline isl::val sub(isl::val v2) const;
4802 inline isl::val sub(long v2) const;
4803 inline isl::val_list to_list() const;
4804 inline isl::val trunc() const;
4805 static inline isl::val zero(isl::ctx ctx);
4806};
4807
4808// declarations for isl::val_list
4809inline val_list manage(__isl_take isl_val_list *ptr);
4810inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4811
4813 friend inline val_list manage(__isl_take isl_val_list *ptr);
4814 friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4815
4816protected:
4817 isl_val_list *ptr = nullptr;
4818
4819 inline explicit val_list(__isl_take isl_val_list *ptr);
4820
4821public:
4822 inline /* implicit */ val_list();
4823 inline /* implicit */ val_list(const val_list &obj);
4824 inline explicit val_list(isl::ctx ctx, int n);
4825 inline explicit val_list(isl::val el);
4826 inline explicit val_list(isl::ctx ctx, const std::string &str);
4827 inline val_list &operator=(val_list obj);
4828 inline ~val_list();
4829 inline __isl_give isl_val_list *copy() const &;
4830 inline __isl_give isl_val_list *copy() && = delete;
4831 inline __isl_keep isl_val_list *get() const;
4832 inline __isl_give isl_val_list *release();
4833 inline bool is_null() const;
4834 inline isl::ctx ctx() const;
4835
4836 inline isl::val_list add(isl::val el) const;
4837 inline isl::val_list add(long el) const;
4838 inline isl::val at(int index) const;
4839 inline isl::val get_at(int index) const;
4840 inline isl::val_list clear() const;
4841 inline isl::val_list concat(isl::val_list list2) const;
4842 inline isl::val_list drop(unsigned int first, unsigned int n) const;
4843 inline stat foreach(const std::function<stat(isl::val)> &fn) const;
4844 inline isl::val_list insert(unsigned int pos, isl::val el) const;
4845 inline isl::val_list insert(unsigned int pos, long el) const;
4846 inline class size size() const;
4847};
4848
4849// implementations for isl::aff
4850aff manage(__isl_take isl_aff *ptr) {
4851 return aff(ptr);
4852}
4854 ptr = isl_aff_copy(ptr);
4855 return aff(ptr);
4856}
4857
4858aff::aff()
4859 : ptr(nullptr) {}
4860
4862 : ptr(nullptr)
4863{
4864 ptr = obj.copy();
4865}
4866
4868 : ptr(ptr) {}
4869
4870aff::aff(isl::ctx ctx, const std::string &str)
4871{
4872 auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
4873 ptr = res;
4874}
4875
4877{
4879 ptr = res;
4880}
4881
4883{
4884 auto res = isl_aff_zero_on_domain(ls.release());
4885 ptr = res;
4886}
4887
4889 std::swap(this->ptr, obj.ptr);
4890 return *this;
4891}
4892
4894 if (ptr)
4896}
4897
4899 return isl_aff_copy(ptr);
4900}
4901
4903 return ptr;
4904}
4905
4907 isl_aff *tmp = ptr;
4908 ptr = nullptr;
4909 return tmp;
4910}
4911
4912bool aff::is_null() const {
4913 return ptr == nullptr;
4914}
4915
4917 return isl::ctx(isl_aff_get_ctx(ptr));
4918}
4919
4921{
4922 auto res = isl_aff_add(copy(), aff2.release());
4923 return manage(res);
4924}
4925
4927{
4928 return isl::multi_aff(*this).add(multi2);
4929}
4930
4932{
4933 return isl::pw_aff(*this).add(multi2);
4934}
4935
4937{
4938 return isl::pw_aff(*this).add(multi2);
4939}
4940
4942{
4943 return isl::pw_aff(*this).add(pwaff2);
4944}
4945
4947{
4948 return isl::pw_aff(*this).add(pma2);
4949}
4950
4952{
4953 return isl::pw_aff(*this).add(upa2);
4954}
4955
4957{
4958 return isl::pw_aff(*this).add(upma2);
4959}
4960
4962{
4964 return manage(res);
4965}
4966
4968{
4969 return this->add_constant(isl::val(ctx(), v));
4970}
4971
4973{
4974 return isl::multi_aff(*this).add_constant(mv);
4975}
4976
4978{
4979 auto res = isl_aff_add_constant_si(copy(), v);
4980 return manage(res);
4981}
4982
4984{
4985 return isl::pw_aff(*this).add_dims(type, n);
4986}
4987
4989{
4990 return isl::pw_aff(*this).add_pw_multi_aff(pma);
4991}
4992
4994{
4995 return isl::pw_aff(*this).apply(upma2);
4996}
4997
4999{
5000 return isl::pw_aff(*this).as_aff();
5001}
5002
5004{
5005 return isl::pw_aff(*this).as_map();
5006}
5007
5009{
5010 return isl::pw_aff(*this).as_multi_aff();
5011}
5012
5014{
5015 return isl::pw_aff(*this).as_multi_union_pw_aff();
5016}
5017
5019{
5020 return isl::pw_aff(*this).as_pw_multi_aff();
5021}
5022
5024{
5025 return isl::multi_aff(*this).as_set();
5026}
5027
5029{
5030 return isl::pw_aff(*this).as_union_map();
5031}
5032
5034{
5035 return isl::multi_aff(*this).at(pos);
5036}
5037
5039{
5040 auto res = isl_aff_bind_id(copy(), id.release());
5041 return manage(res);
5042}
5043
5044isl::basic_set aff::bind(const std::string &id) const
5045{
5046 return this->bind(isl::id(ctx(), id));
5047}
5048
5050{
5051 return isl::multi_aff(*this).bind(tuple);
5052}
5053
5055{
5056 return isl::pw_aff(*this).bind_domain(tuple);
5057}
5058
5060{
5062}
5063
5065{
5066 auto res = isl_aff_ceil(copy());
5067 return manage(res);
5068}
5069
5071{
5072 return isl::pw_aff(*this).coalesce();
5073}
5074
5075isl::pw_aff aff::cond(const isl::pw_aff &pwaff_true, const isl::pw_aff &pwaff_false) const
5076{
5077 return isl::pw_aff(*this).cond(pwaff_true, pwaff_false);
5078}
5079
5081{
5082 return isl::multi_aff(*this).constant_multi_val();
5083}
5084
5086{
5088 return manage(res);
5089}
5090
5092{
5093 return constant_val();
5094}
5095
5097{
5099 return manage(res);
5100}
5101
5103{
5104 return denominator_val();
5105}
5106
5108{
5109 return isl::multi_aff(*this).dim(type);
5110}
5111
5113{
5114 return isl::pw_aff(*this).dim_id(type, pos);
5115}
5116
5118{
5119 auto res = isl_aff_div(copy(), aff2.release());
5120 return manage(res);
5121}
5122
5124{
5125 return isl::pw_aff(*this).div(pa2);
5126}
5127
5129{
5130 return isl::pw_aff(*this).domain();
5131}
5132
5134{
5135 return isl::pw_aff(*this).domain_space();
5136}
5137
5138isl::pw_multi_aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
5139{
5140 return isl::pw_aff(*this).drop_dims(type, first, n);
5141}
5142
5144{
5145 auto res = isl_aff_eq_set(copy(), aff2.release());
5146 return manage(res);
5147}
5148
5150{
5151 return isl::pw_aff(*this).eq_set(pwaff2);
5152}
5153
5155{
5156 auto res = isl_aff_eval(copy(), pnt.release());
5157 return manage(res);
5158}
5159
5161{
5162 return isl::pw_aff(*this).extract_pw_multi_aff(space);
5163}
5164
5166{
5167 return isl::multi_aff(*this).flat_range_product(multi2);
5168}
5169
5171{
5172 return isl::pw_aff(*this).flat_range_product(multi2);
5173}
5174
5176{
5177 return isl::pw_aff(*this).flat_range_product(multi2);
5178}
5179
5181{
5182 return isl::pw_aff(*this).flat_range_product(pma2);
5183}
5184
5186{
5187 return isl::pw_aff(*this).flat_range_product(upma2);
5188}
5189
5191{
5192 auto res = isl_aff_floor(copy());
5193 return manage(res);
5194}
5195
5196stat aff::foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const
5197{
5198 return isl::pw_aff(*this).foreach_piece(fn);
5199}
5200
5202{
5203 return isl::pw_aff(*this).foreach_piece(fn);
5204}
5205
5206stat aff::foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const
5207{
5208 return isl::pw_aff(*this).foreach_pw_aff(fn);
5209}
5210
5212{
5213 auto res = isl_aff_ge_set(copy(), aff2.release());
5214 return manage(res);
5215}
5216
5218{
5219 return isl::pw_aff(*this).ge_set(pwaff2);
5220}
5221
5223{
5224 auto res = isl_aff_gist(copy(), context.release());
5225 return manage(res);
5226}
5227
5229{
5230 return isl::pw_aff(*this).gist(context);
5231}
5232
5234{
5235 return this->gist(isl::set(context));
5236}
5237
5239{
5240 return this->gist(isl::set(context));
5241}
5242
5244{
5245 auto res = isl_aff_gt_set(copy(), aff2.release());
5246 return manage(res);
5247}
5248
5250{
5251 return isl::pw_aff(*this).gt_set(pwaff2);
5252}
5253
5255{
5256 return isl::multi_aff(*this).has_range_tuple_id();
5257}
5258
5260{
5261 return isl::multi_aff(*this).identity();
5262}
5263
5265{
5266 return isl::pw_aff(*this).insert_domain(domain);
5267}
5268
5270{
5271 return isl::pw_aff(*this).intersect_domain(set);
5272}
5273
5275{
5276 return isl::pw_aff(*this).intersect_domain(space);
5277}
5278
5280{
5281 return isl::pw_aff(*this).intersect_domain(uset);
5282}
5283
5285{
5286 return isl::pw_aff(*this).intersect_domain_wrapped_domain(uset);
5287}
5288
5290{
5291 return isl::pw_aff(*this).intersect_domain_wrapped_range(uset);
5292}
5293
5295{
5296 return isl::pw_aff(*this).intersect_params(set);
5297}
5298
5300{
5301 return isl::multi_aff(*this).involves_locals();
5302}
5303
5304boolean aff::involves_nan() const
5305{
5306 return isl::multi_aff(*this).involves_nan();
5307}
5308
5309boolean aff::involves_param(const isl::id &id) const
5310{
5311 return isl::pw_aff(*this).involves_param(id);
5312}
5313
5314boolean aff::involves_param(const std::string &id) const
5315{
5316 return this->involves_param(isl::id(ctx(), id));
5317}
5318
5319boolean aff::involves_param(const isl::id_list &list) const
5320{
5321 return isl::pw_aff(*this).involves_param(list);
5322}
5323
5324boolean aff::is_cst() const
5325{
5326 auto res = isl_aff_is_cst(get());
5327 return manage(res);
5328}
5329
5330boolean aff::is_equal(const isl::pw_aff &pa2) const
5331{
5332 return isl::pw_aff(*this).is_equal(pa2);
5333}
5334
5335boolean aff::isa_aff() const
5336{
5337 return isl::pw_aff(*this).isa_aff();
5338}
5339
5340boolean aff::isa_multi_aff() const
5341{
5342 return isl::pw_aff(*this).isa_multi_aff();
5343}
5344
5346{
5347 return isl::pw_aff(*this).isa_pw_multi_aff();
5348}
5349
5351{
5352 auto res = isl_aff_le_set(copy(), aff2.release());
5353 return manage(res);
5354}
5355
5357{
5358 return isl::pw_aff(*this).le_set(pwaff2);
5359}
5360
5362{
5363 return isl::multi_aff(*this).list();
5364}
5365
5367{
5368 auto res = isl_aff_lt_set(copy(), aff2.release());
5369 return manage(res);
5370}
5371
5373{
5374 return isl::pw_aff(*this).lt_set(pwaff2);
5375}
5376
5378{
5379 return isl::pw_aff(*this).max(multi2);
5380}
5381
5383{
5384 return isl::pw_aff(*this).max(pwaff2);
5385}
5386
5388{
5389 return isl::pw_aff(*this).max_multi_val();
5390}
5391
5393{
5394 return isl::pw_aff(*this).min(multi2);
5395}
5396
5398{
5399 return isl::pw_aff(*this).min(pwaff2);
5400}
5401
5403{
5404 return isl::pw_aff(*this).min_multi_val();
5405}
5406
5408{
5409 auto res = isl_aff_mod_val(copy(), mod.release());
5410 return manage(res);
5411}
5412
5413isl::aff aff::mod(long mod) const
5414{
5415 return this->mod(isl::val(ctx(), mod));
5416}
5417
5419{
5420 auto res = isl_aff_mul(copy(), aff2.release());
5421 return manage(res);
5422}
5423
5425{
5426 return isl::pw_aff(*this).mul(pwaff2);
5427}
5428
5429class size aff::n_piece() const
5430{
5431 return isl::pw_aff(*this).n_piece();
5432}
5433
5435{
5436 auto res = isl_aff_ne_set(copy(), aff2.release());
5437 return manage(res);
5438}
5439
5441{
5442 return isl::pw_aff(*this).ne_set(pwaff2);
5443}
5444
5446{
5447 auto res = isl_aff_neg(copy());
5448 return manage(res);
5449}
5450
5451boolean aff::plain_is_empty() const
5452{
5453 return isl::pw_aff(*this).plain_is_empty();
5454}
5455
5456boolean aff::plain_is_equal(const isl::multi_aff &multi2) const
5457{
5458 return isl::multi_aff(*this).plain_is_equal(multi2);
5459}
5460
5461boolean aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
5462{
5463 return isl::pw_aff(*this).plain_is_equal(multi2);
5464}
5465
5467{
5468 return isl::pw_aff(*this).plain_is_equal(multi2);
5469}
5470
5472{
5473 return isl::pw_aff(*this).preimage_domain_wrapped_domain(pma2);
5474}
5475
5477{
5478 return isl::pw_aff(*this).preimage_domain_wrapped_domain(upma2);
5479}
5480
5482{
5483 return isl::multi_aff(*this).product(multi2);
5484}
5485
5487{
5488 return isl::pw_aff(*this).product(multi2);
5489}
5490
5492{
5493 return isl::pw_aff(*this).product(pma2);
5494}
5495
5497{
5498 auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
5499 return manage(res);
5500}
5501
5503{
5504 return isl::pw_aff(*this).pullback(mpa);
5505}
5506
5508{
5509 return isl::pw_aff(*this).pullback(pma);
5510}
5511
5513{
5514 return isl::pw_aff(*this).pullback(upma);
5515}
5516
5518{
5519 return this->pullback(isl::multi_aff(ma));
5520}
5521
5523{
5524 return isl::pw_aff(*this).pw_multi_aff_list();
5525}
5526
5528{
5529 return isl::pw_aff(*this).range_factor_domain();
5530}
5531
5533{
5534 return isl::pw_aff(*this).range_factor_range();
5535}
5536
5538{
5539 return isl::multi_aff(*this).range_product(multi2);
5540}
5541
5543{
5544 return isl::pw_aff(*this).range_product(multi2);
5545}
5546
5548{
5549 return isl::pw_aff(*this).range_product(multi2);
5550}
5551
5553{
5554 return isl::pw_aff(*this).range_product(pma2);
5555}
5556
5558{
5559 return isl::pw_aff(*this).range_product(upma2);
5560}
5561
5563{
5564 return isl::multi_aff(*this).range_tuple_id();
5565}
5566
5568{
5569 return isl::multi_aff(*this).reset_range_tuple_id();
5570}
5571
5573{
5574 return isl::multi_aff(*this).reset_tuple_id(type);
5575}
5576
5578{
5579 auto res = isl_aff_scale_val(copy(), v.release());
5580 return manage(res);
5581}
5582
5584{
5585 return this->scale(isl::val(ctx(), v));
5586}
5587
5589{
5590 return isl::multi_aff(*this).scale(mv);
5591}
5592
5594{
5595 auto res = isl_aff_scale_down_val(copy(), v.release());
5596 return manage(res);
5597}
5598
5600{
5601 return this->scale_down(isl::val(ctx(), v));
5602}
5603
5605{
5606 return isl::multi_aff(*this).scale_down(mv);
5607}
5608
5610{
5611 return isl::multi_aff(*this).set_aff(pos, el);
5612}
5613
5615{
5616 return isl::multi_aff(*this).set_at(pos, el);
5617}
5618
5620{
5621 return isl::pw_aff(*this).set_at(pos, el);
5622}
5623
5625{
5626 return isl::pw_aff(*this).set_at(pos, el);
5627}
5628
5630{
5631 auto res = isl_aff_set_constant_si(copy(), v);
5632 return manage(res);
5633}
5634
5636{
5637 return isl::pw_aff(*this).set_pw_aff(pos, el);
5638}
5639
5640isl::pw_multi_aff aff::set_pw_aff(unsigned int pos, const isl::pw_aff &pa) const
5641{
5642 return isl::pw_aff(*this).set_pw_aff(pos, pa);
5643}
5644
5646{
5647 return isl::multi_aff(*this).set_range_tuple(id);
5648}
5649
5650isl::multi_aff aff::set_range_tuple(const std::string &id) const
5651{
5652 return this->set_range_tuple(isl::id(ctx(), id));
5653}
5654
5656{
5657 return isl::pw_aff(*this).set_tuple_id(type, id);
5658}
5659
5660isl::pw_aff aff::set_tuple_id(isl::dim type, const std::string &id) const
5661{
5662 return this->set_tuple_id(type, isl::id(ctx(), id));
5663}
5664
5666{
5667 return isl::pw_aff(*this).set_union_pw_aff(pos, el);
5668}
5669
5670class size aff::size() const
5671{
5672 return isl::multi_aff(*this).size();
5673}
5674
5676{
5677 return isl::pw_aff(*this).space();
5678}
5679
5681{
5682 auto res = isl_aff_sub(copy(), aff2.release());
5683 return manage(res);
5684}
5685
5687{
5688 return isl::multi_aff(*this).sub(multi2);
5689}
5690
5692{
5693 return isl::pw_aff(*this).sub(multi2);
5694}
5695
5697{
5698 return isl::pw_aff(*this).sub(multi2);
5699}
5700
5702{
5703 return isl::pw_aff(*this).sub(pwaff2);
5704}
5705
5707{
5708 return isl::pw_aff(*this).sub(pma2);
5709}
5710
5712{
5713 return isl::pw_aff(*this).sub(upa2);
5714}
5715
5717{
5718 return isl::pw_aff(*this).sub(upma2);
5719}
5720
5722{
5723 return isl::pw_aff(*this).subtract_domain(set);
5724}
5725
5727{
5728 return isl::pw_aff(*this).subtract_domain(space);
5729}
5730
5732{
5733 return isl::pw_aff(*this).subtract_domain(uset);
5734}
5735
5737{
5738 return isl::pw_aff(*this).tdiv_q(pa2);
5739}
5740
5742{
5743 return isl::pw_aff(*this).tdiv_r(pa2);
5744}
5745
5747{
5748 auto res = isl_aff_to_list(copy());
5749 return manage(res);
5750}
5751
5753{
5754 return isl::multi_aff(*this).to_multi_pw_aff();
5755}
5756
5758{
5759 return isl::multi_aff(*this).to_multi_union_pw_aff();
5760}
5761
5763{
5764 return isl::multi_aff(*this).to_pw_multi_aff();
5765}
5766
5768{
5769 return isl::pw_aff(*this).to_union_pw_aff();
5770}
5771
5773{
5774 return isl::pw_aff(*this).to_union_pw_multi_aff();
5775}
5776
5778{
5779 return isl::pw_aff(*this).tuple_id(type);
5780}
5781
5783{
5785 return manage(res);
5786}
5787
5789{
5790 return isl::pw_aff(*this).union_add(mpa2);
5791}
5792
5794{
5795 return isl::pw_aff(*this).union_add(mupa2);
5796}
5797
5799{
5800 return isl::pw_aff(*this).union_add(pwaff2);
5801}
5802
5804{
5805 return isl::pw_aff(*this).union_add(pma2);
5806}
5807
5809{
5810 return isl::pw_aff(*this).union_add(upa2);
5811}
5812
5814{
5815 return isl::pw_aff(*this).union_add(upma2);
5816}
5817
5819{
5820 auto res = isl_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
5821 return manage(res);
5822}
5823
5825{
5827 return manage(res);
5828}
5829
5830inline std::ostream &operator<<(std::ostream &os, const aff &obj)
5831{
5832 char *str = isl_aff_to_str(obj.get());
5833 if (!str) {
5834 os.setstate(std::ios_base::badbit);
5835 return os;
5836 }
5837 os << str;
5838 free(str);
5839 return os;
5840}
5841
5842// implementations for isl::aff_list
5843aff_list manage(__isl_take isl_aff_list *ptr) {
5844 return aff_list(ptr);
5845}
5846aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
5847 ptr = isl_aff_list_copy(ptr);
5848 return aff_list(ptr);
5849}
5850
5852 : ptr(nullptr) {}
5853
5855 : ptr(nullptr)
5856{
5857 ptr = obj.copy();
5858}
5859
5861 : ptr(ptr) {}
5862
5864{
5865 auto res = isl_aff_list_alloc(ctx.release(), n);
5866 ptr = res;
5867}
5868
5870{
5871 auto res = isl_aff_list_from_aff(el.release());
5872 ptr = res;
5873}
5874
5876{
5877 auto res = isl_aff_list_read_from_str(ctx.release(), str.c_str());
5878 ptr = res;
5879}
5880
5882 std::swap(this->ptr, obj.ptr);
5883 return *this;
5884}
5885
5887 if (ptr)
5888 isl_aff_list_free(ptr);
5889}
5890
5891__isl_give isl_aff_list *aff_list::copy() const & {
5892 return isl_aff_list_copy(ptr);
5893}
5894
5895__isl_keep isl_aff_list *aff_list::get() const {
5896 return ptr;
5897}
5898
5900 isl_aff_list *tmp = ptr;
5901 ptr = nullptr;
5902 return tmp;
5903}
5904
5905bool aff_list::is_null() const {
5906 return ptr == nullptr;
5907}
5908
5910 return isl::ctx(isl_aff_list_get_ctx(ptr));
5911}
5912
5914{
5915 auto res = isl_aff_list_add(copy(), el.release());
5916 return manage(res);
5917}
5918
5919isl::aff aff_list::at(int index) const
5920{
5921 auto res = isl_aff_list_get_at(get(), index);
5922 return manage(res);
5923}
5924
5926{
5927 return at(index);
5928}
5929
5931{
5932 auto res = isl_aff_list_clear(copy());
5933 return manage(res);
5934}
5935
5937{
5938 auto res = isl_aff_list_concat(copy(), list2.release());
5939 return manage(res);
5940}
5941
5942isl::aff_list aff_list::drop(unsigned int first, unsigned int n) const
5943{
5944 auto res = isl_aff_list_drop(copy(), first, n);
5945 return manage(res);
5946}
5947
5948stat aff_list::foreach(const std::function<stat(isl::aff)> &fn) const
5949{
5950 struct fn_data {
5951 std::function<stat(isl::aff)> func;
5952 } fn_data = { fn };
5953 auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
5954 auto *data = static_cast<struct fn_data *>(arg_1);
5955 auto ret = (data->func)(manage(arg_0));
5956 return ret.release();
5957 };
5958 auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
5959 return manage(res);
5960}
5961
5963{
5964 auto res = isl_aff_list_insert(copy(), pos, el.release());
5965 return manage(res);
5966}
5967
5969{
5970 auto res = isl_aff_list_size(get());
5971 return manage(res);
5972}
5973
5974inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
5975{
5976 char *str = isl_aff_list_to_str(obj.get());
5977 if (!str) {
5978 os.setstate(std::ios_base::badbit);
5979 return os;
5980 }
5981 os << str;
5982 free(str);
5983 return os;
5984}
5985
5986// implementations for isl::ast_build
5988 return ast_build(ptr);
5989}
5991 ptr = isl_ast_build_copy(ptr);
5992 return ast_build(ptr);
5993}
5994
5996 : ptr(nullptr) {}
5997
5999 : ptr(nullptr)
6000{
6001 ptr = obj.copy();
6003}
6004
6006 : ptr(ptr) {}
6007
6009{
6011 ptr = res;
6012}
6013
6015 std::swap(this->ptr, obj.ptr);
6017 return *this;
6018}
6019
6021 if (ptr)
6023}
6024
6026 return isl_ast_build_copy(ptr);
6027}
6028
6030 return ptr;
6031}
6032
6035 isl_die(ctx().get(), isl_error_invalid, "cannot release object with persistent callbacks", return nullptr);
6036 isl_ast_build *tmp = ptr;
6037 ptr = nullptr;
6038 return tmp;
6039}
6040
6042 return ptr == nullptr;
6043}
6044
6047}
6048
6050{
6051 at_each_domain_data = obj.at_each_domain_data;
6052 return *this;
6053}
6054
6056{
6057 auto *data = static_cast<struct at_each_domain_data *>(arg_2);
6058 auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
6059 return ret.release();
6060}
6061
6063{
6064 at_each_domain_data = std::make_shared<struct at_each_domain_data>();
6067}
6068
6070{
6071 auto copy = *this;
6072 copy.set_at_each_domain_data(fn);
6073 return copy;
6074}
6075
6077{
6079 return manage(res);
6080}
6081
6083{
6085 return manage(res);
6086}
6087
6089{
6091 return manage(res);
6092}
6093
6095{
6096 auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
6097 return manage(res);
6098}
6099
6101{
6103 return manage(res);
6104}
6105
6107{
6109 return manage(res);
6110}
6111
6113{
6115 return manage(res);
6116}
6117
6119{
6121 return manage(res);
6122}
6123
6125{
6127 return manage(res);
6128}
6129
6131{
6133 return manage(res).copy_callbacks(*this);
6134}
6135
6137{
6139 return manage(res);
6140}
6141
6143{
6144 return schedule();
6145}
6146
6147// implementations for isl::ast_expr
6149 return ast_expr(ptr);
6150}
6152 ptr = isl_ast_expr_copy(ptr);
6153 return ast_expr(ptr);
6154}
6155
6157 : ptr(nullptr) {}
6158
6160 : ptr(nullptr)
6161{
6162 ptr = obj.copy();
6163}
6164
6166 : ptr(ptr) {}
6167
6169 std::swap(this->ptr, obj.ptr);
6170 return *this;
6171}
6172
6174 if (ptr)
6176}
6177
6179 return isl_ast_expr_copy(ptr);
6180}
6181
6183 return ptr;
6184}
6185
6187 isl_ast_expr *tmp = ptr;
6188 ptr = nullptr;
6189 return tmp;
6190}
6191
6192bool ast_expr::is_null() const {
6193 return ptr == nullptr;
6194}
6195
6196template <typename T, typename>
6197boolean ast_expr::isa_type(T subtype) const
6198{
6199 if (is_null())
6200 return boolean();
6201 return isl_ast_expr_get_type(get()) == subtype;
6202}
6203template <class T>
6204boolean ast_expr::isa() const
6205{
6206 return isa_type<decltype(T::type)>(T::type);
6207}
6208template <class T>
6210{
6211 if (isa<T>().is_false())
6212 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6213 return T(copy());
6214}
6215
6218}
6219
6221{
6222 auto res = isl_ast_expr_add(copy(), expr2.release());
6223 return manage(res);
6224}
6225
6227{
6229 return manage(res);
6230}
6231
6233{
6234 auto res = isl_ast_expr_eq(copy(), expr2.release());
6235 return manage(res);
6236}
6237
6239{
6240 auto res = isl_ast_expr_from_val(v.release());
6241 return manage(res);
6242}
6243
6245{
6246 auto res = isl_ast_expr_get_id(get());
6247 return manage(res);
6248}
6249
6251{
6252 return id();
6253}
6254
6256{
6257 auto res = isl_ast_expr_le(copy(), expr2.release());
6258 return manage(res);
6259}
6260
6262{
6263 auto res = isl_ast_expr_mul(copy(), expr2.release());
6264 return manage(res);
6265}
6266
6268{
6270 return manage(res);
6271}
6272
6274{
6275 return op_arg(pos);
6276}
6277
6278std::string ast_expr::to_C_str() const
6279{
6280 auto res = isl_ast_expr_to_C_str(get());
6281 std::string tmp(res);
6282 free(res);
6283 return tmp;
6284}
6285
6287{
6288 auto res = isl_ast_expr_get_val(get());
6289 return manage(res);
6290}
6291
6293{
6294 return val();
6295}
6296
6297inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
6298{
6299 char *str = isl_ast_expr_to_str(obj.get());
6300 if (!str) {
6301 os.setstate(std::ios_base::badbit);
6302 return os;
6303 }
6304 os << str;
6305 free(str);
6306 return os;
6307}
6308
6309// implementations for isl::ast_expr_id
6311 : ast_expr() {}
6312
6314 : ast_expr(obj)
6315{
6316}
6317
6319 : ast_expr(ptr) {}
6320
6322 std::swap(this->ptr, obj.ptr);
6323 return *this;
6324}
6325
6328}
6329
6331{
6332 auto res = isl_ast_expr_id_get_id(get());
6333 return manage(res);
6334}
6335
6337{
6338 return id();
6339}
6340
6341inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
6342{
6343 char *str = isl_ast_expr_to_str(obj.get());
6344 if (!str) {
6345 os.setstate(std::ios_base::badbit);
6346 return os;
6347 }
6348 os << str;
6349 free(str);
6350 return os;
6351}
6352
6353// implementations for isl::ast_expr_int
6355 : ast_expr() {}
6356
6358 : ast_expr(obj)
6359{
6360}
6361
6363 : ast_expr(ptr) {}
6364
6366 std::swap(this->ptr, obj.ptr);
6367 return *this;
6368}
6369
6372}
6373
6375{
6377 return manage(res);
6378}
6379
6381{
6382 return val();
6383}
6384
6385inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
6386{
6387 char *str = isl_ast_expr_to_str(obj.get());
6388 if (!str) {
6389 os.setstate(std::ios_base::badbit);
6390 return os;
6391 }
6392 os << str;
6393 free(str);
6394 return os;
6395}
6396
6397// implementations for isl::ast_expr_op
6399 : ast_expr() {}
6400
6402 : ast_expr(obj)
6403{
6404}
6405
6407 : ast_expr(ptr) {}
6408
6410 std::swap(this->ptr, obj.ptr);
6411 return *this;
6412}
6413
6414template <typename T, typename>
6415boolean ast_expr_op::isa_type(T subtype) const
6416{
6417 if (is_null())
6418 return boolean();
6419 return isl_ast_expr_op_get_type(get()) == subtype;
6420}
6421template <class T>
6422boolean ast_expr_op::isa() const
6423{
6424 return isa_type<decltype(T::type)>(T::type);
6425}
6426template <class T>
6428{
6429 if (isa<T>().is_false())
6430 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6431 return T(copy());
6432}
6433
6436}
6437
6439{
6441 return manage(res);
6442}
6443
6445{
6446 return arg(pos);
6447}
6448
6450{
6452 return manage(res);
6453}
6454
6456{
6457 return n_arg();
6458}
6459
6460inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
6461{
6462 char *str = isl_ast_expr_to_str(obj.get());
6463 if (!str) {
6464 os.setstate(std::ios_base::badbit);
6465 return os;
6466 }
6467 os << str;
6468 free(str);
6469 return os;
6470}
6471
6472// implementations for isl::ast_expr_op_access
6474 : ast_expr_op() {}
6475
6477 : ast_expr_op(obj)
6478{
6479}
6480
6482 : ast_expr_op(ptr) {}
6483
6485 std::swap(this->ptr, obj.ptr);
6486 return *this;
6487}
6488
6491}
6492
6493inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
6494{
6495 char *str = isl_ast_expr_to_str(obj.get());
6496 if (!str) {
6497 os.setstate(std::ios_base::badbit);
6498 return os;
6499 }
6500 os << str;
6501 free(str);
6502 return os;
6503}
6504
6505// implementations for isl::ast_expr_op_add
6507 : ast_expr_op() {}
6508
6510 : ast_expr_op(obj)
6511{
6512}
6513
6515 : ast_expr_op(ptr) {}
6516
6518 std::swap(this->ptr, obj.ptr);
6519 return *this;
6520}
6521
6524}
6525
6526inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
6527{
6528 char *str = isl_ast_expr_to_str(obj.get());
6529 if (!str) {
6530 os.setstate(std::ios_base::badbit);
6531 return os;
6532 }
6533 os << str;
6534 free(str);
6535 return os;
6536}
6537
6538// implementations for isl::ast_expr_op_address_of
6540 : ast_expr_op() {}
6541
6543 : ast_expr_op(obj)
6544{
6545}
6546
6548 : ast_expr_op(ptr) {}
6549
6551 std::swap(this->ptr, obj.ptr);
6552 return *this;
6553}
6554
6557}
6558
6559inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
6560{
6561 char *str = isl_ast_expr_to_str(obj.get());
6562 if (!str) {
6563 os.setstate(std::ios_base::badbit);
6564 return os;
6565 }
6566 os << str;
6567 free(str);
6568 return os;
6569}
6570
6571// implementations for isl::ast_expr_op_and
6573 : ast_expr_op() {}
6574
6576 : ast_expr_op(obj)
6577{
6578}
6579
6581 : ast_expr_op(ptr) {}
6582
6584 std::swap(this->ptr, obj.ptr);
6585 return *this;
6586}
6587
6590}
6591
6592inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
6593{
6594 char *str = isl_ast_expr_to_str(obj.get());
6595 if (!str) {
6596 os.setstate(std::ios_base::badbit);
6597 return os;
6598 }
6599 os << str;
6600 free(str);
6601 return os;
6602}
6603
6604// implementations for isl::ast_expr_op_and_then
6606 : ast_expr_op() {}
6607
6609 : ast_expr_op(obj)
6610{
6611}
6612
6614 : ast_expr_op(ptr) {}
6615
6617 std::swap(this->ptr, obj.ptr);
6618 return *this;
6619}
6620
6623}
6624
6625inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
6626{
6627 char *str = isl_ast_expr_to_str(obj.get());
6628 if (!str) {
6629 os.setstate(std::ios_base::badbit);
6630 return os;
6631 }
6632 os << str;
6633 free(str);
6634 return os;
6635}
6636
6637// implementations for isl::ast_expr_op_call
6639 : ast_expr_op() {}
6640
6642 : ast_expr_op(obj)
6643{
6644}
6645
6647 : ast_expr_op(ptr) {}
6648
6650 std::swap(this->ptr, obj.ptr);
6651 return *this;
6652}
6653
6656}
6657
6658inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
6659{
6660 char *str = isl_ast_expr_to_str(obj.get());
6661 if (!str) {
6662 os.setstate(std::ios_base::badbit);
6663 return os;
6664 }
6665 os << str;
6666 free(str);
6667 return os;
6668}
6669
6670// implementations for isl::ast_expr_op_cond
6672 : ast_expr_op() {}
6673
6675 : ast_expr_op(obj)
6676{
6677}
6678
6680 : ast_expr_op(ptr) {}
6681
6683 std::swap(this->ptr, obj.ptr);
6684 return *this;
6685}
6686
6689}
6690
6691inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
6692{
6693 char *str = isl_ast_expr_to_str(obj.get());
6694 if (!str) {
6695 os.setstate(std::ios_base::badbit);
6696 return os;
6697 }
6698 os << str;
6699 free(str);
6700 return os;
6701}
6702
6703// implementations for isl::ast_expr_op_div
6705 : ast_expr_op() {}
6706
6708 : ast_expr_op(obj)
6709{
6710}
6711
6713 : ast_expr_op(ptr) {}
6714
6716 std::swap(this->ptr, obj.ptr);
6717 return *this;
6718}
6719
6722}
6723
6724inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
6725{
6726 char *str = isl_ast_expr_to_str(obj.get());
6727 if (!str) {
6728 os.setstate(std::ios_base::badbit);
6729 return os;
6730 }
6731 os << str;
6732 free(str);
6733 return os;
6734}
6735
6736// implementations for isl::ast_expr_op_eq
6738 : ast_expr_op() {}
6739
6741 : ast_expr_op(obj)
6742{
6743}
6744
6746 : ast_expr_op(ptr) {}
6747
6749 std::swap(this->ptr, obj.ptr);
6750 return *this;
6751}
6752
6755}
6756
6757inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
6758{
6759 char *str = isl_ast_expr_to_str(obj.get());
6760 if (!str) {
6761 os.setstate(std::ios_base::badbit);
6762 return os;
6763 }
6764 os << str;
6765 free(str);
6766 return os;
6767}
6768
6769// implementations for isl::ast_expr_op_fdiv_q
6771 : ast_expr_op() {}
6772
6774 : ast_expr_op(obj)
6775{
6776}
6777
6779 : ast_expr_op(ptr) {}
6780
6782 std::swap(this->ptr, obj.ptr);
6783 return *this;
6784}
6785
6788}
6789
6790inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
6791{
6792 char *str = isl_ast_expr_to_str(obj.get());
6793 if (!str) {
6794 os.setstate(std::ios_base::badbit);
6795 return os;
6796 }
6797 os << str;
6798 free(str);
6799 return os;
6800}
6801
6802// implementations for isl::ast_expr_op_ge
6804 : ast_expr_op() {}
6805
6807 : ast_expr_op(obj)
6808{
6809}
6810
6812 : ast_expr_op(ptr) {}
6813
6815 std::swap(this->ptr, obj.ptr);
6816 return *this;
6817}
6818
6821}
6822
6823inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
6824{
6825 char *str = isl_ast_expr_to_str(obj.get());
6826 if (!str) {
6827 os.setstate(std::ios_base::badbit);
6828 return os;
6829 }
6830 os << str;
6831 free(str);
6832 return os;
6833}
6834
6835// implementations for isl::ast_expr_op_gt
6837 : ast_expr_op() {}
6838
6840 : ast_expr_op(obj)
6841{
6842}
6843
6845 : ast_expr_op(ptr) {}
6846
6848 std::swap(this->ptr, obj.ptr);
6849 return *this;
6850}
6851
6854}
6855
6856inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
6857{
6858 char *str = isl_ast_expr_to_str(obj.get());
6859 if (!str) {
6860 os.setstate(std::ios_base::badbit);
6861 return os;
6862 }
6863 os << str;
6864 free(str);
6865 return os;
6866}
6867
6868// implementations for isl::ast_expr_op_le
6870 : ast_expr_op() {}
6871
6873 : ast_expr_op(obj)
6874{
6875}
6876
6878 : ast_expr_op(ptr) {}
6879
6881 std::swap(this->ptr, obj.ptr);
6882 return *this;
6883}
6884
6887}
6888
6889inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
6890{
6891 char *str = isl_ast_expr_to_str(obj.get());
6892 if (!str) {
6893 os.setstate(std::ios_base::badbit);
6894 return os;
6895 }
6896 os << str;
6897 free(str);
6898 return os;
6899}
6900
6901// implementations for isl::ast_expr_op_lt
6903 : ast_expr_op() {}
6904
6906 : ast_expr_op(obj)
6907{
6908}
6909
6911 : ast_expr_op(ptr) {}
6912
6914 std::swap(this->ptr, obj.ptr);
6915 return *this;
6916}
6917
6920}
6921
6922inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
6923{
6924 char *str = isl_ast_expr_to_str(obj.get());
6925 if (!str) {
6926 os.setstate(std::ios_base::badbit);
6927 return os;
6928 }
6929 os << str;
6930 free(str);
6931 return os;
6932}
6933
6934// implementations for isl::ast_expr_op_max
6936 : ast_expr_op() {}
6937
6939 : ast_expr_op(obj)
6940{
6941}
6942
6944 : ast_expr_op(ptr) {}
6945
6947 std::swap(this->ptr, obj.ptr);
6948 return *this;
6949}
6950
6953}
6954
6955inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
6956{
6957 char *str = isl_ast_expr_to_str(obj.get());
6958 if (!str) {
6959 os.setstate(std::ios_base::badbit);
6960 return os;
6961 }
6962 os << str;
6963 free(str);
6964 return os;
6965}
6966
6967// implementations for isl::ast_expr_op_member
6969 : ast_expr_op() {}
6970
6972 : ast_expr_op(obj)
6973{
6974}
6975
6977 : ast_expr_op(ptr) {}
6978
6980 std::swap(this->ptr, obj.ptr);
6981 return *this;
6982}
6983
6986}
6987
6988inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
6989{
6990 char *str = isl_ast_expr_to_str(obj.get());
6991 if (!str) {
6992 os.setstate(std::ios_base::badbit);
6993 return os;
6994 }
6995 os << str;
6996 free(str);
6997 return os;
6998}
6999
7000// implementations for isl::ast_expr_op_min
7002 : ast_expr_op() {}
7003
7005 : ast_expr_op(obj)
7006{
7007}
7008
7010 : ast_expr_op(ptr) {}
7011
7013 std::swap(this->ptr, obj.ptr);
7014 return *this;
7015}
7016
7019}
7020
7021inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
7022{
7023 char *str = isl_ast_expr_to_str(obj.get());
7024 if (!str) {
7025 os.setstate(std::ios_base::badbit);
7026 return os;
7027 }
7028 os << str;
7029 free(str);
7030 return os;
7031}
7032
7033// implementations for isl::ast_expr_op_minus
7035 : ast_expr_op() {}
7036
7038 : ast_expr_op(obj)
7039{
7040}
7041
7043 : ast_expr_op(ptr) {}
7044
7046 std::swap(this->ptr, obj.ptr);
7047 return *this;
7048}
7049
7052}
7053
7054inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
7055{
7056 char *str = isl_ast_expr_to_str(obj.get());
7057 if (!str) {
7058 os.setstate(std::ios_base::badbit);
7059 return os;
7060 }
7061 os << str;
7062 free(str);
7063 return os;
7064}
7065
7066// implementations for isl::ast_expr_op_mul
7068 : ast_expr_op() {}
7069
7071 : ast_expr_op(obj)
7072{
7073}
7074
7076 : ast_expr_op(ptr) {}
7077
7079 std::swap(this->ptr, obj.ptr);
7080 return *this;
7081}
7082
7085}
7086
7087inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
7088{
7089 char *str = isl_ast_expr_to_str(obj.get());
7090 if (!str) {
7091 os.setstate(std::ios_base::badbit);
7092 return os;
7093 }
7094 os << str;
7095 free(str);
7096 return os;
7097}
7098
7099// implementations for isl::ast_expr_op_or
7101 : ast_expr_op() {}
7102
7104 : ast_expr_op(obj)
7105{
7106}
7107
7109 : ast_expr_op(ptr) {}
7110
7112 std::swap(this->ptr, obj.ptr);
7113 return *this;
7114}
7115
7118}
7119
7120inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
7121{
7122 char *str = isl_ast_expr_to_str(obj.get());
7123 if (!str) {
7124 os.setstate(std::ios_base::badbit);
7125 return os;
7126 }
7127 os << str;
7128 free(str);
7129 return os;
7130}
7131
7132// implementations for isl::ast_expr_op_or_else
7134 : ast_expr_op() {}
7135
7137 : ast_expr_op(obj)
7138{
7139}
7140
7142 : ast_expr_op(ptr) {}
7143
7145 std::swap(this->ptr, obj.ptr);
7146 return *this;
7147}
7148
7151}
7152
7153inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
7154{
7155 char *str = isl_ast_expr_to_str(obj.get());
7156 if (!str) {
7157 os.setstate(std::ios_base::badbit);
7158 return os;
7159 }
7160 os << str;
7161 free(str);
7162 return os;
7163}
7164
7165// implementations for isl::ast_expr_op_pdiv_q
7167 : ast_expr_op() {}
7168
7170 : ast_expr_op(obj)
7171{
7172}
7173
7175 : ast_expr_op(ptr) {}
7176
7178 std::swap(this->ptr, obj.ptr);
7179 return *this;
7180}
7181
7184}
7185
7186inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
7187{
7188 char *str = isl_ast_expr_to_str(obj.get());
7189 if (!str) {
7190 os.setstate(std::ios_base::badbit);
7191 return os;
7192 }
7193 os << str;
7194 free(str);
7195 return os;
7196}
7197
7198// implementations for isl::ast_expr_op_pdiv_r
7200 : ast_expr_op() {}
7201
7203 : ast_expr_op(obj)
7204{
7205}
7206
7208 : ast_expr_op(ptr) {}
7209
7211 std::swap(this->ptr, obj.ptr);
7212 return *this;
7213}
7214
7217}
7218
7219inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
7220{
7221 char *str = isl_ast_expr_to_str(obj.get());
7222 if (!str) {
7223 os.setstate(std::ios_base::badbit);
7224 return os;
7225 }
7226 os << str;
7227 free(str);
7228 return os;
7229}
7230
7231// implementations for isl::ast_expr_op_select
7233 : ast_expr_op() {}
7234
7236 : ast_expr_op(obj)
7237{
7238}
7239
7241 : ast_expr_op(ptr) {}
7242
7244 std::swap(this->ptr, obj.ptr);
7245 return *this;
7246}
7247
7250}
7251
7252inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
7253{
7254 char *str = isl_ast_expr_to_str(obj.get());
7255 if (!str) {
7256 os.setstate(std::ios_base::badbit);
7257 return os;
7258 }
7259 os << str;
7260 free(str);
7261 return os;
7262}
7263
7264// implementations for isl::ast_expr_op_sub
7266 : ast_expr_op() {}
7267
7269 : ast_expr_op(obj)
7270{
7271}
7272
7274 : ast_expr_op(ptr) {}
7275
7277 std::swap(this->ptr, obj.ptr);
7278 return *this;
7279}
7280
7283}
7284
7285inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
7286{
7287 char *str = isl_ast_expr_to_str(obj.get());
7288 if (!str) {
7289 os.setstate(std::ios_base::badbit);
7290 return os;
7291 }
7292 os << str;
7293 free(str);
7294 return os;
7295}
7296
7297// implementations for isl::ast_expr_op_zdiv_r
7299 : ast_expr_op() {}
7300
7302 : ast_expr_op(obj)
7303{
7304}
7305
7307 : ast_expr_op(ptr) {}
7308
7310 std::swap(this->ptr, obj.ptr);
7311 return *this;
7312}
7313
7316}
7317
7318inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
7319{
7320 char *str = isl_ast_expr_to_str(obj.get());
7321 if (!str) {
7322 os.setstate(std::ios_base::badbit);
7323 return os;
7324 }
7325 os << str;
7326 free(str);
7327 return os;
7328}
7329
7330// implementations for isl::ast_node
7332 return ast_node(ptr);
7333}
7335 ptr = isl_ast_node_copy(ptr);
7336 return ast_node(ptr);
7337}
7338
7340 : ptr(nullptr) {}
7341
7343 : ptr(nullptr)
7344{
7345 ptr = obj.copy();
7346}
7347
7349 : ptr(ptr) {}
7350
7352 std::swap(this->ptr, obj.ptr);
7353 return *this;
7354}
7355
7357 if (ptr)
7359}
7360
7362 return isl_ast_node_copy(ptr);
7363}
7364
7366 return ptr;
7367}
7368
7370 isl_ast_node *tmp = ptr;
7371 ptr = nullptr;
7372 return tmp;
7373}
7374
7375bool ast_node::is_null() const {
7376 return ptr == nullptr;
7377}
7378
7379template <typename T, typename>
7380boolean ast_node::isa_type(T subtype) const
7381{
7382 if (is_null())
7383 return boolean();
7384 return isl_ast_node_get_type(get()) == subtype;
7385}
7386template <class T>
7387boolean ast_node::isa() const
7388{
7389 return isa_type<decltype(T::type)>(T::type);
7390}
7391template <class T>
7393{
7394 if (isa<T>().is_false())
7395 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
7396 return T(copy());
7397}
7398
7401}
7402
7404{
7406 return manage(res);
7407}
7408
7410{
7411 return annotation();
7412}
7413
7414std::string ast_node::to_C_str() const
7415{
7416 auto res = isl_ast_node_to_C_str(get());
7417 std::string tmp(res);
7418 free(res);
7419 return tmp;
7420}
7421
7423{
7424 auto res = isl_ast_node_to_list(copy());
7425 return manage(res);
7426}
7427
7428inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
7429{
7430 char *str = isl_ast_node_to_str(obj.get());
7431 if (!str) {
7432 os.setstate(std::ios_base::badbit);
7433 return os;
7434 }
7435 os << str;
7436 free(str);
7437 return os;
7438}
7439
7440// implementations for isl::ast_node_block
7442 : ast_node() {}
7443
7445 : ast_node(obj)
7446{
7447}
7448
7450 : ast_node(ptr) {}
7451
7453 std::swap(this->ptr, obj.ptr);
7454 return *this;
7455}
7456
7459}
7460
7462{
7464 return manage(res);
7465}
7466
7468{
7469 return children();
7470}
7471
7472inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
7473{
7474 char *str = isl_ast_node_to_str(obj.get());
7475 if (!str) {
7476 os.setstate(std::ios_base::badbit);
7477 return os;
7478 }
7479 os << str;
7480 free(str);
7481 return os;
7482}
7483
7484// implementations for isl::ast_node_for
7486 : ast_node() {}
7487
7489 : ast_node(obj)
7490{
7491}
7492
7494 : ast_node(ptr) {}
7495
7497 std::swap(this->ptr, obj.ptr);
7498 return *this;
7499}
7500
7503}
7504
7506{
7508 return manage(res);
7509}
7510
7512{
7513 return body();
7514}
7515
7517{
7519 return manage(res);
7520}
7521
7523{
7524 return cond();
7525}
7526
7528{
7530 return manage(res);
7531}
7532
7534{
7535 return inc();
7536}
7537
7539{
7541 return manage(res);
7542}
7543
7545{
7546 return init();
7547}
7548
7550{
7552 return manage(res);
7553}
7554
7556{
7558 return manage(res);
7559}
7560
7562{
7563 return iterator();
7564}
7565
7566inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
7567{
7568 char *str = isl_ast_node_to_str(obj.get());
7569 if (!str) {
7570 os.setstate(std::ios_base::badbit);
7571 return os;
7572 }
7573 os << str;
7574 free(str);
7575 return os;
7576}
7577
7578// implementations for isl::ast_node_if
7580 : ast_node() {}
7581
7583 : ast_node(obj)
7584{
7585}
7586
7588 : ast_node(ptr) {}
7589
7591 std::swap(this->ptr, obj.ptr);
7592 return *this;
7593}
7594
7597}
7598
7600{
7602 return manage(res);
7603}
7604
7606{
7607 return cond();
7608}
7609
7611{
7613 return manage(res);
7614}
7615
7617{
7618 return else_node();
7619}
7620
7622{
7624 return manage(res);
7625}
7626
7628{
7630 return manage(res);
7631}
7632
7634{
7635 return then_node();
7636}
7637
7638inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
7639{
7640 char *str = isl_ast_node_to_str(obj.get());
7641 if (!str) {
7642 os.setstate(std::ios_base::badbit);
7643 return os;
7644 }
7645 os << str;
7646 free(str);
7647 return os;
7648}
7649
7650// implementations for isl::ast_node_list
7651ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
7652 return ast_node_list(ptr);
7653}
7654ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
7655 ptr = isl_ast_node_list_copy(ptr);
7656 return ast_node_list(ptr);
7657}
7658
7660 : ptr(nullptr) {}
7661
7663 : ptr(nullptr)
7664{
7665 ptr = obj.copy();
7666}
7667
7669 : ptr(ptr) {}
7670
7672{
7673 auto res = isl_ast_node_list_alloc(ctx.release(), n);
7674 ptr = res;
7675}
7676
7678{
7679 auto res = isl_ast_node_list_from_ast_node(el.release());
7680 ptr = res;
7681}
7682
7684 std::swap(this->ptr, obj.ptr);
7685 return *this;
7686}
7687
7689 if (ptr)
7690 isl_ast_node_list_free(ptr);
7691}
7692
7693__isl_give isl_ast_node_list *ast_node_list::copy() const & {
7694 return isl_ast_node_list_copy(ptr);
7695}
7696
7697__isl_keep isl_ast_node_list *ast_node_list::get() const {
7698 return ptr;
7699}
7700
7702 isl_ast_node_list *tmp = ptr;
7703 ptr = nullptr;
7704 return tmp;
7705}
7706
7708 return ptr == nullptr;
7709}
7710
7712 return isl::ctx(isl_ast_node_list_get_ctx(ptr));
7713}
7714
7716{
7717 auto res = isl_ast_node_list_add(copy(), el.release());
7718 return manage(res);
7719}
7720
7722{
7723 auto res = isl_ast_node_list_get_at(get(), index);
7724 return manage(res);
7725}
7726
7728{
7729 return at(index);
7730}
7731
7733{
7734 auto res = isl_ast_node_list_clear(copy());
7735 return manage(res);
7736}
7737
7739{
7740 auto res = isl_ast_node_list_concat(copy(), list2.release());
7741 return manage(res);
7742}
7743
7744isl::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
7745{
7746 auto res = isl_ast_node_list_drop(copy(), first, n);
7747 return manage(res);
7748}
7749
7750stat ast_node_list::foreach(const std::function<stat(isl::ast_node)> &fn) const
7751{
7752 struct fn_data {
7753 std::function<stat(isl::ast_node)> func;
7754 } fn_data = { fn };
7755 auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
7756 auto *data = static_cast<struct fn_data *>(arg_1);
7757 auto ret = (data->func)(manage(arg_0));
7758 return ret.release();
7759 };
7760 auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
7761 return manage(res);
7762}
7763
7765{
7766 auto res = isl_ast_node_list_insert(copy(), pos, el.release());
7767 return manage(res);
7768}
7769
7771{
7772 auto res = isl_ast_node_list_size(get());
7773 return manage(res);
7774}
7775
7776inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
7777{
7778 char *str = isl_ast_node_list_to_str(obj.get());
7779 if (!str) {
7780 os.setstate(std::ios_base::badbit);
7781 return os;
7782 }
7783 os << str;
7784 free(str);
7785 return os;
7786}
7787
7788// implementations for isl::ast_node_mark
7790 : ast_node() {}
7791
7793 : ast_node(obj)
7794{
7795}
7796
7798 : ast_node(ptr) {}
7799
7801 std::swap(this->ptr, obj.ptr);
7802 return *this;
7803}
7804
7807}
7808
7810{
7812 return manage(res);
7813}
7814
7816{
7817 return id();
7818}
7819
7821{
7823 return manage(res);
7824}
7825
7827{
7828 return node();
7829}
7830
7831inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
7832{
7833 char *str = isl_ast_node_to_str(obj.get());
7834 if (!str) {
7835 os.setstate(std::ios_base::badbit);
7836 return os;
7837 }
7838 os << str;
7839 free(str);
7840 return os;
7841}
7842
7843// implementations for isl::ast_node_user
7845 : ast_node() {}
7846
7848 : ast_node(obj)
7849{
7850}
7851
7853 : ast_node(ptr) {}
7854
7856 std::swap(this->ptr, obj.ptr);
7857 return *this;
7858}
7859
7862}
7863
7865{
7867 return manage(res);
7868}
7869
7871{
7872 return expr();
7873}
7874
7875inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
7876{
7877 char *str = isl_ast_node_to_str(obj.get());
7878 if (!str) {
7879 os.setstate(std::ios_base::badbit);
7880 return os;
7881 }
7882 os << str;
7883 free(str);
7884 return os;
7885}
7886
7887// implementations for isl::basic_map
7889 return basic_map(ptr);
7890}
7892 ptr = isl_basic_map_copy(ptr);
7893 return basic_map(ptr);
7894}
7895
7897 : ptr(nullptr) {}
7898
7900 : ptr(nullptr)
7901{
7902 ptr = obj.copy();
7903}
7904
7906 : ptr(ptr) {}
7907
7909{
7910 auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
7911 ptr = res;
7912}
7913
7915 std::swap(this->ptr, obj.ptr);
7916 return *this;
7917}
7918
7920 if (ptr)
7922}
7923
7925 return isl_basic_map_copy(ptr);
7926}
7927
7929 return ptr;
7930}
7931
7933 isl_basic_map *tmp = ptr;
7934 ptr = nullptr;
7935 return tmp;
7936}
7937
7939 return ptr == nullptr;
7940}
7941
7944}
7945
7947{
7948 return isl::map(*this).add_constraint(constraint);
7949}
7950
7952{
7953 return isl::map(*this).add_dims(type, n);
7954}
7955
7957{
7959 return manage(res);
7960}
7961
7963{
7964 return isl::map(*this).align_params(model);
7965}
7966
7968{
7969 auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
7970 return manage(res);
7971}
7972
7974{
7975 return isl::map(*this).apply_domain(map2);
7976}
7977
7979{
7980 return isl::map(*this).apply_domain(umap2);
7981}
7982
7984{
7985 auto res = isl_basic_map_apply_range(copy(), bmap2.release());
7986 return manage(res);
7987}
7988
7990{
7991 return isl::map(*this).apply_range(map2);
7992}
7993
7995{
7996 return isl::map(*this).apply_range(umap2);
7997}
7998
8000{
8001 return isl::map(*this).as_map();
8002}
8003
8005{
8006 return isl::map(*this).as_multi_union_pw_aff();
8007}
8008
8010{
8011 return isl::map(*this).as_pw_multi_aff();
8012}
8013
8015{
8016 return isl::map(*this).as_union_pw_multi_aff();
8017}
8018
8020{
8021 return isl::map(*this).basic_map_list();
8022}
8023
8025{
8026 return isl::map(*this).bind_domain(tuple);
8027}
8028
8030{
8031 return isl::map(*this).bind_range(tuple);
8032}
8033
8035{
8036 return isl::map(*this).can_curry();
8037}
8038
8040{
8041 return isl::map(*this).coalesce();
8042}
8043
8045{
8046 return isl::map(*this).complement();
8047}
8048
8050{
8051 return isl::map(*this).compute_divs();
8052}
8053
8055{
8056 return isl::map(*this).curry();
8057}
8058
8060{
8061 auto res = isl_basic_map_deltas(copy());
8062 return manage(res);
8063}
8064
8066{
8068 return manage(res);
8069}
8070
8072{
8073 return isl::map(*this).dim(type);
8074}
8075
8077{
8078 return isl::map(*this).dim_max(pos);
8079}
8080
8082{
8083 return isl::map(*this).dim_min(pos);
8084}
8085
8087{
8088 auto res = isl_basic_map_domain(copy());
8089 return manage(res);
8090}
8091
8093{
8094 return isl::map(*this).domain_factor_domain();
8095}
8096
8098{
8099 return isl::map(*this).domain_factor_range();
8100}
8101
8103{
8104 return isl::map(*this).domain_map();
8105}
8106
8108{
8110}
8111
8113{
8114 return isl::map(*this).domain_product(map2);
8115}
8116
8118{
8119 return isl::map(*this).domain_product(umap2);
8120}
8121
8123{
8124 return isl::map(*this).domain_tuple_dim();
8125}
8126
8128{
8129 return isl::map(*this).domain_tuple_id();
8130}
8131
8133{
8134 return isl::map(*this).eq_at(mpa);
8135}
8136
8138{
8139 return isl::map(*this).eq_at(mupa);
8140}
8141
8143{
8144 auto res = isl_basic_map_equal(space.release(), n_equal);
8145 return manage(res);
8146}
8147
8148isl::basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8149{
8150 auto res = isl_basic_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8151 return manage(res);
8152}
8153
8154boolean basic_map::every_map(const std::function<boolean(isl::map)> &test) const
8155{
8156 return isl::map(*this).every_map(test);
8157}
8158
8160{
8161 return isl::map(*this).extract_map(space);
8162}
8163
8165{
8166 return isl::map(*this).factor_domain();
8167}
8168
8170{
8171 return isl::map(*this).factor_range();
8172}
8173
8174isl::basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const
8175{
8176 auto res = isl_basic_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8177 return manage(res);
8178}
8179
8181{
8182 auto res = isl_basic_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
8183 return manage(res);
8184}
8185
8187{
8188 return this->fix_val(type, pos, isl::val(ctx(), v));
8189}
8190
8192{
8193 return isl::map(*this).fixed_power(exp);
8194}
8195
8197{
8198 return this->fixed_power(isl::val(ctx(), exp));
8199}
8200
8202{
8203 return isl::map(*this).flat_range_product(map2);
8204}
8205
8207{
8208 return isl::map(*this).flat_range_product(umap2);
8209}
8210
8212{
8213 auto res = isl_basic_map_flatten(copy());
8214 return manage(res);
8215}
8216
8218{
8220 return manage(res);
8221}
8222
8224{
8226 return manage(res);
8227}
8228
8230{
8231 return isl::map(*this).floordiv_val(d);
8232}
8233
8235{
8236 return this->floordiv_val(isl::val(ctx(), d));
8237}
8238
8240{
8241 return isl::map(*this).foreach_basic_map(fn);
8242}
8243
8244stat basic_map::foreach_map(const std::function<stat(isl::map)> &fn) const
8245{
8246 return isl::map(*this).foreach_map(fn);
8247}
8248
8250{
8252 return manage(res);
8253}
8254
8256{
8258 return manage(res);
8259}
8260
8262{
8263 auto res = isl_basic_map_gist(copy(), context.release());
8264 return manage(res);
8265}
8266
8268{
8269 return isl::map(*this).gist(context);
8270}
8271
8273{
8274 return isl::map(*this).gist(context);
8275}
8276
8278{
8279 return isl::map(*this).gist_domain(context);
8280}
8281
8283{
8284 return isl::map(*this).gist_domain(uset);
8285}
8286
8288{
8289 return isl::map(*this).gist_params(context);
8290}
8291
8293{
8294 return isl::map(*this).gist_range(uset);
8295}
8296
8298{
8299 return isl::map(*this).has_domain_tuple_id();
8300}
8301
8303{
8304 return isl::map(*this).has_equal_space(map2);
8305}
8306
8308{
8309 return isl::map(*this).has_range_tuple_id();
8310}
8311
8313{
8314 return isl::map(*this).has_tuple_id(type);
8315}
8316
8318{
8319 return isl::map(*this).has_tuple_name(type);
8320}
8321
8323{
8324 auto res = isl_basic_map_intersect(copy(), bmap2.release());
8325 return manage(res);
8326}
8327
8329{
8330 return isl::map(*this).intersect(map2);
8331}
8332
8334{
8335 return isl::map(*this).intersect(umap2);
8336}
8337
8339{
8341 return manage(res);
8342}
8343
8345{
8346 return isl::map(*this).intersect_domain(set);
8347}
8348
8350{
8351 return isl::map(*this).intersect_domain(space);
8352}
8353
8355{
8356 return isl::map(*this).intersect_domain(uset);
8357}
8358
8360{
8361 return this->intersect_domain(isl::basic_set(bset));
8362}
8363
8365{
8366 return isl::map(*this).intersect_domain_factor_domain(factor);
8367}
8368
8370{
8371 return isl::map(*this).intersect_domain_factor_domain(factor);
8372}
8373
8375{
8376 return isl::map(*this).intersect_domain_factor_range(factor);
8377}
8378
8380{
8381 return isl::map(*this).intersect_domain_factor_range(factor);
8382}
8383
8385{
8386 return isl::map(*this).intersect_params(params);
8387}
8388
8390{
8392 return manage(res);
8393}
8394
8396{
8397 return isl::map(*this).intersect_range(set);
8398}
8399
8401{
8402 return isl::map(*this).intersect_range(space);
8403}
8404
8406{
8407 return isl::map(*this).intersect_range(uset);
8408}
8409
8411{
8412 return this->intersect_range(isl::basic_set(bset));
8413}
8414
8416{
8417 return isl::map(*this).intersect_range_factor_domain(factor);
8418}
8419
8421{
8422 return isl::map(*this).intersect_range_factor_domain(factor);
8423}
8424
8426{
8427 return isl::map(*this).intersect_range_factor_range(factor);
8428}
8429
8431{
8432 return isl::map(*this).intersect_range_factor_range(factor);
8433}
8434
8435boolean basic_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
8436{
8437 return isl::map(*this).involves_dims(type, first, n);
8438}
8439
8441{
8442 return isl::map(*this).is_bijective();
8443}
8444
8446{
8447 return isl::map(*this).is_disjoint(map2);
8448}
8449
8450boolean basic_map::is_disjoint(const isl::union_map &umap2) const
8451{
8452 return isl::map(*this).is_disjoint(umap2);
8453}
8454
8455boolean basic_map::is_empty() const
8456{
8457 auto res = isl_basic_map_is_empty(get());
8458 return manage(res);
8459}
8460
8461boolean basic_map::is_equal(const isl::basic_map &bmap2) const
8462{
8463 auto res = isl_basic_map_is_equal(get(), bmap2.get());
8464 return manage(res);
8465}
8466
8467boolean basic_map::is_equal(const isl::map &map2) const
8468{
8469 return isl::map(*this).is_equal(map2);
8470}
8471
8472boolean basic_map::is_equal(const isl::union_map &umap2) const
8473{
8474 return isl::map(*this).is_equal(umap2);
8475}
8476
8478{
8479 return isl::map(*this).is_injective();
8480}
8481
8483{
8484 return isl::map(*this).is_single_valued();
8485}
8486
8488{
8489 return isl::map(*this).is_strict_subset(map2);
8490}
8491
8493{
8494 return isl::map(*this).is_strict_subset(umap2);
8495}
8496
8497boolean basic_map::is_subset(const isl::basic_map &bmap2) const
8498{
8499 auto res = isl_basic_map_is_subset(get(), bmap2.get());
8500 return manage(res);
8501}
8502
8504{
8505 return isl::map(*this).is_subset(map2);
8506}
8507
8508boolean basic_map::is_subset(const isl::union_map &umap2) const
8509{
8510 return isl::map(*this).is_subset(umap2);
8511}
8512
8513boolean basic_map::isa_map() const
8514{
8515 return isl::map(*this).isa_map();
8516}
8517
8519{
8520 return isl::map(*this).lex_ge_at(mpa);
8521}
8522
8524{
8525 return isl::map(*this).lex_gt_at(mpa);
8526}
8527
8529{
8530 return isl::map(*this).lex_le_at(mpa);
8531}
8532
8534{
8535 return isl::map(*this).lex_lt_at(mpa);
8536}
8537
8539{
8540 auto res = isl_basic_map_lexmax(copy());
8541 return manage(res);
8542}
8543
8545{
8546 return isl::map(*this).lexmax_pw_multi_aff();
8547}
8548
8550{
8551 auto res = isl_basic_map_lexmin(copy());
8552 return manage(res);
8553}
8554
8556{
8557 return isl::map(*this).lexmin_pw_multi_aff();
8558}
8559
8561{
8562 return isl::map(*this).lower_bound(lower);
8563}
8564
8565isl::map basic_map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
8566{
8567 return isl::map(*this).lower_bound_si(type, pos, value);
8568}
8569
8571{
8572 return isl::map(*this).map_list();
8573}
8574
8576{
8577 return isl::map(*this).max_multi_pw_aff();
8578}
8579
8581{
8582 return isl::map(*this).min_multi_pw_aff();
8583}
8584
8585isl::map basic_map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
8586{
8587 return isl::map(*this).move_dims(dst_type, dst_pos, src_type, src_pos, n);
8588}
8589
8591{
8592 return isl::map(*this).n_basic_map();
8593}
8594
8595isl::map basic_map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8596{
8597 return isl::map(*this).order_lt(type1, pos1, type2, pos2);
8598}
8599
8601{
8602 return isl::map(*this).params();
8603}
8604
8606{
8607 auto res = isl_basic_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
8608 return manage(res);
8609}
8610
8612{
8613 return isl::map(*this).polyhedral_hull();
8614}
8615
8617{
8618 return isl::map(*this).preimage_domain(ma);
8619}
8620
8622{
8623 return isl::map(*this).preimage_domain(mpa);
8624}
8625
8627{
8628 return isl::map(*this).preimage_domain(pma);
8629}
8630
8632{
8633 return isl::map(*this).preimage_domain(upma);
8634}
8635
8637{
8638 return isl::map(*this).preimage_range(ma);
8639}
8640
8642{
8643 return isl::map(*this).preimage_range(pma);
8644}
8645
8647{
8648 return isl::map(*this).preimage_range(upma);
8649}
8650
8652{
8653 return isl::map(*this).product(map2);
8654}
8655
8657{
8658 return isl::map(*this).product(umap2);
8659}
8660
8661isl::map basic_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
8662{
8663 return isl::map(*this).project_out(type, first, n);
8664}
8665
8667{
8668 return isl::map(*this).project_out_all_params();
8669}
8670
8672{
8673 return isl::map(*this).range();
8674}
8675
8677{
8678 return isl::map(*this).range_factor_domain();
8679}
8680
8682{
8683 return isl::map(*this).range_factor_range();
8684}
8685
8687{
8688 return isl::map(*this).range_lattice_tile();
8689}
8690
8692{
8693 return isl::map(*this).range_map();
8694}
8695
8697{
8698 return isl::map(*this).range_product(map2);
8699}
8700
8702{
8703 return isl::map(*this).range_product(umap2);
8704}
8705
8707{
8708 return isl::map(*this).range_reverse();
8709}
8710
8712{
8713 return isl::map(*this).range_simple_fixed_box_hull();
8714}
8715
8717{
8718 return isl::map(*this).range_tuple_dim();
8719}
8720
8722{
8723 return isl::map(*this).range_tuple_id();
8724}
8725
8727{
8728 auto res = isl_basic_map_reverse(copy());
8729 return manage(res);
8730}
8731
8733{
8734 auto res = isl_basic_map_sample(copy());
8735 return manage(res);
8736}
8737
8739{
8740 return isl::map(*this).set_domain_tuple(id);
8741}
8742
8743isl::map basic_map::set_domain_tuple(const std::string &id) const
8744{
8745 return this->set_domain_tuple(isl::id(ctx(), id));
8746}
8747
8749{
8750 return isl::map(*this).set_range_tuple(id);
8751}
8752
8753isl::map basic_map::set_range_tuple(const std::string &id) const
8754{
8755 return this->set_range_tuple(isl::id(ctx(), id));
8756}
8757
8759{
8760 return isl::map(*this).set_tuple_id(type, id);
8761}
8762
8763isl::map basic_map::set_tuple_id(isl::dim type, const std::string &id) const
8764{
8765 return this->set_tuple_id(type, isl::id(ctx(), id));
8766}
8767
8769{
8770 return isl::map(*this).space();
8771}
8772
8774{
8775 return isl::map(*this).subtract(map2);
8776}
8777
8779{
8780 return isl::map(*this).subtract(umap2);
8781}
8782
8784{
8785 return isl::map(*this).subtract_domain(dom);
8786}
8787
8789{
8790 return isl::map(*this).subtract_range(dom);
8791}
8792
8794{
8795 return isl::map(*this).sum(map2);
8796}
8797
8799{
8800 auto res = isl_basic_map_to_list(copy());
8801 return manage(res);
8802}
8803
8805{
8806 return isl::map(*this).to_union_map();
8807}
8808
8810{
8811 return isl::map(*this).tuple_id(type);
8812}
8813
8815{
8816 return isl::map(*this).uncurry();
8817}
8818
8820{
8821 auto res = isl_basic_map_union(copy(), bmap2.release());
8822 return manage(res);
8823}
8824
8826{
8827 return isl::map(*this).unite(map2);
8828}
8829
8831{
8832 return isl::map(*this).unite(umap2);
8833}
8834
8836{
8838 return manage(res);
8839}
8840
8842{
8843 return isl::map(*this).unshifted_simple_hull();
8844}
8845
8847{
8848 return isl::map(*this).upper_bound(upper);
8849}
8850
8851isl::map basic_map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
8852{
8853 return isl::map(*this).upper_bound_si(type, pos, value);
8854}
8855
8857{
8858 return isl::map(*this).wrap();
8859}
8860
8862{
8863 return isl::map(*this).zip();
8864}
8865
8866inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
8867{
8868 char *str = isl_basic_map_to_str(obj.get());
8869 if (!str) {
8870 os.setstate(std::ios_base::badbit);
8871 return os;
8872 }
8873 os << str;
8874 free(str);
8875 return os;
8876}
8877
8878// implementations for isl::basic_map_list
8879basic_map_list manage(__isl_take isl_basic_map_list *ptr) {
8880 return basic_map_list(ptr);
8881}
8882basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) {
8883 ptr = isl_basic_map_list_copy(ptr);
8884 return basic_map_list(ptr);
8885}
8886
8888 : ptr(nullptr) {}
8889
8891 : ptr(nullptr)
8892{
8893 ptr = obj.copy();
8894}
8895
8897 : ptr(ptr) {}
8898
8900{
8901 auto res = isl_basic_map_list_alloc(ctx.release(), n);
8902 ptr = res;
8903}
8904
8906{
8907 auto res = isl_basic_map_list_from_basic_map(el.release());
8908 ptr = res;
8909}
8910
8912 std::swap(this->ptr, obj.ptr);
8913 return *this;
8914}
8915
8917 if (ptr)
8918 isl_basic_map_list_free(ptr);
8919}
8920
8921__isl_give isl_basic_map_list *basic_map_list::copy() const & {
8922 return isl_basic_map_list_copy(ptr);
8923}
8924
8925__isl_keep isl_basic_map_list *basic_map_list::get() const {
8926 return ptr;
8927}
8928
8930 isl_basic_map_list *tmp = ptr;
8931 ptr = nullptr;
8932 return tmp;
8933}
8934
8936 return ptr == nullptr;
8937}
8938
8940 return isl::ctx(isl_basic_map_list_get_ctx(ptr));
8941}
8942
8944{
8945 auto res = isl_basic_map_list_add(copy(), el.release());
8946 return manage(res);
8947}
8948
8950{
8951 auto res = isl_basic_map_list_get_at(get(), index);
8952 return manage(res);
8953}
8954
8956{
8957 return at(index);
8958}
8959
8961{
8962 auto res = isl_basic_map_list_clear(copy());
8963 return manage(res);
8964}
8965
8967{
8968 auto res = isl_basic_map_list_concat(copy(), list2.release());
8969 return manage(res);
8970}
8971
8972isl::basic_map_list basic_map_list::drop(unsigned int first, unsigned int n) const
8973{
8974 auto res = isl_basic_map_list_drop(copy(), first, n);
8975 return manage(res);
8976}
8977
8979{
8980 struct fn_data {
8981 std::function<stat(isl::basic_map)> func;
8982 } fn_data = { fn };
8983 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
8984 auto *data = static_cast<struct fn_data *>(arg_1);
8985 auto ret = (data->func)(manage(arg_0));
8986 return ret.release();
8987 };
8988 auto res = isl_basic_map_list_foreach(get(), fn_lambda, &fn_data);
8989 return manage(res);
8990}
8991
8993{
8994 auto res = isl_basic_map_list_insert(copy(), pos, el.release());
8995 return manage(res);
8996}
8997
8999{
9000 auto res = isl_basic_map_list_size(get());
9001 return manage(res);
9002}
9003
9004inline std::ostream &operator<<(std::ostream &os, const basic_map_list &obj)
9005{
9006 char *str = isl_basic_map_list_to_str(obj.get());
9007 if (!str) {
9008 os.setstate(std::ios_base::badbit);
9009 return os;
9010 }
9011 os << str;
9012 free(str);
9013 return os;
9014}
9015
9016// implementations for isl::basic_set
9018 return basic_set(ptr);
9019}
9021 ptr = isl_basic_set_copy(ptr);
9022 return basic_set(ptr);
9023}
9024
9026 : ptr(nullptr) {}
9027
9029 : ptr(nullptr)
9030{
9031 ptr = obj.copy();
9032}
9033
9035 : ptr(ptr) {}
9036
9038{
9039 auto res = isl_basic_set_from_point(pnt.release());
9040 ptr = res;
9041}
9042
9044{
9045 auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
9046 ptr = res;
9047}
9048
9050 std::swap(this->ptr, obj.ptr);
9051 return *this;
9052}
9053
9055 if (ptr)
9057}
9058
9060 return isl_basic_set_copy(ptr);
9061}
9062
9064 return ptr;
9065}
9066
9068 isl_basic_set *tmp = ptr;
9069 ptr = nullptr;
9070 return tmp;
9071}
9072
9074 return ptr == nullptr;
9075}
9076
9079}
9080
9082{
9083 return isl::set(*this).add_constraint(constraint);
9084}
9085
9087{
9088 return isl::set(*this).add_dims(type, n);
9089}
9090
9092{
9094 return manage(res);
9095}
9096
9098{
9099 return isl::set(*this).align_params(model);
9100}
9101
9103{
9104 auto res = isl_basic_set_apply(copy(), bmap.release());
9105 return manage(res);
9106}
9107
9109{
9110 return isl::set(*this).apply(map);
9111}
9112
9114{
9115 return isl::set(*this).apply(umap);
9116}
9117
9119{
9120 return isl::set(*this).as_pw_multi_aff();
9121}
9122
9124{
9125 return isl::set(*this).as_set();
9126}
9127
9129{
9130 return isl::set(*this).basic_set_list();
9131}
9132
9134{
9135 return isl::set(*this).bind(tuple);
9136}
9137
9139{
9140 return isl::set(*this).coalesce();
9141}
9142
9144{
9145 return isl::set(*this).complement();
9146}
9147
9149{
9150 return isl::set(*this).compute_divs();
9151}
9152
9154{
9155 return isl::set(*this).contains(space);
9156}
9157
9159{
9160 return isl::set(*this).convex_hull();
9161}
9162
9164{
9166 return manage(res);
9167}
9168
9170{
9171 auto res = isl_basic_set_dim(get(), static_cast<enum isl_dim_type>(type));
9172 return manage(res);
9173}
9174
9176{
9177 return isl::set(*this).dim_has_any_lower_bound(type, pos);
9178}
9179
9181{
9182 return isl::set(*this).dim_id(type, pos);
9183}
9184
9186{
9187 return isl::set(*this).dim_max(pos);
9188}
9189
9191{
9193 return manage(res);
9194}
9195
9197{
9198 return isl::set(*this).dim_min(pos);
9199}
9200
9202{
9203 return isl::set(*this).dim_min_val(pos);
9204}
9205
9206std::string basic_set::dim_name(isl::dim type, unsigned int pos) const
9207{
9208 return isl::set(*this).dim_name(type, pos);
9209}
9210
9212{
9213 auto res = isl_basic_set_get_div(get(), pos);
9214 return manage(res);
9215}
9216
9218{
9219 return div(pos);
9220}
9221
9223{
9224 return isl::set(*this).drop_constraints_involving_dims(type, first, n);
9225}
9226
9227isl::set basic_set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
9228{
9229 return isl::set(*this).eliminate(type, first, n);
9230}
9231
9232boolean basic_set::every_set(const std::function<boolean(isl::set)> &test) const
9233{
9234 return isl::set(*this).every_set(test);
9235}
9236
9238{
9239 return isl::set(*this).extract_set(space);
9240}
9241
9243{
9244 return isl::set(*this).find_dim_by_id(type, id);
9245}
9246
9247int basic_set::find_dim_by_id(isl::dim type, const std::string &id) const
9248{
9249 return this->find_dim_by_id(type, isl::id(ctx(), id));
9250}
9251
9252isl::basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const
9253{
9254 auto res = isl_basic_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
9255 return manage(res);
9256}
9257
9259{
9260 auto res = isl_basic_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
9261 return manage(res);
9262}
9263
9265{
9266 return this->fix_val(type, pos, isl::val(ctx(), v));
9267}
9268
9270{
9271 auto res = isl_basic_set_flatten(copy());
9272 return manage(res);
9273}
9274
9276{
9277 return isl::set(*this).foreach_basic_set(fn);
9278}
9279
9280stat basic_set::foreach_point(const std::function<stat(isl::point)> &fn) const
9281{
9282 return isl::set(*this).foreach_point(fn);
9283}
9284
9285stat basic_set::foreach_set(const std::function<stat(isl::set)> &fn) const
9286{
9287 return isl::set(*this).foreach_set(fn);
9288}
9289
9291{
9292 auto res = isl_basic_set_gist(copy(), context.release());
9293 return manage(res);
9294}
9295
9297{
9298 return isl::set(*this).gist(context);
9299}
9300
9302{
9303 return isl::set(*this).gist(context);
9304}
9305
9307{
9308 return this->gist(isl::basic_set(context));
9309}
9310
9312{
9313 return isl::set(*this).gist_params(context);
9314}
9315
9317{
9318 return isl::set(*this).has_equal_space(set2);
9319}
9320
9322{
9323 return isl::set(*this).identity();
9324}
9325
9327{
9328 return isl::set(*this).identity_union_pw_multi_aff();
9329}
9330
9332{
9333 return isl::set(*this).indicator_function();
9334}
9335
9336isl::set basic_set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
9337{
9338 return isl::set(*this).insert_dims(type, pos, n);
9339}
9340
9342{
9343 return isl::set(*this).insert_domain(domain);
9344}
9345
9347{
9348 auto res = isl_basic_set_intersect(copy(), bset2.release());
9349 return manage(res);
9350}
9351
9353{
9354 return isl::set(*this).intersect(set2);
9355}
9356
9358{
9359 return isl::set(*this).intersect(uset2);
9360}
9361
9363{
9364 return this->intersect(isl::basic_set(bset2));
9365}
9366
9368{
9370 return manage(res);
9371}
9372
9374{
9375 return isl::set(*this).intersect_params(params);
9376}
9377
9379{
9380 return this->intersect_params(isl::basic_set(bset2));
9381}
9382
9383boolean basic_set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
9384{
9385 return isl::set(*this).involves_dims(type, first, n);
9386}
9387
9389{
9390 return isl::set(*this).involves_locals();
9391}
9392
9394{
9396 return manage(res);
9397}
9398
9400{
9401 return isl::set(*this).is_disjoint(set2);
9402}
9403
9404boolean basic_set::is_disjoint(const isl::union_set &uset2) const
9405{
9406 return isl::set(*this).is_disjoint(uset2);
9407}
9408
9409boolean basic_set::is_empty() const
9410{
9411 auto res = isl_basic_set_is_empty(get());
9412 return manage(res);
9413}
9414
9415boolean basic_set::is_equal(const isl::basic_set &bset2) const
9416{
9417 auto res = isl_basic_set_is_equal(get(), bset2.get());
9418 return manage(res);
9419}
9420
9421boolean basic_set::is_equal(const isl::set &set2) const
9422{
9423 return isl::set(*this).is_equal(set2);
9424}
9425
9426boolean basic_set::is_equal(const isl::union_set &uset2) const
9427{
9428 return isl::set(*this).is_equal(uset2);
9429}
9430
9431boolean basic_set::is_equal(const isl::point &bset2) const
9432{
9433 return this->is_equal(isl::basic_set(bset2));
9434}
9435
9437{
9438 return isl::set(*this).is_params();
9439}
9440
9442{
9443 return isl::set(*this).is_singleton();
9444}
9445
9447{
9448 return isl::set(*this).is_strict_subset(set2);
9449}
9450
9452{
9453 return isl::set(*this).is_strict_subset(uset2);
9454}
9455
9456boolean basic_set::is_subset(const isl::basic_set &bset2) const
9457{
9458 auto res = isl_basic_set_is_subset(get(), bset2.get());
9459 return manage(res);
9460}
9461
9463{
9464 return isl::set(*this).is_subset(set2);
9465}
9466
9467boolean basic_set::is_subset(const isl::union_set &uset2) const
9468{
9469 return isl::set(*this).is_subset(uset2);
9470}
9471
9472boolean basic_set::is_subset(const isl::point &bset2) const
9473{
9474 return this->is_subset(isl::basic_set(bset2));
9475}
9476
9478{
9480 return manage(res);
9481}
9482
9483boolean basic_set::isa_set() const
9484{
9485 return isl::set(*this).isa_set();
9486}
9487
9489{
9490 auto res = isl_basic_set_lexmax(copy());
9491 return manage(res);
9492}
9493
9495{
9496 return isl::set(*this).lexmax_pw_multi_aff();
9497}
9498
9500{
9501 auto res = isl_basic_set_lexmin(copy());
9502 return manage(res);
9503}
9504
9506{
9507 return isl::set(*this).lexmin_pw_multi_aff();
9508}
9509
9511{
9512 return isl::set(*this).lower_bound(lower);
9513}
9514
9516{
9517 return isl::set(*this).lower_bound(lower);
9518}
9519
9520isl::set basic_set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
9521{
9522 return isl::set(*this).lower_bound_si(type, pos, value);
9523}
9524
9526{
9527 return isl::set(*this).lower_bound_val(type, pos, value);
9528}
9529
9530isl::set basic_set::lower_bound_val(isl::dim type, unsigned int pos, long value) const
9531{
9532 return this->lower_bound_val(type, pos, isl::val(ctx(), value));
9533}
9534
9536{
9537 return isl::set(*this).max_multi_pw_aff();
9538}
9539
9541{
9542 return isl::set(*this).max_val(obj);
9543}
9544
9546{
9547 return isl::set(*this).min_multi_pw_aff();
9548}
9549
9551{
9552 return isl::set(*this).min_val(obj);
9553}
9554
9556{
9557 return isl::set(*this).n_basic_set();
9558}
9559
9561{
9562 auto res = isl_basic_set_params(copy());
9563 return manage(res);
9564}
9565
9567{
9568 return isl::set(*this).plain_get_val_if_fixed(type, pos);
9569}
9570
9572{
9573 return isl::set(*this).plain_multi_val_if_fixed();
9574}
9575
9577{
9578 return isl::set(*this).polyhedral_hull();
9579}
9580
9582{
9583 return isl::set(*this).preimage(ma);
9584}
9585
9587{
9588 return isl::set(*this).preimage(mpa);
9589}
9590
9592{
9593 return isl::set(*this).preimage(pma);
9594}
9595
9597{
9598 return isl::set(*this).preimage(upma);
9599}
9600
9602{
9603 return isl::set(*this).product(set2);
9604}
9605
9606isl::basic_set basic_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
9607{
9608 auto res = isl_basic_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
9609 return manage(res);
9610}
9611
9613{
9614 return isl::set(*this).project_out_all_params();
9615}
9616
9618{
9619 return isl::set(*this).project_out_param(id);
9620}
9621
9622isl::set basic_set::project_out_param(const std::string &id) const
9623{
9624 return this->project_out_param(isl::id(ctx(), id));
9625}
9626
9628{
9629 return isl::set(*this).project_out_param(list);
9630}
9631
9633{
9634 return isl::set(*this).pw_multi_aff_on_domain(mv);
9635}
9636
9637isl::set basic_set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
9638{
9639 return isl::set(*this).remove_dims(type, first, n);
9640}
9641
9643{
9644 return isl::set(*this).remove_divs();
9645}
9646
9648{
9649 return isl::set(*this).remove_redundancies();
9650}
9651
9653{
9654 return isl::set(*this).reset_tuple_id();
9655}
9656
9658{
9659 auto res = isl_basic_set_sample(copy());
9660 return manage(res);
9661}
9662
9664{
9666 return manage(res);
9667}
9668
9670{
9671 return isl::set(*this).set_dim_id(type, pos, id);
9672}
9673
9674isl::set basic_set::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
9675{
9676 return this->set_dim_id(type, pos, isl::id(ctx(), id));
9677}
9678
9680{
9681 return isl::set(*this).set_list();
9682}
9683
9685{
9686 return isl::set(*this).set_tuple_id(id);
9687}
9688
9689isl::set basic_set::set_tuple_id(const std::string &id) const
9690{
9691 return this->set_tuple_id(isl::id(ctx(), id));
9692}
9693
9695{
9696 return isl::set(*this).simple_fixed_box_hull();
9697}
9698
9700{
9701 return isl::set(*this).simple_hull();
9702}
9703
9705{
9707 return manage(res);
9708}
9709
9711{
9712 return space();
9713}
9714
9716{
9717 return isl::set(*this).stride(pos);
9718}
9719
9721{
9722 return isl::set(*this).subtract(set2);
9723}
9724
9726{
9727 return isl::set(*this).subtract(uset2);
9728}
9729
9731{
9732 auto res = isl_basic_set_to_list(copy());
9733 return manage(res);
9734}
9735
9737{
9738 auto res = isl_basic_set_to_set(copy());
9739 return manage(res);
9740}
9741
9743{
9744 return isl::set(*this).to_union_set();
9745}
9746
9748{
9749 return isl::set(*this).translation();
9750}
9751
9753{
9754 return isl::set(*this).tuple_dim();
9755}
9756
9758{
9759 return isl::set(*this).tuple_id();
9760}
9761
9762std::string basic_set::tuple_name() const
9763{
9764 return isl::set(*this).tuple_name();
9765}
9766
9768{
9769 return isl::set(*this).unbind_params(tuple);
9770}
9771
9773{
9775}
9776
9778{
9779 auto res = isl_basic_set_union(copy(), bset2.release());
9780 return manage(res);
9781}
9782
9784{
9785 return isl::set(*this).unite(set2);
9786}
9787
9789{
9790 return isl::set(*this).unite(uset2);
9791}
9792
9794{
9795 return this->unite(isl::basic_set(bset2));
9796}
9797
9799{
9801 return manage(res);
9802}
9803
9805{
9806 return isl::set(*this).unshifted_simple_hull();
9807}
9808
9810{
9811 return isl::set(*this).unwrap();
9812}
9813
9815{
9816 return isl::set(*this).upper_bound(upper);
9817}
9818
9820{
9821 return isl::set(*this).upper_bound(upper);
9822}
9823
9825{
9826 return isl::set(*this).upper_bound_val(type, pos, value);
9827}
9828
9829isl::set basic_set::upper_bound_val(isl::dim type, unsigned int pos, long value) const
9830{
9831 return this->upper_bound_val(type, pos, isl::val(ctx(), value));
9832}
9833
9834inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
9835{
9836 char *str = isl_basic_set_to_str(obj.get());
9837 if (!str) {
9838 os.setstate(std::ios_base::badbit);
9839 return os;
9840 }
9841 os << str;
9842 free(str);
9843 return os;
9844}
9845
9846// implementations for isl::basic_set_list
9848 return basic_set_list(ptr);
9849}
9851 ptr = isl_basic_set_list_copy(ptr);
9852 return basic_set_list(ptr);
9853}
9854
9856 : ptr(nullptr) {}
9857
9859 : ptr(nullptr)
9860{
9861 ptr = obj.copy();
9862}
9863
9865 : ptr(ptr) {}
9866
9868{
9869 auto res = isl_basic_set_list_alloc(ctx.release(), n);
9870 ptr = res;
9871}
9872
9874{
9875 auto res = isl_basic_set_list_from_basic_set(el.release());
9876 ptr = res;
9877}
9878
9880 std::swap(this->ptr, obj.ptr);
9881 return *this;
9882}
9883
9885 if (ptr)
9886 isl_basic_set_list_free(ptr);
9887}
9888
9890 return isl_basic_set_list_copy(ptr);
9891}
9892
9894 return ptr;
9895}
9896
9898 isl_basic_set_list *tmp = ptr;
9899 ptr = nullptr;
9900 return tmp;
9901}
9902
9904 return ptr == nullptr;
9905}
9906
9908 return isl::ctx(isl_basic_set_list_get_ctx(ptr));
9909}
9910
9912{
9913 auto res = isl_basic_set_list_add(copy(), el.release());
9914 return manage(res);
9915}
9916
9918{
9919 auto res = isl_basic_set_list_get_at(get(), index);
9920 return manage(res);
9921}
9922
9924{
9925 return at(index);
9926}
9927
9929{
9930 auto res = isl_basic_set_list_clear(copy());
9931 return manage(res);
9932}
9933
9935{
9936 auto res = isl_basic_set_list_concat(copy(), list2.release());
9937 return manage(res);
9938}
9939
9940isl::basic_set_list basic_set_list::drop(unsigned int first, unsigned int n) const
9941{
9942 auto res = isl_basic_set_list_drop(copy(), first, n);
9943 return manage(res);
9944}
9945
9947{
9948 struct fn_data {
9949 std::function<stat(isl::basic_set)> func;
9950 } fn_data = { fn };
9951 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
9952 auto *data = static_cast<struct fn_data *>(arg_1);
9953 auto ret = (data->func)(manage(arg_0));
9954 return ret.release();
9955 };
9956 auto res = isl_basic_set_list_foreach(get(), fn_lambda, &fn_data);
9957 return manage(res);
9958}
9959
9961{
9962 auto res = isl_basic_set_list_insert(copy(), pos, el.release());
9963 return manage(res);
9964}
9965
9967{
9968 auto res = isl_basic_set_list_size(get());
9969 return manage(res);
9970}
9971
9972inline std::ostream &operator<<(std::ostream &os, const basic_set_list &obj)
9973{
9974 char *str = isl_basic_set_list_to_str(obj.get());
9975 if (!str) {
9976 os.setstate(std::ios_base::badbit);
9977 return os;
9978 }
9979 os << str;
9980 free(str);
9981 return os;
9982}
9983
9984// implementations for isl::constraint
9986 return constraint(ptr);
9987}
9989 ptr = isl_constraint_copy(ptr);
9990 return constraint(ptr);
9991}
9992
9994 : ptr(nullptr) {}
9995
9997 : ptr(nullptr)
9998{
9999 ptr = obj.copy();
10000}
10001
10003 : ptr(ptr) {}
10004
10006 std::swap(this->ptr, obj.ptr);
10007 return *this;
10008}
10009
10011 if (ptr)
10013}
10014
10016 return isl_constraint_copy(ptr);
10017}
10018
10020 return ptr;
10021}
10022
10024 isl_constraint *tmp = ptr;
10025 ptr = nullptr;
10026 return tmp;
10027}
10028
10030 return ptr == nullptr;
10031}
10032
10035}
10036
10038{
10040 return manage(res);
10041}
10042
10044{
10046 return manage(res);
10047}
10048
10050{
10051 auto res = isl_constraint_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
10052 return manage(res);
10053}
10054
10056{
10058 return manage(res);
10059}
10060
10062{
10064 return manage(res);
10065}
10066
10068{
10069 return this->set_constant_val(isl::val(ctx(), v));
10070}
10071
10072// implementations for isl::fixed_box
10074 return fixed_box(ptr);
10075}
10077 ptr = isl_fixed_box_copy(ptr);
10078 return fixed_box(ptr);
10079}
10080
10082 : ptr(nullptr) {}
10083
10085 : ptr(nullptr)
10086{
10087 ptr = obj.copy();
10088}
10089
10091 : ptr(ptr) {}
10092
10094 std::swap(this->ptr, obj.ptr);
10095 return *this;
10096}
10097
10099 if (ptr)
10101}
10102
10104 return isl_fixed_box_copy(ptr);
10105}
10106
10108 return ptr;
10109}
10110
10112 isl_fixed_box *tmp = ptr;
10113 ptr = nullptr;
10114 return tmp;
10115}
10116
10118 return ptr == nullptr;
10119}
10120
10123}
10124
10125boolean fixed_box::is_valid() const
10126{
10127 auto res = isl_fixed_box_is_valid(get());
10128 return manage(res);
10129}
10130
10132{
10134 return manage(res);
10135}
10136
10138{
10139 return offset();
10140}
10141
10143{
10144 auto res = isl_fixed_box_get_size(get());
10145 return manage(res);
10146}
10147
10149{
10150 return size();
10151}
10152
10154{
10156 return manage(res);
10157}
10158
10160{
10161 return space();
10162}
10163
10164inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
10165{
10166 char *str = isl_fixed_box_to_str(obj.get());
10167 if (!str) {
10168 os.setstate(std::ios_base::badbit);
10169 return os;
10170 }
10171 os << str;
10172 free(str);
10173 return os;
10174}
10175
10176// implementations for isl::id
10178 return id(ptr);
10179}
10181 ptr = isl_id_copy(ptr);
10182 return id(ptr);
10183}
10184
10186 : ptr(nullptr) {}
10187
10188id::id(const id &obj)
10189 : ptr(nullptr)
10190{
10191 ptr = obj.copy();
10192}
10193
10195 : ptr(ptr) {}
10196
10197id::id(isl::ctx ctx, const std::string &str)
10198{
10199 auto res = isl_id_read_from_str(ctx.release(), str.c_str());
10200 ptr = res;
10201}
10202
10204 std::swap(this->ptr, obj.ptr);
10205 return *this;
10206}
10207
10209 if (ptr)
10211}
10212
10214 return isl_id_copy(ptr);
10215}
10216
10218 return ptr;
10219}
10220
10222 isl_id *tmp = ptr;
10223 ptr = nullptr;
10224 return tmp;
10225}
10226
10227bool id::is_null() const {
10228 return ptr == nullptr;
10229}
10230
10232 return isl::ctx(isl_id_get_ctx(ptr));
10233}
10234
10235isl::id id::alloc(isl::ctx ctx, const std::string &name, void * user)
10236{
10237 auto res = isl_id_alloc(ctx.release(), name.c_str(), user);
10238 return manage(res);
10239}
10240
10241std::string id::name() const
10242{
10243 auto res = isl_id_get_name(get());
10244 std::string tmp(res);
10245 return tmp;
10246}
10247
10248std::string id::get_name() const
10249{
10250 return name();
10251}
10252
10254{
10255 auto res = isl_id_to_list(copy());
10256 return manage(res);
10257}
10258
10259void * id::user() const
10260{
10261 auto res = isl_id_get_user(get());
10262 return res;
10263}
10264
10265void * id::get_user() const
10266{
10267 return user();
10268}
10269
10270inline std::ostream &operator<<(std::ostream &os, const id &obj)
10271{
10272 char *str = isl_id_to_str(obj.get());
10273 if (!str) {
10274 os.setstate(std::ios_base::badbit);
10275 return os;
10276 }
10277 os << str;
10278 free(str);
10279 return os;
10280}
10281
10282// implementations for isl::id_list
10283id_list manage(__isl_take isl_id_list *ptr) {
10284 return id_list(ptr);
10285}
10286id_list manage_copy(__isl_keep isl_id_list *ptr) {
10287 ptr = isl_id_list_copy(ptr);
10288 return id_list(ptr);
10289}
10290
10292 : ptr(nullptr) {}
10293
10295 : ptr(nullptr)
10296{
10297 ptr = obj.copy();
10298}
10299
10301 : ptr(ptr) {}
10302
10304{
10305 auto res = isl_id_list_alloc(ctx.release(), n);
10306 ptr = res;
10307}
10308
10310{
10311 auto res = isl_id_list_from_id(el.release());
10312 ptr = res;
10313}
10314
10315id_list::id_list(isl::ctx ctx, const std::string &str)
10316{
10317 auto res = isl_id_list_read_from_str(ctx.release(), str.c_str());
10318 ptr = res;
10319}
10320
10322 std::swap(this->ptr, obj.ptr);
10323 return *this;
10324}
10325
10327 if (ptr)
10328 isl_id_list_free(ptr);
10329}
10330
10331__isl_give isl_id_list *id_list::copy() const & {
10332 return isl_id_list_copy(ptr);
10333}
10334
10335__isl_keep isl_id_list *id_list::get() const {
10336 return ptr;
10337}
10338
10340 isl_id_list *tmp = ptr;
10341 ptr = nullptr;
10342 return tmp;
10343}
10344
10345bool id_list::is_null() const {
10346 return ptr == nullptr;
10347}
10348
10350 return isl::ctx(isl_id_list_get_ctx(ptr));
10351}
10352
10354{
10355 auto res = isl_id_list_add(copy(), el.release());
10356 return manage(res);
10357}
10358
10359isl::id_list id_list::add(const std::string &el) const
10360{
10361 return this->add(isl::id(ctx(), el));
10362}
10363
10364isl::id id_list::at(int index) const
10365{
10366 auto res = isl_id_list_get_at(get(), index);
10367 return manage(res);
10368}
10369
10370isl::id id_list::get_at(int index) const
10371{
10372 return at(index);
10373}
10374
10376{
10377 auto res = isl_id_list_clear(copy());
10378 return manage(res);
10379}
10380
10382{
10383 auto res = isl_id_list_concat(copy(), list2.release());
10384 return manage(res);
10385}
10386
10387isl::id_list id_list::drop(unsigned int first, unsigned int n) const
10388{
10389 auto res = isl_id_list_drop(copy(), first, n);
10390 return manage(res);
10391}
10392
10393stat id_list::foreach(const std::function<stat(isl::id)> &fn) const
10394{
10395 struct fn_data {
10396 std::function<stat(isl::id)> func;
10397 } fn_data = { fn };
10398 auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
10399 auto *data = static_cast<struct fn_data *>(arg_1);
10400 auto ret = (data->func)(manage(arg_0));
10401 return ret.release();
10402 };
10403 auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
10404 return manage(res);
10405}
10406
10408{
10409 auto res = isl_id_list_insert(copy(), pos, el.release());
10410 return manage(res);
10411}
10412
10413isl::id_list id_list::insert(unsigned int pos, const std::string &el) const
10414{
10415 return this->insert(pos, isl::id(ctx(), el));
10416}
10417
10418class size id_list::size() const
10419{
10420 auto res = isl_id_list_size(get());
10421 return manage(res);
10422}
10423
10424inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
10425{
10426 char *str = isl_id_list_to_str(obj.get());
10427 if (!str) {
10428 os.setstate(std::ios_base::badbit);
10429 return os;
10430 }
10431 os << str;
10432 free(str);
10433 return os;
10434}
10435
10436// implementations for isl::id_to_ast_expr
10437id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
10438 return id_to_ast_expr(ptr);
10439}
10440id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
10441 ptr = isl_id_to_ast_expr_copy(ptr);
10442 return id_to_ast_expr(ptr);
10443}
10444
10446 : ptr(nullptr) {}
10447
10449 : ptr(nullptr)
10450{
10451 ptr = obj.copy();
10452}
10453
10455 : ptr(ptr) {}
10456
10458 std::swap(this->ptr, obj.ptr);
10459 return *this;
10460}
10461
10463 if (ptr)
10464 isl_id_to_ast_expr_free(ptr);
10465}
10466
10467__isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
10468 return isl_id_to_ast_expr_copy(ptr);
10469}
10470
10471__isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
10472 return ptr;
10473}
10474
10476 isl_id_to_ast_expr *tmp = ptr;
10477 ptr = nullptr;
10478 return tmp;
10479}
10480
10482 return ptr == nullptr;
10483}
10484
10486 return isl::ctx(isl_id_to_ast_expr_get_ctx(ptr));
10487}
10488
10490{
10491 auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
10492 return manage(res);
10493}
10494
10496{
10497 auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
10498 return manage(res);
10499}
10500
10502{
10503 return this->set(isl::id(ctx(), key), val);
10504}
10505
10506// implementations for isl::local_space
10508 return local_space(ptr);
10509}
10511 ptr = isl_local_space_copy(ptr);
10512 return local_space(ptr);
10513}
10514
10516 : ptr(nullptr) {}
10517
10519 : ptr(nullptr)
10520{
10521 ptr = obj.copy();
10522}
10523
10525 : ptr(ptr) {}
10526
10528{
10530 ptr = res;
10531}
10532
10534 std::swap(this->ptr, obj.ptr);
10535 return *this;
10536}
10537
10539 if (ptr)
10541}
10542
10544 return isl_local_space_copy(ptr);
10545}
10546
10548 return ptr;
10549}
10550
10552 isl_local_space *tmp = ptr;
10553 ptr = nullptr;
10554 return tmp;
10555}
10556
10558 return ptr == nullptr;
10559}
10560
10563}
10564
10565// implementations for isl::map
10567 return map(ptr);
10568}
10570 ptr = isl_map_copy(ptr);
10571 return map(ptr);
10572}
10573
10575 : ptr(nullptr) {}
10576
10578 : ptr(nullptr)
10579{
10580 ptr = obj.copy();
10581}
10582
10584 : ptr(ptr) {}
10585
10587{
10588 auto res = isl_map_from_basic_map(bmap.release());
10589 ptr = res;
10590}
10591
10592map::map(isl::ctx ctx, const std::string &str)
10593{
10594 auto res = isl_map_read_from_str(ctx.release(), str.c_str());
10595 ptr = res;
10596}
10597
10599 std::swap(this->ptr, obj.ptr);
10600 return *this;
10601}
10602
10604 if (ptr)
10606}
10607
10609 return isl_map_copy(ptr);
10610}
10611
10613 return ptr;
10614}
10615
10617 isl_map *tmp = ptr;
10618 ptr = nullptr;
10619 return tmp;
10620}
10621
10622bool map::is_null() const {
10623 return ptr == nullptr;
10624}
10625
10627 return isl::ctx(isl_map_get_ctx(ptr));
10628}
10629
10631{
10633 return manage(res);
10634}
10635
10637{
10638 auto res = isl_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10639 return manage(res);
10640}
10641
10643{
10644 auto res = isl_map_affine_hull(copy());
10645 return manage(res);
10646}
10647
10649{
10650 auto res = isl_map_align_params(copy(), model.release());
10651 return manage(res);
10652}
10653
10655{
10656 auto res = isl_map_apply_domain(copy(), map2.release());
10657 return manage(res);
10658}
10659
10661{
10662 return isl::union_map(*this).apply_domain(umap2);
10663}
10664
10666{
10667 return this->apply_domain(isl::map(map2));
10668}
10669
10671{
10672 auto res = isl_map_apply_range(copy(), map2.release());
10673 return manage(res);
10674}
10675
10677{
10678 return isl::union_map(*this).apply_range(umap2);
10679}
10680
10682{
10683 return this->apply_range(isl::map(map2));
10684}
10685
10687{
10688 return isl::union_map(*this).as_map();
10689}
10690
10692{
10693 return isl::union_map(*this).as_multi_union_pw_aff();
10694}
10695
10697{
10699 return manage(res);
10700}
10701
10703{
10704 return isl::union_map(*this).as_union_pw_multi_aff();
10705}
10706
10708{
10710 return manage(res);
10711}
10712
10714{
10715 return basic_map_list();
10716}
10717
10719{
10720 auto res = isl_map_bind_domain(copy(), tuple.release());
10721 return manage(res);
10722}
10723
10725{
10726 auto res = isl_map_bind_range(copy(), tuple.release());
10727 return manage(res);
10728}
10729
10730boolean map::can_curry() const
10731{
10732 auto res = isl_map_can_curry(get());
10733 return manage(res);
10734}
10735
10737{
10738 auto res = isl_map_coalesce(copy());
10739 return manage(res);
10740}
10741
10743{
10744 auto res = isl_map_complement(copy());
10745 return manage(res);
10746}
10747
10749{
10750 return isl::union_map(*this).compute_divs();
10751}
10752
10754{
10755 auto res = isl_map_curry(copy());
10756 return manage(res);
10757}
10758
10760{
10761 auto res = isl_map_deltas(copy());
10762 return manage(res);
10763}
10764
10766{
10768 return manage(res);
10769}
10770
10772{
10773 auto res = isl_map_dim(get(), static_cast<enum isl_dim_type>(type));
10774 return manage(res);
10775}
10776
10778{
10779 auto res = isl_map_dim_max(copy(), pos);
10780 return manage(res);
10781}
10782
10784{
10785 auto res = isl_map_dim_min(copy(), pos);
10786 return manage(res);
10787}
10788
10790{
10791 auto res = isl_map_domain(copy());
10792 return manage(res);
10793}
10794
10796{
10798 return manage(res);
10799}
10800
10802{
10804 return manage(res);
10805}
10806
10808{
10809 auto res = isl_map_domain_map(copy());
10810 return manage(res);
10811}
10812
10814{
10816}
10817
10819{
10820 auto res = isl_map_domain_product(copy(), map2.release());
10821 return manage(res);
10822}
10823
10825{
10826 return isl::union_map(*this).domain_product(umap2);
10827}
10828
10830{
10831 return this->domain_product(isl::map(map2));
10832}
10833
10835{
10837 return manage(res);
10838}
10839
10841{
10843 return manage(res);
10844}
10845
10847{
10848 return domain_tuple_id();
10849}
10850
10852{
10853 auto res = isl_map_empty(space.release());
10854 return manage(res);
10855}
10856
10858{
10859 auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
10860 return manage(res);
10861}
10862
10864{
10865 return isl::union_map(*this).eq_at(mupa);
10866}
10867
10869{
10870 return this->eq_at(isl::multi_pw_aff(mpa));
10871}
10872
10874{
10875 return this->eq_at(isl::multi_pw_aff(mpa));
10876}
10877
10879{
10880 return this->eq_at(isl::multi_pw_aff(mpa));
10881}
10882
10884{
10885 return this->eq_at(isl::multi_pw_aff(mpa));
10886}
10887
10888isl::map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
10889{
10890 auto res = isl_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
10891 return manage(res);
10892}
10893
10894boolean map::every_map(const std::function<boolean(isl::map)> &test) const
10895{
10896 return isl::union_map(*this).every_map(test);
10897}
10898
10900{
10901 return isl::union_map(*this).extract_map(space);
10902}
10903
10905{
10906 auto res = isl_map_factor_domain(copy());
10907 return manage(res);
10908}
10909
10911{
10912 auto res = isl_map_factor_range(copy());
10913 return manage(res);
10914}
10915
10916isl::map map::fix_si(isl::dim type, unsigned int pos, int value) const
10917{
10918 auto res = isl_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
10919 return manage(res);
10920}
10921
10923{
10924 return isl::union_map(*this).fixed_power(exp);
10925}
10926
10928{
10929 return this->fixed_power(isl::val(ctx(), exp));
10930}
10931
10933{
10934 auto res = isl_map_flat_range_product(copy(), map2.release());
10935 return manage(res);
10936}
10937
10939{
10940 return isl::union_map(*this).flat_range_product(umap2);
10941}
10942
10944{
10945 return this->flat_range_product(isl::map(map2));
10946}
10947
10949{
10950 auto res = isl_map_flatten(copy());
10951 return manage(res);
10952}
10953
10955{
10957 return manage(res);
10958}
10959
10961{
10962 auto res = isl_map_flatten_range(copy());
10963 return manage(res);
10964}
10965
10967{
10968 auto res = isl_map_floordiv_val(copy(), d.release());
10969 return manage(res);
10970}
10971
10973{
10974 return this->floordiv_val(isl::val(ctx(), d));
10975}
10976
10977stat map::foreach_basic_map(const std::function<stat(isl::basic_map)> &fn) const
10978{
10979 struct fn_data {
10980 std::function<stat(isl::basic_map)> func;
10981 } fn_data = { fn };
10982 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
10983 auto *data = static_cast<struct fn_data *>(arg_1);
10984 auto ret = (data->func)(manage(arg_0));
10985 return ret.release();
10986 };
10987 auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
10988 return manage(res);
10989}
10990
10991stat map::foreach_map(const std::function<stat(isl::map)> &fn) const
10992{
10993 return isl::union_map(*this).foreach_map(fn);
10994}
10995
10997{
10998 auto res = isl_map_from_aff(aff.release());
10999 return manage(res);
11000}
11001
11003{
11005 return manage(res);
11006}
11007
11009{
11011 return manage(res);
11012}
11013
11015{
11016 auto res = isl_map_from_multi_aff(maff.release());
11017 return manage(res);
11018}
11019
11021{
11022 auto res = isl_map_from_pw_aff(pwaff.release());
11023 return manage(res);
11024}
11025
11027{
11029 return manage(res);
11030}
11031
11033{
11034 auto res = isl_map_from_union_map(umap.release());
11035 return manage(res);
11036}
11037
11039{
11040 auto res = isl_map_gist(copy(), context.release());
11041 return manage(res);
11042}
11043
11045{
11046 return isl::union_map(*this).gist(context);
11047}
11048
11050{
11051 return this->gist(isl::map(context));
11052}
11053
11055{
11056 auto res = isl_map_gist_domain(copy(), context.release());
11057 return manage(res);
11058}
11059
11061{
11062 return isl::union_map(*this).gist_domain(uset);
11063}
11064
11066{
11067 return this->gist_domain(isl::set(context));
11068}
11069
11071{
11072 return this->gist_domain(isl::set(context));
11073}
11074
11076{
11077 auto res = isl_map_gist_params(copy(), context.release());
11078 return manage(res);
11079}
11080
11082{
11083 return isl::union_map(*this).gist_range(uset);
11084}
11085
11087{
11089 return manage(res);
11090}
11091
11093{
11094 auto res = isl_map_has_equal_space(get(), map2.get());
11095 return manage(res);
11096}
11097
11099{
11101 return manage(res);
11102}
11103
11105{
11106 auto res = isl_map_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11107 return manage(res);
11108}
11109
11111{
11112 auto res = isl_map_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
11113 return manage(res);
11114}
11115
11117{
11119 return manage(res);
11120}
11121
11123{
11124 auto res = isl_map_intersect(copy(), map2.release());
11125 return manage(res);
11126}
11127
11129{
11130 return isl::union_map(*this).intersect(umap2);
11131}
11132
11134{
11135 return this->intersect(isl::map(map2));
11136}
11137
11139{
11141 return manage(res);
11142}
11143
11145{
11146 return isl::union_map(*this).intersect_domain(space);
11147}
11148
11150{
11151 return isl::union_map(*this).intersect_domain(uset);
11152}
11153
11155{
11156 return this->intersect_domain(isl::set(set));
11157}
11158
11160{
11161 return this->intersect_domain(isl::set(set));
11162}
11163
11165{
11167 return manage(res);
11168}
11169
11171{
11172 return isl::union_map(*this).intersect_domain_factor_domain(factor);
11173}
11174
11176{
11177 return this->intersect_domain_factor_domain(isl::map(factor));
11178}
11179
11181{
11183 return manage(res);
11184}
11185
11187{
11188 return isl::union_map(*this).intersect_domain_factor_range(factor);
11189}
11190
11192{
11193 return this->intersect_domain_factor_range(isl::map(factor));
11194}
11195
11197{
11199 return manage(res);
11200}
11201
11203{
11205 return manage(res);
11206}
11207
11209{
11210 return isl::union_map(*this).intersect_range(space);
11211}
11212
11214{
11215 return isl::union_map(*this).intersect_range(uset);
11216}
11217
11219{
11220 return this->intersect_range(isl::set(set));
11221}
11222
11224{
11225 return this->intersect_range(isl::set(set));
11226}
11227
11229{
11231 return manage(res);
11232}
11233
11235{
11236 return isl::union_map(*this).intersect_range_factor_domain(factor);
11237}
11238
11240{
11241 return this->intersect_range_factor_domain(isl::map(factor));
11242}
11243
11245{
11247 return manage(res);
11248}
11249
11251{
11252 return isl::union_map(*this).intersect_range_factor_range(factor);
11253}
11254
11256{
11257 return this->intersect_range_factor_range(isl::map(factor));
11258}
11259
11260boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11261{
11262 auto res = isl_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
11263 return manage(res);
11264}
11265
11266boolean map::is_bijective() const
11267{
11268 auto res = isl_map_is_bijective(get());
11269 return manage(res);
11270}
11271
11272boolean map::is_disjoint(const isl::map &map2) const
11273{
11274 auto res = isl_map_is_disjoint(get(), map2.get());
11275 return manage(res);
11276}
11277
11278boolean map::is_disjoint(const isl::union_map &umap2) const
11279{
11280 return isl::union_map(*this).is_disjoint(umap2);
11281}
11282
11284{
11285 return this->is_disjoint(isl::map(map2));
11286}
11287
11288boolean map::is_empty() const
11289{
11290 auto res = isl_map_is_empty(get());
11291 return manage(res);
11292}
11293
11294boolean map::is_equal(const isl::map &map2) const
11295{
11296 auto res = isl_map_is_equal(get(), map2.get());
11297 return manage(res);
11298}
11299
11300boolean map::is_equal(const isl::union_map &umap2) const
11301{
11302 return isl::union_map(*this).is_equal(umap2);
11303}
11304
11305boolean map::is_equal(const isl::basic_map &map2) const
11306{
11307 return this->is_equal(isl::map(map2));
11308}
11309
11310boolean map::is_injective() const
11311{
11312 auto res = isl_map_is_injective(get());
11313 return manage(res);
11314}
11315
11317{
11319 return manage(res);
11320}
11321
11323{
11324 auto res = isl_map_is_strict_subset(get(), map2.get());
11325 return manage(res);
11326}
11327
11328boolean map::is_strict_subset(const isl::union_map &umap2) const
11329{
11330 return isl::union_map(*this).is_strict_subset(umap2);
11331}
11332
11334{
11335 return this->is_strict_subset(isl::map(map2));
11336}
11337
11338boolean map::is_subset(const isl::map &map2) const
11339{
11340 auto res = isl_map_is_subset(get(), map2.get());
11341 return manage(res);
11342}
11343
11344boolean map::is_subset(const isl::union_map &umap2) const
11345{
11346 return isl::union_map(*this).is_subset(umap2);
11347}
11348
11350{
11351 return this->is_subset(isl::map(map2));
11352}
11353
11354boolean map::isa_map() const
11355{
11356 return isl::union_map(*this).isa_map();
11357}
11358
11360{
11361 auto res = isl_map_lex_ge(set_space.release());
11362 return manage(res);
11363}
11364
11366{
11368 return manage(res);
11369}
11370
11372{
11373 auto res = isl_map_lex_gt(set_space.release());
11374 return manage(res);
11375}
11376
11378{
11380 return manage(res);
11381}
11382
11384{
11385 auto res = isl_map_lex_le(set_space.release());
11386 return manage(res);
11387}
11388
11390{
11392 return manage(res);
11393}
11394
11396{
11397 auto res = isl_map_lex_lt(set_space.release());
11398 return manage(res);
11399}
11400
11402{
11404 return manage(res);
11405}
11406
11408{
11409 auto res = isl_map_lexmax(copy());
11410 return manage(res);
11411}
11412
11414{
11416 return manage(res);
11417}
11418
11420{
11421 auto res = isl_map_lexmin(copy());
11422 return manage(res);
11423}
11424
11426{
11428 return manage(res);
11429}
11430
11432{
11434 return manage(res);
11435}
11436
11437isl::map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
11438{
11439 auto res = isl_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
11440 return manage(res);
11441}
11442
11444{
11445 return isl::union_map(*this).map_list();
11446}
11447
11449{
11451 return manage(res);
11452}
11453
11455{
11457 return manage(res);
11458}
11459
11460isl::map map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
11461{
11462 auto res = isl_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
11463 return manage(res);
11464}
11465
11467{
11468 auto res = isl_map_n_basic_map(get());
11469 return manage(res);
11470}
11471
11472isl::map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
11473{
11474 auto res = isl_map_order_lt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
11475 return manage(res);
11476}
11477
11479{
11480 return isl::union_map(*this).params();
11481}
11482
11484{
11486 return manage(res);
11487}
11488
11490{
11491 auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
11492 return manage(res);
11493}
11494
11496{
11498 return manage(res);
11499}
11500
11502{
11503 auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
11504 return manage(res);
11505}
11506
11508{
11509 return isl::union_map(*this).preimage_domain(upma);
11510}
11511
11513{
11514 auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
11515 return manage(res);
11516}
11517
11519{
11520 auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
11521 return manage(res);
11522}
11523
11525{
11526 return isl::union_map(*this).preimage_range(upma);
11527}
11528
11530{
11531 auto res = isl_map_product(copy(), map2.release());
11532 return manage(res);
11533}
11534
11536{
11537 return isl::union_map(*this).product(umap2);
11538}
11539
11541{
11542 return this->product(isl::map(map2));
11543}
11544
11545isl::map map::project_out(isl::dim type, unsigned int first, unsigned int n) const
11546{
11547 auto res = isl_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
11548 return manage(res);
11549}
11550
11552{
11554 return manage(res);
11555}
11556
11558{
11559 auto res = isl_map_range(copy());
11560 return manage(res);
11561}
11562
11564{
11566 return manage(res);
11567}
11568
11570{
11572 return manage(res);
11573}
11574
11576{
11578 return manage(res);
11579}
11580
11582{
11583 return range_lattice_tile();
11584}
11585
11587{
11588 auto res = isl_map_range_map(copy());
11589 return manage(res);
11590}
11591
11593{
11594 auto res = isl_map_range_product(copy(), map2.release());
11595 return manage(res);
11596}
11597
11599{
11600 return isl::union_map(*this).range_product(umap2);
11601}
11602
11604{
11605 return this->range_product(isl::map(map2));
11606}
11607
11609{
11610 auto res = isl_map_range_reverse(copy());
11611 return manage(res);
11612}
11613
11615{
11617 return manage(res);
11618}
11619
11621{
11623}
11624
11626{
11628 return manage(res);
11629}
11630
11632{
11634 return manage(res);
11635}
11636
11638{
11639 return range_tuple_id();
11640}
11641
11643{
11644 auto res = isl_map_reverse(copy());
11645 return manage(res);
11646}
11647
11649{
11650 auto res = isl_map_sample(copy());
11651 return manage(res);
11652}
11653
11655{
11657 return manage(res);
11658}
11659
11660isl::map map::set_domain_tuple(const std::string &id) const
11661{
11662 return this->set_domain_tuple(isl::id(ctx(), id));
11663}
11664
11666{
11668 return manage(res);
11669}
11670
11671isl::map map::set_range_tuple(const std::string &id) const
11672{
11673 return this->set_range_tuple(isl::id(ctx(), id));
11674}
11675
11677{
11678 auto res = isl_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11679 return manage(res);
11680}
11681
11682isl::map map::set_tuple_id(isl::dim type, const std::string &id) const
11683{
11684 return this->set_tuple_id(type, isl::id(ctx(), id));
11685}
11686
11688{
11689 auto res = isl_map_get_space(get());
11690 return manage(res);
11691}
11692
11694{
11695 return space();
11696}
11697
11699{
11700 auto res = isl_map_subtract(copy(), map2.release());
11701 return manage(res);
11702}
11703
11705{
11706 return isl::union_map(*this).subtract(umap2);
11707}
11708
11710{
11711 return this->subtract(isl::map(map2));
11712}
11713
11715{
11716 return isl::union_map(*this).subtract_domain(dom);
11717}
11718
11720{
11721 return isl::union_map(*this).subtract_range(dom);
11722}
11723
11725{
11726 auto res = isl_map_sum(copy(), map2.release());
11727 return manage(res);
11728}
11729
11731{
11732 auto res = isl_map_to_list(copy());
11733 return manage(res);
11734}
11735
11737{
11738 auto res = isl_map_to_union_map(copy());
11739 return manage(res);
11740}
11741
11743{
11744 auto res = isl_map_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11745 return manage(res);
11746}
11747
11749{
11750 return tuple_id(type);
11751}
11752
11754{
11755 auto res = isl_map_uncurry(copy());
11756 return manage(res);
11757}
11758
11760{
11761 auto res = isl_map_union(copy(), map2.release());
11762 return manage(res);
11763}
11764
11766{
11767 return isl::union_map(*this).unite(umap2);
11768}
11769
11771{
11772 return this->unite(isl::map(map2));
11773}
11774
11776{
11778 return manage(res);
11779}
11780
11782{
11784 return manage(res);
11785}
11786
11788{
11790 return manage(res);
11791}
11792
11793isl::map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
11794{
11795 auto res = isl_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
11796 return manage(res);
11797}
11798
11800{
11801 auto res = isl_map_wrap(copy());
11802 return manage(res);
11803}
11804
11806{
11807 auto res = isl_map_zip(copy());
11808 return manage(res);
11809}
11810
11811inline std::ostream &operator<<(std::ostream &os, const map &obj)
11812{
11813 char *str = isl_map_to_str(obj.get());
11814 if (!str) {
11815 os.setstate(std::ios_base::badbit);
11816 return os;
11817 }
11818 os << str;
11819 free(str);
11820 return os;
11821}
11822
11823// implementations for isl::map_list
11824map_list manage(__isl_take isl_map_list *ptr) {
11825 return map_list(ptr);
11826}
11827map_list manage_copy(__isl_keep isl_map_list *ptr) {
11828 ptr = isl_map_list_copy(ptr);
11829 return map_list(ptr);
11830}
11831
11833 : ptr(nullptr) {}
11834
11836 : ptr(nullptr)
11837{
11838 ptr = obj.copy();
11839}
11840
11842 : ptr(ptr) {}
11843
11845{
11846 auto res = isl_map_list_alloc(ctx.release(), n);
11847 ptr = res;
11848}
11849
11851{
11852 auto res = isl_map_list_from_map(el.release());
11853 ptr = res;
11854}
11855
11857{
11858 auto res = isl_map_list_read_from_str(ctx.release(), str.c_str());
11859 ptr = res;
11860}
11861
11863 std::swap(this->ptr, obj.ptr);
11864 return *this;
11865}
11866
11868 if (ptr)
11869 isl_map_list_free(ptr);
11870}
11871
11872__isl_give isl_map_list *map_list::copy() const & {
11873 return isl_map_list_copy(ptr);
11874}
11875
11876__isl_keep isl_map_list *map_list::get() const {
11877 return ptr;
11878}
11879
11881 isl_map_list *tmp = ptr;
11882 ptr = nullptr;
11883 return tmp;
11884}
11885
11886bool map_list::is_null() const {
11887 return ptr == nullptr;
11888}
11889
11891 return isl::ctx(isl_map_list_get_ctx(ptr));
11892}
11893
11895{
11896 auto res = isl_map_list_add(copy(), el.release());
11897 return manage(res);
11898}
11899
11900isl::map map_list::at(int index) const
11901{
11902 auto res = isl_map_list_get_at(get(), index);
11903 return manage(res);
11904}
11905
11907{
11908 return at(index);
11909}
11910
11912{
11913 auto res = isl_map_list_clear(copy());
11914 return manage(res);
11915}
11916
11918{
11919 auto res = isl_map_list_concat(copy(), list2.release());
11920 return manage(res);
11921}
11922
11923isl::map_list map_list::drop(unsigned int first, unsigned int n) const
11924{
11925 auto res = isl_map_list_drop(copy(), first, n);
11926 return manage(res);
11927}
11928
11929stat map_list::foreach(const std::function<stat(isl::map)> &fn) const
11930{
11931 struct fn_data {
11932 std::function<stat(isl::map)> func;
11933 } fn_data = { fn };
11934 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
11935 auto *data = static_cast<struct fn_data *>(arg_1);
11936 auto ret = (data->func)(manage(arg_0));
11937 return ret.release();
11938 };
11939 auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
11940 return manage(res);
11941}
11942
11944{
11945 auto res = isl_map_list_insert(copy(), pos, el.release());
11946 return manage(res);
11947}
11948
11950{
11951 auto res = isl_map_list_size(get());
11952 return manage(res);
11953}
11954
11955inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
11956{
11957 char *str = isl_map_list_to_str(obj.get());
11958 if (!str) {
11959 os.setstate(std::ios_base::badbit);
11960 return os;
11961 }
11962 os << str;
11963 free(str);
11964 return os;
11965}
11966
11967// implementations for isl::multi_aff
11969 return multi_aff(ptr);
11970}
11972 ptr = isl_multi_aff_copy(ptr);
11973 return multi_aff(ptr);
11974}
11975
11977 : ptr(nullptr) {}
11978
11980 : ptr(nullptr)
11981{
11982 ptr = obj.copy();
11983}
11984
11986 : ptr(ptr) {}
11987
11989{
11991 ptr = res;
11992}
11993
11995{
11996 auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
11997 ptr = res;
11998}
11999
12001{
12002 auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
12003 ptr = res;
12004}
12005
12007 std::swap(this->ptr, obj.ptr);
12008 return *this;
12009}
12010
12012 if (ptr)
12013 isl_multi_aff_free(ptr);
12014}
12015
12017 return isl_multi_aff_copy(ptr);
12018}
12019
12021 return ptr;
12022}
12023
12025 isl_multi_aff *tmp = ptr;
12026 ptr = nullptr;
12027 return tmp;
12028}
12029
12031 return ptr == nullptr;
12032}
12033
12035 return isl::ctx(isl_multi_aff_get_ctx(ptr));
12036}
12037
12039{
12040 auto res = isl_multi_aff_add(copy(), multi2.release());
12041 return manage(res);
12042}
12043
12045{
12046 return isl::pw_multi_aff(*this).add(multi2);
12047}
12048
12050{
12051 return isl::pw_multi_aff(*this).add(multi2);
12052}
12053
12055{
12056 return isl::pw_multi_aff(*this).add(pma2);
12057}
12058
12060{
12061 return isl::pw_multi_aff(*this).add(upma2);
12062}
12063
12065{
12066 return this->add(isl::multi_aff(multi2));
12067}
12068
12070{
12071 auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
12072 return manage(res);
12073}
12074
12076{
12077 auto res = isl_multi_aff_add_constant_val(copy(), v.release());
12078 return manage(res);
12079}
12080
12082{
12083 return this->add_constant(isl::val(ctx(), v));
12084}
12085
12087{
12088 return isl::pw_multi_aff(*this).add_pw_multi_aff(pma);
12089}
12090
12092{
12093 return isl::pw_multi_aff(*this).apply(upma2);
12094}
12095
12097{
12098 auto res = isl_multi_aff_as_map(copy());
12099 return manage(res);
12100}
12101
12103{
12104 return isl::pw_multi_aff(*this).as_multi_aff();
12105}
12106
12108{
12110}
12111
12113{
12114 return isl::pw_multi_aff(*this).as_pw_multi_aff();
12115}
12116
12118{
12119 auto res = isl_multi_aff_as_set(copy());
12120 return manage(res);
12121}
12122
12124{
12125 return isl::pw_multi_aff(*this).as_union_map();
12126}
12127
12129{
12130 auto res = isl_multi_aff_get_at(get(), pos);
12131 return manage(res);
12132}
12133
12135{
12136 return at(pos);
12137}
12138
12140{
12141 auto res = isl_multi_aff_bind(copy(), tuple.release());
12142 return manage(res);
12143}
12144
12146{
12147 auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
12148 return manage(res);
12149}
12150
12152{
12153 auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
12154 return manage(res);
12155}
12156
12158{
12159 return isl::pw_multi_aff(*this).coalesce();
12160}
12161
12163{
12165 return manage(res);
12166}
12167
12169{
12170 return constant_multi_val();
12171}
12172
12174{
12175 auto res = isl_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
12176 return manage(res);
12177}
12178
12180{
12181 return isl::pw_multi_aff(*this).domain();
12182}
12183
12185{
12187 return manage(res);
12188}
12189
12190isl::pw_multi_aff multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
12191{
12192 return isl::pw_multi_aff(*this).drop_dims(type, first, n);
12193}
12194
12196{
12198}
12199
12201{
12202 auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
12203 return manage(res);
12204}
12205
12207{
12208 return isl::pw_multi_aff(*this).flat_range_product(multi2);
12209}
12210
12212{
12213 return isl::pw_multi_aff(*this).flat_range_product(multi2);
12214}
12215
12217{
12218 return isl::pw_multi_aff(*this).flat_range_product(pma2);
12219}
12220
12222{
12223 return isl::pw_multi_aff(*this).flat_range_product(upma2);
12224}
12225
12227{
12228 return this->flat_range_product(isl::multi_aff(multi2));
12229}
12230
12232{
12233 auto res = isl_multi_aff_floor(copy());
12234 return manage(res);
12235}
12236
12238{
12239 return isl::pw_multi_aff(*this).foreach_piece(fn);
12240}
12241
12243{
12244 auto res = isl_multi_aff_gist(copy(), context.release());
12245 return manage(res);
12246}
12247
12249{
12250 return isl::pw_multi_aff(*this).gist(context);
12251}
12252
12254{
12255 return this->gist(isl::set(context));
12256}
12257
12259{
12260 return this->gist(isl::set(context));
12261}
12262
12264{
12265 auto res = isl_multi_aff_has_range_tuple_id(get());
12266 return manage(res);
12267}
12268
12270{
12271 auto res = isl_multi_aff_identity(space.release());
12272 return manage(res);
12273}
12274
12276{
12277 auto res = isl_multi_aff_identity_multi_aff(copy());
12278 return manage(res);
12279}
12280
12282{
12283 auto res = isl_multi_aff_identity_on_domain_space(space.release());
12284 return manage(res);
12285}
12286
12288{
12289 auto res = isl_multi_aff_insert_domain(copy(), domain.release());
12290 return manage(res);
12291}
12292
12294{
12295 return isl::pw_multi_aff(*this).intersect_domain(set);
12296}
12297
12299{
12301}
12302
12304{
12305 return isl::pw_multi_aff(*this).intersect_domain(uset);
12306}
12307
12309{
12311}
12312
12314{
12316}
12317
12319{
12320 return isl::pw_multi_aff(*this).intersect_params(set);
12321}
12322
12324{
12325 auto res = isl_multi_aff_involves_locals(get());
12326 return manage(res);
12327}
12328
12330{
12331 auto res = isl_multi_aff_involves_nan(get());
12332 return manage(res);
12333}
12334
12335boolean multi_aff::involves_param(const isl::id &id) const
12336{
12337 return isl::pw_multi_aff(*this).involves_param(id);
12338}
12339
12340boolean multi_aff::involves_param(const std::string &id) const
12341{
12342 return this->involves_param(isl::id(ctx(), id));
12343}
12344
12345boolean multi_aff::involves_param(const isl::id_list &list) const
12346{
12347 return isl::pw_multi_aff(*this).involves_param(list);
12348}
12349
12351{
12352 return isl::pw_multi_aff(*this).isa_multi_aff();
12353}
12354
12356{
12357 return isl::pw_multi_aff(*this).isa_pw_multi_aff();
12358}
12359
12361{
12362 auto res = isl_multi_aff_get_list(get());
12363 return manage(res);
12364}
12365
12367{
12368 return list();
12369}
12370
12372{
12373 return isl::pw_multi_aff(*this).max(multi2);
12374}
12375
12377{
12378 return isl::pw_multi_aff(*this).max_multi_val();
12379}
12380
12382{
12383 return isl::pw_multi_aff(*this).min(multi2);
12384}
12385
12387{
12388 return isl::pw_multi_aff(*this).min_multi_val();
12389}
12390
12392{
12394 return manage(res);
12395}
12396
12398{
12399 return isl::pw_multi_aff(*this).n_piece();
12400}
12401
12403{
12404 auto res = isl_multi_aff_neg(copy());
12405 return manage(res);
12406}
12407
12409{
12410 return isl::pw_multi_aff(*this).plain_is_empty();
12411}
12412
12413boolean multi_aff::plain_is_equal(const isl::multi_aff &multi2) const
12414{
12415 auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
12416 return manage(res);
12417}
12418
12420{
12421 return isl::pw_multi_aff(*this).plain_is_equal(multi2);
12422}
12423
12425{
12426 return isl::pw_multi_aff(*this).plain_is_equal(multi2);
12427}
12428
12429boolean multi_aff::plain_is_equal(const isl::aff &multi2) const
12430{
12431 return this->plain_is_equal(isl::multi_aff(multi2));
12432}
12433
12435{
12437}
12438
12440{
12442}
12443
12445{
12446 auto res = isl_multi_aff_product(copy(), multi2.release());
12447 return manage(res);
12448}
12449
12451{
12452 return isl::pw_multi_aff(*this).product(multi2);
12453}
12454
12456{
12457 return isl::pw_multi_aff(*this).product(pma2);
12458}
12459
12461{
12462 return this->product(isl::multi_aff(multi2));
12463}
12464
12466{
12468 return manage(res);
12469}
12470
12472{
12473 return isl::pw_multi_aff(*this).pullback(mpa2);
12474}
12475
12477{
12478 return isl::pw_multi_aff(*this).pullback(pma2);
12479}
12480
12482{
12483 return isl::pw_multi_aff(*this).pullback(upma2);
12484}
12485
12487{
12488 return this->pullback(isl::multi_aff(ma2));
12489}
12490
12492{
12493 return isl::pw_multi_aff(*this).pw_multi_aff_list();
12494}
12495
12497{
12498 return isl::pw_multi_aff(*this).range_factor_domain();
12499}
12500
12502{
12503 return isl::pw_multi_aff(*this).range_factor_range();
12504}
12505
12507{
12509 return manage(res);
12510}
12511
12513{
12514 auto res = isl_multi_aff_range_product(copy(), multi2.release());
12515 return manage(res);
12516}
12517
12519{
12520 return isl::pw_multi_aff(*this).range_product(multi2);
12521}
12522
12524{
12525 return isl::pw_multi_aff(*this).range_product(multi2);
12526}
12527
12529{
12530 return isl::pw_multi_aff(*this).range_product(pma2);
12531}
12532
12534{
12535 return isl::pw_multi_aff(*this).range_product(upma2);
12536}
12537
12539{
12540 return this->range_product(isl::multi_aff(multi2));
12541}
12542
12544{
12545 auto res = isl_multi_aff_get_range_tuple_id(get());
12546 return manage(res);
12547}
12548
12550{
12551 return range_tuple_id();
12552}
12553
12555{
12556 auto res = isl_multi_aff_reset_range_tuple_id(copy());
12557 return manage(res);
12558}
12559
12561{
12562 auto res = isl_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
12563 return manage(res);
12564}
12565
12567{
12568 auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
12569 return manage(res);
12570}
12571
12573{
12574 auto res = isl_multi_aff_scale_val(copy(), v.release());
12575 return manage(res);
12576}
12577
12579{
12580 return this->scale(isl::val(ctx(), v));
12581}
12582
12584{
12585 auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
12586 return manage(res);
12587}
12588
12590{
12591 auto res = isl_multi_aff_scale_down_val(copy(), v.release());
12592 return manage(res);
12593}
12594
12596{
12597 return this->scale_down(isl::val(ctx(), v));
12598}
12599
12601{
12602 auto res = isl_multi_aff_set_aff(copy(), pos, el.release());
12603 return manage(res);
12604}
12605
12607{
12608 auto res = isl_multi_aff_set_at(copy(), pos, el.release());
12609 return manage(res);
12610}
12611
12613{
12614 return isl::pw_multi_aff(*this).set_at(pos, el);
12615}
12616
12618{
12619 return isl::pw_multi_aff(*this).set_at(pos, el);
12620}
12621
12623{
12624 return isl::pw_multi_aff(*this).set_pw_aff(pos, el);
12625}
12626
12628{
12629 return isl::pw_multi_aff(*this).set_pw_aff(pos, pa);
12630}
12631
12633{
12634 auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
12635 return manage(res);
12636}
12637
12638isl::multi_aff multi_aff::set_range_tuple(const std::string &id) const
12639{
12640 return this->set_range_tuple(isl::id(ctx(), id));
12641}
12642
12644{
12645 return isl::pw_multi_aff(*this).set_union_pw_aff(pos, el);
12646}
12647
12649{
12650 auto res = isl_multi_aff_size(get());
12651 return manage(res);
12652}
12653
12655{
12656 auto res = isl_multi_aff_get_space(get());
12657 return manage(res);
12658}
12659
12661{
12662 return space();
12663}
12664
12666{
12667 auto res = isl_multi_aff_sub(copy(), multi2.release());
12668 return manage(res);
12669}
12670
12672{
12673 return isl::pw_multi_aff(*this).sub(multi2);
12674}
12675
12677{
12678 return isl::pw_multi_aff(*this).sub(multi2);
12679}
12680
12682{
12683 return isl::pw_multi_aff(*this).sub(pma2);
12684}
12685
12687{
12688 return isl::pw_multi_aff(*this).sub(upma2);
12689}
12690
12692{
12693 return this->sub(isl::multi_aff(multi2));
12694}
12695
12697{
12698 return isl::pw_multi_aff(*this).subtract_domain(set);
12699}
12700
12702{
12704}
12705
12707{
12708 return isl::pw_multi_aff(*this).subtract_domain(uset);
12709}
12710
12712{
12713 return isl::pw_multi_aff(*this).to_list();
12714}
12715
12717{
12719 return manage(res);
12720}
12721
12723{
12725 return manage(res);
12726}
12727
12729{
12731 return manage(res);
12732}
12733
12735{
12737}
12738
12740{
12741 return isl::pw_multi_aff(*this).tuple_id(type);
12742}
12743
12745{
12746 auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
12747 return manage(res);
12748}
12749
12751{
12752 return isl::pw_multi_aff(*this).union_add(mpa2);
12753}
12754
12756{
12757 return isl::pw_multi_aff(*this).union_add(mupa2);
12758}
12759
12761{
12762 return isl::pw_multi_aff(*this).union_add(pma2);
12763}
12764
12766{
12767 return isl::pw_multi_aff(*this).union_add(upma2);
12768}
12769
12771{
12772 auto res = isl_multi_aff_zero(space.release());
12773 return manage(res);
12774}
12775
12776inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
12777{
12778 char *str = isl_multi_aff_to_str(obj.get());
12779 if (!str) {
12780 os.setstate(std::ios_base::badbit);
12781 return os;
12782 }
12783 os << str;
12784 free(str);
12785 return os;
12786}
12787
12788// implementations for isl::multi_id
12790 return multi_id(ptr);
12791}
12793 ptr = isl_multi_id_copy(ptr);
12794 return multi_id(ptr);
12795}
12796
12798 : ptr(nullptr) {}
12799
12801 : ptr(nullptr)
12802{
12803 ptr = obj.copy();
12804}
12805
12807 : ptr(ptr) {}
12808
12810{
12811 auto res = isl_multi_id_from_id_list(space.release(), list.release());
12812 ptr = res;
12813}
12814
12816{
12817 auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
12818 ptr = res;
12819}
12820
12822 std::swap(this->ptr, obj.ptr);
12823 return *this;
12824}
12825
12827 if (ptr)
12828 isl_multi_id_free(ptr);
12829}
12830
12832 return isl_multi_id_copy(ptr);
12833}
12834
12836 return ptr;
12837}
12838
12840 isl_multi_id *tmp = ptr;
12841 ptr = nullptr;
12842 return tmp;
12843}
12844
12845bool multi_id::is_null() const {
12846 return ptr == nullptr;
12847}
12848
12850 return isl::ctx(isl_multi_id_get_ctx(ptr));
12851}
12852
12854{
12855 auto res = isl_multi_id_get_at(get(), pos);
12856 return manage(res);
12857}
12858
12860{
12861 return at(pos);
12862}
12863
12865{
12866 auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
12867 return manage(res);
12868}
12869
12871{
12872 auto res = isl_multi_id_get_list(get());
12873 return manage(res);
12874}
12875
12877{
12878 return list();
12879}
12880
12881boolean multi_id::plain_is_equal(const isl::multi_id &multi2) const
12882{
12883 auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
12884 return manage(res);
12885}
12886
12888{
12889 auto res = isl_multi_id_range_product(copy(), multi2.release());
12890 return manage(res);
12891}
12892
12894{
12895 auto res = isl_multi_id_set_at(copy(), pos, el.release());
12896 return manage(res);
12897}
12898
12899isl::multi_id multi_id::set_at(int pos, const std::string &el) const
12900{
12901 return this->set_at(pos, isl::id(ctx(), el));
12902}
12903
12905{
12906 auto res = isl_multi_id_set_id(copy(), pos, el.release());
12907 return manage(res);
12908}
12909
12910isl::multi_id multi_id::set_id(int pos, const std::string &el) const
12911{
12912 return this->set_id(pos, isl::id(ctx(), el));
12913}
12914
12916{
12917 auto res = isl_multi_id_size(get());
12918 return manage(res);
12919}
12920
12922{
12923 auto res = isl_multi_id_get_space(get());
12924 return manage(res);
12925}
12926
12928{
12929 return space();
12930}
12931
12932inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
12933{
12934 char *str = isl_multi_id_to_str(obj.get());
12935 if (!str) {
12936 os.setstate(std::ios_base::badbit);
12937 return os;
12938 }
12939 os << str;
12940 free(str);
12941 return os;
12942}
12943
12944// implementations for isl::multi_pw_aff
12946 return multi_pw_aff(ptr);
12947}
12949 ptr = isl_multi_pw_aff_copy(ptr);
12950 return multi_pw_aff(ptr);
12951}
12952
12954 : ptr(nullptr) {}
12955
12957 : ptr(nullptr)
12958{
12959 ptr = obj.copy();
12960}
12961
12963 : ptr(ptr) {}
12964
12966{
12968 ptr = res;
12969}
12970
12972{
12973 auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
12974 ptr = res;
12975}
12976
12978{
12980 ptr = res;
12981}
12982
12984{
12985 auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
12986 ptr = res;
12987}
12988
12990{
12991 auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
12992 ptr = res;
12993}
12994
12996{
12998 ptr = res;
12999}
13000
13002 std::swap(this->ptr, obj.ptr);
13003 return *this;
13004}
13005
13007 if (ptr)
13008 isl_multi_pw_aff_free(ptr);
13009}
13010
13012 return isl_multi_pw_aff_copy(ptr);
13013}
13014
13016 return ptr;
13017}
13018
13020 isl_multi_pw_aff *tmp = ptr;
13021 ptr = nullptr;
13022 return tmp;
13023}
13024
13026 return ptr == nullptr;
13027}
13028
13030 return isl::ctx(isl_multi_pw_aff_get_ctx(ptr));
13031}
13032
13034{
13035 auto res = isl_multi_pw_aff_add(copy(), multi2.release());
13036 return manage(res);
13037}
13038
13040{
13041 return isl::multi_union_pw_aff(*this).add(multi2);
13042}
13043
13045{
13046 return this->add(isl::multi_pw_aff(multi2));
13047}
13048
13050{
13051 return this->add(isl::multi_pw_aff(multi2));
13052}
13053
13055{
13056 return this->add(isl::multi_pw_aff(multi2));
13057}
13058
13060{
13061 return this->add(isl::multi_pw_aff(multi2));
13062}
13063
13065{
13066 auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
13067 return manage(res);
13068}
13069
13071{
13072 auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
13073 return manage(res);
13074}
13075
13077{
13078 return this->add_constant(isl::val(ctx(), v));
13079}
13080
13082{
13084 return manage(res);
13085}
13086
13088{
13090 return manage(res);
13091}
13092
13094{
13096 return manage(res);
13097}
13098
13100{
13101 auto res = isl_multi_pw_aff_get_at(get(), pos);
13102 return manage(res);
13103}
13104
13106{
13107 return at(pos);
13108}
13109
13111{
13112 auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
13113 return manage(res);
13114}
13115
13117{
13118 auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
13119 return manage(res);
13120}
13121
13123{
13124 auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
13125 return manage(res);
13126}
13127
13129{
13131 return manage(res);
13132}
13133
13135{
13136 auto res = isl_multi_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
13137 return manage(res);
13138}
13139
13141{
13143 return manage(res);
13144}
13145
13147{
13148 auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
13149 return manage(res);
13150}
13151
13153{
13154 return isl::multi_union_pw_aff(*this).flat_range_product(multi2);
13155}
13156
13158{
13159 return this->flat_range_product(isl::multi_pw_aff(multi2));
13160}
13161
13163{
13164 return this->flat_range_product(isl::multi_pw_aff(multi2));
13165}
13166
13168{
13169 return this->flat_range_product(isl::multi_pw_aff(multi2));
13170}
13171
13173{
13174 return this->flat_range_product(isl::multi_pw_aff(multi2));
13175}
13176
13178{
13180 return manage(res);
13181}
13182
13184{
13185 return isl::multi_union_pw_aff(*this).gist(context);
13186}
13187
13189{
13190 return this->gist(isl::set(set));
13191}
13192
13194{
13195 return this->gist(isl::set(set));
13196}
13197
13199{
13200 auto res = isl_multi_pw_aff_has_range_tuple_id(get());
13201 return manage(res);
13202}
13203
13205{
13206 auto res = isl_multi_pw_aff_identity(space.release());
13207 return manage(res);
13208}
13209
13211{
13212 auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
13213 return manage(res);
13214}
13215
13217{
13218 auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
13219 return manage(res);
13220}
13221
13223{
13224 auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
13225 return manage(res);
13226}
13227
13229{
13231 return manage(res);
13232}
13233
13235{
13236 return isl::multi_union_pw_aff(*this).intersect_domain(uset);
13237}
13238
13240{
13241 return this->intersect_domain(isl::set(domain));
13242}
13243
13245{
13246 return this->intersect_domain(isl::set(domain));
13247}
13248
13250{
13252 return manage(res);
13253}
13254
13256{
13257 auto res = isl_multi_pw_aff_involves_nan(get());
13258 return manage(res);
13259}
13260
13262{
13263 auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
13264 return manage(res);
13265}
13266
13267boolean multi_pw_aff::involves_param(const std::string &id) const
13268{
13269 return this->involves_param(isl::id(ctx(), id));
13270}
13271
13273{
13274 auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
13275 return manage(res);
13276}
13277
13279{
13281 return manage(res);
13282}
13283
13285{
13286 auto res = isl_multi_pw_aff_get_list(get());
13287 return manage(res);
13288}
13289
13291{
13292 return list();
13293}
13294
13296{
13297 auto res = isl_multi_pw_aff_max(copy(), multi2.release());
13298 return manage(res);
13299}
13300
13302{
13304 return manage(res);
13305}
13306
13308{
13309 auto res = isl_multi_pw_aff_min(copy(), multi2.release());
13310 return manage(res);
13311}
13312
13314{
13316 return manage(res);
13317}
13318
13320{
13321 auto res = isl_multi_pw_aff_neg(copy());
13322 return manage(res);
13323}
13324
13326{
13327 auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
13328 return manage(res);
13329}
13330
13332{
13333 return isl::multi_union_pw_aff(*this).plain_is_equal(multi2);
13334}
13335
13336boolean multi_pw_aff::plain_is_equal(const isl::aff &multi2) const
13337{
13338 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13339}
13340
13342{
13343 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13344}
13345
13346boolean multi_pw_aff::plain_is_equal(const isl::pw_aff &multi2) const
13347{
13348 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13349}
13350
13352{
13353 return this->plain_is_equal(isl::multi_pw_aff(multi2));
13354}
13355
13357{
13358 auto res = isl_multi_pw_aff_product(copy(), multi2.release());
13359 return manage(res);
13360}
13361
13363{
13364 auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
13365 return manage(res);
13366}
13367
13369{
13371 return manage(res);
13372}
13373
13375{
13377 return manage(res);
13378}
13379
13381{
13382 return isl::multi_union_pw_aff(*this).pullback(upma);
13383}
13384
13386{
13387 auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
13388 return manage(res);
13389}
13390
13392{
13393 return isl::multi_union_pw_aff(*this).range_product(multi2);
13394}
13395
13397{
13398 return this->range_product(isl::multi_pw_aff(multi2));
13399}
13400
13402{
13403 return this->range_product(isl::multi_pw_aff(multi2));
13404}
13405
13407{
13408 return this->range_product(isl::multi_pw_aff(multi2));
13409}
13410
13412{
13413 return this->range_product(isl::multi_pw_aff(multi2));
13414}
13415
13417{
13418 auto res = isl_multi_pw_aff_get_range_tuple_id(get());
13419 return manage(res);
13420}
13421
13423{
13424 return range_tuple_id();
13425}
13426
13428{
13429 auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
13430 return manage(res);
13431}
13432
13434{
13435 auto res = isl_multi_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
13436 return manage(res);
13437}
13438
13440{
13441 auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
13442 return manage(res);
13443}
13444
13446{
13447 auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
13448 return manage(res);
13449}
13450
13452{
13453 return this->scale(isl::val(ctx(), v));
13454}
13455
13457{
13458 auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
13459 return manage(res);
13460}
13461
13463{
13464 auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
13465 return manage(res);
13466}
13467
13469{
13470 return this->scale_down(isl::val(ctx(), v));
13471}
13472
13474{
13475 auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
13476 return manage(res);
13477}
13478
13480{
13481 return isl::multi_union_pw_aff(*this).set_at(pos, el);
13482}
13483
13485{
13486 auto res = isl_multi_pw_aff_set_pw_aff(copy(), pos, el.release());
13487 return manage(res);
13488}
13489
13491{
13492 auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
13493 return manage(res);
13494}
13495
13497{
13498 return this->set_range_tuple(isl::id(ctx(), id));
13499}
13500
13502{
13503 return isl::multi_union_pw_aff(*this).set_union_pw_aff(pos, el);
13504}
13505
13507{
13508 auto res = isl_multi_pw_aff_size(get());
13509 return manage(res);
13510}
13511
13513{
13514 auto res = isl_multi_pw_aff_get_space(get());
13515 return manage(res);
13516}
13517
13519{
13520 return space();
13521}
13522
13524{
13525 auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
13526 return manage(res);
13527}
13528
13530{
13531 return isl::multi_union_pw_aff(*this).sub(multi2);
13532}
13533
13535{
13536 return this->sub(isl::multi_pw_aff(multi2));
13537}
13538
13540{
13541 return this->sub(isl::multi_pw_aff(multi2));
13542}
13543
13545{
13546 return this->sub(isl::multi_pw_aff(multi2));
13547}
13548
13550{
13551 return this->sub(isl::multi_pw_aff(multi2));
13552}
13553
13555{
13556 auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
13557 return manage(res);
13558}
13559
13561{
13562 auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
13563 return manage(res);
13564}
13565
13567{
13568 return isl::multi_union_pw_aff(*this).union_add(mupa2);
13569}
13570
13572{
13573 return this->union_add(isl::multi_pw_aff(mpa2));
13574}
13575
13577{
13578 return this->union_add(isl::multi_pw_aff(mpa2));
13579}
13580
13582{
13583 return this->union_add(isl::multi_pw_aff(mpa2));
13584}
13585
13587{
13588 return this->union_add(isl::multi_pw_aff(mpa2));
13589}
13590
13592{
13593 auto res = isl_multi_pw_aff_zero(space.release());
13594 return manage(res);
13595}
13596
13597inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
13598{
13599 char *str = isl_multi_pw_aff_to_str(obj.get());
13600 if (!str) {
13601 os.setstate(std::ios_base::badbit);
13602 return os;
13603 }
13604 os << str;
13605 free(str);
13606 return os;
13607}
13608
13609// implementations for isl::multi_union_pw_aff
13611 return multi_union_pw_aff(ptr);
13612}
13614 ptr = isl_multi_union_pw_aff_copy(ptr);
13615 return multi_union_pw_aff(ptr);
13616}
13617
13619 : ptr(nullptr) {}
13620
13622 : ptr(nullptr)
13623{
13624 ptr = obj.copy();
13625}
13626
13628 : ptr(ptr) {}
13629
13631{
13633 ptr = res;
13634}
13635
13637{
13639 ptr = res;
13640}
13641
13643{
13644 auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
13645 ptr = res;
13646}
13647
13649{
13651 ptr = res;
13652}
13653
13655{
13657 ptr = res;
13658}
13659
13661 std::swap(this->ptr, obj.ptr);
13662 return *this;
13663}
13664
13666 if (ptr)
13667 isl_multi_union_pw_aff_free(ptr);
13668}
13669
13671 return isl_multi_union_pw_aff_copy(ptr);
13672}
13673
13675 return ptr;
13676}
13677
13680 ptr = nullptr;
13681 return tmp;
13682}
13683
13685 return ptr == nullptr;
13686}
13687
13689 return isl::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
13690}
13691
13693{
13694 auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
13695 return manage(res);
13696}
13697
13699{
13700 auto res = isl_multi_union_pw_aff_get_at(get(), pos);
13701 return manage(res);
13702}
13703
13705{
13706 return at(pos);
13707}
13708
13710{
13711 auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
13712 return manage(res);
13713}
13714
13716{
13718 return manage(res);
13719}
13720
13722{
13723 auto res = isl_multi_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
13724 return manage(res);
13725}
13726
13728{
13730 return manage(res);
13731}
13732
13734{
13735 auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
13736 return manage(res);
13737}
13738
13740{
13742 return manage(res);
13743}
13744
13746{
13747 auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
13748 return manage(res);
13749}
13750
13752{
13753 auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
13754 return manage(res);
13755}
13756
13758{
13760 return manage(res);
13761}
13762
13764{
13766 return manage(res);
13767}
13768
13770{
13771 auto res = isl_multi_union_pw_aff_involves_nan(get());
13772 return manage(res);
13773}
13774
13776{
13777 auto res = isl_multi_union_pw_aff_get_list(get());
13778 return manage(res);
13779}
13780
13782{
13783 return list();
13784}
13785
13787{
13788 auto res = isl_multi_union_pw_aff_neg(copy());
13789 return manage(res);
13790}
13791
13793{
13794 auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
13795 return manage(res);
13796}
13797
13799{
13801 return manage(res);
13802}
13803
13805{
13806 auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
13807 return manage(res);
13808}
13809
13811{
13812 auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
13813 return manage(res);
13814}
13815
13817{
13818 return range_tuple_id();
13819}
13820
13822{
13823 auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
13824 return manage(res);
13825}
13826
13828{
13829 auto res = isl_multi_union_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
13830 return manage(res);
13831}
13832
13834{
13835 auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
13836 return manage(res);
13837}
13838
13840{
13841 auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
13842 return manage(res);
13843}
13844
13846{
13847 return this->scale(isl::val(ctx(), v));
13848}
13849
13851{
13852 auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
13853 return manage(res);
13854}
13855
13857{
13858 auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
13859 return manage(res);
13860}
13861
13863{
13864 return this->scale_down(isl::val(ctx(), v));
13865}
13866
13868{
13869 auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
13870 return manage(res);
13871}
13872
13874{
13875 auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
13876 return manage(res);
13877}
13878
13880{
13881 return this->set_range_tuple(isl::id(ctx(), id));
13882}
13883
13885{
13886 auto res = isl_multi_union_pw_aff_set_union_pw_aff(copy(), pos, el.release());
13887 return manage(res);
13888}
13889
13891{
13892 auto res = isl_multi_union_pw_aff_size(get());
13893 return manage(res);
13894}
13895
13897{
13898 auto res = isl_multi_union_pw_aff_get_space(get());
13899 return manage(res);
13900}
13901
13903{
13904 return space();
13905}
13906
13908{
13909 auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
13910 return manage(res);
13911}
13912
13914{
13916 return manage(res);
13917}
13918
13920{
13922 return manage(res);
13923}
13924
13925inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
13926{
13927 char *str = isl_multi_union_pw_aff_to_str(obj.get());
13928 if (!str) {
13929 os.setstate(std::ios_base::badbit);
13930 return os;
13931 }
13932 os << str;
13933 free(str);
13934 return os;
13935}
13936
13937// implementations for isl::multi_val
13939 return multi_val(ptr);
13940}
13942 ptr = isl_multi_val_copy(ptr);
13943 return multi_val(ptr);
13944}
13945
13947 : ptr(nullptr) {}
13948
13950 : ptr(nullptr)
13951{
13952 ptr = obj.copy();
13953}
13954
13956 : ptr(ptr) {}
13957
13959{
13960 auto res = isl_multi_val_from_val_list(space.release(), list.release());
13961 ptr = res;
13962}
13963
13965{
13966 auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
13967 ptr = res;
13968}
13969
13971 std::swap(this->ptr, obj.ptr);
13972 return *this;
13973}
13974
13976 if (ptr)
13977 isl_multi_val_free(ptr);
13978}
13979
13981 return isl_multi_val_copy(ptr);
13982}
13983
13985 return ptr;
13986}
13987
13989 isl_multi_val *tmp = ptr;
13990 ptr = nullptr;
13991 return tmp;
13992}
13993
13995 return ptr == nullptr;
13996}
13997
13999 return isl::ctx(isl_multi_val_get_ctx(ptr));
14000}
14001
14003{
14004 auto res = isl_multi_val_add(copy(), multi2.release());
14005 return manage(res);
14006}
14007
14009{
14010 auto res = isl_multi_val_add_val(copy(), v.release());
14011 return manage(res);
14012}
14013
14015{
14016 return this->add(isl::val(ctx(), v));
14017}
14018
14020{
14021 auto res = isl_multi_val_get_at(get(), pos);
14022 return manage(res);
14023}
14024
14026{
14027 return at(pos);
14028}
14029
14031{
14032 auto res = isl_multi_val_dim(get(), static_cast<enum isl_dim_type>(type));
14033 return manage(res);
14034}
14035
14037{
14038 auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
14039 return manage(res);
14040}
14041
14043{
14044 auto res = isl_multi_val_has_range_tuple_id(get());
14045 return manage(res);
14046}
14047
14049{
14050 auto res = isl_multi_val_involves_nan(get());
14051 return manage(res);
14052}
14053
14055{
14056 auto res = isl_multi_val_get_list(get());
14057 return manage(res);
14058}
14059
14061{
14062 return list();
14063}
14064
14066{
14067 auto res = isl_multi_val_max(copy(), multi2.release());
14068 return manage(res);
14069}
14070
14072{
14073 auto res = isl_multi_val_min(copy(), multi2.release());
14074 return manage(res);
14075}
14076
14078{
14079 auto res = isl_multi_val_neg(copy());
14080 return manage(res);
14081}
14082
14083boolean multi_val::plain_is_equal(const isl::multi_val &multi2) const
14084{
14085 auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
14086 return manage(res);
14087}
14088
14090{
14091 auto res = isl_multi_val_product(copy(), multi2.release());
14092 return manage(res);
14093}
14094
14096{
14097 auto res = isl_multi_val_range_product(copy(), multi2.release());
14098 return manage(res);
14099}
14100
14102{
14103 auto res = isl_multi_val_get_range_tuple_id(get());
14104 return manage(res);
14105}
14106
14108{
14109 return range_tuple_id();
14110}
14111
14113{
14114 auto res = isl_multi_val_reset_range_tuple_id(copy());
14115 return manage(res);
14116}
14117
14119{
14120 auto res = isl_multi_val_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
14121 return manage(res);
14122}
14123
14125{
14126 auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
14127 return manage(res);
14128}
14129
14131{
14132 auto res = isl_multi_val_scale_val(copy(), v.release());
14133 return manage(res);
14134}
14135
14137{
14138 return this->scale(isl::val(ctx(), v));
14139}
14140
14142{
14143 auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
14144 return manage(res);
14145}
14146
14148{
14149 auto res = isl_multi_val_scale_down_val(copy(), v.release());
14150 return manage(res);
14151}
14152
14154{
14155 return this->scale_down(isl::val(ctx(), v));
14156}
14157
14159{
14160 auto res = isl_multi_val_set_at(copy(), pos, el.release());
14161 return manage(res);
14162}
14163
14165{
14166 return this->set_at(pos, isl::val(ctx(), el));
14167}
14168
14170{
14171 auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
14172 return manage(res);
14173}
14174
14175isl::multi_val multi_val::set_range_tuple(const std::string &id) const
14176{
14177 return this->set_range_tuple(isl::id(ctx(), id));
14178}
14179
14181{
14182 auto res = isl_multi_val_set_val(copy(), pos, el.release());
14183 return manage(res);
14184}
14185
14187{
14188 return this->set_val(pos, isl::val(ctx(), el));
14189}
14190
14192{
14193 auto res = isl_multi_val_size(get());
14194 return manage(res);
14195}
14196
14198{
14199 auto res = isl_multi_val_get_space(get());
14200 return manage(res);
14201}
14202
14204{
14205 return space();
14206}
14207
14209{
14210 auto res = isl_multi_val_sub(copy(), multi2.release());
14211 return manage(res);
14212}
14213
14215{
14216 auto res = isl_multi_val_zero(space.release());
14217 return manage(res);
14218}
14219
14220inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
14221{
14222 char *str = isl_multi_val_to_str(obj.get());
14223 if (!str) {
14224 os.setstate(std::ios_base::badbit);
14225 return os;
14226 }
14227 os << str;
14228 free(str);
14229 return os;
14230}
14231
14232// implementations for isl::point
14234 return point(ptr);
14235}
14237 ptr = isl_point_copy(ptr);
14238 return point(ptr);
14239}
14240
14242 : ptr(nullptr) {}
14243
14245 : ptr(nullptr)
14246{
14247 ptr = obj.copy();
14248}
14249
14251 : ptr(ptr) {}
14252
14254{
14255 auto res = isl_point_zero(space.release());
14256 ptr = res;
14257}
14258
14260 std::swap(this->ptr, obj.ptr);
14261 return *this;
14262}
14263
14265 if (ptr)
14267}
14268
14270 return isl_point_copy(ptr);
14271}
14272
14274 return ptr;
14275}
14276
14278 isl_point *tmp = ptr;
14279 ptr = nullptr;
14280 return tmp;
14281}
14282
14283bool point::is_null() const {
14284 return ptr == nullptr;
14285}
14286
14289}
14290
14292{
14294}
14295
14297{
14298 return isl::basic_set(*this).add_dims(type, n);
14299}
14300
14302{
14303 return isl::basic_set(*this).affine_hull();
14304}
14305
14307{
14308 return isl::basic_set(*this).align_params(model);
14309}
14310
14312{
14313 return isl::basic_set(*this).apply(bmap);
14314}
14315
14317{
14318 return isl::basic_set(*this).apply(map);
14319}
14320
14322{
14323 return isl::basic_set(*this).apply(umap);
14324}
14325
14327{
14328 return isl::basic_set(*this).as_pw_multi_aff();
14329}
14330
14332{
14333 return isl::basic_set(*this).as_set();
14334}
14335
14337{
14338 return isl::basic_set(*this).basic_set_list();
14339}
14340
14342{
14343 return isl::basic_set(*this).bind(tuple);
14344}
14345
14347{
14348 return isl::basic_set(*this).coalesce();
14349}
14350
14352{
14353 return isl::basic_set(*this).complement();
14354}
14355
14357{
14358 return isl::basic_set(*this).compute_divs();
14359}
14360
14361boolean point::contains(const isl::space &space) const
14362{
14363 return isl::basic_set(*this).contains(space);
14364}
14365
14367{
14368 return isl::basic_set(*this).convex_hull();
14369}
14370
14372{
14373 auto res = isl_point_get_coordinate_val(get(), static_cast<enum isl_dim_type>(type), pos);
14374 return manage(res);
14375}
14376
14378{
14379 return coordinate_val(type, pos);
14380}
14381
14383{
14384 return isl::basic_set(*this).detect_equalities();
14385}
14386
14388{
14389 return isl::basic_set(*this).dim(type);
14390}
14391
14393{
14395}
14396
14398{
14399 return isl::basic_set(*this).dim_id(type, pos);
14400}
14401
14403{
14404 return isl::basic_set(*this).dim_max(pos);
14405}
14406
14408{
14409 return isl::basic_set(*this).dim_max_val(pos);
14410}
14411
14413{
14414 return isl::basic_set(*this).dim_min(pos);
14415}
14416
14418{
14419 return isl::basic_set(*this).dim_min_val(pos);
14420}
14421
14422std::string point::dim_name(isl::dim type, unsigned int pos) const
14423{
14424 return isl::basic_set(*this).dim_name(type, pos);
14425}
14426
14428{
14429 return isl::basic_set(*this).div(pos);
14430}
14431
14432isl::set point::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
14433{
14435}
14436
14437isl::set point::eliminate(isl::dim type, unsigned int first, unsigned int n) const
14438{
14439 return isl::basic_set(*this).eliminate(type, first, n);
14440}
14441
14442boolean point::every_set(const std::function<boolean(isl::set)> &test) const
14443{
14444 return isl::basic_set(*this).every_set(test);
14445}
14446
14448{
14449 return isl::basic_set(*this).extract_set(space);
14450}
14451
14453{
14454 return isl::basic_set(*this).find_dim_by_id(type, id);
14455}
14456
14457int point::find_dim_by_id(isl::dim type, const std::string &id) const
14458{
14459 return this->find_dim_by_id(type, isl::id(ctx(), id));
14460}
14461
14462isl::basic_set point::fix_si(isl::dim type, unsigned int pos, int value) const
14463{
14464 return isl::basic_set(*this).fix_si(type, pos, value);
14465}
14466
14468{
14469 return isl::basic_set(*this).fix_val(type, pos, v);
14470}
14471
14472isl::basic_set point::fix_val(isl::dim type, unsigned int pos, long v) const
14473{
14474 return this->fix_val(type, pos, isl::val(ctx(), v));
14475}
14476
14478{
14479 return isl::basic_set(*this).flatten();
14480}
14481
14483{
14484 return isl::basic_set(*this).foreach_basic_set(fn);
14485}
14486
14487stat point::foreach_point(const std::function<stat(isl::point)> &fn) const
14488{
14489 return isl::basic_set(*this).foreach_point(fn);
14490}
14491
14492stat point::foreach_set(const std::function<stat(isl::set)> &fn) const
14493{
14494 return isl::basic_set(*this).foreach_set(fn);
14495}
14496
14498{
14499 return isl::basic_set(*this).gist(context);
14500}
14501
14503{
14504 return isl::basic_set(*this).gist(context);
14505}
14506
14508{
14509 return isl::basic_set(*this).gist(context);
14510}
14511
14513{
14514 return isl::basic_set(*this).gist_params(context);
14515}
14516
14518{
14519 return isl::basic_set(*this).has_equal_space(set2);
14520}
14521
14523{
14524 return isl::basic_set(*this).identity();
14525}
14526
14528{
14530}
14531
14533{
14534 return isl::basic_set(*this).indicator_function();
14535}
14536
14537isl::set point::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
14538{
14539 return isl::basic_set(*this).insert_dims(type, pos, n);
14540}
14541
14543{
14544 return isl::basic_set(*this).insert_domain(domain);
14545}
14546
14548{
14549 return isl::basic_set(*this).intersect(bset2);
14550}
14551
14553{
14554 return isl::basic_set(*this).intersect(set2);
14555}
14556
14558{
14559 return isl::basic_set(*this).intersect(uset2);
14560}
14561
14563{
14564 return isl::basic_set(*this).intersect_params(bset2);
14565}
14566
14568{
14569 return isl::basic_set(*this).intersect_params(params);
14570}
14571
14572boolean point::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
14573{
14574 return isl::basic_set(*this).involves_dims(type, first, n);
14575}
14576
14578{
14579 return isl::basic_set(*this).involves_locals();
14580}
14581
14582boolean point::is_bounded() const
14583{
14584 return isl::basic_set(*this).is_bounded();
14585}
14586
14587boolean point::is_disjoint(const isl::set &set2) const
14588{
14589 return isl::basic_set(*this).is_disjoint(set2);
14590}
14591
14592boolean point::is_disjoint(const isl::union_set &uset2) const
14593{
14594 return isl::basic_set(*this).is_disjoint(uset2);
14595}
14596
14597boolean point::is_empty() const
14598{
14599 return isl::basic_set(*this).is_empty();
14600}
14601
14602boolean point::is_equal(const isl::basic_set &bset2) const
14603{
14604 return isl::basic_set(*this).is_equal(bset2);
14605}
14606
14607boolean point::is_equal(const isl::set &set2) const
14608{
14609 return isl::basic_set(*this).is_equal(set2);
14610}
14611
14612boolean point::is_equal(const isl::union_set &uset2) const
14613{
14614 return isl::basic_set(*this).is_equal(uset2);
14615}
14616
14617boolean point::is_params() const
14618{
14619 return isl::basic_set(*this).is_params();
14620}
14621
14622boolean point::is_singleton() const
14623{
14624 return isl::basic_set(*this).is_singleton();
14625}
14626
14628{
14629 return isl::basic_set(*this).is_strict_subset(set2);
14630}
14631
14632boolean point::is_strict_subset(const isl::union_set &uset2) const
14633{
14634 return isl::basic_set(*this).is_strict_subset(uset2);
14635}
14636
14637boolean point::is_subset(const isl::basic_set &bset2) const
14638{
14639 return isl::basic_set(*this).is_subset(bset2);
14640}
14641
14642boolean point::is_subset(const isl::set &set2) const
14643{
14644 return isl::basic_set(*this).is_subset(set2);
14645}
14646
14647boolean point::is_subset(const isl::union_set &uset2) const
14648{
14649 return isl::basic_set(*this).is_subset(uset2);
14650}
14651
14652boolean point::is_wrapping() const
14653{
14654 return isl::basic_set(*this).is_wrapping();
14655}
14656
14657boolean point::isa_set() const
14658{
14659 return isl::basic_set(*this).isa_set();
14660}
14661
14663{
14664 return isl::basic_set(*this).lexmax();
14665}
14666
14668{
14669 return isl::basic_set(*this).lexmax_pw_multi_aff();
14670}
14671
14673{
14674 return isl::basic_set(*this).lexmin();
14675}
14676
14678{
14679 return isl::basic_set(*this).lexmin_pw_multi_aff();
14680}
14681
14683{
14684 return isl::basic_set(*this).lower_bound(lower);
14685}
14686
14688{
14689 return isl::basic_set(*this).lower_bound(lower);
14690}
14691
14692isl::set point::lower_bound_si(isl::dim type, unsigned int pos, int value) const
14693{
14694 return isl::basic_set(*this).lower_bound_si(type, pos, value);
14695}
14696
14697isl::set point::lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
14698{
14699 return isl::basic_set(*this).lower_bound_val(type, pos, value);
14700}
14701
14702isl::set point::lower_bound_val(isl::dim type, unsigned int pos, long value) const
14703{
14704 return this->lower_bound_val(type, pos, isl::val(ctx(), value));
14705}
14706
14708{
14709 return isl::basic_set(*this).max_multi_pw_aff();
14710}
14711
14713{
14714 return isl::basic_set(*this).max_val(obj);
14715}
14716
14718{
14719 return isl::basic_set(*this).min_multi_pw_aff();
14720}
14721
14723{
14724 return isl::basic_set(*this).min_val(obj);
14725}
14726
14728{
14730 return manage(res);
14731}
14732
14734{
14735 return multi_val();
14736}
14737
14739{
14740 return isl::basic_set(*this).n_basic_set();
14741}
14742
14744{
14745 return isl::basic_set(*this).params();
14746}
14747
14749{
14751}
14752
14754{
14756}
14757
14759{
14760 return isl::basic_set(*this).polyhedral_hull();
14761}
14762
14764{
14765 return isl::basic_set(*this).preimage(ma);
14766}
14767
14769{
14770 return isl::basic_set(*this).preimage(mpa);
14771}
14772
14774{
14775 return isl::basic_set(*this).preimage(pma);
14776}
14777
14779{
14780 return isl::basic_set(*this).preimage(upma);
14781}
14782
14784{
14785 return isl::basic_set(*this).product(set2);
14786}
14787
14788isl::basic_set point::project_out(isl::dim type, unsigned int first, unsigned int n) const
14789{
14790 return isl::basic_set(*this).project_out(type, first, n);
14791}
14792
14794{
14795 return isl::basic_set(*this).project_out_all_params();
14796}
14797
14799{
14800 return isl::basic_set(*this).project_out_param(id);
14801}
14802
14803isl::set point::project_out_param(const std::string &id) const
14804{
14805 return this->project_out_param(isl::id(ctx(), id));
14806}
14807
14809{
14810 return isl::basic_set(*this).project_out_param(list);
14811}
14812
14814{
14815 return isl::basic_set(*this).pw_multi_aff_on_domain(mv);
14816}
14817
14818isl::set point::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
14819{
14820 return isl::basic_set(*this).remove_dims(type, first, n);
14821}
14822
14824{
14825 return isl::basic_set(*this).remove_divs();
14826}
14827
14829{
14830 return isl::basic_set(*this).remove_redundancies();
14831}
14832
14834{
14835 return isl::basic_set(*this).reset_tuple_id();
14836}
14837
14839{
14840 return isl::basic_set(*this).sample();
14841}
14842
14844{
14845 return isl::basic_set(*this).sample_point();
14846}
14847
14848isl::set point::set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const
14849{
14850 return isl::basic_set(*this).set_dim_id(type, pos, id);
14851}
14852
14853isl::set point::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
14854{
14855 return this->set_dim_id(type, pos, isl::id(ctx(), id));
14856}
14857
14859{
14860 return isl::basic_set(*this).set_list();
14861}
14862
14864{
14865 return isl::basic_set(*this).set_tuple_id(id);
14866}
14867
14868isl::set point::set_tuple_id(const std::string &id) const
14869{
14870 return this->set_tuple_id(isl::id(ctx(), id));
14871}
14872
14874{
14875 return isl::basic_set(*this).simple_fixed_box_hull();
14876}
14877
14879{
14880 return isl::basic_set(*this).simple_hull();
14881}
14882
14884{
14885 return isl::basic_set(*this).space();
14886}
14887
14889{
14890 return isl::basic_set(*this).stride(pos);
14891}
14892
14894{
14895 return isl::basic_set(*this).subtract(set2);
14896}
14897
14899{
14900 return isl::basic_set(*this).subtract(uset2);
14901}
14902
14904{
14905 return isl::basic_set(*this).to_list();
14906}
14907
14909{
14910 auto res = isl_point_to_set(copy());
14911 return manage(res);
14912}
14913
14915{
14916 return isl::basic_set(*this).to_union_set();
14917}
14918
14920{
14921 return isl::basic_set(*this).translation();
14922}
14923
14925{
14926 return isl::basic_set(*this).tuple_dim();
14927}
14928
14930{
14931 return isl::basic_set(*this).tuple_id();
14932}
14933
14934std::string point::tuple_name() const
14935{
14936 return isl::basic_set(*this).tuple_name();
14937}
14938
14940{
14941 return isl::basic_set(*this).unbind_params(tuple);
14942}
14943
14945{
14947}
14948
14950{
14951 return isl::basic_set(*this).unite(bset2);
14952}
14953
14955{
14956 return isl::basic_set(*this).unite(set2);
14957}
14958
14960{
14961 return isl::basic_set(*this).unite(uset2);
14962}
14963
14965{
14966 return isl::basic_set(*this).unshifted_simple_hull();
14967}
14968
14970{
14971 return isl::basic_set(*this).unwrap();
14972}
14973
14975{
14976 return isl::basic_set(*this).upper_bound(upper);
14977}
14978
14980{
14981 return isl::basic_set(*this).upper_bound(upper);
14982}
14983
14984isl::set point::upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
14985{
14986 return isl::basic_set(*this).upper_bound_val(type, pos, value);
14987}
14988
14989isl::set point::upper_bound_val(isl::dim type, unsigned int pos, long value) const
14990{
14991 return this->upper_bound_val(type, pos, isl::val(ctx(), value));
14992}
14993
14994inline std::ostream &operator<<(std::ostream &os, const point &obj)
14995{
14996 char *str = isl_point_to_str(obj.get());
14997 if (!str) {
14998 os.setstate(std::ios_base::badbit);
14999 return os;
15000 }
15001 os << str;
15002 free(str);
15003 return os;
15004}
15005
15006// implementations for isl::pw_aff
15008 return pw_aff(ptr);
15009}
15011 ptr = isl_pw_aff_copy(ptr);
15012 return pw_aff(ptr);
15013}
15014
15016 : ptr(nullptr) {}
15017
15019 : ptr(nullptr)
15020{
15021 ptr = obj.copy();
15022}
15023
15025 : ptr(ptr) {}
15026
15028{
15030 ptr = res;
15031}
15032
15033pw_aff::pw_aff(isl::ctx ctx, const std::string &str)
15034{
15035 auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
15036 ptr = res;
15037}
15038
15040{
15042 ptr = res;
15043}
15044
15046{
15048 ptr = res;
15049}
15050
15052 std::swap(this->ptr, obj.ptr);
15053 return *this;
15054}
15055
15057 if (ptr)
15059}
15060
15062 return isl_pw_aff_copy(ptr);
15063}
15064
15066 return ptr;
15067}
15068
15070 isl_pw_aff *tmp = ptr;
15071 ptr = nullptr;
15072 return tmp;
15073}
15074
15075bool pw_aff::is_null() const {
15076 return ptr == nullptr;
15077}
15078
15081}
15082
15084{
15085 return isl::pw_multi_aff(*this).add(multi2);
15086}
15087
15089{
15090 return isl::union_pw_aff(*this).add(multi2);
15091}
15092
15094{
15095 auto res = isl_pw_aff_add(copy(), pwaff2.release());
15096 return manage(res);
15097}
15098
15100{
15101 return isl::pw_multi_aff(*this).add(pma2);
15102}
15103
15105{
15106 return isl::union_pw_aff(*this).add(upa2);
15107}
15108
15110{
15111 return isl::union_pw_aff(*this).add(upma2);
15112}
15113
15115{
15116 return this->add(isl::pw_aff(pwaff2));
15117}
15118
15120{
15122 return manage(res);
15123}
15124
15126{
15127 return this->add_constant(isl::val(ctx(), v));
15128}
15129
15131{
15132 return isl::pw_multi_aff(*this).add_constant(mv);
15133}
15134
15136{
15137 auto res = isl_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
15138 return manage(res);
15139}
15140
15142{
15143 return isl::union_pw_aff(*this).add_pw_multi_aff(pma);
15144}
15145
15147{
15148 return isl::union_pw_aff(*this).apply(upma2);
15149}
15150
15152{
15153 auto res = isl_pw_aff_as_aff(copy());
15154 return manage(res);
15155}
15156
15158{
15159 auto res = isl_pw_aff_as_map(copy());
15160 return manage(res);
15161}
15162
15164{
15165 return isl::pw_multi_aff(*this).as_multi_aff();
15166}
15167
15169{
15171}
15172
15174{
15175 return isl::union_pw_aff(*this).as_pw_multi_aff();
15176}
15177
15179{
15180 return isl::pw_multi_aff(*this).as_set();
15181}
15182
15184{
15185 return isl::union_pw_aff(*this).as_union_map();
15186}
15187
15189{
15190 return isl::pw_multi_aff(*this).at(pos);
15191}
15192
15194{
15195 return isl::multi_pw_aff(*this).bind(tuple);
15196}
15197
15199{
15200 auto res = isl_pw_aff_bind_id(copy(), id.release());
15201 return manage(res);
15202}
15203
15204isl::set pw_aff::bind(const std::string &id) const
15205{
15206 return this->bind(isl::id(ctx(), id));
15207}
15208
15210{
15211 auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
15212 return manage(res);
15213}
15214
15216{
15218 return manage(res);
15219}
15220
15222{
15223 auto res = isl_pw_aff_ceil(copy());
15224 return manage(res);
15225}
15226
15228{
15229 auto res = isl_pw_aff_coalesce(copy());
15230 return manage(res);
15231}
15232
15233isl::pw_aff pw_aff::cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const
15234{
15235 auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
15236 return manage(res);
15237}
15238
15240{
15241 return isl::pw_multi_aff(*this).dim(type);
15242}
15243
15245{
15246 auto res = isl_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15247 return manage(res);
15248}
15249
15251{
15252 return dim_id(type, pos);
15253}
15254
15256{
15257 auto res = isl_pw_aff_div(copy(), pa2.release());
15258 return manage(res);
15259}
15260
15262{
15263 auto res = isl_pw_aff_domain(copy());
15264 return manage(res);
15265}
15266
15268{
15270 return manage(res);
15271}
15272
15274{
15275 return domain_space();
15276}
15277
15278isl::pw_multi_aff pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
15279{
15280 return isl::pw_multi_aff(*this).drop_dims(type, first, n);
15281}
15282
15284{
15285 auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
15286 return manage(res);
15287}
15288
15290{
15291 auto res = isl_pw_aff_eval(copy(), pnt.release());
15292 return manage(res);
15293}
15294
15296{
15298}
15299
15301{
15302 return isl::pw_multi_aff(*this).flat_range_product(multi2);
15303}
15304
15306{
15307 return isl::union_pw_aff(*this).flat_range_product(multi2);
15308}
15309
15311{
15312 return isl::pw_multi_aff(*this).flat_range_product(pma2);
15313}
15314
15316{
15317 return isl::union_pw_aff(*this).flat_range_product(upma2);
15318}
15319
15321{
15322 auto res = isl_pw_aff_floor(copy());
15323 return manage(res);
15324}
15325
15326stat pw_aff::foreach_piece(const std::function<stat(isl::set, isl::aff)> &fn) const
15327{
15328 struct fn_data {
15329 std::function<stat(isl::set, isl::aff)> func;
15330 } fn_data = { fn };
15331 auto fn_lambda = [](isl_set *arg_0, isl_aff *arg_1, void *arg_2) -> isl_stat {
15332 auto *data = static_cast<struct fn_data *>(arg_2);
15333 auto ret = (data->func)(manage(arg_0), manage(arg_1));
15334 return ret.release();
15335 };
15336 auto res = isl_pw_aff_foreach_piece(get(), fn_lambda, &fn_data);
15337 return manage(res);
15338}
15339
15341{
15342 return isl::pw_multi_aff(*this).foreach_piece(fn);
15343}
15344
15345stat pw_aff::foreach_pw_aff(const std::function<stat(isl::pw_aff)> &fn) const
15346{
15347 return isl::union_pw_aff(*this).foreach_pw_aff(fn);
15348}
15349
15351{
15352 auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
15353 return manage(res);
15354}
15355
15357{
15358 auto res = isl_pw_aff_gist(copy(), context.release());
15359 return manage(res);
15360}
15361
15363{
15364 return isl::union_pw_aff(*this).gist(context);
15365}
15366
15368{
15369 return this->gist(isl::set(context));
15370}
15371
15373{
15374 return this->gist(isl::set(context));
15375}
15376
15378{
15379 auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
15380 return manage(res);
15381}
15382
15384{
15385 return isl::pw_multi_aff(*this).has_range_tuple_id();
15386}
15387
15389{
15390 return isl::pw_multi_aff(*this).identity();
15391}
15392
15394{
15396 return manage(res);
15397}
15398
15400{
15402 return manage(res);
15403}
15404
15406{
15408}
15409
15411{
15412 return isl::union_pw_aff(*this).intersect_domain(uset);
15413}
15414
15416{
15417 return this->intersect_domain(isl::set(set));
15418}
15419
15421{
15422 return this->intersect_domain(isl::set(set));
15423}
15424
15426{
15428}
15429
15431{
15433}
15434
15436{
15438 return manage(res);
15439}
15440
15442{
15443 return isl::pw_multi_aff(*this).involves_locals();
15444}
15445
15447{
15448 return isl::multi_pw_aff(*this).involves_nan();
15449}
15450
15451boolean pw_aff::involves_param(const isl::id &id) const
15452{
15453 return isl::pw_multi_aff(*this).involves_param(id);
15454}
15455
15456boolean pw_aff::involves_param(const std::string &id) const
15457{
15458 return this->involves_param(isl::id(ctx(), id));
15459}
15460
15461boolean pw_aff::involves_param(const isl::id_list &list) const
15462{
15463 return isl::pw_multi_aff(*this).involves_param(list);
15464}
15465
15466boolean pw_aff::is_cst() const
15467{
15468 auto res = isl_pw_aff_is_cst(get());
15469 return manage(res);
15470}
15471
15472boolean pw_aff::is_equal(const isl::pw_aff &pa2) const
15473{
15474 auto res = isl_pw_aff_is_equal(get(), pa2.get());
15475 return manage(res);
15476}
15477
15478boolean pw_aff::isa_aff() const
15479{
15480 auto res = isl_pw_aff_isa_aff(get());
15481 return manage(res);
15482}
15483
15485{
15486 return isl::pw_multi_aff(*this).isa_multi_aff();
15487}
15488
15490{
15491 return isl::union_pw_aff(*this).isa_pw_multi_aff();
15492}
15493
15495{
15496 auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
15497 return manage(res);
15498}
15499
15501{
15502 return isl::multi_pw_aff(*this).list();
15503}
15504
15506{
15507 auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
15508 return manage(res);
15509}
15510
15512{
15513 return isl::pw_multi_aff(*this).max(multi2);
15514}
15515
15517{
15518 auto res = isl_pw_aff_max(copy(), pwaff2.release());
15519 return manage(res);
15520}
15521
15523{
15524 return this->max(isl::pw_aff(pwaff2));
15525}
15526
15528{
15529 return isl::pw_multi_aff(*this).max_multi_val();
15530}
15531
15533{
15534 return isl::pw_multi_aff(*this).min(multi2);
15535}
15536
15538{
15539 auto res = isl_pw_aff_min(copy(), pwaff2.release());
15540 return manage(res);
15541}
15542
15544{
15545 return this->min(isl::pw_aff(pwaff2));
15546}
15547
15549{
15550 return isl::pw_multi_aff(*this).min_multi_val();
15551}
15552
15554{
15555 auto res = isl_pw_aff_mod_val(copy(), mod.release());
15556 return manage(res);
15557}
15558
15560{
15561 return this->mod(isl::val(ctx(), mod));
15562}
15563
15565{
15566 auto res = isl_pw_aff_mul(copy(), pwaff2.release());
15567 return manage(res);
15568}
15569
15571{
15572 return isl::pw_multi_aff(*this).n_piece();
15573}
15574
15576{
15577 auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
15578 return manage(res);
15579}
15580
15582{
15583 auto res = isl_pw_aff_neg(copy());
15584 return manage(res);
15585}
15586
15588{
15589 auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
15590 return manage(res);
15591}
15592
15594{
15595 return isl::union_pw_aff(*this).plain_is_empty();
15596}
15597
15598boolean pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
15599{
15600 return isl::pw_multi_aff(*this).plain_is_equal(multi2);
15601}
15602
15604{
15605 return isl::union_pw_aff(*this).plain_is_equal(multi2);
15606}
15607
15609{
15611}
15612
15614{
15616}
15617
15619{
15620 return isl::pw_multi_aff(*this).product(multi2);
15621}
15622
15624{
15625 return isl::pw_multi_aff(*this).product(pma2);
15626}
15627
15629{
15630 auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
15631 return manage(res);
15632}
15633
15635{
15637 return manage(res);
15638}
15639
15641{
15642 auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
15643 return manage(res);
15644}
15645
15647{
15648 return isl::union_pw_aff(*this).pullback(upma);
15649}
15650
15652{
15653 return isl::union_pw_aff(*this).pw_multi_aff_list();
15654}
15655
15657{
15658 return isl::pw_multi_aff(*this).range_factor_domain();
15659}
15660
15662{
15663 return isl::pw_multi_aff(*this).range_factor_range();
15664}
15665
15667{
15668 return isl::pw_multi_aff(*this).range_product(multi2);
15669}
15670
15672{
15673 return isl::union_pw_aff(*this).range_product(multi2);
15674}
15675
15677{
15678 return isl::pw_multi_aff(*this).range_product(pma2);
15679}
15680
15682{
15683 return isl::union_pw_aff(*this).range_product(upma2);
15684}
15685
15687{
15688 return isl::pw_multi_aff(*this).range_tuple_id();
15689}
15690
15692{
15694}
15695
15697{
15698 return isl::multi_pw_aff(*this).reset_tuple_id(type);
15699}
15700
15702{
15703 return isl::multi_pw_aff(*this).scale(mv);
15704}
15705
15707{
15708 auto res = isl_pw_aff_scale_val(copy(), v.release());
15709 return manage(res);
15710}
15711
15713{
15714 return this->scale(isl::val(ctx(), v));
15715}
15716
15718{
15719 return isl::multi_pw_aff(*this).scale_down(mv);
15720}
15721
15723{
15724 auto res = isl_pw_aff_scale_down_val(copy(), f.release());
15725 return manage(res);
15726}
15727
15729{
15730 return this->scale_down(isl::val(ctx(), f));
15731}
15732
15734{
15735 return isl::pw_multi_aff(*this).set_at(pos, el);
15736}
15737
15739{
15740 return isl::union_pw_aff(*this).set_at(pos, el);
15741}
15742
15744{
15745 return isl::pw_multi_aff(*this).set_pw_aff(pos, el);
15746}
15747
15749{
15750 return isl::pw_multi_aff(*this).set_pw_aff(pos, pa);
15751}
15752
15754{
15755 return isl::pw_multi_aff(*this).set_range_tuple(id);
15756}
15757
15758isl::pw_multi_aff pw_aff::set_range_tuple(const std::string &id) const
15759{
15760 return this->set_range_tuple(isl::id(ctx(), id));
15761}
15762
15764{
15765 auto res = isl_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
15766 return manage(res);
15767}
15768
15769isl::pw_aff pw_aff::set_tuple_id(isl::dim type, const std::string &id) const
15770{
15771 return this->set_tuple_id(type, isl::id(ctx(), id));
15772}
15773
15775{
15776 return isl::union_pw_aff(*this).set_union_pw_aff(pos, el);
15777}
15778
15779class size pw_aff::size() const
15780{
15781 return isl::multi_pw_aff(*this).size();
15782}
15783
15785{
15786 auto res = isl_pw_aff_get_space(get());
15787 return manage(res);
15788}
15789
15791{
15792 return space();
15793}
15794
15796{
15797 return isl::pw_multi_aff(*this).sub(multi2);
15798}
15799
15801{
15802 return isl::union_pw_aff(*this).sub(multi2);
15803}
15804
15806{
15807 auto res = isl_pw_aff_sub(copy(), pwaff2.release());
15808 return manage(res);
15809}
15810
15812{
15813 return isl::pw_multi_aff(*this).sub(pma2);
15814}
15815
15817{
15818 return isl::union_pw_aff(*this).sub(upa2);
15819}
15820
15822{
15823 return isl::union_pw_aff(*this).sub(upma2);
15824}
15825
15827{
15828 return this->sub(isl::pw_aff(pwaff2));
15829}
15830
15832{
15834 return manage(res);
15835}
15836
15838{
15840}
15841
15843{
15844 return isl::union_pw_aff(*this).subtract_domain(uset);
15845}
15846
15848{
15849 return this->subtract_domain(isl::set(set));
15850}
15851
15853{
15854 return this->subtract_domain(isl::set(set));
15855}
15856
15858{
15859 auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
15860 return manage(res);
15861}
15862
15864{
15865 auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
15866 return manage(res);
15867}
15868
15870{
15871 auto res = isl_pw_aff_to_list(copy());
15872 return manage(res);
15873}
15874
15876{
15877 return isl::pw_multi_aff(*this).to_multi_pw_aff();
15878}
15879
15881{
15883 return manage(res);
15884}
15885
15887{
15889}
15890
15892{
15893 auto res = isl_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
15894 return manage(res);
15895}
15896
15898{
15899 return tuple_id(type);
15900}
15901
15903{
15905}
15906
15908{
15909 return isl::pw_multi_aff(*this).union_add(mpa2);
15910}
15911
15913{
15914 return isl::union_pw_aff(*this).union_add(mupa2);
15915}
15916
15918{
15919 auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
15920 return manage(res);
15921}
15922
15924{
15925 return isl::pw_multi_aff(*this).union_add(pma2);
15926}
15927
15929{
15930 return isl::union_pw_aff(*this).union_add(upa2);
15931}
15932
15934{
15935 return isl::union_pw_aff(*this).union_add(upma2);
15936}
15937
15939{
15940 return this->union_add(isl::pw_aff(pwaff2));
15941}
15942
15944{
15945 auto res = isl_pw_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
15946 return manage(res);
15947}
15948
15949inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
15950{
15951 char *str = isl_pw_aff_to_str(obj.get());
15952 if (!str) {
15953 os.setstate(std::ios_base::badbit);
15954 return os;
15955 }
15956 os << str;
15957 free(str);
15958 return os;
15959}
15960
15961// implementations for isl::pw_aff_list
15962pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
15963 return pw_aff_list(ptr);
15964}
15965pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
15966 ptr = isl_pw_aff_list_copy(ptr);
15967 return pw_aff_list(ptr);
15968}
15969
15971 : ptr(nullptr) {}
15972
15974 : ptr(nullptr)
15975{
15976 ptr = obj.copy();
15977}
15978
15980 : ptr(ptr) {}
15981
15983{
15984 auto res = isl_pw_aff_list_alloc(ctx.release(), n);
15985 ptr = res;
15986}
15987
15989{
15990 auto res = isl_pw_aff_list_from_pw_aff(el.release());
15991 ptr = res;
15992}
15993
15995{
15996 auto res = isl_pw_aff_list_read_from_str(ctx.release(), str.c_str());
15997 ptr = res;
15998}
15999
16001 std::swap(this->ptr, obj.ptr);
16002 return *this;
16003}
16004
16006 if (ptr)
16007 isl_pw_aff_list_free(ptr);
16008}
16009
16010__isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
16011 return isl_pw_aff_list_copy(ptr);
16012}
16013
16014__isl_keep isl_pw_aff_list *pw_aff_list::get() const {
16015 return ptr;
16016}
16017
16019 isl_pw_aff_list *tmp = ptr;
16020 ptr = nullptr;
16021 return tmp;
16022}
16023
16025 return ptr == nullptr;
16026}
16027
16029 return isl::ctx(isl_pw_aff_list_get_ctx(ptr));
16030}
16031
16033{
16034 auto res = isl_pw_aff_list_add(copy(), el.release());
16035 return manage(res);
16036}
16037
16039{
16040 auto res = isl_pw_aff_list_get_at(get(), index);
16041 return manage(res);
16042}
16043
16045{
16046 return at(index);
16047}
16048
16050{
16051 auto res = isl_pw_aff_list_clear(copy());
16052 return manage(res);
16053}
16054
16056{
16057 auto res = isl_pw_aff_list_concat(copy(), list2.release());
16058 return manage(res);
16059}
16060
16061isl::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
16062{
16063 auto res = isl_pw_aff_list_drop(copy(), first, n);
16064 return manage(res);
16065}
16066
16067stat pw_aff_list::foreach(const std::function<stat(isl::pw_aff)> &fn) const
16068{
16069 struct fn_data {
16070 std::function<stat(isl::pw_aff)> func;
16071 } fn_data = { fn };
16072 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
16073 auto *data = static_cast<struct fn_data *>(arg_1);
16074 auto ret = (data->func)(manage(arg_0));
16075 return ret.release();
16076 };
16077 auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
16078 return manage(res);
16079}
16080
16082{
16083 auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
16084 return manage(res);
16085}
16086
16088{
16089 auto res = isl_pw_aff_list_size(get());
16090 return manage(res);
16091}
16092
16093inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
16094{
16095 char *str = isl_pw_aff_list_to_str(obj.get());
16096 if (!str) {
16097 os.setstate(std::ios_base::badbit);
16098 return os;
16099 }
16100 os << str;
16101 free(str);
16102 return os;
16103}
16104
16105// implementations for isl::pw_multi_aff
16107 return pw_multi_aff(ptr);
16108}
16110 ptr = isl_pw_multi_aff_copy(ptr);
16111 return pw_multi_aff(ptr);
16112}
16113
16115 : ptr(nullptr) {}
16116
16118 : ptr(nullptr)
16119{
16120 ptr = obj.copy();
16121}
16122
16124 : ptr(ptr) {}
16125
16127{
16128 auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
16129 ptr = res;
16130}
16131
16133{
16135 ptr = res;
16136}
16137
16139{
16141 ptr = res;
16142}
16143
16145 std::swap(this->ptr, obj.ptr);
16146 return *this;
16147}
16148
16150 if (ptr)
16152}
16153
16155 return isl_pw_multi_aff_copy(ptr);
16156}
16157
16159 return ptr;
16160}
16161
16163 isl_pw_multi_aff *tmp = ptr;
16164 ptr = nullptr;
16165 return tmp;
16166}
16167
16169 return ptr == nullptr;
16170}
16171
16174}
16175
16177{
16178 return isl::multi_pw_aff(*this).add(multi2);
16179}
16180
16182{
16183 return isl::multi_pw_aff(*this).add(multi2);
16184}
16185
16187{
16188 auto res = isl_pw_multi_aff_add(copy(), pma2.release());
16189 return manage(res);
16190}
16191
16193{
16194 return isl::union_pw_multi_aff(*this).add(upma2);
16195}
16196
16198{
16199 return this->add(isl::pw_multi_aff(pma2));
16200}
16201
16203{
16204 return this->add(isl::pw_multi_aff(pma2));
16205}
16206
16208{
16210 return manage(res);
16211}
16212
16214{
16216 return manage(res);
16217}
16218
16220{
16221 return this->add_constant(isl::val(ctx(), v));
16222}
16223
16225{
16227}
16228
16230{
16231 return isl::union_pw_multi_aff(*this).apply(upma2);
16232}
16233
16235{
16237 return manage(res);
16238}
16239
16241{
16243 return manage(res);
16244}
16245
16247{
16249}
16250
16252{
16254}
16255
16257{
16259 return manage(res);
16260}
16261
16263{
16264 return isl::union_pw_multi_aff(*this).as_union_map();
16265}
16266
16268{
16270 return manage(res);
16271}
16272
16274{
16275 return at(pos);
16276}
16277
16279{
16280 return isl::multi_pw_aff(*this).bind(tuple);
16281}
16282
16284{
16285 auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
16286 return manage(res);
16287}
16288
16290{
16292 return manage(res);
16293}
16294
16296{
16298 return manage(res);
16299}
16300
16302{
16303 auto res = isl_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
16304 return manage(res);
16305}
16306
16308{
16310 return manage(res);
16311}
16312
16314{
16316 return manage(res);
16317}
16318
16319isl::pw_multi_aff pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
16320{
16321 auto res = isl_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
16322 return manage(res);
16323}
16324
16326{
16328}
16329
16331{
16332 return isl::multi_pw_aff(*this).flat_range_product(multi2);
16333}
16334
16336{
16337 return isl::multi_pw_aff(*this).flat_range_product(multi2);
16338}
16339
16341{
16343 return manage(res);
16344}
16345
16347{
16348 return isl::union_pw_multi_aff(*this).flat_range_product(upma2);
16349}
16350
16352{
16353 return this->flat_range_product(isl::pw_multi_aff(pma2));
16354}
16355
16357{
16358 return this->flat_range_product(isl::pw_multi_aff(pma2));
16359}
16360
16362{
16363 struct fn_data {
16364 std::function<stat(isl::set, isl::multi_aff)> func;
16365 } fn_data = { fn };
16366 auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
16367 auto *data = static_cast<struct fn_data *>(arg_2);
16368 auto ret = (data->func)(manage(arg_0), manage(arg_1));
16369 return ret.release();
16370 };
16371 auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
16372 return manage(res);
16373}
16374
16376{
16378 return manage(res);
16379}
16380
16382{
16384 return manage(res);
16385}
16386
16388{
16389 return isl::union_pw_multi_aff(*this).gist(context);
16390}
16391
16393{
16394 return this->gist(isl::set(set));
16395}
16396
16398{
16399 return this->gist(isl::set(set));
16400}
16401
16403{
16405 return manage(res);
16406}
16407
16409{
16410 return isl::multi_pw_aff(*this).identity();
16411}
16412
16414{
16416 return manage(res);
16417}
16418
16420{
16422 return manage(res);
16423}
16424
16426{
16428 return manage(res);
16429}
16430
16432{
16434}
16435
16437{
16438 return isl::union_pw_multi_aff(*this).intersect_domain(uset);
16439}
16440
16442{
16443 return this->intersect_domain(isl::set(set));
16444}
16445
16447{
16448 return this->intersect_domain(isl::set(set));
16449}
16450
16452{
16454}
16455
16457{
16459}
16460
16462{
16464 return manage(res);
16465}
16466
16468{
16470 return manage(res);
16471}
16472
16474{
16475 return isl::multi_pw_aff(*this).involves_nan();
16476}
16477
16479{
16480 return isl::multi_pw_aff(*this).involves_param(id);
16481}
16482
16483boolean pw_multi_aff::involves_param(const std::string &id) const
16484{
16485 return this->involves_param(isl::id(ctx(), id));
16486}
16487
16489{
16490 return isl::multi_pw_aff(*this).involves_param(list);
16491}
16492
16494{
16496 return manage(res);
16497}
16498
16500{
16502}
16503
16505{
16506 return isl::multi_pw_aff(*this).list();
16507}
16508
16510{
16511 return isl::multi_pw_aff(*this).max(multi2);
16512}
16513
16515{
16517 return manage(res);
16518}
16519
16521{
16522 return isl::multi_pw_aff(*this).min(multi2);
16523}
16524
16526{
16528 return manage(res);
16529}
16530
16532{
16534 return manage(res);
16535}
16536
16538{
16540 return manage(res);
16541}
16542
16544{
16545 return isl::multi_pw_aff(*this).neg();
16546}
16547
16549{
16551}
16552
16554{
16555 return isl::multi_pw_aff(*this).plain_is_equal(multi2);
16556}
16557
16559{
16560 return isl::multi_pw_aff(*this).plain_is_equal(multi2);
16561}
16562
16564{
16566 return manage(res);
16567}
16568
16570{
16572}
16573
16575{
16577}
16578
16580{
16582}
16583
16585{
16586 return isl::multi_pw_aff(*this).product(multi2);
16587}
16588
16590{
16591 auto res = isl_pw_multi_aff_product(copy(), pma2.release());
16592 return manage(res);
16593}
16594
16596{
16597 return this->product(isl::pw_multi_aff(pma2));
16598}
16599
16601{
16602 return this->product(isl::pw_multi_aff(pma2));
16603}
16604
16606{
16607 auto res = isl_pw_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
16608 return manage(res);
16609}
16610
16612{
16613 return isl::multi_pw_aff(*this).pullback(mpa2);
16614}
16615
16617{
16618 auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
16619 return manage(res);
16620}
16621
16623{
16625 return manage(res);
16626}
16627
16629{
16630 return isl::union_pw_multi_aff(*this).pullback(upma2);
16631}
16632
16634{
16636}
16637
16639{
16641 return manage(res);
16642}
16643
16645{
16647 return manage(res);
16648}
16649
16651{
16653 return manage(res);
16654}
16655
16657{
16658 return isl::multi_pw_aff(*this).range_product(multi2);
16659}
16660
16662{
16663 return isl::multi_pw_aff(*this).range_product(multi2);
16664}
16665
16667{
16669 return manage(res);
16670}
16671
16673{
16674 return isl::union_pw_multi_aff(*this).range_product(upma2);
16675}
16676
16678{
16679 return this->range_product(isl::pw_multi_aff(pma2));
16680}
16681
16683{
16684 return this->range_product(isl::pw_multi_aff(pma2));
16685}
16686
16688{
16690 return manage(res);
16691}
16692
16694{
16695 return range_tuple_id();
16696}
16697
16699{
16701}
16702
16704{
16705 return isl::multi_pw_aff(*this).reset_tuple_id(type);
16706}
16707
16709{
16710 return isl::multi_pw_aff(*this).scale(mv);
16711}
16712
16714{
16716 return manage(res);
16717}
16718
16720{
16721 return this->scale(isl::val(ctx(), v));
16722}
16723
16725{
16726 return isl::multi_pw_aff(*this).scale_down(mv);
16727}
16728
16730{
16732 return manage(res);
16733}
16734
16736{
16737 return this->scale_down(isl::val(ctx(), v));
16738}
16739
16741{
16742 return isl::multi_pw_aff(*this).set_at(pos, el);
16743}
16744
16746{
16747 return isl::multi_pw_aff(*this).set_at(pos, el);
16748}
16749
16751{
16752 return isl::multi_pw_aff(*this).set_pw_aff(pos, el);
16753}
16754
16756{
16758 return manage(res);
16759}
16760
16762{
16764 return manage(res);
16765}
16766
16768{
16769 return this->set_range_tuple(isl::id(ctx(), id));
16770}
16771
16773{
16774 return isl::multi_pw_aff(*this).set_union_pw_aff(pos, el);
16775}
16776
16778{
16779 return isl::multi_pw_aff(*this).size();
16780}
16781
16783{
16785 return manage(res);
16786}
16787
16789{
16790 return space();
16791}
16792
16794{
16795 return isl::multi_pw_aff(*this).sub(multi2);
16796}
16797
16799{
16800 return isl::multi_pw_aff(*this).sub(multi2);
16801}
16802
16804{
16805 auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
16806 return manage(res);
16807}
16808
16810{
16811 return isl::union_pw_multi_aff(*this).sub(upma2);
16812}
16813
16815{
16816 return this->sub(isl::pw_multi_aff(pma2));
16817}
16818
16820{
16821 return this->sub(isl::pw_multi_aff(pma2));
16822}
16823
16825{
16827 return manage(res);
16828}
16829
16831{
16833}
16834
16836{
16837 return isl::union_pw_multi_aff(*this).subtract_domain(uset);
16838}
16839
16841{
16842 return this->subtract_domain(isl::set(set));
16843}
16844
16846{
16847 return this->subtract_domain(isl::set(set));
16848}
16849
16851{
16852 auto res = isl_pw_multi_aff_to_list(copy());
16853 return manage(res);
16854}
16855
16857{
16859 return manage(res);
16860}
16861
16863{
16865 return manage(res);
16866}
16867
16869{
16870 auto res = isl_pw_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
16871 return manage(res);
16872}
16873
16875{
16876 return tuple_id(type);
16877}
16878
16880{
16882}
16883
16885{
16886 return isl::multi_pw_aff(*this).union_add(mpa2);
16887}
16888
16890{
16891 return isl::multi_pw_aff(*this).union_add(mupa2);
16892}
16893
16895{
16896 auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
16897 return manage(res);
16898}
16899
16901{
16902 return isl::union_pw_multi_aff(*this).union_add(upma2);
16903}
16904
16906{
16907 return this->union_add(isl::pw_multi_aff(pma2));
16908}
16909
16911{
16912 return this->union_add(isl::pw_multi_aff(pma2));
16913}
16914
16916{
16918 return manage(res);
16919}
16920
16921inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
16922{
16923 char *str = isl_pw_multi_aff_to_str(obj.get());
16924 if (!str) {
16925 os.setstate(std::ios_base::badbit);
16926 return os;
16927 }
16928 os << str;
16929 free(str);
16930 return os;
16931}
16932
16933// implementations for isl::pw_multi_aff_list
16934pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
16935 return pw_multi_aff_list(ptr);
16936}
16937pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
16938 ptr = isl_pw_multi_aff_list_copy(ptr);
16939 return pw_multi_aff_list(ptr);
16940}
16941
16943 : ptr(nullptr) {}
16944
16946 : ptr(nullptr)
16947{
16948 ptr = obj.copy();
16949}
16950
16952 : ptr(ptr) {}
16953
16955{
16956 auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
16957 ptr = res;
16958}
16959
16961{
16962 auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
16963 ptr = res;
16964}
16965
16967{
16968 auto res = isl_pw_multi_aff_list_read_from_str(ctx.release(), str.c_str());
16969 ptr = res;
16970}
16971
16973 std::swap(this->ptr, obj.ptr);
16974 return *this;
16975}
16976
16978 if (ptr)
16979 isl_pw_multi_aff_list_free(ptr);
16980}
16981
16982__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
16983 return isl_pw_multi_aff_list_copy(ptr);
16984}
16985
16986__isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
16987 return ptr;
16988}
16989
16990__isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
16991 isl_pw_multi_aff_list *tmp = ptr;
16992 ptr = nullptr;
16993 return tmp;
16994}
16995
16997 return ptr == nullptr;
16998}
16999
17001 return isl::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
17002}
17003
17005{
17006 auto res = isl_pw_multi_aff_list_add(copy(), el.release());
17007 return manage(res);
17008}
17009
17011{
17012 auto res = isl_pw_multi_aff_list_get_at(get(), index);
17013 return manage(res);
17014}
17015
17017{
17018 return at(index);
17019}
17020
17022{
17023 auto res = isl_pw_multi_aff_list_clear(copy());
17024 return manage(res);
17025}
17026
17028{
17029 auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
17030 return manage(res);
17031}
17032
17033isl::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
17034{
17035 auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
17036 return manage(res);
17037}
17038
17040{
17041 struct fn_data {
17042 std::function<stat(isl::pw_multi_aff)> func;
17043 } fn_data = { fn };
17044 auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
17045 auto *data = static_cast<struct fn_data *>(arg_1);
17046 auto ret = (data->func)(manage(arg_0));
17047 return ret.release();
17048 };
17049 auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
17050 return manage(res);
17051}
17052
17054{
17055 auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
17056 return manage(res);
17057}
17058
17060{
17061 auto res = isl_pw_multi_aff_list_size(get());
17062 return manage(res);
17063}
17064
17065inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
17066{
17067 char *str = isl_pw_multi_aff_list_to_str(obj.get());
17068 if (!str) {
17069 os.setstate(std::ios_base::badbit);
17070 return os;
17071 }
17072 os << str;
17073 free(str);
17074 return os;
17075}
17076
17077// implementations for isl::schedule
17079 return schedule(ptr);
17080}
17082 ptr = isl_schedule_copy(ptr);
17083 return schedule(ptr);
17084}
17085
17087 : ptr(nullptr) {}
17088
17090 : ptr(nullptr)
17091{
17092 ptr = obj.copy();
17093}
17094
17096 : ptr(ptr) {}
17097
17099{
17100 auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
17101 ptr = res;
17102}
17103
17105 std::swap(this->ptr, obj.ptr);
17106 return *this;
17107}
17108
17110 if (ptr)
17112}
17113
17115 return isl_schedule_copy(ptr);
17116}
17117
17119 return ptr;
17120}
17121
17123 isl_schedule *tmp = ptr;
17124 ptr = nullptr;
17125 return tmp;
17126}
17127
17128bool schedule::is_null() const {
17129 return ptr == nullptr;
17130}
17131
17134}
17135
17137{
17139 return manage(res);
17140}
17141
17143{
17145 return manage(res);
17146}
17147
17149{
17150 return domain();
17151}
17152
17154{
17156 return manage(res);
17157}
17158
17160{
17161 auto res = isl_schedule_gist_domain_params(copy(), context.release());
17162 return manage(res);
17163}
17164
17166{
17168 return manage(res);
17169}
17170
17172{
17174 return manage(res);
17175}
17176
17178{
17179 auto res = isl_schedule_get_map(get());
17180 return manage(res);
17181}
17182
17184{
17185 return map();
17186}
17187
17189{
17191 return manage(res);
17192}
17193
17195{
17196 auto res = isl_schedule_get_root(get());
17197 return manage(res);
17198}
17199
17201{
17202 return root();
17203}
17204
17206{
17207 auto res = isl_schedule_sequence(copy(), schedule2.release());
17208 return manage(res);
17209}
17210
17211inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
17212{
17213 char *str = isl_schedule_to_str(obj.get());
17214 if (!str) {
17215 os.setstate(std::ios_base::badbit);
17216 return os;
17217 }
17218 os << str;
17219 free(str);
17220 return os;
17221}
17222
17223// implementations for isl::schedule_constraints
17225 return schedule_constraints(ptr);
17226}
17229 return schedule_constraints(ptr);
17230}
17231
17233 : ptr(nullptr) {}
17234
17236 : ptr(nullptr)
17237{
17238 ptr = obj.copy();
17239}
17240
17242 : ptr(ptr) {}
17243
17245{
17247 ptr = res;
17248}
17249
17251 std::swap(this->ptr, obj.ptr);
17252 return *this;
17253}
17254
17256 if (ptr)
17258}
17259
17262}
17263
17265 return ptr;
17266}
17267
17270 ptr = nullptr;
17271 return tmp;
17272}
17273
17275 return ptr == nullptr;
17276}
17277
17280}
17281
17283{
17285 return manage(res);
17286}
17287
17289{
17290 return coincidence();
17291}
17292
17294{
17296 return manage(res);
17297}
17298
17300{
17302 return manage(res);
17303}
17304
17306{
17307 return conditional_validity();
17308}
17309
17311{
17313 return manage(res);
17314}
17315
17317{
17319}
17320
17322{
17324 return manage(res);
17325}
17326
17328{
17329 return context();
17330}
17331
17333{
17335 return manage(res);
17336}
17337
17339{
17340 return domain();
17341}
17342
17344{
17346 return manage(res);
17347}
17348
17350{
17352 return manage(res);
17353}
17354
17356{
17357 return proximity();
17358}
17359
17361{
17363 return manage(res);
17364}
17365
17367{
17369 return manage(res);
17370}
17371
17373{
17375 return manage(res);
17376}
17377
17379{
17381 return manage(res);
17382}
17383
17385{
17387 return manage(res);
17388}
17389
17391{
17393 return manage(res);
17394}
17395
17397{
17398 return validity();
17399}
17400
17401inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
17402{
17404 if (!str) {
17405 os.setstate(std::ios_base::badbit);
17406 return os;
17407 }
17408 os << str;
17409 free(str);
17410 return os;
17411}
17412
17413// implementations for isl::schedule_node
17415 return schedule_node(ptr);
17416}
17418 ptr = isl_schedule_node_copy(ptr);
17419 return schedule_node(ptr);
17420}
17421
17423 : ptr(nullptr) {}
17424
17426 : ptr(nullptr)
17427{
17428 ptr = obj.copy();
17429}
17430
17432 : ptr(ptr) {}
17433
17435 std::swap(this->ptr, obj.ptr);
17436 return *this;
17437}
17438
17440 if (ptr)
17442}
17443
17446}
17447
17449 return ptr;
17450}
17451
17453 isl_schedule_node *tmp = ptr;
17454 ptr = nullptr;
17455 return tmp;
17456}
17457
17459 return ptr == nullptr;
17460}
17461
17462template <typename T, typename>
17463boolean schedule_node::isa_type(T subtype) const
17464{
17465 if (is_null())
17466 return boolean();
17467 return isl_schedule_node_get_type(get()) == subtype;
17468}
17469template <class T>
17470boolean schedule_node::isa() const
17471{
17472 return isa_type<decltype(T::type)>(T::type);
17473}
17474template <class T>
17476{
17477 if (isa<T>().is_false())
17478 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
17479 return T(copy());
17480}
17481
17484}
17485
17487{
17488 auto res = isl_schedule_node_ancestor(copy(), generation);
17489 return manage(res);
17490}
17491
17493{
17495 return manage(res);
17496}
17497
17499{
17501}
17502
17504{
17506 return manage(res);
17507}
17508
17510{
17512 return manage(res);
17513}
17514
17516{
17517 return child_position();
17518}
17519
17521{
17523 return manage(res);
17524}
17525
17527{
17528 return domain();
17529}
17530
17531boolean schedule_node::every_descendant(const std::function<boolean(isl::schedule_node)> &test) const
17532{
17533 struct test_data {
17534 std::function<boolean(isl::schedule_node)> func;
17535 } test_data = { test };
17536 auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
17537 auto *data = static_cast<struct test_data *>(arg_1);
17538 auto ret = (data->func)(manage_copy(arg_0));
17539 return ret.release();
17540 };
17541 auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
17542 return manage(res);
17543}
17544
17546{
17548 return manage(res);
17549}
17550
17552{
17553 struct fn_data {
17554 std::function<stat(isl::schedule_node)> func;
17555 } fn_data = { fn };
17556 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
17557 auto *data = static_cast<struct fn_data *>(arg_1);
17558 auto ret = (data->func)(manage_copy(arg_0));
17559 return ret.release();
17560 };
17561 auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
17562 return manage(res);
17563}
17564
17566{
17567 struct fn_data {
17568 std::function<boolean(isl::schedule_node)> func;
17569 } fn_data = { fn };
17570 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
17571 auto *data = static_cast<struct fn_data *>(arg_1);
17572 auto ret = (data->func)(manage_copy(arg_0));
17573 return ret.release();
17574 };
17575 auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
17576 return manage(res);
17577}
17578
17580{
17582 return manage(res);
17583}
17584
17586{
17587 auto res = isl_schedule_node_from_extension(extension.release());
17588 return manage(res);
17589}
17590
17592{
17593 auto res = isl_schedule_node_graft_after(copy(), graft.release());
17594 return manage(res);
17595}
17596
17598{
17600 return manage(res);
17601}
17602
17604{
17606 return manage(res);
17607}
17608
17610{
17612 return manage(res);
17613}
17614
17616{
17618 return manage(res);
17619}
17620
17622{
17624 return manage(res);
17625}
17626
17628{
17629 auto res = isl_schedule_node_insert_context(copy(), context.release());
17630 return manage(res);
17631}
17632
17634{
17635 auto res = isl_schedule_node_insert_filter(copy(), filter.release());
17636 return manage(res);
17637}
17638
17640{
17641 auto res = isl_schedule_node_insert_guard(copy(), context.release());
17642 return manage(res);
17643}
17644
17646{
17648 return manage(res);
17649}
17650
17652{
17653 return this->insert_mark(isl::id(ctx(), mark));
17654}
17655
17657{
17659 return manage(res);
17660}
17661
17663{
17665 return manage(res);
17666}
17667
17669{
17670 auto res = isl_schedule_node_insert_set(copy(), filters.release());
17671 return manage(res);
17672}
17673
17675{
17676 auto res = isl_schedule_node_is_equal(get(), node2.get());
17677 return manage(res);
17678}
17679
17681{
17683 return manage(res);
17684}
17685
17687{
17688 struct fn_data {
17689 std::function<isl::schedule_node(isl::schedule_node)> func;
17690 } fn_data = { fn };
17691 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_schedule_node * {
17692 auto *data = static_cast<struct fn_data *>(arg_1);
17693 auto ret = (data->func)(manage(arg_0));
17694 return ret.release();
17695 };
17696 auto res = isl_schedule_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
17697 return manage(res);
17698}
17699
17700class size schedule_node::n_children() const
17701{
17702 auto res = isl_schedule_node_n_children(get());
17703 return manage(res);
17704}
17705
17707{
17709 return manage(res);
17710}
17711
17713{
17714 auto res = isl_schedule_node_order_after(copy(), filter.release());
17715 return manage(res);
17716}
17717
17719{
17720 auto res = isl_schedule_node_order_before(copy(), filter.release());
17721 return manage(res);
17722}
17723
17725{
17727 return manage(res);
17728}
17729
17731{
17733 return manage(res);
17734}
17735
17737{
17739}
17740
17742{
17744 return manage(res);
17745}
17746
17748{
17749 return prefix_schedule_relation();
17750}
17751
17753{
17755 return manage(res);
17756}
17757
17759{
17761}
17762
17764{
17766 return manage(res);
17767}
17768
17770{
17772}
17773
17775{
17777 return manage(res);
17778}
17779
17781{
17783 return manage(res);
17784}
17785
17787{
17789 return manage(res);
17790}
17791
17793{
17794 return schedule();
17795}
17796
17797class size schedule_node::schedule_depth() const
17798{
17800 return manage(res);
17801}
17802
17803class size schedule_node::get_schedule_depth() const
17804{
17805 return schedule_depth();
17806}
17807
17809{
17811 return manage(res);
17812}
17813
17815{
17816 return shared_ancestor(node2);
17817}
17818
17819class size schedule_node::tree_depth() const
17820{
17822 return manage(res);
17823}
17824
17825class size schedule_node::get_tree_depth() const
17826{
17827 return tree_depth();
17828}
17829
17831{
17833 return manage(res);
17834}
17835
17837{
17838 return universe_domain();
17839}
17840
17841inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
17842{
17843 char *str = isl_schedule_node_to_str(obj.get());
17844 if (!str) {
17845 os.setstate(std::ios_base::badbit);
17846 return os;
17847 }
17848 os << str;
17849 free(str);
17850 return os;
17851}
17852
17853// implementations for isl::schedule_node_band
17855 : schedule_node() {}
17856
17859{
17860}
17861
17863 : schedule_node(ptr) {}
17864
17866 std::swap(this->ptr, obj.ptr);
17867 return *this;
17868}
17869
17872}
17873
17875{
17877 return manage(res);
17878}
17879
17881{
17882 return ast_build_options();
17883}
17884
17886{
17888 return manage(res);
17889}
17890
17892{
17893 return ast_isolate_option();
17894}
17895
17897{
17899 return manage(res);
17900}
17901
17903{
17905 return manage(res).as<schedule_node_band>();
17906}
17907
17909{
17911 return manage(res).as<schedule_node_band>();
17912}
17913
17914class size schedule_node_band::n_member() const
17915{
17917 return manage(res);
17918}
17919
17921{
17923 return manage(res);
17924}
17925
17927{
17928 return partial_schedule();
17929}
17930
17932{
17934 return manage(res);
17935}
17936
17938{
17939 return permutable();
17940}
17941
17943{
17945 return manage(res).as<schedule_node_band>();
17946}
17947
17949{
17951 return manage(res).as<schedule_node_band>();
17952}
17953
17955{
17957 return manage(res).as<schedule_node_band>();
17958}
17959
17961{
17963 return manage(res).as<schedule_node_band>();
17964}
17965
17967{
17969 return manage(res).as<schedule_node_band>();
17970}
17971
17973{
17975 return manage(res).as<schedule_node_band>();
17976}
17977
17979{
17980 auto res = isl_schedule_node_band_tile(copy(), sizes.release());
17981 return manage(res).as<schedule_node_band>();
17982}
17983
17985{
17987 return manage(res).as<schedule_node_band>();
17988}
17989
17991{
17993 return manage(res).as<schedule_node_band>();
17994}
17995
17997{
17999 return manage(res).as<schedule_node_band>();
18000}
18001
18003{
18005 return manage(res).as<schedule_node_band>();
18006}
18007
18008inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
18009{
18010 char *str = isl_schedule_node_to_str(obj.get());
18011 if (!str) {
18012 os.setstate(std::ios_base::badbit);
18013 return os;
18014 }
18015 os << str;
18016 free(str);
18017 return os;
18018}
18019
18020// implementations for isl::schedule_node_context
18022 : schedule_node() {}
18023
18026{
18027}
18028
18030 : schedule_node(ptr) {}
18031
18033 std::swap(this->ptr, obj.ptr);
18034 return *this;
18035}
18036
18039}
18040
18042{
18044 return manage(res);
18045}
18046
18048{
18049 return context();
18050}
18051
18052inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
18053{
18054 char *str = isl_schedule_node_to_str(obj.get());
18055 if (!str) {
18056 os.setstate(std::ios_base::badbit);
18057 return os;
18058 }
18059 os << str;
18060 free(str);
18061 return os;
18062}
18063
18064// implementations for isl::schedule_node_domain
18066 : schedule_node() {}
18067
18070{
18071}
18072
18074 : schedule_node(ptr) {}
18075
18077 std::swap(this->ptr, obj.ptr);
18078 return *this;
18079}
18080
18083}
18084
18086{
18088 return manage(res);
18089}
18090
18092{
18093 return domain();
18094}
18095
18096inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
18097{
18098 char *str = isl_schedule_node_to_str(obj.get());
18099 if (!str) {
18100 os.setstate(std::ios_base::badbit);
18101 return os;
18102 }
18103 os << str;
18104 free(str);
18105 return os;
18106}
18107
18108// implementations for isl::schedule_node_expansion
18110 : schedule_node() {}
18111
18114{
18115}
18116
18118 : schedule_node(ptr) {}
18119
18121 std::swap(this->ptr, obj.ptr);
18122 return *this;
18123}
18124
18127}
18128
18130{
18132 return manage(res);
18133}
18134
18136{
18137 return contraction();
18138}
18139
18141{
18143 return manage(res);
18144}
18145
18147{
18148 return expansion();
18149}
18150
18151inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
18152{
18153 char *str = isl_schedule_node_to_str(obj.get());
18154 if (!str) {
18155 os.setstate(std::ios_base::badbit);
18156 return os;
18157 }
18158 os << str;
18159 free(str);
18160 return os;
18161}
18162
18163// implementations for isl::schedule_node_extension
18165 : schedule_node() {}
18166
18169{
18170}
18171
18173 : schedule_node(ptr) {}
18174
18176 std::swap(this->ptr, obj.ptr);
18177 return *this;
18178}
18179
18182}
18183
18185{
18187 return manage(res);
18188}
18189
18191{
18192 return extension();
18193}
18194
18195inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
18196{
18197 char *str = isl_schedule_node_to_str(obj.get());
18198 if (!str) {
18199 os.setstate(std::ios_base::badbit);
18200 return os;
18201 }
18202 os << str;
18203 free(str);
18204 return os;
18205}
18206
18207// implementations for isl::schedule_node_filter
18209 : schedule_node() {}
18210
18213{
18214}
18215
18217 : schedule_node(ptr) {}
18218
18220 std::swap(this->ptr, obj.ptr);
18221 return *this;
18222}
18223
18226}
18227
18229{
18231 return manage(res);
18232}
18233
18235{
18236 return filter();
18237}
18238
18239inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
18240{
18241 char *str = isl_schedule_node_to_str(obj.get());
18242 if (!str) {
18243 os.setstate(std::ios_base::badbit);
18244 return os;
18245 }
18246 os << str;
18247 free(str);
18248 return os;
18249}
18250
18251// implementations for isl::schedule_node_guard
18253 : schedule_node() {}
18254
18257{
18258}
18259
18261 : schedule_node(ptr) {}
18262
18264 std::swap(this->ptr, obj.ptr);
18265 return *this;
18266}
18267
18270}
18271
18273{
18275 return manage(res);
18276}
18277
18279{
18280 return guard();
18281}
18282
18283inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
18284{
18285 char *str = isl_schedule_node_to_str(obj.get());
18286 if (!str) {
18287 os.setstate(std::ios_base::badbit);
18288 return os;
18289 }
18290 os << str;
18291 free(str);
18292 return os;
18293}
18294
18295// implementations for isl::schedule_node_leaf
18297 : schedule_node() {}
18298
18301{
18302}
18303
18305 : schedule_node(ptr) {}
18306
18308 std::swap(this->ptr, obj.ptr);
18309 return *this;
18310}
18311
18314}
18315
18316inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
18317{
18318 char *str = isl_schedule_node_to_str(obj.get());
18319 if (!str) {
18320 os.setstate(std::ios_base::badbit);
18321 return os;
18322 }
18323 os << str;
18324 free(str);
18325 return os;
18326}
18327
18328// implementations for isl::schedule_node_mark
18330 : schedule_node() {}
18331
18334{
18335}
18336
18338 : schedule_node(ptr) {}
18339
18341 std::swap(this->ptr, obj.ptr);
18342 return *this;
18343}
18344
18347}
18348
18350{
18352 return manage(res);
18353}
18354
18356{
18357 return id();
18358}
18359
18360inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
18361{
18362 char *str = isl_schedule_node_to_str(obj.get());
18363 if (!str) {
18364 os.setstate(std::ios_base::badbit);
18365 return os;
18366 }
18367 os << str;
18368 free(str);
18369 return os;
18370}
18371
18372// implementations for isl::schedule_node_sequence
18374 : schedule_node() {}
18375
18378{
18379}
18380
18382 : schedule_node(ptr) {}
18383
18385 std::swap(this->ptr, obj.ptr);
18386 return *this;
18387}
18388
18391}
18392
18393inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
18394{
18395 char *str = isl_schedule_node_to_str(obj.get());
18396 if (!str) {
18397 os.setstate(std::ios_base::badbit);
18398 return os;
18399 }
18400 os << str;
18401 free(str);
18402 return os;
18403}
18404
18405// implementations for isl::schedule_node_set
18407 : schedule_node() {}
18408
18411{
18412}
18413
18415 : schedule_node(ptr) {}
18416
18418 std::swap(this->ptr, obj.ptr);
18419 return *this;
18420}
18421
18424}
18425
18426inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
18427{
18428 char *str = isl_schedule_node_to_str(obj.get());
18429 if (!str) {
18430 os.setstate(std::ios_base::badbit);
18431 return os;
18432 }
18433 os << str;
18434 free(str);
18435 return os;
18436}
18437
18438// implementations for isl::set
18440 return set(ptr);
18441}
18443 ptr = isl_set_copy(ptr);
18444 return set(ptr);
18445}
18446
18448 : ptr(nullptr) {}
18449
18451 : ptr(nullptr)
18452{
18453 ptr = obj.copy();
18454}
18455
18457 : ptr(ptr) {}
18458
18460{
18461 auto res = isl_set_from_basic_set(bset.release());
18462 ptr = res;
18463}
18464
18466{
18467 auto res = isl_set_from_point(pnt.release());
18468 ptr = res;
18469}
18470
18472{
18473 auto res = isl_set_from_union_set(uset.release());
18474 ptr = res;
18475}
18476
18477set::set(isl::ctx ctx, const std::string &str)
18478{
18479 auto res = isl_set_read_from_str(ctx.release(), str.c_str());
18480 ptr = res;
18481}
18482
18484 std::swap(this->ptr, obj.ptr);
18485 return *this;
18486}
18487
18489 if (ptr)
18491}
18492
18494 return isl_set_copy(ptr);
18495}
18496
18498 return ptr;
18499}
18500
18502 isl_set *tmp = ptr;
18503 ptr = nullptr;
18504 return tmp;
18505}
18506
18507bool set::is_null() const {
18508 return ptr == nullptr;
18509}
18510
18512 return isl::ctx(isl_set_get_ctx(ptr));
18513}
18514
18516{
18518 return manage(res);
18519}
18520
18522{
18523 auto res = isl_set_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
18524 return manage(res);
18525}
18526
18528{
18529 auto res = isl_set_affine_hull(copy());
18530 return manage(res);
18531}
18532
18534{
18535 auto res = isl_set_align_params(copy(), model.release());
18536 return manage(res);
18537}
18538
18540{
18541 auto res = isl_set_apply(copy(), map.release());
18542 return manage(res);
18543}
18544
18546{
18547 return isl::union_set(*this).apply(umap);
18548}
18549
18551{
18552 return this->apply(isl::map(map));
18553}
18554
18556{
18558 return manage(res);
18559}
18560
18562{
18563 return isl::union_set(*this).as_set();
18564}
18565
18567{
18569 return manage(res);
18570}
18571
18573{
18574 return basic_set_list();
18575}
18576
18578{
18579 auto res = isl_set_bind(copy(), tuple.release());
18580 return manage(res);
18581}
18582
18584{
18585 auto res = isl_set_coalesce(copy());
18586 return manage(res);
18587}
18588
18590{
18591 auto res = isl_set_complement(copy());
18592 return manage(res);
18593}
18594
18596{
18597 return isl::union_set(*this).compute_divs();
18598}
18599
18600boolean set::contains(const isl::space &space) const
18601{
18602 return isl::union_set(*this).contains(space);
18603}
18604
18606{
18607 auto res = isl_set_convex_hull(copy());
18608 return manage(res);
18609}
18610
18612{
18614 return manage(res);
18615}
18616
18617class size set::dim(isl::dim type) const
18618{
18619 auto res = isl_set_dim(get(), static_cast<enum isl_dim_type>(type));
18620 return manage(res);
18621}
18622
18623boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
18624{
18625 auto res = isl_set_dim_has_any_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
18626 return manage(res);
18627}
18628
18630{
18631 auto res = isl_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
18632 return manage(res);
18633}
18634
18636{
18637 return dim_id(type, pos);
18638}
18639
18641{
18642 auto res = isl_set_dim_max(copy(), pos);
18643 return manage(res);
18644}
18645
18647{
18648 auto res = isl_set_dim_max_val(copy(), pos);
18649 return manage(res);
18650}
18651
18653{
18654 auto res = isl_set_dim_min(copy(), pos);
18655 return manage(res);
18656}
18657
18659{
18660 auto res = isl_set_dim_min_val(copy(), pos);
18661 return manage(res);
18662}
18663
18664std::string set::dim_name(isl::dim type, unsigned int pos) const
18665{
18666 auto res = isl_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
18667 std::string tmp(res);
18668 return tmp;
18669}
18670
18671std::string set::get_dim_name(isl::dim type, unsigned int pos) const
18672{
18673 return dim_name(type, pos);
18674}
18675
18676isl::set set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
18677{
18678 auto res = isl_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
18679 return manage(res);
18680}
18681
18682isl::set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
18683{
18684 auto res = isl_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
18685 return manage(res);
18686}
18687
18689{
18690 auto res = isl_set_empty(space.release());
18691 return manage(res);
18692}
18693
18694boolean set::every_set(const std::function<boolean(isl::set)> &test) const
18695{
18696 return isl::union_set(*this).every_set(test);
18697}
18698
18700{
18701 return isl::union_set(*this).extract_set(space);
18702}
18703
18705{
18706 auto res = isl_set_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
18707 return res;
18708}
18709
18710int set::find_dim_by_id(isl::dim type, const std::string &id) const
18711{
18712 return this->find_dim_by_id(type, isl::id(ctx(), id));
18713}
18714
18715isl::set set::fix_si(isl::dim type, unsigned int pos, int value) const
18716{
18717 auto res = isl_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
18718 return manage(res);
18719}
18720
18722{
18723 auto res = isl_set_flatten(copy());
18724 return manage(res);
18725}
18726
18727stat set::foreach_basic_set(const std::function<stat(isl::basic_set)> &fn) const
18728{
18729 struct fn_data {
18730 std::function<stat(isl::basic_set)> func;
18731 } fn_data = { fn };
18732 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
18733 auto *data = static_cast<struct fn_data *>(arg_1);
18734 auto ret = (data->func)(manage(arg_0));
18735 return ret.release();
18736 };
18737 auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
18738 return manage(res);
18739}
18740
18741stat set::foreach_point(const std::function<stat(isl::point)> &fn) const
18742{
18743 struct fn_data {
18744 std::function<stat(isl::point)> func;
18745 } fn_data = { fn };
18746 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
18747 auto *data = static_cast<struct fn_data *>(arg_1);
18748 auto ret = (data->func)(manage(arg_0));
18749 return ret.release();
18750 };
18751 auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
18752 return manage(res);
18753}
18754
18755stat set::foreach_set(const std::function<stat(isl::set)> &fn) const
18756{
18757 return isl::union_set(*this).foreach_set(fn);
18758}
18759
18761{
18762 auto res = isl_set_gist(copy(), context.release());
18763 return manage(res);
18764}
18765
18767{
18768 return isl::union_set(*this).gist(context);
18769}
18770
18772{
18773 return this->gist(isl::set(context));
18774}
18775
18777{
18778 return this->gist(isl::set(context));
18779}
18780
18782{
18783 auto res = isl_set_gist_params(copy(), context.release());
18784 return manage(res);
18785}
18786
18788{
18789 auto res = isl_set_has_equal_space(get(), set2.get());
18790 return manage(res);
18791}
18792
18794{
18795 auto res = isl_set_identity(copy());
18796 return manage(res);
18797}
18798
18800{
18802}
18803
18805{
18807 return manage(res);
18808}
18809
18810isl::set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
18811{
18812 auto res = isl_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
18813 return manage(res);
18814}
18815
18817{
18818 auto res = isl_set_insert_domain(copy(), domain.release());
18819 return manage(res);
18820}
18821
18823{
18824 auto res = isl_set_intersect(copy(), set2.release());
18825 return manage(res);
18826}
18827
18829{
18830 return isl::union_set(*this).intersect(uset2);
18831}
18832
18834{
18835 return this->intersect(isl::set(set2));
18836}
18837
18839{
18840 return this->intersect(isl::set(set2));
18841}
18842
18844{
18846 return manage(res);
18847}
18848
18849boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
18850{
18851 auto res = isl_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
18852 return manage(res);
18853}
18854
18856{
18858 return manage(res);
18859}
18860
18861boolean set::is_bounded() const
18862{
18863 auto res = isl_set_is_bounded(get());
18864 return manage(res);
18865}
18866
18867boolean set::is_disjoint(const isl::set &set2) const
18868{
18869 auto res = isl_set_is_disjoint(get(), set2.get());
18870 return manage(res);
18871}
18872
18873boolean set::is_disjoint(const isl::union_set &uset2) const
18874{
18875 return isl::union_set(*this).is_disjoint(uset2);
18876}
18877
18879{
18880 return this->is_disjoint(isl::set(set2));
18881}
18882
18883boolean set::is_disjoint(const isl::point &set2) const
18884{
18885 return this->is_disjoint(isl::set(set2));
18886}
18887
18888boolean set::is_empty() const
18889{
18890 auto res = isl_set_is_empty(get());
18891 return manage(res);
18892}
18893
18894boolean set::is_equal(const isl::set &set2) const
18895{
18896 auto res = isl_set_is_equal(get(), set2.get());
18897 return manage(res);
18898}
18899
18900boolean set::is_equal(const isl::union_set &uset2) const
18901{
18902 return isl::union_set(*this).is_equal(uset2);
18903}
18904
18905boolean set::is_equal(const isl::basic_set &set2) const
18906{
18907 return this->is_equal(isl::set(set2));
18908}
18909
18910boolean set::is_equal(const isl::point &set2) const
18911{
18912 return this->is_equal(isl::set(set2));
18913}
18914
18915boolean set::is_params() const
18916{
18917 auto res = isl_set_is_params(get());
18918 return manage(res);
18919}
18920
18921boolean set::is_singleton() const
18922{
18923 auto res = isl_set_is_singleton(get());
18924 return manage(res);
18925}
18926
18928{
18929 auto res = isl_set_is_strict_subset(get(), set2.get());
18930 return manage(res);
18931}
18932
18933boolean set::is_strict_subset(const isl::union_set &uset2) const
18934{
18935 return isl::union_set(*this).is_strict_subset(uset2);
18936}
18937
18939{
18940 return this->is_strict_subset(isl::set(set2));
18941}
18942
18944{
18945 return this->is_strict_subset(isl::set(set2));
18946}
18947
18948boolean set::is_subset(const isl::set &set2) const
18949{
18950 auto res = isl_set_is_subset(get(), set2.get());
18951 return manage(res);
18952}
18953
18954boolean set::is_subset(const isl::union_set &uset2) const
18955{
18956 return isl::union_set(*this).is_subset(uset2);
18957}
18958
18960{
18961 return this->is_subset(isl::set(set2));
18962}
18963
18964boolean set::is_subset(const isl::point &set2) const
18965{
18966 return this->is_subset(isl::set(set2));
18967}
18968
18969boolean set::is_wrapping() const
18970{
18971 auto res = isl_set_is_wrapping(get());
18972 return manage(res);
18973}
18974
18975boolean set::isa_set() const
18976{
18977 return isl::union_set(*this).isa_set();
18978}
18979
18981{
18982 auto res = isl_set_lexmax(copy());
18983 return manage(res);
18984}
18985
18987{
18989 return manage(res);
18990}
18991
18993{
18994 auto res = isl_set_lexmin(copy());
18995 return manage(res);
18996}
18997
18999{
19001 return manage(res);
19002}
19003
19005{
19007 return manage(res);
19008}
19009
19011{
19012 auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
19013 return manage(res);
19014}
19015
19016isl::set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
19017{
19018 auto res = isl_set_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
19019 return manage(res);
19020}
19021
19023{
19024 auto res = isl_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
19025 return manage(res);
19026}
19027
19028isl::set set::lower_bound_val(isl::dim type, unsigned int pos, long value) const
19029{
19030 return this->lower_bound_val(type, pos, isl::val(ctx(), value));
19031}
19032
19034{
19036 return manage(res);
19037}
19038
19040{
19041 auto res = isl_set_max_val(get(), obj.get());
19042 return manage(res);
19043}
19044
19046{
19048 return manage(res);
19049}
19050
19052{
19053 auto res = isl_set_min_val(get(), obj.get());
19054 return manage(res);
19055}
19056
19057class size set::n_basic_set() const
19058{
19059 auto res = isl_set_n_basic_set(get());
19060 return manage(res);
19061}
19062
19064{
19065 auto res = isl_set_params(copy());
19066 return manage(res);
19067}
19068
19070{
19071 auto res = isl_set_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
19072 return manage(res);
19073}
19074
19076{
19078 return manage(res);
19079}
19080
19082{
19083 return plain_multi_val_if_fixed();
19084}
19085
19087{
19089 return manage(res);
19090}
19091
19093{
19094 auto res = isl_set_preimage_multi_aff(copy(), ma.release());
19095 return manage(res);
19096}
19097
19099{
19101 return manage(res);
19102}
19103
19105{
19106 auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
19107 return manage(res);
19108}
19109
19111{
19112 return isl::union_set(*this).preimage(upma);
19113}
19114
19116{
19117 auto res = isl_set_product(copy(), set2.release());
19118 return manage(res);
19119}
19120
19121isl::set set::project_out(isl::dim type, unsigned int first, unsigned int n) const
19122{
19123 auto res = isl_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
19124 return manage(res);
19125}
19126
19128{
19130 return manage(res);
19131}
19132
19134{
19136 return manage(res);
19137}
19138
19139isl::set set::project_out_param(const std::string &id) const
19140{
19141 return this->project_out_param(isl::id(ctx(), id));
19142}
19143
19145{
19147 return manage(res);
19148}
19149
19151{
19153 return manage(res);
19154}
19155
19156isl::set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
19157{
19158 auto res = isl_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
19159 return manage(res);
19160}
19161
19163{
19164 auto res = isl_set_remove_divs(copy());
19165 return manage(res);
19166}
19167
19169{
19171 return manage(res);
19172}
19173
19175{
19177 return manage(res);
19178}
19179
19181{
19182 auto res = isl_set_sample(copy());
19183 return manage(res);
19184}
19185
19187{
19188 auto res = isl_set_sample_point(copy());
19189 return manage(res);
19190}
19191
19193{
19194 auto res = isl_set_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
19195 return manage(res);
19196}
19197
19198isl::set set::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
19199{
19200 return this->set_dim_id(type, pos, isl::id(ctx(), id));
19201}
19202
19204{
19205 return isl::union_set(*this).set_list();
19206}
19207
19209{
19210 auto res = isl_set_set_tuple_id(copy(), id.release());
19211 return manage(res);
19212}
19213
19214isl::set set::set_tuple_id(const std::string &id) const
19215{
19216 return this->set_tuple_id(isl::id(ctx(), id));
19217}
19218
19220{
19222 return manage(res);
19223}
19224
19226{
19227 return simple_fixed_box_hull();
19228}
19229
19231{
19232 auto res = isl_set_simple_hull(copy());
19233 return manage(res);
19234}
19235
19237{
19238 auto res = isl_set_get_space(get());
19239 return manage(res);
19240}
19241
19243{
19244 return space();
19245}
19246
19248{
19249 auto res = isl_set_get_stride(get(), pos);
19250 return manage(res);
19251}
19252
19254{
19255 return stride(pos);
19256}
19257
19259{
19260 auto res = isl_set_subtract(copy(), set2.release());
19261 return manage(res);
19262}
19263
19265{
19266 return isl::union_set(*this).subtract(uset2);
19267}
19268
19270{
19271 return this->subtract(isl::set(set2));
19272}
19273
19275{
19276 return this->subtract(isl::set(set2));
19277}
19278
19280{
19281 auto res = isl_set_to_list(copy());
19282 return manage(res);
19283}
19284
19286{
19287 auto res = isl_set_to_union_set(copy());
19288 return manage(res);
19289}
19290
19292{
19293 auto res = isl_set_translation(copy());
19294 return manage(res);
19295}
19296
19297class size set::tuple_dim() const
19298{
19299 auto res = isl_set_tuple_dim(get());
19300 return manage(res);
19301}
19302
19304{
19305 auto res = isl_set_get_tuple_id(get());
19306 return manage(res);
19307}
19308
19310{
19311 return tuple_id();
19312}
19313
19314std::string set::tuple_name() const
19315{
19316 auto res = isl_set_get_tuple_name(get());
19317 std::string tmp(res);
19318 return tmp;
19319}
19320
19321std::string set::get_tuple_name() const
19322{
19323 return tuple_name();
19324}
19325
19327{
19328 auto res = isl_set_unbind_params(copy(), tuple.release());
19329 return manage(res);
19330}
19331
19333{
19335 return manage(res);
19336}
19337
19339{
19340 auto res = isl_set_union(copy(), set2.release());
19341 return manage(res);
19342}
19343
19345{
19346 return isl::union_set(*this).unite(uset2);
19347}
19348
19350{
19351 return this->unite(isl::set(set2));
19352}
19353
19355{
19356 return this->unite(isl::set(set2));
19357}
19358
19360{
19362 return manage(res);
19363}
19364
19366{
19368 return manage(res);
19369}
19370
19372{
19373 auto res = isl_set_unwrap(copy());
19374 return manage(res);
19375}
19376
19378{
19380 return manage(res);
19381}
19382
19384{
19385 auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
19386 return manage(res);
19387}
19388
19390{
19391 auto res = isl_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
19392 return manage(res);
19393}
19394
19395isl::set set::upper_bound_val(isl::dim type, unsigned int pos, long value) const
19396{
19397 return this->upper_bound_val(type, pos, isl::val(ctx(), value));
19398}
19399
19400inline std::ostream &operator<<(std::ostream &os, const set &obj)
19401{
19402 char *str = isl_set_to_str(obj.get());
19403 if (!str) {
19404 os.setstate(std::ios_base::badbit);
19405 return os;
19406 }
19407 os << str;
19408 free(str);
19409 return os;
19410}
19411
19412// implementations for isl::set_list
19414 return set_list(ptr);
19415}
19417 ptr = isl_set_list_copy(ptr);
19418 return set_list(ptr);
19419}
19420
19422 : ptr(nullptr) {}
19423
19425 : ptr(nullptr)
19426{
19427 ptr = obj.copy();
19428}
19429
19431 : ptr(ptr) {}
19432
19434{
19435 auto res = isl_set_list_alloc(ctx.release(), n);
19436 ptr = res;
19437}
19438
19440{
19441 auto res = isl_set_list_from_set(el.release());
19442 ptr = res;
19443}
19444
19446{
19447 auto res = isl_set_list_read_from_str(ctx.release(), str.c_str());
19448 ptr = res;
19449}
19450
19452 std::swap(this->ptr, obj.ptr);
19453 return *this;
19454}
19455
19457 if (ptr)
19458 isl_set_list_free(ptr);
19459}
19460
19462 return isl_set_list_copy(ptr);
19463}
19464
19466 return ptr;
19467}
19468
19470 isl_set_list *tmp = ptr;
19471 ptr = nullptr;
19472 return tmp;
19473}
19474
19475bool set_list::is_null() const {
19476 return ptr == nullptr;
19477}
19478
19480 return isl::ctx(isl_set_list_get_ctx(ptr));
19481}
19482
19484{
19485 auto res = isl_set_list_add(copy(), el.release());
19486 return manage(res);
19487}
19488
19489isl::set set_list::at(int index) const
19490{
19491 auto res = isl_set_list_get_at(get(), index);
19492 return manage(res);
19493}
19494
19496{
19497 return at(index);
19498}
19499
19501{
19502 auto res = isl_set_list_clear(copy());
19503 return manage(res);
19504}
19505
19507{
19508 auto res = isl_set_list_concat(copy(), list2.release());
19509 return manage(res);
19510}
19511
19512isl::set_list set_list::drop(unsigned int first, unsigned int n) const
19513{
19514 auto res = isl_set_list_drop(copy(), first, n);
19515 return manage(res);
19516}
19517
19518stat set_list::foreach(const std::function<stat(isl::set)> &fn) const
19519{
19520 struct fn_data {
19521 std::function<stat(isl::set)> func;
19522 } fn_data = { fn };
19523 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
19524 auto *data = static_cast<struct fn_data *>(arg_1);
19525 auto ret = (data->func)(manage(arg_0));
19526 return ret.release();
19527 };
19528 auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
19529 return manage(res);
19530}
19531
19533{
19534 auto res = isl_set_list_insert(copy(), pos, el.release());
19535 return manage(res);
19536}
19537
19538class size set_list::size() const
19539{
19540 auto res = isl_set_list_size(get());
19541 return manage(res);
19542}
19543
19544inline std::ostream &operator<<(std::ostream &os, const set_list &obj)
19545{
19546 char *str = isl_set_list_to_str(obj.get());
19547 if (!str) {
19548 os.setstate(std::ios_base::badbit);
19549 return os;
19550 }
19551 os << str;
19552 free(str);
19553 return os;
19554}
19555
19556// implementations for isl::space
19558 return space(ptr);
19559}
19561 ptr = isl_space_copy(ptr);
19562 return space(ptr);
19563}
19564
19566 : ptr(nullptr) {}
19567
19569 : ptr(nullptr)
19570{
19571 ptr = obj.copy();
19572}
19573
19575 : ptr(ptr) {}
19576
19577space::space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out)
19578{
19579 auto res = isl_space_alloc(ctx.release(), nparam, n_in, n_out);
19580 ptr = res;
19581}
19582
19583space::space(isl::ctx ctx, unsigned int nparam, unsigned int dim)
19584{
19585 auto res = isl_space_set_alloc(ctx.release(), nparam, dim);
19586 ptr = res;
19587}
19588
19590 std::swap(this->ptr, obj.ptr);
19591 return *this;
19592}
19593
19595 if (ptr)
19597}
19598
19600 return isl_space_copy(ptr);
19601}
19602
19604 return ptr;
19605}
19606
19608 isl_space *tmp = ptr;
19609 ptr = nullptr;
19610 return tmp;
19611}
19612
19613bool space::is_null() const {
19614 return ptr == nullptr;
19615}
19616
19619}
19620
19622{
19623 auto res = isl_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
19624 return manage(res);
19625}
19626
19628{
19630 return manage(res);
19631}
19632
19633isl::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
19634{
19635 return this->add_named_tuple(isl::id(ctx(), tuple_id), dim);
19636}
19637
19639{
19640 auto res = isl_space_add_param_id(copy(), id.release());
19641 return manage(res);
19642}
19643
19644isl::space space::add_param(const std::string &id) const
19645{
19646 return this->add_param(isl::id(ctx(), id));
19647}
19648
19650{
19652 return manage(res);
19653}
19654
19656{
19657 auto res = isl_space_align_params(copy(), space2.release());
19658 return manage(res);
19659}
19660
19662{
19663 auto res = isl_space_curry(copy());
19664 return manage(res);
19665}
19666
19667class size space::dim(isl::dim type) const
19668{
19669 auto res = isl_space_dim(get(), static_cast<enum isl_dim_type>(type));
19670 return manage(res);
19671}
19672
19674{
19675 auto res = isl_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
19676 return manage(res);
19677}
19678
19680{
19681 return dim_id(type, pos);
19682}
19683
19685{
19686 auto res = isl_space_domain(copy());
19687 return manage(res);
19688}
19689
19691{
19693 return manage(res);
19694}
19695
19697{
19699 return manage(res);
19700}
19701
19703{
19705 return manage(res);
19706}
19707
19709{
19710 return domain_tuple_id();
19711}
19712
19713isl::space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const
19714{
19715 auto res = isl_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, num);
19716 return manage(res);
19717}
19718
19720{
19721 auto res = isl_space_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
19722 return res;
19723}
19724
19725int space::find_dim_by_id(isl::dim type, const std::string &id) const
19726{
19727 return this->find_dim_by_id(type, isl::id(ctx(), id));
19728}
19729
19731{
19733 return manage(res);
19734}
19735
19737{
19739 return manage(res);
19740}
19741
19743{
19745 return manage(res);
19746}
19747
19748boolean space::has_equal_tuples(const isl::space &space2) const
19749{
19750 auto res = isl_space_has_equal_tuples(get(), space2.get());
19751 return manage(res);
19752}
19753
19755{
19757 return manage(res);
19758}
19759
19761{
19762 auto res = isl_space_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
19763 return manage(res);
19764}
19765
19767{
19768 auto res = isl_space_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
19769 return manage(res);
19770}
19771
19773{
19774 auto res = isl_space_identity_multi_aff_on_domain(copy());
19775 return manage(res);
19776}
19777
19779{
19780 auto res = isl_space_identity_multi_pw_aff_on_domain(copy());
19781 return manage(res);
19782}
19783
19785{
19787 return manage(res);
19788}
19789
19790boolean space::is_equal(const isl::space &space2) const
19791{
19792 auto res = isl_space_is_equal(get(), space2.get());
19793 return manage(res);
19794}
19795
19796boolean space::is_params() const
19797{
19798 auto res = isl_space_is_params(get());
19799 return manage(res);
19800}
19801
19802boolean space::is_set() const
19803{
19804 auto res = isl_space_is_set(get());
19805 return manage(res);
19806}
19807
19808boolean space::is_wrapping() const
19809{
19810 auto res = isl_space_is_wrapping(get());
19811 return manage(res);
19812}
19813
19815{
19817 return manage(res);
19818}
19819
19821{
19823 return manage(res);
19824}
19825
19827{
19828 auto res = isl_space_multi_aff(copy(), list.release());
19829 return manage(res);
19830}
19831
19833{
19835 return manage(res);
19836}
19837
19839{
19840 auto res = isl_space_multi_id(copy(), list.release());
19841 return manage(res);
19842}
19843
19845{
19846 auto res = isl_space_multi_pw_aff(copy(), list.release());
19847 return manage(res);
19848}
19849
19851{
19852 auto res = isl_space_multi_union_pw_aff(copy(), list.release());
19853 return manage(res);
19854}
19855
19857{
19858 auto res = isl_space_multi_val(copy(), list.release());
19859 return manage(res);
19860}
19861
19863{
19865 return manage(res);
19866}
19867
19868isl::aff space::param_aff_on_domain(const std::string &id) const
19869{
19870 return this->param_aff_on_domain(isl::id(ctx(), id));
19871}
19872
19874{
19875 auto res = isl_space_params(copy());
19876 return manage(res);
19877}
19878
19880{
19881 auto res = isl_space_params_alloc(ctx.release(), nparam);
19882 return manage(res);
19883}
19884
19886{
19887 auto res = isl_space_product(copy(), right.release());
19888 return manage(res);
19889}
19890
19892{
19893 auto res = isl_space_range(copy());
19894 return manage(res);
19895}
19896
19898{
19900 return manage(res);
19901}
19902
19904{
19906 return manage(res);
19907}
19908
19910{
19912 return manage(res);
19913}
19914
19916{
19918 return manage(res);
19919}
19920
19922{
19923 return range_tuple_id();
19924}
19925
19927{
19928 auto res = isl_space_reverse(copy());
19929 return manage(res);
19930}
19931
19933{
19934 auto res = isl_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
19935 return manage(res);
19936}
19937
19938isl::space space::set_dim_id(isl::dim type, unsigned int pos, const std::string &id) const
19939{
19940 return this->set_dim_id(type, pos, isl::id(ctx(), id));
19941}
19942
19944{
19946 return manage(res);
19947}
19948
19949isl::space space::set_domain_tuple(const std::string &id) const
19950{
19951 return this->set_domain_tuple(isl::id(ctx(), id));
19952}
19953
19955{
19957 return manage(res);
19958}
19959
19961{
19963 return manage(res);
19964}
19965
19966isl::space space::set_range_tuple(const std::string &id) const
19967{
19968 return this->set_range_tuple(isl::id(ctx(), id));
19969}
19970
19972{
19973 auto res = isl_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
19974 return manage(res);
19975}
19976
19977isl::space space::set_tuple_id(isl::dim type, const std::string &id) const
19978{
19979 return this->set_tuple_id(type, isl::id(ctx(), id));
19980}
19981
19983{
19984 auto res = isl_space_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
19985 return manage(res);
19986}
19987
19989{
19990 return tuple_id(type);
19991}
19992
19994{
19995 auto res = isl_space_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
19996 std::string tmp(res);
19997 return tmp;
19998}
19999
20001{
20002 return tuple_name(type);
20003}
20004
20006{
20007 auto res = isl_space_uncurry(copy());
20008 return manage(res);
20009}
20010
20012{
20013 auto res = isl_space_unit(ctx.release());
20014 return manage(res);
20015}
20016
20018{
20020 return manage(res);
20021}
20022
20024{
20026 return manage(res);
20027}
20028
20030{
20031 auto res = isl_space_unwrap(copy());
20032 return manage(res);
20033}
20034
20036{
20037 auto res = isl_space_wrap(copy());
20038 return manage(res);
20039}
20040
20042{
20044 return manage(res);
20045}
20046
20048{
20049 auto res = isl_space_zero_multi_aff(copy());
20050 return manage(res);
20051}
20052
20054{
20055 auto res = isl_space_zero_multi_pw_aff(copy());
20056 return manage(res);
20057}
20058
20060{
20061 auto res = isl_space_zero_multi_union_pw_aff(copy());
20062 return manage(res);
20063}
20064
20066{
20067 auto res = isl_space_zero_multi_val(copy());
20068 return manage(res);
20069}
20070
20071inline std::ostream &operator<<(std::ostream &os, const space &obj)
20072{
20073 char *str = isl_space_to_str(obj.get());
20074 if (!str) {
20075 os.setstate(std::ios_base::badbit);
20076 return os;
20077 }
20078 os << str;
20079 free(str);
20080 return os;
20081}
20082
20083// implementations for isl::union_access_info
20085 return union_access_info(ptr);
20086}
20088 ptr = isl_union_access_info_copy(ptr);
20089 return union_access_info(ptr);
20090}
20091
20093 : ptr(nullptr) {}
20094
20096 : ptr(nullptr)
20097{
20098 ptr = obj.copy();
20099}
20100
20102 : ptr(ptr) {}
20103
20105{
20107 ptr = res;
20108}
20109
20111 std::swap(this->ptr, obj.ptr);
20112 return *this;
20113}
20114
20116 if (ptr)
20118}
20119
20122}
20123
20125 return ptr;
20126}
20127
20130 ptr = nullptr;
20131 return tmp;
20132}
20133
20135 return ptr == nullptr;
20136}
20137
20140}
20141
20143{
20145 return manage(res);
20146}
20147
20149{
20151 return manage(res);
20152}
20153
20155{
20156 auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
20157 return manage(res);
20158}
20159
20161{
20162 auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
20163 return manage(res);
20164}
20165
20167{
20169 return manage(res);
20170}
20171
20173{
20174 auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
20175 return manage(res);
20176}
20177
20178inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
20179{
20180 char *str = isl_union_access_info_to_str(obj.get());
20181 if (!str) {
20182 os.setstate(std::ios_base::badbit);
20183 return os;
20184 }
20185 os << str;
20186 free(str);
20187 return os;
20188}
20189
20190// implementations for isl::union_flow
20192 return union_flow(ptr);
20193}
20195 ptr = isl_union_flow_copy(ptr);
20196 return union_flow(ptr);
20197}
20198
20200 : ptr(nullptr) {}
20201
20203 : ptr(nullptr)
20204{
20205 ptr = obj.copy();
20206}
20207
20209 : ptr(ptr) {}
20210
20212 std::swap(this->ptr, obj.ptr);
20213 return *this;
20214}
20215
20217 if (ptr)
20219}
20220
20222 return isl_union_flow_copy(ptr);
20223}
20224
20226 return ptr;
20227}
20228
20230 isl_union_flow *tmp = ptr;
20231 ptr = nullptr;
20232 return tmp;
20233}
20234
20236 return ptr == nullptr;
20237}
20238
20241}
20242
20244{
20246 return manage(res);
20247}
20248
20250{
20251 return full_may_dependence();
20252}
20253
20255{
20257 return manage(res);
20258}
20259
20261{
20262 return full_must_dependence();
20263}
20264
20266{
20268 return manage(res);
20269}
20270
20272{
20273 return may_dependence();
20274}
20275
20277{
20279 return manage(res);
20280}
20281
20283{
20284 return may_no_source();
20285}
20286
20288{
20290 return manage(res);
20291}
20292
20294{
20295 return must_dependence();
20296}
20297
20299{
20301 return manage(res);
20302}
20303
20305{
20306 return must_no_source();
20307}
20308
20309inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
20310{
20311 char *str = isl_union_flow_to_str(obj.get());
20312 if (!str) {
20313 os.setstate(std::ios_base::badbit);
20314 return os;
20315 }
20316 os << str;
20317 free(str);
20318 return os;
20319}
20320
20321// implementations for isl::union_map
20323 return union_map(ptr);
20324}
20326 ptr = isl_union_map_copy(ptr);
20327 return union_map(ptr);
20328}
20329
20331 : ptr(nullptr) {}
20332
20334 : ptr(nullptr)
20335{
20336 ptr = obj.copy();
20337}
20338
20340 : ptr(ptr) {}
20341
20343{
20345 ptr = res;
20346}
20347
20349{
20351 ptr = res;
20352}
20353
20355{
20356 auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
20357 ptr = res;
20358}
20359
20361 std::swap(this->ptr, obj.ptr);
20362 return *this;
20363}
20364
20366 if (ptr)
20368}
20369
20371 return isl_union_map_copy(ptr);
20372}
20373
20375 return ptr;
20376}
20377
20379 isl_union_map *tmp = ptr;
20380 ptr = nullptr;
20381 return tmp;
20382}
20383
20385 return ptr == nullptr;
20386}
20387
20390}
20391
20393{
20395 return manage(res);
20396}
20397
20399{
20400 auto res = isl_union_map_apply_domain(copy(), umap2.release());
20401 return manage(res);
20402}
20403
20405{
20406 auto res = isl_union_map_apply_range(copy(), umap2.release());
20407 return manage(res);
20408}
20409
20411{
20412 auto res = isl_union_map_as_map(copy());
20413 return manage(res);
20414}
20415
20417{
20419 return manage(res);
20420}
20421
20423{
20425 return manage(res);
20426}
20427
20429{
20430 auto res = isl_union_map_bind_range(copy(), tuple.release());
20431 return manage(res);
20432}
20433
20435{
20437 return manage(res);
20438}
20439
20441{
20443 return manage(res);
20444}
20445
20447{
20448 auto res = isl_union_map_curry(copy());
20449 return manage(res);
20450}
20451
20453{
20454 auto res = isl_union_map_deltas(copy());
20455 return manage(res);
20456}
20457
20459{
20461 return manage(res);
20462}
20463
20465{
20466 auto res = isl_union_map_domain(copy());
20467 return manage(res);
20468}
20469
20471{
20473 return manage(res);
20474}
20475
20477{
20479 return manage(res);
20480}
20481
20483{
20485 return manage(res);
20486}
20487
20489{
20491 return manage(res);
20492}
20493
20495{
20496 auto res = isl_union_map_domain_product(copy(), umap2.release());
20497 return manage(res);
20498}
20499
20501{
20503 return manage(res);
20504}
20505
20507{
20509 return manage(res);
20510}
20511
20512boolean union_map::every_map(const std::function<boolean(isl::map)> &test) const
20513{
20514 struct test_data {
20515 std::function<boolean(isl::map)> func;
20516 } test_data = { test };
20517 auto test_lambda = [](isl_map *arg_0, void *arg_1) -> isl_bool {
20518 auto *data = static_cast<struct test_data *>(arg_1);
20519 auto ret = (data->func)(manage_copy(arg_0));
20520 return ret.release();
20521 };
20522 auto res = isl_union_map_every_map(get(), test_lambda, &test_data);
20523 return manage(res);
20524}
20525
20527{
20529 return manage(res);
20530}
20531
20533{
20535 return manage(res);
20536}
20537
20539{
20541 return manage(res);
20542}
20543
20545{
20547 return manage(res);
20548}
20549
20551{
20552 return this->fixed_power(isl::val(ctx(), exp));
20553}
20554
20556{
20558 return manage(res);
20559}
20560
20561stat union_map::foreach_map(const std::function<stat(isl::map)> &fn) const
20562{
20563 struct fn_data {
20564 std::function<stat(isl::map)> func;
20565 } fn_data = { fn };
20566 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
20567 auto *data = static_cast<struct fn_data *>(arg_1);
20568 auto ret = (data->func)(manage(arg_0));
20569 return ret.release();
20570 };
20571 auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
20572 return manage(res);
20573}
20574
20576{
20578 return manage(res);
20579}
20580
20582{
20584 return manage(res);
20585}
20586
20588{
20589 auto res = isl_union_map_from_domain(uset.release());
20590 return manage(res);
20591}
20592
20594{
20596 return manage(res);
20597}
20598
20600{
20601 auto res = isl_union_map_from_range(uset.release());
20602 return manage(res);
20603}
20604
20606{
20607 auto res = isl_union_map_gist(copy(), context.release());
20608 return manage(res);
20609}
20610
20612{
20613 auto res = isl_union_map_gist_domain(copy(), uset.release());
20614 return manage(res);
20615}
20616
20618{
20620 return manage(res);
20621}
20622
20624{
20625 auto res = isl_union_map_gist_range(copy(), uset.release());
20626 return manage(res);
20627}
20628
20630{
20631 auto res = isl_union_map_intersect(copy(), umap2.release());
20632 return manage(res);
20633}
20634
20636{
20638 return manage(res);
20639}
20640
20642{
20644 return manage(res);
20645}
20646
20648{
20650 return manage(res);
20651}
20652
20654{
20656 return manage(res);
20657}
20658
20660{
20662 return manage(res);
20663}
20664
20666{
20668 return manage(res);
20669}
20670
20672{
20674 return manage(res);
20675}
20676
20678{
20680 return manage(res);
20681}
20682
20684{
20686 return manage(res);
20687}
20688
20690{
20692 return manage(res);
20693}
20694
20695boolean union_map::is_disjoint(const isl::union_map &umap2) const
20696{
20697 auto res = isl_union_map_is_disjoint(get(), umap2.get());
20698 return manage(res);
20699}
20700
20701boolean union_map::is_empty() const
20702{
20703 auto res = isl_union_map_is_empty(get());
20704 return manage(res);
20705}
20706
20707boolean union_map::is_equal(const isl::union_map &umap2) const
20708{
20709 auto res = isl_union_map_is_equal(get(), umap2.get());
20710 return manage(res);
20711}
20712
20714{
20716 return manage(res);
20717}
20718
20720{
20722 return manage(res);
20723}
20724
20726{
20727 auto res = isl_union_map_is_strict_subset(get(), umap2.get());
20728 return manage(res);
20729}
20730
20731boolean union_map::is_subset(const isl::union_map &umap2) const
20732{
20733 auto res = isl_union_map_is_subset(get(), umap2.get());
20734 return manage(res);
20735}
20736
20737boolean union_map::isa_map() const
20738{
20739 auto res = isl_union_map_isa_map(get());
20740 return manage(res);
20741}
20742
20744{
20745 auto res = isl_union_map_lexmax(copy());
20746 return manage(res);
20747}
20748
20750{
20751 auto res = isl_union_map_lexmin(copy());
20752 return manage(res);
20753}
20754
20756{
20758 return manage(res);
20759}
20760
20762{
20763 return map_list();
20764}
20765
20767{
20768 auto res = isl_union_map_params(copy());
20769 return manage(res);
20770}
20771
20773{
20775 return manage(res);
20776}
20777
20779{
20781 return manage(res);
20782}
20783
20785{
20787 return manage(res);
20788}
20789
20791{
20793 return manage(res);
20794}
20795
20797{
20799 return manage(res);
20800}
20801
20803{
20805 return manage(res);
20806}
20807
20809{
20811 return manage(res);
20812}
20813
20815{
20817 return manage(res);
20818}
20819
20821{
20822 auto res = isl_union_map_product(copy(), umap2.release());
20823 return manage(res);
20824}
20825
20827{
20829 return manage(res);
20830}
20831
20833{
20834 auto res = isl_union_map_range(copy());
20835 return manage(res);
20836}
20837
20839{
20841 return manage(res);
20842}
20843
20845{
20847 return manage(res);
20848}
20849
20851{
20853 return manage(res);
20854}
20855
20857{
20858 auto res = isl_union_map_range_product(copy(), umap2.release());
20859 return manage(res);
20860}
20861
20863{
20865 return manage(res);
20866}
20867
20869{
20870 auto res = isl_union_map_reverse(copy());
20871 return manage(res);
20872}
20873
20875{
20877 return manage(res);
20878}
20879
20881{
20882 return space();
20883}
20884
20886{
20887 auto res = isl_union_map_subtract(copy(), umap2.release());
20888 return manage(res);
20889}
20890
20892{
20894 return manage(res);
20895}
20896
20898{
20900 return manage(res);
20901}
20902
20904{
20905 auto res = isl_union_map_uncurry(copy());
20906 return manage(res);
20907}
20908
20910{
20911 auto res = isl_union_map_union(copy(), umap2.release());
20912 return manage(res);
20913}
20914
20916{
20918 return manage(res);
20919}
20920
20922{
20923 auto res = isl_union_map_wrap(copy());
20924 return manage(res);
20925}
20926
20928{
20929 auto res = isl_union_map_zip(copy());
20930 return manage(res);
20931}
20932
20933inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
20934{
20935 char *str = isl_union_map_to_str(obj.get());
20936 if (!str) {
20937 os.setstate(std::ios_base::badbit);
20938 return os;
20939 }
20940 os << str;
20941 free(str);
20942 return os;
20943}
20944
20945// implementations for isl::union_pw_aff
20947 return union_pw_aff(ptr);
20948}
20950 ptr = isl_union_pw_aff_copy(ptr);
20951 return union_pw_aff(ptr);
20952}
20953
20955 : ptr(nullptr) {}
20956
20958 : ptr(nullptr)
20959{
20960 ptr = obj.copy();
20961}
20962
20964 : ptr(ptr) {}
20965
20967{
20969 ptr = res;
20970}
20971
20973{
20975 ptr = res;
20976}
20977
20979{
20981 ptr = res;
20982}
20983
20985{
20987 ptr = res;
20988}
20989
20991 std::swap(this->ptr, obj.ptr);
20992 return *this;
20993}
20994
20996 if (ptr)
20998}
20999
21001 return isl_union_pw_aff_copy(ptr);
21002}
21003
21005 return ptr;
21006}
21007
21009 isl_union_pw_aff *tmp = ptr;
21010 ptr = nullptr;
21011 return tmp;
21012}
21013
21015 return ptr == nullptr;
21016}
21017
21020}
21021
21023{
21024 return isl::multi_union_pw_aff(*this).add(multi2);
21025}
21026
21028{
21029 auto res = isl_union_pw_aff_add(copy(), upa2.release());
21030 return manage(res);
21031}
21032
21034{
21035 return isl::union_pw_multi_aff(*this).add(upma2);
21036}
21037
21039{
21040 return this->add(isl::union_pw_aff(upa2));
21041}
21042
21044{
21045 return this->add(isl::union_pw_aff(upa2));
21046}
21047
21049{
21051}
21052
21054{
21055 return isl::union_pw_multi_aff(*this).apply(upma2);
21056}
21057
21059{
21061}
21062
21064{
21066}
21067
21069{
21070 return isl::union_pw_multi_aff(*this).as_union_map();
21071}
21072
21074{
21075 return isl::multi_union_pw_aff(*this).at(pos);
21076}
21077
21079{
21080 return isl::multi_union_pw_aff(*this).bind(tuple);
21081}
21082
21084{
21085 auto res = isl_union_pw_aff_bind_id(copy(), id.release());
21086 return manage(res);
21087}
21088
21089isl::union_set union_pw_aff::bind(const std::string &id) const
21090{
21091 return this->bind(isl::id(ctx(), id));
21092}
21093
21095{
21097 return manage(res);
21098}
21099
21100class size union_pw_aff::dim(isl::dim type) const
21101{
21102 return isl::multi_union_pw_aff(*this).dim(type);
21103}
21104
21106{
21108 return manage(res);
21109}
21110
21112{
21114 return manage(res);
21115}
21116
21118{
21120}
21121
21123{
21124 return isl::multi_union_pw_aff(*this).flat_range_product(multi2);
21125}
21126
21128{
21129 return isl::union_pw_multi_aff(*this).flat_range_product(upma2);
21130}
21131
21133{
21134 struct fn_data {
21135 std::function<stat(isl::pw_aff)> func;
21136 } fn_data = { fn };
21137 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
21138 auto *data = static_cast<struct fn_data *>(arg_1);
21139 auto ret = (data->func)(manage(arg_0));
21140 return ret.release();
21141 };
21142 auto res = isl_union_pw_aff_foreach_pw_aff(get(), fn_lambda, &fn_data);
21143 return manage(res);
21144}
21145
21147{
21148 auto res = isl_union_pw_aff_gist(copy(), context.release());
21149 return manage(res);
21150}
21151
21153{
21155}
21156
21158{
21160 return manage(res);
21161}
21162
21164{
21166 return manage(res);
21167}
21168
21170{
21172 return manage(res);
21173}
21174
21176{
21178 return manage(res);
21179}
21180
21182{
21184 return manage(res);
21185}
21186
21188{
21190}
21191
21193{
21194 return isl::multi_union_pw_aff(*this).involves_nan();
21195}
21196
21198{
21200}
21201
21203{
21204 return isl::multi_union_pw_aff(*this).list();
21205}
21206
21208{
21209 return isl::multi_union_pw_aff(*this).neg();
21210}
21211
21213{
21215}
21216
21218{
21219 return isl::multi_union_pw_aff(*this).plain_is_equal(multi2);
21220}
21221
21223{
21225}
21226
21228{
21230 return manage(res);
21231}
21232
21234{
21236}
21237
21239{
21241}
21242
21244{
21246}
21247
21249{
21250 return isl::multi_union_pw_aff(*this).range_product(multi2);
21251}
21252
21254{
21255 return isl::union_pw_multi_aff(*this).range_product(upma2);
21256}
21257
21259{
21261}
21262
21264{
21266}
21267
21269{
21271}
21272
21274{
21275 return isl::multi_union_pw_aff(*this).scale(mv);
21276}
21277
21279{
21280 return isl::multi_union_pw_aff(*this).scale(v);
21281}
21282
21284{
21285 return this->scale(isl::val(ctx(), v));
21286}
21287
21289{
21290 return isl::multi_union_pw_aff(*this).scale_down(mv);
21291}
21292
21294{
21295 return isl::multi_union_pw_aff(*this).scale_down(v);
21296}
21297
21299{
21300 return this->scale_down(isl::val(ctx(), v));
21301}
21302
21304{
21305 return isl::multi_union_pw_aff(*this).set_at(pos, el);
21306}
21307
21309{
21310 return isl::multi_union_pw_aff(*this).set_range_tuple(id);
21311}
21312
21314{
21315 return this->set_range_tuple(isl::id(ctx(), id));
21316}
21317
21319{
21320 return isl::multi_union_pw_aff(*this).set_union_pw_aff(pos, el);
21321}
21322
21323class size union_pw_aff::size() const
21324{
21325 return isl::multi_union_pw_aff(*this).size();
21326}
21327
21329{
21331 return manage(res);
21332}
21333
21335{
21336 return space();
21337}
21338
21340{
21341 return isl::multi_union_pw_aff(*this).sub(multi2);
21342}
21343
21345{
21346 auto res = isl_union_pw_aff_sub(copy(), upa2.release());
21347 return manage(res);
21348}
21349
21351{
21352 return isl::union_pw_multi_aff(*this).sub(upma2);
21353}
21354
21356{
21357 return this->sub(isl::union_pw_aff(upa2));
21358}
21359
21361{
21362 return this->sub(isl::union_pw_aff(upa2));
21363}
21364
21366{
21368 return manage(res);
21369}
21370
21372{
21374 return manage(res);
21375}
21376
21378{
21379 auto res = isl_union_pw_aff_to_list(copy());
21380 return manage(res);
21381}
21382
21384{
21385 return isl::multi_union_pw_aff(*this).union_add(mupa2);
21386}
21387
21389{
21390 auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
21391 return manage(res);
21392}
21393
21395{
21396 return isl::union_pw_multi_aff(*this).union_add(upma2);
21397}
21398
21400{
21401 return this->union_add(isl::union_pw_aff(upa2));
21402}
21403
21405{
21406 return this->union_add(isl::union_pw_aff(upa2));
21407}
21408
21409inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
21410{
21411 char *str = isl_union_pw_aff_to_str(obj.get());
21412 if (!str) {
21413 os.setstate(std::ios_base::badbit);
21414 return os;
21415 }
21416 os << str;
21417 free(str);
21418 return os;
21419}
21420
21421// implementations for isl::union_pw_aff_list
21422union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
21423 return union_pw_aff_list(ptr);
21424}
21425union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
21426 ptr = isl_union_pw_aff_list_copy(ptr);
21427 return union_pw_aff_list(ptr);
21428}
21429
21431 : ptr(nullptr) {}
21432
21434 : ptr(nullptr)
21435{
21436 ptr = obj.copy();
21437}
21438
21440 : ptr(ptr) {}
21441
21443{
21444 auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
21445 ptr = res;
21446}
21447
21449{
21450 auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
21451 ptr = res;
21452}
21453
21455{
21456 auto res = isl_union_pw_aff_list_read_from_str(ctx.release(), str.c_str());
21457 ptr = res;
21458}
21459
21461 std::swap(this->ptr, obj.ptr);
21462 return *this;
21463}
21464
21466 if (ptr)
21467 isl_union_pw_aff_list_free(ptr);
21468}
21469
21470__isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
21471 return isl_union_pw_aff_list_copy(ptr);
21472}
21473
21474__isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
21475 return ptr;
21476}
21477
21478__isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
21479 isl_union_pw_aff_list *tmp = ptr;
21480 ptr = nullptr;
21481 return tmp;
21482}
21483
21485 return ptr == nullptr;
21486}
21487
21489 return isl::ctx(isl_union_pw_aff_list_get_ctx(ptr));
21490}
21491
21493{
21494 auto res = isl_union_pw_aff_list_add(copy(), el.release());
21495 return manage(res);
21496}
21497
21499{
21500 auto res = isl_union_pw_aff_list_get_at(get(), index);
21501 return manage(res);
21502}
21503
21505{
21506 return at(index);
21507}
21508
21510{
21511 auto res = isl_union_pw_aff_list_clear(copy());
21512 return manage(res);
21513}
21514
21516{
21517 auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
21518 return manage(res);
21519}
21520
21521isl::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
21522{
21523 auto res = isl_union_pw_aff_list_drop(copy(), first, n);
21524 return manage(res);
21525}
21526
21528{
21529 struct fn_data {
21530 std::function<stat(isl::union_pw_aff)> func;
21531 } fn_data = { fn };
21532 auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
21533 auto *data = static_cast<struct fn_data *>(arg_1);
21534 auto ret = (data->func)(manage(arg_0));
21535 return ret.release();
21536 };
21537 auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
21538 return manage(res);
21539}
21540
21542{
21543 auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
21544 return manage(res);
21545}
21546
21548{
21549 auto res = isl_union_pw_aff_list_size(get());
21550 return manage(res);
21551}
21552
21553inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
21554{
21555 char *str = isl_union_pw_aff_list_to_str(obj.get());
21556 if (!str) {
21557 os.setstate(std::ios_base::badbit);
21558 return os;
21559 }
21560 os << str;
21561 free(str);
21562 return os;
21563}
21564
21565// implementations for isl::union_pw_multi_aff
21567 return union_pw_multi_aff(ptr);
21568}
21570 ptr = isl_union_pw_multi_aff_copy(ptr);
21571 return union_pw_multi_aff(ptr);
21572}
21573
21575 : ptr(nullptr) {}
21576
21578 : ptr(nullptr)
21579{
21580 ptr = obj.copy();
21581}
21582
21584 : ptr(ptr) {}
21585
21587{
21589 ptr = res;
21590}
21591
21593{
21595 ptr = res;
21596}
21597
21599{
21601 ptr = res;
21602}
21603
21605{
21607 ptr = res;
21608}
21609
21611{
21613 ptr = res;
21614}
21615
21617{
21619 ptr = res;
21620}
21621
21623 std::swap(this->ptr, obj.ptr);
21624 return *this;
21625}
21626
21628 if (ptr)
21630}
21631
21634}
21635
21637 return ptr;
21638}
21639
21642 ptr = nullptr;
21643 return tmp;
21644}
21645
21647 return ptr == nullptr;
21648}
21649
21652}
21653
21655{
21656 auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
21657 return manage(res);
21658}
21659
21661{
21663 return manage(res);
21664}
21665
21667{
21669 return manage(res);
21670}
21671
21673{
21675 return manage(res);
21676}
21677
21679{
21681 return manage(res);
21682}
21683
21685{
21687 return manage(res);
21688}
21689
21691{
21693 return manage(res);
21694}
21695
21697{
21699 return manage(res);
21700}
21701
21703{
21705 return manage(res);
21706}
21707
21709{
21711 return manage(res);
21712}
21713
21715{
21717 return manage(res);
21718}
21719
21721{
21723 return manage(res);
21724}
21725
21727{
21728 auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
21729 return manage(res);
21730}
21731
21733{
21735 return manage(res);
21736}
21737
21739{
21741 return manage(res);
21742}
21743
21745{
21747 return manage(res);
21748}
21749
21751{
21753 return manage(res);
21754}
21755
21757{
21759 return manage(res);
21760}
21761
21763{
21765 return manage(res);
21766}
21767
21769{
21771 return manage(res);
21772}
21773
21775{
21777 return manage(res);
21778}
21779
21781{
21783 return manage(res);
21784}
21785
21787{
21789 return manage(res);
21790}
21791
21793{
21795 return manage(res);
21796}
21797
21799{
21800 return pw_multi_aff_list();
21801}
21802
21804{
21806 return manage(res);
21807}
21808
21810{
21812 return manage(res);
21813}
21814
21816{
21818 return manage(res);
21819}
21820
21822{
21824 return manage(res);
21825}
21826
21828{
21829 return space();
21830}
21831
21833{
21834 auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
21835 return manage(res);
21836}
21837
21839{
21841 return manage(res);
21842}
21843
21845{
21847 return manage(res);
21848}
21849
21851{
21853 return manage(res);
21854}
21855
21856inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
21857{
21858 char *str = isl_union_pw_multi_aff_to_str(obj.get());
21859 if (!str) {
21860 os.setstate(std::ios_base::badbit);
21861 return os;
21862 }
21863 os << str;
21864 free(str);
21865 return os;
21866}
21867
21868// implementations for isl::union_set
21870 return union_set(ptr);
21871}
21873 ptr = isl_union_set_copy(ptr);
21874 return union_set(ptr);
21875}
21876
21878 : ptr(nullptr) {}
21879
21881 : ptr(nullptr)
21882{
21883 ptr = obj.copy();
21884}
21885
21887 : ptr(ptr) {}
21888
21890{
21892 ptr = res;
21893}
21894
21896{
21897 auto res = isl_union_set_from_point(pnt.release());
21898 ptr = res;
21899}
21900
21902{
21904 ptr = res;
21905}
21906
21908{
21909 auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
21910 ptr = res;
21911}
21912
21914 std::swap(this->ptr, obj.ptr);
21915 return *this;
21916}
21917
21919 if (ptr)
21921}
21922
21924 return isl_union_set_copy(ptr);
21925}
21926
21928 return ptr;
21929}
21930
21932 isl_union_set *tmp = ptr;
21933 ptr = nullptr;
21934 return tmp;
21935}
21936
21938 return ptr == nullptr;
21939}
21940
21943}
21944
21946{
21948 return manage(res);
21949}
21950
21952{
21953 auto res = isl_union_set_apply(copy(), umap.release());
21954 return manage(res);
21955}
21956
21958{
21959 auto res = isl_union_set_as_set(copy());
21960 return manage(res);
21961}
21962
21964{
21966 return manage(res);
21967}
21968
21970{
21972 return manage(res);
21973}
21974
21976{
21977 auto res = isl_union_set_contains(get(), space.get());
21978 return manage(res);
21979}
21980
21982{
21984 return manage(res);
21985}
21986
21988{
21990 return manage(res);
21991}
21992
21993boolean union_set::every_set(const std::function<boolean(isl::set)> &test) const
21994{
21995 struct test_data {
21996 std::function<boolean(isl::set)> func;
21997 } test_data = { test };
21998 auto test_lambda = [](isl_set *arg_0, void *arg_1) -> isl_bool {
21999 auto *data = static_cast<struct test_data *>(arg_1);
22000 auto ret = (data->func)(manage_copy(arg_0));
22001 return ret.release();
22002 };
22003 auto res = isl_union_set_every_set(get(), test_lambda, &test_data);
22004 return manage(res);
22005}
22006
22008{
22010 return manage(res);
22011}
22012
22013stat union_set::foreach_point(const std::function<stat(isl::point)> &fn) const
22014{
22015 struct fn_data {
22016 std::function<stat(isl::point)> func;
22017 } fn_data = { fn };
22018 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
22019 auto *data = static_cast<struct fn_data *>(arg_1);
22020 auto ret = (data->func)(manage(arg_0));
22021 return ret.release();
22022 };
22023 auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
22024 return manage(res);
22025}
22026
22027stat union_set::foreach_set(const std::function<stat(isl::set)> &fn) const
22028{
22029 struct fn_data {
22030 std::function<stat(isl::set)> func;
22031 } fn_data = { fn };
22032 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
22033 auto *data = static_cast<struct fn_data *>(arg_1);
22034 auto ret = (data->func)(manage(arg_0));
22035 return ret.release();
22036 };
22037 auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
22038 return manage(res);
22039}
22040
22042{
22043 auto res = isl_union_set_gist(copy(), context.release());
22044 return manage(res);
22045}
22046
22048{
22050 return manage(res);
22051}
22052
22054{
22056 return manage(res);
22057}
22058
22060{
22062 return manage(res);
22063}
22064
22066{
22067 auto res = isl_union_set_intersect(copy(), uset2.release());
22068 return manage(res);
22069}
22070
22072{
22074 return manage(res);
22075}
22076
22077boolean union_set::is_disjoint(const isl::union_set &uset2) const
22078{
22079 auto res = isl_union_set_is_disjoint(get(), uset2.get());
22080 return manage(res);
22081}
22082
22083boolean union_set::is_empty() const
22084{
22085 auto res = isl_union_set_is_empty(get());
22086 return manage(res);
22087}
22088
22089boolean union_set::is_equal(const isl::union_set &uset2) const
22090{
22091 auto res = isl_union_set_is_equal(get(), uset2.get());
22092 return manage(res);
22093}
22094
22096{
22097 auto res = isl_union_set_is_strict_subset(get(), uset2.get());
22098 return manage(res);
22099}
22100
22101boolean union_set::is_subset(const isl::union_set &uset2) const
22102{
22103 auto res = isl_union_set_is_subset(get(), uset2.get());
22104 return manage(res);
22105}
22106
22107boolean union_set::isa_set() const
22108{
22109 auto res = isl_union_set_isa_set(get());
22110 return manage(res);
22111}
22112
22114{
22115 auto res = isl_union_set_lexmax(copy());
22116 return manage(res);
22117}
22118
22120{
22121 auto res = isl_union_set_lexmin(copy());
22122 return manage(res);
22123}
22124
22126{
22127 auto res = isl_union_set_params(copy());
22128 return manage(res);
22129}
22130
22132{
22134 return manage(res);
22135}
22136
22138{
22139 auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
22140 return manage(res);
22141}
22142
22144{
22145 auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
22146 return manage(res);
22147}
22148
22150{
22152 return manage(res);
22153}
22154
22156{
22158 return manage(res);
22159}
22160
22162{
22164 return manage(res);
22165}
22166
22168{
22169 return set_list();
22170}
22171
22173{
22175 return manage(res);
22176}
22177
22179{
22180 return space();
22181}
22182
22184{
22185 auto res = isl_union_set_subtract(copy(), uset2.release());
22186 return manage(res);
22187}
22188
22190{
22191 auto res = isl_union_set_to_list(copy());
22192 return manage(res);
22193}
22194
22196{
22197 auto res = isl_union_set_union(copy(), uset2.release());
22198 return manage(res);
22199}
22200
22202{
22204 return manage(res);
22205}
22206
22208{
22209 auto res = isl_union_set_unwrap(copy());
22210 return manage(res);
22211}
22212
22213inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
22214{
22215 char *str = isl_union_set_to_str(obj.get());
22216 if (!str) {
22217 os.setstate(std::ios_base::badbit);
22218 return os;
22219 }
22220 os << str;
22221 free(str);
22222 return os;
22223}
22224
22225// implementations for isl::union_set_list
22227 return union_set_list(ptr);
22228}
22230 ptr = isl_union_set_list_copy(ptr);
22231 return union_set_list(ptr);
22232}
22233
22235 : ptr(nullptr) {}
22236
22238 : ptr(nullptr)
22239{
22240 ptr = obj.copy();
22241}
22242
22244 : ptr(ptr) {}
22245
22247{
22248 auto res = isl_union_set_list_alloc(ctx.release(), n);
22249 ptr = res;
22250}
22251
22253{
22254 auto res = isl_union_set_list_from_union_set(el.release());
22255 ptr = res;
22256}
22257
22259{
22260 auto res = isl_union_set_list_read_from_str(ctx.release(), str.c_str());
22261 ptr = res;
22262}
22263
22265 std::swap(this->ptr, obj.ptr);
22266 return *this;
22267}
22268
22270 if (ptr)
22271 isl_union_set_list_free(ptr);
22272}
22273
22275 return isl_union_set_list_copy(ptr);
22276}
22277
22279 return ptr;
22280}
22281
22283 isl_union_set_list *tmp = ptr;
22284 ptr = nullptr;
22285 return tmp;
22286}
22287
22289 return ptr == nullptr;
22290}
22291
22293 return isl::ctx(isl_union_set_list_get_ctx(ptr));
22294}
22295
22297{
22298 auto res = isl_union_set_list_add(copy(), el.release());
22299 return manage(res);
22300}
22301
22303{
22304 auto res = isl_union_set_list_get_at(get(), index);
22305 return manage(res);
22306}
22307
22309{
22310 return at(index);
22311}
22312
22314{
22315 auto res = isl_union_set_list_clear(copy());
22316 return manage(res);
22317}
22318
22320{
22321 auto res = isl_union_set_list_concat(copy(), list2.release());
22322 return manage(res);
22323}
22324
22325isl::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
22326{
22327 auto res = isl_union_set_list_drop(copy(), first, n);
22328 return manage(res);
22329}
22330
22332{
22333 struct fn_data {
22334 std::function<stat(isl::union_set)> func;
22335 } fn_data = { fn };
22336 auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
22337 auto *data = static_cast<struct fn_data *>(arg_1);
22338 auto ret = (data->func)(manage(arg_0));
22339 return ret.release();
22340 };
22341 auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
22342 return manage(res);
22343}
22344
22346{
22347 auto res = isl_union_set_list_insert(copy(), pos, el.release());
22348 return manage(res);
22349}
22350
22352{
22353 auto res = isl_union_set_list_size(get());
22354 return manage(res);
22355}
22356
22357inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
22358{
22359 char *str = isl_union_set_list_to_str(obj.get());
22360 if (!str) {
22361 os.setstate(std::ios_base::badbit);
22362 return os;
22363 }
22364 os << str;
22365 free(str);
22366 return os;
22367}
22368
22369// implementations for isl::val
22371 return val(ptr);
22372}
22374 ptr = isl_val_copy(ptr);
22375 return val(ptr);
22376}
22377
22379 : ptr(nullptr) {}
22380
22382 : ptr(nullptr)
22383{
22384 ptr = obj.copy();
22385}
22386
22388 : ptr(ptr) {}
22389
22391{
22392 auto res = isl_val_int_from_si(ctx.release(), i);
22393 ptr = res;
22394}
22395
22396val::val(isl::ctx ctx, const std::string &str)
22397{
22398 auto res = isl_val_read_from_str(ctx.release(), str.c_str());
22399 ptr = res;
22400}
22401
22403 std::swap(this->ptr, obj.ptr);
22404 return *this;
22405}
22406
22408 if (ptr)
22410}
22411
22413 return isl_val_copy(ptr);
22414}
22415
22417 return ptr;
22418}
22419
22421 isl_val *tmp = ptr;
22422 ptr = nullptr;
22423 return tmp;
22424}
22425
22426bool val::is_null() const {
22427 return ptr == nullptr;
22428}
22429
22431 return isl::ctx(isl_val_get_ctx(ptr));
22432}
22433
22435{
22436 auto res = isl_val_abs(copy());
22437 return manage(res);
22438}
22439
22440boolean val::abs_eq(const isl::val &v2) const
22441{
22442 auto res = isl_val_abs_eq(get(), v2.get());
22443 return manage(res);
22444}
22445
22446boolean val::abs_eq(long v2) const
22447{
22448 return this->abs_eq(isl::val(ctx(), v2));
22449}
22450
22452{
22453 auto res = isl_val_add(copy(), v2.release());
22454 return manage(res);
22455}
22456
22457isl::val val::add(long v2) const
22458{
22459 return this->add(isl::val(ctx(), v2));
22460}
22461
22463{
22464 auto res = isl_val_ceil(copy());
22465 return manage(res);
22466}
22467
22468int val::cmp_si(long i) const
22469{
22470 auto res = isl_val_cmp_si(get(), i);
22471 return res;
22472}
22473
22474long val::den_si() const
22475{
22476 auto res = isl_val_get_den_si(get());
22477 return res;
22478}
22479
22481{
22482 return den_si();
22483}
22484
22486{
22487 auto res = isl_val_div(copy(), v2.release());
22488 return manage(res);
22489}
22490
22491isl::val val::div(long v2) const
22492{
22493 return this->div(isl::val(ctx(), v2));
22494}
22495
22496boolean val::eq(const isl::val &v2) const
22497{
22498 auto res = isl_val_eq(get(), v2.get());
22499 return manage(res);
22500}
22501
22502boolean val::eq(long v2) const
22503{
22504 return this->eq(isl::val(ctx(), v2));
22505}
22506
22508{
22509 auto res = isl_val_floor(copy());
22510 return manage(res);
22511}
22512
22514{
22515 auto res = isl_val_gcd(copy(), v2.release());
22516 return manage(res);
22517}
22518
22519isl::val val::gcd(long v2) const
22520{
22521 return this->gcd(isl::val(ctx(), v2));
22522}
22523
22524boolean val::ge(const isl::val &v2) const
22525{
22526 auto res = isl_val_ge(get(), v2.get());
22527 return manage(res);
22528}
22529
22530boolean val::ge(long v2) const
22531{
22532 return this->ge(isl::val(ctx(), v2));
22533}
22534
22535boolean val::gt(const isl::val &v2) const
22536{
22537 auto res = isl_val_gt(get(), v2.get());
22538 return manage(res);
22539}
22540
22541boolean val::gt(long v2) const
22542{
22543 return this->gt(isl::val(ctx(), v2));
22544}
22545
22547{
22548 auto res = isl_val_infty(ctx.release());
22549 return manage(res);
22550}
22551
22553{
22554 auto res = isl_val_int_from_ui(ctx.release(), u);
22555 return manage(res);
22556}
22557
22559{
22560 auto res = isl_val_inv(copy());
22561 return manage(res);
22562}
22563
22564boolean val::is_divisible_by(const isl::val &v2) const
22565{
22566 auto res = isl_val_is_divisible_by(get(), v2.get());
22567 return manage(res);
22568}
22569
22570boolean val::is_divisible_by(long v2) const
22571{
22572 return this->is_divisible_by(isl::val(ctx(), v2));
22573}
22574
22575boolean val::is_infty() const
22576{
22577 auto res = isl_val_is_infty(get());
22578 return manage(res);
22579}
22580
22581boolean val::is_int() const
22582{
22583 auto res = isl_val_is_int(get());
22584 return manage(res);
22585}
22586
22587boolean val::is_nan() const
22588{
22589 auto res = isl_val_is_nan(get());
22590 return manage(res);
22591}
22592
22593boolean val::is_neg() const
22594{
22595 auto res = isl_val_is_neg(get());
22596 return manage(res);
22597}
22598
22599boolean val::is_neginfty() const
22600{
22601 auto res = isl_val_is_neginfty(get());
22602 return manage(res);
22603}
22604
22605boolean val::is_negone() const
22606{
22607 auto res = isl_val_is_negone(get());
22608 return manage(res);
22609}
22610
22611boolean val::is_nonneg() const
22612{
22613 auto res = isl_val_is_nonneg(get());
22614 return manage(res);
22615}
22616
22617boolean val::is_nonpos() const
22618{
22619 auto res = isl_val_is_nonpos(get());
22620 return manage(res);
22621}
22622
22623boolean val::is_one() const
22624{
22625 auto res = isl_val_is_one(get());
22626 return manage(res);
22627}
22628
22629boolean val::is_pos() const
22630{
22631 auto res = isl_val_is_pos(get());
22632 return manage(res);
22633}
22634
22635boolean val::is_rat() const
22636{
22637 auto res = isl_val_is_rat(get());
22638 return manage(res);
22639}
22640
22641boolean val::is_zero() const
22642{
22643 auto res = isl_val_is_zero(get());
22644 return manage(res);
22645}
22646
22647boolean val::le(const isl::val &v2) const
22648{
22649 auto res = isl_val_le(get(), v2.get());
22650 return manage(res);
22651}
22652
22653boolean val::le(long v2) const
22654{
22655 return this->le(isl::val(ctx(), v2));
22656}
22657
22658boolean val::lt(const isl::val &v2) const
22659{
22660 auto res = isl_val_lt(get(), v2.get());
22661 return manage(res);
22662}
22663
22664boolean val::lt(long v2) const
22665{
22666 return this->lt(isl::val(ctx(), v2));
22667}
22668
22670{
22671 auto res = isl_val_max(copy(), v2.release());
22672 return manage(res);
22673}
22674
22675isl::val val::max(long v2) const
22676{
22677 return this->max(isl::val(ctx(), v2));
22678}
22679
22681{
22682 auto res = isl_val_min(copy(), v2.release());
22683 return manage(res);
22684}
22685
22686isl::val val::min(long v2) const
22687{
22688 return this->min(isl::val(ctx(), v2));
22689}
22690
22692{
22693 auto res = isl_val_mod(copy(), v2.release());
22694 return manage(res);
22695}
22696
22697isl::val val::mod(long v2) const
22698{
22699 return this->mod(isl::val(ctx(), v2));
22700}
22701
22703{
22704 auto res = isl_val_mul(copy(), v2.release());
22705 return manage(res);
22706}
22707
22708isl::val val::mul(long v2) const
22709{
22710 return this->mul(isl::val(ctx(), v2));
22711}
22712
22714{
22715 auto res = isl_val_nan(ctx.release());
22716 return manage(res);
22717}
22718
22719boolean val::ne(const isl::val &v2) const
22720{
22721 auto res = isl_val_ne(get(), v2.get());
22722 return manage(res);
22723}
22724
22725boolean val::ne(long v2) const
22726{
22727 return this->ne(isl::val(ctx(), v2));
22728}
22729
22731{
22732 auto res = isl_val_neg(copy());
22733 return manage(res);
22734}
22735
22737{
22738 auto res = isl_val_neginfty(ctx.release());
22739 return manage(res);
22740}
22741
22743{
22744 auto res = isl_val_negone(ctx.release());
22745 return manage(res);
22746}
22747
22748long val::num_si() const
22749{
22750 auto res = isl_val_get_num_si(get());
22751 return res;
22752}
22753
22755{
22756 return num_si();
22757}
22758
22760{
22761 auto res = isl_val_one(ctx.release());
22762 return manage(res);
22763}
22764
22766{
22767 auto res = isl_val_pow2(copy());
22768 return manage(res);
22769}
22770
22771int val::sgn() const
22772{
22773 auto res = isl_val_sgn(get());
22774 return res;
22775}
22776
22778{
22779 auto res = isl_val_sub(copy(), v2.release());
22780 return manage(res);
22781}
22782
22783isl::val val::sub(long v2) const
22784{
22785 return this->sub(isl::val(ctx(), v2));
22786}
22787
22789{
22790 auto res = isl_val_to_list(copy());
22791 return manage(res);
22792}
22793
22795{
22796 auto res = isl_val_trunc(copy());
22797 return manage(res);
22798}
22799
22801{
22802 auto res = isl_val_zero(ctx.release());
22803 return manage(res);
22804}
22805
22806inline std::ostream &operator<<(std::ostream &os, const val &obj)
22807{
22808 char *str = isl_val_to_str(obj.get());
22809 if (!str) {
22810 os.setstate(std::ios_base::badbit);
22811 return os;
22812 }
22813 os << str;
22814 free(str);
22815 return os;
22816}
22817
22818// implementations for isl::val_list
22819val_list manage(__isl_take isl_val_list *ptr) {
22820 return val_list(ptr);
22821}
22822val_list manage_copy(__isl_keep isl_val_list *ptr) {
22823 ptr = isl_val_list_copy(ptr);
22824 return val_list(ptr);
22825}
22826
22828 : ptr(nullptr) {}
22829
22831 : ptr(nullptr)
22832{
22833 ptr = obj.copy();
22834}
22835
22837 : ptr(ptr) {}
22838
22840{
22841 auto res = isl_val_list_alloc(ctx.release(), n);
22842 ptr = res;
22843}
22844
22846{
22847 auto res = isl_val_list_from_val(el.release());
22848 ptr = res;
22849}
22850
22852{
22853 auto res = isl_val_list_read_from_str(ctx.release(), str.c_str());
22854 ptr = res;
22855}
22856
22858 std::swap(this->ptr, obj.ptr);
22859 return *this;
22860}
22861
22863 if (ptr)
22864 isl_val_list_free(ptr);
22865}
22866
22867__isl_give isl_val_list *val_list::copy() const & {
22868 return isl_val_list_copy(ptr);
22869}
22870
22871__isl_keep isl_val_list *val_list::get() const {
22872 return ptr;
22873}
22874
22876 isl_val_list *tmp = ptr;
22877 ptr = nullptr;
22878 return tmp;
22879}
22880
22881bool val_list::is_null() const {
22882 return ptr == nullptr;
22883}
22884
22886 return isl::ctx(isl_val_list_get_ctx(ptr));
22887}
22888
22890{
22891 auto res = isl_val_list_add(copy(), el.release());
22892 return manage(res);
22893}
22894
22896{
22897 return this->add(isl::val(ctx(), el));
22898}
22899
22900isl::val val_list::at(int index) const
22901{
22902 auto res = isl_val_list_get_at(get(), index);
22903 return manage(res);
22904}
22905
22907{
22908 return at(index);
22909}
22910
22912{
22913 auto res = isl_val_list_clear(copy());
22914 return manage(res);
22915}
22916
22918{
22919 auto res = isl_val_list_concat(copy(), list2.release());
22920 return manage(res);
22921}
22922
22923isl::val_list val_list::drop(unsigned int first, unsigned int n) const
22924{
22925 auto res = isl_val_list_drop(copy(), first, n);
22926 return manage(res);
22927}
22928
22929stat val_list::foreach(const std::function<stat(isl::val)> &fn) const
22930{
22931 struct fn_data {
22932 std::function<stat(isl::val)> func;
22933 } fn_data = { fn };
22934 auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
22935 auto *data = static_cast<struct fn_data *>(arg_1);
22936 auto ret = (data->func)(manage(arg_0));
22937 return ret.release();
22938 };
22939 auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
22940 return manage(res);
22941}
22942
22944{
22945 auto res = isl_val_list_insert(copy(), pos, el.release());
22946 return manage(res);
22947}
22948
22949isl::val_list val_list::insert(unsigned int pos, long el) const
22950{
22951 return this->insert(pos, isl::val(ctx(), el));
22952}
22953
22954class size val_list::size() const
22955{
22956 auto res = isl_val_list_size(get());
22957 return manage(res);
22958}
22959
22960inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
22961{
22962 char *str = isl_val_list_to_str(obj.get());
22963 if (!str) {
22964 os.setstate(std::ios_base::badbit);
22965 return os;
22966 }
22967 os << str;
22968 free(str);
22969 return os;
22970}
22971} // namespace isl
22972
22973#endif /* ISL_CPP_CHECKED */
polly dump function
__isl_export isl_bool isl_union_pw_multi_aff_isa_pw_multi_aff(__isl_keep isl_union_pw_multi_aff *upma)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_coalesce(__isl_take isl_union_pw_multi_aff *upma)
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_empty_ctx(isl_ctx *ctx)
__isl_give isl_aff * isl_aff_add_constant_si(__isl_take isl_aff *aff, int v)
Definition: isl_aff.c:1026
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_set_pw_aff(__isl_take isl_pw_multi_aff *pma, unsigned pos, __isl_take isl_pw_aff *pa)
Definition: isl_aff.c:6571
__isl_constructor __isl_give isl_pw_multi_aff * isl_pw_multi_aff_from_multi_aff(__isl_take isl_multi_aff *ma)
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_pullback_pw_multi_aff(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
__isl_constructor __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_from_multi_aff(__isl_take isl_multi_aff *ma)
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
Definition: isl_aff.c:7993
isl_ctx * isl_aff_get_ctx(__isl_keep isl_aff *aff)
Definition: isl_aff.c:406
__isl_give isl_pw_aff * isl_pw_aff_var_on_domain(__isl_take isl_local_space *ls, enum isl_dim_type type, unsigned pos)
Definition: isl_aff.c:350
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_bind_domain(__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_id *tuple)
isl_bool isl_pw_aff_is_equal(__isl_keep isl_pw_aff *pa1, __isl_keep isl_pw_aff *pa2)
Definition: isl_aff.c:7105
__isl_export isl_bool isl_pw_aff_isa_aff(__isl_keep isl_pw_aff *pa)
__isl_export __isl_give isl_space * isl_pw_multi_aff_get_space(__isl_keep isl_pw_multi_aff *pma)
__isl_export __isl_give isl_set * isl_pw_aff_ne_set(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3243
__isl_export __isl_give isl_pw_multi_aff_list * isl_union_pw_multi_aff_get_pw_multi_aff_list(__isl_keep isl_union_pw_multi_aff *upma)
__isl_null isl_aff * isl_aff_free(__isl_take isl_aff *aff)
Definition: isl_aff.c:390
__isl_null isl_union_pw_multi_aff * isl_union_pw_multi_aff_free(__isl_take isl_union_pw_multi_aff *upma)
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_scale_val(__isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v)
__isl_export __isl_give isl_space * isl_union_pw_multi_aff_get_space(__isl_keep isl_union_pw_multi_aff *upma)
__isl_constructor __isl_give isl_pw_multi_aff * isl_pw_multi_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_union_pw_aff * isl_pw_aff_to_union_pw_aff(__isl_take isl_pw_aff *pa)
__isl_export __isl_give isl_multi_pw_aff * isl_multi_pw_aff_intersect_domain(__isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *domain)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_intersect_domain_wrapped_domain(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_union_set *uset)
__isl_null isl_union_pw_aff * isl_union_pw_aff_free(__isl_take isl_union_pw_aff *upa)
__isl_give isl_pw_aff * isl_pw_aff_val_on_domain(__isl_take isl_set *domain, __isl_take isl_val *v)
Definition: isl_aff.c:7678
__isl_export __isl_give isl_multi_aff * isl_multi_pw_aff_as_multi_aff(__isl_take isl_multi_pw_aff *mpa)
Definition: isl_aff.c:6695
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_scale_val(__isl_take isl_pw_aff *pa, __isl_take isl_val *v)
__isl_constructor __isl_give isl_multi_pw_aff * isl_multi_pw_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_give char * isl_union_pw_multi_aff_to_str(__isl_keep isl_union_pw_multi_aff *upma)
__isl_export __isl_give isl_union_set * isl_multi_union_pw_aff_bind(__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_multi_id *tuple)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_range_factor_domain(__isl_take isl_pw_multi_aff *pma)
Definition: isl_aff.c:4686
__isl_constructor __isl_give isl_multi_pw_aff * isl_multi_pw_aff_from_aff(__isl_take isl_aff *aff)
Definition: isl_aff.c:7005
__isl_overload __isl_give isl_union_pw_aff * isl_union_pw_aff_pullback_union_pw_multi_aff(__isl_take isl_union_pw_aff *upa, __isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff.c:8568
__isl_export __isl_give isl_multi_union_pw_aff * isl_union_pw_multi_aff_as_multi_union_pw_aff(__isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff.c:8852
__isl_export __isl_give isl_pw_aff * isl_pw_aff_cond(__isl_take isl_pw_aff *cond, __isl_take isl_pw_aff *pwaff_true, __isl_take isl_pw_aff *pwaff_false)
Definition: isl_aff.c:3317
__isl_overload __isl_give isl_multi_pw_aff * isl_multi_pw_aff_pullback_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_div(__isl_take isl_pw_aff *pa1, __isl_take isl_pw_aff *pa2)
Definition: isl_aff.c:3506
isl_ctx * isl_pw_aff_get_ctx(__isl_keep isl_pw_aff *pwaff)
__isl_export __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_gist(__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_union_set *context)
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_add_constant_val(__isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v)
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_union_add(__isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2)
__isl_export __isl_give isl_val * isl_pw_aff_eval(__isl_take isl_pw_aff *pa, __isl_take isl_point *pnt)
__isl_export __isl_give isl_set * isl_aff_lt_set(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:2467
__isl_export __isl_give isl_pw_multi_aff * isl_union_pw_multi_aff_extract_pw_multi_aff(__isl_keep isl_union_pw_multi_aff *upma, __isl_take isl_space *space)
__isl_export __isl_give isl_set * isl_pw_aff_eq_set(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3036
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_subtract_domain_union_set(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_union_set *uset)
isl_ctx * isl_pw_multi_aff_get_ctx(__isl_keep isl_pw_multi_aff *pma)
__isl_export __isl_give isl_multi_aff * isl_space_range_map_multi_aff(__isl_take isl_space *space)
Definition: isl_aff.c:4220
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_identity_on_domain_space(__isl_take isl_space *space)
Definition: isl_aff.c:4356
__isl_export __isl_give isl_pw_aff * isl_pw_aff_floor(__isl_take isl_pw_aff *pwaff)
Definition: isl_aff.c:3281
__isl_export __isl_give isl_multi_aff * isl_multi_aff_domain_map(__isl_take isl_space *space)
Definition: isl_aff.c:4124
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_intersect_domain(__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_bind_domain(__isl_take isl_pw_aff *pa, __isl_take isl_multi_id *tuple)
isl_stat isl_union_pw_aff_foreach_pw_aff(__isl_keep isl_union_pw_aff *upa, isl_stat(*fn)(__isl_take isl_pw_aff *pa, void *user), void *user)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_intersect_params(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_set *set)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_range_map(__isl_take isl_space *space)
Definition: isl_aff.c:4247
__isl_constructor __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_multi_val * isl_multi_aff_get_constant_multi_val(__isl_keep isl_multi_aff *ma)
Definition: isl_aff.c:4071
__isl_constructor __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_pw_multi_aff * isl_union_pw_multi_aff_as_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_insert_domain(__isl_take isl_pw_aff *pa, __isl_take isl_space *domain)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_tdiv_r(__isl_take isl_pw_aff *pa1, __isl_take isl_pw_aff *pa2)
Definition: isl_aff.c:3571
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_union_add(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
__isl_export isl_bool isl_aff_is_cst(__isl_keep isl_aff *aff)
Definition: isl_aff.c:3360
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_range_factor_range(__isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff.c:9930
__isl_give isl_aff * isl_aff_val_on_domain(__isl_take isl_local_space *ls, __isl_take isl_val *val)
Definition: isl_aff.c:272
__isl_export __isl_give isl_multi_union_pw_aff * isl_union_map_as_multi_union_pw_aff(__isl_take isl_union_map *umap)
Definition: isl_aff.c:8877
__isl_export __isl_give isl_union_set * isl_multi_union_pw_aff_domain(__isl_take isl_multi_union_pw_aff *mupa)
Definition: isl_aff.c:9352
__isl_give isl_id * isl_pw_multi_aff_get_tuple_id(__isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_tdiv_q(__isl_take isl_pw_aff *pa1, __isl_take isl_pw_aff *pa2)
Definition: isl_aff.c:3535
__isl_export __isl_give isl_multi_aff * isl_pw_multi_aff_as_multi_aff(__isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_set * isl_aff_ne_set(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:2499
__isl_overload __isl_give isl_pw_multi_aff * isl_set_pw_multi_aff_on_domain_multi_val(__isl_take isl_set *domain, __isl_take isl_multi_val *mv)
Definition: isl_aff.c:7805
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_coalesce(__isl_take isl_union_pw_aff *upa)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_zero(__isl_take isl_space *space)
Definition: isl_aff.c:6909
__isl_export __isl_give isl_pw_multi_aff * isl_multi_aff_to_pw_multi_aff(__isl_take isl_multi_aff *ma)
Definition: isl_aff.c:4338
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_subtract_domain_space(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *space)
__isl_constructor __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_from_union_pw_aff(__isl_take isl_union_pw_aff *upa)
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_add_constant_val(__isl_take isl_pw_aff *pa, __isl_take isl_val *v)
__isl_give isl_aff * isl_aff_set_constant_si(__isl_take isl_aff *aff, int v)
Definition: isl_aff.c:1087
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_pullback_pw_multi_aff(__isl_take isl_pw_aff *pa, __isl_take isl_pw_multi_aff *pma)
__isl_overload __isl_give isl_set * isl_pw_aff_bind_id(__isl_take isl_pw_aff *pa, __isl_take isl_id *id)
Definition: isl_aff.c:2987
__isl_export __isl_give isl_pw_aff * isl_pw_aff_mul(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3497
__isl_give isl_map * isl_map_from_pw_aff(__isl_take isl_pw_aff *pwaff)
Definition: isl_aff_map.c:327
__isl_export __isl_give isl_aff * isl_aff_unbind_params_insert_domain(__isl_take isl_aff *aff, __isl_take isl_multi_id *domain)
__isl_overload __isl_give isl_multi_aff * isl_space_multi_aff_on_domain_multi_val(__isl_take isl_space *space, __isl_take isl_multi_val *mv)
Definition: isl_aff.c:7780
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_map_as_union_pw_multi_aff(__isl_take isl_union_map *umap)
Definition: isl_aff.c:5673
__isl_overload __isl_give isl_union_pw_aff * isl_union_pw_aff_intersect_domain_union_set(__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_apply_union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
Definition: isl_aff.c:7895
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_param_on_domain_id(__isl_take isl_set *domain, __isl_take isl_id *id)
Definition: isl_aff.c:7704
__isl_export __isl_give isl_set * isl_aff_le_set(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:2458
__isl_export __isl_give isl_val * isl_aff_eval(__isl_take isl_aff *aff, __isl_take isl_point *pnt)
Definition: isl_aff.c:9998
__isl_constructor __isl_give isl_pw_aff * isl_pw_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
__isl_give char * isl_pw_multi_aff_to_str(__isl_keep isl_pw_multi_aff *pma)
isl_bool isl_pw_aff_is_cst(__isl_keep isl_pw_aff *pwaff)
Definition: isl_aff.c:3373
__isl_give isl_aff * isl_aff_var_on_domain(__isl_take isl_local_space *ls, enum isl_dim_type type, unsigned pos)
Definition: isl_aff.c:311
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_pullback_multi_aff(__isl_take isl_pw_aff *pa, __isl_take isl_multi_aff *ma)
__isl_export isl_bool isl_pw_multi_aff_isa_multi_aff(__isl_keep isl_pw_multi_aff *pma)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_intersect_domain_wrapped_range(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_union_set *uset)
__isl_export __isl_give isl_map * isl_multi_pw_aff_as_map(__isl_take isl_multi_pw_aff *mpa)
Definition: isl_aff_map.c:489
__isl_overload __isl_give isl_aff * isl_space_param_aff_on_domain_id(__isl_take isl_space *space, __isl_take isl_id *id)
Definition: isl_aff.c:384
__isl_export __isl_give isl_aff * isl_aff_neg(__isl_take isl_aff *aff)
Definition: isl_aff.c:1378
__isl_export __isl_give isl_space * isl_union_pw_aff_get_space(__isl_keep isl_union_pw_aff *upa)
__isl_export __isl_give isl_pw_multi_aff * isl_space_identity_pw_multi_aff_on_domain(__isl_take isl_space *space)
Definition: isl_aff.c:4369
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_gist(__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *context)
__isl_overload __isl_give isl_aff * isl_aff_add_constant_val(__isl_take isl_aff *aff, __isl_take isl_val *v)
Definition: isl_aff.c:997
__isl_export __isl_give isl_pw_aff * isl_pw_aff_intersect_params(__isl_take isl_pw_aff *pa, __isl_take isl_set *set)
__isl_export isl_bool isl_pw_multi_aff_has_range_tuple_id(__isl_keep isl_pw_multi_aff *pma)
__isl_export isl_size isl_pw_multi_aff_n_piece(__isl_keep isl_pw_multi_aff *pma)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_insert_domain(__isl_take isl_pw_multi_aff *pma, __isl_take isl_space *domain)
__isl_give isl_id * isl_pw_aff_get_tuple_id(__isl_keep isl_pw_aff *pa, enum isl_dim_type type)
__isl_export __isl_give isl_multi_pw_aff * isl_multi_pw_aff_coalesce(__isl_take isl_multi_pw_aff *mpa)
__isl_overload __isl_give isl_aff * isl_aff_scale_val(__isl_take isl_aff *aff, __isl_take isl_val *v)
Definition: isl_aff.c:1995
__isl_give isl_val * isl_aff_get_denominator_val(__isl_keep isl_aff *aff)
Definition: isl_aff.c:746
isl_stat isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, isl_stat(*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff, void *user), void *user)
__isl_give char * isl_union_pw_aff_to_str(__isl_keep isl_union_pw_aff *upa)
__isl_export __isl_give isl_multi_pw_aff * isl_pw_multi_aff_to_multi_pw_aff(__isl_take isl_pw_multi_aff *pma)
Definition: isl_aff.c:7090
__isl_overload __isl_give isl_union_set * isl_union_pw_aff_bind_id(__isl_take isl_union_pw_aff *upa, __isl_take isl_id *id)
Definition: isl_aff.c:8495
__isl_export __isl_give isl_basic_set * isl_multi_aff_bind(__isl_take isl_multi_aff *ma, __isl_take isl_multi_id *tuple)
__isl_export __isl_give isl_multi_pw_aff * isl_multi_pw_aff_gist(__isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set)
__isl_export __isl_give isl_aff * isl_pw_aff_as_aff(__isl_take isl_pw_aff *pa)
__isl_constructor __isl_give isl_union_pw_aff * isl_union_pw_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_add(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
__isl_export __isl_give isl_aff * isl_space_zero_aff_on_domain(__isl_take isl_space *space)
Definition: isl_aff.c:198
__isl_export __isl_give isl_pw_aff * isl_pw_aff_union_add(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
__isl_constructor __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_give char * isl_multi_aff_to_str(__isl_keep isl_multi_aff *ma)
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_pullback_union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
Definition: isl_aff.c:7883
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_intersect_params(__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_min(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3690
__isl_constructor __isl_give isl_multi_aff * isl_multi_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_map * isl_pw_multi_aff_as_map(__isl_take isl_pw_multi_aff *pma)
Definition: isl_aff_map.c:406
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_intersect_domain_wrapped_range(__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_sub(__isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2)
__isl_constructor __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa)
Definition: isl_aff.c:8715
__isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_from_union_map(__isl_take isl_union_map *umap)
Definition: isl_aff.c:8864
__isl_give isl_id * isl_pw_aff_get_dim_id(__isl_keep isl_pw_aff *pa, enum isl_dim_type type, unsigned pos)
__isl_overload __isl_give isl_multi_aff * isl_multi_aff_pullback_multi_aff(__isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2)
Definition: isl_aff.c:6048
__isl_export __isl_give isl_pw_aff * isl_pw_aff_intersect_domain(__isl_take isl_pw_aff *pa, __isl_take isl_set *set)
__isl_export __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_coalesce(__isl_take isl_multi_union_pw_aff *mupa)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_union_add(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_set_range_tuple_id(__isl_take isl_pw_multi_aff *pma, __isl_take isl_id *id)
__isl_overload __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_pullback_union_pw_multi_aff(__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff.c:9773
__isl_null isl_pw_aff * isl_pw_aff_free(__isl_take isl_pw_aff *pwaff)
__isl_overload __isl_give isl_union_map * isl_union_map_from_multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *mupa)
Definition: isl_aff.c:9116
__isl_export __isl_give isl_pw_aff * isl_pw_aff_bind_domain_wrapped_domain(__isl_take isl_pw_aff *pa, __isl_take isl_multi_id *tuple)
__isl_export __isl_give isl_multi_aff * isl_multi_aff_gist(__isl_take isl_multi_aff *maff, __isl_take isl_set *context)
__isl_export __isl_give isl_multi_aff * isl_space_domain_map_multi_aff(__isl_take isl_space *space)
Definition: isl_aff.c:4167
__isl_constructor __isl_give isl_multi_pw_aff * isl_multi_pw_aff_from_multi_aff(__isl_take isl_multi_aff *ma)
Definition: isl_aff.c:7013
__isl_export __isl_give isl_space * isl_pw_aff_get_space(__isl_keep isl_pw_aff *pwaff)
__isl_export __isl_give isl_map * isl_pw_aff_as_map(__isl_take isl_pw_aff *pa)
Definition: isl_aff_map.c:337
__isl_overload __isl_give isl_aff * isl_aff_pullback_multi_aff(__isl_take isl_aff *aff, __isl_take isl_multi_aff *ma)
Definition: isl_aff.c:5981
__isl_export __isl_give isl_pw_aff * isl_pw_aff_neg(__isl_take isl_pw_aff *pwaff)
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_intersect_params(__isl_take isl_union_pw_aff *upa, __isl_take isl_set *set)
__isl_export isl_bool isl_pw_multi_aff_involves_locals(__isl_keep isl_pw_multi_aff *pma)
__isl_overload __isl_give isl_aff * isl_aff_scale_down_val(__isl_take isl_aff *aff, __isl_take isl_val *v)
Definition: isl_aff.c:2062
__isl_give isl_pw_aff * isl_pw_aff_add_dims(__isl_take isl_pw_aff *pwaff, enum isl_dim_type type, unsigned n)
__isl_export __isl_give isl_pw_aff * isl_set_indicator_function(__isl_take isl_set *set)
Definition: isl_aff.c:5692
__isl_overload __isl_give isl_union_pw_aff * isl_union_pw_aff_intersect_domain_space(__isl_take isl_union_pw_aff *upa, __isl_take isl_space *space)
__isl_give isl_aff * isl_aff_copy(__isl_keep isl_aff *aff)
Definition: isl_aff.c:145
__isl_export __isl_give isl_set * isl_pw_aff_gt_set(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3056
__isl_export __isl_give isl_set * isl_multi_pw_aff_bind(__isl_take isl_multi_pw_aff *mpa, __isl_take isl_multi_id *tuple)
__isl_export isl_stat isl_pw_multi_aff_foreach_piece(__isl_keep isl_pw_multi_aff *pma, isl_stat(*fn)(__isl_take isl_set *set, __isl_take isl_multi_aff *maff, void *user), void *user)
isl_size isl_pw_multi_aff_dim(__isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_project_out_map(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_aff.c:4325
__isl_constructor __isl_give isl_multi_pw_aff * isl_multi_pw_aff_from_pw_aff(__isl_take isl_pw_aff *pa)
__isl_constructor __isl_give isl_pw_multi_aff * isl_pw_multi_aff_from_pw_aff(__isl_take isl_pw_aff *pa)
Definition: isl_aff.c:6917
__isl_export __isl_give isl_pw_multi_aff * isl_space_range_map_pw_multi_aff(__isl_take isl_space *space)
Definition: isl_aff.c:4256
__isl_export __isl_give isl_union_set * isl_union_pw_multi_aff_domain(__isl_take isl_union_pw_multi_aff *upma)
__isl_export __isl_give isl_aff * isl_aff_div(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:3438
__isl_export __isl_give isl_aff * isl_aff_floor(__isl_take isl_aff *aff)
Definition: isl_aff.c:1649
__isl_overload __isl_give isl_multi_pw_aff * isl_multi_pw_aff_pullback_pw_multi_aff(__isl_take isl_multi_pw_aff *mpa, __isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_sub(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_bind_domain_wrapped_domain(__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_id *tuple)
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_pullback_multi_pw_aff(__isl_take isl_pw_aff *pa, __isl_take isl_multi_pw_aff *mpa)
Definition: isl_aff.c:7403
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_range_product(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
Definition: isl_aff.c:6501
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_copy(__isl_keep isl_union_pw_multi_aff *upma)
__isl_constructor __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_from_union_pw_aff(__isl_take isl_union_pw_aff *upa)
Definition: isl_aff.c:8419
__isl_export isl_bool isl_union_pw_multi_aff_plain_is_empty(__isl_keep isl_union_pw_multi_aff *upma)
__isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_from_union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff.c:8797
__isl_export __isl_give isl_union_map * isl_union_pw_multi_aff_as_union_map(__isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff_map.c:597
__isl_export __isl_give isl_set * isl_aff_ge_set(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:2419
__isl_overload __isl_give isl_union_pw_aff * isl_union_pw_aff_subtract_domain_union_set(__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset)
isl_ctx * isl_union_pw_multi_aff_get_ctx(__isl_keep isl_union_pw_multi_aff *upma)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_multi_val_on_domain(__isl_take isl_set *domain, __isl_take isl_multi_val *mv)
Definition: isl_aff.c:7789
__isl_give isl_pw_aff * isl_pw_aff_zero_on_domain(__isl_take isl_local_space *ls)
Definition: isl_aff.c:206
__isl_give isl_aff * isl_aff_zero_on_domain(__isl_take isl_local_space *ls)
Definition: isl_aff.c:174
__isl_constructor __isl_give isl_pw_aff * isl_pw_aff_from_aff(__isl_take isl_aff *aff)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_product(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
Definition: isl_aff.c:4755
__isl_give char * isl_multi_union_pw_aff_to_str(__isl_keep isl_multi_union_pw_aff *mupa)
__isl_give isl_union_pw_aff * isl_union_pw_aff_copy(__isl_keep isl_union_pw_aff *upa)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_gist(__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set)
__isl_overload __isl_give isl_aff * isl_aff_zero_on_domain_space(__isl_take isl_space *space)
Definition: isl_aff.c:190
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_intersect_domain_wrapped_domain(__isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset)
__isl_export __isl_give isl_aff * isl_aff_sub(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:1949
__isl_give isl_pw_aff * isl_pw_aff_set_tuple_id(__isl_take isl_pw_aff *pwaff, enum isl_dim_type type, __isl_take isl_id *id)
__isl_export __isl_give isl_union_pw_aff * isl_union_pw_aff_add(__isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2)
__isl_constructor __isl_give isl_multi_pw_aff * isl_multi_pw_aff_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma)
Definition: isl_aff.c:7055
__isl_constructor __isl_give isl_union_pw_aff * isl_union_pw_aff_from_aff(__isl_take isl_aff *aff)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_gist(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_union_set *context)
__isl_constructor __isl_give isl_multi_aff * isl_multi_aff_from_aff(__isl_take isl_aff *aff)
__isl_overload __isl_give isl_aff * isl_aff_mod_val(__isl_take isl_aff *aff, __isl_take isl_val *mod)
Definition: isl_aff.c:1716
__isl_export __isl_give isl_set * isl_aff_gt_set(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:2431
__isl_export __isl_give isl_pw_multi_aff * isl_space_domain_map_pw_multi_aff(__isl_take isl_space *space)
Definition: isl_aff.c:4238
__isl_export __isl_give isl_val * isl_aff_get_constant_val(__isl_keep isl_aff *aff)
Definition: isl_aff.c:761
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_domain_map(__isl_take isl_space *space)
Definition: isl_aff.c:4229
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_add_constant_multi_val(__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_val *mv)
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_scale_down_val(__isl_take isl_pw_aff *pa, __isl_take isl_val *f)
__isl_export __isl_give isl_aff * isl_aff_gist(__isl_take isl_aff *aff, __isl_take isl_set *context)
Definition: isl_aff.c:2245
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_intersect_domain_union_set(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_union_set *uset)
__isl_give char * isl_pw_aff_to_str(__isl_keep isl_pw_aff *pa)
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_empty(__isl_take isl_space *space)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_sub(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
Definition: isl_aff.c:4744
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_from_map(__isl_take isl_map *map)
Definition: isl_aff.c:5568
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_flat_range_product(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
Definition: isl_aff.c:6426
__isl_give isl_space * isl_pw_aff_get_domain_space(__isl_keep isl_pw_aff *pwaff)
__isl_export __isl_give isl_pw_multi_aff * isl_map_as_pw_multi_aff(__isl_take isl_map *map)
Definition: isl_aff.c:5603
__isl_overload __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_intersect_domain_space(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *space)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_ceil(__isl_take isl_pw_aff *pwaff)
Definition: isl_aff.c:3286
__isl_constructor __isl_give isl_union_pw_aff * isl_union_pw_aff_from_pw_aff(__isl_take isl_pw_aff *pa)
__isl_export __isl_give isl_union_set * isl_union_pw_aff_domain(__isl_take isl_union_pw_aff *upa)
__isl_export __isl_give isl_id * isl_pw_multi_aff_get_range_tuple_id(__isl_keep isl_pw_multi_aff *pma)
__isl_constructor __isl_give isl_aff * isl_aff_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_set * isl_multi_pw_aff_as_set(__isl_take isl_multi_pw_aff *mpa)
Definition: isl_aff_map.c:509
__isl_export isl_bool isl_union_pw_multi_aff_involves_locals(__isl_keep isl_union_pw_multi_aff *upma)
isl_ctx * isl_union_pw_aff_get_ctx(__isl_keep isl_union_pw_aff *upa)
__isl_overload __isl_give isl_multi_aff * isl_multi_aff_multi_val_on_domain_space(__isl_take isl_space *space, __isl_take isl_multi_val *mv)
Definition: isl_aff.c:7731
__isl_export __isl_give isl_aff * isl_aff_add(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:1896
__isl_export __isl_give isl_pw_multi_aff * isl_set_as_pw_multi_aff(__isl_take isl_set *set)
Definition: isl_aff.c:5616
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_add_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_range_factor_domain(__isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff.c:9917
__isl_export __isl_give isl_set * isl_pw_aff_lt_set(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3069
__isl_export __isl_give isl_set * isl_aff_eq_set(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:2487
__isl_export isl_bool isl_multi_pw_aff_isa_multi_aff(__isl_keep isl_multi_pw_aff *mpa)
Definition: isl_aff.c:6687
__isl_null isl_pw_multi_aff * isl_pw_multi_aff_free(__isl_take isl_pw_multi_aff *pma)
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_pullback_multi_aff(__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_aff *ma)
__isl_export __isl_give isl_multi_aff * isl_multi_aff_range_map(__isl_take isl_space *space)
Definition: isl_aff.c:4176
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_scale_down_val(__isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v)
__isl_overload __isl_give isl_union_map * isl_union_map_from_union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma)
Definition: isl_aff_map.c:569
__isl_export __isl_give isl_pw_aff * isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3490
__isl_give isl_union_pw_aff * isl_union_pw_aff_val_on_domain(__isl_take isl_union_set *domain, __isl_take isl_val *v)
Definition: isl_aff.c:8385
__isl_export __isl_give isl_aff * isl_aff_ceil(__isl_take isl_aff *aff)
Definition: isl_aff.c:1793
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_mod_val(__isl_take isl_pw_aff *pa, __isl_take isl_val *mod)
Definition: isl_aff.c:1764
__isl_give char * isl_multi_pw_aff_to_str(__isl_keep isl_multi_pw_aff *mpa)
__isl_export __isl_give isl_multi_pw_aff * isl_multi_aff_to_multi_pw_aff(__isl_take isl_multi_aff *ma)
Definition: isl_aff.c:7042
__isl_export __isl_give isl_set * isl_pw_multi_aff_domain(__isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_set * isl_pw_aff_le_set(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3063
__isl_export __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_intersect_params(__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *params)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_coalesce(__isl_take isl_pw_multi_aff *pma)
__isl_overload __isl_give isl_union_pw_aff * isl_union_pw_aff_subtract_domain_space(__isl_take isl_union_pw_aff *upa, __isl_take isl_space *space)
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_from_domain(__isl_take isl_union_set *uset)
Definition: isl_aff.c:6322
__isl_export __isl_give isl_pw_aff * isl_pw_aff_max(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3698
__isl_export __isl_give isl_pw_aff * isl_pw_aff_coalesce(__isl_take isl_pw_aff *pa)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_range_factor_range(__isl_take isl_pw_multi_aff *pma)
Definition: isl_aff.c:4696
__isl_export __isl_give isl_set * isl_pw_multi_aff_as_set(__isl_take isl_pw_multi_aff *pma)
Definition: isl_aff_map.c:421
__isl_export __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_intersect_domain(__isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_union_set *uset)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_copy(__isl_keep isl_pw_multi_aff *pma)
__isl_give char * isl_aff_to_str(__isl_keep isl_aff *aff)
__isl_export __isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_union_add(__isl_take isl_multi_union_pw_aff *mupa1, __isl_take isl_multi_union_pw_aff *mupa2)
__isl_export __isl_give isl_multi_pw_aff * isl_multi_pw_aff_union_add(__isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2)
__isl_export __isl_give isl_multi_union_pw_aff * isl_multi_aff_to_multi_union_pw_aff(__isl_take isl_multi_aff *ma)
Definition: isl_aff.c:8702
__isl_export __isl_give isl_set * isl_multi_pw_aff_domain(__isl_take isl_multi_pw_aff *mpa)
__isl_export __isl_give isl_pw_aff * isl_pw_multi_aff_get_at(__isl_keep isl_pw_multi_aff *pma, int pos)
__isl_export __isl_give isl_set * isl_pw_aff_domain(__isl_take isl_pw_aff *pwaff)
__isl_export __isl_give isl_union_pw_multi_aff * isl_pw_multi_aff_to_union_pw_multi_aff(__isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_flat_range_product(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
Definition: isl_aff.c:6481
__isl_export __isl_give isl_multi_aff * isl_multi_aff_floor(__isl_take isl_multi_aff *ma)
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_from_union_map(__isl_take isl_union_map *umap)
Definition: isl_aff.c:5654
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_drop_dims(__isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_union_pw_aff * isl_union_pw_aff_empty(__isl_take isl_space *space)
__isl_export __isl_give isl_aff * isl_aff_mul(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
Definition: isl_aff.c:3395
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_range_product(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
Definition: isl_aff.c:6411
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_add(__isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2)
Definition: isl_aff.c:4734
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_subtract_domain(__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set)
__isl_overload __isl_give isl_multi_pw_aff * isl_multi_pw_aff_pullback_multi_aff(__isl_take isl_multi_pw_aff *mpa, __isl_take isl_multi_aff *ma)
__isl_overload __isl_give isl_basic_set * isl_aff_bind_id(__isl_take isl_aff *aff, __isl_take isl_id *id)
Definition: isl_aff.c:2949
__isl_give isl_pw_aff * isl_pw_aff_copy(__isl_keep isl_pw_aff *pwaff)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_sub(__isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_subtract_domain(__isl_take isl_pw_aff *pa, __isl_take isl_set *set)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff, __isl_take isl_set *context)
__isl_export __isl_give isl_set * isl_pw_aff_ge_set(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2)
Definition: isl_aff.c:3046
__isl_export __isl_give isl_multi_pw_aff * isl_multi_pw_aff_intersect_params(__isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set)
__isl_give isl_union_pw_multi_aff * isl_union_set_identity_union_pw_multi_aff(__isl_take isl_union_set *uset)
struct isl_union_pw_multi_aff isl_union_pw_multi_aff
Definition: aff_type.h:38
struct isl_union_pw_aff isl_union_pw_aff
Definition: aff_type.h:23
struct isl_multi_aff isl_multi_aff
Definition: aff_type.h:29
struct isl_multi_pw_aff isl_multi_pw_aff
Definition: aff_type.h:43
struct isl_multi_union_pw_aff isl_multi_union_pw_aff
Definition: aff_type.h:46
__isl_export isl_size isl_ast_expr_op_get_n_arg(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:350
__isl_give isl_ast_node * isl_ast_node_copy(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1092
__isl_export __isl_give isl_ast_expr * isl_ast_node_for_get_init(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1383
__isl_export __isl_give isl_ast_node_list * isl_ast_node_block_get_children(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1576
__isl_export __isl_give isl_id * isl_ast_expr_id_get_id(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:300
__isl_export __isl_give isl_ast_node * isl_ast_node_if_get_else_node(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1507
__isl_null isl_ast_expr * isl_ast_expr_free(__isl_take isl_ast_expr *expr)
Definition: isl_ast.c:243
__isl_give char * isl_ast_node_to_str(__isl_keep isl_ast_node *node)
__isl_give isl_ast_expr * isl_ast_expr_address_of(__isl_take isl_ast_expr *expr)
Definition: isl_ast.c:649
__isl_export __isl_give isl_val * isl_ast_expr_int_get_val(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:283
__isl_give isl_ast_expr * isl_ast_expr_get_op_arg(__isl_keep isl_ast_expr *expr, int pos)
Definition: isl_ast.c:377
__isl_export __isl_give isl_ast_node * isl_ast_node_mark_get_node(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1650
isl_ctx * isl_ast_expr_get_ctx(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:271
__isl_export __isl_give isl_ast_expr * isl_ast_node_for_get_inc(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1416
__isl_export __isl_give isl_ast_expr * isl_ast_node_for_get_cond(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1398
__isl_export __isl_give isl_ast_node * isl_ast_node_for_get_body(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1348
__isl_give isl_ast_expr * isl_ast_expr_le(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
Definition: isl_ast.c:780
__isl_give isl_ast_expr * isl_ast_expr_mul(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
Definition: isl_ast.c:710
__isl_export __isl_give isl_ast_expr * isl_ast_expr_op_get_arg(__isl_keep isl_ast_expr *expr, int pos)
Definition: isl_ast.c:366
__isl_give isl_id * isl_ast_expr_get_id(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:313
__isl_export __isl_give isl_ast_expr * isl_ast_node_user_get_expr(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1629
__isl_export __isl_give isl_ast_expr * isl_ast_node_if_get_cond(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1568
__isl_export isl_bool isl_ast_node_for_is_degenerate(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1368
__isl_export __isl_give char * isl_ast_node_to_C_str(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:3923
__isl_export __isl_give isl_id * isl_ast_node_mark_get_id(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1640
__isl_give isl_val * isl_ast_expr_get_val(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:295
__isl_export isl_bool isl_ast_node_if_has_else_node(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1490
__isl_give isl_ast_expr * isl_ast_expr_add(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
Definition: isl_ast.c:694
__isl_export __isl_give isl_ast_expr * isl_ast_node_for_get_iterator(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1375
__isl_give isl_id * isl_ast_node_get_annotation(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1704
__isl_give isl_ast_expr * isl_ast_expr_from_val(__isl_take isl_val *v)
Definition: isl_ast.c:589
__isl_null isl_ast_node * isl_ast_node_free(__isl_take isl_ast_node *node)
Definition: isl_ast.c:1180
__isl_give char * isl_ast_expr_to_str(__isl_keep isl_ast_expr *expr)
__isl_export __isl_give isl_ast_node * isl_ast_node_if_get_then_node(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:1472
__isl_give isl_ast_expr * isl_ast_expr_eq(__isl_take isl_ast_expr *expr1, __isl_take isl_ast_expr *expr2)
Definition: isl_ast.c:812
isl_ctx * isl_ast_node_get_ctx(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:902
__isl_give isl_ast_expr * isl_ast_expr_copy(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:195
__isl_export __isl_give char * isl_ast_expr_to_C_str(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:3902
__isl_overload __isl_give isl_ast_expr * isl_ast_build_access_from_pw_multi_aff(__isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma)
__isl_give isl_ast_build * isl_ast_build_copy(__isl_keep isl_ast_build *build)
__isl_export __isl_give isl_ast_build * isl_ast_build_from_context(__isl_take isl_set *set)
__isl_export __isl_give isl_ast_node * isl_ast_build_node_from_schedule_map(__isl_keep isl_ast_build *build, __isl_take isl_union_map *schedule)
__isl_overload __isl_give isl_ast_expr * isl_ast_build_expr_from_set(__isl_keep isl_ast_build *build, __isl_take isl_set *set)
__isl_overload __isl_give isl_ast_expr * isl_ast_build_access_from_multi_pw_aff(__isl_keep isl_ast_build *build, __isl_take isl_multi_pw_aff *mpa)
__isl_overload __isl_give isl_ast_expr * isl_ast_build_call_from_pw_multi_aff(__isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma)
__isl_overload __isl_give isl_ast_expr * isl_ast_build_expr_from_pw_aff(__isl_keep isl_ast_build *build, __isl_take isl_pw_aff *pa)
__isl_null isl_ast_build * isl_ast_build_free(__isl_take isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_restrict(__isl_take isl_ast_build *build, __isl_take isl_set *set)
__isl_overload __isl_give isl_ast_node * isl_ast_build_node_from_schedule(__isl_keep isl_ast_build *build, __isl_take isl_schedule *schedule)
__isl_constructor __isl_give isl_ast_build * isl_ast_build_alloc(isl_ctx *ctx)
__isl_export __isl_give isl_ast_build * isl_ast_build_set_at_each_domain(__isl_take isl_ast_build *build, __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node, __isl_keep isl_ast_build *build, void *user), void *user)
__isl_export __isl_give isl_union_map * isl_ast_build_get_schedule(__isl_keep isl_ast_build *build)
isl_ctx * isl_ast_build_get_ctx(__isl_keep isl_ast_build *build)
__isl_overload __isl_give isl_ast_expr * isl_ast_build_call_from_multi_pw_aff(__isl_keep isl_ast_build *build, __isl_take isl_multi_pw_aff *mpa)
@ isl_ast_expr_id
Definition: ast_type.h:78
@ isl_ast_expr_int
Definition: ast_type.h:79
@ isl_ast_expr_op
Definition: ast_type.h:77
@ isl_ast_loop_atomic
Definition: ast_type.h:94
@ isl_ast_loop_separate
Definition: ast_type.h:96
@ isl_ast_loop_unroll
Definition: ast_type.h:95
@ isl_ast_loop_default
Definition: ast_type.h:93
@ isl_ast_node_block
Definition: ast_type.h:86
@ isl_ast_node_for
Definition: ast_type.h:84
@ isl_ast_node_mark
Definition: ast_type.h:87
@ isl_ast_node_if
Definition: ast_type.h:85
@ isl_ast_node_user
Definition: ast_type.h:88
@ isl_ast_expr_op_member
Definition: ast_type.h:42
@ isl_ast_expr_op_gt
Definition: ast_type.h:39
@ isl_ast_expr_op_minus
Definition: ast_type.h:24
@ isl_ast_expr_op_pdiv_r
Definition: ast_type.h:31
@ isl_ast_expr_op_sub
Definition: ast_type.h:26
@ isl_ast_expr_op_min
Definition: ast_type.h:23
@ isl_ast_expr_op_cond
Definition: ast_type.h:33
@ isl_ast_expr_op_and_then
Definition: ast_type.h:19
@ isl_ast_expr_op_fdiv_q
Definition: ast_type.h:29
@ isl_ast_expr_op_call
Definition: ast_type.h:40
@ isl_ast_expr_op_le
Definition: ast_type.h:36
@ isl_ast_expr_op_ge
Definition: ast_type.h:38
@ isl_ast_expr_op_address_of
Definition: ast_type.h:43
@ isl_ast_expr_op_lt
Definition: ast_type.h:37
@ isl_ast_expr_op_or
Definition: ast_type.h:20
@ isl_ast_expr_op_div
Definition: ast_type.h:28
@ isl_ast_expr_op_select
Definition: ast_type.h:34
@ isl_ast_expr_op_and
Definition: ast_type.h:18
@ isl_ast_expr_op_mul
Definition: ast_type.h:27
@ isl_ast_expr_op_add
Definition: ast_type.h:25
@ isl_ast_expr_op_max
Definition: ast_type.h:22
@ isl_ast_expr_op_access
Definition: ast_type.h:41
@ isl_ast_expr_op_zdiv_r
Definition: ast_type.h:32
@ isl_ast_expr_op_eq
Definition: ast_type.h:35
@ isl_ast_expr_op_pdiv_q
Definition: ast_type.h:30
@ isl_ast_expr_op_or_else
Definition: ast_type.h:21
__isl_give isl_aff_list * release()
aff_list & operator=(aff_list obj)
isl::aff_list insert(unsigned int pos, isl::aff el) const
friend aff_list manage(__isl_take isl_aff_list *ptr)
isl_aff_list * ptr
isl::aff_list add(isl::aff el) const
stat foreach(const std::function< stat(isl::aff)> &fn) const
isl::aff_list drop(unsigned int first, unsigned int n) const
bool is_null() const
class size size() const
isl::ctx ctx() const
__isl_keep isl_aff_list * get() const
isl::aff_list concat(isl::aff_list list2) const
isl::aff at(int index) const
isl::aff get_at(int index) const
isl::aff_list clear() const
__isl_give isl_aff_list * copy() const &
isl::aff sub(isl::aff aff2) const
isl::set gt_set(isl::aff aff2) const
boolean isa_multi_aff() const
isl::union_pw_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const
isl::aff at(int pos) const
isl::aff pullback(isl::multi_aff ma) const
isl::ctx ctx() const
boolean plain_is_equal(const isl::multi_aff &multi2) const
isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const
isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const
isl::aff mod(isl::val mod) const
stat foreach_piece(const std::function< stat(isl::set, isl::aff)> &fn) const
isl::multi_aff set_aff(int pos, const isl::aff &el) const
class size size() const
isl_aff * ptr
isl::multi_val max_multi_val() const
isl::id dim_id(isl::dim type, unsigned int pos) const
isl::multi_aff product(const isl::multi_aff &multi2) const
isl::pw_aff tdiv_r(const isl::pw_aff &pa2) const
isl::val constant_val() const
isl::val get_denominator_val() const
__isl_keep isl_aff * get() const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
isl::pw_multi_aff_list pw_multi_aff_list() const
isl::multi_aff set_at(int pos, const isl::aff &el) const
isl::multi_aff range_product(const isl::multi_aff &multi2) const
isl::multi_val min_multi_val() const
isl::set as_set() const
isl::aff_list to_list() const
isl::aff ceil() const
isl::aff div(isl::aff aff2) const
isl::val eval(isl::point pnt) const
boolean plain_is_empty() const
__isl_give isl_aff * copy() const &
isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::pw_aff tdiv_q(const isl::pw_aff &pa2) const
static isl::aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos)
isl::aff gist(isl::set context) const
isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const
isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
isl::aff add(isl::aff aff2) const
isl::pw_multi_aff as_pw_multi_aff() const
isl::multi_aff reset_tuple_id(isl::dim type) const
isl::union_pw_aff to_union_pw_aff() const
isl::val get_constant_val() const
isl::basic_set bind(isl::id id) const
isl::multi_aff as_multi_aff() const
class size n_piece() const
isl::pw_aff intersect_params(const isl::set &set) const
isl::multi_aff reset_range_tuple_id() const
__isl_give isl_aff * release()
isl::space space() const
isl::set le_set(isl::aff aff2) const
isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const
isl::aff add_constant(isl::val v) const
friend aff manage_copy(__isl_keep isl_aff *ptr)
isl::pw_aff bind_domain_wrapped_domain(const isl::multi_id &tuple) const
isl::aff set_constant_si(int v) const
aff & operator=(aff obj)
isl::pw_aff insert_domain(const isl::space &domain) const
isl::aff add_constant_si(int v) const
isl::multi_union_pw_aff to_multi_union_pw_aff() const
isl::aff as_aff() const
isl::multi_aff flat_range_product(const isl::multi_aff &multi2) const
isl::set ge_set(isl::aff aff2) const
isl::pw_aff coalesce() const
isl::aff floor() const
boolean involves_locals() const
isl::set ne_set(isl::aff aff2) const
isl::aff_list list() const
isl::pw_aff add_dims(isl::dim type, unsigned int n) const
isl::multi_aff identity() const
isl::pw_multi_aff range_factor_range() const
class size dim(isl::dim type) const
isl::union_pw_multi_aff to_union_pw_multi_aff() const
isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const
friend aff manage(__isl_take isl_aff *ptr)
isl::multi_pw_aff to_multi_pw_aff() const
stat foreach_pw_aff(const std::function< stat(isl::pw_aff)> &fn) const
static isl::aff zero_on_domain(isl::space space)
isl::multi_aff set_range_tuple(const isl::id &id) const
isl::set domain() const
boolean involves_nan() const
isl::union_map as_union_map() const
isl::pw_aff bind_domain(const isl::multi_id &tuple) const
boolean involves_param(const isl::id &id) const
isl::space domain_space() const
isl::aff mul(isl::aff aff2) const
isl::id tuple_id(isl::dim type) const
isl::aff neg() const
boolean has_range_tuple_id() const
isl::set lt_set(isl::aff aff2) const
isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const
isl::map as_map() const
isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const
isl::aff unbind_params_insert_domain(isl::multi_id domain) const
isl::pw_aff set_tuple_id(isl::dim type, const isl::id &id) const
isl::val denominator_val() const
boolean is_equal(const isl::pw_aff &pa2) const
isl::aff scale(isl::val v) const
isl::pw_aff cond(const isl::pw_aff &pwaff_true, const isl::pw_aff &pwaff_false) const
boolean isa_aff() const
boolean is_cst() const
isl::multi_val constant_multi_val() const
boolean isa_pw_multi_aff() const
isl::pw_multi_aff range_factor_domain() const
isl::pw_aff intersect_domain(const isl::set &set) const
isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const
bool is_null() const
isl::pw_aff subtract_domain(const isl::set &set) const
isl::pw_multi_aff to_pw_multi_aff() const
isl::id range_tuple_id() const
isl::aff scale_down(isl::val v) const
isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
isl::set eq_set(isl::aff aff2) const
isl::ast_expr expr_from(isl::pw_aff pa) const
isl::ast_expr call_from(isl::multi_pw_aff mpa) const
bool is_null() const
friend ast_build manage_copy(__isl_keep isl_ast_build *ptr)
isl::union_map get_schedule() const
isl::ast_node node_from(isl::schedule schedule) const
static isl::ast_build from_context(isl::set set)
friend ast_build manage(__isl_take isl_ast_build *ptr)
__isl_keep isl_ast_build * get() const
ast_build & operator=(ast_build obj)
isl_ast_build * ptr
std::shared_ptr< at_each_domain_data > at_each_domain_data
isl::ast_build set_at_each_domain(const std::function< isl::ast_node(isl::ast_node, isl::ast_build)> &fn) const
__isl_give isl_ast_build * copy() const &
isl::ast_expr access_from(isl::multi_pw_aff mpa) const
__isl_give isl_ast_build * release()
isl::union_map schedule() const
static isl_ast_node * at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2)
ast_build & copy_callbacks(const ast_build &obj)
isl::ast_node node_from_schedule_map(isl::union_map schedule) const
isl::ast_build restrict(isl::set set) const
isl::ctx ctx() const
void set_at_each_domain_data(const std::function< isl::ast_node(isl::ast_node, isl::ast_build)> &fn)
isl::ctx ctx() const
isl::id get_id() const
isl::id id() const
ast_expr_id & operator=(ast_expr_id obj)
isl::val get_val() const
isl::ctx ctx() const
isl::val val() const
ast_expr_int & operator=(ast_expr_int obj)
ast_expr_op_access & operator=(ast_expr_op_access obj)
isl::ctx ctx() const
ast_expr_op_add & operator=(ast_expr_op_add obj)
ast_expr_op_address_of & operator=(ast_expr_op_address_of obj)
ast_expr_op_and_then & operator=(ast_expr_op_and_then obj)
ast_expr_op_and & operator=(ast_expr_op_and obj)
isl::ctx ctx() const
ast_expr_op_call & operator=(ast_expr_op_call obj)
ast_expr_op_cond & operator=(ast_expr_op_cond obj)
ast_expr_op_div & operator=(ast_expr_op_div obj)
isl::ctx ctx() const
isl::ctx ctx() const
ast_expr_op_eq & operator=(ast_expr_op_eq obj)
ast_expr_op_fdiv_q & operator=(ast_expr_op_fdiv_q obj)
ast_expr_op_ge & operator=(ast_expr_op_ge obj)
isl::ctx ctx() const
ast_expr_op_gt & operator=(ast_expr_op_gt obj)
isl::ctx ctx() const
ast_expr_op_le & operator=(ast_expr_op_le obj)
isl::ctx ctx() const
ast_expr_op_lt & operator=(ast_expr_op_lt obj)
isl::ctx ctx() const
ast_expr_op_max & operator=(ast_expr_op_max obj)
isl::ctx ctx() const
ast_expr_op_member & operator=(ast_expr_op_member obj)
isl::ctx ctx() const
ast_expr_op_min & operator=(ast_expr_op_min obj)
ast_expr_op_minus & operator=(ast_expr_op_minus obj)
isl::ctx ctx() const
ast_expr_op_mul & operator=(ast_expr_op_mul obj)
ast_expr_op_or_else & operator=(ast_expr_op_or_else obj)
isl::ctx ctx() const
ast_expr_op_or & operator=(ast_expr_op_or obj)
ast_expr_op_pdiv_q & operator=(ast_expr_op_pdiv_q obj)
ast_expr_op_pdiv_r & operator=(ast_expr_op_pdiv_r obj)
ast_expr_op_select & operator=(ast_expr_op_select obj)
isl::ctx ctx() const
ast_expr_op_sub & operator=(ast_expr_op_sub obj)
ast_expr_op_zdiv_r & operator=(ast_expr_op_zdiv_r obj)
isl::ctx ctx() const
isl::ast_expr get_arg(int pos) const
class size n_arg() const
isl::ast_expr arg(int pos) const
class size get_n_arg() const
ast_expr_op & operator=(ast_expr_op obj)
friend boolean ast_expr::isa() const
boolean isa_type(T subtype) const
friend ast_expr_op ast_expr::as() const
isl::ast_expr le(isl::ast_expr expr2) const
isl::ast_expr add(isl::ast_expr expr2) const
friend ast_expr manage(__isl_take isl_ast_expr *ptr)
static isl::ast_expr from_val(isl::val v)
isl::ast_expr op_arg(int pos) const
isl::ast_expr mul(isl::ast_expr expr2) const
ast_expr & operator=(ast_expr obj)
isl::id get_id() const
isl::ctx ctx() const
isl::ast_expr get_op_arg(int pos) const
isl::id id() const
boolean isa() const
isl_ast_expr * ptr
isl::val val() const
std::string to_C_str() const
bool is_null() const
__isl_give isl_ast_expr * release()
isl::ast_expr eq(isl::ast_expr expr2) const
boolean isa_type(T subtype) const
__isl_keep isl_ast_expr * get() const
isl::ast_expr address_of() const
isl::val get_val() const
__isl_give isl_ast_expr * copy() const &
isl::ast_node_list children() const
isl::ast_node_list get_children() const
ast_node_block & operator=(ast_node_block obj)
isl::ctx ctx() const
isl::ast_expr get_cond() const
isl::ast_node body() const
boolean is_degenerate() const
isl::ast_expr init() const
isl::ast_node get_body() const
ast_node_for & operator=(ast_node_for obj)
isl::ast_expr get_inc() const
isl::ast_expr cond() const
isl::ctx ctx() const
isl::ast_expr inc() const
isl::ast_expr iterator() const
isl::ast_expr get_iterator() const
isl::ast_expr get_init() const
isl::ast_node get_else_node() const
ast_node_if & operator=(ast_node_if obj)
isl::ast_expr get_cond() const
isl::ctx ctx() const
isl::ast_node get_then_node() const
isl::ast_node then_node() const
boolean has_else_node() const
isl::ast_node else_node() const
isl::ast_expr cond() const
class size size() const
isl_ast_node_list * ptr
friend ast_node_list manage(__isl_take isl_ast_node_list *ptr)
isl::ast_node_list drop(unsigned int first, unsigned int n) const
__isl_give isl_ast_node_list * release()
stat foreach(const std::function< stat(isl::ast_node)> &fn) const
isl::ast_node at(int index) const
__isl_keep isl_ast_node_list * get() const
isl::ast_node_list clear() const
isl::ast_node_list insert(unsigned int pos, isl::ast_node el) const
isl::ast_node_list concat(isl::ast_node_list list2) const
isl::ast_node get_at(int index) const
isl::ast_node_list add(isl::ast_node el) const
ast_node_list & operator=(ast_node_list obj)
__isl_give isl_ast_node_list * copy() const &
isl::ctx ctx() const
isl::ast_node node() const
isl::ctx ctx() const
isl::id get_id() const
isl::ast_node get_node() const
ast_node_mark & operator=(ast_node_mark obj)
isl::id id() const
isl::ctx ctx() const
isl::ast_expr get_expr() const
isl::ast_expr expr() const
ast_node_user & operator=(ast_node_user obj)
isl::id get_annotation() const
isl::ctx ctx() const
boolean isa() const
isl_ast_node * ptr
boolean isa_type(T subtype) const
friend ast_node manage(__isl_take isl_ast_node *ptr)
__isl_keep isl_ast_node * get() const
isl::id annotation() const
std::string to_C_str() const
ast_node & operator=(ast_node obj)
__isl_give isl_ast_node * copy() const &
isl::ast_node_list to_list() const
bool is_null() const
__isl_give isl_ast_node * release()
isl::basic_map get_at(int index) const
isl::ctx ctx() const
class size size() const
stat foreach(const std::function< stat(isl::basic_map)> &fn) const
__isl_give isl_basic_map_list * release()
isl::basic_map_list insert(unsigned int pos, isl::basic_map el) const
isl::basic_map_list concat(isl::basic_map_list list2) const
isl::basic_map_list add(isl::basic_map el) const
__isl_give isl_basic_map_list * copy() const &
isl::basic_map_list drop(unsigned int first, unsigned int n) const
isl_basic_map_list * ptr
friend basic_map_list manage(__isl_take isl_basic_map_list *ptr)
isl::basic_map at(int index) const
__isl_keep isl_basic_map_list * get() const
basic_map_list & operator=(basic_map_list obj)
isl::basic_map_list clear() const
isl::basic_map flatten_range() const
isl::space space() const
isl::map intersect_domain_factor_range(const isl::map &factor) const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
__isl_give isl_basic_map * copy() const &
isl::basic_map fix_si(isl::dim type, unsigned int pos, int value) const
isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const
class size range_tuple_dim() const
boolean has_range_tuple_id() const
class size dim(isl::dim type) const
isl::map uncurry() const
isl::map lower_bound(const isl::multi_pw_aff &lower) const
isl::basic_map detect_equalities() const
isl::map domain_product(const isl::map &map2) const
isl::union_pw_multi_aff as_union_pw_multi_aff() const
isl::basic_map_list basic_map_list() const
isl::map range_factor_range() const
isl::map domain_factor_range() const
isl::map align_params(const isl::space &model) const
boolean is_injective() const
static isl::basic_map universe(isl::space space)
isl::basic_map fix_val(isl::dim type, unsigned int pos, isl::val v) const
isl::map eq_at(const isl::multi_pw_aff &mpa) const
isl::map intersect_range_factor_range(const isl::map &factor) const
isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
isl::union_map fixed_power(const isl::val &exp) const
isl::id tuple_id(isl::dim type) const
isl::map set_range_tuple(const isl::id &id) const
isl::union_map subtract_range(const isl::union_set &dom) const
isl::basic_set deltas() const
static isl::basic_map from_aff(isl::aff aff)
isl::id range_tuple_id() const
isl::basic_map intersect_range(isl::basic_set bset) const
isl::map extract_map(const isl::space &space) const
boolean is_empty() const
isl::basic_map reverse() const
isl::set bind_domain(const isl::multi_id &tuple) const
isl::map lex_lt_at(const isl::multi_pw_aff &mpa) const
isl::map lex_ge_at(const isl::multi_pw_aff &mpa) const
isl::map domain_factor_domain() const
boolean has_tuple_id(isl::dim type) const
isl::map domain_map() const
isl::ctx ctx() const
isl::union_map compute_divs() const
__isl_keep isl_basic_map * get() const
isl::pw_multi_aff as_pw_multi_aff() const
isl::map unite(isl::basic_map bmap2) const
isl::map intersect_range_factor_domain(const isl::map &factor) const
isl::basic_map affine_hull() const
boolean has_tuple_name(isl::dim type) const
isl::multi_pw_aff min_multi_pw_aff() const
isl::basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
isl::map set_domain_tuple(const isl::id &id) const
isl::basic_set domain() const
isl::map upper_bound(const isl::multi_pw_aff &upper) const
isl::basic_map apply_range(isl::basic_map bmap2) const
isl::basic_map intersect_domain(isl::basic_set bset) const
isl::union_map gist_range(const isl::union_set &uset) const
isl::map range_product(const isl::map &map2) const
boolean has_equal_space(const isl::map &map2) const
isl::map subtract(const isl::map &map2) const
isl::basic_map gist(isl::basic_map context) const
isl::map range_factor_domain() const
isl::map project_out_all_params() const
isl::multi_pw_aff max_multi_pw_aff() const
isl::map lexmax() const
stat foreach_map(const std::function< stat(isl::map)> &fn) const
isl::pw_aff dim_min(int pos) const
boolean is_strict_subset(const isl::map &map2) const
isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const
isl::set range() const
isl::id domain_tuple_id() const
isl::map coalesce() const
isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const
boolean can_curry() const
isl::map add_dims(isl::dim type, unsigned int n) const
class size n_basic_map() const
bool is_null() const
isl::map zip() const
isl::map floordiv_val(const isl::val &d) const
isl::map range_reverse() const
isl::set bind_range(const isl::multi_id &tuple) const
boolean is_single_valued() const
isl::map lexmin() const
isl::basic_map apply_domain(isl::basic_map bmap2) const
isl::basic_map flatten_domain() const
isl::set wrap() const
isl::map product(const isl::map &map2) const
boolean has_domain_tuple_id() const
isl::pw_multi_aff lexmax_pw_multi_aff() const
isl::map range_map() const
boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::basic_map_list to_list() const
isl::union_map to_union_map() const
boolean is_equal(const isl::basic_map &bmap2) const
isl::map_list map_list() const
isl::map factor_domain() const
isl::map set_tuple_id(isl::dim type, const isl::id &id) const
stat foreach_basic_map(const std::function< stat(isl::basic_map)> &fn) const
boolean every_map(const std::function< boolean(isl::map)> &test) const
isl::map flat_range_product(const isl::map &map2) const
isl::map preimage_domain(const isl::multi_aff &ma) const
boolean isa_map() const
boolean is_disjoint(const isl::map &map2) const
isl::pw_aff dim_max(int pos) const
__isl_give isl_basic_map * release()
isl::map lex_gt_at(const isl::multi_pw_aff &mpa) const
isl::basic_map flatten() const
isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
boolean is_subset(const isl::basic_map &bmap2) const
isl::map intersect_domain_factor_domain(const isl::map &factor) const
isl::basic_map intersect(isl::basic_map bmap2) const
class size domain_tuple_dim() const
isl::basic_map sample() const
static isl::basic_map equal(isl::space space, unsigned int n_equal)
isl::map curry() const
isl::fixed_box range_lattice_tile() const
isl::basic_map polyhedral_hull() const
isl::map intersect_params(const isl::set &params) const
basic_map & operator=(basic_map obj)
boolean is_bijective() const
isl::map add_constraint(const isl::constraint &constraint) const
isl::pw_multi_aff lexmin_pw_multi_aff() const
isl::union_map subtract_domain(const isl::union_set &dom) const
isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const
friend basic_map manage(__isl_take isl_basic_map *ptr)
isl::map complement() const
isl::fixed_box range_simple_fixed_box_hull() const
isl::map as_map() const
isl::basic_map unshifted_simple_hull() const
isl::map preimage_range(const isl::multi_aff &ma) const
isl::map lex_le_at(const isl::multi_pw_aff &mpa) const
static isl::basic_map from_domain_and_range(isl::basic_set domain, isl::basic_set range)
isl::map gist_domain(const isl::set &context) const
isl_basic_map * ptr
isl::map factor_range() const
isl::map gist_params(const isl::set &context) const
isl::set params() const
isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
isl::map sum(const isl::map &map2) const
isl::basic_set_list drop(unsigned int first, unsigned int n) const
isl::basic_set get_at(int index) const
isl::basic_set_list clear() const
isl_basic_set_list * ptr
class size size() const
__isl_keep isl_basic_set_list * get() const
__isl_give isl_basic_set_list * release()
isl::basic_set_list concat(isl::basic_set_list list2) const
basic_set_list & operator=(basic_set_list obj)
isl::basic_set_list add(isl::basic_set el) const
isl::ctx ctx() const
__isl_give isl_basic_set_list * copy() const &
stat foreach(const std::function< stat(isl::basic_set)> &fn) const
isl::basic_set_list insert(unsigned int pos, isl::basic_set el) const
isl::basic_set at(int index) const
friend basic_set_list manage(__isl_take isl_basic_set_list *ptr)
isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const
stat foreach_point(const std::function< stat(isl::point)> &fn) const
isl::pw_aff dim_min(int pos) const
boolean has_equal_space(const isl::set &set2) const
isl_basic_set * ptr
boolean is_subset(const isl::basic_set &bset2) const
isl::basic_set intersect_params(isl::basic_set bset2) const
isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const
isl::set lower_bound(const isl::multi_pw_aff &lower) const
stat foreach_basic_set(const std::function< stat(isl::basic_set)> &fn) const
isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
isl::basic_set sample() const
isl::val min_val(const isl::aff &obj) const
isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const
boolean is_empty() const
boolean is_strict_subset(const isl::set &set2) const
boolean is_disjoint(const isl::set &set2) const
std::string tuple_name() const
class size n_basic_set() const
isl::set unite(isl::basic_set bset2) const
isl::set remove_redundancies() const
isl::basic_set simple_hull() const
isl::set subtract(const isl::set &set2) const
isl::val dim_min_val(int pos) const
isl::set_list set_list() const
isl::multi_pw_aff min_multi_pw_aff() const
isl::pw_aff indicator_function() const
friend basic_set manage(__isl_take isl_basic_set *ptr)
isl::id dim_id(isl::dim type, unsigned int pos) const
boolean contains(const isl::space &space) const
boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::space get_space() const
isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const
basic_set & operator=(basic_set obj)
isl::val dim_max_val(int pos) const
static isl::basic_set universe(isl::space space)
isl::map unwrap() const
isl::set as_set() const
boolean is_params() const
isl::map insert_domain(const isl::space &domain) const
isl::basic_set unshifted_simple_hull() const
isl::set to_set() const
isl::set extract_set(const isl::space &space) const
isl::pw_multi_aff lexmax_pw_multi_aff() const
isl::id tuple_id() const
isl::set coalesce() const
isl::set align_params(const isl::space &model) const
isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::union_set compute_divs() const
isl::pw_multi_aff as_pw_multi_aff() const
class size tuple_dim() const
isl::set upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
std::string dim_name(isl::dim type, unsigned int pos) const
isl::set upper_bound(const isl::multi_pw_aff &upper) const
isl::basic_set params() const
isl::set add_dims(isl::dim type, unsigned int n) const
isl::set unbind_params(const isl::multi_id &tuple) const
isl::aff get_div(int pos) const
isl::basic_set detect_equalities() const
boolean is_equal(const isl::basic_set &bset2) const
isl::set set_tuple_id(const isl::id &id) const
isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const
isl::aff div(int pos) const
isl::basic_set intersect(isl::basic_set bset2) const
isl::multi_val plain_multi_val_if_fixed() const
boolean every_set(const std::function< boolean(isl::set)> &test) const
bool is_null() const
isl::pw_multi_aff lexmin_pw_multi_aff() const
isl::union_set to_union_set() const
isl::map identity() const
__isl_keep isl_basic_set * get() const
isl::set gist_params(const isl::set &context) const
isl::set lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
isl::basic_set_list to_list() const
isl::set reset_tuple_id() const
int find_dim_by_id(isl::dim type, const isl::id &id) const
isl::set remove_divs() const
isl::pw_aff dim_max(int pos) const
isl::set product(const isl::set &set2) const
isl::set project_out_param(const isl::id &id) const
isl::basic_set gist(isl::basic_set context) const
class size dim(isl::dim type) const
__isl_give isl_basic_set * copy() const &
isl::set lexmin() const
isl::basic_set_list basic_set_list() const
isl::set preimage(const isl::multi_aff &ma) const
isl::basic_set fix_val(isl::dim type, unsigned int pos, isl::val v) const
isl::set bind(const isl::multi_id &tuple) const
isl::fixed_box simple_fixed_box_hull() const
isl::set set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const
isl::map unbind_params_insert_domain(const isl::multi_id &domain) const
isl::set project_out_all_params() const
isl::basic_set affine_hull() const
isl::set complement() const
isl::basic_set polyhedral_hull() const
boolean involves_locals() const
isl::point sample_point() const
isl::union_pw_multi_aff identity_union_pw_multi_aff() const
boolean isa_set() const
isl::basic_set flatten() const
isl::basic_set apply(isl::basic_map bmap) const
isl::set add_constraint(const isl::constraint &constraint) const
isl::val stride(int pos) const
isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
stat foreach_set(const std::function< stat(isl::set)> &fn) const
boolean is_wrapping() const
isl::space space() const
__isl_give isl_basic_set * release()
boolean is_singleton() const
boolean is_bounded() const
isl::ctx ctx() const
isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const
isl::map translation() const
isl::val max_val(const isl::aff &obj) const
isl::multi_pw_aff max_multi_pw_aff() const
isl::basic_set convex_hull() const
isl::set lexmax() const
boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
std::shared_ptr< checker > check
boolean operator!() const
boolean(bool val)
static boolean error()
bool is_true() const
isl_bool release()
friend boolean manage(isl_bool val)
bool is_false() const
boolean negate()
boolean(isl_bool val)
bool is_error() const
__isl_give isl_constraint * copy() const &
isl::ctx ctx() const
isl::constraint set_constant_si(int v) const
constraint & operator=(constraint obj)
static isl::constraint alloc_inequality(isl::local_space ls)
friend constraint manage(__isl_take isl_constraint *ptr)
isl::constraint set_coefficient_si(isl::dim type, int pos, int v) const
__isl_give isl_constraint * release()
isl_constraint * ptr
static isl::constraint alloc_equality(isl::local_space ls)
bool is_null() const
__isl_keep isl_constraint * get() const
isl::constraint set_constant_val(isl::val v) const
isl_ctx * release()
isl_ctx * ptr
isl_ctx * get()
ctx(isl_ctx *ctx)
fixed_box & operator=(fixed_box obj)
__isl_give isl_fixed_box * copy() const &
isl::space get_space() const
isl::multi_aff offset() const
isl::multi_val size() const
bool is_null() const
isl_fixed_box * ptr
isl::ctx ctx() const
__isl_give isl_fixed_box * release()
isl::multi_val get_size() const
isl::multi_aff get_offset() const
isl::space space() const
boolean is_valid() const
__isl_keep isl_fixed_box * get() const
friend fixed_box manage(__isl_take isl_fixed_box *ptr)
bool is_null() const
id_list & operator=(id_list obj)
isl::id get_at(int index) const
isl_id_list * ptr
__isl_keep isl_id_list * get() const
__isl_give isl_id_list * release()
isl::id_list concat(isl::id_list list2) const
isl::id at(int index) const
isl::id_list insert(unsigned int pos, isl::id el) const
isl::id_list drop(unsigned int first, unsigned int n) const
isl::id_list clear() const
isl::id_list add(isl::id el) const
class size size() const
__isl_give isl_id_list * copy() const &
isl::ctx ctx() const
friend id_list manage(__isl_take isl_id_list *ptr)
stat foreach(const std::function< stat(isl::id)> &fn) const
__isl_keep isl_id_to_ast_expr * get() const
__isl_give isl_id_to_ast_expr * copy() const &
static isl::id_to_ast_expr alloc(isl::ctx ctx, int min_size)
friend id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr)
isl::id_to_ast_expr set(isl::id key, isl::ast_expr val) const
id_to_ast_expr & operator=(id_to_ast_expr obj)
isl::ctx ctx() const
__isl_give isl_id_to_ast_expr * release()
isl_id_to_ast_expr * ptr
std::string name() const
friend id manage(__isl_take isl_id *ptr)
void * user() const
__isl_give isl_id * release()
isl::id_list to_list() const
isl::ctx ctx() const
__isl_give isl_id * copy() const &
id & operator=(id obj)
isl_id * ptr
bool is_null() const
std::string get_name() const
void * get_user() const
__isl_keep isl_id * get() const
static isl::id alloc(isl::ctx ctx, const std::string &name, void *user)
__isl_keep isl_local_space * get() const
__isl_give isl_local_space * copy() const &
__isl_give isl_local_space * release()
isl_local_space * ptr
isl::ctx ctx() const
local_space & operator=(local_space obj)
isl::map_list drop(unsigned int first, unsigned int n) const
isl::ctx ctx() const
__isl_give isl_map_list * copy() const &
isl::map at(int index) const
isl::map_list add(isl::map el) const
__isl_keep isl_map_list * get() const
map_list & operator=(map_list obj)
isl::map get_at(int index) const
stat foreach(const std::function< stat(isl::map)> &fn) const
class size size() const
isl::map_list clear() const
friend map_list manage(__isl_take isl_map_list *ptr)
isl_map_list * ptr
isl::map_list concat(isl::map_list list2) const
bool is_null() const
__isl_give isl_map_list * release()
isl::map_list insert(unsigned int pos, isl::map el) const
isl::map factor_range() const
isl::map add_constraint(isl::constraint constraint) const
isl::map domain_product(isl::map map2) const
isl::map intersect(isl::map map2) const
isl::basic_map_list get_basic_map_list() const
isl::map align_params(isl::space model) const
isl::id get_range_tuple_id() const
isl::map detect_equalities() const
isl::map product(isl::map map2) const
isl::map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
isl::map gist(isl::map context) const
static isl::map universe(isl::space space)
isl_map * ptr
isl::multi_pw_aff min_multi_pw_aff() const
isl::map intersect_params(isl::set params) const
isl::id get_tuple_id(isl::dim type) const
isl::map reverse() const
boolean is_subset(const isl::map &map2) const
isl::set deltas() const
class size domain_tuple_dim() const
friend map manage(__isl_take isl_map *ptr)
isl::map lex_lt_at(isl::multi_pw_aff mpa) const
isl::map gist_domain(isl::set context) const
class size range_tuple_dim() const
isl::union_map subtract_domain(const isl::union_set &dom) const
boolean is_disjoint(const isl::map &map2) const
isl::map as_map() const
isl::map lex_ge_at(isl::multi_pw_aff mpa) const
isl::fixed_box range_simple_fixed_box_hull() const
isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const
class size n_basic_map() const
isl::map set_tuple_id(isl::dim type, isl::id id) const
isl::map fix_si(isl::dim type, unsigned int pos, int value) const
isl::set range() const
isl::map lex_le_at(isl::multi_pw_aff mpa) const
isl::id range_tuple_id() const
isl::map eq_at(isl::multi_pw_aff mpa) const
isl::map floordiv_val(isl::val d) const
isl::set wrap() const
isl::union_map gist_range(const isl::union_set &uset) const
isl::fixed_box get_range_simple_fixed_box_hull() const
boolean can_curry() const
isl::map range_factor_domain() const
isl::pw_multi_aff as_pw_multi_aff() const
isl::map lower_bound(isl::multi_pw_aff lower) const
isl::map complement() const
isl::fixed_box get_range_lattice_tile() const
static isl::map from_domain_and_range(isl::set domain, isl::set range)
isl::basic_map sample() const
isl::map sum(isl::map map2) const
isl::basic_map_list basic_map_list() const
isl::map intersect_range_factor_range(isl::map factor) const
stat foreach_map(const std::function< stat(isl::map)> &fn) const
isl::map intersect_range(isl::set set) const
isl::ctx ctx() const
isl::map apply_range(isl::map map2) const
isl::map set_domain_tuple(isl::id id) const
boolean has_range_tuple_id() const
isl::map unite(isl::map map2) const
static isl::map from_union_map(isl::union_map umap)
isl::map domain_factor_domain() const
boolean is_bijective() const
isl::union_map fixed_power(const isl::val &exp) const
isl::union_map compute_divs() const
isl::map uncurry() const
isl::map coalesce() const
isl::set bind_range(isl::multi_id tuple) const
isl::map extract_map(const isl::space &space) const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
isl::map factor_domain() const
isl::pw_multi_aff lexmax_pw_multi_aff() const
isl::map preimage_range(isl::multi_aff ma) const
static isl::map from_multi_aff(isl::multi_aff maff)
isl::map domain_factor_range() const
static isl::map from_domain(isl::set set)
boolean is_equal(const isl::map &map2) const
isl::map range_reverse() const
static isl::map lex_gt(isl::space set_space)
isl::map intersect_domain_factor_range(isl::map factor) const
isl::map flatten_range() const
isl::fixed_box range_lattice_tile() const
isl::map apply_domain(isl::map map2) const
isl::map subtract(isl::map map2) const
isl::map flat_range_product(isl::map map2) const
isl::map range_product(isl::map map2) const
static isl::map identity(isl::space space)
isl::id get_domain_tuple_id() const
isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const
boolean is_single_valued() const
isl::union_pw_multi_aff as_union_pw_multi_aff() const
isl::map intersect_domain_factor_domain(isl::map factor) const
class size dim(isl::dim type) const
isl::space get_space() const
isl::basic_map polyhedral_hull() const
isl::map lex_gt_at(isl::multi_pw_aff mpa) const
isl::set domain() const
isl::map lexmax() const
boolean is_empty() const
isl::map gist_params(isl::set context) const
__isl_keep isl_map * get() const
isl::basic_map unshifted_simple_hull() const
isl::map flatten() const
static isl::map from_aff(isl::aff aff)
isl::set params() const
isl::map domain_map() const
isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const
static isl::map lex_lt(isl::space set_space)
isl::map flatten_domain() const
boolean is_injective() const
map & operator=(map obj)
isl::pw_aff dim_min(int pos) const
boolean every_map(const std::function< boolean(isl::map)> &test) const
isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
stat foreach_basic_map(const std::function< stat(isl::basic_map)> &fn) const
boolean has_equal_space(const isl::map &map2) const
isl::map preimage_domain(isl::multi_aff ma) const
static isl::map empty(isl::space space)
isl::id domain_tuple_id() const
boolean isa_map() const
static isl::map lex_ge(isl::space set_space)
isl::union_map to_union_map() const
isl::map intersect_domain(isl::set set) const
static isl::map from_pw_aff(isl::pw_aff pwaff)
static isl::map lex_le(isl::space set_space)
isl::map_list map_list() const
isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const
boolean has_tuple_id(isl::dim type) const
isl::id tuple_id(isl::dim type) const
isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
isl::map intersect_range_factor_domain(isl::map factor) const
isl::map curry() const
__isl_give isl_map * copy() const &
isl::pw_aff dim_max(int pos) const
isl::union_map subtract_range(const isl::union_set &dom) const
isl::space space() const
isl::set bind_domain(isl::multi_id tuple) const
isl::multi_pw_aff max_multi_pw_aff() const
isl::map lexmin() const
__isl_give isl_map * release()
isl::map upper_bound(isl::multi_pw_aff upper) const
isl::pw_multi_aff lexmin_pw_multi_aff() const
isl::map range_map() const
static isl::map from_range(isl::set set)
isl::map add_dims(isl::dim type, unsigned int n) const
boolean is_strict_subset(const isl::map &map2) const
isl::map set_range_tuple(isl::id id) const
isl::basic_map affine_hull() const
boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::map zip() const
bool is_null() const
boolean has_domain_tuple_id() const
isl::map range_factor_range() const
isl::map project_out_all_params() const
boolean has_tuple_name(isl::dim type) const
isl::map_list to_list() const
isl_multi_aff * ptr
__isl_keep isl_multi_aff * get() const
isl::pw_multi_aff subtract_domain(const isl::set &set) const
isl::multi_aff reset_range_tuple_id() const
__isl_give isl_multi_aff * copy() const &
isl::multi_aff product(isl::multi_aff multi2) const
static isl::multi_aff domain_map(isl::space space)
isl::multi_val get_constant_multi_val() const
isl::union_pw_multi_aff to_union_pw_multi_aff() const
boolean has_range_tuple_id() const
boolean involves_param(const isl::id &id) const
boolean isa_pw_multi_aff() const
isl::multi_aff identity() const
isl::space space() const
isl::id tuple_id(isl::dim type) const
isl::pw_multi_aff_list to_list() const
isl::aff_list list() const
static isl::multi_aff identity_on_domain(isl::space space)
boolean plain_is_empty() const
isl::aff at(int pos) const
static isl::multi_aff identity(isl::space space)
boolean isa_multi_aff() const
isl::multi_aff set_range_tuple(isl::id id) const
isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::pw_multi_aff to_pw_multi_aff() const
isl::set as_set() const
isl::pw_multi_aff coalesce() const
isl::multi_aff sub(isl::multi_aff multi2) const
isl::ctx ctx() const
isl::multi_aff scale_down(isl::multi_val mv) const
isl::pw_multi_aff_list pw_multi_aff_list() const
isl::union_map as_union_map() const
isl::multi_aff reset_tuple_id(isl::dim type) const
isl::multi_aff add_constant(isl::multi_val mv) const
boolean plain_is_equal(const isl::multi_aff &multi2) const
isl::id get_range_tuple_id() const
isl::pw_multi_aff range_factor_domain() const
bool is_null() const
isl::pw_multi_aff intersect_domain(const isl::set &set) const
isl::multi_pw_aff to_multi_pw_aff() const
static isl::multi_aff multi_val_on_domain(isl::space space, isl::multi_val mv)
isl::multi_aff flat_range_product(isl::multi_aff multi2) const
isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const
stat foreach_piece(const std::function< stat(isl::set, isl::multi_aff)> &fn) const
isl::set domain() const
isl::multi_aff insert_domain(isl::space domain) const
isl::multi_aff neg() const
isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const
isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const
isl::map as_map() const
isl::basic_set bind(isl::multi_id tuple) const
multi_aff & operator=(multi_aff obj)
boolean involves_locals() const
isl::id range_tuple_id() const
boolean involves_nan() const
class size n_piece() const
isl::pw_multi_aff range_factor_range() const
isl::multi_aff pullback(isl::multi_aff ma2) const
isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const
isl::multi_val max_multi_val() const
isl::multi_val min_multi_val() const
isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const
isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const
isl::pw_multi_aff intersect_params(const isl::set &set) const
class size dim(isl::dim type) const
isl::multi_aff scale(isl::multi_val mv) const
isl::multi_aff unbind_params_insert_domain(isl::multi_id domain) const
isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const
isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const
isl::aff_list get_list() const
isl::pw_multi_aff as_pw_multi_aff() const
isl::multi_aff set_at(int pos, isl::aff el) const
isl::multi_aff add(isl::multi_aff multi2) const
friend multi_aff manage(__isl_take isl_multi_aff *ptr)
isl::space get_space() const
isl::multi_aff bind_domain(isl::multi_id tuple) const
isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
isl::multi_aff floor() const
isl::aff get_at(int pos) const
isl::multi_aff set_aff(int pos, isl::aff el) const
isl::multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const
isl::multi_aff range_product(isl::multi_aff multi2) const
static isl::multi_aff range_map(isl::space space)
isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
isl::multi_aff as_multi_aff() const
__isl_give isl_multi_aff * release()
isl::multi_aff gist(isl::set context) const
isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
class size size() const
isl::multi_val constant_multi_val() const
static isl::multi_aff zero(isl::space space)
isl::multi_union_pw_aff to_multi_union_pw_aff() const
multi_id & operator=(multi_id obj)
bool is_null() const
__isl_give isl_multi_id * copy() const &
isl::id_list get_list() const
isl::multi_id range_product(isl::multi_id multi2) const
isl_multi_id * ptr
class size size() const
__isl_keep isl_multi_id * get() const
isl::multi_id set_at(int pos, isl::id el) const
friend multi_id manage(__isl_take isl_multi_id *ptr)
isl::id get_at(int pos) const
isl::space get_space() const
isl::space space() const
isl::ctx ctx() const
isl::id at(int pos) const
isl::id_list list() const
__isl_give isl_multi_id * release()
isl::multi_id flat_range_product(isl::multi_id multi2) const
isl::multi_id set_id(int pos, isl::id el) const
boolean plain_is_equal(const isl::multi_id &multi2) const
isl::multi_pw_aff add(isl::multi_pw_aff multi2) const
isl::multi_pw_aff min(isl::multi_pw_aff multi2) const
isl::multi_pw_aff gist(isl::set set) const
boolean plain_is_equal(const isl::multi_pw_aff &multi2) const
static isl::multi_pw_aff identity(isl::space space)
isl::multi_pw_aff coalesce() const
isl::multi_val min_multi_val() const
__isl_keep isl_multi_pw_aff * get() const
isl::multi_pw_aff add_constant(isl::multi_val mv) const
isl::set bind(isl::multi_id tuple) const
boolean has_range_tuple_id() const
isl::multi_pw_aff insert_domain(isl::space domain) const
isl::multi_pw_aff scale_down(isl::multi_val mv) const
static isl::multi_pw_aff zero(isl::space space)
class size size() const
isl::multi_pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const
boolean involves_param(const isl::id &id) const
isl::multi_pw_aff reset_range_tuple_id() const
isl::multi_pw_aff scale(isl::multi_val mv) const
isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
isl::multi_pw_aff range_product(isl::multi_pw_aff multi2) const
isl::multi_pw_aff unbind_params_insert_domain(isl::multi_id domain) const
isl::multi_pw_aff product(isl::multi_pw_aff multi2) const
isl::pw_aff at(int pos) const
isl::pw_aff_list get_list() const
isl::space get_space() const
boolean involves_nan() const
isl::multi_pw_aff neg() const
multi_pw_aff & operator=(multi_pw_aff obj)
isl::multi_pw_aff set_range_tuple(isl::id id) const
isl::multi_pw_aff bind_domain(isl::multi_id tuple) const
isl::set domain() const
friend multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr)
isl::multi_pw_aff set_at(int pos, isl::pw_aff el) const
isl::id get_range_tuple_id() const
__isl_give isl_multi_pw_aff * copy() const &
boolean isa_multi_aff() const
isl::pw_aff get_at(int pos) const
isl::pw_aff_list list() const
isl::multi_pw_aff pullback(isl::multi_aff ma) const
isl::map as_map() const
isl::multi_pw_aff intersect_params(isl::set set) const
isl::multi_val max_multi_val() const
isl::space space() const
__isl_give isl_multi_pw_aff * release()
isl::multi_pw_aff union_add(isl::multi_pw_aff mpa2) const
isl::multi_aff as_multi_aff() const
isl::multi_pw_aff set_pw_aff(int pos, isl::pw_aff el) const
isl_multi_pw_aff * ptr
isl::multi_pw_aff max(isl::multi_pw_aff multi2) const
static isl::multi_pw_aff identity_on_domain(isl::space space)
isl::ctx ctx() const
class size dim(isl::dim type) const
isl::multi_pw_aff intersect_domain(isl::set domain) const
isl::set as_set() const
isl::id range_tuple_id() const
isl::multi_pw_aff reset_tuple_id(isl::dim type) const
isl::multi_pw_aff sub(isl::multi_pw_aff multi2) const
isl::multi_pw_aff flat_range_product(isl::multi_pw_aff multi2) const
isl::multi_pw_aff identity() const
__isl_keep isl_multi_union_pw_aff * get() const
isl::multi_union_pw_aff pullback(isl::union_pw_multi_aff upma) const
isl::union_pw_aff at(int pos) const
isl::union_set bind(isl::multi_id tuple) const
isl::id range_tuple_id() const
boolean has_range_tuple_id() const
isl::union_pw_aff get_at(int pos) const
isl::multi_union_pw_aff intersect_domain(isl::union_set uset) const
isl::multi_union_pw_aff range_product(isl::multi_union_pw_aff multi2) const
isl::multi_union_pw_aff scale_down(isl::multi_val mv) const
boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const
isl::multi_union_pw_aff set_union_pw_aff(int pos, isl::union_pw_aff el) const
isl::space space() const
isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const
isl_multi_union_pw_aff * ptr
class size dim(isl::dim type) const
isl::union_pw_aff_list list() const
isl::space get_space() const
static isl::multi_union_pw_aff from_union_map(isl::union_map umap)
isl::multi_union_pw_aff neg() const
friend multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr)
isl::multi_union_pw_aff intersect_params(isl::set params) const
isl::id get_range_tuple_id() const
isl::multi_union_pw_aff reset_range_tuple_id() const
__isl_give isl_multi_union_pw_aff * release()
__isl_give isl_multi_union_pw_aff * copy() const &
isl::multi_union_pw_aff add(isl::multi_union_pw_aff multi2) const
isl::union_set domain() const
isl::multi_union_pw_aff flat_range_product(isl::multi_union_pw_aff multi2) const
isl::multi_union_pw_aff union_add(isl::multi_union_pw_aff mupa2) const
isl::multi_union_pw_aff gist(isl::union_set context) const
isl::multi_union_pw_aff set_at(int pos, isl::union_pw_aff el) const
isl::multi_union_pw_aff scale(isl::multi_val mv) const
isl::union_pw_aff_list get_list() const
multi_union_pw_aff & operator=(multi_union_pw_aff obj)
static isl::multi_union_pw_aff zero(isl::space space)
isl::multi_union_pw_aff sub(isl::multi_union_pw_aff multi2) const
isl::multi_union_pw_aff set_range_tuple(isl::id id) const
isl::multi_union_pw_aff coalesce() const
isl::space get_space() const
static isl::multi_val zero(isl::space space)
class size size() const
isl::id range_tuple_id() const
isl::id get_range_tuple_id() const
friend multi_val manage(__isl_take isl_multi_val *ptr)
multi_val & operator=(multi_val obj)
isl::multi_val product(isl::multi_val multi2) const
__isl_give isl_multi_val * copy() const &
isl::multi_val range_product(isl::multi_val multi2) const
boolean plain_is_equal(const isl::multi_val &multi2) const
isl::multi_val max(isl::multi_val multi2) const
boolean involves_nan() const
isl::multi_val reset_tuple_id(isl::dim type) const
isl::space space() const
class size dim(isl::dim type) const
isl::val_list get_list() const
isl::ctx ctx() const
__isl_give isl_multi_val * release()
isl::multi_val set_val(int pos, isl::val el) const
isl_multi_val * ptr
isl::val at(int pos) const
isl::multi_val reset_range_tuple_id() const
__isl_keep isl_multi_val * get() const
bool is_null() const
isl::multi_val scale_down(isl::multi_val mv) const
isl::multi_val flat_range_product(isl::multi_val multi2) const
isl::multi_val add(isl::multi_val multi2) const
isl::multi_val neg() const
isl::multi_val set_at(int pos, isl::val el) const
isl::multi_val sub(isl::multi_val multi2) const
isl::multi_val scale(isl::multi_val mv) const
isl::val_list list() const
isl::multi_val set_range_tuple(isl::id id) const
boolean has_range_tuple_id() const
isl::val get_at(int pos) const
isl::multi_val min(isl::multi_val multi2) const
isl::map unbind_params_insert_domain(const isl::multi_id &domain) const
isl::basic_set unshifted_simple_hull() const
isl::set project_out_param(const isl::id &id) const
bool is_null() const
class size n_basic_set() const
isl::basic_set intersect_params(const isl::basic_set &bset2) const
isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const
isl::multi_val get_multi_val() const
isl::pw_multi_aff lexmax_pw_multi_aff() const
isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const
boolean is_params() const
isl::basic_set_list basic_set_list() const
isl::set add_dims(isl::dim type, unsigned int n) const
isl::set unbind_params(const isl::multi_id &tuple) const
isl::map unwrap() const
boolean contains(const isl::space &space) const
isl::multi_pw_aff max_multi_pw_aff() const
isl::ctx ctx() const
isl::map insert_domain(const isl::space &domain) const
__isl_keep isl_point * get() const
isl::set project_out_all_params() const
isl::union_set to_union_set() const
isl::basic_set gist(const isl::basic_set &context) const
isl::basic_set flatten() const
point & operator=(point obj)
std::string tuple_name() const
isl::val min_val(const isl::aff &obj) const
isl::map translation() const
isl::set_list set_list() const
boolean every_set(const std::function< boolean(isl::set)> &test) const
isl::union_pw_multi_aff identity_union_pw_multi_aff() const
isl::basic_set_list to_list() const
isl::set coalesce() const
int find_dim_by_id(isl::dim type, const isl::id &id) const
isl::set remove_divs() const
isl::set add_constraint(const isl::constraint &constraint) const
isl::basic_set params() const
isl::set subtract(const isl::set &set2) const
isl::set align_params(const isl::space &model) const
isl::multi_val multi_val() const
isl_point * ptr
isl::val coordinate_val(isl::dim type, int pos) const
isl::basic_set fix_val(isl::dim type, unsigned int pos, const isl::val &v) const
isl::basic_set apply(const isl::basic_map &bmap) const
isl::point sample_point() const
isl::set bind(const isl::multi_id &tuple) const
stat foreach_point(const std::function< stat(isl::point)> &fn) const
isl::set reset_tuple_id() const
isl::set set_tuple_id(const isl::id &id) const
isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const
friend point manage(__isl_take isl_point *ptr)
isl::basic_set simple_hull() const
isl::set unite(const isl::basic_set &bset2) const
isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::val max_val(const isl::aff &obj) const
isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const
isl::set extract_set(const isl::space &space) const
isl::basic_set intersect(const isl::basic_set &bset2) const
isl::set upper_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
isl::pw_multi_aff as_pw_multi_aff() const
isl::space space() const
isl::pw_aff dim_min(int pos) const
isl::pw_multi_aff lexmin_pw_multi_aff() const
boolean isa_set() const
isl::pw_aff indicator_function() const
isl::basic_set sample() const
isl::basic_set convex_hull() const
boolean is_subset(const isl::basic_set &bset2) const
isl::val dim_min_val(int pos) const
__isl_give isl_point * release()
isl::set lexmax() const
boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::basic_set affine_hull() const
isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
isl::val stride(int pos) const
boolean is_empty() const
isl::set remove_redundancies() const
isl::set product(const isl::set &set2) const
class size dim(isl::dim type) const
boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
isl::val dim_max_val(int pos) const
isl::set lower_bound(const isl::multi_pw_aff &lower) const
isl::val get_coordinate_val(isl::dim type, int pos) const
boolean is_wrapping() const
isl::multi_pw_aff min_multi_pw_aff() const
__isl_give isl_point * copy() const &
boolean is_disjoint(const isl::set &set2) const
boolean involves_locals() const
std::string dim_name(isl::dim type, unsigned int pos) const
isl::multi_val plain_multi_val_if_fixed() const
isl::set preimage(const isl::multi_aff &ma) const
isl::aff div(int pos) const
isl::set upper_bound(const isl::multi_pw_aff &upper) const
stat foreach_basic_set(const std::function< stat(isl::basic_set)> &fn) const
stat foreach_set(const std::function< stat(isl::set)> &fn) const
isl::fixed_box simple_fixed_box_hull() const
isl::set gist_params(const isl::set &context) const
class size tuple_dim() const
isl::set set_dim_id(isl::dim type, unsigned int pos, const isl::id &id) const
isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
isl::map identity() const
isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::basic_set detect_equalities() const
isl::pw_multi_aff pw_multi_aff_on_domain(const isl::multi_val &mv) const
boolean is_bounded() const
boolean is_singleton() const
isl::id dim_id(isl::dim type, unsigned int pos) const
isl::id tuple_id() const
isl::set as_set() const
boolean has_equal_space(const isl::set &set2) const
isl::basic_set polyhedral_hull() const
isl::pw_aff dim_max(int pos) const
boolean is_equal(const isl::basic_set &bset2) const
isl::set complement() const
isl::union_set compute_divs() const
isl::set lower_bound_val(isl::dim type, unsigned int pos, const isl::val &value) const
isl::set lexmin() const
boolean is_strict_subset(const isl::set &set2) const
isl::set to_set() const
isl::pw_aff_list concat(isl::pw_aff_list list2) const
isl::ctx ctx() const
class size size() const
isl_pw_aff_list * ptr
isl::pw_aff_list drop(unsigned int first, unsigned int n) const
__isl_give isl_pw_aff_list * release()
isl::pw_aff_list add(isl::pw_aff el) const
pw_aff_list & operator=(pw_aff_list obj)
__isl_give isl_pw_aff_list * copy() const &
isl::pw_aff at(int index) const
isl::pw_aff_list clear() const
isl::pw_aff_list insert(unsigned int pos, isl::pw_aff el) const
friend pw_aff_list manage(__isl_take isl_pw_aff_list *ptr)
stat foreach(const std::function< stat(isl::pw_aff)> &fn) const
isl::pw_aff get_at(int index) const
__isl_keep isl_pw_aff_list * get() const
isl::set lt_set(isl::pw_aff pwaff2) const
isl::pw_multi_aff range_factor_domain() const
isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const
isl::union_pw_aff to_union_pw_aff() const
isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
boolean isa_multi_aff() const
static isl::pw_aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos)
isl::id get_dim_id(isl::dim type, unsigned int pos) const
isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const
isl::set domain() const
isl::ctx ctx() const
isl::pw_aff insert_domain(isl::space domain) const
isl::multi_val min_multi_val() const
isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const
isl::multi_pw_aff reset_range_tuple_id() const
boolean plain_is_empty() const
isl::pw_aff tdiv_q(isl::pw_aff pa2) const
isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const
__isl_give isl_pw_aff * release()
class size size() const
isl::multi_pw_aff to_multi_pw_aff() const
static isl::pw_aff param_on_domain(isl::set domain, isl::id id)
isl::pw_multi_aff_list pw_multi_aff_list() const
__isl_keep isl_pw_aff * get() const
isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const
isl::union_pw_multi_aff to_union_pw_multi_aff() const
isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::pw_aff tdiv_r(isl::pw_aff pa2) const
isl::multi_pw_aff scale(const isl::multi_val &mv) const
isl::pw_aff coalesce() const
isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const
isl::aff as_aff() const
isl::pw_aff intersect_params(isl::set set) const
isl::pw_multi_aff set_range_tuple(const isl::id &id) const
isl_pw_aff * ptr
isl::pw_aff div(isl::pw_aff pa2) const
isl::pw_aff gist(isl::set context) const
isl::pw_aff ceil() const
isl::id get_tuple_id(isl::dim type) const
isl::id tuple_id(isl::dim type) const
isl::pw_aff add_constant(isl::val v) const
isl::pw_aff_list to_list() const
isl::id range_tuple_id() const
isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const
stat foreach_piece(const std::function< stat(isl::set, isl::aff)> &fn) const
isl::space domain_space() const
isl::pw_aff floor() const
isl::union_map as_union_map() const
isl::pw_aff_list list() const
isl::space get_space() const
isl::set bind(const isl::multi_id &tuple) const
isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const
isl::multi_pw_aff scale_down(const isl::multi_val &mv) const
isl::pw_aff intersect_domain(isl::set set) const
boolean is_cst() const
isl::set le_set(isl::pw_aff pwaff2) const
boolean isa_pw_multi_aff() const
isl::space get_domain_space() const
isl::set eq_set(isl::pw_aff pwaff2) const
isl::pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const
isl::set ne_set(isl::pw_aff pwaff2) const
friend pw_aff manage(__isl_take isl_pw_aff *ptr)
isl::pw_aff at(int pos) const
isl::space space() const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
boolean involves_param(const isl::id &id) const
isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const
class size dim(isl::dim type) const
isl::pw_aff pullback(isl::multi_aff ma) const
isl::set ge_set(isl::pw_aff pwaff2) const
isl::pw_aff mod(isl::val mod) const
__isl_give isl_pw_aff * copy() const &
isl::pw_aff mul(isl::pw_aff pwaff2) const
boolean is_equal(const isl::pw_aff &pa2) const
isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const
isl::pw_multi_aff range_factor_range() const
isl::pw_multi_aff preimage_domain_wrapped_domain(const isl::pw_multi_aff &pma2) const
bool is_null() const
isl::pw_aff cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const
isl::id dim_id(isl::dim type, unsigned int pos) const
isl::multi_pw_aff unbind_params_insert_domain(const isl::multi_id &domain) const
boolean has_range_tuple_id() const
isl::multi_val max_multi_val() const
isl::pw_aff set_tuple_id(isl::dim type, isl::id id) const
isl::multi_aff as_multi_aff() const
boolean involves_locals() const
isl::map as_map() const
isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const
isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const
isl::union_pw_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const
isl::set gt_set(isl::pw_aff pwaff2) const
isl::multi_pw_aff reset_tuple_id(isl::dim type) const
isl::multi_pw_aff identity() const
isl::set as_set() const
pw_aff & operator=(pw_aff obj)
isl::pw_multi_aff as_pw_multi_aff() const
stat foreach_pw_aff(const std::function< stat(isl::pw_aff)> &fn) const
class size n_piece() const
isl::pw_aff add_dims(isl::dim type, unsigned int n) const
isl::pw_aff bind_domain(isl::multi_id tuple) const
boolean involves_nan() const
isl::val eval(isl::point pnt) const
isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const
isl::pw_aff neg() const
boolean isa_aff() const
boolean plain_is_equal(const isl::multi_pw_aff &multi2) const
isl::union_pw_aff intersect_domain_wrapped_range(const isl::union_set &uset) const
isl::pw_aff subtract_domain(isl::set set) const
pw_multi_aff_list & operator=(pw_multi_aff_list obj)
isl::pw_multi_aff at(int index) const
isl::pw_multi_aff_list clear() const
friend pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr)
isl::pw_multi_aff_list insert(unsigned int pos, isl::pw_multi_aff el) const
isl::pw_multi_aff_list add(isl::pw_multi_aff el) const
isl::pw_multi_aff get_at(int index) const
class size size() const
stat foreach(const std::function< stat(isl::pw_multi_aff)> &fn) const
__isl_give isl_pw_multi_aff_list * copy() const &
__isl_give isl_pw_multi_aff_list * release()
isl::pw_multi_aff_list concat(isl::pw_multi_aff_list list2) const
isl::pw_multi_aff_list drop(unsigned int first, unsigned int n) const
__isl_keep isl_pw_multi_aff_list * get() const
isl_pw_multi_aff_list * ptr
isl::multi_pw_aff set_at(int pos, const isl::pw_aff &el) const
isl::multi_pw_aff unbind_params_insert_domain(const isl::multi_id &domain) const
isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const
static isl::pw_multi_aff zero(isl::space space)
isl::multi_pw_aff union_add(const isl::multi_pw_aff &mpa2) const
boolean involves_nan() const
isl::multi_pw_aff range_product(const isl::multi_pw_aff &multi2) const
isl_pw_multi_aff * ptr
isl::pw_multi_aff subtract_domain(isl::set set) const
isl::pw_multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const
isl::union_pw_multi_aff to_union_pw_multi_aff() const
pw_multi_aff & operator=(pw_multi_aff obj)
isl::multi_pw_aff max(const isl::multi_pw_aff &multi2) const
isl::id tuple_id(isl::dim type) const
__isl_give isl_pw_multi_aff * copy() const &
isl::id get_tuple_id(isl::dim type) const
isl::multi_pw_aff add(const isl::multi_pw_aff &multi2) const
isl::multi_pw_aff scale_down(const isl::multi_val &mv) const
isl::multi_pw_aff product(const isl::multi_pw_aff &multi2) const
isl::map as_map() const
boolean plain_is_empty() const
static isl::pw_multi_aff multi_val_on_domain(isl::set domain, isl::multi_val mv)
isl::pw_multi_aff insert_domain(isl::space domain) const
isl::pw_multi_aff intersect_params(isl::set set) const
isl::id range_tuple_id() const
isl::multi_val max_multi_val() const
isl::pw_aff at(int pos) const
isl::pw_multi_aff gist(isl::set set) const
static isl::pw_multi_aff from_map(isl::map map)
isl::pw_multi_aff range_factor_range() const
isl::multi_pw_aff pullback(const isl::multi_pw_aff &mpa2) const
isl::multi_pw_aff identity() const
isl::pw_multi_aff add_constant(isl::multi_val mv) const
class size n_piece() const
isl::pw_multi_aff preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const
isl::multi_pw_aff scale(const isl::multi_val &mv) const
isl::union_map as_union_map() const
static isl::pw_multi_aff range_map(isl::space space)
class size dim(isl::dim type) const
friend pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr)
isl::multi_pw_aff set_pw_aff(int pos, const isl::pw_aff &el) const
isl::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::union_set &uset) const
isl::pw_multi_aff intersect_domain(isl::set set) const
isl::multi_pw_aff neg() const
__isl_give isl_pw_multi_aff * release()
isl::multi_aff as_multi_aff() const
isl::pw_multi_aff bind_domain(isl::multi_id tuple) const
static isl::pw_multi_aff domain_map(isl::space space)
isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const
isl::multi_pw_aff min(const isl::multi_pw_aff &multi2) const
isl::multi_val min_multi_val() const
isl::space space() const
isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const
isl::pw_multi_aff as_pw_multi_aff() const
boolean isa_pw_multi_aff() const
isl::ctx ctx() const
class size size() const
isl::pw_multi_aff set_range_tuple(isl::id id) const
isl::pw_multi_aff coalesce() const
isl::set domain() const
isl::multi_pw_aff reset_tuple_id(isl::dim type) const
isl::pw_multi_aff range_factor_domain() const
isl::pw_aff get_at(int pos) const
static isl::pw_multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n)
stat foreach_piece(const std::function< stat(isl::set, isl::multi_aff)> &fn) const
isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
isl::multi_pw_aff to_multi_pw_aff() const
isl::id get_range_tuple_id() const
isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const
boolean has_range_tuple_id() const
isl::pw_multi_aff_list to_list() const
boolean involves_locals() const
isl::multi_pw_aff flat_range_product(const isl::multi_pw_aff &multi2) const
isl::space get_space() const
__isl_keep isl_pw_multi_aff * get() const
static isl::pw_multi_aff identity_on_domain(isl::space space)
isl::set as_set() const
boolean plain_is_equal(const isl::multi_pw_aff &multi2) const
boolean isa_multi_aff() const
isl::set bind(const isl::multi_id &tuple) const
boolean involves_param(const isl::id &id) const
isl::pw_multi_aff_list pw_multi_aff_list() const
isl::multi_pw_aff reset_range_tuple_id() const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
isl::pw_aff_list list() const
isl::multi_pw_aff sub(const isl::multi_pw_aff &multi2) const
isl::union_pw_multi_aff intersect_domain_wrapped_range(const isl::union_set &uset) const
isl::union_map coincidence() const
isl::schedule_constraints set_conditional_validity(isl::union_map condition, isl::union_map validity) const
isl::union_set domain() const
isl::union_map conditional_validity_condition() const
isl::schedule_constraints set_proximity(isl::union_map proximity) const
isl::schedule compute_schedule() const
isl::union_map get_conditional_validity() const
isl::schedule_constraints set_validity(isl::union_map validity) const
static isl::schedule_constraints on_domain(isl::union_set domain)
isl::union_map get_conditional_validity_condition() const
schedule_constraints & operator=(schedule_constraints obj)
__isl_give isl_schedule_constraints * release()
isl::union_map get_proximity() const
__isl_keep isl_schedule_constraints * get() const
isl::union_map conditional_validity() const
isl::union_map get_coincidence() const
__isl_give isl_schedule_constraints * copy() const &
friend schedule_constraints manage(__isl_take isl_schedule_constraints *ptr)
isl::union_map proximity() const
isl_schedule_constraints * ptr
isl::schedule_constraints set_coincidence(isl::union_map coincidence) const
isl::schedule_constraints set_context(isl::set context) const
isl::union_set get_domain() const
isl::union_map validity() const
isl::union_map get_validity() const
isl::set ast_isolate_option() const
schedule_node_band member_set_ast_loop_atomic(int pos) const
isl::set get_ast_isolate_option() const
schedule_node_band scale_down(isl::multi_val mv) const
schedule_node_band member_set_ast_loop_unroll(int pos) const
boolean member_get_coincident(int pos) const
schedule_node_band member_set_ast_loop_default(int pos) const
schedule_node_band set_ast_build_options(isl::union_set options) const
isl::union_set ast_build_options() const
schedule_node_band shift(isl::multi_union_pw_aff shift) const
schedule_node_band scale(isl::multi_val mv) const
boolean get_permutable() const
schedule_node_band & operator=(schedule_node_band obj)
isl::multi_union_pw_aff partial_schedule() const
schedule_node_band split(int pos) const
schedule_node_band member_set_coincident(int pos, int coincident) const
isl::union_set get_ast_build_options() const
isl::multi_union_pw_aff get_partial_schedule() const
schedule_node_band set_permutable(int permutable) const
schedule_node_band member_set_ast_loop_separate(int pos) const
schedule_node_band mod(isl::multi_val mv) const
schedule_node_band tile(isl::multi_val sizes) const
schedule_node_context & operator=(schedule_node_context obj)
isl::union_set get_domain() const
isl::union_set domain() const
schedule_node_domain & operator=(schedule_node_domain obj)
isl::union_pw_multi_aff contraction() const
schedule_node_expansion & operator=(schedule_node_expansion obj)
isl::union_pw_multi_aff get_contraction() const
isl::union_map expansion() const
isl::union_map get_expansion() const
isl::union_map extension() const
schedule_node_extension & operator=(schedule_node_extension obj)
isl::union_map get_extension() const
isl::union_set filter() const
schedule_node_filter & operator=(schedule_node_filter obj)
isl::union_set get_filter() const
schedule_node_guard & operator=(schedule_node_guard obj)
schedule_node_leaf & operator=(schedule_node_leaf obj)
schedule_node_mark & operator=(schedule_node_mark obj)
schedule_node_sequence & operator=(schedule_node_sequence obj)
schedule_node_set & operator=(schedule_node_set obj)
class size child_position() const
isl::union_set domain() const
isl::schedule_node order_before(isl::union_set filter) const
isl::schedule_node previous_sibling() const
isl::schedule_node root() const
isl::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const
isl::schedule_node shared_ancestor(const isl::schedule_node &node2) const
boolean has_next_sibling() const
isl::union_set get_universe_domain() const
isl::schedule_node get_shared_ancestor(const isl::schedule_node &node2) const
isl::ctx ctx() const
stat foreach_descendant_top_down(const std::function< boolean(isl::schedule_node)> &fn) const
boolean has_parent() const
isl::schedule_node insert_mark(isl::id mark) const
friend schedule_node manage(__isl_take isl_schedule_node *ptr)
class size ancestor_child_position(const isl::schedule_node &ancestor) const
boolean is_equal(const isl::schedule_node &node2) const
isl::schedule_node map_descendant_bottom_up(const std::function< isl::schedule_node(isl::schedule_node)> &fn) const
isl::schedule_node insert_filter(isl::union_set filter) const
isl_schedule_node * ptr
isl::schedule_node ancestor(int generation) const
isl::schedule_node child(int pos) const
__isl_give isl_schedule_node * release()
friend schedule_node manage_copy(__isl_keep isl_schedule_node *ptr)
isl::schedule_node insert_set(isl::union_set_list filters) const
isl::schedule_node insert_partial_schedule(isl::multi_union_pw_aff schedule) const
isl::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const
boolean has_children() const
stat foreach_ancestor_top_down(const std::function< stat(isl::schedule_node)> &fn) const
schedule_node & operator=(schedule_node obj)
boolean has_previous_sibling() const
boolean isa_type(T subtype) const
isl::union_map prefix_schedule_union_map() const
class size get_ancestor_child_position(const isl::schedule_node &ancestor) const
isl::union_map get_prefix_schedule_relation() const
isl::schedule_node insert_context(isl::set context) const
isl::union_map prefix_schedule_relation() const
isl::schedule schedule() const
isl::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const
isl::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const
isl::schedule_node insert_sequence(isl::union_set_list filters) const
__isl_give isl_schedule_node * copy() const &
isl::schedule get_schedule() const
isl::schedule_node next_sibling() const
static isl::schedule_node from_domain(isl::union_set domain)
isl::union_map get_prefix_schedule_union_map() const
isl::schedule_node graft_before(isl::schedule_node graft) const
boolean is_subtree_anchored() const
static isl::schedule_node from_extension(isl::union_map extension)
isl::schedule_node parent() const
isl::schedule_node first_child() const
class size get_child_position() const
__isl_keep isl_schedule_node * get() const
isl::schedule_node order_after(isl::union_set filter) const
boolean every_descendant(const std::function< boolean(isl::schedule_node)> &test) const
isl::union_set get_domain() const
isl::schedule_node graft_after(isl::schedule_node graft) const
isl::schedule_node insert_guard(isl::set context) const
isl::union_set universe_domain() const
friend schedule manage(__isl_take isl_schedule *ptr)
bool is_null() const
__isl_keep isl_schedule * get() const
isl::schedule insert_partial_schedule(isl::multi_union_pw_aff partial) const
isl::schedule_node root() const
isl::union_map map() const
isl::union_set domain() const
isl::schedule align_params(isl::space space) const
schedule & operator=(schedule obj)
isl_schedule * ptr
isl::schedule intersect_domain(isl::union_set domain) const
isl::schedule_node get_root() const
__isl_give isl_schedule * copy() const &
isl::union_map get_map() const
isl::schedule pullback(isl::union_pw_multi_aff upma) const
static isl::schedule from_domain(isl::union_set domain)
isl::union_set get_domain() const
isl::schedule sequence(isl::schedule schedule2) const
isl::schedule gist_domain_params(isl::set context) const
__isl_give isl_schedule * release()
isl::ctx ctx() const
isl::set_list concat(isl::set_list list2) const
__isl_give isl_set_list * copy() const &
bool is_null() const
isl::set_list add(isl::set el) const
isl::ctx ctx() const
set_list & operator=(set_list obj)
isl::set_list drop(unsigned int first, unsigned int n) const
isl::set get_at(int index) const
friend set_list manage(__isl_take isl_set_list *ptr)
stat foreach(const std::function< stat(isl::set)> &fn) const
__isl_keep isl_set_list * get() const
isl::set_list clear() const
__isl_give isl_set_list * release()
isl_set_list * ptr
isl::set at(int index) const
isl::set_list insert(unsigned int pos, isl::set el) const
isl::basic_set unshifted_simple_hull() const
isl::multi_val get_plain_multi_val_if_fixed() const
isl::ctx ctx() const
isl::set project_out(isl::dim type, unsigned int first, unsigned int n) const
isl::set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const
isl::set intersect(isl::set set2) const
isl::set gist(isl::set context) const
isl::set subtract(isl::set set2) const
std::string tuple_name() const
isl::pw_aff dim_max(int pos) const
boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::set set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
isl::val dim_min_val(int pos) const
isl::val stride(int pos) const
isl::id get_tuple_id() const
isl::id get_dim_id(isl::dim type, unsigned int pos) const
boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
isl::union_pw_multi_aff identity_union_pw_multi_aff() const
isl::set product(isl::set set2) const
isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
isl::set flatten() const
std::string dim_name(isl::dim type, unsigned int pos) const
int find_dim_by_id(isl::dim type, const isl::id &id) const
isl::val min_val(const isl::aff &obj) const
static isl::set universe(isl::space space)
boolean involves_locals() const
class size n_basic_set() const
isl::basic_set polyhedral_hull() const
boolean has_equal_space(const isl::set &set2) const
isl::set fix_si(isl::dim type, unsigned int pos, int value) const
__isl_give isl_set * copy() const &
isl::basic_set convex_hull() const
isl::multi_val plain_multi_val_if_fixed() const
isl::id dim_id(isl::dim type, unsigned int pos) const
isl::union_set to_union_set() const
isl::pw_aff dim_min(int pos) const
isl::set complement() const
isl::set bind(isl::multi_id tuple) const
boolean contains(const isl::space &space) const
isl::set_list set_list() const
isl::set gist_params(isl::set context) const
boolean is_bounded() const
isl::map insert_domain(isl::space domain) const
isl::pw_multi_aff lexmax_pw_multi_aff() const
isl::map identity() const
boolean is_subset(const isl::set &set2) const
boolean every_set(const std::function< boolean(isl::set)> &test) const
isl::map translation() const
isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::set intersect_params(isl::set params) const
isl::set lexmax() const
stat foreach_set(const std::function< stat(isl::set)> &fn) const
isl::pw_multi_aff lexmin_pw_multi_aff() const
isl::fixed_box get_simple_fixed_box_hull() const
isl::val max_val(const isl::aff &obj) const
isl::map unwrap() const
isl::set upper_bound(isl::multi_pw_aff upper) const
isl::set detect_equalities() const
isl_set * ptr
friend set manage(__isl_take isl_set *ptr)
isl::fixed_box simple_fixed_box_hull() const
std::string get_dim_name(isl::dim type, unsigned int pos) const
isl::set lower_bound(isl::multi_pw_aff lower) const
isl::set set_tuple_id(isl::id id) const
isl::set coalesce() const
stat foreach_basic_set(const std::function< stat(isl::basic_set)> &fn) const
bool is_null() const
isl::val get_stride(int pos) const
static isl::set empty(isl::space space)
boolean is_strict_subset(const isl::set &set2) const
isl::basic_set_list basic_set_list() const
isl::set_list to_list() const
isl::set unbind_params(isl::multi_id tuple) const
isl::set align_params(isl::space model) const
boolean is_params() const
isl::point sample_point() const
isl::map unbind_params_insert_domain(isl::multi_id domain) const
isl::space space() const
class size tuple_dim() const
isl::set add_constraint(isl::constraint constraint) const
isl::space get_space() const
isl::val dim_max_val(int pos) const
isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
isl::basic_set sample() const
isl::set apply(isl::map map) const
isl::multi_pw_aff min_multi_pw_aff() const
isl::multi_pw_aff max_multi_pw_aff() const
isl::pw_multi_aff pw_multi_aff_on_domain(isl::multi_val mv) const
boolean is_empty() const
isl::union_set compute_divs() const
boolean isa_set() const
__isl_give isl_set * release()
isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const
isl::id tuple_id() const
isl::set preimage(isl::multi_aff ma) const
__isl_keep isl_set * get() const
isl::set lexmin() const
isl::set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const
isl::set reset_tuple_id() const
isl::set add_dims(isl::dim type, unsigned int n) const
isl::pw_multi_aff as_pw_multi_aff() const
isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const
boolean is_disjoint(const isl::set &set2) const
boolean is_wrapping() const
stat foreach_point(const std::function< stat(isl::point)> &fn) const
isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
isl::set unite(isl::set set2) const
isl::set remove_redundancies() const
set & operator=(set obj)
isl::basic_set_list get_basic_set_list() const
isl::set as_set() const
boolean is_equal(const isl::set &set2) const
isl::basic_set simple_hull() const
isl::set project_out_param(isl::id id) const
isl::set remove_divs() const
isl::basic_set affine_hull() const
isl::set params() const
isl::set project_out_all_params() const
std::string get_tuple_name() const
boolean is_singleton() const
isl::set extract_set(const isl::space &space) const
isl::pw_aff indicator_function() const
friend size manage(isl_size val)
std::shared_ptr< checker > check
size(isl_size val)
isl_size release()
isl_size val
bool is_error() const
isl::multi_union_pw_aff zero_multi_union_pw_aff() const
isl::id range_tuple_id() const
isl::space product(isl::space right) const
isl::space add_named_tuple(isl::id tuple_id, unsigned int dim) const
isl::multi_aff multi_aff_on_domain(isl::multi_val mv) const
boolean has_domain_tuple_id() const
__isl_give isl_space * copy() const &
isl::aff zero_aff_on_domain() const
isl::multi_aff zero_multi_aff() const
isl::id domain_tuple_id() const
isl::multi_pw_aff zero_multi_pw_aff() const
boolean has_range_tuple_id() const
space & operator=(space obj)
isl::space add_param(isl::id id) const
isl::multi_union_pw_aff multi_union_pw_aff(isl::union_pw_aff_list list) const
isl::aff param_aff_on_domain(isl::id id) const
isl::space set_tuple_id(isl::dim type, isl::id id) const
isl::space uncurry() const
isl::id tuple_id(isl::dim type) const
bool is_null() const
isl::space flatten_range() const
isl::space add_unnamed_tuple(unsigned int dim) const
isl::space flatten_domain() const
isl::space set_domain_tuple(isl::id id) const
isl::space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
isl::id get_range_tuple_id() const
isl::set universe_set() const
boolean has_tuple_name(isl::dim type) const
std::string get_tuple_name(isl::dim type) const
isl::multi_aff identity_multi_aff_on_domain() const
boolean is_set() const
__isl_give isl_space * release()
boolean is_params() const
isl::pw_multi_aff domain_map_pw_multi_aff() const
int find_dim_by_id(isl::dim type, const isl::id &id) const
isl::space map_from_domain_and_range(isl::space range) const
boolean has_tuple_id(isl::dim type) const
isl::space params() const
isl::multi_id multi_id(isl::id_list list) const
static isl::space params_alloc(isl::ctx ctx, unsigned int nparam)
std::string tuple_name(isl::dim type) const
isl::space domain() const
isl::pw_multi_aff range_map_pw_multi_aff() const
isl::ctx ctx() const
isl::multi_pw_aff multi_pw_aff(isl::pw_aff_list list) const
isl::id get_dim_id(isl::dim type, unsigned int pos) const
isl::id get_domain_tuple_id() const
isl::space reverse() const
friend space manage(__isl_take isl_space *ptr)
isl::multi_pw_aff identity_multi_pw_aff_on_domain() const
isl::id get_tuple_id(isl::dim type) const
isl::space unwrap() const
isl::space set_from_params() const
boolean is_wrapping() const
isl::pw_multi_aff identity_pw_multi_aff_on_domain() const
isl::space set_range_tuple(isl::id id) const
isl::space map_from_set() const
isl::multi_val multi_val(isl::val_list list) const
isl::multi_aff range_map_multi_aff() const
isl::space range() const
isl::space wrap() const
isl::space drop_dims(isl::dim type, unsigned int first, unsigned int num) const
isl::multi_aff multi_aff(isl::aff_list list) const
isl_space * ptr
isl::multi_val zero_multi_val() const
isl::space add_dims(isl::dim type, unsigned int n) const
isl::space curry() const
isl::space align_params(isl::space space2) const
boolean has_equal_tuples(const isl::space &space2) const
isl::space range_reverse() const
isl::multi_aff domain_map_multi_aff() const
isl::map universe_map() const
boolean is_equal(const isl::space &space2) const
__isl_keep isl_space * get() const
isl::id dim_id(isl::dim type, unsigned int pos) const
static isl::space unit(isl::ctx ctx)
isl_stat val
std::shared_ptr< checker > check
static stat error()
stat(isl_stat val)
bool is_error() const
friend stat manage(isl_stat val)
bool is_ok() const
isl_stat release()
static stat ok()
isl::union_access_info set_schedule(isl::schedule schedule) const
isl::union_access_info set_schedule_map(isl::union_map schedule_map) const
isl::union_access_info set_kill(isl::union_map kill) const
union_access_info & operator=(union_access_info obj)
__isl_give isl_union_access_info * copy() const &
__isl_keep isl_union_access_info * get() const
isl::union_flow compute_flow() const
friend union_access_info manage(__isl_take isl_union_access_info *ptr)
isl_union_access_info * ptr
__isl_give isl_union_access_info * release()
isl::union_access_info set_must_source(isl::union_map must_source) const
isl::union_access_info set_may_source(isl::union_map may_source) const
union_flow & operator=(union_flow obj)
isl::union_map full_may_dependence() const
isl::union_map get_must_no_source() const
isl_union_flow * ptr
isl::union_map may_dependence() const
__isl_keep isl_union_flow * get() const
friend union_flow manage(__isl_take isl_union_flow *ptr)
isl::union_map may_no_source() const
__isl_give isl_union_flow * release()
isl::ctx ctx() const
isl::union_map get_full_must_dependence() const
isl::union_map must_no_source() const
isl::union_map get_must_dependence() const
bool is_null() const
isl::union_map get_may_no_source() const
isl::union_map get_full_may_dependence() const
isl::union_map get_may_dependence() const
isl::union_map must_dependence() const
isl::union_map full_must_dependence() const
__isl_give isl_union_flow * copy() const &
stat foreach_map(const std::function< stat(isl::map)> &fn) const
isl::union_map affine_hull() const
isl::union_map factor_domain() const
isl::union_set bind_range(isl::multi_id tuple) const
isl::union_map intersect_params(isl::set set) const
isl::union_map domain_factor_domain() const
isl::union_map range_map() const
isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const
isl::union_set range() const
isl::map extract_map(isl::space space) const
boolean is_equal(const isl::union_map &umap2) const
isl::union_map reverse() const
isl::union_map curry() const
isl::union_map gist_domain(isl::union_set uset) const
isl::union_map subtract_range(isl::union_set dom) const
isl_union_map * ptr
isl::union_map intersect_range_factor_range(isl::union_map factor) const
isl::union_map uncurry() const
boolean every_map(const std::function< boolean(isl::map)> &test) const
isl::union_set wrap() const
isl::map_list map_list() const
friend union_map manage_copy(__isl_keep isl_union_map *ptr)
isl::union_map preimage_domain(isl::multi_aff ma) const
isl::union_map unite(isl::union_map umap2) const
boolean isa_map() const
isl::union_map domain_product(isl::union_map umap2) const
isl::union_set domain() const
isl::union_map eq_at(isl::multi_union_pw_aff mupa) const
isl::union_map zip() const
boolean is_strict_subset(const isl::union_map &umap2) const
isl::union_map compute_divs() const
isl::union_map range_factor_range() const
isl::map_list get_map_list() const
isl::space space() const
__isl_give isl_union_map * copy() const &
isl::union_map flat_range_product(isl::union_map umap2) const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
boolean is_disjoint(const isl::union_map &umap2) const
isl::union_set deltas() const
isl::union_map subtract_domain(isl::union_set dom) const
isl::union_map project_out_all_params() const
isl::map as_map() const
boolean is_bijective() const
isl::union_map polyhedral_hull() const
isl::union_map product(isl::union_map umap2) const
isl::space get_space() const
isl::union_map lexmax() const
__isl_give isl_union_map * release()
isl::union_map range_factor_domain() const
isl::union_map factor_range() const
isl::union_map apply_domain(isl::union_map umap2) const
isl::union_map intersect_domain_factor_range(isl::union_map factor) const
isl::ctx ctx() const
isl::union_map intersect_range(isl::space space) const
isl::union_map gist_range(isl::union_set uset) const
static isl::union_map from_domain(isl::union_set uset)
isl::union_map fixed_power(isl::val exp) const
boolean is_empty() const
isl::union_map coalesce() const
isl::union_map preimage_range(isl::multi_aff ma) const
isl::union_map intersect_domain_factor_domain(isl::union_map factor) const
isl::union_map range_reverse() const
isl::union_map domain_factor_range() const
boolean is_subset(const isl::union_map &umap2) const
isl::union_map apply_range(isl::union_map umap2) const
__isl_keep isl_union_map * get() const
isl::union_map range_product(isl::union_map umap2) const
boolean is_injective() const
static isl::union_map empty(isl::ctx ctx)
isl::set params() const
isl::union_map intersect_range_factor_domain(isl::union_map factor) const
isl::union_map gist_params(isl::set set) const
isl::union_map universe() const
boolean is_single_valued() const
isl::union_map intersect(isl::union_map umap2) const
bool is_null() const
isl::union_map detect_equalities() const
isl::union_map subtract(isl::union_map umap2) const
static isl::union_map from_range(isl::union_set uset)
isl::union_map domain_map() const
isl::union_map intersect_domain(isl::space space) const
static isl::union_map from_domain_and_range(isl::union_set domain, isl::union_set range)
isl::union_pw_multi_aff as_union_pw_multi_aff() const
isl::union_map lexmin() const
static isl::union_map from(isl::multi_union_pw_aff mupa)
union_map & operator=(union_map obj)
friend union_map manage(__isl_take isl_union_map *ptr)
isl::union_map gist(isl::union_map context) const
friend union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr)
isl::union_pw_aff get_at(int index) const
stat foreach(const std::function< stat(isl::union_pw_aff)> &fn) const
isl::union_pw_aff_list clear() const
isl::union_pw_aff_list add(isl::union_pw_aff el) const
union_pw_aff_list & operator=(union_pw_aff_list obj)
isl_union_pw_aff_list * ptr
__isl_keep isl_union_pw_aff_list * get() const
isl::union_pw_aff_list drop(unsigned int first, unsigned int n) const
isl::union_pw_aff_list insert(unsigned int pos, isl::union_pw_aff el) const
isl::union_pw_aff_list concat(isl::union_pw_aff_list list2) const
__isl_give isl_union_pw_aff_list * release()
isl::union_pw_aff at(int index) const
__isl_give isl_union_pw_aff_list * copy() const &
isl_union_pw_aff * ptr
isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const
isl::multi_union_pw_aff reset_range_tuple_id() const
boolean involves_nan() const
isl::union_pw_aff_list list() const
isl::space get_space() const
boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const
__isl_keep isl_union_pw_aff * get() const
isl::union_pw_aff intersect_params(isl::set set) const
isl::union_pw_aff_list to_list() const
isl::multi_union_pw_aff add(const isl::multi_union_pw_aff &multi2) const
isl::pw_multi_aff_list pw_multi_aff_list() const
union_pw_aff & operator=(union_pw_aff obj)
isl::union_pw_multi_aff range_factor_range() const
isl::union_pw_aff subtract_domain(isl::space space) const
boolean involves_locals() const
friend union_pw_aff manage(__isl_take isl_union_pw_aff *ptr)
boolean isa_pw_multi_aff() const
isl::union_pw_aff at(int pos) const
isl::multi_union_pw_aff neg() const
isl::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::union_pw_multi_aff &upma2) const
isl::multi_union_pw_aff union_add(const isl::multi_union_pw_aff &mupa2) const
stat foreach_pw_aff(const std::function< stat(isl::pw_aff)> &fn) const
isl::union_set bind(const isl::multi_id &tuple) const
isl::union_pw_aff intersect_domain_wrapped_range(isl::union_set uset) const
isl::multi_union_pw_aff sub(const isl::multi_union_pw_aff &multi2) const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
isl::multi_union_pw_aff set_union_pw_aff(int pos, const isl::union_pw_aff &el) const
isl::pw_multi_aff extract_pw_multi_aff(const isl::space &space) const
isl::union_pw_aff intersect_domain_wrapped_domain(isl::union_set uset) const
isl::pw_multi_aff as_pw_multi_aff() const
isl::multi_union_pw_aff scale_down(const isl::multi_val &mv) const
isl::union_pw_multi_aff apply(const isl::union_pw_multi_aff &upma2) const
isl::space space() const
isl::ctx ctx() const
__isl_give isl_union_pw_aff * release()
isl::multi_union_pw_aff set_at(int pos, const isl::union_pw_aff &el) const
isl::union_set domain() const
isl::multi_union_pw_aff scale(const isl::multi_val &mv) const
isl::union_map as_union_map() const
isl::multi_union_pw_aff range_product(const isl::multi_union_pw_aff &multi2) const
static isl::union_pw_aff empty(isl::space space)
isl::multi_union_pw_aff flat_range_product(const isl::multi_union_pw_aff &multi2) const
isl::multi_union_pw_aff set_range_tuple(const isl::id &id) const
__isl_give isl_union_pw_aff * copy() const &
boolean plain_is_empty() const
isl::union_pw_aff coalesce() const
boolean has_range_tuple_id() const
isl::union_pw_aff intersect_domain(isl::space space) const
isl::id range_tuple_id() const
isl::union_pw_multi_aff add_pw_multi_aff(const isl::pw_multi_aff &pma) const
isl::union_pw_aff pullback(isl::union_pw_multi_aff upma) const
isl::union_pw_multi_aff range_factor_domain() const
isl::union_pw_aff gist(isl::union_set context) const
isl_union_pw_multi_aff * ptr
isl::union_pw_multi_aff add_pw_multi_aff(isl::pw_multi_aff pma) const
boolean isa_pw_multi_aff() const
boolean involves_locals() const
isl::union_pw_multi_aff add(isl::union_pw_multi_aff upma2) const
isl::union_set domain() const
isl::multi_union_pw_aff as_multi_union_pw_aff() const
union_pw_multi_aff & operator=(union_pw_multi_aff obj)
isl::union_pw_multi_aff apply(isl::union_pw_multi_aff upma2) const
isl::union_pw_multi_aff union_add(isl::union_pw_multi_aff upma2) const
isl::space space() const
__isl_give isl_union_pw_multi_aff * copy() const &
isl::pw_multi_aff as_pw_multi_aff() const
isl::union_pw_multi_aff subtract_domain(isl::space space) const
isl::union_pw_multi_aff gist(isl::union_set context) const
__isl_give isl_union_pw_multi_aff * release()
isl::union_map as_union_map() const
isl::union_pw_multi_aff intersect_domain_wrapped_range(isl::union_set uset) const
isl::pw_multi_aff_list pw_multi_aff_list() const
isl::union_pw_multi_aff range_product(isl::union_pw_multi_aff upma2) const
isl::pw_multi_aff extract_pw_multi_aff(isl::space space) const
isl::union_pw_multi_aff range_factor_range() const
isl::union_pw_multi_aff sub(isl::union_pw_multi_aff upma2) const
isl::union_pw_multi_aff pullback(isl::union_pw_multi_aff upma2) const
__isl_keep isl_union_pw_multi_aff * get() const
isl::union_pw_multi_aff coalesce() const
isl::union_pw_multi_aff intersect_domain(isl::space space) const
isl::pw_multi_aff_list get_pw_multi_aff_list() const
friend union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr)
isl::union_pw_multi_aff flat_range_product(isl::union_pw_multi_aff upma2) const
isl::union_pw_multi_aff preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const
boolean plain_is_empty() const
isl::union_pw_multi_aff intersect_domain_wrapped_domain(isl::union_set uset) const
isl::union_pw_multi_aff intersect_params(isl::set set) const
isl::union_pw_multi_aff range_factor_domain() const
isl::space get_space() const
static isl::union_pw_multi_aff empty(isl::space space)
friend union_set_list manage(__isl_take isl_union_set_list *ptr)
__isl_give isl_union_set_list * copy() const &
isl::union_set_list drop(unsigned int first, unsigned int n) const
isl::ctx ctx() const
isl::union_set_list add(isl::union_set el) const
isl::union_set_list clear() const
isl::union_set_list concat(isl::union_set_list list2) const
__isl_keep isl_union_set_list * get() const
isl::union_set at(int index) const
isl_union_set_list * ptr
stat foreach(const std::function< stat(isl::union_set)> &fn) const
isl::union_set get_at(int index) const
union_set_list & operator=(union_set_list obj)
__isl_give isl_union_set_list * release()
isl::union_set_list insert(unsigned int pos, isl::union_set el) const
isl_union_set * ptr
__isl_keep isl_union_set * get() const
isl::union_set affine_hull() const
isl::union_set intersect_params(isl::set set) const
friend union_set manage(__isl_take isl_union_set *ptr)
isl::point sample_point() const
isl::ctx ctx() const
stat foreach_point(const std::function< stat(isl::point)> &fn) const
static isl::union_set empty(isl::ctx ctx)
isl::union_set_list to_list() const
stat foreach_set(const std::function< stat(isl::set)> &fn) const
boolean is_disjoint(const isl::union_set &uset2) const
isl::union_set subtract(isl::union_set uset2) const
boolean contains(const isl::space &space) const
isl::union_set universe() const
union_set & operator=(union_set obj)
boolean is_subset(const isl::union_set &uset2) const
boolean isa_set() const
isl::union_set coalesce() const
isl::union_set lexmin() const
isl::union_set intersect(isl::union_set uset2) const
friend union_set manage_copy(__isl_keep isl_union_set *ptr)
isl::set_list set_list() const
isl::union_set apply(isl::union_map umap) const
isl::union_set compute_divs() const
boolean is_equal(const isl::union_set &uset2) const
__isl_give isl_union_set * release()
isl::union_set unite(isl::union_set uset2) const
bool is_null() const
isl::union_set polyhedral_hull() const
isl::set_list get_set_list() const
isl::union_set preimage(isl::multi_aff ma) const
isl::union_set lexmax() const
__isl_give isl_union_set * copy() const &
isl::set extract_set(isl::space space) const
isl::union_map identity() const
boolean every_set(const std::function< boolean(isl::set)> &test) const
isl::space get_space() const
isl::union_pw_multi_aff identity_union_pw_multi_aff() const
isl::union_map unwrap() const
boolean is_strict_subset(const isl::union_set &uset2) const
isl::union_set detect_equalities() const
isl::union_set gist_params(isl::set set) const
boolean is_empty() const
isl::set as_set() const
isl::space space() const
isl::set params() const
isl::union_set gist(isl::union_set context) const
__isl_keep isl_val_list * get() const
isl::ctx ctx() const
friend val_list manage(__isl_take isl_val_list *ptr)
__isl_give isl_val_list * release()
bool is_null() const
isl::val get_at(int index) const
isl_val_list * ptr
isl::val_list add(isl::val el) const
isl::val_list clear() const
stat foreach(const std::function< stat(isl::val)> &fn) const
isl::val at(int index) const
isl::val_list drop(unsigned int first, unsigned int n) const
__isl_give isl_val_list * copy() const &
val_list & operator=(val_list obj)
isl::val_list concat(isl::val_list list2) const
isl::val_list insert(unsigned int pos, isl::val el) const
boolean ne(const isl::val &v2) const
isl::val trunc() const
boolean is_neg() const
friend val manage(__isl_take isl_val *ptr)
static isl::val int_from_ui(isl::ctx ctx, unsigned long u)
boolean eq(const isl::val &v2) const
int sgn() const
isl::val_list to_list() const
isl_val * ptr
isl::val pow2() const
long den_si() const
boolean is_pos() const
boolean is_negone() const
boolean is_neginfty() const
__isl_give isl_val * release()
isl::val gcd(isl::val v2) const
isl::val neg() const
boolean is_divisible_by(const isl::val &v2) const
long get_den_si() const
static isl::val negone(isl::ctx ctx)
isl::val sub(isl::val v2) const
isl::val floor() const
isl::val mul(isl::val v2) const
boolean is_nonneg() const
isl::val inv() const
isl::val add(isl::val v2) const
isl::val div(isl::val v2) const
boolean lt(const isl::val &v2) const
boolean le(const isl::val &v2) const
bool is_null() const
boolean is_nonpos() const
long get_num_si() const
int cmp_si(long i) const
static isl::val one(isl::ctx ctx)
val & operator=(val obj)
isl::val mod(isl::val v2) const
isl::val min(isl::val v2) const
__isl_keep isl_val * get() const
static isl::val neginfty(isl::ctx ctx)
isl::ctx ctx() const
static isl::val nan(isl::ctx ctx)
boolean abs_eq(const isl::val &v2) const
boolean gt(const isl::val &v2) const
boolean is_rat() const
boolean is_infty() const
isl::val max(isl::val v2) const
boolean is_one() const
__isl_give isl_val * copy() const &
boolean is_zero() const
boolean is_int() const
static isl::val infty(isl::ctx ctx)
long num_si() const
static isl::val zero(isl::ctx ctx)
isl::val abs() const
boolean ge(const isl::val &v2) const
boolean is_nan() const
isl::val ceil() const
__isl_give isl_map * isl_map_add_constraint(__isl_take isl_map *map, __isl_take isl_constraint *constraint)
__isl_give isl_constraint * isl_constraint_set_constant_val(__isl_take isl_constraint *constraint, __isl_take isl_val *v)
__isl_null isl_constraint * isl_constraint_free(__isl_take isl_constraint *c)
__isl_give isl_constraint * isl_constraint_copy(__isl_keep isl_constraint *c)
__isl_give isl_constraint * isl_constraint_alloc_equality(__isl_take isl_local_space *ls)
__isl_give isl_constraint * isl_constraint_alloc_inequality(__isl_take isl_local_space *ls)
__isl_give isl_set * isl_set_add_constraint(__isl_take isl_set *set, __isl_take isl_constraint *constraint)
__isl_give isl_constraint * isl_constraint_set_constant_si(__isl_take isl_constraint *constraint, int v)
__isl_give isl_constraint * isl_constraint_set_coefficient_si(__isl_take isl_constraint *constraint, enum isl_dim_type type, int pos, int v)
isl_ctx * isl_constraint_get_ctx(__isl_keep isl_constraint *c)
#define __isl_take
Definition: ctx.h:22
isl_stat
Definition: ctx.h:84
@ isl_stat_error
Definition: ctx.h:85
@ isl_stat_ok
Definition: ctx.h:86
#define __isl_give
Definition: ctx.h:19
#define isl_size_error
Definition: ctx.h:97
#define isl_die(ctx, errno, msg, code)
Definition: ctx.h:137
@ isl_error_invalid
Definition: ctx.h:80
#define __isl_keep
Definition: ctx.h:25
int isl_size
Definition: ctx.h:96
isl_bool
Definition: ctx.h:89
@ isl_bool_false
Definition: ctx.h:91
@ isl_bool_true
Definition: ctx.h:92
@ isl_bool_error
Definition: ctx.h:90
isl_ctx * isl_fixed_box_get_ctx(__isl_keep isl_fixed_box *box)
Definition: isl_box.c:182
__isl_give isl_fixed_box * isl_fixed_box_copy(__isl_keep isl_fixed_box *box)
Definition: isl_box.c:86
__isl_give char * isl_fixed_box_to_str(__isl_keep isl_fixed_box *box)
__isl_export __isl_give isl_multi_val * isl_fixed_box_get_size(__isl_keep isl_fixed_box *box)
Definition: isl_box.c:219
__isl_export __isl_give isl_space * isl_fixed_box_get_space(__isl_keep isl_fixed_box *box)
Definition: isl_box.c:191
__isl_export __isl_give isl_multi_aff * isl_fixed_box_get_offset(__isl_keep isl_fixed_box *box)
Definition: isl_box.c:209
__isl_null isl_fixed_box * isl_fixed_box_free(__isl_take isl_fixed_box *box)
Definition: isl_box.c:35
__isl_export isl_bool isl_fixed_box_is_valid(__isl_keep isl_fixed_box *box)
Definition: isl_box.c:200
__isl_export __isl_give isl_union_access_info * isl_union_access_info_set_schedule(__isl_take isl_union_access_info *access, __isl_take isl_schedule *schedule)
Definition: isl_flow.c:1706
__isl_null isl_union_flow * isl_union_flow_free(__isl_take isl_union_flow *flow)
Definition: isl_flow.c:2108
__isl_export __isl_give isl_union_map * isl_union_flow_get_full_must_dependence(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2137
__isl_null isl_union_access_info * isl_union_access_info_free(__isl_take isl_union_access_info *access)
Definition: isl_flow.c:1512
__isl_export __isl_give isl_union_access_info * isl_union_access_info_set_may_source(__isl_take isl_union_access_info *access, __isl_take isl_union_map *may_source)
Definition: isl_flow.c:1640
isl_ctx * isl_union_access_info_get_ctx(__isl_keep isl_union_access_info *access)
Definition: isl_flow.c:1531
__isl_export __isl_give isl_union_map * isl_union_flow_get_full_may_dependence(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2148
__isl_export __isl_give isl_union_access_info * isl_union_access_info_set_schedule_map(__isl_take isl_union_access_info *access, __isl_take isl_union_map *schedule_map)
Definition: isl_flow.c:1727
__isl_give char * isl_union_access_info_to_str(__isl_keep isl_union_access_info *access)
Definition: isl_flow.c:1852
__isl_give isl_union_flow * isl_union_flow_copy(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2265
__isl_export __isl_give isl_union_access_info * isl_union_access_info_set_must_source(__isl_take isl_union_access_info *access, __isl_take isl_union_map *must_source)
Definition: isl_flow.c:1630
__isl_give isl_union_access_info * isl_union_access_info_copy(__isl_keep isl_union_access_info *access)
Definition: isl_flow.c:1745
__isl_constructor __isl_give isl_union_access_info * isl_union_access_info_from_sink(__isl_take isl_union_map *sink)
Definition: isl_flow.c:1590
__isl_export __isl_give isl_union_access_info * isl_union_access_info_set_kill(__isl_take isl_union_access_info *access, __isl_take isl_union_map *kill)
Definition: isl_flow.c:1650
__isl_give char * isl_union_flow_to_str(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:3269
__isl_export __isl_give isl_union_flow * isl_union_access_info_compute_flow(__isl_take isl_union_access_info *access)
Definition: isl_flow.c:3206
__isl_export __isl_give isl_union_map * isl_union_flow_get_may_no_source(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2210
__isl_export __isl_give isl_union_map * isl_union_flow_get_must_dependence(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2159
__isl_export __isl_give isl_union_map * isl_union_flow_get_may_dependence(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2173
isl_ctx * isl_union_flow_get_ctx(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2101
__isl_export __isl_give isl_union_map * isl_union_flow_get_must_no_source(__isl_keep isl_union_flow *flow)
Definition: isl_flow.c:2198
__isl_export __isl_give ISL_HMAP __isl_take ISL_KEY __isl_take ISL_VAL * val
Definition: hmap.h:32
isl_bool __isl_keep ISL_KEY * key
Definition: hmap.h:27
isl_stat isl_stat(* fn)(__isl_take ISL_KEY *key, __isl_take ISL_VAL *val, void *user)
Definition: hmap.h:37
isl_stat isl_stat(*) void user)
Definition: hmap.h:39
__isl_constructor __isl_give ISL_HMAP int min_size
Definition: hmap.h:18
isl_bool isl_bool(* test)(__isl_keep ISL_KEY *key, __isl_keep ISL_VAL *val, void *user)
Definition: hmap.h:41
__isl_export __isl_keep const char * isl_id_get_name(__isl_keep isl_id *id)
Definition: isl_id.c:41
__isl_give char * isl_multi_id_to_str(__isl_keep isl_multi_id *mi)
__isl_null isl_id * isl_id_free(__isl_take isl_id *id)
Definition: isl_id.c:207
isl_ctx * isl_id_get_ctx(__isl_keep isl_id *id)
Definition: isl_id.c:31
void * isl_id_get_user(__isl_keep isl_id *id)
Definition: isl_id.c:36
__isl_constructor __isl_give isl_multi_id * isl_multi_id_read_from_str(isl_ctx *ctx, const char *str)
__isl_give isl_id * isl_id_copy(isl_id *id)
Definition: isl_id.c:129
__isl_give isl_id * isl_id_alloc(isl_ctx *ctx, __isl_keep const char *name, void *user)
__isl_constructor __isl_give isl_id * isl_id_read_from_str(isl_ctx *ctx, const char *str)
__isl_give char * isl_id_to_str(__isl_keep isl_id *id)
struct isl_multi_id isl_multi_id
Definition: id_type.h:16
__isl_export __isl_give isl_val * isl_set_min_val(__isl_keep isl_set *set, __isl_keep isl_aff *obj)
Definition: isl_ilp.c:600
__isl_export __isl_give isl_val * isl_set_dim_max_val(__isl_take isl_set *set, int pos)
Definition: isl_ilp.c:895
__isl_export __isl_give isl_val * isl_basic_set_dim_max_val(__isl_take isl_basic_set *bset, int pos)
Definition: isl_ilp.c:868
__isl_export __isl_give isl_multi_val * isl_multi_pw_aff_min_multi_val(__isl_take isl_multi_pw_aff *mpa)
__isl_export __isl_give isl_val * isl_set_max_val(__isl_keep isl_set *set, __isl_keep isl_aff *obj)
Definition: isl_ilp.c:612
__isl_export __isl_give isl_multi_val * isl_pw_multi_aff_min_multi_val(__isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_multi_val * isl_multi_pw_aff_max_multi_val(__isl_take isl_multi_pw_aff *mpa)
__isl_export __isl_give isl_val * isl_set_dim_min_val(__isl_take isl_set *set, int pos)
Definition: isl_ilp.c:884
__isl_export __isl_give isl_multi_val * isl_pw_multi_aff_max_multi_val(__isl_take isl_pw_multi_aff *pma)
void GMPQAPI() clear(mp_rat x)
int GMPZAPI() cmp_si(mp_int op1, long op2)
void GMPZAPI() neg(mp_int rop, mp_int op)
void GMPQAPI() mul(mp_rat product, mp_rat multiplier, mp_rat multiplicand)
void GMPZAPI() gcd(mp_int rop, mp_int op1, mp_int op2)
void GMPZAPI() sub(mp_int rop, mp_int op1, mp_int op2)
int GMPQAPI() sgn(mp_rat op)
void GMPZAPI() tdiv_q(mp_int q, mp_int n, mp_int d)
void GMPQAPI() init(mp_rat x)
void GMPZAPI() abs(mp_int rop, mp_int op)
void GMPZAPI() add(mp_int rop, mp_int op1, mp_int op2)
#define ISLPP_ASSERT(test, message)
__isl_give isl_multi_union_pw_aff * isl_multi_union_pw_aff_zero(__isl_take isl_space *space)
Definition: isl_aff.c:8655
static __isl_give isl_val * eval(__isl_keep isl_vec *aff, __isl_keep isl_vec *pnt)
Definition: isl_aff.c:9957
static __isl_give isl_basic_set * affine_hull(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
static int n_arg(struct isl_arg *arg)
Definition: isl_arg.c:1222
enum isl_ast_expr_op_type isl_ast_expr_op_get_type(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:332
enum isl_ast_expr_type isl_ast_expr_get_type(__isl_keep isl_ast_expr *expr)
Definition: isl_ast.c:276
enum isl_ast_node_type isl_ast_node_get_type(__isl_keep isl_ast_node *node)
Definition: isl_ast.c:907
static __isl_give isl_ast_expr * scale(__isl_take isl_ast_expr *expr, __isl_take isl_val *v)
static __isl_give isl_ast_graft * at_each_domain(__isl_take isl_ast_graft *graft, __isl_keep isl_map *executed, __isl_keep isl_ast_build *build)
static __isl_give isl_aff * lower_bound(__isl_keep isl_constraint *c, int pos, __isl_keep isl_ast_build *build)
static int coalesce(isl_ctx *ctx, int n, struct isl_coalesce_info *info)
static void drop(struct isl_coalesce_info *info)
Definition: isl_coalesce.c:367
static isl_stat compute_flow(__isl_take isl_map *map, void *user)
Definition: isl_flow.c:2494
static __isl_give isl_qpolynomial * move_dims(__isl_take isl_qpolynomial *qp, void *user)
Definition: isl_fold.c:1719
static __isl_give isl_qpolynomial * drop_dims(__isl_take isl_qpolynomial *qp, void *user)
Definition: isl_fold.c:373
static __isl_give isl_qpolynomial * insert_dims(__isl_take isl_qpolynomial *qp, void *user)
Definition: isl_fold.c:412
static __isl_give isl_map * add_constraint(__isl_keep isl_stream *s, struct vars *v, __isl_take isl_map *map, int rational)
Definition: isl_input.c:1988
static __isl_give isl_map * compute_divs(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:7903
static __isl_give isl_map * unbind_params_insert_domain(__isl_take isl_set *set, __isl_take isl_multi_id *tuple)
Definition: isl_map.c:12802
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_map.c:70
#define isl_basic_set_list
#define isl_set_list
static isl_stat preimage(isl_int *c, __isl_keep isl_mat *T)
static void subtract(__isl_keep isl_mat *M, __isl_keep isl_mat **U, __isl_keep isl_mat **Q, unsigned row, unsigned i, unsigned j, isl_int m)
Definition: isl_mat.c:599
static __isl_give isl_mat * eliminate(__isl_take isl_mat *mat, int row, int col)
Definition: isl_mat.c:725
static isl_stat foreach_point(struct isl_scan_callback *cb, __isl_take isl_vec *sample)
Definition: isl_point.c:565
static __isl_give isl_schedule_node * align_params(__isl_take isl_schedule_node *node, void *user)
Definition: isl_schedule.c:311
enum isl_schedule_node_type isl_schedule_node_get_type(__isl_keep isl_schedule_node *node)
static __isl_give isl_schedule_node * compute_schedule(isl_schedule_node *node, struct isl_sched_graph *graph)
static void set_validity(struct isl_sched_edge *edge)
static int at(int i, void *user)
static __isl_give isl_space * set_id(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
Definition: isl_space.c:264
static __isl_keep isl_id * tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_space.c:970
static __isl_keep isl_id * get_id(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
Definition: isl_space.c:292
static __isl_give isl_set * split(__isl_take isl_set *empty, __isl_take isl_set *min_expr, __isl_take isl_mat *cst)
Definition: isl_tab_pip.c:4881
static int get_div(struct isl_tab *tab, struct isl_context *context, struct isl_vec *div)
Definition: isl_tab_pip.c:2150
static bool is_equal(const T &a, const T &b)
Definition: isl_test2.cc:99
const char * tile
Definition: isl_test.c:10699
enum isl_fold type
Definition: isl_test.c:4017
const char * schedule
Definition: isl_test.c:10697
const char * set
Definition: isl_test.c:1356
const char * condition
Definition: isl_test.c:4846
const char * ma
Definition: isl_test.c:7535
const char * map
Definition: isl_test.c:1783
int equal
Definition: isl_test.c:7868
const char * pma
Definition: isl_test.c:3169
const char * conditional_validity
Definition: isl_test.c:4847
const char * offset
Definition: isl_test.c:1569
const char * name
Definition: isl_test.c:10938
const char * point
Definition: isl_test.c:10700
const char * context
Definition: isl_test.c:1784
const char * aff
Definition: isl_test.c:7278
const char * obj
Definition: isl_test.c:3316
const char * lexmin
Definition: isl_test.c:3038
const char * map2
Definition: isl_test.c:361
const char * tuple
Definition: isl_test.c:7008
const char * sizes
Definition: isl_test.c:10698
const char * res
Definition: isl_test.c:775
const char * set2
Definition: isl_test.c:4204
const char * arg
Definition: isl_test.c:774
const char * gist
Definition: isl_test.c:1785
const char * mupa
Definition: isl_test.c:7365
const char * f
Definition: isl_test.c:8642
const char * id
Definition: isl_test.c:7279
const char * str
Definition: isl_test.c:2095
static isl_stat project_out(__isl_take isl_map *map, void *user)
static __isl_give isl_map * universe(__isl_take isl_map *map)
static __isl_give isl_space * identity(__isl_take isl_space *space)
#define isl_union_set_list
__isl_give isl_local_space * isl_local_space_from_space(__isl_take isl_space *space)
isl_ctx * isl_local_space_get_ctx(__isl_keep isl_local_space *ls)
__isl_null isl_local_space * isl_local_space_free(__isl_take isl_local_space *ls)
__isl_give isl_local_space * isl_local_space_copy(__isl_keep isl_local_space *ls)
__isl_export isl_bool isl_map_has_range_tuple_id(__isl_keep isl_map *map)
Definition: isl_map.c:819
__isl_give isl_basic_set * isl_basic_map_domain(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:5983
__isl_export __isl_give isl_basic_map * isl_basic_map_affine_hull(__isl_take isl_basic_map *bmap)
__isl_overload __isl_give isl_map * isl_map_preimage_range_multi_aff(__isl_take isl_map *map, __isl_take isl_multi_aff *ma)
Definition: isl_map.c:14069
__isl_export __isl_give isl_map * isl_map_detect_equalities(__isl_take isl_map *map)
__isl_export isl_bool isl_basic_set_is_wrapping(__isl_keep isl_basic_set *bset)
Definition: isl_map.c:12126
__isl_overload __isl_give isl_map * isl_map_eq_at_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa)
Definition: isl_aff.c:7512
__isl_overload __isl_give isl_map * isl_map_set_domain_tuple_id(__isl_take isl_map *map, __isl_take isl_id *id)
Definition: isl_map.c:768
__isl_export __isl_give isl_map * isl_map_domain_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:10978
__isl_export __isl_give isl_map * isl_map_intersect_range(__isl_take isl_map *map, __isl_take isl_set *set)
Definition: isl_map.c:8325
__isl_export isl_bool isl_basic_map_is_empty(__isl_keep isl_basic_map *bmap)
Definition: isl_map.c:9379
__isl_give isl_map * isl_map_sum(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:4900
__isl_give isl_basic_map * isl_basic_map_equate(__isl_take isl_basic_map *bmap, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
Definition: isl_map.c:13313
__isl_export __isl_give isl_set * isl_map_domain(__isl_take isl_map *bmap)
Definition: isl_map.c:8129
__isl_export __isl_give isl_map * isl_map_union(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:8246
__isl_export isl_size isl_map_n_basic_map(__isl_keep isl_map *map)
Definition: isl_map.c:11252
__isl_export __isl_give isl_multi_pw_aff * isl_map_max_multi_pw_aff(__isl_take isl_map *map)
Definition: isl_aff.c:6794
__isl_give isl_pw_aff * isl_map_dim_min(__isl_take isl_map *map, int pos)
Definition: isl_map.c:7484
__isl_give isl_basic_map * isl_basic_map_equal(__isl_take isl_space *space, unsigned n_equal)
Definition: isl_map.c:5234
__isl_export isl_bool isl_map_is_single_valued(__isl_keep isl_map *map)
Definition: isl_map.c:11961
__isl_export __isl_give isl_set * isl_set_flatten(__isl_take isl_set *set)
Definition: isl_map.c:12350
__isl_export __isl_give isl_map * isl_map_apply_domain(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:8598
isl_bool isl_map_involves_dims(__isl_keep isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:2962
__isl_export __isl_give isl_map * isl_map_range_factor_range(__isl_take isl_map *map)
Definition: isl_map.c:11131
__isl_export __isl_give isl_map * isl_map_subtract(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_export __isl_give isl_id * isl_map_get_domain_tuple_id(__isl_keep isl_map *map)
Definition: isl_map.c:832
__isl_export __isl_give isl_map * isl_map_range_reverse(__isl_take isl_map *map)
Definition: isl_map.c:7190
__isl_export __isl_give isl_map * isl_map_intersect_params(__isl_take isl_map *map, __isl_take isl_set *params)
Definition: isl_map.c:3975
__isl_export __isl_give isl_basic_map * isl_basic_map_apply_range(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
Definition: isl_map.c:4753
__isl_export __isl_give isl_map * isl_multi_aff_as_map(__isl_take isl_multi_aff *ma)
Definition: isl_aff_map.c:234
__isl_export __isl_give isl_map * isl_map_intersect(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:3958
__isl_export __isl_give isl_basic_map * isl_basic_map_apply_domain(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
Definition: isl_map.c:4819
__isl_export isl_bool isl_map_is_empty(__isl_keep isl_map *map)
Definition: isl_map.c:9136
__isl_export __isl_give isl_basic_set * isl_basic_set_flatten(__isl_take isl_basic_set *bset)
Definition: isl_map.c:12304
__isl_export __isl_give isl_map * isl_map_universe(__isl_take isl_space *space)
Definition: isl_map.c:6348
isl_bool isl_map_has_equal_space(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_export __isl_give isl_map * isl_map_zip(__isl_take isl_map *map)
Definition: isl_map.c:13122
__isl_export __isl_give isl_map * isl_map_gist(__isl_take isl_map *map, __isl_take isl_map *context)
__isl_export isl_bool isl_basic_map_is_subset(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
Definition: isl_map.c:9088
__isl_export __isl_give isl_map * isl_map_apply_range(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:8612
__isl_export __isl_give isl_basic_map * isl_map_sample(__isl_take isl_map *map)
Definition: isl_sample.c:1270
__isl_export isl_bool isl_basic_map_is_equal(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2)
Definition: isl_map.c:9115
__isl_export __isl_give isl_set * isl_map_bind_domain(__isl_take isl_map *map, __isl_take isl_multi_id *tuple)
Definition: isl_map.c:12768
__isl_export __isl_give isl_map * isl_map_factor_domain(__isl_take isl_map *map)
Definition: isl_map.c:10998
__isl_overload __isl_give isl_map * isl_map_preimage_domain_pw_multi_aff(__isl_take isl_map *map, __isl_take isl_pw_multi_aff *pma)
Definition: isl_map.c:14181
__isl_give isl_map * isl_map_copy(__isl_keep isl_map *map)
Definition: isl_map.c:1494
__isl_give isl_map * isl_map_move_dims(__isl_take isl_map *map, enum isl_dim_type dst_type, unsigned dst_pos, enum isl_dim_type src_type, unsigned src_pos, unsigned n)
Definition: isl_map.c:4335
__isl_export __isl_give isl_basic_map * isl_basic_map_flatten(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:12291
__isl_export __isl_give isl_map * isl_set_identity(__isl_take isl_set *set)
Definition: isl_map.c:8898
__isl_give isl_map * isl_map_lower_bound_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value)
Definition: isl_map.c:6791
__isl_give isl_map * isl_map_lex_gt(__isl_take isl_space *set_space)
Definition: isl_map.c:5413
__isl_export __isl_give isl_map * isl_map_domain_factor_domain(__isl_take isl_map *map)
Definition: isl_map.c:11056
__isl_null isl_basic_map * isl_basic_map_free(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:1503
isl_ctx * isl_basic_map_get_ctx(__isl_keep isl_basic_map *bmap)
Definition: isl_map.c:381
__isl_constructor __isl_give isl_basic_map * isl_basic_map_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_map * isl_map_intersect_range_factor_domain(__isl_take isl_map *map, __isl_take isl_map *factor)
Definition: isl_map.c:8493
__isl_export __isl_give isl_map * isl_map_complement(__isl_take isl_map *map)
__isl_export __isl_give isl_space * isl_map_get_space(__isl_keep isl_map *map)
Definition: isl_map.c:598
__isl_give isl_map * isl_map_from_domain_and_range(__isl_take isl_set *domain, __isl_take isl_set *range)
Definition: isl_map.c:6228
__isl_give isl_basic_map * isl_basic_map_from_aff(__isl_take isl_aff *aff)
Definition: isl_aff_map.c:110
__isl_export __isl_give isl_map * isl_map_uncurry(__isl_take isl_map *map)
Definition: isl_map.c:13263
isl_ctx * isl_map_get_ctx(__isl_keep isl_map *map)
Definition: isl_map.c:391
__isl_export __isl_give isl_map * isl_map_intersect_domain(__isl_take isl_map *map, __isl_take isl_set *set)
Definition: isl_map.c:8353
__isl_give char * isl_map_to_str(__isl_keep isl_map *map)
__isl_give char * isl_basic_map_to_str(__isl_keep isl_basic_map *bmap)
__isl_give isl_map * isl_map_lex_lt(__isl_take isl_space *set_space)
Definition: isl_map.c:5357
__isl_give isl_map * isl_map_from_aff(__isl_take isl_aff *aff)
Definition: isl_aff_map.c:118
__isl_export isl_stat isl_map_foreach_basic_map(__isl_keep isl_map *map, isl_stat(*fn)(__isl_take isl_basic_map *bmap, void *user), void *user)
Definition: isl_map.c:11262
__isl_overload __isl_give isl_map * isl_map_lower_bound_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *lower)
Definition: isl_map.c:7116
__isl_export isl_bool isl_set_is_wrapping(__isl_keep isl_set *set)
Definition: isl_map.c:12134
__isl_export __isl_give isl_basic_map * isl_basic_map_sample(__isl_take isl_basic_map *bmap)
Definition: isl_sample.c:1243
__isl_export __isl_give isl_set * isl_map_deltas(__isl_take isl_map *map)
Definition: isl_map.c:8777
__isl_export __isl_give isl_map * isl_map_lexmin(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_fix_si(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int value)
Definition: isl_map.c:6491
__isl_overload __isl_give isl_map * isl_map_preimage_domain_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa)
Definition: isl_map.c:14253
__isl_overload __isl_give isl_map * isl_map_lex_lt_at_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa)
__isl_export __isl_give isl_basic_map * isl_basic_map_flatten_domain(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:12309
__isl_give isl_map * isl_map_range_map(__isl_take isl_map *map)
Definition: isl_map.c:6158
__isl_export __isl_give isl_map * isl_map_intersect_domain_factor_domain(__isl_take isl_map *map, __isl_take isl_map *factor)
Definition: isl_map.c:8463
__isl_export __isl_give isl_basic_map * isl_basic_map_reverse(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:3988
__isl_export __isl_give isl_pw_multi_aff * isl_map_lexmin_pw_multi_aff(__isl_take isl_map *map)
__isl_export __isl_give isl_map * isl_map_intersect_domain_factor_range(__isl_take isl_map *map, __isl_take isl_map *factor)
Definition: isl_map.c:8478
__isl_export isl_bool isl_map_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
Definition: isl_map.c:9237
__isl_export __isl_give isl_map * isl_map_empty(__isl_take isl_space *space)
Definition: isl_map.c:6338
__isl_export __isl_give isl_map * isl_set_unwrap(__isl_take isl_set *set)
Definition: isl_map.c:12239
__isl_give isl_map * isl_map_flat_range_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:11168
__isl_constructor __isl_give isl_map * isl_map_read_from_str(isl_ctx *ctx, const char *str)
__isl_give isl_pw_aff * isl_map_dim_max(__isl_take isl_map *map, int pos)
Definition: isl_map.c:7493
__isl_overload __isl_give isl_map * isl_map_set_range_tuple_id(__isl_take isl_map *map, __isl_take isl_id *id)
Definition: isl_map.c:776
__isl_export __isl_give isl_basic_map * isl_map_affine_hull(__isl_take isl_map *map)
__isl_overload __isl_give isl_map * isl_map_lex_le_at_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa)
__isl_export __isl_give isl_map * isl_space_universe_map(__isl_take isl_space *space)
Definition: isl_map.c:6361
isl_bool isl_map_can_curry(__isl_keep isl_map *map)
Definition: isl_map.c:13151
__isl_export __isl_give isl_set * isl_map_wrap(__isl_take isl_map *map)
Definition: isl_map.c:12213
__isl_export __isl_give isl_map * isl_map_factor_range(__isl_take isl_map *map)
Definition: isl_map.c:11027
__isl_export __isl_give isl_map * isl_map_curry(__isl_take isl_map *map)
Definition: isl_map.c:13187
__isl_give isl_map * isl_map_order_lt(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
Definition: isl_map.c:13517
__isl_give isl_map * isl_map_align_params(__isl_take isl_map *map, __isl_take isl_space *model)
Definition: isl_map.c:12473
__isl_export __isl_give isl_map * isl_map_flatten_range(__isl_take isl_map *map)
Definition: isl_map.c:12384
isl_size isl_map_dim(__isl_keep isl_map *map, enum isl_dim_type type)
Definition: isl_map.c:110
__isl_export __isl_give isl_map * isl_map_domain_factor_range(__isl_take isl_map *map)
Definition: isl_map.c:11081
isl_bool isl_map_has_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type)
Definition: isl_map.c:805
__isl_give isl_map * isl_map_set_tuple_id(__isl_take isl_map *map, enum isl_dim_type type, __isl_take isl_id *id)
Definition: isl_map.c:754
__isl_export isl_bool isl_map_is_injective(__isl_keep isl_map *map)
Definition: isl_map.c:11986
__isl_export isl_bool isl_map_is_strict_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
Definition: isl_map.c:9261
__isl_export __isl_give isl_basic_map * isl_basic_map_intersect_domain(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset)
Definition: isl_map.c:3576
__isl_give isl_map * isl_map_lex_le(__isl_take isl_space *set_space)
Definition: isl_map.c:5362
__isl_export __isl_give isl_map * isl_map_lexmax(__isl_take isl_map *map)
__isl_export __isl_give isl_map * isl_map_reverse(__isl_take isl_map *map)
Definition: isl_map.c:7182
__isl_export __isl_give isl_map * isl_map_gist_params(__isl_take isl_map *map, __isl_take isl_set *context)
__isl_export __isl_give isl_map * isl_map_flatten(__isl_take isl_map *map)
Definition: isl_map.c:12339
__isl_export isl_bool isl_map_has_domain_tuple_id(__isl_keep isl_map *map)
Definition: isl_map.c:812
__isl_export __isl_give isl_map * isl_map_flatten_domain(__isl_take isl_map *map)
Definition: isl_map.c:12371
__isl_give isl_map * isl_map_upper_bound_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value)
Definition: isl_map.c:6797
__isl_export isl_size isl_map_range_tuple_dim(__isl_keep isl_map *map)
Definition: isl_map.c:124
__isl_export __isl_give isl_map * isl_map_range_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:10988
__isl_overload __isl_give isl_map * isl_map_upper_bound_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *upper)
Definition: isl_map.c:7126
__isl_overload __isl_give isl_map * isl_map_lex_ge_at_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa)
__isl_export __isl_give isl_map * isl_set_translation(__isl_take isl_set *deltas)
Definition: isl_map.c:8863
__isl_give isl_map * isl_map_from_range(__isl_take isl_set *set)
Definition: isl_map.c:6204
__isl_export __isl_give isl_pw_multi_aff * isl_map_lexmax_pw_multi_aff(__isl_take isl_map *map)
__isl_export __isl_give isl_basic_map * isl_map_unshifted_simple_hull(__isl_take isl_map *map)
__isl_overload __isl_give isl_map * isl_map_preimage_domain_multi_aff(__isl_take isl_map *map, __isl_take isl_multi_aff *ma)
Definition: isl_map.c:14057
__isl_export __isl_give isl_id * isl_map_get_range_tuple_id(__isl_keep isl_map *map)
Definition: isl_map.c:839
__isl_give isl_map * isl_map_domain_map(__isl_take isl_map *map)
Definition: isl_map.c:6152
__isl_give isl_val * isl_basic_map_plain_get_val_if_fixed(__isl_keep isl_basic_map *bmap, enum isl_dim_type type, unsigned pos)
Definition: isl_map.c:10113
__isl_give isl_map * isl_map_equate(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
Definition: isl_map.c:13327
__isl_export isl_size isl_map_domain_tuple_dim(__isl_keep isl_map *map)
Definition: isl_map.c:117
__isl_give isl_basic_map * isl_basic_map_fix_val(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, __isl_take isl_val *v)
Definition: isl_map.c:6512
__isl_export __isl_give isl_map * isl_map_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
Definition: isl_map.c:10942
__isl_export isl_bool isl_map_is_disjoint(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_give isl_map * isl_map_lex_ge(__isl_take isl_space *set_space)
Definition: isl_map.c:5418
__isl_export __isl_give isl_map * isl_map_range_factor_domain(__isl_take isl_map *map)
Definition: isl_map.c:11106
__isl_give isl_map * isl_map_from_domain(__isl_take isl_set *set)
Definition: isl_map.c:6217
__isl_give isl_map * isl_map_fix_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value)
Definition: isl_map.c:6616
__isl_overload __isl_give isl_map * isl_map_lex_gt_at_multi_pw_aff(__isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa)
__isl_overload __isl_give isl_map * isl_map_preimage_range_pw_multi_aff(__isl_take isl_map *map, __isl_take isl_pw_multi_aff *pma)
Definition: isl_map.c:14193
__isl_export __isl_give isl_map * isl_map_project_out_all_params(__isl_take isl_map *map)
__isl_export __isl_give isl_map * isl_map_coalesce(__isl_take isl_map *map)
__isl_give isl_map * isl_map_identity(__isl_take isl_space *space)
Definition: isl_map.c:8893
__isl_give isl_map * isl_map_add_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned n)
Definition: isl_map.c:4193
__isl_null isl_map * isl_map_free(__isl_take isl_map *map)
Definition: isl_map.c:6421
__isl_give isl_basic_map_list * isl_map_get_basic_map_list(__isl_keep isl_map *map)
Definition: isl_map.c:10577
__isl_export __isl_give isl_map * isl_map_gist_domain(__isl_take isl_map *map, __isl_take isl_set *context)
__isl_export __isl_give isl_basic_map * isl_basic_map_gist(__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context)
__isl_constructor __isl_give isl_map * isl_map_from_basic_map(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:3495
__isl_give isl_map * isl_map_floordiv_val(__isl_take isl_map *map, __isl_take isl_val *d)
Definition: isl_map.c:5082
__isl_give isl_map * isl_map_project_out(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:4579
__isl_export __isl_give isl_fixed_box * isl_map_get_range_simple_fixed_box_hull(__isl_keep isl_map *map)
Definition: isl_box.c:384
__isl_export __isl_give isl_map * isl_set_insert_domain(__isl_take isl_set *set, __isl_take isl_space *domain)
Definition: isl_map.c:12863
__isl_export __isl_give isl_basic_map * isl_basic_map_intersect_range(__isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset)
Definition: isl_map.c:3625
__isl_export __isl_give isl_map * isl_map_intersect_range_factor_range(__isl_take isl_map *map, __isl_take isl_map *factor)
Definition: isl_map.c:8508
__isl_give isl_basic_map * isl_basic_map_copy(__isl_keep isl_basic_map *bmap)
Definition: isl_map.c:1479
__isl_export isl_bool isl_map_is_bijective(__isl_keep isl_map *map)
Definition: isl_map.c:12012
__isl_export __isl_give isl_basic_map * isl_basic_map_detect_equalities(__isl_take isl_basic_map *bmap)
__isl_export __isl_give isl_basic_map * isl_basic_map_flatten_range(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:12323
__isl_export __isl_give isl_basic_map * isl_map_polyhedral_hull(__isl_take isl_map *map)
__isl_export __isl_give isl_multi_pw_aff * isl_map_min_multi_pw_aff(__isl_take isl_map *map)
Definition: isl_aff.c:6785
__isl_export __isl_give isl_fixed_box * isl_map_get_range_lattice_tile(__isl_keep isl_map *map)
Definition: isl_box.c:454
__isl_export __isl_give isl_map * isl_basic_map_union(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
Definition: isl_map.c:9463
__isl_export __isl_give isl_basic_set * isl_basic_map_deltas(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:8679
__isl_export __isl_give isl_basic_map * isl_basic_map_intersect(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
Definition: isl_map.c:3704
__isl_give isl_basic_map * isl_basic_map_from_domain_and_range(__isl_take isl_basic_set *domain, __isl_take isl_basic_set *range)
Definition: isl_map.c:6222
__isl_export __isl_give isl_map * isl_basic_map_lexmin(__isl_take isl_basic_map *bmap)
__isl_export __isl_give isl_set * isl_map_bind_range(__isl_take isl_map *map, __isl_take isl_multi_id *tuple)
Definition: isl_map.c:12789
__isl_export __isl_give isl_set * isl_map_range(__isl_take isl_map *map)
Definition: isl_map.c:6109
__isl_give isl_id * isl_map_get_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type)
Definition: isl_map.c:824
isl_bool isl_map_has_tuple_name(__isl_keep isl_map *map, enum isl_dim_type type)
Definition: isl_map.c:736
__isl_export __isl_give isl_map * isl_basic_map_lexmax(__isl_take isl_basic_map *bmap)
Definition: isl_map.c:7391
__isl_export isl_bool isl_map_is_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2)
__isl_give isl_basic_map * isl_basic_map_universe(__isl_take isl_space *space)
Definition: isl_map.c:6283
__isl_give isl_map * isl_map_from_multi_aff(__isl_take isl_multi_aff *maff)
Definition: isl_aff_map.c:224
struct isl_set isl_set
Definition: map_type.h:26
struct isl_basic_set isl_basic_set
Definition: map_type.h:20
These are automatically generated checked C++ bindings for isl.
Definition: ISLTools.h:45
aff manage_copy(__isl_keep isl_aff *ptr)
boolean manage(isl_bool val)
std::ostream & operator<<(std::ostream &os, const aff &obj)
__isl_give char * isl_point_to_str(__isl_keep isl_point *pnt)
__isl_give isl_point * isl_point_copy(__isl_keep isl_point *pnt)
Definition: isl_point.c:141
__isl_null isl_point * isl_point_free(__isl_take isl_point *pnt)
Definition: isl_point.c:150
__isl_give isl_point * isl_point_zero(__isl_take isl_space *space)
Definition: isl_point.c:98
isl_ctx * isl_point_get_ctx(__isl_keep isl_point *pnt)
Definition: isl_point.c:32
__isl_export __isl_give isl_multi_val * isl_point_get_multi_val(__isl_keep isl_point *pnt)
Definition: isl_point.c:423
__isl_give isl_val * isl_point_get_coordinate_val(__isl_keep isl_point *pnt, enum isl_dim_type type, int pos)
__isl_give char * isl_schedule_to_str(__isl_keep isl_schedule *schedule)
__isl_give isl_schedule * isl_schedule_align_params(__isl_take isl_schedule *schedule, __isl_take isl_space *space)
Definition: isl_schedule.c:322
__isl_give char * isl_schedule_constraints_to_str(__isl_keep isl_schedule_constraints *sc)
__isl_export __isl_give isl_schedule_node * isl_schedule_get_root(__isl_keep isl_schedule *schedule)
Definition: isl_schedule.c:212
__isl_export __isl_give isl_schedule_constraints * isl_schedule_constraints_set_proximity(__isl_take isl_schedule_constraints *sc, __isl_take isl_union_map *proximity)
__isl_null isl_schedule_constraints * isl_schedule_constraints_free(__isl_take isl_schedule_constraints *sc)
__isl_null isl_schedule * isl_schedule_free(__isl_take isl_schedule *sched)
Definition: isl_schedule.c:121
__isl_export __isl_give isl_union_map * isl_schedule_constraints_get_validity(__isl_keep isl_schedule_constraints *sc)
__isl_export __isl_give isl_schedule_constraints * isl_schedule_constraints_set_conditional_validity(__isl_take isl_schedule_constraints *sc, __isl_take isl_union_map *condition, __isl_take isl_union_map *validity)
__isl_export __isl_give isl_union_map * isl_schedule_get_map(__isl_keep isl_schedule *sched)
Definition: isl_schedule.c:457
__isl_export __isl_give isl_schedule * isl_schedule_from_domain(__isl_take isl_union_set *domain)
Definition: isl_schedule.c:72
__isl_export __isl_give isl_union_set * isl_schedule_constraints_get_domain(__isl_keep isl_schedule_constraints *sc)
__isl_give isl_schedule * isl_schedule_gist_domain_params(__isl_take isl_schedule *schedule, __isl_take isl_set *context)
Definition: isl_schedule.c:425
__isl_export __isl_give isl_schedule_constraints * isl_schedule_constraints_set_context(__isl_take isl_schedule_constraints *sc, __isl_take isl_set *context)
__isl_give isl_schedule_constraints * isl_schedule_constraints_copy(__isl_keep isl_schedule_constraints *sc)
__isl_give isl_schedule * isl_schedule_intersect_domain(__isl_take isl_schedule *schedule, __isl_take isl_union_set *domain)
Definition: isl_schedule.c:395
__isl_export __isl_give isl_set * isl_schedule_constraints_get_context(__isl_keep isl_schedule_constraints *sc)
__isl_give isl_schedule * isl_schedule_copy(__isl_keep isl_schedule *sched)
Definition: isl_schedule.c:93
__isl_give isl_schedule * isl_schedule_sequence(__isl_take isl_schedule *schedule1, __isl_take isl_schedule *schedule2)
Definition: isl_schedule.c:654
__isl_export __isl_give isl_union_map * isl_schedule_constraints_get_conditional_validity_condition(__isl_keep isl_schedule_constraints *sc)
__isl_export __isl_give isl_union_map * isl_schedule_constraints_get_conditional_validity(__isl_keep isl_schedule_constraints *sc)
isl_ctx * isl_schedule_get_ctx(__isl_keep isl_schedule *sched)
Definition: isl_schedule.c:160
isl_ctx * isl_schedule_constraints_get_ctx(__isl_keep isl_schedule_constraints *sc)
__isl_export __isl_give isl_union_map * isl_schedule_constraints_get_proximity(__isl_keep isl_schedule_constraints *sc)
__isl_export __isl_give isl_union_map * isl_schedule_constraints_get_coincidence(__isl_keep isl_schedule_constraints *sc)
__isl_export __isl_give isl_union_set * isl_schedule_get_domain(__isl_keep isl_schedule *schedule)
Definition: isl_schedule.c:231
__isl_export __isl_give isl_schedule_constraints * isl_schedule_constraints_on_domain(__isl_take isl_union_set *domain)
__isl_overload __isl_give isl_schedule * isl_schedule_pullback_union_pw_multi_aff(__isl_take isl_schedule *schedule, __isl_take isl_union_pw_multi_aff *upma)
Definition: isl_schedule.c:348
__isl_constructor __isl_give isl_schedule * isl_schedule_read_from_str(isl_ctx *ctx, const char *str)
__isl_constructor __isl_give isl_schedule_constraints * isl_schedule_constraints_read_from_str(isl_ctx *ctx, const char *str)
__isl_give isl_schedule * isl_schedule_insert_partial_schedule(__isl_take isl_schedule *schedule, __isl_take isl_multi_union_pw_aff *partial)
Definition: isl_schedule.c:485
__isl_export __isl_give isl_schedule_constraints * isl_schedule_constraints_set_coincidence(__isl_take isl_schedule_constraints *sc, __isl_take isl_union_map *coincidence)
__isl_export __isl_give isl_schedule_constraints * isl_schedule_constraints_set_validity(__isl_take isl_schedule_constraints *sc, __isl_take isl_union_map *validity)
__isl_export __isl_give isl_schedule * isl_schedule_constraints_compute_schedule(__isl_take isl_schedule_constraints *sc)
__isl_export isl_size isl_schedule_node_band_n_member(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_insert_context(__isl_take isl_schedule_node *node, __isl_take isl_set *context)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_insert_mark(__isl_take isl_schedule_node *node, __isl_take isl_id *mark)
__isl_export __isl_give isl_multi_union_pw_aff * isl_schedule_node_band_get_partial_schedule(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_scale_down(__isl_take isl_schedule_node *node, __isl_take isl_multi_val *mv)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_split(__isl_take isl_schedule_node *node, int pos)
__isl_export isl_bool isl_schedule_node_has_previous_sibling(__isl_keep isl_schedule_node *node)
__isl_export isl_bool isl_schedule_node_is_equal(__isl_keep isl_schedule_node *node1, __isl_keep isl_schedule_node *node2)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_first_child(__isl_take isl_schedule_node *node)
__isl_export __isl_give isl_multi_union_pw_aff * isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_insert_filter(__isl_take isl_schedule_node *node, __isl_take isl_union_set *filter)
__isl_export isl_size isl_schedule_node_n_children(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_get_shared_ancestor(__isl_keep isl_schedule_node *node1, __isl_keep isl_schedule_node *node2)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_ancestor(__isl_take isl_schedule_node *node, int generation)
__isl_export __isl_give isl_union_map * isl_schedule_node_expansion_get_expansion(__isl_keep isl_schedule_node *node)
__isl_export isl_size isl_schedule_node_get_tree_depth(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_member_set_coincident(__isl_take isl_schedule_node *node, int pos, int coincident)
__isl_export __isl_give isl_schedule * isl_schedule_node_get_schedule(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_order_before(__isl_take isl_schedule_node *node, __isl_take isl_union_set *filter)
__isl_give isl_union_map * isl_schedule_node_get_prefix_schedule_relation(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_previous_sibling(__isl_take isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_tile(__isl_take isl_schedule_node *node, __isl_take isl_multi_val *sizes)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_insert_guard(__isl_take isl_schedule_node *node, __isl_take isl_set *context)
__isl_export isl_stat isl_schedule_node_foreach_descendant_top_down(__isl_keep isl_schedule_node *node, isl_bool(*fn)(__isl_keep isl_schedule_node *node, void *user), void *user)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_set_permutable(__isl_take isl_schedule_node *node, int permutable)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_mod(__isl_take isl_schedule_node *node, __isl_take isl_multi_val *mv)
__isl_export __isl_give isl_union_map * isl_schedule_node_extension_get_extension(__isl_keep isl_schedule_node *node)
__isl_export isl_stat isl_schedule_node_foreach_ancestor_top_down(__isl_keep isl_schedule_node *node, isl_stat(*fn)(__isl_keep isl_schedule_node *node, void *user), void *user)
isl_size isl_schedule_node_get_schedule_depth(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_union_set * isl_schedule_node_domain_get_domain(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_union_pw_multi_aff * isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(__isl_keep isl_schedule_node *node)
__isl_export isl_size isl_schedule_node_get_child_position(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_graft_before(__isl_take isl_schedule_node *node, __isl_take isl_schedule_node *graft)
__isl_export isl_bool isl_schedule_node_has_children(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_insert_partial_schedule(__isl_take isl_schedule_node *node, __isl_take isl_multi_union_pw_aff *schedule)
__isl_give isl_id * isl_schedule_node_mark_get_id(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_union_pw_multi_aff * isl_schedule_node_expansion_get_contraction(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_member_set_ast_loop_type(__isl_take isl_schedule_node *node, int pos, enum isl_ast_loop_type type)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_from_extension(__isl_take isl_union_map *extension)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_map_descendant_bottom_up(__isl_take isl_schedule_node *node, __isl_give isl_schedule_node *(*fn)(__isl_take isl_schedule_node *node, void *user), void *user)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_root(__isl_take isl_schedule_node *node)
__isl_export isl_bool isl_schedule_node_is_subtree_anchored(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_order_after(__isl_take isl_schedule_node *node, __isl_take isl_union_set *filter)
__isl_export __isl_give isl_union_set * isl_schedule_node_filter_get_filter(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_set * isl_schedule_node_band_get_ast_isolate_option(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_shift(__isl_take isl_schedule_node *node, __isl_take isl_multi_union_pw_aff *shift)
__isl_export __isl_give isl_set * isl_schedule_node_context_get_context(__isl_keep isl_schedule_node *node)
__isl_export isl_bool isl_schedule_node_has_next_sibling(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_scale(__isl_take isl_schedule_node *node, __isl_take isl_multi_val *mv)
__isl_give isl_union_set * isl_schedule_node_get_domain(__isl_keep isl_schedule_node *node)
__isl_export isl_bool isl_schedule_node_band_member_get_coincident(__isl_keep isl_schedule_node *node, int pos)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_from_domain(__isl_take isl_union_set *domain)
__isl_export isl_bool isl_schedule_node_every_descendant(__isl_keep isl_schedule_node *node, isl_bool(*test)(__isl_keep isl_schedule_node *node, void *user), void *user)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_parent(__isl_take isl_schedule_node *node)
__isl_export isl_bool isl_schedule_node_band_get_permutable(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_union_set * isl_schedule_node_band_get_ast_build_options(__isl_keep isl_schedule_node *node)
__isl_give isl_union_set * isl_schedule_node_get_universe_domain(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_graft_after(__isl_take isl_schedule_node *node, __isl_take isl_schedule_node *graft)
__isl_export __isl_give isl_union_map * isl_schedule_node_get_prefix_schedule_union_map(__isl_keep isl_schedule_node *node)
__isl_null isl_schedule_node * isl_schedule_node_free(__isl_take isl_schedule_node *node)
__isl_give char * isl_schedule_node_to_str(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_set * isl_schedule_node_guard_get_guard(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_insert_sequence(__isl_take isl_schedule_node *node, __isl_take isl_union_set_list *filters)
isl_ctx * isl_schedule_node_get_ctx(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_next_sibling(__isl_take isl_schedule_node *node)
__isl_export isl_bool isl_schedule_node_has_parent(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_child(__isl_take isl_schedule_node *node, int pos)
__isl_export isl_size isl_schedule_node_get_ancestor_child_position(__isl_keep isl_schedule_node *node, __isl_keep isl_schedule_node *ancestor)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_band_set_ast_build_options(__isl_take isl_schedule_node *node, __isl_take isl_union_set *options)
__isl_export __isl_give isl_schedule_node * isl_schedule_node_insert_set(__isl_take isl_schedule_node *node, __isl_take isl_union_set_list *filters)
__isl_give isl_schedule_node * isl_schedule_node_copy(__isl_keep isl_schedule_node *node)
@ isl_schedule_node_mark
Definition: schedule_type.h:18
@ isl_schedule_node_filter
Definition: schedule_type.h:15
@ isl_schedule_node_domain
Definition: schedule_type.h:12
@ isl_schedule_node_band
Definition: schedule_type.h:10
@ isl_schedule_node_set
Definition: schedule_type.h:20
@ isl_schedule_node_guard
Definition: schedule_type.h:17
@ isl_schedule_node_extension
Definition: schedule_type.h:14
@ isl_schedule_node_expansion
Definition: schedule_type.h:13
@ isl_schedule_node_sequence
Definition: schedule_type.h:19
@ isl_schedule_node_leaf
Definition: schedule_type.h:16
@ isl_schedule_node_context
Definition: schedule_type.h:11
__isl_export __isl_give isl_set * isl_set_universe(__isl_take isl_space *space)
Definition: isl_map.c:6366
isl_bool isl_set_has_equal_space(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
Definition: isl_map.c:9192
__isl_export __isl_give isl_basic_set * isl_set_polyhedral_hull(__isl_take isl_set *set)
__isl_constructor __isl_give isl_basic_set * isl_basic_set_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_point * isl_set_sample_point(__isl_take isl_set *set)
Definition: isl_sample.c:1312
__isl_export __isl_give isl_basic_set * isl_set_unshifted_simple_hull(__isl_take isl_set *set)
__isl_export __isl_give isl_set * isl_set_coalesce(__isl_take isl_set *set)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
Definition: isl_map.c:201
__isl_export __isl_give isl_basic_set * isl_basic_set_detect_equalities(__isl_take isl_basic_set *bset)
__isl_export __isl_give isl_map * isl_set_unbind_params_insert_domain(__isl_take isl_set *set, __isl_take isl_multi_id *domain)
Definition: isl_map.c:12853
__isl_give char * isl_basic_set_to_str(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_set_convex_hull(__isl_take isl_set *set)
__isl_give isl_set * isl_set_remove_divs(__isl_take isl_set *set)
Definition: isl_map.c:2617
__isl_overload __isl_give isl_set * isl_set_lower_bound_multi_val(__isl_take isl_set *set, __isl_take isl_multi_val *lower)
Definition: isl_map.c:7024
__isl_overload __isl_give isl_set * isl_set_upper_bound_multi_val(__isl_take isl_set *set, __isl_take isl_multi_val *upper)
Definition: isl_map.c:7042
__isl_export __isl_give isl_set * isl_set_product(__isl_take isl_set *set1, __isl_take isl_set *set2)
Definition: isl_map.c:10964
__isl_export __isl_give isl_set * isl_basic_set_union(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
Definition: isl_map.c:9483
__isl_export __isl_give isl_set * isl_set_subtract(__isl_take isl_set *set1, __isl_take isl_set *set2)
isl_ctx * isl_set_get_ctx(__isl_keep isl_set *set)
Definition: isl_map.c:396
__isl_export __isl_give isl_set * isl_point_to_set(__isl_take isl_point *pnt)
Definition: isl_point.c:700
__isl_export __isl_give isl_space * isl_set_get_space(__isl_keep isl_set *set)
Definition: isl_map.c:603
__isl_give isl_set * isl_set_lower_bound_si(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, int value)
Definition: isl_map.c:6803
__isl_give isl_set * isl_set_lower_bound_val(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
Definition: isl_map.c:6920
__isl_export __isl_give isl_val * isl_set_get_stride(__isl_keep isl_set *set, int pos)
Definition: isl_stride.c:349
__isl_export __isl_give isl_set * isl_set_detect_equalities(__isl_take isl_set *set)
__isl_give isl_set * isl_set_set_dim_id(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
Definition: isl_map.c:1021
__isl_give isl_val * isl_set_plain_get_val_if_fixed(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
Definition: isl_map.c:10179
__isl_export __isl_give isl_set * isl_basic_set_lexmax(__isl_take isl_basic_set *bset)
Definition: isl_map.c:7401
isl_bool isl_set_dim_has_any_lower_bound(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
Definition: isl_map.c:11532
__isl_export isl_bool isl_set_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
Definition: isl_map.c:9083
__isl_give isl_set * isl_set_remove_redundancies(__isl_take isl_set *set)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
Definition: isl_map.c:421
__isl_constructor __isl_give isl_set * isl_set_from_point(__isl_take isl_point *pnt)
Definition: isl_point.c:690
__isl_export __isl_give isl_set * isl_set_union(__isl_take isl_set *set1, __isl_take isl_set *set2)
Definition: isl_map.c:8281
__isl_overload __isl_give isl_set * isl_set_preimage_multi_aff(__isl_take isl_set *set, __isl_take isl_multi_aff *ma)
Definition: isl_map.c:14045
const char * isl_set_get_tuple_name(__isl_keep isl_set *set)
Definition: isl_map.c:869
__isl_give isl_basic_set * isl_basic_set_fix_val(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, __isl_take isl_val *v)
Definition: isl_map.c:6535
__isl_export isl_bool isl_set_is_singleton(__isl_keep isl_set *set)
Definition: isl_map.c:12023
__isl_give isl_set * isl_set_set_tuple_id(__isl_take isl_set *set, __isl_take isl_id *id)
Definition: isl_map.c:782
__isl_export __isl_give isl_set * isl_set_project_out_all_params(__isl_take isl_set *set)
Definition: isl_map.c:4671
__isl_give isl_basic_set * isl_basic_set_project_out(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:4568
__isl_export __isl_give isl_set * isl_set_intersect_params(__isl_take isl_set *set, __isl_take isl_set *params)
Definition: isl_map.c:3982
__isl_give isl_basic_set * isl_basic_set_fix_si(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, int value)
Definition: isl_map.c:6541
__isl_give isl_set * isl_set_reset_tuple_id(__isl_take isl_set *set)
Definition: isl_map.c:800
__isl_export __isl_give isl_basic_set * isl_basic_set_intersect_params(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
Definition: isl_map.c:3777
__isl_overload __isl_give isl_set * isl_set_upper_bound_multi_pw_aff(__isl_take isl_set *set, __isl_take isl_multi_pw_aff *upper)
Definition: isl_map.c:7106
__isl_export __isl_give isl_set * isl_set_gist_params(__isl_take isl_set *set, __isl_take isl_set *context)
__isl_export __isl_give isl_basic_set * isl_basic_set_params(__isl_take isl_basic_set *bset)
Definition: isl_map.c:5912
__isl_export isl_bool isl_set_is_disjoint(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_set * isl_set_eliminate(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:2556
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
Definition: isl_map.c:1523
__isl_give isl_basic_set * isl_set_simple_hull(__isl_take isl_set *set)
__isl_overload __isl_give isl_set * isl_set_project_out_param_id_list(__isl_take isl_set *set, __isl_take isl_id_list *list)
Definition: isl_map.c:4658
isl_bool isl_basic_set_is_bounded(__isl_keep isl_basic_set *bset)
__isl_give isl_pw_aff * isl_set_dim_min(__isl_take isl_set *set, int pos)
Definition: isl_map.c:7519
__isl_export __isl_give isl_set * isl_set_complement(__isl_take isl_set *set)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
Definition: isl_map.c:3513
__isl_overload __isl_give isl_set * isl_set_preimage_pw_multi_aff(__isl_take isl_set *set, __isl_take isl_pw_multi_aff *pma)
Definition: isl_map.c:14169
__isl_export isl_bool isl_set_is_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_set * isl_set_add_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned n)
Definition: isl_map.c:4204
__isl_export __isl_give isl_set * isl_set_apply(__isl_take isl_set *set, __isl_take isl_map *map)
Definition: isl_map.c:9818
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
Definition: isl_map.c:1470
__isl_constructor __isl_give isl_basic_set * isl_basic_set_from_point(__isl_take isl_point *pnt)
Definition: isl_point.c:674
__isl_export __isl_give isl_set * isl_basic_set_lexmin(__isl_take isl_basic_set *bset)
Definition: isl_map.c:7396
__isl_give isl_set * isl_set_project_out(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:4639
__isl_give isl_basic_set_list * isl_set_get_basic_set_list(__isl_keep isl_set *set)
Definition: isl_map.c:11316
__isl_export __isl_give isl_set * isl_set_bind(__isl_take isl_set *set, __isl_take isl_multi_id *tuple)
Definition: isl_map.c:12709
__isl_overload __isl_give isl_set * isl_set_project_out_param_id(__isl_take isl_set *set, __isl_take isl_id *id)
Definition: isl_map.c:4649
isl_bool isl_set_involves_dims(__isl_keep isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:2986
__isl_export __isl_give isl_set * isl_set_gist(__isl_take isl_set *set, __isl_take isl_set *context)
__isl_export isl_stat isl_set_foreach_point(__isl_keep isl_set *set, isl_stat(*fn)(__isl_take isl_point *pnt, void *user), void *user)
Definition: isl_point.c:576
int isl_set_find_dim_by_id(__isl_keep isl_set *set, enum isl_dim_type type, __isl_keep isl_id *id)
Definition: isl_map.c:1035
__isl_export isl_bool isl_set_is_strict_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
Definition: isl_map.c:9275
__isl_export __isl_give isl_basic_set * isl_set_sample(__isl_take isl_set *set)
Definition: isl_sample.c:1295
__isl_export __isl_give isl_set * isl_space_universe_set(__isl_take isl_space *space)
Definition: isl_map.c:6379
__isl_give isl_set * isl_set_remove_dims(__isl_take isl_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:3353
__isl_export isl_bool isl_basic_set_is_subset(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
Definition: isl_map.c:9109
__isl_constructor __isl_give isl_set * isl_set_read_from_str(isl_ctx *ctx, const char *str)
isl_bool isl_set_is_params(__isl_keep isl_set *set)
Definition: isl_map.c:1270
__isl_export isl_stat isl_set_foreach_basic_set(__isl_keep isl_set *set, isl_stat(*fn)(__isl_take isl_basic_set *bset, void *user), void *user)
Definition: isl_map.c:11277
__isl_export __isl_give isl_pw_multi_aff * isl_set_lexmax_pw_multi_aff(__isl_take isl_set *set)
__isl_export __isl_give isl_basic_set * isl_basic_set_sample(__isl_take isl_basic_set *bset)
Definition: isl_sample.c:1265
__isl_export __isl_give isl_set * isl_multi_aff_as_set(__isl_take isl_multi_aff *ma)
Definition: isl_aff_map.c:253
__isl_export __isl_give isl_basic_set * isl_basic_set_apply(__isl_take isl_basic_set *bset, __isl_take isl_basic_map *bmap)
Definition: isl_map.c:4805
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type)
Definition: isl_map.c:129
__isl_give char * isl_set_to_str(__isl_keep isl_set *set)
__isl_export __isl_give isl_basic_set * isl_basic_set_gist(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
__isl_export __isl_give isl_multi_pw_aff * isl_set_min_multi_pw_aff(__isl_take isl_set *set)
Definition: isl_aff.c:6763
__isl_export __isl_give isl_set * isl_set_lexmin(__isl_take isl_set *set)
__isl_overload __isl_give isl_set * isl_set_preimage_multi_pw_aff(__isl_take isl_set *set, __isl_take isl_multi_pw_aff *mpa)
Definition: isl_map.c:14262
__isl_give isl_set * isl_set_align_params(__isl_take isl_set *set, __isl_take isl_space *model)
Definition: isl_map.c:12508
__isl_export __isl_give isl_multi_val * isl_set_get_plain_multi_val_if_fixed(__isl_keep isl_set *set)
Definition: isl_map.c:10191
__isl_export __isl_give isl_set * isl_set_lexmax(__isl_take isl_set *set)
isl_bool isl_set_is_bounded(__isl_keep isl_set *set)
__isl_export isl_bool isl_basic_set_is_empty(__isl_keep isl_basic_set *bset)
Definition: isl_map.c:9458
__isl_export isl_size isl_set_tuple_dim(__isl_keep isl_set *set)
Definition: isl_map.c:136
__isl_export isl_size isl_set_n_basic_set(__isl_keep isl_set *set)
Definition: isl_map.c:11257
__isl_export __isl_give isl_basic_set * isl_basic_set_affine_hull(__isl_take isl_basic_set *bset)
__isl_export __isl_give isl_fixed_box * isl_set_get_simple_fixed_box_hull(__isl_keep isl_set *set)
Definition: isl_box.c:439
__isl_export __isl_give isl_pw_multi_aff * isl_set_lexmin_pw_multi_aff(__isl_take isl_set *set)
__isl_export __isl_give isl_set * isl_set_intersect(__isl_take isl_set *set1, __isl_take isl_set *set2)
Definition: isl_map.c:3965
__isl_export isl_bool isl_basic_set_is_equal(__isl_keep isl_basic_set *bset1, __isl_keep isl_basic_set *bset2)
Definition: isl_map.c:9129
__isl_give isl_id * isl_set_get_dim_id(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
Definition: isl_map.c:1003
__isl_give isl_set * isl_set_insert_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, unsigned n)
Definition: isl_map.c:4187
__isl_export __isl_give isl_multi_pw_aff * isl_set_max_multi_pw_aff(__isl_take isl_set *set)
Definition: isl_aff.c:6771
__isl_give isl_set * isl_set_upper_bound_val(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, __isl_take isl_val *value)
Definition: isl_map.c:6952
const char * isl_set_get_dim_name(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
Definition: isl_map.c:902
__isl_export __isl_give isl_set * isl_set_empty(__isl_take isl_space *space)
Definition: isl_map.c:6343
isl_ctx * isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset)
Definition: isl_map.c:386
__isl_constructor __isl_give isl_set * isl_set_from_basic_set(__isl_take isl_basic_set *bset)
Definition: isl_map.c:3482
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
Definition: isl_map.c:1465
__isl_export __isl_give isl_basic_set * isl_basic_set_intersect(__isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2)
Definition: isl_map.c:3770
__isl_give isl_basic_set * isl_basic_set_universe(__isl_take isl_space *space)
Definition: isl_map.c:6291
__isl_export isl_bool isl_set_involves_locals(__isl_keep isl_set *set)
Definition: isl_map.c:3014
__isl_export __isl_give isl_point * isl_basic_set_sample_point(__isl_take isl_basic_set *bset)
Definition: isl_sample.c:1300
__isl_export __isl_give isl_basic_set * isl_set_affine_hull(__isl_take isl_set *set)
__isl_give isl_id * isl_set_get_tuple_id(__isl_keep isl_set *set)
Definition: isl_map.c:849
__isl_export __isl_give isl_set * isl_set_params(__isl_take isl_set *set)
Definition: isl_map.c:5948
__isl_give isl_set * isl_set_fix_si(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, int value)
Definition: isl_map.c:6634
__isl_give isl_aff * isl_basic_set_get_div(__isl_keep isl_basic_set *bset, int pos)
Definition: isl_map.c:13543
__isl_export __isl_give isl_set * isl_basic_set_to_set(__isl_take isl_basic_set *bset)
Definition: isl_map.c:3490
__isl_give isl_set * isl_set_drop_constraints_involving_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
Definition: isl_map.c:3214
__isl_export isl_bool isl_set_is_empty(__isl_keep isl_set *set)
Definition: isl_map.c:9163
__isl_export __isl_give isl_set * isl_set_unbind_params(__isl_take isl_set *set, __isl_take isl_multi_id *tuple)
Definition: isl_map.c:12819
__isl_give isl_pw_aff * isl_set_dim_max(__isl_take isl_set *set, int pos)
Definition: isl_map.c:7511
__isl_overload __isl_give isl_set * isl_set_lower_bound_multi_pw_aff(__isl_take isl_set *set, __isl_take isl_multi_pw_aff *lower)
Definition: isl_map.c:7096
__isl_give isl_space * isl_space_set_tuple_id(__isl_take isl_space *space, enum isl_dim_type type, __isl_take isl_id *id)
Definition: isl_space.c:636
__isl_give char * isl_space_to_str(__isl_keep isl_space *space)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
Definition: isl_space.c:445
__isl_export __isl_give isl_space * isl_space_reverse(__isl_take isl_space *space)
Definition: isl_space.c:1964
__isl_export __isl_give isl_space * isl_space_flatten_range(__isl_take isl_space *space)
Definition: isl_space.c:2954
__isl_export __isl_give isl_space * isl_space_params(__isl_take isl_space *space)
Definition: isl_space.c:2211
__isl_export __isl_give isl_space * isl_space_product(__isl_take isl_space *left, __isl_take isl_space *right)
Definition: isl_space.c:1552
__isl_overload __isl_give isl_space * isl_space_add_param_id(__isl_take isl_space *space, __isl_take isl_id *id)
Definition: isl_space.c:1266
__isl_export __isl_give isl_space * isl_space_curry(__isl_take isl_space *space)
Definition: isl_space.c:3128
__isl_export __isl_give isl_id * isl_space_get_domain_tuple_id(__isl_keep isl_space *space)
Definition: isl_space.c:617
isl_bool isl_space_has_tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_space.c:572
isl_ctx * isl_space_get_ctx(__isl_keep isl_space *space)
Definition: isl_space.c:23
__isl_give isl_id * isl_space_get_tuple_id(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_space.c:598
__isl_give isl_space * isl_space_set_from_params(__isl_take isl_space *space)
Definition: isl_space.c:2227
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
Definition: isl_space.c:436
__isl_give isl_space * isl_space_align_params(__isl_take isl_space *space1, __isl_take isl_space *space2)
Definition: isl_space.c:3262
__isl_export __isl_give isl_space * isl_space_unit(isl_ctx *ctx)
Definition: isl_space.c:205
__isl_export isl_bool isl_space_has_domain_tuple_id(__isl_keep isl_space *space)
Definition: isl_space.c:582
__isl_give isl_space * isl_space_map_from_domain_and_range(__isl_take isl_space *domain, __isl_take isl_space *range)
Definition: isl_space.c:1934
__isl_give isl_space * isl_space_set_dim_id(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
Definition: isl_space.c:704
__isl_export __isl_give isl_space * isl_space_wrap(__isl_take isl_space *space)
Definition: isl_space.c:2832
__isl_export isl_bool isl_space_is_wrapping(__isl_keep isl_space *space)
Definition: isl_space.c:2775
__isl_export __isl_give isl_space * isl_space_range_reverse(__isl_take isl_space *space)
Definition: isl_space.c:2024
__isl_overload __isl_give isl_space * isl_space_add_named_tuple_id_ui(__isl_take isl_space *space, __isl_take isl_id *tuple_id, unsigned dim)
Definition: isl_space.c:2273
__isl_export __isl_give isl_space * isl_space_range(__isl_take isl_space *space)
Definition: isl_space.c:2163
isl_bool isl_space_is_params(__isl_keep isl_space *space)
Definition: isl_space.c:179
__isl_export __isl_give isl_id * isl_space_get_range_tuple_id(__isl_keep isl_space *space)
Definition: isl_space.c:628
__isl_keep const char * isl_space_get_tuple_name(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_space.c:819
__isl_export __isl_give isl_space * isl_space_unwrap(__isl_take isl_space *space)
Definition: isl_space.c:2857
__isl_give isl_space * isl_space_set_alloc(isl_ctx *ctx, unsigned nparam, unsigned dim)
Definition: isl_space.c:156
__isl_export __isl_give isl_space * isl_space_uncurry(__isl_take isl_space *space)
Definition: isl_space.c:3202
__isl_export __isl_give isl_space * isl_space_flatten_domain(__isl_take isl_space *space)
Definition: isl_space.c:2944
__isl_export __isl_give isl_space * isl_space_map_from_set(__isl_take isl_space *space)
Definition: isl_space.c:1894
isl_bool isl_space_has_tuple_name(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_space.c:808
__isl_export isl_bool isl_space_has_range_tuple_id(__isl_keep isl_space *space)
Definition: isl_space.c:591
int isl_space_find_dim_by_id(__isl_keep isl_space *space, enum isl_dim_type type, __isl_keep isl_id *id)
Definition: isl_space.c:870
__isl_export isl_bool isl_space_is_equal(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
Definition: isl_space.c:2511
__isl_give isl_space * isl_space_drop_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned num)
Definition: isl_space.c:2047
__isl_give isl_id * isl_space_get_dim_id(__isl_keep isl_space *space, enum isl_dim_type type, unsigned pos)
Definition: isl_space.c:774
isl_size isl_space_dim(__isl_keep isl_space *space, enum isl_dim_type type)
Definition: isl_space.c:340
__isl_overload __isl_give isl_space * isl_space_set_domain_tuple_id(__isl_take isl_space *space, __isl_take isl_id *id)
Definition: isl_space.c:660
isl_bool isl_space_is_set(__isl_keep isl_space *space)
Definition: isl_space.c:70
isl_bool isl_space_has_equal_tuples(__isl_keep isl_space *space1, __isl_keep isl_space *space2)
Definition: isl_space.c:996
__isl_overload __isl_give isl_space * isl_space_set_range_tuple_id(__isl_take isl_space *space, __isl_take isl_id *id)
Definition: isl_space.c:671
__isl_give isl_space * isl_space_alloc(isl_ctx *ctx, unsigned nparam, unsigned n_in, unsigned n_out)
Definition: isl_space.c:28
__isl_give isl_space * isl_space_add_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned n)
Definition: isl_space.c:1229
__isl_give isl_space * isl_space_params_alloc(isl_ctx *ctx, unsigned nparam)
Definition: isl_space.c:195
__isl_overload __isl_give isl_space * isl_space_add_unnamed_tuple_ui(__isl_take isl_space *space, unsigned dim)
Definition: isl_space.c:2248
__isl_export __isl_give isl_space * isl_space_domain(__isl_take isl_space *space)
Definition: isl_space.c:2138
isl_dim_type
Definition: space_type.h:13
@ isl_dim_param
Definition: space_type.h:15
@ isl_dim_in
Definition: space_type.h:16
@ isl_dim_set
Definition: space_type.h:18
@ isl_dim_all
Definition: space_type.h:20
@ isl_dim_div
Definition: space_type.h:19
@ isl_dim_out
Definition: space_type.h:17
@ isl_dim_cst
Definition: space_type.h:14
std::function< isl::ast_node(isl::ast_node, isl::ast_build)> func
static Signature domain_map
static Kind params
static Signature range_factor_domain
static Signature set_from_params
static std::vector< Signature > set_at
static Signature curry
static Signature domain_factor_domain
static Signature to_set
static std::vector< Signature > flatten_domain
static Signature range
static Signature range_product
static TupleKindPtr apply(const TupleKindPtr tuple, const Substitution &subs)
Definition: template_cpp.cc:82
static std::vector< Signature > flatten_range
static Signature unwrap
static Signature domain_product
static Signature map_from_domain_and_range
static Signature uncurry
static Signature wrap
static Signature range_factor_range
static Signature bind_range
static bool contains(const std::vector< std::string > &v, const std::string &el)
static Signature domain
static Signature bind_domain
static Signature bind_domain_wrapped_domain
static std::vector< std::string > intersect(const std::vector< std::string > &v1, const std::vector< std::string > &v2)
static Signature domain_factor_range
static Signature range_map
__isl_null isl_union_map * isl_union_map_free(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_space * isl_union_map_get_space(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_domain_map(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_reverse(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_range_factor_range(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_domain_product(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_uncurry(__isl_take isl_union_map *umap)
__isl_give char * isl_union_map_to_str(__isl_keep isl_union_map *umap)
__isl_give isl_map * isl_map_from_union_map(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_set * isl_union_map_deltas(__isl_take isl_union_map *umap)
__isl_export isl_bool isl_union_map_is_single_valued(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_map * isl_union_map_extract_map(__isl_keep isl_union_map *umap, __isl_take isl_space *space)
__isl_export __isl_give isl_union_map * isl_union_map_intersect_range_factor_range(__isl_take isl_union_map *umap, __isl_take isl_union_map *factor)
__isl_export __isl_give isl_union_map * isl_union_map_intersect_range_factor_domain(__isl_take isl_union_map *umap, __isl_take isl_union_map *factor)
__isl_export isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap, isl_stat(*fn)(__isl_take isl_map *map, void *user), void *user)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_domain_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma)
__isl_give isl_union_map * isl_union_map_flat_range_product(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_export __isl_give isl_map_list * isl_union_map_get_map_list(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_set_identity(__isl_take isl_union_set *uset)
__isl_export isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap, isl_bool(*test)(__isl_keep isl_map *map, void *user), void *user)
__isl_export __isl_give isl_union_map * isl_union_map_coalesce(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_factor_domain(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_range_factor_domain(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_pw_multi_aff * isl_union_map_domain_map_union_pw_multi_aff(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_subtract_domain(__isl_take isl_union_map *umap, __isl_take isl_union_set *dom)
__isl_export __isl_give isl_union_map * isl_union_map_range_map(__isl_take isl_union_map *umap)
__isl_overload __isl_give isl_union_map * isl_union_map_empty_ctx(isl_ctx *ctx)
__isl_export __isl_give isl_union_map * isl_union_map_apply_range(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_give isl_union_map * isl_union_map_copy(__isl_keep isl_union_map *umap)
__isl_constructor __isl_give isl_union_map * isl_union_map_read_from_str(isl_ctx *ctx, const char *str)
__isl_export __isl_give isl_union_map * isl_union_map_subtract(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_map_to_union_map(__isl_take isl_map *map)
__isl_export isl_bool isl_union_map_is_empty(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_gist_domain(__isl_take isl_union_map *umap, __isl_take isl_union_set *uset)
__isl_export isl_bool isl_union_map_isa_map(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_set * isl_union_map_range(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_affine_hull(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_set * isl_union_map_wrap(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_from_domain(__isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_domain_pw_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_union_map * isl_union_map_lexmin(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_apply_domain(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_product(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_range_product(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_intersect_domain_factor_domain(__isl_take isl_union_map *umap, __isl_take isl_union_map *factor)
__isl_constructor __isl_give isl_union_map * isl_union_map_from_basic_map(__isl_take isl_basic_map *bmap)
__isl_constructor __isl_give isl_union_map * isl_union_map_from_map(__isl_take isl_map *map)
__isl_overload __isl_give isl_union_map * isl_union_map_fixed_power_val(__isl_take isl_union_map *umap, __isl_take isl_val *exp)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_range_union_pw_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_union_pw_multi_aff *upma)
__isl_overload __isl_give isl_union_map * isl_union_map_intersect_domain_space(__isl_take isl_union_map *umap, __isl_take isl_space *space)
__isl_export __isl_give isl_union_map * isl_union_map_factor_range(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_subtract_range(__isl_take isl_union_map *umap, __isl_take isl_union_set *dom)
__isl_export isl_bool isl_union_map_is_equal(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_domain_factor_domain(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_curry(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_gist_params(__isl_take isl_union_map *umap, __isl_take isl_set *set)
__isl_export __isl_give isl_map * isl_union_map_as_map(__isl_take isl_union_map *umap)
__isl_export isl_bool isl_union_map_is_injective(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_union(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_export isl_bool isl_union_map_is_bijective(__isl_keep isl_union_map *umap)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_range_pw_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma)
__isl_export __isl_give isl_union_map * isl_union_map_domain_factor_range(__isl_take isl_union_map *umap)
isl_ctx * isl_union_map_get_ctx(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_zip(__isl_take isl_union_map *umap)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_domain_multi_pw_aff(__isl_take isl_union_map *umap, __isl_take isl_multi_pw_aff *mpa)
__isl_export isl_bool isl_union_map_is_strict_subset(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_gist_range(__isl_take isl_union_map *umap, __isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_map_bind_range(__isl_take isl_union_map *umap, __isl_take isl_multi_id *tuple)
__isl_export __isl_give isl_union_map * isl_union_map_range_reverse(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_from_range(__isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_map * isl_union_map_intersect_range_union_set(__isl_take isl_union_map *umap, __isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_range_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma)
__isl_export __isl_give isl_union_map * isl_union_map_lexmax(__isl_take isl_union_map *umap)
__isl_overload __isl_give isl_union_map * isl_union_map_intersect_range_space(__isl_take isl_union_map *umap, __isl_take isl_space *space)
__isl_export isl_bool isl_union_map_is_subset(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_polyhedral_hull(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_set_unwrap(__isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_map * isl_union_map_compute_divs(__isl_take isl_union_map *umap)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_domain_union_pw_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_union_pw_multi_aff *upma)
__isl_give isl_set * isl_union_map_params(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_gist(__isl_take isl_union_map *umap, __isl_take isl_union_map *context)
__isl_overload __isl_give isl_union_map * isl_union_map_intersect_domain_union_set(__isl_take isl_union_map *umap, __isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_map * isl_union_map_detect_equalities(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_from_domain_and_range(__isl_take isl_union_set *domain, __isl_take isl_union_set *range)
__isl_export __isl_give isl_union_map * isl_union_map_intersect_domain_factor_range(__isl_take isl_union_map *umap, __isl_take isl_union_map *factor)
__isl_overload __isl_give isl_union_map * isl_union_map_eq_at_multi_union_pw_aff(__isl_take isl_union_map *umap, __isl_take isl_multi_union_pw_aff *mupa)
__isl_export __isl_give isl_union_set * isl_union_map_domain(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_intersect_params(__isl_take isl_union_map *umap, __isl_take isl_set *set)
__isl_export __isl_give isl_union_map * isl_union_map_project_out_all_params(__isl_take isl_union_map *umap)
__isl_export isl_bool isl_union_map_is_disjoint(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_universe(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_intersect(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
struct isl_union_set isl_union_set
__isl_export __isl_give isl_union_set * isl_union_set_polyhedral_hull(__isl_take isl_union_set *uset)
__isl_give isl_set * isl_set_from_union_set(__isl_take isl_union_set *uset)
__isl_export isl_bool isl_union_set_is_empty(__isl_keep isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_set_gist_params(__isl_take isl_union_set *uset, __isl_take isl_set *set)
__isl_export __isl_give isl_union_set * isl_union_set_universe(__isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_set * isl_union_set_preimage_union_pw_multi_aff(__isl_take isl_union_set *uset, __isl_take isl_union_pw_multi_aff *upma)
__isl_export isl_bool isl_union_set_is_disjoint(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2)
__isl_export __isl_give isl_union_set * isl_union_set_union(__isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2)
__isl_export __isl_give isl_union_set * isl_union_set_apply(__isl_take isl_union_set *uset, __isl_take isl_union_map *umap)
__isl_overload __isl_give isl_union_set * isl_union_set_preimage_pw_multi_aff(__isl_take isl_union_set *uset, __isl_take isl_pw_multi_aff *pma)
__isl_constructor __isl_give isl_union_set * isl_union_set_read_from_str(isl_ctx *ctx, const char *str)
__isl_export isl_stat isl_union_set_foreach_set(__isl_keep isl_union_set *uset, isl_stat(*fn)(__isl_take isl_set *set, void *user), void *user)
__isl_export isl_stat isl_union_set_foreach_point(__isl_keep isl_union_set *uset, isl_stat(*fn)(__isl_take isl_point *pnt, void *user), void *user)
__isl_export __isl_give isl_union_set * isl_union_set_compute_divs(__isl_take isl_union_set *uset)
__isl_give char * isl_union_set_to_str(__isl_keep isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_set_to_union_set(__isl_take isl_set *set)
__isl_export __isl_give isl_union_set * isl_union_set_intersect(__isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2)
__isl_export isl_bool isl_union_set_isa_set(__isl_keep isl_union_set *uset)
__isl_constructor __isl_give isl_union_set * isl_union_set_from_basic_set(__isl_take isl_basic_set *bset)
__isl_export __isl_give isl_union_set * isl_union_set_affine_hull(__isl_take isl_union_set *uset)
__isl_give isl_set * isl_union_set_params(__isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_set * isl_union_set_empty_ctx(isl_ctx *ctx)
__isl_export __isl_give isl_point * isl_union_set_sample_point(__isl_take isl_union_set *uset)
__isl_export isl_bool isl_union_set_is_equal(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2)
__isl_export __isl_give isl_space * isl_union_set_get_space(__isl_keep isl_union_set *uset)
__isl_export __isl_give isl_set * isl_union_set_as_set(__isl_take isl_union_set *uset)
__isl_export __isl_give isl_set_list * isl_union_set_get_set_list(__isl_keep isl_union_set *uset)
__isl_constructor __isl_give isl_union_set * isl_union_set_from_set(__isl_take isl_set *set)
__isl_export __isl_give isl_union_set * isl_union_set_detect_equalities(__isl_take isl_union_set *uset)
__isl_export __isl_give isl_set * isl_union_set_extract_set(__isl_keep isl_union_set *uset, __isl_take isl_space *space)
isl_ctx * isl_union_set_get_ctx(__isl_keep isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_set_coalesce(__isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_set * isl_union_set_preimage_multi_aff(__isl_take isl_union_set *uset, __isl_take isl_multi_aff *ma)
__isl_constructor __isl_give isl_union_set * isl_union_set_from_point(__isl_take isl_point *pnt)
Definition: isl_point.c:708
__isl_give isl_union_set * isl_union_set_copy(__isl_keep isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_set_intersect_params(__isl_take isl_union_set *uset, __isl_take isl_set *set)
__isl_export isl_bool isl_union_set_every_set(__isl_keep isl_union_set *uset, isl_bool(*test)(__isl_keep isl_set *set, void *user), void *user)
__isl_export isl_bool isl_union_set_is_strict_subset(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2)
__isl_export __isl_give isl_union_set * isl_union_set_subtract(__isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2)
__isl_null isl_union_set * isl_union_set_free(__isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_set_lexmax(__isl_take isl_union_set *uset)
__isl_export isl_bool isl_union_set_is_subset(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2)
isl_bool isl_union_set_contains(__isl_keep isl_union_set *uset, __isl_keep isl_space *space)
__isl_export __isl_give isl_union_set * isl_union_set_lexmin(__isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_set_gist(__isl_take isl_union_set *uset, __isl_take isl_union_set *context)
__isl_export __isl_give isl_val * isl_val_abs(__isl_take isl_val *v)
Definition: isl_val.c:456
__isl_export isl_bool isl_val_is_nan(__isl_keep isl_val *v)
Definition: isl_val.c:1161
__isl_export isl_bool isl_val_lt(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:1285
__isl_export isl_bool isl_val_is_neginfty(__isl_keep isl_val *v)
Definition: isl_val.c:1181
__isl_give char * isl_multi_val_to_str(__isl_keep isl_multi_val *mv)
__isl_export __isl_give isl_val * isl_val_mod(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:979
__isl_give isl_val * isl_val_copy(__isl_keep isl_val *v)
Definition: isl_val.c:219
__isl_export int isl_val_cmp_si(__isl_keep isl_val *v, long i)
Definition: isl_val.c:1394
__isl_export isl_bool isl_val_is_negone(__isl_keep isl_val *v)
Definition: isl_val.c:1214
__isl_export __isl_give isl_val * isl_val_floor(__isl_take isl_val *v)
Definition: isl_val.c:470
__isl_export isl_bool isl_val_is_infty(__isl_keep isl_val *v)
Definition: isl_val.c:1171
__isl_export __isl_give isl_val * isl_val_inv(__isl_take isl_val *v)
Definition: isl_val.c:429
__isl_export __isl_give isl_val * isl_val_max(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:598
__isl_export __isl_give isl_val * isl_val_trunc(__isl_take isl_val *v)
Definition: isl_val.c:512
__isl_export __isl_give isl_val * isl_val_ceil(__isl_take isl_val *v)
Definition: isl_val.c:491
__isl_export __isl_give isl_val * isl_val_div(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:875
__isl_export __isl_give isl_val * isl_val_add(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:626
__isl_export __isl_give isl_val * isl_val_one(isl_ctx *ctx)
Definition: isl_val.c:48
__isl_export isl_bool isl_val_is_pos(__isl_keep isl_val *v)
Definition: isl_val.c:1224
__isl_export __isl_give isl_val * isl_val_neginfty(isl_ctx *ctx)
Definition: isl_val.c:112
__isl_export __isl_give isl_val * isl_val_zero(isl_ctx *ctx)
Definition: isl_val.c:41
__isl_give char * isl_val_to_str(__isl_keep isl_val *v)
__isl_export isl_bool isl_val_abs_eq(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:1445
__isl_overload __isl_give isl_multi_val * isl_multi_val_add_val(__isl_take isl_multi_val *mv, __isl_take isl_val *v)
Definition: isl_val.c:1601
__isl_export int isl_val_sgn(__isl_keep isl_val *v)
Definition: isl_val.c:1272
__isl_constructor __isl_give isl_val * isl_val_int_from_si(isl_ctx *ctx, long i)
Definition: isl_val.c:128
isl_ctx * isl_val_get_ctx(__isl_keep isl_val *val)
Definition: isl_val.c:355
__isl_export __isl_give isl_val * isl_val_gcd(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:1016
__isl_export isl_bool isl_val_is_nonpos(__isl_keep isl_val *v)
Definition: isl_val.c:1257
__isl_export isl_bool isl_val_is_divisible_by(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:964
__isl_export __isl_give isl_val * isl_val_infty(isl_ctx *ctx)
Definition: isl_val.c:96
__isl_export long isl_val_get_den_si(__isl_keep isl_val *v)
Definition: isl_val.c:314
__isl_export isl_bool isl_val_is_neg(__isl_keep isl_val *v)
Definition: isl_val.c:1234
__isl_export __isl_give isl_val * isl_val_nan(isl_ctx *ctx)
Definition: isl_val.c:62
__isl_constructor __isl_give isl_multi_val * isl_multi_val_read_from_str(isl_ctx *ctx, const char *str)
__isl_null isl_val * isl_val_free(__isl_take isl_val *v)
Definition: isl_val.c:263
__isl_export isl_bool isl_val_gt(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:1318
__isl_export isl_bool isl_val_is_zero(__isl_keep isl_val *v)
Definition: isl_val.c:1191
__isl_export __isl_give isl_val * isl_val_sub(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:704
__isl_export __isl_give isl_val * isl_val_pow2(__isl_take isl_val *v)
Definition: isl_val.c:532
__isl_export isl_bool isl_val_eq(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:1421
__isl_give isl_val * isl_val_int_from_ui(isl_ctx *ctx, unsigned long u)
Definition: isl_val.c:169
__isl_export isl_bool isl_val_ne(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:1458
__isl_export isl_bool isl_val_is_one(__isl_keep isl_val *v)
Definition: isl_val.c:1201
__isl_export __isl_give isl_val * isl_val_neg(__isl_take isl_val *v)
Definition: isl_val.c:410
__isl_export long isl_val_get_num_si(__isl_keep isl_val *v)
Definition: isl_val.c:282
__isl_export isl_bool isl_val_is_int(__isl_keep isl_val *v)
Definition: isl_val.c:1141
__isl_export isl_bool isl_val_ge(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:1383
__isl_export __isl_give isl_val * isl_val_min(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:570
__isl_constructor __isl_give isl_val * isl_val_read_from_str(isl_ctx *ctx, const char *str)
__isl_export isl_bool isl_val_le(__isl_keep isl_val *v1, __isl_keep isl_val *v2)
Definition: isl_val.c:1350
__isl_export isl_bool isl_val_is_rat(__isl_keep isl_val *v)
Definition: isl_val.c:1151
__isl_export __isl_give isl_val * isl_val_negone(isl_ctx *ctx)
Definition: isl_val.c:55
__isl_export __isl_give isl_val * isl_val_mul(__isl_take isl_val *v1, __isl_take isl_val *v2)
Definition: isl_val.c:782
__isl_export isl_bool isl_val_is_nonneg(__isl_keep isl_val *v)
Definition: isl_val.c:1244
struct isl_multi_val isl_multi_val
Definition: val_type.h:16
n
Definition: youcefn.c:8