detect more forms of modulo expressions when extracting a function
[isl.git] / include / isl / cpp-checked.h
blob678fcb7c1f6b215659e526d999a5768e0e245fbd
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.
8 #ifndef ISL_CPP_CHECKED
9 #define ISL_CPP_CHECKED
11 #include <stdio.h>
12 #include <stdlib.h>
14 #include <functional>
15 #include <memory>
16 #include <ostream>
17 #include <string>
18 #include <type_traits>
20 #if __cplusplus >= 201703L
21 #include <any>
22 #include <optional>
23 #endif
25 namespace isl {
26 namespace checked {
28 #define ISLPP_STRINGIZE_(X) #X
29 #define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
31 #define ISLPP_ASSERT(test, message) \
32 do { \
33 if (test) \
34 break; \
35 fputs("Assertion \"" #test "\" failed at " __FILE__ \
36 ":" ISLPP_STRINGIZE(__LINE__) "\n " message "\n", \
37 stderr); \
38 abort(); \
39 } while (0)
41 /* Class used to check that isl::checked::boolean,
42 * isl::checked::stat and isl::checked::size values are checked for errors.
44 struct checker {
45 bool checked = false;
46 ~checker() {
47 ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
51 class boolean {
52 private:
53 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
54 isl_bool val;
56 friend boolean manage(isl_bool val);
57 boolean(isl_bool val): val(val) {}
58 public:
59 static boolean error() {
60 return boolean(isl_bool_error);
62 boolean()
63 : val(isl_bool_error) {}
65 /* implicit */ boolean(bool val)
66 : val(val ? isl_bool_true : isl_bool_false) {}
68 isl_bool release() {
69 auto tmp = val;
70 val = isl_bool_error;
71 check->checked = true;
72 return tmp;
75 bool is_error() const { check->checked = true; return val == isl_bool_error; }
76 bool is_false() const { check->checked = true; return val == isl_bool_false; }
77 bool is_true() const { check->checked = true; return val == isl_bool_true; }
79 explicit operator bool() const {
80 ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
81 ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
82 return is_true();
85 boolean negate() {
86 if (val == isl_bool_true)
87 val = isl_bool_false;
88 else if (val == isl_bool_false)
89 val = isl_bool_true;
90 return *this;
93 boolean operator!() const {
94 return boolean(*this).negate();
98 inline boolean manage(isl_bool val) {
99 return boolean(val);
102 class ctx {
103 isl_ctx *ptr;
104 public:
105 /* implicit */ ctx(isl_ctx *ctx) : ptr(ctx) {}
106 isl_ctx *release() {
107 auto tmp = ptr;
108 ptr = nullptr;
109 return tmp;
111 isl_ctx *get() {
112 return ptr;
114 #if __cplusplus >= 201703L
115 static void free_user(void *user) {
116 std::any *p = static_cast<std::any *>(user);
117 delete p;
119 #endif
122 /* Class encapsulating an isl_stat value.
124 class stat {
125 private:
126 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
127 isl_stat val;
129 friend stat manage(isl_stat val);
130 stat(isl_stat val) : val(val) {}
131 public:
132 static stat ok() {
133 return stat(isl_stat_ok);
135 static stat error() {
136 return stat(isl_stat_error);
138 stat() : val(isl_stat_error) {}
140 isl_stat release() {
141 check->checked = true;
142 return val;
145 bool is_error() const {
146 check->checked = true;
147 return val == isl_stat_error;
149 bool is_ok() const {
150 check->checked = true;
151 return val == isl_stat_ok;
155 inline stat manage(isl_stat val)
157 return stat(val);
160 /* Class encapsulating an isl_size value.
162 class size {
163 private:
164 mutable std::shared_ptr<checker> check = std::make_shared<checker>();
165 isl_size val;
167 friend size manage(isl_size val);
168 size(isl_size val) : val(val) {}
169 public:
170 size() : val(isl_size_error) {}
172 isl_size release() {
173 auto tmp = val;
174 val = isl_size_error;
175 check->checked = true;
176 return tmp;
179 bool is_error() const {
180 check->checked = true;
181 return val == isl_size_error;
184 explicit operator unsigned() const {
185 ISLPP_ASSERT(check->checked,
186 "IMPLEMENTATION ERROR: Unchecked error state");
187 ISLPP_ASSERT(!is_error(),
188 "IMPLEMENTATION ERROR: Unhandled error state");
189 return val;
193 inline size manage(isl_size val)
195 return size(val);
199 } // namespace isl
201 #include <isl/id.h>
202 #include <isl/id_to_id.h>
203 #include <isl/space.h>
204 #include <isl/val.h>
205 #include <isl/aff.h>
206 #include <isl/set.h>
207 #include <isl/map.h>
208 #include <isl/ilp.h>
209 #include <isl/union_set.h>
210 #include <isl/union_map.h>
211 #include <isl/flow.h>
212 #include <isl/schedule.h>
213 #include <isl/schedule_node.h>
214 #include <isl/ast_build.h>
215 #include <isl/fixed_box.h>
217 namespace isl {
219 namespace checked {
221 // forward declarations
222 class aff;
223 class aff_list;
224 class ast_build;
225 class ast_expr;
226 class ast_expr_id;
227 class ast_expr_int;
228 class ast_expr_op;
229 class ast_expr_op_access;
230 class ast_expr_op_add;
231 class ast_expr_op_address_of;
232 class ast_expr_op_and;
233 class ast_expr_op_and_then;
234 class ast_expr_op_call;
235 class ast_expr_op_cond;
236 class ast_expr_op_div;
237 class ast_expr_op_eq;
238 class ast_expr_op_fdiv_q;
239 class ast_expr_op_ge;
240 class ast_expr_op_gt;
241 class ast_expr_op_le;
242 class ast_expr_op_lt;
243 class ast_expr_op_max;
244 class ast_expr_op_member;
245 class ast_expr_op_min;
246 class ast_expr_op_minus;
247 class ast_expr_op_mul;
248 class ast_expr_op_or;
249 class ast_expr_op_or_else;
250 class ast_expr_op_pdiv_q;
251 class ast_expr_op_pdiv_r;
252 class ast_expr_op_select;
253 class ast_expr_op_sub;
254 class ast_expr_op_zdiv_r;
255 class ast_node;
256 class ast_node_block;
257 class ast_node_for;
258 class ast_node_if;
259 class ast_node_list;
260 class ast_node_mark;
261 class ast_node_user;
262 class basic_map;
263 class basic_set;
264 class fixed_box;
265 class id;
266 class id_list;
267 class id_to_ast_expr;
268 class id_to_id;
269 class map;
270 class map_list;
271 class multi_aff;
272 class multi_id;
273 class multi_pw_aff;
274 class multi_union_pw_aff;
275 class multi_val;
276 class point;
277 class pw_aff;
278 class pw_aff_list;
279 class pw_multi_aff;
280 class pw_multi_aff_list;
281 class schedule;
282 class schedule_constraints;
283 class schedule_node;
284 class schedule_node_band;
285 class schedule_node_context;
286 class schedule_node_domain;
287 class schedule_node_expansion;
288 class schedule_node_extension;
289 class schedule_node_filter;
290 class schedule_node_guard;
291 class schedule_node_leaf;
292 class schedule_node_mark;
293 class schedule_node_sequence;
294 class schedule_node_set;
295 class set;
296 class set_list;
297 class space;
298 class union_access_info;
299 class union_flow;
300 class union_map;
301 class union_pw_aff;
302 class union_pw_aff_list;
303 class union_pw_multi_aff;
304 class union_set;
305 class union_set_list;
306 class val;
307 class val_list;
309 // declarations for isl::aff
310 inline aff manage(__isl_take isl_aff *ptr);
311 inline aff manage_copy(__isl_keep isl_aff *ptr);
313 class aff {
314 friend inline aff manage(__isl_take isl_aff *ptr);
315 friend inline aff manage_copy(__isl_keep isl_aff *ptr);
317 protected:
318 isl_aff *ptr = nullptr;
320 inline explicit aff(__isl_take isl_aff *ptr);
322 public:
323 inline /* implicit */ aff();
324 inline /* implicit */ aff(const aff &obj);
325 inline explicit aff(isl::checked::ctx ctx, const std::string &str);
326 inline aff &operator=(aff obj);
327 inline ~aff();
328 inline __isl_give isl_aff *copy() const &;
329 inline __isl_give isl_aff *copy() && = delete;
330 inline __isl_keep isl_aff *get() const;
331 inline __isl_give isl_aff *release();
332 inline bool is_null() const;
333 inline isl::checked::ctx ctx() const;
335 inline isl::checked::aff add(isl::checked::aff aff2) const;
336 inline isl::checked::multi_aff add(const isl::checked::multi_aff &multi2) const;
337 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
338 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
339 inline isl::checked::pw_aff add(const isl::checked::pw_aff &pwaff2) const;
340 inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
341 inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
342 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
343 inline isl::checked::aff add_constant(isl::checked::val v) const;
344 inline isl::checked::aff add_constant(long v) const;
345 inline isl::checked::multi_aff add_constant(const isl::checked::multi_val &mv) const;
346 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
347 inline isl::checked::aff as_aff() const;
348 inline isl::checked::map as_map() const;
349 inline isl::checked::multi_aff as_multi_aff() const;
350 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
351 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
352 inline isl::checked::set as_set() const;
353 inline isl::checked::union_map as_union_map() const;
354 inline isl::checked::aff at(int pos) const;
355 inline isl::checked::basic_set bind(isl::checked::id id) const;
356 inline isl::checked::basic_set bind(const std::string &id) const;
357 inline isl::checked::basic_set bind(const isl::checked::multi_id &tuple) const;
358 inline isl::checked::pw_aff bind_domain(const isl::checked::multi_id &tuple) const;
359 inline isl::checked::pw_aff bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const;
360 inline isl::checked::aff ceil() const;
361 inline isl::checked::pw_aff coalesce() const;
362 inline isl::checked::pw_aff cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const;
363 inline isl::checked::multi_val constant_multi_val() const;
364 inline isl::checked::val constant_val() const;
365 inline isl::checked::val get_constant_val() const;
366 inline isl::checked::aff div(isl::checked::aff aff2) const;
367 inline isl::checked::pw_aff div(const isl::checked::pw_aff &pa2) const;
368 inline isl::checked::set domain() const;
369 inline isl::checked::aff domain_reverse() const;
370 inline isl::checked::pw_aff drop_unused_params() const;
371 inline isl::checked::set eq_set(isl::checked::aff aff2) const;
372 inline isl::checked::set eq_set(const isl::checked::pw_aff &pwaff2) const;
373 inline isl::checked::val eval(isl::checked::point pnt) const;
374 inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
375 inline isl::checked::multi_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
376 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
377 inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
378 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
379 inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
380 inline isl::checked::aff floor() const;
381 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
382 inline isl::checked::set ge_set(isl::checked::aff aff2) const;
383 inline isl::checked::set ge_set(const isl::checked::pw_aff &pwaff2) const;
384 inline isl::checked::aff gist(isl::checked::set context) const;
385 inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
386 inline isl::checked::aff gist(const isl::checked::basic_set &context) const;
387 inline isl::checked::aff gist(const isl::checked::point &context) const;
388 inline isl::checked::aff gist_params(isl::checked::set context) const;
389 inline isl::checked::set gt_set(isl::checked::aff aff2) const;
390 inline isl::checked::set gt_set(const isl::checked::pw_aff &pwaff2) const;
391 inline boolean has_range_tuple_id() const;
392 inline isl::checked::multi_aff identity() const;
393 inline isl::checked::pw_aff insert_domain(const isl::checked::space &domain) const;
394 inline isl::checked::pw_aff intersect_domain(const isl::checked::set &set) const;
395 inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
396 inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
397 inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
398 inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
399 inline isl::checked::pw_aff intersect_params(const isl::checked::set &set) const;
400 inline boolean involves_locals() const;
401 inline boolean involves_nan() const;
402 inline boolean involves_param(const isl::checked::id &id) const;
403 inline boolean involves_param(const std::string &id) const;
404 inline boolean involves_param(const isl::checked::id_list &list) const;
405 inline boolean is_cst() const;
406 inline boolean isa_aff() const;
407 inline boolean isa_multi_aff() const;
408 inline boolean isa_pw_multi_aff() const;
409 inline isl::checked::set le_set(isl::checked::aff aff2) const;
410 inline isl::checked::set le_set(const isl::checked::pw_aff &pwaff2) const;
411 inline isl::checked::aff_list list() const;
412 inline isl::checked::set lt_set(isl::checked::aff aff2) const;
413 inline isl::checked::set lt_set(const isl::checked::pw_aff &pwaff2) const;
414 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
415 inline isl::checked::pw_aff max(const isl::checked::pw_aff &pwaff2) const;
416 inline isl::checked::multi_val max_multi_val() const;
417 inline isl::checked::val max_val() const;
418 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
419 inline isl::checked::pw_aff min(const isl::checked::pw_aff &pwaff2) const;
420 inline isl::checked::multi_val min_multi_val() const;
421 inline isl::checked::val min_val() const;
422 inline isl::checked::aff mod(isl::checked::val mod) const;
423 inline isl::checked::aff mod(long mod) const;
424 inline isl::checked::aff mul(isl::checked::aff aff2) const;
425 inline isl::checked::pw_aff mul(const isl::checked::pw_aff &pwaff2) const;
426 inline class size n_piece() const;
427 inline isl::checked::set ne_set(isl::checked::aff aff2) const;
428 inline isl::checked::set ne_set(const isl::checked::pw_aff &pwaff2) const;
429 inline isl::checked::aff neg() const;
430 inline isl::checked::set params() const;
431 inline boolean plain_is_empty() const;
432 inline boolean plain_is_equal(const isl::checked::aff &aff2) const;
433 inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
434 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
435 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
436 inline boolean plain_is_equal(const isl::checked::pw_aff &pwaff2) const;
437 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
438 inline boolean plain_is_equal(const isl::checked::union_pw_aff &upa2) const;
439 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
440 inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
441 inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
442 inline isl::checked::multi_aff product(const isl::checked::multi_aff &multi2) const;
443 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
444 inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
445 inline isl::checked::aff pullback(isl::checked::multi_aff ma) const;
446 inline isl::checked::pw_aff pullback(const isl::checked::multi_pw_aff &mpa) const;
447 inline isl::checked::pw_aff pullback(const isl::checked::pw_multi_aff &pma) const;
448 inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
449 inline isl::checked::aff pullback(const isl::checked::aff &ma) const;
450 inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
451 inline isl::checked::pw_multi_aff range_factor_domain() const;
452 inline isl::checked::pw_multi_aff range_factor_range() const;
453 inline isl::checked::multi_aff range_product(const isl::checked::multi_aff &multi2) const;
454 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
455 inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
456 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
457 inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
458 inline isl::checked::id range_tuple_id() const;
459 inline isl::checked::multi_aff reset_range_tuple_id() const;
460 inline isl::checked::aff scale(isl::checked::val v) const;
461 inline isl::checked::aff scale(long v) const;
462 inline isl::checked::multi_aff scale(const isl::checked::multi_val &mv) const;
463 inline isl::checked::aff scale_down(isl::checked::val v) const;
464 inline isl::checked::aff scale_down(long v) const;
465 inline isl::checked::multi_aff scale_down(const isl::checked::multi_val &mv) const;
466 inline isl::checked::multi_aff set_at(int pos, const isl::checked::aff &el) const;
467 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
468 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
469 inline isl::checked::multi_aff set_range_tuple(const isl::checked::id &id) const;
470 inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
471 inline class size size() const;
472 inline isl::checked::space space() const;
473 inline isl::checked::aff sub(isl::checked::aff aff2) const;
474 inline isl::checked::multi_aff sub(const isl::checked::multi_aff &multi2) const;
475 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
476 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
477 inline isl::checked::pw_aff sub(const isl::checked::pw_aff &pwaff2) const;
478 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
479 inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
480 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
481 inline isl::checked::pw_aff subtract_domain(const isl::checked::set &set) const;
482 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
483 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
484 inline isl::checked::pw_aff tdiv_q(const isl::checked::pw_aff &pa2) const;
485 inline isl::checked::pw_aff tdiv_r(const isl::checked::pw_aff &pa2) const;
486 inline isl::checked::aff_list to_list() const;
487 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
488 inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
489 inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
490 inline isl::checked::union_pw_aff to_union_pw_aff() const;
491 inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
492 inline isl::checked::aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
493 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
494 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
495 inline isl::checked::pw_aff union_add(const isl::checked::pw_aff &pwaff2) const;
496 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
497 inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
498 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
499 static inline isl::checked::aff zero_on_domain(isl::checked::space space);
502 // declarations for isl::aff_list
503 inline aff_list manage(__isl_take isl_aff_list *ptr);
504 inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
506 class aff_list {
507 friend inline aff_list manage(__isl_take isl_aff_list *ptr);
508 friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
510 protected:
511 isl_aff_list *ptr = nullptr;
513 inline explicit aff_list(__isl_take isl_aff_list *ptr);
515 public:
516 inline /* implicit */ aff_list();
517 inline /* implicit */ aff_list(const aff_list &obj);
518 inline explicit aff_list(isl::checked::ctx ctx, int n);
519 inline explicit aff_list(isl::checked::aff el);
520 inline explicit aff_list(isl::checked::ctx ctx, const std::string &str);
521 inline aff_list &operator=(aff_list obj);
522 inline ~aff_list();
523 inline __isl_give isl_aff_list *copy() const &;
524 inline __isl_give isl_aff_list *copy() && = delete;
525 inline __isl_keep isl_aff_list *get() const;
526 inline __isl_give isl_aff_list *release();
527 inline bool is_null() const;
528 inline isl::checked::ctx ctx() const;
530 inline isl::checked::aff_list add(isl::checked::aff el) const;
531 inline isl::checked::aff at(int index) const;
532 inline isl::checked::aff get_at(int index) const;
533 inline isl::checked::aff_list clear() const;
534 inline isl::checked::aff_list concat(isl::checked::aff_list list2) const;
535 inline isl::checked::aff_list drop(unsigned int first, unsigned int n) const;
536 inline stat foreach(const std::function<stat(isl::checked::aff)> &fn) const;
537 inline stat foreach_scc(const std::function<boolean(isl::checked::aff, isl::checked::aff)> &follows, const std::function<stat(isl::checked::aff_list)> &fn) const;
538 inline isl::checked::aff_list insert(unsigned int pos, isl::checked::aff el) const;
539 inline isl::checked::aff_list set_at(int index, isl::checked::aff el) const;
540 inline class size size() const;
543 // declarations for isl::ast_build
544 inline ast_build manage(__isl_take isl_ast_build *ptr);
545 inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
547 class ast_build {
548 friend inline ast_build manage(__isl_take isl_ast_build *ptr);
549 friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
551 protected:
552 isl_ast_build *ptr = nullptr;
554 inline explicit ast_build(__isl_take isl_ast_build *ptr);
556 public:
557 inline /* implicit */ ast_build();
558 inline /* implicit */ ast_build(const ast_build &obj);
559 inline explicit ast_build(isl::checked::ctx ctx);
560 inline ast_build &operator=(ast_build obj);
561 inline ~ast_build();
562 inline __isl_give isl_ast_build *copy() const &;
563 inline __isl_give isl_ast_build *copy() && = delete;
564 inline __isl_keep isl_ast_build *get() const;
565 inline __isl_give isl_ast_build *release();
566 inline bool is_null() const;
567 inline isl::checked::ctx ctx() const;
569 private:
570 inline ast_build &copy_callbacks(const ast_build &obj);
571 struct at_each_domain_data {
572 std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> func;
574 std::shared_ptr<at_each_domain_data> at_each_domain_data;
575 static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
576 inline void set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn);
577 public:
578 inline isl::checked::ast_build set_at_each_domain(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn) const;
579 inline isl::checked::ast_expr access_from(isl::checked::multi_pw_aff mpa) const;
580 inline isl::checked::ast_expr access_from(isl::checked::pw_multi_aff pma) const;
581 inline isl::checked::ast_expr call_from(isl::checked::multi_pw_aff mpa) const;
582 inline isl::checked::ast_expr call_from(isl::checked::pw_multi_aff pma) const;
583 inline isl::checked::ast_expr expr_from(isl::checked::pw_aff pa) const;
584 inline isl::checked::ast_expr expr_from(isl::checked::set set) const;
585 static inline isl::checked::ast_build from_context(isl::checked::set set);
586 inline isl::checked::ast_node node_from(isl::checked::schedule schedule) const;
587 inline isl::checked::ast_node node_from_schedule_map(isl::checked::union_map schedule) const;
588 inline isl::checked::union_map schedule() const;
589 inline isl::checked::union_map get_schedule() const;
592 // declarations for isl::ast_expr
593 inline ast_expr manage(__isl_take isl_ast_expr *ptr);
594 inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
596 class ast_expr {
597 friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
598 friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
600 protected:
601 isl_ast_expr *ptr = nullptr;
603 inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
605 public:
606 inline /* implicit */ ast_expr();
607 inline /* implicit */ ast_expr(const ast_expr &obj);
608 inline ast_expr &operator=(ast_expr obj);
609 inline ~ast_expr();
610 inline __isl_give isl_ast_expr *copy() const &;
611 inline __isl_give isl_ast_expr *copy() && = delete;
612 inline __isl_keep isl_ast_expr *get() const;
613 inline __isl_give isl_ast_expr *release();
614 inline bool is_null() const;
615 private:
616 template <typename T,
617 typename = typename std::enable_if<std::is_same<
618 const decltype(isl_ast_expr_get_type(NULL)),
619 const T>::value>::type>
620 inline boolean isa_type(T subtype) const;
621 public:
622 template <class T> inline boolean isa() const;
623 template <class T> inline T as() const;
624 inline isl::checked::ctx ctx() const;
626 inline std::string to_C_str() const;
629 // declarations for isl::ast_expr_id
631 class ast_expr_id : public ast_expr {
632 template <class T>
633 friend boolean ast_expr::isa() const;
634 friend ast_expr_id ast_expr::as<ast_expr_id>() const;
635 static const auto type = isl_ast_expr_id;
637 protected:
638 inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
640 public:
641 inline /* implicit */ ast_expr_id();
642 inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
643 inline ast_expr_id &operator=(ast_expr_id obj);
644 inline isl::checked::ctx ctx() const;
646 inline isl::checked::id id() const;
647 inline isl::checked::id get_id() const;
650 // declarations for isl::ast_expr_int
652 class ast_expr_int : public ast_expr {
653 template <class T>
654 friend boolean ast_expr::isa() const;
655 friend ast_expr_int ast_expr::as<ast_expr_int>() const;
656 static const auto type = isl_ast_expr_int;
658 protected:
659 inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
661 public:
662 inline /* implicit */ ast_expr_int();
663 inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
664 inline ast_expr_int &operator=(ast_expr_int obj);
665 inline isl::checked::ctx ctx() const;
667 inline isl::checked::val val() const;
668 inline isl::checked::val get_val() const;
671 // declarations for isl::ast_expr_op
673 class ast_expr_op : public ast_expr {
674 template <class T>
675 friend boolean ast_expr::isa() const;
676 friend ast_expr_op ast_expr::as<ast_expr_op>() const;
677 static const auto type = isl_ast_expr_op;
679 protected:
680 inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
682 public:
683 inline /* implicit */ ast_expr_op();
684 inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
685 inline ast_expr_op &operator=(ast_expr_op obj);
686 private:
687 template <typename T,
688 typename = typename std::enable_if<std::is_same<
689 const decltype(isl_ast_expr_op_get_type(NULL)),
690 const T>::value>::type>
691 inline boolean isa_type(T subtype) const;
692 public:
693 template <class T> inline boolean isa() const;
694 template <class T> inline T as() const;
695 inline isl::checked::ctx ctx() const;
697 inline isl::checked::ast_expr arg(int pos) const;
698 inline isl::checked::ast_expr get_arg(int pos) const;
699 inline class size n_arg() const;
700 inline class size get_n_arg() const;
703 // declarations for isl::ast_expr_op_access
705 class ast_expr_op_access : public ast_expr_op {
706 template <class T>
707 friend boolean ast_expr_op::isa() const;
708 friend ast_expr_op_access ast_expr_op::as<ast_expr_op_access>() const;
709 static const auto type = isl_ast_expr_op_access;
711 protected:
712 inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
714 public:
715 inline /* implicit */ ast_expr_op_access();
716 inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
717 inline ast_expr_op_access &operator=(ast_expr_op_access obj);
718 inline isl::checked::ctx ctx() const;
722 // declarations for isl::ast_expr_op_add
724 class ast_expr_op_add : public ast_expr_op {
725 template <class T>
726 friend boolean ast_expr_op::isa() const;
727 friend ast_expr_op_add ast_expr_op::as<ast_expr_op_add>() const;
728 static const auto type = isl_ast_expr_op_add;
730 protected:
731 inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
733 public:
734 inline /* implicit */ ast_expr_op_add();
735 inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
736 inline ast_expr_op_add &operator=(ast_expr_op_add obj);
737 inline isl::checked::ctx ctx() const;
741 // declarations for isl::ast_expr_op_address_of
743 class ast_expr_op_address_of : public ast_expr_op {
744 template <class T>
745 friend boolean ast_expr_op::isa() const;
746 friend ast_expr_op_address_of ast_expr_op::as<ast_expr_op_address_of>() const;
747 static const auto type = isl_ast_expr_op_address_of;
749 protected:
750 inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
752 public:
753 inline /* implicit */ ast_expr_op_address_of();
754 inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
755 inline ast_expr_op_address_of &operator=(ast_expr_op_address_of obj);
756 inline isl::checked::ctx ctx() const;
760 // declarations for isl::ast_expr_op_and
762 class ast_expr_op_and : public ast_expr_op {
763 template <class T>
764 friend boolean ast_expr_op::isa() const;
765 friend ast_expr_op_and ast_expr_op::as<ast_expr_op_and>() const;
766 static const auto type = isl_ast_expr_op_and;
768 protected:
769 inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
771 public:
772 inline /* implicit */ ast_expr_op_and();
773 inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
774 inline ast_expr_op_and &operator=(ast_expr_op_and obj);
775 inline isl::checked::ctx ctx() const;
779 // declarations for isl::ast_expr_op_and_then
781 class ast_expr_op_and_then : public ast_expr_op {
782 template <class T>
783 friend boolean ast_expr_op::isa() const;
784 friend ast_expr_op_and_then ast_expr_op::as<ast_expr_op_and_then>() const;
785 static const auto type = isl_ast_expr_op_and_then;
787 protected:
788 inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
790 public:
791 inline /* implicit */ ast_expr_op_and_then();
792 inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
793 inline ast_expr_op_and_then &operator=(ast_expr_op_and_then obj);
794 inline isl::checked::ctx ctx() const;
798 // declarations for isl::ast_expr_op_call
800 class ast_expr_op_call : public ast_expr_op {
801 template <class T>
802 friend boolean ast_expr_op::isa() const;
803 friend ast_expr_op_call ast_expr_op::as<ast_expr_op_call>() const;
804 static const auto type = isl_ast_expr_op_call;
806 protected:
807 inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
809 public:
810 inline /* implicit */ ast_expr_op_call();
811 inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
812 inline ast_expr_op_call &operator=(ast_expr_op_call obj);
813 inline isl::checked::ctx ctx() const;
817 // declarations for isl::ast_expr_op_cond
819 class ast_expr_op_cond : public ast_expr_op {
820 template <class T>
821 friend boolean ast_expr_op::isa() const;
822 friend ast_expr_op_cond ast_expr_op::as<ast_expr_op_cond>() const;
823 static const auto type = isl_ast_expr_op_cond;
825 protected:
826 inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
828 public:
829 inline /* implicit */ ast_expr_op_cond();
830 inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
831 inline ast_expr_op_cond &operator=(ast_expr_op_cond obj);
832 inline isl::checked::ctx ctx() const;
836 // declarations for isl::ast_expr_op_div
838 class ast_expr_op_div : public ast_expr_op {
839 template <class T>
840 friend boolean ast_expr_op::isa() const;
841 friend ast_expr_op_div ast_expr_op::as<ast_expr_op_div>() const;
842 static const auto type = isl_ast_expr_op_div;
844 protected:
845 inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
847 public:
848 inline /* implicit */ ast_expr_op_div();
849 inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
850 inline ast_expr_op_div &operator=(ast_expr_op_div obj);
851 inline isl::checked::ctx ctx() const;
855 // declarations for isl::ast_expr_op_eq
857 class ast_expr_op_eq : public ast_expr_op {
858 template <class T>
859 friend boolean ast_expr_op::isa() const;
860 friend ast_expr_op_eq ast_expr_op::as<ast_expr_op_eq>() const;
861 static const auto type = isl_ast_expr_op_eq;
863 protected:
864 inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
866 public:
867 inline /* implicit */ ast_expr_op_eq();
868 inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
869 inline ast_expr_op_eq &operator=(ast_expr_op_eq obj);
870 inline isl::checked::ctx ctx() const;
874 // declarations for isl::ast_expr_op_fdiv_q
876 class ast_expr_op_fdiv_q : public ast_expr_op {
877 template <class T>
878 friend boolean ast_expr_op::isa() const;
879 friend ast_expr_op_fdiv_q ast_expr_op::as<ast_expr_op_fdiv_q>() const;
880 static const auto type = isl_ast_expr_op_fdiv_q;
882 protected:
883 inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
885 public:
886 inline /* implicit */ ast_expr_op_fdiv_q();
887 inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
888 inline ast_expr_op_fdiv_q &operator=(ast_expr_op_fdiv_q obj);
889 inline isl::checked::ctx ctx() const;
893 // declarations for isl::ast_expr_op_ge
895 class ast_expr_op_ge : public ast_expr_op {
896 template <class T>
897 friend boolean ast_expr_op::isa() const;
898 friend ast_expr_op_ge ast_expr_op::as<ast_expr_op_ge>() const;
899 static const auto type = isl_ast_expr_op_ge;
901 protected:
902 inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
904 public:
905 inline /* implicit */ ast_expr_op_ge();
906 inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
907 inline ast_expr_op_ge &operator=(ast_expr_op_ge obj);
908 inline isl::checked::ctx ctx() const;
912 // declarations for isl::ast_expr_op_gt
914 class ast_expr_op_gt : public ast_expr_op {
915 template <class T>
916 friend boolean ast_expr_op::isa() const;
917 friend ast_expr_op_gt ast_expr_op::as<ast_expr_op_gt>() const;
918 static const auto type = isl_ast_expr_op_gt;
920 protected:
921 inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
923 public:
924 inline /* implicit */ ast_expr_op_gt();
925 inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
926 inline ast_expr_op_gt &operator=(ast_expr_op_gt obj);
927 inline isl::checked::ctx ctx() const;
931 // declarations for isl::ast_expr_op_le
933 class ast_expr_op_le : public ast_expr_op {
934 template <class T>
935 friend boolean ast_expr_op::isa() const;
936 friend ast_expr_op_le ast_expr_op::as<ast_expr_op_le>() const;
937 static const auto type = isl_ast_expr_op_le;
939 protected:
940 inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
942 public:
943 inline /* implicit */ ast_expr_op_le();
944 inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
945 inline ast_expr_op_le &operator=(ast_expr_op_le obj);
946 inline isl::checked::ctx ctx() const;
950 // declarations for isl::ast_expr_op_lt
952 class ast_expr_op_lt : public ast_expr_op {
953 template <class T>
954 friend boolean ast_expr_op::isa() const;
955 friend ast_expr_op_lt ast_expr_op::as<ast_expr_op_lt>() const;
956 static const auto type = isl_ast_expr_op_lt;
958 protected:
959 inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
961 public:
962 inline /* implicit */ ast_expr_op_lt();
963 inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
964 inline ast_expr_op_lt &operator=(ast_expr_op_lt obj);
965 inline isl::checked::ctx ctx() const;
969 // declarations for isl::ast_expr_op_max
971 class ast_expr_op_max : public ast_expr_op {
972 template <class T>
973 friend boolean ast_expr_op::isa() const;
974 friend ast_expr_op_max ast_expr_op::as<ast_expr_op_max>() const;
975 static const auto type = isl_ast_expr_op_max;
977 protected:
978 inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
980 public:
981 inline /* implicit */ ast_expr_op_max();
982 inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
983 inline ast_expr_op_max &operator=(ast_expr_op_max obj);
984 inline isl::checked::ctx ctx() const;
988 // declarations for isl::ast_expr_op_member
990 class ast_expr_op_member : public ast_expr_op {
991 template <class T>
992 friend boolean ast_expr_op::isa() const;
993 friend ast_expr_op_member ast_expr_op::as<ast_expr_op_member>() const;
994 static const auto type = isl_ast_expr_op_member;
996 protected:
997 inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
999 public:
1000 inline /* implicit */ ast_expr_op_member();
1001 inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
1002 inline ast_expr_op_member &operator=(ast_expr_op_member obj);
1003 inline isl::checked::ctx ctx() const;
1007 // declarations for isl::ast_expr_op_min
1009 class ast_expr_op_min : public ast_expr_op {
1010 template <class T>
1011 friend boolean ast_expr_op::isa() const;
1012 friend ast_expr_op_min ast_expr_op::as<ast_expr_op_min>() const;
1013 static const auto type = isl_ast_expr_op_min;
1015 protected:
1016 inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
1018 public:
1019 inline /* implicit */ ast_expr_op_min();
1020 inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
1021 inline ast_expr_op_min &operator=(ast_expr_op_min obj);
1022 inline isl::checked::ctx ctx() const;
1026 // declarations for isl::ast_expr_op_minus
1028 class ast_expr_op_minus : public ast_expr_op {
1029 template <class T>
1030 friend boolean ast_expr_op::isa() const;
1031 friend ast_expr_op_minus ast_expr_op::as<ast_expr_op_minus>() const;
1032 static const auto type = isl_ast_expr_op_minus;
1034 protected:
1035 inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
1037 public:
1038 inline /* implicit */ ast_expr_op_minus();
1039 inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
1040 inline ast_expr_op_minus &operator=(ast_expr_op_minus obj);
1041 inline isl::checked::ctx ctx() const;
1045 // declarations for isl::ast_expr_op_mul
1047 class ast_expr_op_mul : public ast_expr_op {
1048 template <class T>
1049 friend boolean ast_expr_op::isa() const;
1050 friend ast_expr_op_mul ast_expr_op::as<ast_expr_op_mul>() const;
1051 static const auto type = isl_ast_expr_op_mul;
1053 protected:
1054 inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
1056 public:
1057 inline /* implicit */ ast_expr_op_mul();
1058 inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
1059 inline ast_expr_op_mul &operator=(ast_expr_op_mul obj);
1060 inline isl::checked::ctx ctx() const;
1064 // declarations for isl::ast_expr_op_or
1066 class ast_expr_op_or : public ast_expr_op {
1067 template <class T>
1068 friend boolean ast_expr_op::isa() const;
1069 friend ast_expr_op_or ast_expr_op::as<ast_expr_op_or>() const;
1070 static const auto type = isl_ast_expr_op_or;
1072 protected:
1073 inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
1075 public:
1076 inline /* implicit */ ast_expr_op_or();
1077 inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
1078 inline ast_expr_op_or &operator=(ast_expr_op_or obj);
1079 inline isl::checked::ctx ctx() const;
1083 // declarations for isl::ast_expr_op_or_else
1085 class ast_expr_op_or_else : public ast_expr_op {
1086 template <class T>
1087 friend boolean ast_expr_op::isa() const;
1088 friend ast_expr_op_or_else ast_expr_op::as<ast_expr_op_or_else>() const;
1089 static const auto type = isl_ast_expr_op_or_else;
1091 protected:
1092 inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
1094 public:
1095 inline /* implicit */ ast_expr_op_or_else();
1096 inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
1097 inline ast_expr_op_or_else &operator=(ast_expr_op_or_else obj);
1098 inline isl::checked::ctx ctx() const;
1102 // declarations for isl::ast_expr_op_pdiv_q
1104 class ast_expr_op_pdiv_q : public ast_expr_op {
1105 template <class T>
1106 friend boolean ast_expr_op::isa() const;
1107 friend ast_expr_op_pdiv_q ast_expr_op::as<ast_expr_op_pdiv_q>() const;
1108 static const auto type = isl_ast_expr_op_pdiv_q;
1110 protected:
1111 inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
1113 public:
1114 inline /* implicit */ ast_expr_op_pdiv_q();
1115 inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
1116 inline ast_expr_op_pdiv_q &operator=(ast_expr_op_pdiv_q obj);
1117 inline isl::checked::ctx ctx() const;
1121 // declarations for isl::ast_expr_op_pdiv_r
1123 class ast_expr_op_pdiv_r : public ast_expr_op {
1124 template <class T>
1125 friend boolean ast_expr_op::isa() const;
1126 friend ast_expr_op_pdiv_r ast_expr_op::as<ast_expr_op_pdiv_r>() const;
1127 static const auto type = isl_ast_expr_op_pdiv_r;
1129 protected:
1130 inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
1132 public:
1133 inline /* implicit */ ast_expr_op_pdiv_r();
1134 inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
1135 inline ast_expr_op_pdiv_r &operator=(ast_expr_op_pdiv_r obj);
1136 inline isl::checked::ctx ctx() const;
1140 // declarations for isl::ast_expr_op_select
1142 class ast_expr_op_select : public ast_expr_op {
1143 template <class T>
1144 friend boolean ast_expr_op::isa() const;
1145 friend ast_expr_op_select ast_expr_op::as<ast_expr_op_select>() const;
1146 static const auto type = isl_ast_expr_op_select;
1148 protected:
1149 inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
1151 public:
1152 inline /* implicit */ ast_expr_op_select();
1153 inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
1154 inline ast_expr_op_select &operator=(ast_expr_op_select obj);
1155 inline isl::checked::ctx ctx() const;
1159 // declarations for isl::ast_expr_op_sub
1161 class ast_expr_op_sub : public ast_expr_op {
1162 template <class T>
1163 friend boolean ast_expr_op::isa() const;
1164 friend ast_expr_op_sub ast_expr_op::as<ast_expr_op_sub>() const;
1165 static const auto type = isl_ast_expr_op_sub;
1167 protected:
1168 inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
1170 public:
1171 inline /* implicit */ ast_expr_op_sub();
1172 inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
1173 inline ast_expr_op_sub &operator=(ast_expr_op_sub obj);
1174 inline isl::checked::ctx ctx() const;
1178 // declarations for isl::ast_expr_op_zdiv_r
1180 class ast_expr_op_zdiv_r : public ast_expr_op {
1181 template <class T>
1182 friend boolean ast_expr_op::isa() const;
1183 friend ast_expr_op_zdiv_r ast_expr_op::as<ast_expr_op_zdiv_r>() const;
1184 static const auto type = isl_ast_expr_op_zdiv_r;
1186 protected:
1187 inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
1189 public:
1190 inline /* implicit */ ast_expr_op_zdiv_r();
1191 inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
1192 inline ast_expr_op_zdiv_r &operator=(ast_expr_op_zdiv_r obj);
1193 inline isl::checked::ctx ctx() const;
1197 // declarations for isl::ast_node
1198 inline ast_node manage(__isl_take isl_ast_node *ptr);
1199 inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1201 class ast_node {
1202 friend inline ast_node manage(__isl_take isl_ast_node *ptr);
1203 friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1205 protected:
1206 isl_ast_node *ptr = nullptr;
1208 inline explicit ast_node(__isl_take isl_ast_node *ptr);
1210 public:
1211 inline /* implicit */ ast_node();
1212 inline /* implicit */ ast_node(const ast_node &obj);
1213 inline ast_node &operator=(ast_node obj);
1214 inline ~ast_node();
1215 inline __isl_give isl_ast_node *copy() const &;
1216 inline __isl_give isl_ast_node *copy() && = delete;
1217 inline __isl_keep isl_ast_node *get() const;
1218 inline __isl_give isl_ast_node *release();
1219 inline bool is_null() const;
1220 private:
1221 template <typename T,
1222 typename = typename std::enable_if<std::is_same<
1223 const decltype(isl_ast_node_get_type(NULL)),
1224 const T>::value>::type>
1225 inline boolean isa_type(T subtype) const;
1226 public:
1227 template <class T> inline boolean isa() const;
1228 template <class T> inline T as() const;
1229 inline isl::checked::ctx ctx() const;
1231 inline isl::checked::ast_node map_descendant_bottom_up(const std::function<isl::checked::ast_node(isl::checked::ast_node)> &fn) const;
1232 inline std::string to_C_str() const;
1233 inline isl::checked::ast_node_list to_list() const;
1236 // declarations for isl::ast_node_block
1238 class ast_node_block : public ast_node {
1239 template <class T>
1240 friend boolean ast_node::isa() const;
1241 friend ast_node_block ast_node::as<ast_node_block>() const;
1242 static const auto type = isl_ast_node_block;
1244 protected:
1245 inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
1247 public:
1248 inline /* implicit */ ast_node_block();
1249 inline /* implicit */ ast_node_block(const ast_node_block &obj);
1250 inline explicit ast_node_block(isl::checked::ast_node_list list);
1251 inline ast_node_block &operator=(ast_node_block obj);
1252 inline isl::checked::ctx ctx() const;
1254 inline isl::checked::ast_node_list children() const;
1255 inline isl::checked::ast_node_list get_children() const;
1258 // declarations for isl::ast_node_for
1260 class ast_node_for : public ast_node {
1261 template <class T>
1262 friend boolean ast_node::isa() const;
1263 friend ast_node_for ast_node::as<ast_node_for>() const;
1264 static const auto type = isl_ast_node_for;
1266 protected:
1267 inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
1269 public:
1270 inline /* implicit */ ast_node_for();
1271 inline /* implicit */ ast_node_for(const ast_node_for &obj);
1272 inline ast_node_for &operator=(ast_node_for obj);
1273 inline isl::checked::ctx ctx() const;
1275 inline isl::checked::ast_node body() const;
1276 inline isl::checked::ast_node get_body() const;
1277 inline isl::checked::ast_expr cond() const;
1278 inline isl::checked::ast_expr get_cond() const;
1279 inline isl::checked::ast_expr inc() const;
1280 inline isl::checked::ast_expr get_inc() const;
1281 inline isl::checked::ast_expr init() const;
1282 inline isl::checked::ast_expr get_init() const;
1283 inline boolean is_degenerate() const;
1284 inline isl::checked::ast_expr iterator() const;
1285 inline isl::checked::ast_expr get_iterator() const;
1288 // declarations for isl::ast_node_if
1290 class ast_node_if : public ast_node {
1291 template <class T>
1292 friend boolean ast_node::isa() const;
1293 friend ast_node_if ast_node::as<ast_node_if>() const;
1294 static const auto type = isl_ast_node_if;
1296 protected:
1297 inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
1299 public:
1300 inline /* implicit */ ast_node_if();
1301 inline /* implicit */ ast_node_if(const ast_node_if &obj);
1302 inline ast_node_if &operator=(ast_node_if obj);
1303 inline isl::checked::ctx ctx() const;
1305 inline isl::checked::ast_expr cond() const;
1306 inline isl::checked::ast_expr get_cond() const;
1307 inline isl::checked::ast_node else_node() const;
1308 inline isl::checked::ast_node get_else_node() const;
1309 inline boolean has_else_node() const;
1310 inline isl::checked::ast_node then_node() const;
1311 inline isl::checked::ast_node get_then_node() const;
1314 // declarations for isl::ast_node_list
1315 inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1316 inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1318 class ast_node_list {
1319 friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1320 friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1322 protected:
1323 isl_ast_node_list *ptr = nullptr;
1325 inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
1327 public:
1328 inline /* implicit */ ast_node_list();
1329 inline /* implicit */ ast_node_list(const ast_node_list &obj);
1330 inline explicit ast_node_list(isl::checked::ctx ctx, int n);
1331 inline explicit ast_node_list(isl::checked::ast_node el);
1332 inline ast_node_list &operator=(ast_node_list obj);
1333 inline ~ast_node_list();
1334 inline __isl_give isl_ast_node_list *copy() const &;
1335 inline __isl_give isl_ast_node_list *copy() && = delete;
1336 inline __isl_keep isl_ast_node_list *get() const;
1337 inline __isl_give isl_ast_node_list *release();
1338 inline bool is_null() const;
1339 inline isl::checked::ctx ctx() const;
1341 inline isl::checked::ast_node_list add(isl::checked::ast_node el) const;
1342 inline isl::checked::ast_node at(int index) const;
1343 inline isl::checked::ast_node get_at(int index) const;
1344 inline isl::checked::ast_node_list clear() const;
1345 inline isl::checked::ast_node_list concat(isl::checked::ast_node_list list2) const;
1346 inline isl::checked::ast_node_list drop(unsigned int first, unsigned int n) const;
1347 inline stat foreach(const std::function<stat(isl::checked::ast_node)> &fn) const;
1348 inline stat foreach_scc(const std::function<boolean(isl::checked::ast_node, isl::checked::ast_node)> &follows, const std::function<stat(isl::checked::ast_node_list)> &fn) const;
1349 inline isl::checked::ast_node_list insert(unsigned int pos, isl::checked::ast_node el) const;
1350 inline isl::checked::ast_node_list set_at(int index, isl::checked::ast_node el) const;
1351 inline class size size() const;
1354 // declarations for isl::ast_node_mark
1356 class ast_node_mark : public ast_node {
1357 template <class T>
1358 friend boolean ast_node::isa() const;
1359 friend ast_node_mark ast_node::as<ast_node_mark>() const;
1360 static const auto type = isl_ast_node_mark;
1362 protected:
1363 inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
1365 public:
1366 inline /* implicit */ ast_node_mark();
1367 inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
1368 inline ast_node_mark &operator=(ast_node_mark obj);
1369 inline isl::checked::ctx ctx() const;
1371 inline isl::checked::id id() const;
1372 inline isl::checked::id get_id() const;
1373 inline isl::checked::ast_node node() const;
1374 inline isl::checked::ast_node get_node() const;
1377 // declarations for isl::ast_node_user
1379 class ast_node_user : public ast_node {
1380 template <class T>
1381 friend boolean ast_node::isa() const;
1382 friend ast_node_user ast_node::as<ast_node_user>() const;
1383 static const auto type = isl_ast_node_user;
1385 protected:
1386 inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
1388 public:
1389 inline /* implicit */ ast_node_user();
1390 inline /* implicit */ ast_node_user(const ast_node_user &obj);
1391 inline explicit ast_node_user(isl::checked::ast_expr expr);
1392 inline ast_node_user &operator=(ast_node_user obj);
1393 inline isl::checked::ctx ctx() const;
1395 inline isl::checked::ast_expr expr() const;
1396 inline isl::checked::ast_expr get_expr() const;
1399 // declarations for isl::basic_map
1400 inline basic_map manage(__isl_take isl_basic_map *ptr);
1401 inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1403 class basic_map {
1404 friend inline basic_map manage(__isl_take isl_basic_map *ptr);
1405 friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1407 protected:
1408 isl_basic_map *ptr = nullptr;
1410 inline explicit basic_map(__isl_take isl_basic_map *ptr);
1412 public:
1413 inline /* implicit */ basic_map();
1414 inline /* implicit */ basic_map(const basic_map &obj);
1415 inline explicit basic_map(isl::checked::ctx ctx, const std::string &str);
1416 inline basic_map &operator=(basic_map obj);
1417 inline ~basic_map();
1418 inline __isl_give isl_basic_map *copy() const &;
1419 inline __isl_give isl_basic_map *copy() && = delete;
1420 inline __isl_keep isl_basic_map *get() const;
1421 inline __isl_give isl_basic_map *release();
1422 inline bool is_null() const;
1423 inline isl::checked::ctx ctx() const;
1425 inline isl::checked::basic_map affine_hull() const;
1426 inline isl::checked::basic_map apply_domain(isl::checked::basic_map bmap2) const;
1427 inline isl::checked::map apply_domain(const isl::checked::map &map2) const;
1428 inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1429 inline isl::checked::basic_map apply_range(isl::checked::basic_map bmap2) const;
1430 inline isl::checked::map apply_range(const isl::checked::map &map2) const;
1431 inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1432 inline isl::checked::map as_map() const;
1433 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
1434 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1435 inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
1436 inline isl::checked::set bind_domain(const isl::checked::multi_id &tuple) const;
1437 inline isl::checked::set bind_range(const isl::checked::multi_id &tuple) const;
1438 inline isl::checked::map coalesce() const;
1439 inline isl::checked::map complement() const;
1440 inline isl::checked::union_map compute_divs() const;
1441 inline isl::checked::map curry() const;
1442 inline isl::checked::basic_set deltas() const;
1443 inline isl::checked::basic_map detect_equalities() const;
1444 inline isl::checked::set domain() const;
1445 inline isl::checked::map domain_factor_domain() const;
1446 inline isl::checked::map domain_factor_range() const;
1447 inline isl::checked::union_map domain_map() const;
1448 inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1449 inline isl::checked::map domain_product(const isl::checked::map &map2) const;
1450 inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1451 inline isl::checked::map domain_reverse() const;
1452 inline class size domain_tuple_dim() const;
1453 inline isl::checked::id domain_tuple_id() const;
1454 inline isl::checked::map drop_unused_params() const;
1455 inline isl::checked::map eq_at(const isl::checked::multi_pw_aff &mpa) const;
1456 inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1457 inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1458 inline isl::checked::map extract_map(const isl::checked::space &space) const;
1459 inline isl::checked::map factor_domain() const;
1460 inline isl::checked::map factor_range() const;
1461 inline isl::checked::map fixed_power(const isl::checked::val &exp) const;
1462 inline isl::checked::map fixed_power(long exp) const;
1463 inline isl::checked::basic_map flatten() const;
1464 inline isl::checked::basic_map flatten_domain() const;
1465 inline isl::checked::basic_map flatten_range() const;
1466 inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1467 inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1468 inline isl::checked::basic_map gist(isl::checked::basic_map context) const;
1469 inline isl::checked::map gist(const isl::checked::map &context) const;
1470 inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1471 inline isl::checked::map gist_domain(const isl::checked::set &context) const;
1472 inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1473 inline isl::checked::map gist_params(const isl::checked::set &context) const;
1474 inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1475 inline boolean has_domain_tuple_id() const;
1476 inline boolean has_range_tuple_id() const;
1477 inline isl::checked::basic_map intersect(isl::checked::basic_map bmap2) const;
1478 inline isl::checked::map intersect(const isl::checked::map &map2) const;
1479 inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1480 inline isl::checked::basic_map intersect_domain(isl::checked::basic_set bset) const;
1481 inline isl::checked::map intersect_domain(const isl::checked::set &set) const;
1482 inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1483 inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1484 inline isl::checked::basic_map intersect_domain(const isl::checked::point &bset) const;
1485 inline isl::checked::map intersect_domain_factor_domain(const isl::checked::map &factor) const;
1486 inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
1487 inline isl::checked::map intersect_domain_factor_range(const isl::checked::map &factor) const;
1488 inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
1489 inline isl::checked::map intersect_domain_wrapped_domain(const isl::checked::set &domain) const;
1490 inline isl::checked::union_map intersect_domain_wrapped_domain(const isl::checked::union_set &domain) const;
1491 inline isl::checked::basic_map intersect_params(isl::checked::basic_set bset) const;
1492 inline isl::checked::map intersect_params(const isl::checked::set &params) const;
1493 inline isl::checked::basic_map intersect_params(const isl::checked::point &bset) const;
1494 inline isl::checked::basic_map intersect_range(isl::checked::basic_set bset) const;
1495 inline isl::checked::map intersect_range(const isl::checked::set &set) const;
1496 inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
1497 inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
1498 inline isl::checked::basic_map intersect_range(const isl::checked::point &bset) const;
1499 inline isl::checked::map intersect_range_factor_domain(const isl::checked::map &factor) const;
1500 inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
1501 inline isl::checked::map intersect_range_factor_range(const isl::checked::map &factor) const;
1502 inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
1503 inline isl::checked::map intersect_range_wrapped_domain(const isl::checked::set &domain) const;
1504 inline isl::checked::union_map intersect_range_wrapped_domain(const isl::checked::union_set &domain) const;
1505 inline boolean is_bijective() const;
1506 inline boolean is_disjoint(const isl::checked::map &map2) const;
1507 inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
1508 inline boolean is_empty() const;
1509 inline boolean is_equal(const isl::checked::basic_map &bmap2) const;
1510 inline boolean is_equal(const isl::checked::map &map2) const;
1511 inline boolean is_equal(const isl::checked::union_map &umap2) const;
1512 inline boolean is_injective() const;
1513 inline boolean is_single_valued() const;
1514 inline boolean is_strict_subset(const isl::checked::map &map2) const;
1515 inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
1516 inline boolean is_subset(const isl::checked::basic_map &bmap2) const;
1517 inline boolean is_subset(const isl::checked::map &map2) const;
1518 inline boolean is_subset(const isl::checked::union_map &umap2) const;
1519 inline boolean isa_map() const;
1520 inline isl::checked::map lex_ge_at(const isl::checked::multi_pw_aff &mpa) const;
1521 inline isl::checked::map lex_gt_at(const isl::checked::multi_pw_aff &mpa) const;
1522 inline isl::checked::map lex_le_at(const isl::checked::multi_pw_aff &mpa) const;
1523 inline isl::checked::map lex_lt_at(const isl::checked::multi_pw_aff &mpa) const;
1524 inline isl::checked::map lexmax() const;
1525 inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1526 inline isl::checked::map lexmin() const;
1527 inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1528 inline isl::checked::map lower_bound(const isl::checked::multi_pw_aff &lower) const;
1529 inline isl::checked::map_list map_list() const;
1530 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1531 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1532 inline class size n_basic_map() const;
1533 inline isl::checked::set params() const;
1534 inline isl::checked::basic_map polyhedral_hull() const;
1535 inline isl::checked::map preimage_domain(const isl::checked::multi_aff &ma) const;
1536 inline isl::checked::map preimage_domain(const isl::checked::multi_pw_aff &mpa) const;
1537 inline isl::checked::map preimage_domain(const isl::checked::pw_multi_aff &pma) const;
1538 inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
1539 inline isl::checked::map preimage_range(const isl::checked::multi_aff &ma) const;
1540 inline isl::checked::map preimage_range(const isl::checked::pw_multi_aff &pma) const;
1541 inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
1542 inline isl::checked::map product(const isl::checked::map &map2) const;
1543 inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
1544 inline isl::checked::map project_out_all_params() const;
1545 inline isl::checked::map project_out_param(const isl::checked::id &id) const;
1546 inline isl::checked::map project_out_param(const std::string &id) const;
1547 inline isl::checked::map project_out_param(const isl::checked::id_list &list) const;
1548 inline isl::checked::set range() const;
1549 inline isl::checked::map range_factor_domain() const;
1550 inline isl::checked::map range_factor_range() const;
1551 inline isl::checked::fixed_box range_lattice_tile() const;
1552 inline isl::checked::union_map range_map() const;
1553 inline isl::checked::map range_product(const isl::checked::map &map2) const;
1554 inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
1555 inline isl::checked::map range_reverse() const;
1556 inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
1557 inline class size range_tuple_dim() const;
1558 inline isl::checked::id range_tuple_id() const;
1559 inline isl::checked::basic_map reverse() const;
1560 inline isl::checked::basic_map sample() const;
1561 inline isl::checked::map set_domain_tuple(const isl::checked::id &id) const;
1562 inline isl::checked::map set_domain_tuple(const std::string &id) const;
1563 inline isl::checked::map set_range_tuple(const isl::checked::id &id) const;
1564 inline isl::checked::map set_range_tuple(const std::string &id) const;
1565 inline isl::checked::space space() const;
1566 inline isl::checked::map subtract(const isl::checked::map &map2) const;
1567 inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
1568 inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
1569 inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
1570 inline isl::checked::map_list to_list() const;
1571 inline isl::checked::union_map to_union_map() const;
1572 inline isl::checked::map uncurry() const;
1573 inline isl::checked::map unite(isl::checked::basic_map bmap2) const;
1574 inline isl::checked::map unite(const isl::checked::map &map2) const;
1575 inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
1576 inline isl::checked::basic_map unshifted_simple_hull() const;
1577 inline isl::checked::map upper_bound(const isl::checked::multi_pw_aff &upper) const;
1578 inline isl::checked::set wrap() const;
1579 inline isl::checked::map zip() const;
1582 // declarations for isl::basic_set
1583 inline basic_set manage(__isl_take isl_basic_set *ptr);
1584 inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1586 class basic_set {
1587 friend inline basic_set manage(__isl_take isl_basic_set *ptr);
1588 friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1590 protected:
1591 isl_basic_set *ptr = nullptr;
1593 inline explicit basic_set(__isl_take isl_basic_set *ptr);
1595 public:
1596 inline /* implicit */ basic_set();
1597 inline /* implicit */ basic_set(const basic_set &obj);
1598 inline /* implicit */ basic_set(isl::checked::point pnt);
1599 inline explicit basic_set(isl::checked::ctx ctx, const std::string &str);
1600 inline basic_set &operator=(basic_set obj);
1601 inline ~basic_set();
1602 inline __isl_give isl_basic_set *copy() const &;
1603 inline __isl_give isl_basic_set *copy() && = delete;
1604 inline __isl_keep isl_basic_set *get() const;
1605 inline __isl_give isl_basic_set *release();
1606 inline bool is_null() const;
1607 inline isl::checked::ctx ctx() const;
1609 inline isl::checked::basic_set affine_hull() const;
1610 inline isl::checked::basic_set apply(isl::checked::basic_map bmap) const;
1611 inline isl::checked::set apply(const isl::checked::map &map) const;
1612 inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
1613 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1614 inline isl::checked::set as_set() const;
1615 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
1616 inline isl::checked::set coalesce() const;
1617 inline isl::checked::set complement() const;
1618 inline isl::checked::union_set compute_divs() const;
1619 inline isl::checked::basic_set detect_equalities() const;
1620 inline isl::checked::val dim_max_val(int pos) const;
1621 inline isl::checked::val dim_min_val(int pos) const;
1622 inline isl::checked::set drop_unused_params() const;
1623 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
1624 inline isl::checked::set extract_set(const isl::checked::space &space) const;
1625 inline isl::checked::basic_set flatten() const;
1626 inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
1627 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
1628 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
1629 inline isl::checked::basic_set gist(isl::checked::basic_set context) const;
1630 inline isl::checked::set gist(const isl::checked::set &context) const;
1631 inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
1632 inline isl::checked::basic_set gist(const isl::checked::point &context) const;
1633 inline isl::checked::set gist_params(const isl::checked::set &context) const;
1634 inline isl::checked::map identity() const;
1635 inline isl::checked::pw_aff indicator_function() const;
1636 inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
1637 inline isl::checked::basic_set intersect(isl::checked::basic_set bset2) const;
1638 inline isl::checked::set intersect(const isl::checked::set &set2) const;
1639 inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
1640 inline isl::checked::basic_set intersect(const isl::checked::point &bset2) const;
1641 inline isl::checked::basic_set intersect_params(isl::checked::basic_set bset2) const;
1642 inline isl::checked::set intersect_params(const isl::checked::set &params) const;
1643 inline isl::checked::basic_set intersect_params(const isl::checked::point &bset2) const;
1644 inline boolean involves_locals() const;
1645 inline boolean is_disjoint(const isl::checked::set &set2) const;
1646 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
1647 inline boolean is_empty() const;
1648 inline boolean is_equal(const isl::checked::basic_set &bset2) const;
1649 inline boolean is_equal(const isl::checked::set &set2) const;
1650 inline boolean is_equal(const isl::checked::union_set &uset2) const;
1651 inline boolean is_equal(const isl::checked::point &bset2) const;
1652 inline boolean is_singleton() const;
1653 inline boolean is_strict_subset(const isl::checked::set &set2) const;
1654 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
1655 inline boolean is_subset(const isl::checked::basic_set &bset2) const;
1656 inline boolean is_subset(const isl::checked::set &set2) const;
1657 inline boolean is_subset(const isl::checked::union_set &uset2) const;
1658 inline boolean is_subset(const isl::checked::point &bset2) const;
1659 inline boolean is_wrapping() const;
1660 inline boolean isa_set() const;
1661 inline isl::checked::fixed_box lattice_tile() const;
1662 inline isl::checked::set lexmax() const;
1663 inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1664 inline isl::checked::set lexmin() const;
1665 inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1666 inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
1667 inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
1668 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1669 inline isl::checked::val max_val(const isl::checked::aff &obj) const;
1670 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1671 inline isl::checked::val min_val(const isl::checked::aff &obj) const;
1672 inline class size n_basic_set() const;
1673 inline isl::checked::pw_aff param_pw_aff_on_domain(const isl::checked::id &id) const;
1674 inline isl::checked::pw_aff param_pw_aff_on_domain(const std::string &id) const;
1675 inline isl::checked::basic_set params() const;
1676 inline isl::checked::multi_val plain_multi_val_if_fixed() const;
1677 inline isl::checked::basic_set polyhedral_hull() const;
1678 inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
1679 inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
1680 inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
1681 inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
1682 inline isl::checked::set product(const isl::checked::set &set2) const;
1683 inline isl::checked::set project_out_all_params() const;
1684 inline isl::checked::set project_out_param(const isl::checked::id &id) const;
1685 inline isl::checked::set project_out_param(const std::string &id) const;
1686 inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
1687 inline isl::checked::pw_aff pw_aff_on_domain(const isl::checked::val &v) const;
1688 inline isl::checked::pw_aff pw_aff_on_domain(long v) const;
1689 inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
1690 inline isl::checked::basic_set sample() const;
1691 inline isl::checked::point sample_point() const;
1692 inline isl::checked::set_list set_list() const;
1693 inline isl::checked::fixed_box simple_fixed_box_hull() const;
1694 inline isl::checked::space space() const;
1695 inline isl::checked::val stride(int pos) const;
1696 inline isl::checked::set subtract(const isl::checked::set &set2) const;
1697 inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
1698 inline isl::checked::set_list to_list() const;
1699 inline isl::checked::set to_set() const;
1700 inline isl::checked::union_set to_union_set() const;
1701 inline isl::checked::map translation() const;
1702 inline class size tuple_dim() const;
1703 inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
1704 inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
1705 inline isl::checked::set unite(isl::checked::basic_set bset2) const;
1706 inline isl::checked::set unite(const isl::checked::set &set2) const;
1707 inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
1708 inline isl::checked::set unite(const isl::checked::point &bset2) const;
1709 inline isl::checked::basic_set unshifted_simple_hull() const;
1710 inline isl::checked::map unwrap() const;
1711 inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
1712 inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
1713 inline isl::checked::set wrapped_reverse() const;
1716 // declarations for isl::fixed_box
1717 inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1718 inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1720 class fixed_box {
1721 friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1722 friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1724 protected:
1725 isl_fixed_box *ptr = nullptr;
1727 inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1729 public:
1730 inline /* implicit */ fixed_box();
1731 inline /* implicit */ fixed_box(const fixed_box &obj);
1732 inline explicit fixed_box(isl::checked::ctx ctx, const std::string &str);
1733 inline fixed_box &operator=(fixed_box obj);
1734 inline ~fixed_box();
1735 inline __isl_give isl_fixed_box *copy() const &;
1736 inline __isl_give isl_fixed_box *copy() && = delete;
1737 inline __isl_keep isl_fixed_box *get() const;
1738 inline __isl_give isl_fixed_box *release();
1739 inline bool is_null() const;
1740 inline isl::checked::ctx ctx() const;
1742 inline boolean is_valid() const;
1743 inline isl::checked::multi_aff offset() const;
1744 inline isl::checked::multi_aff get_offset() const;
1745 inline isl::checked::multi_val size() const;
1746 inline isl::checked::multi_val get_size() const;
1747 inline isl::checked::space space() const;
1748 inline isl::checked::space get_space() const;
1751 // declarations for isl::id
1752 inline id manage(__isl_take isl_id *ptr);
1753 inline id manage_copy(__isl_keep isl_id *ptr);
1755 class id {
1756 friend inline id manage(__isl_take isl_id *ptr);
1757 friend inline id manage_copy(__isl_keep isl_id *ptr);
1759 protected:
1760 isl_id *ptr = nullptr;
1762 inline explicit id(__isl_take isl_id *ptr);
1764 public:
1765 inline /* implicit */ id();
1766 inline /* implicit */ id(const id &obj);
1767 inline explicit id(isl::checked::ctx ctx, const std::string &str);
1768 inline id &operator=(id obj);
1769 inline ~id();
1770 inline __isl_give isl_id *copy() const &;
1771 inline __isl_give isl_id *copy() && = delete;
1772 inline __isl_keep isl_id *get() const;
1773 inline __isl_give isl_id *release();
1774 inline bool is_null() const;
1775 inline isl::checked::ctx ctx() const;
1777 inline std::string name() const;
1778 inline std::string get_name() const;
1779 inline isl::checked::id_list to_list() const;
1781 #if __cplusplus >= 201703L
1782 inline explicit id(isl::checked::ctx ctx, const std::string &str, const std::any &any);
1783 template <class T>
1784 std::optional<T> try_user() const;
1785 template <class T>
1786 T user() const;
1787 #endif
1790 // declarations for isl::id_list
1791 inline id_list manage(__isl_take isl_id_list *ptr);
1792 inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1794 class id_list {
1795 friend inline id_list manage(__isl_take isl_id_list *ptr);
1796 friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1798 protected:
1799 isl_id_list *ptr = nullptr;
1801 inline explicit id_list(__isl_take isl_id_list *ptr);
1803 public:
1804 inline /* implicit */ id_list();
1805 inline /* implicit */ id_list(const id_list &obj);
1806 inline explicit id_list(isl::checked::ctx ctx, int n);
1807 inline explicit id_list(isl::checked::id el);
1808 inline explicit id_list(isl::checked::ctx ctx, const std::string &str);
1809 inline id_list &operator=(id_list obj);
1810 inline ~id_list();
1811 inline __isl_give isl_id_list *copy() const &;
1812 inline __isl_give isl_id_list *copy() && = delete;
1813 inline __isl_keep isl_id_list *get() const;
1814 inline __isl_give isl_id_list *release();
1815 inline bool is_null() const;
1816 inline isl::checked::ctx ctx() const;
1818 inline isl::checked::id_list add(isl::checked::id el) const;
1819 inline isl::checked::id_list add(const std::string &el) const;
1820 inline isl::checked::id at(int index) const;
1821 inline isl::checked::id get_at(int index) const;
1822 inline isl::checked::id_list clear() const;
1823 inline isl::checked::id_list concat(isl::checked::id_list list2) const;
1824 inline isl::checked::id_list drop(unsigned int first, unsigned int n) const;
1825 inline stat foreach(const std::function<stat(isl::checked::id)> &fn) const;
1826 inline stat foreach_scc(const std::function<boolean(isl::checked::id, isl::checked::id)> &follows, const std::function<stat(isl::checked::id_list)> &fn) const;
1827 inline isl::checked::id_list insert(unsigned int pos, isl::checked::id el) const;
1828 inline isl::checked::id_list insert(unsigned int pos, const std::string &el) const;
1829 inline isl::checked::id_list set_at(int index, isl::checked::id el) const;
1830 inline isl::checked::id_list set_at(int index, const std::string &el) const;
1831 inline class size size() const;
1834 // declarations for isl::id_to_ast_expr
1835 inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1836 inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1838 class id_to_ast_expr {
1839 friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1840 friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1842 protected:
1843 isl_id_to_ast_expr *ptr = nullptr;
1845 inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
1847 public:
1848 inline /* implicit */ id_to_ast_expr();
1849 inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj);
1850 inline explicit id_to_ast_expr(isl::checked::ctx ctx, int min_size);
1851 inline explicit id_to_ast_expr(isl::checked::ctx ctx, const std::string &str);
1852 inline id_to_ast_expr &operator=(id_to_ast_expr obj);
1853 inline ~id_to_ast_expr();
1854 inline __isl_give isl_id_to_ast_expr *copy() const &;
1855 inline __isl_give isl_id_to_ast_expr *copy() && = delete;
1856 inline __isl_keep isl_id_to_ast_expr *get() const;
1857 inline __isl_give isl_id_to_ast_expr *release();
1858 inline bool is_null() const;
1859 inline isl::checked::ctx ctx() const;
1861 inline boolean is_equal(const isl::checked::id_to_ast_expr &hmap2) const;
1862 inline isl::checked::id_to_ast_expr set(isl::checked::id key, isl::checked::ast_expr val) const;
1863 inline isl::checked::id_to_ast_expr set(const std::string &key, const isl::checked::ast_expr &val) const;
1866 // declarations for isl::id_to_id
1867 inline id_to_id manage(__isl_take isl_id_to_id *ptr);
1868 inline id_to_id manage_copy(__isl_keep isl_id_to_id *ptr);
1870 class id_to_id {
1871 friend inline id_to_id manage(__isl_take isl_id_to_id *ptr);
1872 friend inline id_to_id manage_copy(__isl_keep isl_id_to_id *ptr);
1874 protected:
1875 isl_id_to_id *ptr = nullptr;
1877 inline explicit id_to_id(__isl_take isl_id_to_id *ptr);
1879 public:
1880 inline /* implicit */ id_to_id();
1881 inline /* implicit */ id_to_id(const id_to_id &obj);
1882 inline explicit id_to_id(isl::checked::ctx ctx, int min_size);
1883 inline explicit id_to_id(isl::checked::ctx ctx, const std::string &str);
1884 inline id_to_id &operator=(id_to_id obj);
1885 inline ~id_to_id();
1886 inline __isl_give isl_id_to_id *copy() const &;
1887 inline __isl_give isl_id_to_id *copy() && = delete;
1888 inline __isl_keep isl_id_to_id *get() const;
1889 inline __isl_give isl_id_to_id *release();
1890 inline bool is_null() const;
1891 inline isl::checked::ctx ctx() const;
1893 inline boolean is_equal(const isl::checked::id_to_id &hmap2) const;
1894 inline isl::checked::id_to_id set(isl::checked::id key, isl::checked::id val) const;
1895 inline isl::checked::id_to_id set(const isl::checked::id &key, const std::string &val) const;
1896 inline isl::checked::id_to_id set(const std::string &key, const isl::checked::id &val) const;
1897 inline isl::checked::id_to_id set(const std::string &key, const std::string &val) const;
1900 // declarations for isl::map
1901 inline map manage(__isl_take isl_map *ptr);
1902 inline map manage_copy(__isl_keep isl_map *ptr);
1904 class map {
1905 friend inline map manage(__isl_take isl_map *ptr);
1906 friend inline map manage_copy(__isl_keep isl_map *ptr);
1908 protected:
1909 isl_map *ptr = nullptr;
1911 inline explicit map(__isl_take isl_map *ptr);
1913 public:
1914 inline /* implicit */ map();
1915 inline /* implicit */ map(const map &obj);
1916 inline /* implicit */ map(isl::checked::basic_map bmap);
1917 inline explicit map(isl::checked::ctx ctx, const std::string &str);
1918 inline map &operator=(map obj);
1919 inline ~map();
1920 inline __isl_give isl_map *copy() const &;
1921 inline __isl_give isl_map *copy() && = delete;
1922 inline __isl_keep isl_map *get() const;
1923 inline __isl_give isl_map *release();
1924 inline bool is_null() const;
1925 inline isl::checked::ctx ctx() const;
1927 inline isl::checked::basic_map affine_hull() const;
1928 inline isl::checked::map apply_domain(isl::checked::map map2) const;
1929 inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1930 inline isl::checked::map apply_domain(const isl::checked::basic_map &map2) const;
1931 inline isl::checked::map apply_range(isl::checked::map map2) const;
1932 inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1933 inline isl::checked::map apply_range(const isl::checked::basic_map &map2) const;
1934 inline isl::checked::map as_map() const;
1935 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
1936 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1937 inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
1938 inline isl::checked::set bind_domain(isl::checked::multi_id tuple) const;
1939 inline isl::checked::set bind_range(isl::checked::multi_id tuple) const;
1940 inline isl::checked::map coalesce() const;
1941 inline isl::checked::map complement() const;
1942 inline isl::checked::union_map compute_divs() const;
1943 inline isl::checked::map curry() const;
1944 inline isl::checked::set deltas() const;
1945 inline isl::checked::map detect_equalities() const;
1946 inline isl::checked::set domain() const;
1947 inline isl::checked::map domain_factor_domain() const;
1948 inline isl::checked::map domain_factor_range() const;
1949 inline isl::checked::union_map domain_map() const;
1950 inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1951 inline isl::checked::map domain_product(isl::checked::map map2) const;
1952 inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1953 inline isl::checked::map domain_product(const isl::checked::basic_map &map2) const;
1954 inline isl::checked::map domain_reverse() const;
1955 inline class size domain_tuple_dim() const;
1956 inline isl::checked::id domain_tuple_id() const;
1957 inline isl::checked::id get_domain_tuple_id() const;
1958 inline isl::checked::map drop_unused_params() const;
1959 static inline isl::checked::map empty(isl::checked::space space);
1960 inline isl::checked::map eq_at(isl::checked::multi_pw_aff mpa) const;
1961 inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1962 inline isl::checked::map eq_at(const isl::checked::aff &mpa) const;
1963 inline isl::checked::map eq_at(const isl::checked::multi_aff &mpa) const;
1964 inline isl::checked::map eq_at(const isl::checked::pw_aff &mpa) const;
1965 inline isl::checked::map eq_at(const isl::checked::pw_multi_aff &mpa) const;
1966 inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1967 inline isl::checked::map extract_map(const isl::checked::space &space) const;
1968 inline isl::checked::map factor_domain() const;
1969 inline isl::checked::map factor_range() const;
1970 inline isl::checked::map fixed_power(isl::checked::val exp) const;
1971 inline isl::checked::map fixed_power(long exp) const;
1972 inline isl::checked::map flatten() const;
1973 inline isl::checked::map flatten_domain() const;
1974 inline isl::checked::map flatten_range() const;
1975 inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1976 inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1977 inline isl::checked::map gist(isl::checked::map context) const;
1978 inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1979 inline isl::checked::map gist(const isl::checked::basic_map &context) const;
1980 inline isl::checked::map gist_domain(isl::checked::set context) const;
1981 inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1982 inline isl::checked::map gist_domain(const isl::checked::basic_set &context) const;
1983 inline isl::checked::map gist_domain(const isl::checked::point &context) const;
1984 inline isl::checked::map gist_params(isl::checked::set context) const;
1985 inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1986 inline boolean has_domain_tuple_id() const;
1987 inline boolean has_range_tuple_id() const;
1988 inline isl::checked::map intersect(isl::checked::map map2) const;
1989 inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1990 inline isl::checked::map intersect(const isl::checked::basic_map &map2) const;
1991 inline isl::checked::map intersect_domain(isl::checked::set set) const;
1992 inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1993 inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1994 inline isl::checked::map intersect_domain(const isl::checked::basic_set &set) const;
1995 inline isl::checked::map intersect_domain(const isl::checked::point &set) const;
1996 inline isl::checked::map intersect_domain_factor_domain(isl::checked::map factor) const;
1997 inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
1998 inline isl::checked::map intersect_domain_factor_domain(const isl::checked::basic_map &factor) const;
1999 inline isl::checked::map intersect_domain_factor_range(isl::checked::map factor) const;
2000 inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
2001 inline isl::checked::map intersect_domain_factor_range(const isl::checked::basic_map &factor) const;
2002 inline isl::checked::map intersect_domain_wrapped_domain(isl::checked::set domain) const;
2003 inline isl::checked::union_map intersect_domain_wrapped_domain(const isl::checked::union_set &domain) const;
2004 inline isl::checked::map intersect_domain_wrapped_domain(const isl::checked::basic_set &domain) const;
2005 inline isl::checked::map intersect_domain_wrapped_domain(const isl::checked::point &domain) const;
2006 inline isl::checked::map intersect_params(isl::checked::set params) const;
2007 inline isl::checked::map intersect_range(isl::checked::set set) const;
2008 inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
2009 inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
2010 inline isl::checked::map intersect_range(const isl::checked::basic_set &set) const;
2011 inline isl::checked::map intersect_range(const isl::checked::point &set) const;
2012 inline isl::checked::map intersect_range_factor_domain(isl::checked::map factor) const;
2013 inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
2014 inline isl::checked::map intersect_range_factor_domain(const isl::checked::basic_map &factor) const;
2015 inline isl::checked::map intersect_range_factor_range(isl::checked::map factor) const;
2016 inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
2017 inline isl::checked::map intersect_range_factor_range(const isl::checked::basic_map &factor) const;
2018 inline isl::checked::map intersect_range_wrapped_domain(isl::checked::set domain) const;
2019 inline isl::checked::union_map intersect_range_wrapped_domain(const isl::checked::union_set &domain) const;
2020 inline isl::checked::map intersect_range_wrapped_domain(const isl::checked::basic_set &domain) const;
2021 inline isl::checked::map intersect_range_wrapped_domain(const isl::checked::point &domain) const;
2022 inline boolean is_bijective() const;
2023 inline boolean is_disjoint(const isl::checked::map &map2) const;
2024 inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
2025 inline boolean is_disjoint(const isl::checked::basic_map &map2) const;
2026 inline boolean is_empty() const;
2027 inline boolean is_equal(const isl::checked::map &map2) const;
2028 inline boolean is_equal(const isl::checked::union_map &umap2) const;
2029 inline boolean is_equal(const isl::checked::basic_map &map2) const;
2030 inline boolean is_injective() const;
2031 inline boolean is_single_valued() const;
2032 inline boolean is_strict_subset(const isl::checked::map &map2) const;
2033 inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
2034 inline boolean is_strict_subset(const isl::checked::basic_map &map2) const;
2035 inline boolean is_subset(const isl::checked::map &map2) const;
2036 inline boolean is_subset(const isl::checked::union_map &umap2) const;
2037 inline boolean is_subset(const isl::checked::basic_map &map2) const;
2038 inline boolean isa_map() const;
2039 inline isl::checked::map lex_ge_at(isl::checked::multi_pw_aff mpa) const;
2040 inline isl::checked::map lex_gt_at(isl::checked::multi_pw_aff mpa) const;
2041 inline isl::checked::map lex_le_at(isl::checked::multi_pw_aff mpa) const;
2042 inline isl::checked::map lex_lt_at(isl::checked::multi_pw_aff mpa) const;
2043 inline isl::checked::map lexmax() const;
2044 inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
2045 inline isl::checked::map lexmin() const;
2046 inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
2047 inline isl::checked::map lower_bound(isl::checked::multi_pw_aff lower) const;
2048 inline isl::checked::map_list map_list() const;
2049 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
2050 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
2051 inline class size n_basic_map() const;
2052 inline isl::checked::set params() const;
2053 inline isl::checked::basic_map polyhedral_hull() const;
2054 inline isl::checked::map preimage_domain(isl::checked::multi_aff ma) const;
2055 inline isl::checked::map preimage_domain(isl::checked::multi_pw_aff mpa) const;
2056 inline isl::checked::map preimage_domain(isl::checked::pw_multi_aff pma) const;
2057 inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
2058 inline isl::checked::map preimage_range(isl::checked::multi_aff ma) const;
2059 inline isl::checked::map preimage_range(isl::checked::pw_multi_aff pma) const;
2060 inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
2061 inline isl::checked::map product(isl::checked::map map2) const;
2062 inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
2063 inline isl::checked::map product(const isl::checked::basic_map &map2) const;
2064 inline isl::checked::map project_out_all_params() const;
2065 inline isl::checked::map project_out_param(isl::checked::id id) const;
2066 inline isl::checked::map project_out_param(const std::string &id) const;
2067 inline isl::checked::map project_out_param(isl::checked::id_list list) const;
2068 inline isl::checked::set range() const;
2069 inline isl::checked::map range_factor_domain() const;
2070 inline isl::checked::map range_factor_range() const;
2071 inline isl::checked::fixed_box range_lattice_tile() const;
2072 inline isl::checked::fixed_box get_range_lattice_tile() const;
2073 inline isl::checked::union_map range_map() const;
2074 inline isl::checked::map range_product(isl::checked::map map2) const;
2075 inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
2076 inline isl::checked::map range_product(const isl::checked::basic_map &map2) const;
2077 inline isl::checked::map range_reverse() const;
2078 inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
2079 inline isl::checked::fixed_box get_range_simple_fixed_box_hull() const;
2080 inline class size range_tuple_dim() const;
2081 inline isl::checked::id range_tuple_id() const;
2082 inline isl::checked::id get_range_tuple_id() const;
2083 inline isl::checked::map reverse() const;
2084 inline isl::checked::basic_map sample() const;
2085 inline isl::checked::map set_domain_tuple(isl::checked::id id) const;
2086 inline isl::checked::map set_domain_tuple(const std::string &id) const;
2087 inline isl::checked::map set_range_tuple(isl::checked::id id) const;
2088 inline isl::checked::map set_range_tuple(const std::string &id) const;
2089 inline isl::checked::space space() const;
2090 inline isl::checked::space get_space() const;
2091 inline isl::checked::map subtract(isl::checked::map map2) const;
2092 inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
2093 inline isl::checked::map subtract(const isl::checked::basic_map &map2) const;
2094 inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
2095 inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
2096 inline isl::checked::map_list to_list() const;
2097 inline isl::checked::union_map to_union_map() const;
2098 inline isl::checked::map uncurry() const;
2099 inline isl::checked::map unite(isl::checked::map map2) const;
2100 inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
2101 inline isl::checked::map unite(const isl::checked::basic_map &map2) const;
2102 static inline isl::checked::map universe(isl::checked::space space);
2103 inline isl::checked::basic_map unshifted_simple_hull() const;
2104 inline isl::checked::map upper_bound(isl::checked::multi_pw_aff upper) const;
2105 inline isl::checked::set wrap() const;
2106 inline isl::checked::map zip() const;
2109 // declarations for isl::map_list
2110 inline map_list manage(__isl_take isl_map_list *ptr);
2111 inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2113 class map_list {
2114 friend inline map_list manage(__isl_take isl_map_list *ptr);
2115 friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
2117 protected:
2118 isl_map_list *ptr = nullptr;
2120 inline explicit map_list(__isl_take isl_map_list *ptr);
2122 public:
2123 inline /* implicit */ map_list();
2124 inline /* implicit */ map_list(const map_list &obj);
2125 inline explicit map_list(isl::checked::ctx ctx, int n);
2126 inline explicit map_list(isl::checked::map el);
2127 inline explicit map_list(isl::checked::ctx ctx, const std::string &str);
2128 inline map_list &operator=(map_list obj);
2129 inline ~map_list();
2130 inline __isl_give isl_map_list *copy() const &;
2131 inline __isl_give isl_map_list *copy() && = delete;
2132 inline __isl_keep isl_map_list *get() const;
2133 inline __isl_give isl_map_list *release();
2134 inline bool is_null() const;
2135 inline isl::checked::ctx ctx() const;
2137 inline isl::checked::map_list add(isl::checked::map el) const;
2138 inline isl::checked::map at(int index) const;
2139 inline isl::checked::map get_at(int index) const;
2140 inline isl::checked::map_list clear() const;
2141 inline isl::checked::map_list concat(isl::checked::map_list list2) const;
2142 inline isl::checked::map_list drop(unsigned int first, unsigned int n) const;
2143 inline stat foreach(const std::function<stat(isl::checked::map)> &fn) const;
2144 inline stat foreach_scc(const std::function<boolean(isl::checked::map, isl::checked::map)> &follows, const std::function<stat(isl::checked::map_list)> &fn) const;
2145 inline isl::checked::map_list insert(unsigned int pos, isl::checked::map el) const;
2146 inline isl::checked::map_list set_at(int index, isl::checked::map el) const;
2147 inline class size size() const;
2150 // declarations for isl::multi_aff
2151 inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2152 inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2154 class multi_aff {
2155 friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2156 friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2158 protected:
2159 isl_multi_aff *ptr = nullptr;
2161 inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
2163 public:
2164 inline /* implicit */ multi_aff();
2165 inline /* implicit */ multi_aff(const multi_aff &obj);
2166 inline /* implicit */ multi_aff(isl::checked::aff aff);
2167 inline explicit multi_aff(isl::checked::space space, isl::checked::aff_list list);
2168 inline explicit multi_aff(isl::checked::ctx ctx, const std::string &str);
2169 inline multi_aff &operator=(multi_aff obj);
2170 inline ~multi_aff();
2171 inline __isl_give isl_multi_aff *copy() const &;
2172 inline __isl_give isl_multi_aff *copy() && = delete;
2173 inline __isl_keep isl_multi_aff *get() const;
2174 inline __isl_give isl_multi_aff *release();
2175 inline bool is_null() const;
2176 inline isl::checked::ctx ctx() const;
2178 inline isl::checked::multi_aff add(isl::checked::multi_aff multi2) const;
2179 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2180 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2181 inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
2182 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2183 inline isl::checked::multi_aff add(const isl::checked::aff &multi2) const;
2184 inline isl::checked::multi_aff add_constant(isl::checked::multi_val mv) const;
2185 inline isl::checked::multi_aff add_constant(isl::checked::val v) const;
2186 inline isl::checked::multi_aff add_constant(long v) const;
2187 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2188 inline isl::checked::map as_map() const;
2189 inline isl::checked::multi_aff as_multi_aff() const;
2190 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
2191 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2192 inline isl::checked::set as_set() const;
2193 inline isl::checked::union_map as_union_map() const;
2194 inline isl::checked::aff at(int pos) const;
2195 inline isl::checked::aff get_at(int pos) const;
2196 inline isl::checked::basic_set bind(isl::checked::multi_id tuple) const;
2197 inline isl::checked::multi_aff bind_domain(isl::checked::multi_id tuple) const;
2198 inline isl::checked::multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2199 inline isl::checked::pw_multi_aff coalesce() const;
2200 inline isl::checked::multi_val constant_multi_val() const;
2201 inline isl::checked::multi_val get_constant_multi_val() const;
2202 inline isl::checked::set domain() const;
2203 static inline isl::checked::multi_aff domain_map(isl::checked::space space);
2204 inline isl::checked::multi_aff domain_reverse() const;
2205 inline isl::checked::pw_multi_aff drop_unused_params() const;
2206 inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2207 inline isl::checked::multi_aff flat_range_product(isl::checked::multi_aff multi2) const;
2208 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2209 inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2210 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2211 inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2212 inline isl::checked::multi_aff flat_range_product(const isl::checked::aff &multi2) const;
2213 inline isl::checked::multi_aff floor() const;
2214 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2215 inline isl::checked::multi_aff gist(isl::checked::set context) const;
2216 inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
2217 inline isl::checked::multi_aff gist(const isl::checked::basic_set &context) const;
2218 inline isl::checked::multi_aff gist(const isl::checked::point &context) const;
2219 inline isl::checked::multi_aff gist_params(isl::checked::set context) const;
2220 inline boolean has_range_tuple_id() const;
2221 inline isl::checked::multi_aff identity() const;
2222 static inline isl::checked::multi_aff identity_on_domain(isl::checked::space space);
2223 inline isl::checked::multi_aff insert_domain(isl::checked::space domain) const;
2224 inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::set &set) const;
2225 inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
2226 inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
2227 inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2228 inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2229 inline isl::checked::pw_multi_aff intersect_params(const isl::checked::set &set) const;
2230 inline boolean involves_locals() const;
2231 inline boolean involves_nan() const;
2232 inline boolean involves_param(const isl::checked::id &id) const;
2233 inline boolean involves_param(const std::string &id) const;
2234 inline boolean involves_param(const isl::checked::id_list &list) const;
2235 inline boolean isa_multi_aff() const;
2236 inline boolean isa_pw_multi_aff() const;
2237 inline isl::checked::aff_list list() const;
2238 inline isl::checked::aff_list get_list() const;
2239 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2240 inline isl::checked::multi_val max_multi_val() const;
2241 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2242 inline isl::checked::multi_val min_multi_val() const;
2243 static inline isl::checked::multi_aff multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv);
2244 inline class size n_piece() const;
2245 inline isl::checked::multi_aff neg() const;
2246 inline boolean plain_is_empty() const;
2247 inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2248 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2249 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2250 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
2251 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
2252 inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2253 inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
2254 inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2255 inline isl::checked::multi_aff product(isl::checked::multi_aff multi2) const;
2256 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2257 inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2258 inline isl::checked::multi_aff product(const isl::checked::aff &multi2) const;
2259 inline isl::checked::multi_aff pullback(isl::checked::multi_aff ma2) const;
2260 inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
2261 inline isl::checked::pw_multi_aff pullback(const isl::checked::pw_multi_aff &pma2) const;
2262 inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
2263 inline isl::checked::multi_aff pullback(const isl::checked::aff &ma2) const;
2264 inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
2265 inline isl::checked::pw_multi_aff range_factor_domain() const;
2266 inline isl::checked::pw_multi_aff range_factor_range() const;
2267 static inline isl::checked::multi_aff range_map(isl::checked::space space);
2268 inline isl::checked::multi_aff range_product(isl::checked::multi_aff multi2) const;
2269 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2270 inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2271 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2272 inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2273 inline isl::checked::multi_aff range_product(const isl::checked::aff &multi2) const;
2274 inline isl::checked::id range_tuple_id() const;
2275 inline isl::checked::id get_range_tuple_id() const;
2276 inline isl::checked::multi_aff reset_range_tuple_id() const;
2277 inline isl::checked::multi_aff scale(isl::checked::multi_val mv) const;
2278 inline isl::checked::multi_aff scale(isl::checked::val v) const;
2279 inline isl::checked::multi_aff scale(long v) const;
2280 inline isl::checked::multi_aff scale_down(isl::checked::multi_val mv) const;
2281 inline isl::checked::multi_aff scale_down(isl::checked::val v) const;
2282 inline isl::checked::multi_aff scale_down(long v) const;
2283 inline isl::checked::multi_aff set_at(int pos, isl::checked::aff el) const;
2284 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2285 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2286 inline isl::checked::multi_aff set_range_tuple(isl::checked::id id) const;
2287 inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
2288 inline class size size() const;
2289 inline isl::checked::space space() const;
2290 inline isl::checked::space get_space() const;
2291 inline isl::checked::multi_aff sub(isl::checked::multi_aff multi2) const;
2292 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2293 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2294 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2295 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2296 inline isl::checked::multi_aff sub(const isl::checked::aff &multi2) const;
2297 inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::set &set) const;
2298 inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
2299 inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
2300 inline isl::checked::pw_multi_aff_list to_list() const;
2301 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2302 inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
2303 inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
2304 inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2305 inline isl::checked::multi_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
2306 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2307 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2308 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2309 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2310 static inline isl::checked::multi_aff zero(isl::checked::space space);
2313 // declarations for isl::multi_id
2314 inline multi_id manage(__isl_take isl_multi_id *ptr);
2315 inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2317 class multi_id {
2318 friend inline multi_id manage(__isl_take isl_multi_id *ptr);
2319 friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2321 protected:
2322 isl_multi_id *ptr = nullptr;
2324 inline explicit multi_id(__isl_take isl_multi_id *ptr);
2326 public:
2327 inline /* implicit */ multi_id();
2328 inline /* implicit */ multi_id(const multi_id &obj);
2329 inline explicit multi_id(isl::checked::space space, isl::checked::id_list list);
2330 inline explicit multi_id(isl::checked::ctx ctx, const std::string &str);
2331 inline multi_id &operator=(multi_id obj);
2332 inline ~multi_id();
2333 inline __isl_give isl_multi_id *copy() const &;
2334 inline __isl_give isl_multi_id *copy() && = delete;
2335 inline __isl_keep isl_multi_id *get() const;
2336 inline __isl_give isl_multi_id *release();
2337 inline bool is_null() const;
2338 inline isl::checked::ctx ctx() const;
2340 inline isl::checked::id at(int pos) const;
2341 inline isl::checked::id get_at(int pos) const;
2342 inline isl::checked::multi_id flat_range_product(isl::checked::multi_id multi2) const;
2343 inline isl::checked::id_list list() const;
2344 inline isl::checked::id_list get_list() const;
2345 inline boolean plain_is_equal(const isl::checked::multi_id &multi2) const;
2346 inline isl::checked::multi_id range_product(isl::checked::multi_id multi2) const;
2347 inline isl::checked::multi_id set_at(int pos, isl::checked::id el) const;
2348 inline isl::checked::multi_id set_at(int pos, const std::string &el) const;
2349 inline class size size() const;
2350 inline isl::checked::space space() const;
2351 inline isl::checked::space get_space() const;
2354 // declarations for isl::multi_pw_aff
2355 inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2356 inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2358 class multi_pw_aff {
2359 friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2360 friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2362 protected:
2363 isl_multi_pw_aff *ptr = nullptr;
2365 inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
2367 public:
2368 inline /* implicit */ multi_pw_aff();
2369 inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
2370 inline /* implicit */ multi_pw_aff(isl::checked::aff aff);
2371 inline /* implicit */ multi_pw_aff(isl::checked::multi_aff ma);
2372 inline /* implicit */ multi_pw_aff(isl::checked::pw_aff pa);
2373 inline explicit multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list);
2374 inline /* implicit */ multi_pw_aff(isl::checked::pw_multi_aff pma);
2375 inline explicit multi_pw_aff(isl::checked::ctx ctx, const std::string &str);
2376 inline multi_pw_aff &operator=(multi_pw_aff obj);
2377 inline ~multi_pw_aff();
2378 inline __isl_give isl_multi_pw_aff *copy() const &;
2379 inline __isl_give isl_multi_pw_aff *copy() && = delete;
2380 inline __isl_keep isl_multi_pw_aff *get() const;
2381 inline __isl_give isl_multi_pw_aff *release();
2382 inline bool is_null() const;
2383 inline isl::checked::ctx ctx() const;
2385 inline isl::checked::multi_pw_aff add(isl::checked::multi_pw_aff multi2) const;
2386 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2387 inline isl::checked::multi_pw_aff add(const isl::checked::aff &multi2) const;
2388 inline isl::checked::multi_pw_aff add(const isl::checked::multi_aff &multi2) const;
2389 inline isl::checked::multi_pw_aff add(const isl::checked::pw_aff &multi2) const;
2390 inline isl::checked::multi_pw_aff add(const isl::checked::pw_multi_aff &multi2) const;
2391 inline isl::checked::multi_pw_aff add_constant(isl::checked::multi_val mv) const;
2392 inline isl::checked::multi_pw_aff add_constant(isl::checked::val v) const;
2393 inline isl::checked::multi_pw_aff add_constant(long v) const;
2394 inline isl::checked::map as_map() const;
2395 inline isl::checked::multi_aff as_multi_aff() const;
2396 inline isl::checked::set as_set() const;
2397 inline isl::checked::pw_aff at(int pos) const;
2398 inline isl::checked::pw_aff get_at(int pos) const;
2399 inline isl::checked::set bind(isl::checked::multi_id tuple) const;
2400 inline isl::checked::multi_pw_aff bind_domain(isl::checked::multi_id tuple) const;
2401 inline isl::checked::multi_pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2402 inline isl::checked::multi_pw_aff coalesce() const;
2403 inline isl::checked::set domain() const;
2404 inline isl::checked::multi_pw_aff domain_reverse() const;
2405 inline isl::checked::multi_pw_aff flat_range_product(isl::checked::multi_pw_aff multi2) const;
2406 inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2407 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::aff &multi2) const;
2408 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
2409 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_aff &multi2) const;
2410 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_multi_aff &multi2) const;
2411 inline isl::checked::multi_pw_aff gist(isl::checked::set set) const;
2412 inline isl::checked::multi_union_pw_aff gist(const isl::checked::union_set &context) const;
2413 inline isl::checked::multi_pw_aff gist(const isl::checked::basic_set &set) const;
2414 inline isl::checked::multi_pw_aff gist(const isl::checked::point &set) const;
2415 inline isl::checked::multi_pw_aff gist_params(isl::checked::set set) const;
2416 inline boolean has_range_tuple_id() const;
2417 inline isl::checked::multi_pw_aff identity() const;
2418 static inline isl::checked::multi_pw_aff identity_on_domain(isl::checked::space space);
2419 inline isl::checked::multi_pw_aff insert_domain(isl::checked::space domain) const;
2420 inline isl::checked::multi_pw_aff intersect_domain(isl::checked::set domain) const;
2421 inline isl::checked::multi_union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2422 inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::basic_set &domain) const;
2423 inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::point &domain) const;
2424 inline isl::checked::multi_pw_aff intersect_params(isl::checked::set set) const;
2425 inline boolean involves_nan() const;
2426 inline boolean involves_param(const isl::checked::id &id) const;
2427 inline boolean involves_param(const std::string &id) const;
2428 inline boolean involves_param(const isl::checked::id_list &list) const;
2429 inline boolean isa_multi_aff() const;
2430 inline isl::checked::pw_aff_list list() const;
2431 inline isl::checked::pw_aff_list get_list() const;
2432 inline isl::checked::multi_pw_aff max(isl::checked::multi_pw_aff multi2) const;
2433 inline isl::checked::multi_val max_multi_val() const;
2434 inline isl::checked::multi_pw_aff min(isl::checked::multi_pw_aff multi2) const;
2435 inline isl::checked::multi_val min_multi_val() const;
2436 inline isl::checked::multi_pw_aff neg() const;
2437 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2438 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2439 inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2440 inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2441 inline boolean plain_is_equal(const isl::checked::pw_aff &multi2) const;
2442 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &multi2) const;
2443 inline isl::checked::multi_pw_aff product(isl::checked::multi_pw_aff multi2) const;
2444 inline isl::checked::multi_pw_aff pullback(isl::checked::multi_aff ma) const;
2445 inline isl::checked::multi_pw_aff pullback(isl::checked::multi_pw_aff mpa2) const;
2446 inline isl::checked::multi_pw_aff pullback(isl::checked::pw_multi_aff pma) const;
2447 inline isl::checked::multi_union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2448 inline isl::checked::multi_pw_aff range_product(isl::checked::multi_pw_aff multi2) const;
2449 inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2450 inline isl::checked::multi_pw_aff range_product(const isl::checked::aff &multi2) const;
2451 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_aff &multi2) const;
2452 inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_aff &multi2) const;
2453 inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_multi_aff &multi2) const;
2454 inline isl::checked::id range_tuple_id() const;
2455 inline isl::checked::id get_range_tuple_id() const;
2456 inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2457 inline isl::checked::multi_pw_aff scale(isl::checked::multi_val mv) const;
2458 inline isl::checked::multi_pw_aff scale(isl::checked::val v) const;
2459 inline isl::checked::multi_pw_aff scale(long v) const;
2460 inline isl::checked::multi_pw_aff scale_down(isl::checked::multi_val mv) const;
2461 inline isl::checked::multi_pw_aff scale_down(isl::checked::val v) const;
2462 inline isl::checked::multi_pw_aff scale_down(long v) const;
2463 inline isl::checked::multi_pw_aff set_at(int pos, isl::checked::pw_aff el) const;
2464 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2465 inline isl::checked::multi_pw_aff set_range_tuple(isl::checked::id id) const;
2466 inline isl::checked::multi_pw_aff set_range_tuple(const std::string &id) const;
2467 inline class size size() const;
2468 inline isl::checked::space space() const;
2469 inline isl::checked::space get_space() const;
2470 inline isl::checked::multi_pw_aff sub(isl::checked::multi_pw_aff multi2) const;
2471 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2472 inline isl::checked::multi_pw_aff sub(const isl::checked::aff &multi2) const;
2473 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_aff &multi2) const;
2474 inline isl::checked::multi_pw_aff sub(const isl::checked::pw_aff &multi2) const;
2475 inline isl::checked::multi_pw_aff sub(const isl::checked::pw_multi_aff &multi2) const;
2476 inline isl::checked::multi_pw_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
2477 inline isl::checked::multi_pw_aff union_add(isl::checked::multi_pw_aff mpa2) const;
2478 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2479 inline isl::checked::multi_pw_aff union_add(const isl::checked::aff &mpa2) const;
2480 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_aff &mpa2) const;
2481 inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_aff &mpa2) const;
2482 inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_multi_aff &mpa2) const;
2483 static inline isl::checked::multi_pw_aff zero(isl::checked::space space);
2486 // declarations for isl::multi_union_pw_aff
2487 inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2488 inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2490 class multi_union_pw_aff {
2491 friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2492 friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2494 protected:
2495 isl_multi_union_pw_aff *ptr = nullptr;
2497 inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
2499 public:
2500 inline /* implicit */ multi_union_pw_aff();
2501 inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
2502 inline /* implicit */ multi_union_pw_aff(isl::checked::multi_pw_aff mpa);
2503 inline /* implicit */ multi_union_pw_aff(isl::checked::union_pw_aff upa);
2504 inline explicit multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list);
2505 inline explicit multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str);
2506 inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
2507 inline ~multi_union_pw_aff();
2508 inline __isl_give isl_multi_union_pw_aff *copy() const &;
2509 inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
2510 inline __isl_keep isl_multi_union_pw_aff *get() const;
2511 inline __isl_give isl_multi_union_pw_aff *release();
2512 inline bool is_null() const;
2513 inline isl::checked::ctx ctx() const;
2515 inline isl::checked::multi_union_pw_aff add(isl::checked::multi_union_pw_aff multi2) const;
2516 inline isl::checked::union_pw_aff at(int pos) const;
2517 inline isl::checked::union_pw_aff get_at(int pos) const;
2518 inline isl::checked::union_set bind(isl::checked::multi_id tuple) const;
2519 inline isl::checked::multi_union_pw_aff coalesce() const;
2520 inline isl::checked::union_set domain() const;
2521 inline isl::checked::multi_union_pw_aff flat_range_product(isl::checked::multi_union_pw_aff multi2) const;
2522 inline isl::checked::multi_union_pw_aff gist(isl::checked::union_set context) const;
2523 inline isl::checked::multi_union_pw_aff gist_params(isl::checked::set context) const;
2524 inline boolean has_range_tuple_id() const;
2525 inline isl::checked::multi_union_pw_aff intersect_domain(isl::checked::union_set uset) const;
2526 inline isl::checked::multi_union_pw_aff intersect_params(isl::checked::set params) const;
2527 inline boolean involves_nan() const;
2528 inline isl::checked::union_pw_aff_list list() const;
2529 inline isl::checked::union_pw_aff_list get_list() const;
2530 inline isl::checked::multi_union_pw_aff neg() const;
2531 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2532 inline isl::checked::multi_union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
2533 inline isl::checked::multi_union_pw_aff range_product(isl::checked::multi_union_pw_aff multi2) const;
2534 inline isl::checked::id range_tuple_id() const;
2535 inline isl::checked::id get_range_tuple_id() const;
2536 inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
2537 inline isl::checked::multi_union_pw_aff scale(isl::checked::multi_val mv) const;
2538 inline isl::checked::multi_union_pw_aff scale(isl::checked::val v) const;
2539 inline isl::checked::multi_union_pw_aff scale(long v) const;
2540 inline isl::checked::multi_union_pw_aff scale_down(isl::checked::multi_val mv) const;
2541 inline isl::checked::multi_union_pw_aff scale_down(isl::checked::val v) const;
2542 inline isl::checked::multi_union_pw_aff scale_down(long v) const;
2543 inline isl::checked::multi_union_pw_aff set_at(int pos, isl::checked::union_pw_aff el) const;
2544 inline isl::checked::multi_union_pw_aff set_range_tuple(isl::checked::id id) const;
2545 inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
2546 inline class size size() const;
2547 inline isl::checked::space space() const;
2548 inline isl::checked::space get_space() const;
2549 inline isl::checked::multi_union_pw_aff sub(isl::checked::multi_union_pw_aff multi2) const;
2550 inline isl::checked::multi_union_pw_aff union_add(isl::checked::multi_union_pw_aff mupa2) const;
2551 static inline isl::checked::multi_union_pw_aff zero(isl::checked::space space);
2554 // declarations for isl::multi_val
2555 inline multi_val manage(__isl_take isl_multi_val *ptr);
2556 inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2558 class multi_val {
2559 friend inline multi_val manage(__isl_take isl_multi_val *ptr);
2560 friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2562 protected:
2563 isl_multi_val *ptr = nullptr;
2565 inline explicit multi_val(__isl_take isl_multi_val *ptr);
2567 public:
2568 inline /* implicit */ multi_val();
2569 inline /* implicit */ multi_val(const multi_val &obj);
2570 inline explicit multi_val(isl::checked::space space, isl::checked::val_list list);
2571 inline explicit multi_val(isl::checked::ctx ctx, const std::string &str);
2572 inline multi_val &operator=(multi_val obj);
2573 inline ~multi_val();
2574 inline __isl_give isl_multi_val *copy() const &;
2575 inline __isl_give isl_multi_val *copy() && = delete;
2576 inline __isl_keep isl_multi_val *get() const;
2577 inline __isl_give isl_multi_val *release();
2578 inline bool is_null() const;
2579 inline isl::checked::ctx ctx() const;
2581 inline isl::checked::multi_val add(isl::checked::multi_val multi2) const;
2582 inline isl::checked::multi_val add(isl::checked::val v) const;
2583 inline isl::checked::multi_val add(long v) const;
2584 inline isl::checked::val at(int pos) const;
2585 inline isl::checked::val get_at(int pos) const;
2586 inline isl::checked::multi_val flat_range_product(isl::checked::multi_val multi2) const;
2587 inline boolean has_range_tuple_id() const;
2588 inline boolean involves_nan() const;
2589 inline isl::checked::val_list list() const;
2590 inline isl::checked::val_list get_list() const;
2591 inline isl::checked::multi_val max(isl::checked::multi_val multi2) const;
2592 inline isl::checked::multi_val min(isl::checked::multi_val multi2) const;
2593 inline isl::checked::multi_val neg() const;
2594 inline boolean plain_is_equal(const isl::checked::multi_val &multi2) const;
2595 inline isl::checked::multi_val product(isl::checked::multi_val multi2) const;
2596 inline isl::checked::multi_val range_product(isl::checked::multi_val multi2) const;
2597 inline isl::checked::id range_tuple_id() const;
2598 inline isl::checked::id get_range_tuple_id() const;
2599 inline isl::checked::multi_val reset_range_tuple_id() const;
2600 inline isl::checked::multi_val scale(isl::checked::multi_val mv) const;
2601 inline isl::checked::multi_val scale(isl::checked::val v) const;
2602 inline isl::checked::multi_val scale(long v) const;
2603 inline isl::checked::multi_val scale_down(isl::checked::multi_val mv) const;
2604 inline isl::checked::multi_val scale_down(isl::checked::val v) const;
2605 inline isl::checked::multi_val scale_down(long v) const;
2606 inline isl::checked::multi_val set_at(int pos, isl::checked::val el) const;
2607 inline isl::checked::multi_val set_at(int pos, long el) const;
2608 inline isl::checked::multi_val set_range_tuple(isl::checked::id id) const;
2609 inline isl::checked::multi_val set_range_tuple(const std::string &id) const;
2610 inline class size size() const;
2611 inline isl::checked::space space() const;
2612 inline isl::checked::space get_space() const;
2613 inline isl::checked::multi_val sub(isl::checked::multi_val multi2) const;
2614 static inline isl::checked::multi_val zero(isl::checked::space space);
2617 // declarations for isl::point
2618 inline point manage(__isl_take isl_point *ptr);
2619 inline point manage_copy(__isl_keep isl_point *ptr);
2621 class point {
2622 friend inline point manage(__isl_take isl_point *ptr);
2623 friend inline point manage_copy(__isl_keep isl_point *ptr);
2625 protected:
2626 isl_point *ptr = nullptr;
2628 inline explicit point(__isl_take isl_point *ptr);
2630 public:
2631 inline /* implicit */ point();
2632 inline /* implicit */ point(const point &obj);
2633 inline point &operator=(point obj);
2634 inline ~point();
2635 inline __isl_give isl_point *copy() const &;
2636 inline __isl_give isl_point *copy() && = delete;
2637 inline __isl_keep isl_point *get() const;
2638 inline __isl_give isl_point *release();
2639 inline bool is_null() const;
2640 inline isl::checked::ctx ctx() const;
2642 inline isl::checked::basic_set affine_hull() const;
2643 inline isl::checked::basic_set apply(const isl::checked::basic_map &bmap) const;
2644 inline isl::checked::set apply(const isl::checked::map &map) const;
2645 inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
2646 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2647 inline isl::checked::set as_set() const;
2648 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2649 inline isl::checked::set coalesce() const;
2650 inline isl::checked::set complement() const;
2651 inline isl::checked::union_set compute_divs() const;
2652 inline isl::checked::basic_set detect_equalities() const;
2653 inline isl::checked::val dim_max_val(int pos) const;
2654 inline isl::checked::val dim_min_val(int pos) const;
2655 inline isl::checked::set drop_unused_params() const;
2656 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
2657 inline isl::checked::set extract_set(const isl::checked::space &space) const;
2658 inline isl::checked::basic_set flatten() const;
2659 inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
2660 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
2661 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
2662 inline isl::checked::basic_set gist(const isl::checked::basic_set &context) const;
2663 inline isl::checked::set gist(const isl::checked::set &context) const;
2664 inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
2665 inline isl::checked::set gist_params(const isl::checked::set &context) const;
2666 inline isl::checked::map identity() const;
2667 inline isl::checked::pw_aff indicator_function() const;
2668 inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
2669 inline isl::checked::basic_set intersect(const isl::checked::basic_set &bset2) const;
2670 inline isl::checked::set intersect(const isl::checked::set &set2) const;
2671 inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
2672 inline isl::checked::basic_set intersect_params(const isl::checked::basic_set &bset2) const;
2673 inline isl::checked::set intersect_params(const isl::checked::set &params) const;
2674 inline boolean involves_locals() const;
2675 inline boolean is_disjoint(const isl::checked::set &set2) const;
2676 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
2677 inline boolean is_empty() const;
2678 inline boolean is_equal(const isl::checked::basic_set &bset2) const;
2679 inline boolean is_equal(const isl::checked::set &set2) const;
2680 inline boolean is_equal(const isl::checked::union_set &uset2) const;
2681 inline boolean is_singleton() const;
2682 inline boolean is_strict_subset(const isl::checked::set &set2) const;
2683 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
2684 inline boolean is_subset(const isl::checked::basic_set &bset2) const;
2685 inline boolean is_subset(const isl::checked::set &set2) const;
2686 inline boolean is_subset(const isl::checked::union_set &uset2) const;
2687 inline boolean is_wrapping() const;
2688 inline boolean isa_set() const;
2689 inline isl::checked::fixed_box lattice_tile() const;
2690 inline isl::checked::set lexmax() const;
2691 inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
2692 inline isl::checked::set lexmin() const;
2693 inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
2694 inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
2695 inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
2696 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
2697 inline isl::checked::val max_val(const isl::checked::aff &obj) const;
2698 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
2699 inline isl::checked::val min_val(const isl::checked::aff &obj) const;
2700 inline isl::checked::multi_val multi_val() const;
2701 inline isl::checked::multi_val get_multi_val() const;
2702 inline class size n_basic_set() const;
2703 inline isl::checked::pw_aff param_pw_aff_on_domain(const isl::checked::id &id) const;
2704 inline isl::checked::pw_aff param_pw_aff_on_domain(const std::string &id) const;
2705 inline isl::checked::basic_set params() const;
2706 inline isl::checked::multi_val plain_multi_val_if_fixed() const;
2707 inline isl::checked::basic_set polyhedral_hull() const;
2708 inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
2709 inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
2710 inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
2711 inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
2712 inline isl::checked::set product(const isl::checked::set &set2) const;
2713 inline isl::checked::set project_out_all_params() const;
2714 inline isl::checked::set project_out_param(const isl::checked::id &id) const;
2715 inline isl::checked::set project_out_param(const std::string &id) const;
2716 inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
2717 inline isl::checked::pw_aff pw_aff_on_domain(const isl::checked::val &v) const;
2718 inline isl::checked::pw_aff pw_aff_on_domain(long v) const;
2719 inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
2720 inline isl::checked::basic_set sample() const;
2721 inline isl::checked::point sample_point() const;
2722 inline isl::checked::set_list set_list() const;
2723 inline isl::checked::fixed_box simple_fixed_box_hull() const;
2724 inline isl::checked::space space() const;
2725 inline isl::checked::val stride(int pos) const;
2726 inline isl::checked::set subtract(const isl::checked::set &set2) const;
2727 inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
2728 inline isl::checked::set_list to_list() const;
2729 inline isl::checked::set to_set() const;
2730 inline isl::checked::union_set to_union_set() const;
2731 inline isl::checked::map translation() const;
2732 inline class size tuple_dim() const;
2733 inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
2734 inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2735 inline isl::checked::set unite(const isl::checked::basic_set &bset2) const;
2736 inline isl::checked::set unite(const isl::checked::set &set2) const;
2737 inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
2738 inline isl::checked::basic_set unshifted_simple_hull() const;
2739 inline isl::checked::map unwrap() const;
2740 inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
2741 inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
2742 inline isl::checked::set wrapped_reverse() const;
2745 // declarations for isl::pw_aff
2746 inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2747 inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2749 class pw_aff {
2750 friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2751 friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2753 protected:
2754 isl_pw_aff *ptr = nullptr;
2756 inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
2758 public:
2759 inline /* implicit */ pw_aff();
2760 inline /* implicit */ pw_aff(const pw_aff &obj);
2761 inline /* implicit */ pw_aff(isl::checked::aff aff);
2762 inline explicit pw_aff(isl::checked::ctx ctx, const std::string &str);
2763 inline pw_aff &operator=(pw_aff obj);
2764 inline ~pw_aff();
2765 inline __isl_give isl_pw_aff *copy() const &;
2766 inline __isl_give isl_pw_aff *copy() && = delete;
2767 inline __isl_keep isl_pw_aff *get() const;
2768 inline __isl_give isl_pw_aff *release();
2769 inline bool is_null() const;
2770 inline isl::checked::ctx ctx() const;
2772 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2773 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2774 inline isl::checked::pw_aff add(isl::checked::pw_aff pwaff2) const;
2775 inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
2776 inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
2777 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2778 inline isl::checked::pw_aff add(const isl::checked::aff &pwaff2) const;
2779 inline isl::checked::pw_aff add_constant(isl::checked::val v) const;
2780 inline isl::checked::pw_aff add_constant(long v) const;
2781 inline isl::checked::pw_multi_aff add_constant(const isl::checked::multi_val &mv) const;
2782 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2783 inline isl::checked::aff as_aff() const;
2784 inline isl::checked::map as_map() const;
2785 inline isl::checked::multi_aff as_multi_aff() const;
2786 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
2787 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2788 inline isl::checked::set as_set() const;
2789 inline isl::checked::union_map as_union_map() const;
2790 inline isl::checked::pw_aff at(int pos) const;
2791 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2792 inline isl::checked::set bind(isl::checked::id id) const;
2793 inline isl::checked::set bind(const std::string &id) const;
2794 inline isl::checked::pw_aff bind_domain(isl::checked::multi_id tuple) const;
2795 inline isl::checked::pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2796 inline isl::checked::pw_aff ceil() const;
2797 inline isl::checked::pw_aff coalesce() const;
2798 inline isl::checked::pw_aff cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const;
2799 inline isl::checked::pw_aff div(isl::checked::pw_aff pa2) const;
2800 inline isl::checked::set domain() const;
2801 inline isl::checked::pw_aff domain_reverse() const;
2802 inline isl::checked::pw_aff drop_unused_params() const;
2803 inline isl::checked::set eq_set(isl::checked::pw_aff pwaff2) const;
2804 inline isl::checked::val eval(isl::checked::point pnt) const;
2805 inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2806 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2807 inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2808 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2809 inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2810 inline isl::checked::pw_aff floor() const;
2811 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2812 inline isl::checked::set ge_set(isl::checked::pw_aff pwaff2) const;
2813 inline isl::checked::pw_aff gist(isl::checked::set context) const;
2814 inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
2815 inline isl::checked::pw_aff gist(const isl::checked::basic_set &context) const;
2816 inline isl::checked::pw_aff gist(const isl::checked::point &context) const;
2817 inline isl::checked::pw_aff gist_params(isl::checked::set context) const;
2818 inline isl::checked::set gt_set(isl::checked::pw_aff pwaff2) const;
2819 inline boolean has_range_tuple_id() const;
2820 inline isl::checked::multi_pw_aff identity() const;
2821 inline isl::checked::pw_aff insert_domain(isl::checked::space domain) const;
2822 inline isl::checked::pw_aff intersect_domain(isl::checked::set set) const;
2823 inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
2824 inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2825 inline isl::checked::pw_aff intersect_domain(const isl::checked::basic_set &set) const;
2826 inline isl::checked::pw_aff intersect_domain(const isl::checked::point &set) const;
2827 inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2828 inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2829 inline isl::checked::pw_aff intersect_params(isl::checked::set set) const;
2830 inline boolean involves_locals() const;
2831 inline boolean involves_nan() const;
2832 inline boolean involves_param(const isl::checked::id &id) const;
2833 inline boolean involves_param(const std::string &id) const;
2834 inline boolean involves_param(const isl::checked::id_list &list) const;
2835 inline boolean isa_aff() const;
2836 inline boolean isa_multi_aff() const;
2837 inline boolean isa_pw_multi_aff() const;
2838 inline isl::checked::set le_set(isl::checked::pw_aff pwaff2) const;
2839 inline isl::checked::pw_aff_list list() const;
2840 inline isl::checked::set lt_set(isl::checked::pw_aff pwaff2) const;
2841 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2842 inline isl::checked::pw_aff max(isl::checked::pw_aff pwaff2) const;
2843 inline isl::checked::pw_aff max(const isl::checked::aff &pwaff2) const;
2844 inline isl::checked::multi_val max_multi_val() const;
2845 inline isl::checked::val max_val() const;
2846 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2847 inline isl::checked::pw_aff min(isl::checked::pw_aff pwaff2) const;
2848 inline isl::checked::pw_aff min(const isl::checked::aff &pwaff2) const;
2849 inline isl::checked::multi_val min_multi_val() const;
2850 inline isl::checked::val min_val() const;
2851 inline isl::checked::pw_aff mod(isl::checked::val mod) const;
2852 inline isl::checked::pw_aff mod(long mod) const;
2853 inline isl::checked::pw_aff mul(isl::checked::pw_aff pwaff2) const;
2854 inline class size n_piece() const;
2855 inline isl::checked::set ne_set(isl::checked::pw_aff pwaff2) const;
2856 inline isl::checked::pw_aff neg() const;
2857 static inline isl::checked::pw_aff param_on_domain(isl::checked::set domain, isl::checked::id id);
2858 inline isl::checked::set params() const;
2859 inline boolean plain_is_empty() const;
2860 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2861 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2862 inline boolean plain_is_equal(const isl::checked::pw_aff &pwaff2) const;
2863 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
2864 inline boolean plain_is_equal(const isl::checked::union_pw_aff &upa2) const;
2865 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
2866 inline boolean plain_is_equal(const isl::checked::aff &pwaff2) const;
2867 inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
2868 inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2869 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2870 inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2871 inline isl::checked::pw_aff pullback(isl::checked::multi_aff ma) const;
2872 inline isl::checked::pw_aff pullback(isl::checked::multi_pw_aff mpa) const;
2873 inline isl::checked::pw_aff pullback(isl::checked::pw_multi_aff pma) const;
2874 inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2875 inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
2876 inline isl::checked::pw_multi_aff range_factor_domain() const;
2877 inline isl::checked::pw_multi_aff range_factor_range() const;
2878 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2879 inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2880 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2881 inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2882 inline isl::checked::id range_tuple_id() const;
2883 inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2884 inline isl::checked::pw_aff scale(isl::checked::val v) const;
2885 inline isl::checked::pw_aff scale(long v) const;
2886 inline isl::checked::pw_multi_aff scale(const isl::checked::multi_val &mv) const;
2887 inline isl::checked::pw_aff scale_down(isl::checked::val f) const;
2888 inline isl::checked::pw_aff scale_down(long f) const;
2889 inline isl::checked::pw_multi_aff scale_down(const isl::checked::multi_val &mv) const;
2890 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2891 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2892 inline isl::checked::pw_multi_aff set_range_tuple(const isl::checked::id &id) const;
2893 inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
2894 inline class size size() const;
2895 inline isl::checked::space space() const;
2896 inline isl::checked::space get_space() const;
2897 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2898 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2899 inline isl::checked::pw_aff sub(isl::checked::pw_aff pwaff2) const;
2900 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2901 inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
2902 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2903 inline isl::checked::pw_aff sub(const isl::checked::aff &pwaff2) const;
2904 inline isl::checked::pw_aff subtract_domain(isl::checked::set set) const;
2905 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
2906 inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
2907 inline isl::checked::pw_aff subtract_domain(const isl::checked::basic_set &set) const;
2908 inline isl::checked::pw_aff subtract_domain(const isl::checked::point &set) const;
2909 inline isl::checked::pw_aff tdiv_q(isl::checked::pw_aff pa2) const;
2910 inline isl::checked::pw_aff tdiv_r(isl::checked::pw_aff pa2) const;
2911 inline isl::checked::pw_aff_list to_list() const;
2912 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2913 inline isl::checked::union_pw_aff to_union_pw_aff() const;
2914 inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2915 inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2916 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2917 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2918 inline isl::checked::pw_aff union_add(isl::checked::pw_aff pwaff2) const;
2919 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2920 inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
2921 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2922 inline isl::checked::pw_aff union_add(const isl::checked::aff &pwaff2) const;
2925 // declarations for isl::pw_aff_list
2926 inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2927 inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2929 class pw_aff_list {
2930 friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2931 friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2933 protected:
2934 isl_pw_aff_list *ptr = nullptr;
2936 inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
2938 public:
2939 inline /* implicit */ pw_aff_list();
2940 inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
2941 inline explicit pw_aff_list(isl::checked::ctx ctx, int n);
2942 inline explicit pw_aff_list(isl::checked::pw_aff el);
2943 inline explicit pw_aff_list(isl::checked::ctx ctx, const std::string &str);
2944 inline pw_aff_list &operator=(pw_aff_list obj);
2945 inline ~pw_aff_list();
2946 inline __isl_give isl_pw_aff_list *copy() const &;
2947 inline __isl_give isl_pw_aff_list *copy() && = delete;
2948 inline __isl_keep isl_pw_aff_list *get() const;
2949 inline __isl_give isl_pw_aff_list *release();
2950 inline bool is_null() const;
2951 inline isl::checked::ctx ctx() const;
2953 inline isl::checked::pw_aff_list add(isl::checked::pw_aff el) const;
2954 inline isl::checked::pw_aff at(int index) const;
2955 inline isl::checked::pw_aff get_at(int index) const;
2956 inline isl::checked::pw_aff_list clear() const;
2957 inline isl::checked::pw_aff_list concat(isl::checked::pw_aff_list list2) const;
2958 inline isl::checked::pw_aff_list drop(unsigned int first, unsigned int n) const;
2959 inline stat foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const;
2960 inline stat foreach_scc(const std::function<boolean(isl::checked::pw_aff, isl::checked::pw_aff)> &follows, const std::function<stat(isl::checked::pw_aff_list)> &fn) const;
2961 inline isl::checked::pw_aff_list insert(unsigned int pos, isl::checked::pw_aff el) const;
2962 inline isl::checked::pw_aff_list set_at(int index, isl::checked::pw_aff el) const;
2963 inline class size size() const;
2966 // declarations for isl::pw_multi_aff
2967 inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2968 inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2970 class pw_multi_aff {
2971 friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2972 friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2974 protected:
2975 isl_pw_multi_aff *ptr = nullptr;
2977 inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
2979 public:
2980 inline /* implicit */ pw_multi_aff();
2981 inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
2982 inline /* implicit */ pw_multi_aff(isl::checked::multi_aff ma);
2983 inline /* implicit */ pw_multi_aff(isl::checked::pw_aff pa);
2984 inline explicit pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
2985 inline pw_multi_aff &operator=(pw_multi_aff obj);
2986 inline ~pw_multi_aff();
2987 inline __isl_give isl_pw_multi_aff *copy() const &;
2988 inline __isl_give isl_pw_multi_aff *copy() && = delete;
2989 inline __isl_keep isl_pw_multi_aff *get() const;
2990 inline __isl_give isl_pw_multi_aff *release();
2991 inline bool is_null() const;
2992 inline isl::checked::ctx ctx() const;
2994 inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2995 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2996 inline isl::checked::pw_multi_aff add(isl::checked::pw_multi_aff pma2) const;
2997 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2998 inline isl::checked::pw_multi_aff add(const isl::checked::multi_aff &pma2) const;
2999 inline isl::checked::pw_multi_aff add(const isl::checked::pw_aff &pma2) const;
3000 inline isl::checked::pw_multi_aff add_constant(isl::checked::multi_val mv) const;
3001 inline isl::checked::pw_multi_aff add_constant(isl::checked::val v) const;
3002 inline isl::checked::pw_multi_aff add_constant(long v) const;
3003 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
3004 inline isl::checked::map as_map() const;
3005 inline isl::checked::multi_aff as_multi_aff() const;
3006 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
3007 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3008 inline isl::checked::set as_set() const;
3009 inline isl::checked::union_map as_union_map() const;
3010 inline isl::checked::pw_aff at(int pos) const;
3011 inline isl::checked::pw_aff get_at(int pos) const;
3012 inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
3013 inline isl::checked::pw_multi_aff bind_domain(isl::checked::multi_id tuple) const;
3014 inline isl::checked::pw_multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
3015 inline isl::checked::pw_multi_aff coalesce() const;
3016 inline isl::checked::set domain() const;
3017 static inline isl::checked::pw_multi_aff domain_map(isl::checked::space space);
3018 inline isl::checked::pw_multi_aff domain_reverse() const;
3019 inline isl::checked::pw_multi_aff drop_unused_params() const;
3020 inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
3021 inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
3022 inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
3023 inline isl::checked::pw_multi_aff flat_range_product(isl::checked::pw_multi_aff pma2) const;
3024 inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
3025 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::multi_aff &pma2) const;
3026 inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_aff &pma2) const;
3027 inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
3028 inline isl::checked::pw_multi_aff gist(isl::checked::set set) const;
3029 inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
3030 inline isl::checked::pw_multi_aff gist(const isl::checked::basic_set &set) const;
3031 inline isl::checked::pw_multi_aff gist(const isl::checked::point &set) const;
3032 inline isl::checked::pw_multi_aff gist_params(isl::checked::set set) const;
3033 inline boolean has_range_tuple_id() const;
3034 inline isl::checked::multi_pw_aff identity() const;
3035 static inline isl::checked::pw_multi_aff identity_on_domain(isl::checked::space space);
3036 inline isl::checked::pw_multi_aff insert_domain(isl::checked::space domain) const;
3037 inline isl::checked::pw_multi_aff intersect_domain(isl::checked::set set) const;
3038 inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
3039 inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
3040 inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::basic_set &set) const;
3041 inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::point &set) const;
3042 inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
3043 inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
3044 inline isl::checked::pw_multi_aff intersect_params(isl::checked::set set) const;
3045 inline boolean involves_locals() const;
3046 inline boolean involves_nan() const;
3047 inline boolean involves_param(const isl::checked::id &id) const;
3048 inline boolean involves_param(const std::string &id) const;
3049 inline boolean involves_param(const isl::checked::id_list &list) const;
3050 inline boolean isa_multi_aff() const;
3051 inline boolean isa_pw_multi_aff() const;
3052 inline isl::checked::pw_aff_list list() const;
3053 inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
3054 inline isl::checked::multi_val max_multi_val() const;
3055 inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
3056 inline isl::checked::multi_val min_multi_val() const;
3057 static inline isl::checked::pw_multi_aff multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv);
3058 inline class size n_piece() const;
3059 inline isl::checked::multi_pw_aff neg() const;
3060 inline boolean plain_is_empty() const;
3061 inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
3062 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
3063 inline boolean plain_is_equal(const isl::checked::pw_multi_aff &pma2) const;
3064 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
3065 inline boolean plain_is_equal(const isl::checked::multi_aff &pma2) const;
3066 inline boolean plain_is_equal(const isl::checked::pw_aff &pma2) const;
3067 inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const;
3068 inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
3069 inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const;
3070 inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const;
3071 inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
3072 inline isl::checked::pw_multi_aff product(isl::checked::pw_multi_aff pma2) const;
3073 inline isl::checked::pw_multi_aff product(const isl::checked::multi_aff &pma2) const;
3074 inline isl::checked::pw_multi_aff product(const isl::checked::pw_aff &pma2) const;
3075 inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
3076 inline isl::checked::pw_multi_aff pullback(isl::checked::multi_aff ma) const;
3077 inline isl::checked::pw_multi_aff pullback(isl::checked::pw_multi_aff pma2) const;
3078 inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
3079 inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
3080 inline isl::checked::pw_multi_aff range_factor_domain() const;
3081 inline isl::checked::pw_multi_aff range_factor_range() const;
3082 static inline isl::checked::pw_multi_aff range_map(isl::checked::space space);
3083 inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
3084 inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
3085 inline isl::checked::pw_multi_aff range_product(isl::checked::pw_multi_aff pma2) const;
3086 inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
3087 inline isl::checked::pw_multi_aff range_product(const isl::checked::multi_aff &pma2) const;
3088 inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_aff &pma2) const;
3089 inline isl::checked::id range_tuple_id() const;
3090 inline isl::checked::id get_range_tuple_id() const;
3091 inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
3092 inline isl::checked::pw_multi_aff scale(isl::checked::multi_val mv) const;
3093 inline isl::checked::pw_multi_aff scale(isl::checked::val v) const;
3094 inline isl::checked::pw_multi_aff scale(long v) const;
3095 inline isl::checked::pw_multi_aff scale_down(isl::checked::multi_val mv) const;
3096 inline isl::checked::pw_multi_aff scale_down(isl::checked::val v) const;
3097 inline isl::checked::pw_multi_aff scale_down(long v) const;
3098 inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
3099 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
3100 inline isl::checked::pw_multi_aff set_range_tuple(isl::checked::id id) const;
3101 inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
3102 inline class size size() const;
3103 inline isl::checked::space space() const;
3104 inline isl::checked::space get_space() const;
3105 inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
3106 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
3107 inline isl::checked::pw_multi_aff sub(isl::checked::pw_multi_aff pma2) const;
3108 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
3109 inline isl::checked::pw_multi_aff sub(const isl::checked::multi_aff &pma2) const;
3110 inline isl::checked::pw_multi_aff sub(const isl::checked::pw_aff &pma2) const;
3111 inline isl::checked::pw_multi_aff subtract_domain(isl::checked::set set) const;
3112 inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
3113 inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
3114 inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::basic_set &set) const;
3115 inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::point &set) const;
3116 inline isl::checked::pw_multi_aff_list to_list() const;
3117 inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
3118 inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
3119 inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
3120 inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
3121 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
3122 inline isl::checked::pw_multi_aff union_add(isl::checked::pw_multi_aff pma2) const;
3123 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
3124 inline isl::checked::pw_multi_aff union_add(const isl::checked::multi_aff &pma2) const;
3125 inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_aff &pma2) const;
3126 static inline isl::checked::pw_multi_aff zero(isl::checked::space space);
3129 // declarations for isl::pw_multi_aff_list
3130 inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3131 inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3133 class pw_multi_aff_list {
3134 friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
3135 friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
3137 protected:
3138 isl_pw_multi_aff_list *ptr = nullptr;
3140 inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
3142 public:
3143 inline /* implicit */ pw_multi_aff_list();
3144 inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
3145 inline explicit pw_multi_aff_list(isl::checked::ctx ctx, int n);
3146 inline explicit pw_multi_aff_list(isl::checked::pw_multi_aff el);
3147 inline explicit pw_multi_aff_list(isl::checked::ctx ctx, const std::string &str);
3148 inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
3149 inline ~pw_multi_aff_list();
3150 inline __isl_give isl_pw_multi_aff_list *copy() const &;
3151 inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
3152 inline __isl_keep isl_pw_multi_aff_list *get() const;
3153 inline __isl_give isl_pw_multi_aff_list *release();
3154 inline bool is_null() const;
3155 inline isl::checked::ctx ctx() const;
3157 inline isl::checked::pw_multi_aff_list add(isl::checked::pw_multi_aff el) const;
3158 inline isl::checked::pw_multi_aff at(int index) const;
3159 inline isl::checked::pw_multi_aff get_at(int index) const;
3160 inline isl::checked::pw_multi_aff_list clear() const;
3161 inline isl::checked::pw_multi_aff_list concat(isl::checked::pw_multi_aff_list list2) const;
3162 inline isl::checked::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3163 inline stat foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const;
3164 inline stat foreach_scc(const std::function<boolean(isl::checked::pw_multi_aff, isl::checked::pw_multi_aff)> &follows, const std::function<stat(isl::checked::pw_multi_aff_list)> &fn) const;
3165 inline isl::checked::pw_multi_aff_list insert(unsigned int pos, isl::checked::pw_multi_aff el) const;
3166 inline isl::checked::pw_multi_aff_list set_at(int index, isl::checked::pw_multi_aff el) const;
3167 inline class size size() const;
3170 // declarations for isl::schedule
3171 inline schedule manage(__isl_take isl_schedule *ptr);
3172 inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3174 class schedule {
3175 friend inline schedule manage(__isl_take isl_schedule *ptr);
3176 friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
3178 protected:
3179 isl_schedule *ptr = nullptr;
3181 inline explicit schedule(__isl_take isl_schedule *ptr);
3183 public:
3184 inline /* implicit */ schedule();
3185 inline /* implicit */ schedule(const schedule &obj);
3186 inline explicit schedule(isl::checked::ctx ctx, const std::string &str);
3187 inline schedule &operator=(schedule obj);
3188 inline ~schedule();
3189 inline __isl_give isl_schedule *copy() const &;
3190 inline __isl_give isl_schedule *copy() && = delete;
3191 inline __isl_keep isl_schedule *get() const;
3192 inline __isl_give isl_schedule *release();
3193 inline bool is_null() const;
3194 inline isl::checked::ctx ctx() const;
3196 inline isl::checked::union_set domain() const;
3197 inline isl::checked::union_set get_domain() const;
3198 static inline isl::checked::schedule from_domain(isl::checked::union_set domain);
3199 inline isl::checked::union_map map() const;
3200 inline isl::checked::union_map get_map() const;
3201 inline isl::checked::schedule pullback(isl::checked::union_pw_multi_aff upma) const;
3202 inline isl::checked::schedule_node root() const;
3203 inline isl::checked::schedule_node get_root() const;
3206 // declarations for isl::schedule_constraints
3207 inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
3208 inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
3210 class schedule_constraints {
3211 friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
3212 friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
3214 protected:
3215 isl_schedule_constraints *ptr = nullptr;
3217 inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
3219 public:
3220 inline /* implicit */ schedule_constraints();
3221 inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
3222 inline explicit schedule_constraints(isl::checked::ctx ctx, const std::string &str);
3223 inline schedule_constraints &operator=(schedule_constraints obj);
3224 inline ~schedule_constraints();
3225 inline __isl_give isl_schedule_constraints *copy() const &;
3226 inline __isl_give isl_schedule_constraints *copy() && = delete;
3227 inline __isl_keep isl_schedule_constraints *get() const;
3228 inline __isl_give isl_schedule_constraints *release();
3229 inline bool is_null() const;
3230 inline isl::checked::ctx ctx() const;
3232 inline isl::checked::union_map coincidence() const;
3233 inline isl::checked::union_map get_coincidence() const;
3234 inline isl::checked::schedule compute_schedule() const;
3235 inline isl::checked::union_map conditional_validity() const;
3236 inline isl::checked::union_map get_conditional_validity() const;
3237 inline isl::checked::union_map conditional_validity_condition() const;
3238 inline isl::checked::union_map get_conditional_validity_condition() const;
3239 inline isl::checked::set context() const;
3240 inline isl::checked::set get_context() const;
3241 inline isl::checked::union_set domain() const;
3242 inline isl::checked::union_set get_domain() const;
3243 static inline isl::checked::schedule_constraints on_domain(isl::checked::union_set domain);
3244 inline isl::checked::union_map proximity() const;
3245 inline isl::checked::union_map get_proximity() const;
3246 inline isl::checked::schedule_constraints set_coincidence(isl::checked::union_map coincidence) const;
3247 inline isl::checked::schedule_constraints set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const;
3248 inline isl::checked::schedule_constraints set_context(isl::checked::set context) const;
3249 inline isl::checked::schedule_constraints set_proximity(isl::checked::union_map proximity) const;
3250 inline isl::checked::schedule_constraints set_validity(isl::checked::union_map validity) const;
3251 inline isl::checked::union_map validity() const;
3252 inline isl::checked::union_map get_validity() const;
3255 // declarations for isl::schedule_node
3256 inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3257 inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3259 class schedule_node {
3260 friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3261 friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3263 protected:
3264 isl_schedule_node *ptr = nullptr;
3266 inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
3268 public:
3269 inline /* implicit */ schedule_node();
3270 inline /* implicit */ schedule_node(const schedule_node &obj);
3271 inline schedule_node &operator=(schedule_node obj);
3272 inline ~schedule_node();
3273 inline __isl_give isl_schedule_node *copy() const &;
3274 inline __isl_give isl_schedule_node *copy() && = delete;
3275 inline __isl_keep isl_schedule_node *get() const;
3276 inline __isl_give isl_schedule_node *release();
3277 inline bool is_null() const;
3278 private:
3279 template <typename T,
3280 typename = typename std::enable_if<std::is_same<
3281 const decltype(isl_schedule_node_get_type(NULL)),
3282 const T>::value>::type>
3283 inline boolean isa_type(T subtype) const;
3284 public:
3285 template <class T> inline boolean isa() const;
3286 template <class T> inline T as() const;
3287 inline isl::checked::ctx ctx() const;
3289 inline isl::checked::schedule_node ancestor(int generation) const;
3290 inline class size ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
3291 inline class size get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
3292 inline isl::checked::schedule_node child(int pos) const;
3293 inline class size child_position() const;
3294 inline class size get_child_position() const;
3295 inline boolean every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const;
3296 inline isl::checked::schedule_node first_child() const;
3297 inline stat foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const;
3298 inline stat foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const;
3299 static inline isl::checked::schedule_node from_domain(isl::checked::union_set domain);
3300 static inline isl::checked::schedule_node from_extension(isl::checked::union_map extension);
3301 inline isl::checked::schedule_node graft_after(isl::checked::schedule_node graft) const;
3302 inline isl::checked::schedule_node graft_before(isl::checked::schedule_node graft) const;
3303 inline boolean has_children() const;
3304 inline boolean has_next_sibling() const;
3305 inline boolean has_parent() const;
3306 inline boolean has_previous_sibling() const;
3307 inline isl::checked::schedule_node insert_context(isl::checked::set context) const;
3308 inline isl::checked::schedule_node insert_filter(isl::checked::union_set filter) const;
3309 inline isl::checked::schedule_node insert_guard(isl::checked::set context) const;
3310 inline isl::checked::schedule_node insert_mark(isl::checked::id mark) const;
3311 inline isl::checked::schedule_node insert_mark(const std::string &mark) const;
3312 inline isl::checked::schedule_node insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const;
3313 inline isl::checked::schedule_node insert_sequence(isl::checked::union_set_list filters) const;
3314 inline isl::checked::schedule_node insert_set(isl::checked::union_set_list filters) const;
3315 inline boolean is_equal(const isl::checked::schedule_node &node2) const;
3316 inline boolean is_subtree_anchored() const;
3317 inline isl::checked::schedule_node map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const;
3318 inline class size n_children() const;
3319 inline isl::checked::schedule_node next_sibling() const;
3320 inline isl::checked::schedule_node order_after(isl::checked::union_set filter) const;
3321 inline isl::checked::schedule_node order_before(isl::checked::union_set filter) const;
3322 inline isl::checked::schedule_node parent() const;
3323 inline isl::checked::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const;
3324 inline isl::checked::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
3325 inline isl::checked::union_map prefix_schedule_union_map() const;
3326 inline isl::checked::union_map get_prefix_schedule_union_map() const;
3327 inline isl::checked::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const;
3328 inline isl::checked::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
3329 inline isl::checked::schedule_node previous_sibling() const;
3330 inline isl::checked::schedule_node root() const;
3331 inline isl::checked::schedule schedule() const;
3332 inline isl::checked::schedule get_schedule() const;
3333 inline isl::checked::schedule_node shared_ancestor(const isl::checked::schedule_node &node2) const;
3334 inline isl::checked::schedule_node get_shared_ancestor(const isl::checked::schedule_node &node2) const;
3335 inline class size tree_depth() const;
3336 inline class size get_tree_depth() const;
3339 // declarations for isl::schedule_node_band
3341 class schedule_node_band : public schedule_node {
3342 template <class T>
3343 friend boolean schedule_node::isa() const;
3344 friend schedule_node_band schedule_node::as<schedule_node_band>() const;
3345 static const auto type = isl_schedule_node_band;
3347 protected:
3348 inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
3350 public:
3351 inline /* implicit */ schedule_node_band();
3352 inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
3353 inline schedule_node_band &operator=(schedule_node_band obj);
3354 inline isl::checked::ctx ctx() const;
3356 inline isl::checked::union_set ast_build_options() const;
3357 inline isl::checked::union_set get_ast_build_options() const;
3358 inline isl::checked::set ast_isolate_option() const;
3359 inline isl::checked::set get_ast_isolate_option() const;
3360 inline boolean member_get_coincident(int pos) const;
3361 inline schedule_node_band member_set_coincident(int pos, int coincident) const;
3362 inline schedule_node_band mod(isl::checked::multi_val mv) const;
3363 inline class size n_member() const;
3364 inline isl::checked::multi_union_pw_aff partial_schedule() const;
3365 inline isl::checked::multi_union_pw_aff get_partial_schedule() const;
3366 inline boolean permutable() const;
3367 inline boolean get_permutable() const;
3368 inline schedule_node_band scale(isl::checked::multi_val mv) const;
3369 inline schedule_node_band scale_down(isl::checked::multi_val mv) const;
3370 inline schedule_node_band set_ast_build_options(isl::checked::union_set options) const;
3371 inline schedule_node_band set_permutable(int permutable) const;
3372 inline schedule_node_band shift(isl::checked::multi_union_pw_aff shift) const;
3373 inline schedule_node_band split(int pos) const;
3374 inline schedule_node_band tile(isl::checked::multi_val sizes) const;
3375 inline schedule_node_band member_set_ast_loop_default(int pos) const;
3376 inline schedule_node_band member_set_ast_loop_atomic(int pos) const;
3377 inline schedule_node_band member_set_ast_loop_unroll(int pos) const;
3378 inline schedule_node_band member_set_ast_loop_separate(int pos) const;
3381 // declarations for isl::schedule_node_context
3383 class schedule_node_context : public schedule_node {
3384 template <class T>
3385 friend boolean schedule_node::isa() const;
3386 friend schedule_node_context schedule_node::as<schedule_node_context>() const;
3387 static const auto type = isl_schedule_node_context;
3389 protected:
3390 inline explicit schedule_node_context(__isl_take isl_schedule_node *ptr);
3392 public:
3393 inline /* implicit */ schedule_node_context();
3394 inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
3395 inline schedule_node_context &operator=(schedule_node_context obj);
3396 inline isl::checked::ctx ctx() const;
3398 inline isl::checked::set context() const;
3399 inline isl::checked::set get_context() const;
3402 // declarations for isl::schedule_node_domain
3404 class schedule_node_domain : public schedule_node {
3405 template <class T>
3406 friend boolean schedule_node::isa() const;
3407 friend schedule_node_domain schedule_node::as<schedule_node_domain>() const;
3408 static const auto type = isl_schedule_node_domain;
3410 protected:
3411 inline explicit schedule_node_domain(__isl_take isl_schedule_node *ptr);
3413 public:
3414 inline /* implicit */ schedule_node_domain();
3415 inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
3416 inline schedule_node_domain &operator=(schedule_node_domain obj);
3417 inline isl::checked::ctx ctx() const;
3419 inline isl::checked::union_set domain() const;
3420 inline isl::checked::union_set get_domain() const;
3423 // declarations for isl::schedule_node_expansion
3425 class schedule_node_expansion : public schedule_node {
3426 template <class T>
3427 friend boolean schedule_node::isa() const;
3428 friend schedule_node_expansion schedule_node::as<schedule_node_expansion>() const;
3429 static const auto type = isl_schedule_node_expansion;
3431 protected:
3432 inline explicit schedule_node_expansion(__isl_take isl_schedule_node *ptr);
3434 public:
3435 inline /* implicit */ schedule_node_expansion();
3436 inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
3437 inline schedule_node_expansion &operator=(schedule_node_expansion obj);
3438 inline isl::checked::ctx ctx() const;
3440 inline isl::checked::union_pw_multi_aff contraction() const;
3441 inline isl::checked::union_pw_multi_aff get_contraction() const;
3442 inline isl::checked::union_map expansion() const;
3443 inline isl::checked::union_map get_expansion() const;
3446 // declarations for isl::schedule_node_extension
3448 class schedule_node_extension : public schedule_node {
3449 template <class T>
3450 friend boolean schedule_node::isa() const;
3451 friend schedule_node_extension schedule_node::as<schedule_node_extension>() const;
3452 static const auto type = isl_schedule_node_extension;
3454 protected:
3455 inline explicit schedule_node_extension(__isl_take isl_schedule_node *ptr);
3457 public:
3458 inline /* implicit */ schedule_node_extension();
3459 inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
3460 inline schedule_node_extension &operator=(schedule_node_extension obj);
3461 inline isl::checked::ctx ctx() const;
3463 inline isl::checked::union_map extension() const;
3464 inline isl::checked::union_map get_extension() const;
3467 // declarations for isl::schedule_node_filter
3469 class schedule_node_filter : public schedule_node {
3470 template <class T>
3471 friend boolean schedule_node::isa() const;
3472 friend schedule_node_filter schedule_node::as<schedule_node_filter>() const;
3473 static const auto type = isl_schedule_node_filter;
3475 protected:
3476 inline explicit schedule_node_filter(__isl_take isl_schedule_node *ptr);
3478 public:
3479 inline /* implicit */ schedule_node_filter();
3480 inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
3481 inline schedule_node_filter &operator=(schedule_node_filter obj);
3482 inline isl::checked::ctx ctx() const;
3484 inline isl::checked::union_set filter() const;
3485 inline isl::checked::union_set get_filter() const;
3488 // declarations for isl::schedule_node_guard
3490 class schedule_node_guard : public schedule_node {
3491 template <class T>
3492 friend boolean schedule_node::isa() const;
3493 friend schedule_node_guard schedule_node::as<schedule_node_guard>() const;
3494 static const auto type = isl_schedule_node_guard;
3496 protected:
3497 inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
3499 public:
3500 inline /* implicit */ schedule_node_guard();
3501 inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
3502 inline schedule_node_guard &operator=(schedule_node_guard obj);
3503 inline isl::checked::ctx ctx() const;
3505 inline isl::checked::set guard() const;
3506 inline isl::checked::set get_guard() const;
3509 // declarations for isl::schedule_node_leaf
3511 class schedule_node_leaf : public schedule_node {
3512 template <class T>
3513 friend boolean schedule_node::isa() const;
3514 friend schedule_node_leaf schedule_node::as<schedule_node_leaf>() const;
3515 static const auto type = isl_schedule_node_leaf;
3517 protected:
3518 inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
3520 public:
3521 inline /* implicit */ schedule_node_leaf();
3522 inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
3523 inline schedule_node_leaf &operator=(schedule_node_leaf obj);
3524 inline isl::checked::ctx ctx() const;
3528 // declarations for isl::schedule_node_mark
3530 class schedule_node_mark : public schedule_node {
3531 template <class T>
3532 friend boolean schedule_node::isa() const;
3533 friend schedule_node_mark schedule_node::as<schedule_node_mark>() const;
3534 static const auto type = isl_schedule_node_mark;
3536 protected:
3537 inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
3539 public:
3540 inline /* implicit */ schedule_node_mark();
3541 inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
3542 inline schedule_node_mark &operator=(schedule_node_mark obj);
3543 inline isl::checked::ctx ctx() const;
3547 // declarations for isl::schedule_node_sequence
3549 class schedule_node_sequence : public schedule_node {
3550 template <class T>
3551 friend boolean schedule_node::isa() const;
3552 friend schedule_node_sequence schedule_node::as<schedule_node_sequence>() const;
3553 static const auto type = isl_schedule_node_sequence;
3555 protected:
3556 inline explicit schedule_node_sequence(__isl_take isl_schedule_node *ptr);
3558 public:
3559 inline /* implicit */ schedule_node_sequence();
3560 inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
3561 inline schedule_node_sequence &operator=(schedule_node_sequence obj);
3562 inline isl::checked::ctx ctx() const;
3566 // declarations for isl::schedule_node_set
3568 class schedule_node_set : public schedule_node {
3569 template <class T>
3570 friend boolean schedule_node::isa() const;
3571 friend schedule_node_set schedule_node::as<schedule_node_set>() const;
3572 static const auto type = isl_schedule_node_set;
3574 protected:
3575 inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
3577 public:
3578 inline /* implicit */ schedule_node_set();
3579 inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
3580 inline schedule_node_set &operator=(schedule_node_set obj);
3581 inline isl::checked::ctx ctx() const;
3585 // declarations for isl::set
3586 inline set manage(__isl_take isl_set *ptr);
3587 inline set manage_copy(__isl_keep isl_set *ptr);
3589 class set {
3590 friend inline set manage(__isl_take isl_set *ptr);
3591 friend inline set manage_copy(__isl_keep isl_set *ptr);
3593 protected:
3594 isl_set *ptr = nullptr;
3596 inline explicit set(__isl_take isl_set *ptr);
3598 public:
3599 inline /* implicit */ set();
3600 inline /* implicit */ set(const set &obj);
3601 inline /* implicit */ set(isl::checked::basic_set bset);
3602 inline /* implicit */ set(isl::checked::point pnt);
3603 inline explicit set(isl::checked::ctx ctx, const std::string &str);
3604 inline set &operator=(set obj);
3605 inline ~set();
3606 inline __isl_give isl_set *copy() const &;
3607 inline __isl_give isl_set *copy() && = delete;
3608 inline __isl_keep isl_set *get() const;
3609 inline __isl_give isl_set *release();
3610 inline bool is_null() const;
3611 inline isl::checked::ctx ctx() const;
3613 inline isl::checked::basic_set affine_hull() const;
3614 inline isl::checked::set apply(isl::checked::map map) const;
3615 inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
3616 inline isl::checked::set apply(const isl::checked::basic_map &map) const;
3617 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3618 inline isl::checked::set as_set() const;
3619 inline isl::checked::set bind(isl::checked::multi_id tuple) const;
3620 inline isl::checked::set coalesce() const;
3621 inline isl::checked::set complement() const;
3622 inline isl::checked::union_set compute_divs() const;
3623 inline isl::checked::set detect_equalities() const;
3624 inline isl::checked::val dim_max_val(int pos) const;
3625 inline isl::checked::val dim_min_val(int pos) const;
3626 inline isl::checked::set drop_unused_params() const;
3627 static inline isl::checked::set empty(isl::checked::space space);
3628 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
3629 inline isl::checked::set extract_set(const isl::checked::space &space) const;
3630 inline isl::checked::set flatten() const;
3631 inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
3632 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
3633 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
3634 inline isl::checked::set gist(isl::checked::set context) const;
3635 inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
3636 inline isl::checked::set gist(const isl::checked::basic_set &context) const;
3637 inline isl::checked::set gist(const isl::checked::point &context) const;
3638 inline isl::checked::set gist_params(isl::checked::set context) const;
3639 inline isl::checked::map identity() const;
3640 inline isl::checked::pw_aff indicator_function() const;
3641 inline isl::checked::map insert_domain(isl::checked::space domain) const;
3642 inline isl::checked::set intersect(isl::checked::set set2) const;
3643 inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
3644 inline isl::checked::set intersect(const isl::checked::basic_set &set2) const;
3645 inline isl::checked::set intersect(const isl::checked::point &set2) const;
3646 inline isl::checked::set intersect_params(isl::checked::set params) const;
3647 inline boolean involves_locals() const;
3648 inline boolean is_disjoint(const isl::checked::set &set2) const;
3649 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
3650 inline boolean is_disjoint(const isl::checked::basic_set &set2) const;
3651 inline boolean is_disjoint(const isl::checked::point &set2) const;
3652 inline boolean is_empty() const;
3653 inline boolean is_equal(const isl::checked::set &set2) const;
3654 inline boolean is_equal(const isl::checked::union_set &uset2) const;
3655 inline boolean is_equal(const isl::checked::basic_set &set2) const;
3656 inline boolean is_equal(const isl::checked::point &set2) const;
3657 inline boolean is_singleton() const;
3658 inline boolean is_strict_subset(const isl::checked::set &set2) const;
3659 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
3660 inline boolean is_strict_subset(const isl::checked::basic_set &set2) const;
3661 inline boolean is_strict_subset(const isl::checked::point &set2) const;
3662 inline boolean is_subset(const isl::checked::set &set2) const;
3663 inline boolean is_subset(const isl::checked::union_set &uset2) const;
3664 inline boolean is_subset(const isl::checked::basic_set &set2) const;
3665 inline boolean is_subset(const isl::checked::point &set2) const;
3666 inline boolean is_wrapping() const;
3667 inline boolean isa_set() const;
3668 inline isl::checked::fixed_box lattice_tile() const;
3669 inline isl::checked::fixed_box get_lattice_tile() const;
3670 inline isl::checked::set lexmax() const;
3671 inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
3672 inline isl::checked::set lexmin() const;
3673 inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
3674 inline isl::checked::set lower_bound(isl::checked::multi_pw_aff lower) const;
3675 inline isl::checked::set lower_bound(isl::checked::multi_val lower) const;
3676 inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
3677 inline isl::checked::val max_val(const isl::checked::aff &obj) const;
3678 inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
3679 inline isl::checked::val min_val(const isl::checked::aff &obj) const;
3680 inline class size n_basic_set() const;
3681 inline isl::checked::pw_aff param_pw_aff_on_domain(isl::checked::id id) const;
3682 inline isl::checked::pw_aff param_pw_aff_on_domain(const std::string &id) const;
3683 inline isl::checked::set params() const;
3684 inline isl::checked::multi_val plain_multi_val_if_fixed() const;
3685 inline isl::checked::multi_val get_plain_multi_val_if_fixed() const;
3686 inline isl::checked::basic_set polyhedral_hull() const;
3687 inline isl::checked::set preimage(isl::checked::multi_aff ma) const;
3688 inline isl::checked::set preimage(isl::checked::multi_pw_aff mpa) const;
3689 inline isl::checked::set preimage(isl::checked::pw_multi_aff pma) const;
3690 inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
3691 inline isl::checked::set product(isl::checked::set set2) const;
3692 inline isl::checked::set project_out_all_params() const;
3693 inline isl::checked::set project_out_param(isl::checked::id id) const;
3694 inline isl::checked::set project_out_param(const std::string &id) const;
3695 inline isl::checked::set project_out_param(isl::checked::id_list list) const;
3696 inline isl::checked::pw_aff pw_aff_on_domain(isl::checked::val v) const;
3697 inline isl::checked::pw_aff pw_aff_on_domain(long v) const;
3698 inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(isl::checked::multi_val mv) const;
3699 inline isl::checked::basic_set sample() const;
3700 inline isl::checked::point sample_point() const;
3701 inline isl::checked::set_list set_list() const;
3702 inline isl::checked::fixed_box simple_fixed_box_hull() const;
3703 inline isl::checked::fixed_box get_simple_fixed_box_hull() const;
3704 inline isl::checked::space space() const;
3705 inline isl::checked::space get_space() const;
3706 inline isl::checked::val stride(int pos) const;
3707 inline isl::checked::val get_stride(int pos) const;
3708 inline isl::checked::set subtract(isl::checked::set set2) const;
3709 inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
3710 inline isl::checked::set subtract(const isl::checked::basic_set &set2) const;
3711 inline isl::checked::set subtract(const isl::checked::point &set2) const;
3712 inline isl::checked::set_list to_list() const;
3713 inline isl::checked::union_set to_union_set() const;
3714 inline isl::checked::map translation() const;
3715 inline class size tuple_dim() const;
3716 inline isl::checked::set unbind_params(isl::checked::multi_id tuple) const;
3717 inline isl::checked::map unbind_params_insert_domain(isl::checked::multi_id domain) const;
3718 inline isl::checked::set unite(isl::checked::set set2) const;
3719 inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
3720 inline isl::checked::set unite(const isl::checked::basic_set &set2) const;
3721 inline isl::checked::set unite(const isl::checked::point &set2) const;
3722 static inline isl::checked::set universe(isl::checked::space space);
3723 inline isl::checked::basic_set unshifted_simple_hull() const;
3724 inline isl::checked::map unwrap() const;
3725 inline isl::checked::set upper_bound(isl::checked::multi_pw_aff upper) const;
3726 inline isl::checked::set upper_bound(isl::checked::multi_val upper) const;
3727 inline isl::checked::set wrapped_reverse() const;
3730 // declarations for isl::set_list
3731 inline set_list manage(__isl_take isl_set_list *ptr);
3732 inline set_list manage_copy(__isl_keep isl_set_list *ptr);
3734 class set_list {
3735 friend inline set_list manage(__isl_take isl_set_list *ptr);
3736 friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
3738 protected:
3739 isl_set_list *ptr = nullptr;
3741 inline explicit set_list(__isl_take isl_set_list *ptr);
3743 public:
3744 inline /* implicit */ set_list();
3745 inline /* implicit */ set_list(const set_list &obj);
3746 inline explicit set_list(isl::checked::ctx ctx, int n);
3747 inline explicit set_list(isl::checked::set el);
3748 inline explicit set_list(isl::checked::ctx ctx, const std::string &str);
3749 inline set_list &operator=(set_list obj);
3750 inline ~set_list();
3751 inline __isl_give isl_set_list *copy() const &;
3752 inline __isl_give isl_set_list *copy() && = delete;
3753 inline __isl_keep isl_set_list *get() const;
3754 inline __isl_give isl_set_list *release();
3755 inline bool is_null() const;
3756 inline isl::checked::ctx ctx() const;
3758 inline isl::checked::set_list add(isl::checked::set el) const;
3759 inline isl::checked::set at(int index) const;
3760 inline isl::checked::set get_at(int index) const;
3761 inline isl::checked::set_list clear() const;
3762 inline isl::checked::set_list concat(isl::checked::set_list list2) const;
3763 inline isl::checked::set_list drop(unsigned int first, unsigned int n) const;
3764 inline stat foreach(const std::function<stat(isl::checked::set)> &fn) const;
3765 inline stat foreach_scc(const std::function<boolean(isl::checked::set, isl::checked::set)> &follows, const std::function<stat(isl::checked::set_list)> &fn) const;
3766 inline isl::checked::set_list insert(unsigned int pos, isl::checked::set el) const;
3767 inline isl::checked::set_list set_at(int index, isl::checked::set el) const;
3768 inline class size size() const;
3771 // declarations for isl::space
3772 inline space manage(__isl_take isl_space *ptr);
3773 inline space manage_copy(__isl_keep isl_space *ptr);
3775 class space {
3776 friend inline space manage(__isl_take isl_space *ptr);
3777 friend inline space manage_copy(__isl_keep isl_space *ptr);
3779 protected:
3780 isl_space *ptr = nullptr;
3782 inline explicit space(__isl_take isl_space *ptr);
3784 public:
3785 inline /* implicit */ space();
3786 inline /* implicit */ space(const space &obj);
3787 inline explicit space(isl::checked::ctx ctx, const std::string &str);
3788 inline space &operator=(space obj);
3789 inline ~space();
3790 inline __isl_give isl_space *copy() const &;
3791 inline __isl_give isl_space *copy() && = delete;
3792 inline __isl_keep isl_space *get() const;
3793 inline __isl_give isl_space *release();
3794 inline bool is_null() const;
3795 inline isl::checked::ctx ctx() const;
3797 inline isl::checked::space add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const;
3798 inline isl::checked::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
3799 inline isl::checked::space add_param(isl::checked::id id) const;
3800 inline isl::checked::space add_param(const std::string &id) const;
3801 inline isl::checked::space add_unnamed_tuple(unsigned int dim) const;
3802 inline isl::checked::space curry() const;
3803 inline isl::checked::space domain() const;
3804 inline isl::checked::multi_aff domain_map_multi_aff() const;
3805 inline isl::checked::pw_multi_aff domain_map_pw_multi_aff() const;
3806 inline isl::checked::space domain_reverse() const;
3807 inline isl::checked::id domain_tuple_id() const;
3808 inline isl::checked::id get_domain_tuple_id() const;
3809 inline isl::checked::space drop_all_params() const;
3810 inline isl::checked::space flatten_domain() const;
3811 inline isl::checked::space flatten_range() const;
3812 inline boolean has_domain_tuple_id() const;
3813 inline boolean has_range_tuple_id() const;
3814 inline isl::checked::multi_aff identity_multi_aff_on_domain() const;
3815 inline isl::checked::multi_pw_aff identity_multi_pw_aff_on_domain() const;
3816 inline isl::checked::pw_multi_aff identity_pw_multi_aff_on_domain() const;
3817 inline boolean is_equal(const isl::checked::space &space2) const;
3818 inline boolean is_wrapping() const;
3819 inline isl::checked::space map_from_set() const;
3820 inline isl::checked::multi_aff multi_aff(isl::checked::aff_list list) const;
3821 inline isl::checked::multi_aff multi_aff_on_domain(isl::checked::multi_val mv) const;
3822 inline isl::checked::multi_id multi_id(isl::checked::id_list list) const;
3823 inline isl::checked::multi_pw_aff multi_pw_aff(isl::checked::pw_aff_list list) const;
3824 inline isl::checked::multi_union_pw_aff multi_union_pw_aff(isl::checked::union_pw_aff_list list) const;
3825 inline isl::checked::multi_val multi_val(isl::checked::val_list list) const;
3826 inline isl::checked::aff param_aff_on_domain(isl::checked::id id) const;
3827 inline isl::checked::aff param_aff_on_domain(const std::string &id) const;
3828 inline isl::checked::space params() const;
3829 inline isl::checked::space product(isl::checked::space right) const;
3830 inline isl::checked::space range() const;
3831 inline isl::checked::multi_aff range_map_multi_aff() const;
3832 inline isl::checked::pw_multi_aff range_map_pw_multi_aff() const;
3833 inline isl::checked::space range_reverse() const;
3834 inline isl::checked::id range_tuple_id() const;
3835 inline isl::checked::id get_range_tuple_id() const;
3836 inline isl::checked::space reverse() const;
3837 inline isl::checked::space set_domain_tuple(isl::checked::id id) const;
3838 inline isl::checked::space set_domain_tuple(const std::string &id) const;
3839 inline isl::checked::space set_range_tuple(isl::checked::id id) const;
3840 inline isl::checked::space set_range_tuple(const std::string &id) const;
3841 inline isl::checked::space uncurry() const;
3842 static inline isl::checked::space unit(isl::checked::ctx ctx);
3843 inline isl::checked::map universe_map() const;
3844 inline isl::checked::set universe_set() const;
3845 inline isl::checked::space unwrap() const;
3846 inline isl::checked::space wrap() const;
3847 inline isl::checked::space wrapped_reverse() const;
3848 inline isl::checked::aff zero_aff_on_domain() const;
3849 inline isl::checked::multi_aff zero_multi_aff() const;
3850 inline isl::checked::multi_pw_aff zero_multi_pw_aff() const;
3851 inline isl::checked::multi_union_pw_aff zero_multi_union_pw_aff() const;
3852 inline isl::checked::multi_val zero_multi_val() const;
3855 // declarations for isl::union_access_info
3856 inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3857 inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3859 class union_access_info {
3860 friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3861 friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3863 protected:
3864 isl_union_access_info *ptr = nullptr;
3866 inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
3868 public:
3869 inline /* implicit */ union_access_info();
3870 inline /* implicit */ union_access_info(const union_access_info &obj);
3871 inline explicit union_access_info(isl::checked::union_map sink);
3872 inline union_access_info &operator=(union_access_info obj);
3873 inline ~union_access_info();
3874 inline __isl_give isl_union_access_info *copy() const &;
3875 inline __isl_give isl_union_access_info *copy() && = delete;
3876 inline __isl_keep isl_union_access_info *get() const;
3877 inline __isl_give isl_union_access_info *release();
3878 inline bool is_null() const;
3879 inline isl::checked::ctx ctx() const;
3881 inline isl::checked::union_flow compute_flow() const;
3882 inline isl::checked::union_access_info set_kill(isl::checked::union_map kill) const;
3883 inline isl::checked::union_access_info set_may_source(isl::checked::union_map may_source) const;
3884 inline isl::checked::union_access_info set_must_source(isl::checked::union_map must_source) const;
3885 inline isl::checked::union_access_info set_schedule(isl::checked::schedule schedule) const;
3886 inline isl::checked::union_access_info set_schedule_map(isl::checked::union_map schedule_map) const;
3889 // declarations for isl::union_flow
3890 inline union_flow manage(__isl_take isl_union_flow *ptr);
3891 inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3893 class union_flow {
3894 friend inline union_flow manage(__isl_take isl_union_flow *ptr);
3895 friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3897 protected:
3898 isl_union_flow *ptr = nullptr;
3900 inline explicit union_flow(__isl_take isl_union_flow *ptr);
3902 public:
3903 inline /* implicit */ union_flow();
3904 inline /* implicit */ union_flow(const union_flow &obj);
3905 inline union_flow &operator=(union_flow obj);
3906 inline ~union_flow();
3907 inline __isl_give isl_union_flow *copy() const &;
3908 inline __isl_give isl_union_flow *copy() && = delete;
3909 inline __isl_keep isl_union_flow *get() const;
3910 inline __isl_give isl_union_flow *release();
3911 inline bool is_null() const;
3912 inline isl::checked::ctx ctx() const;
3914 inline isl::checked::union_map full_may_dependence() const;
3915 inline isl::checked::union_map get_full_may_dependence() const;
3916 inline isl::checked::union_map full_must_dependence() const;
3917 inline isl::checked::union_map get_full_must_dependence() const;
3918 inline isl::checked::union_map may_dependence() const;
3919 inline isl::checked::union_map get_may_dependence() const;
3920 inline isl::checked::union_map may_no_source() const;
3921 inline isl::checked::union_map get_may_no_source() const;
3922 inline isl::checked::union_map must_dependence() const;
3923 inline isl::checked::union_map get_must_dependence() const;
3924 inline isl::checked::union_map must_no_source() const;
3925 inline isl::checked::union_map get_must_no_source() const;
3928 // declarations for isl::union_map
3929 inline union_map manage(__isl_take isl_union_map *ptr);
3930 inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3932 class union_map {
3933 friend inline union_map manage(__isl_take isl_union_map *ptr);
3934 friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3936 protected:
3937 isl_union_map *ptr = nullptr;
3939 inline explicit union_map(__isl_take isl_union_map *ptr);
3941 public:
3942 inline /* implicit */ union_map();
3943 inline /* implicit */ union_map(const union_map &obj);
3944 inline /* implicit */ union_map(isl::checked::basic_map bmap);
3945 inline /* implicit */ union_map(isl::checked::map map);
3946 inline explicit union_map(isl::checked::ctx ctx, const std::string &str);
3947 inline union_map &operator=(union_map obj);
3948 inline ~union_map();
3949 inline __isl_give isl_union_map *copy() const &;
3950 inline __isl_give isl_union_map *copy() && = delete;
3951 inline __isl_keep isl_union_map *get() const;
3952 inline __isl_give isl_union_map *release();
3953 inline bool is_null() const;
3954 inline isl::checked::ctx ctx() const;
3956 inline isl::checked::union_map affine_hull() const;
3957 inline isl::checked::union_map apply_domain(isl::checked::union_map umap2) const;
3958 inline isl::checked::union_map apply_range(isl::checked::union_map umap2) const;
3959 inline isl::checked::map as_map() const;
3960 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
3961 inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
3962 inline isl::checked::union_set bind_range(isl::checked::multi_id tuple) const;
3963 inline isl::checked::union_map coalesce() const;
3964 inline isl::checked::union_map compute_divs() const;
3965 inline isl::checked::union_map curry() const;
3966 inline isl::checked::union_set deltas() const;
3967 inline isl::checked::union_map detect_equalities() const;
3968 inline isl::checked::union_set domain() const;
3969 inline isl::checked::union_map domain_factor_domain() const;
3970 inline isl::checked::union_map domain_factor_range() const;
3971 inline isl::checked::union_map domain_map() const;
3972 inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
3973 inline isl::checked::union_map domain_product(isl::checked::union_map umap2) const;
3974 inline isl::checked::union_map domain_reverse() const;
3975 inline isl::checked::union_map drop_unused_params() const;
3976 static inline isl::checked::union_map empty(isl::checked::ctx ctx);
3977 inline isl::checked::union_map eq_at(isl::checked::multi_union_pw_aff mupa) const;
3978 inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
3979 inline isl::checked::map extract_map(isl::checked::space space) const;
3980 inline isl::checked::union_map factor_domain() const;
3981 inline isl::checked::union_map factor_range() const;
3982 inline isl::checked::union_map fixed_power(isl::checked::val exp) const;
3983 inline isl::checked::union_map fixed_power(long exp) const;
3984 inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
3985 static inline isl::checked::union_map from(isl::checked::multi_union_pw_aff mupa);
3986 static inline isl::checked::union_map from(isl::checked::union_pw_multi_aff upma);
3987 static inline isl::checked::union_map from_domain(isl::checked::union_set uset);
3988 static inline isl::checked::union_map from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range);
3989 static inline isl::checked::union_map from_range(isl::checked::union_set uset);
3990 inline isl::checked::union_map gist(isl::checked::union_map context) const;
3991 inline isl::checked::union_map gist_domain(isl::checked::union_set uset) const;
3992 inline isl::checked::union_map gist_params(isl::checked::set set) const;
3993 inline isl::checked::union_map gist_range(isl::checked::union_set uset) const;
3994 inline isl::checked::union_map intersect(isl::checked::union_map umap2) const;
3995 inline isl::checked::union_map intersect_domain(isl::checked::space space) const;
3996 inline isl::checked::union_map intersect_domain(isl::checked::union_set uset) const;
3997 inline isl::checked::union_map intersect_domain_factor_domain(isl::checked::union_map factor) const;
3998 inline isl::checked::union_map intersect_domain_factor_range(isl::checked::union_map factor) const;
3999 inline isl::checked::union_map intersect_domain_wrapped_domain(isl::checked::union_set domain) const;
4000 inline isl::checked::union_map intersect_params(isl::checked::set set) const;
4001 inline isl::checked::union_map intersect_range(isl::checked::space space) const;
4002 inline isl::checked::union_map intersect_range(isl::checked::union_set uset) const;
4003 inline isl::checked::union_map intersect_range_factor_domain(isl::checked::union_map factor) const;
4004 inline isl::checked::union_map intersect_range_factor_range(isl::checked::union_map factor) const;
4005 inline isl::checked::union_map intersect_range_wrapped_domain(isl::checked::union_set domain) const;
4006 inline boolean is_bijective() const;
4007 inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
4008 inline boolean is_empty() const;
4009 inline boolean is_equal(const isl::checked::union_map &umap2) const;
4010 inline boolean is_injective() const;
4011 inline boolean is_single_valued() const;
4012 inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
4013 inline boolean is_subset(const isl::checked::union_map &umap2) const;
4014 inline boolean isa_map() const;
4015 inline isl::checked::union_map lexmax() const;
4016 inline isl::checked::union_map lexmin() const;
4017 inline isl::checked::map_list map_list() const;
4018 inline isl::checked::map_list get_map_list() const;
4019 inline isl::checked::set params() const;
4020 inline isl::checked::union_map polyhedral_hull() const;
4021 inline isl::checked::union_map preimage_domain(isl::checked::multi_aff ma) const;
4022 inline isl::checked::union_map preimage_domain(isl::checked::multi_pw_aff mpa) const;
4023 inline isl::checked::union_map preimage_domain(isl::checked::pw_multi_aff pma) const;
4024 inline isl::checked::union_map preimage_domain(isl::checked::union_pw_multi_aff upma) const;
4025 inline isl::checked::union_map preimage_range(isl::checked::multi_aff ma) const;
4026 inline isl::checked::union_map preimage_range(isl::checked::pw_multi_aff pma) const;
4027 inline isl::checked::union_map preimage_range(isl::checked::union_pw_multi_aff upma) const;
4028 inline isl::checked::union_map product(isl::checked::union_map umap2) const;
4029 inline isl::checked::union_map project_out_all_params() const;
4030 inline isl::checked::union_map project_out_param(isl::checked::id id) const;
4031 inline isl::checked::union_map project_out_param(const std::string &id) const;
4032 inline isl::checked::union_map project_out_param(isl::checked::id_list list) const;
4033 inline isl::checked::union_set range() const;
4034 inline isl::checked::union_map range_factor_domain() const;
4035 inline isl::checked::union_map range_factor_range() const;
4036 inline isl::checked::union_map range_map() const;
4037 inline isl::checked::union_map range_product(isl::checked::union_map umap2) const;
4038 inline isl::checked::union_map range_reverse() const;
4039 inline isl::checked::union_map reverse() const;
4040 inline isl::checked::space space() const;
4041 inline isl::checked::space get_space() const;
4042 inline isl::checked::union_map subtract(isl::checked::union_map umap2) const;
4043 inline isl::checked::union_map subtract_domain(isl::checked::union_set dom) const;
4044 inline isl::checked::union_map subtract_range(isl::checked::union_set dom) const;
4045 inline isl::checked::union_map uncurry() const;
4046 inline isl::checked::union_map unite(isl::checked::union_map umap2) const;
4047 inline isl::checked::union_map universe() const;
4048 inline isl::checked::union_set wrap() const;
4049 inline isl::checked::union_map zip() const;
4052 // declarations for isl::union_pw_aff
4053 inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
4054 inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
4056 class union_pw_aff {
4057 friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
4058 friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
4060 protected:
4061 isl_union_pw_aff *ptr = nullptr;
4063 inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
4065 public:
4066 inline /* implicit */ union_pw_aff();
4067 inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
4068 inline /* implicit */ union_pw_aff(isl::checked::aff aff);
4069 inline /* implicit */ union_pw_aff(isl::checked::pw_aff pa);
4070 inline explicit union_pw_aff(isl::checked::ctx ctx, const std::string &str);
4071 inline union_pw_aff &operator=(union_pw_aff obj);
4072 inline ~union_pw_aff();
4073 inline __isl_give isl_union_pw_aff *copy() const &;
4074 inline __isl_give isl_union_pw_aff *copy() && = delete;
4075 inline __isl_keep isl_union_pw_aff *get() const;
4076 inline __isl_give isl_union_pw_aff *release();
4077 inline bool is_null() const;
4078 inline isl::checked::ctx ctx() const;
4080 inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
4081 inline isl::checked::union_pw_aff add(isl::checked::union_pw_aff upa2) const;
4082 inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
4083 inline isl::checked::union_pw_aff add(const isl::checked::aff &upa2) const;
4084 inline isl::checked::union_pw_aff add(const isl::checked::pw_aff &upa2) const;
4085 inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
4086 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
4087 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
4088 inline isl::checked::union_map as_union_map() const;
4089 inline isl::checked::union_pw_aff at(int pos) const;
4090 inline isl::checked::union_set bind(const isl::checked::multi_id &tuple) const;
4091 inline isl::checked::union_set bind(isl::checked::id id) const;
4092 inline isl::checked::union_set bind(const std::string &id) const;
4093 inline isl::checked::union_pw_aff coalesce() const;
4094 inline isl::checked::union_set domain() const;
4095 inline isl::checked::union_pw_aff drop_unused_params() const;
4096 inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
4097 inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
4098 inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
4099 inline isl::checked::union_pw_aff gist(isl::checked::union_set context) const;
4100 inline isl::checked::multi_union_pw_aff gist_params(const isl::checked::set &context) const;
4101 inline boolean has_range_tuple_id() const;
4102 inline isl::checked::union_pw_aff intersect_domain(isl::checked::space space) const;
4103 inline isl::checked::union_pw_aff intersect_domain(isl::checked::union_set uset) const;
4104 inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
4105 inline isl::checked::union_pw_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
4106 inline isl::checked::union_pw_aff intersect_params(isl::checked::set set) const;
4107 inline boolean involves_locals() const;
4108 inline boolean involves_nan() const;
4109 inline boolean isa_pw_multi_aff() const;
4110 inline isl::checked::union_pw_aff_list list() const;
4111 inline isl::checked::multi_union_pw_aff neg() const;
4112 inline boolean plain_is_empty() const;
4113 inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
4114 inline boolean plain_is_equal(const isl::checked::union_pw_aff &upa2) const;
4115 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
4116 inline boolean plain_is_equal(const isl::checked::aff &upa2) const;
4117 inline boolean plain_is_equal(const isl::checked::pw_aff &upa2) const;
4118 inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
4119 inline isl::checked::union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
4120 inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
4121 inline isl::checked::union_pw_multi_aff range_factor_domain() const;
4122 inline isl::checked::union_pw_multi_aff range_factor_range() const;
4123 inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
4124 inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
4125 inline isl::checked::id range_tuple_id() const;
4126 inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
4127 inline isl::checked::multi_union_pw_aff scale(const isl::checked::multi_val &mv) const;
4128 inline isl::checked::multi_union_pw_aff scale(const isl::checked::val &v) const;
4129 inline isl::checked::multi_union_pw_aff scale(long v) const;
4130 inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::multi_val &mv) const;
4131 inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::val &v) const;
4132 inline isl::checked::multi_union_pw_aff scale_down(long v) const;
4133 inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
4134 inline isl::checked::multi_union_pw_aff set_range_tuple(const isl::checked::id &id) const;
4135 inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
4136 inline class size size() const;
4137 inline isl::checked::space space() const;
4138 inline isl::checked::space get_space() const;
4139 inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
4140 inline isl::checked::union_pw_aff sub(isl::checked::union_pw_aff upa2) const;
4141 inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
4142 inline isl::checked::union_pw_aff sub(const isl::checked::aff &upa2) const;
4143 inline isl::checked::union_pw_aff sub(const isl::checked::pw_aff &upa2) const;
4144 inline isl::checked::union_pw_aff subtract_domain(isl::checked::space space) const;
4145 inline isl::checked::union_pw_aff subtract_domain(isl::checked::union_set uset) const;
4146 inline isl::checked::union_pw_aff_list to_list() const;
4147 inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
4148 inline isl::checked::union_pw_aff union_add(isl::checked::union_pw_aff upa2) const;
4149 inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
4150 inline isl::checked::union_pw_aff union_add(const isl::checked::aff &upa2) const;
4151 inline isl::checked::union_pw_aff union_add(const isl::checked::pw_aff &upa2) const;
4154 // declarations for isl::union_pw_aff_list
4155 inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4156 inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4158 class union_pw_aff_list {
4159 friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
4160 friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
4162 protected:
4163 isl_union_pw_aff_list *ptr = nullptr;
4165 inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
4167 public:
4168 inline /* implicit */ union_pw_aff_list();
4169 inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
4170 inline explicit union_pw_aff_list(isl::checked::ctx ctx, int n);
4171 inline explicit union_pw_aff_list(isl::checked::union_pw_aff el);
4172 inline explicit union_pw_aff_list(isl::checked::ctx ctx, const std::string &str);
4173 inline union_pw_aff_list &operator=(union_pw_aff_list obj);
4174 inline ~union_pw_aff_list();
4175 inline __isl_give isl_union_pw_aff_list *copy() const &;
4176 inline __isl_give isl_union_pw_aff_list *copy() && = delete;
4177 inline __isl_keep isl_union_pw_aff_list *get() const;
4178 inline __isl_give isl_union_pw_aff_list *release();
4179 inline bool is_null() const;
4180 inline isl::checked::ctx ctx() const;
4182 inline isl::checked::union_pw_aff_list add(isl::checked::union_pw_aff el) const;
4183 inline isl::checked::union_pw_aff at(int index) const;
4184 inline isl::checked::union_pw_aff get_at(int index) const;
4185 inline isl::checked::union_pw_aff_list clear() const;
4186 inline isl::checked::union_pw_aff_list concat(isl::checked::union_pw_aff_list list2) const;
4187 inline isl::checked::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
4188 inline stat foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const;
4189 inline stat foreach_scc(const std::function<boolean(isl::checked::union_pw_aff, isl::checked::union_pw_aff)> &follows, const std::function<stat(isl::checked::union_pw_aff_list)> &fn) const;
4190 inline isl::checked::union_pw_aff_list insert(unsigned int pos, isl::checked::union_pw_aff el) const;
4191 inline isl::checked::union_pw_aff_list set_at(int index, isl::checked::union_pw_aff el) const;
4192 inline class size size() const;
4195 // declarations for isl::union_pw_multi_aff
4196 inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
4197 inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
4199 class union_pw_multi_aff {
4200 friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
4201 friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
4203 protected:
4204 isl_union_pw_multi_aff *ptr = nullptr;
4206 inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
4208 public:
4209 inline /* implicit */ union_pw_multi_aff();
4210 inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
4211 inline /* implicit */ union_pw_multi_aff(isl::checked::multi_aff ma);
4212 inline /* implicit */ union_pw_multi_aff(isl::checked::pw_multi_aff pma);
4213 inline /* implicit */ union_pw_multi_aff(isl::checked::union_pw_aff upa);
4214 inline explicit union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
4215 inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
4216 inline ~union_pw_multi_aff();
4217 inline __isl_give isl_union_pw_multi_aff *copy() const &;
4218 inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
4219 inline __isl_keep isl_union_pw_multi_aff *get() const;
4220 inline __isl_give isl_union_pw_multi_aff *release();
4221 inline bool is_null() const;
4222 inline isl::checked::ctx ctx() const;
4224 inline isl::checked::union_pw_multi_aff add(isl::checked::union_pw_multi_aff upma2) const;
4225 inline isl::checked::union_pw_multi_aff apply(isl::checked::union_pw_multi_aff upma2) const;
4226 inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
4227 inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
4228 inline isl::checked::union_map as_union_map() const;
4229 inline isl::checked::union_pw_multi_aff coalesce() const;
4230 inline isl::checked::union_set domain() const;
4231 inline isl::checked::union_pw_multi_aff drop_unused_params() const;
4232 static inline isl::checked::union_pw_multi_aff empty(isl::checked::ctx ctx);
4233 inline isl::checked::pw_multi_aff extract_pw_multi_aff(isl::checked::space space) const;
4234 inline isl::checked::union_pw_multi_aff flat_range_product(isl::checked::union_pw_multi_aff upma2) const;
4235 inline isl::checked::union_pw_multi_aff gist(isl::checked::union_set context) const;
4236 inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::space space) const;
4237 inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::union_set uset) const;
4238 inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
4239 inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
4240 inline isl::checked::union_pw_multi_aff intersect_params(isl::checked::set set) const;
4241 inline boolean involves_locals() const;
4242 inline boolean isa_pw_multi_aff() const;
4243 inline boolean plain_is_empty() const;
4244 inline boolean plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const;
4245 inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const;
4246 inline isl::checked::union_pw_multi_aff pullback(isl::checked::union_pw_multi_aff upma2) const;
4247 inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
4248 inline isl::checked::pw_multi_aff_list get_pw_multi_aff_list() const;
4249 inline isl::checked::union_pw_multi_aff range_factor_domain() const;
4250 inline isl::checked::union_pw_multi_aff range_factor_range() const;
4251 inline isl::checked::union_pw_multi_aff range_product(isl::checked::union_pw_multi_aff upma2) const;
4252 inline isl::checked::space space() const;
4253 inline isl::checked::space get_space() const;
4254 inline isl::checked::union_pw_multi_aff sub(isl::checked::union_pw_multi_aff upma2) const;
4255 inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::space space) const;
4256 inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::union_set uset) const;
4257 inline isl::checked::union_pw_multi_aff union_add(isl::checked::union_pw_multi_aff upma2) const;
4260 // declarations for isl::union_set
4261 inline union_set manage(__isl_take isl_union_set *ptr);
4262 inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4264 class union_set {
4265 friend inline union_set manage(__isl_take isl_union_set *ptr);
4266 friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4268 protected:
4269 isl_union_set *ptr = nullptr;
4271 inline explicit union_set(__isl_take isl_union_set *ptr);
4273 public:
4274 inline /* implicit */ union_set();
4275 inline /* implicit */ union_set(const union_set &obj);
4276 inline /* implicit */ union_set(isl::checked::basic_set bset);
4277 inline /* implicit */ union_set(isl::checked::point pnt);
4278 inline /* implicit */ union_set(isl::checked::set set);
4279 inline explicit union_set(isl::checked::ctx ctx, const std::string &str);
4280 inline union_set &operator=(union_set obj);
4281 inline ~union_set();
4282 inline __isl_give isl_union_set *copy() const &;
4283 inline __isl_give isl_union_set *copy() && = delete;
4284 inline __isl_keep isl_union_set *get() const;
4285 inline __isl_give isl_union_set *release();
4286 inline bool is_null() const;
4287 inline isl::checked::ctx ctx() const;
4289 inline isl::checked::union_set affine_hull() const;
4290 inline isl::checked::union_set apply(isl::checked::union_map umap) const;
4291 inline isl::checked::set as_set() const;
4292 inline isl::checked::union_set coalesce() const;
4293 inline isl::checked::union_set compute_divs() const;
4294 inline isl::checked::union_set detect_equalities() const;
4295 inline isl::checked::union_set drop_unused_params() const;
4296 static inline isl::checked::union_set empty(isl::checked::ctx ctx);
4297 inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
4298 inline isl::checked::set extract_set(isl::checked::space space) const;
4299 inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
4300 inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
4301 inline isl::checked::union_set gist(isl::checked::union_set context) const;
4302 inline isl::checked::union_set gist_params(isl::checked::set set) const;
4303 inline isl::checked::union_map identity() const;
4304 inline isl::checked::union_set intersect(isl::checked::union_set uset2) const;
4305 inline isl::checked::union_set intersect_params(isl::checked::set set) const;
4306 inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
4307 inline boolean is_empty() const;
4308 inline boolean is_equal(const isl::checked::union_set &uset2) const;
4309 inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
4310 inline boolean is_subset(const isl::checked::union_set &uset2) const;
4311 inline boolean isa_set() const;
4312 inline isl::checked::union_set lexmax() const;
4313 inline isl::checked::union_set lexmin() const;
4314 inline isl::checked::set params() const;
4315 inline isl::checked::union_set polyhedral_hull() const;
4316 inline isl::checked::union_set preimage(isl::checked::multi_aff ma) const;
4317 inline isl::checked::union_set preimage(isl::checked::pw_multi_aff pma) const;
4318 inline isl::checked::union_set preimage(isl::checked::union_pw_multi_aff upma) const;
4319 inline isl::checked::union_set project_out_all_params() const;
4320 inline isl::checked::point sample_point() const;
4321 inline isl::checked::set_list set_list() const;
4322 inline isl::checked::set_list get_set_list() const;
4323 inline isl::checked::space space() const;
4324 inline isl::checked::space get_space() const;
4325 inline isl::checked::union_set subtract(isl::checked::union_set uset2) const;
4326 inline isl::checked::union_set_list to_list() const;
4327 inline isl::checked::union_set unite(isl::checked::union_set uset2) const;
4328 inline isl::checked::union_set universe() const;
4329 inline isl::checked::union_map unwrap() const;
4332 // declarations for isl::union_set_list
4333 inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4334 inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4336 class union_set_list {
4337 friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4338 friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4340 protected:
4341 isl_union_set_list *ptr = nullptr;
4343 inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
4345 public:
4346 inline /* implicit */ union_set_list();
4347 inline /* implicit */ union_set_list(const union_set_list &obj);
4348 inline explicit union_set_list(isl::checked::ctx ctx, int n);
4349 inline explicit union_set_list(isl::checked::union_set el);
4350 inline explicit union_set_list(isl::checked::ctx ctx, const std::string &str);
4351 inline union_set_list &operator=(union_set_list obj);
4352 inline ~union_set_list();
4353 inline __isl_give isl_union_set_list *copy() const &;
4354 inline __isl_give isl_union_set_list *copy() && = delete;
4355 inline __isl_keep isl_union_set_list *get() const;
4356 inline __isl_give isl_union_set_list *release();
4357 inline bool is_null() const;
4358 inline isl::checked::ctx ctx() const;
4360 inline isl::checked::union_set_list add(isl::checked::union_set el) const;
4361 inline isl::checked::union_set at(int index) const;
4362 inline isl::checked::union_set get_at(int index) const;
4363 inline isl::checked::union_set_list clear() const;
4364 inline isl::checked::union_set_list concat(isl::checked::union_set_list list2) const;
4365 inline isl::checked::union_set_list drop(unsigned int first, unsigned int n) const;
4366 inline stat foreach(const std::function<stat(isl::checked::union_set)> &fn) const;
4367 inline stat foreach_scc(const std::function<boolean(isl::checked::union_set, isl::checked::union_set)> &follows, const std::function<stat(isl::checked::union_set_list)> &fn) const;
4368 inline isl::checked::union_set_list insert(unsigned int pos, isl::checked::union_set el) const;
4369 inline isl::checked::union_set_list set_at(int index, isl::checked::union_set el) const;
4370 inline class size size() const;
4373 // declarations for isl::val
4374 inline val manage(__isl_take isl_val *ptr);
4375 inline val manage_copy(__isl_keep isl_val *ptr);
4377 class val {
4378 friend inline val manage(__isl_take isl_val *ptr);
4379 friend inline val manage_copy(__isl_keep isl_val *ptr);
4381 protected:
4382 isl_val *ptr = nullptr;
4384 inline explicit val(__isl_take isl_val *ptr);
4386 public:
4387 inline /* implicit */ val();
4388 inline /* implicit */ val(const val &obj);
4389 inline explicit val(isl::checked::ctx ctx, long i);
4390 inline explicit val(isl::checked::ctx ctx, const std::string &str);
4391 inline val &operator=(val obj);
4392 inline ~val();
4393 inline __isl_give isl_val *copy() const &;
4394 inline __isl_give isl_val *copy() && = delete;
4395 inline __isl_keep isl_val *get() const;
4396 inline __isl_give isl_val *release();
4397 inline bool is_null() const;
4398 inline isl::checked::ctx ctx() const;
4400 inline isl::checked::val abs() const;
4401 inline boolean abs_eq(const isl::checked::val &v2) const;
4402 inline boolean abs_eq(long v2) const;
4403 inline isl::checked::val add(isl::checked::val v2) const;
4404 inline isl::checked::val add(long v2) const;
4405 inline isl::checked::val ceil() const;
4406 inline int cmp_si(long i) const;
4407 inline long den_si() const;
4408 inline long get_den_si() const;
4409 inline isl::checked::val div(isl::checked::val v2) const;
4410 inline isl::checked::val div(long v2) const;
4411 inline boolean eq(const isl::checked::val &v2) const;
4412 inline boolean eq(long v2) const;
4413 inline isl::checked::val floor() const;
4414 inline isl::checked::val gcd(isl::checked::val v2) const;
4415 inline isl::checked::val gcd(long v2) const;
4416 inline boolean ge(const isl::checked::val &v2) const;
4417 inline boolean ge(long v2) const;
4418 inline boolean gt(const isl::checked::val &v2) const;
4419 inline boolean gt(long v2) const;
4420 static inline isl::checked::val infty(isl::checked::ctx ctx);
4421 inline isl::checked::val inv() const;
4422 inline boolean is_divisible_by(const isl::checked::val &v2) const;
4423 inline boolean is_divisible_by(long v2) const;
4424 inline boolean is_infty() const;
4425 inline boolean is_int() const;
4426 inline boolean is_nan() const;
4427 inline boolean is_neg() const;
4428 inline boolean is_neginfty() const;
4429 inline boolean is_negone() const;
4430 inline boolean is_nonneg() const;
4431 inline boolean is_nonpos() const;
4432 inline boolean is_one() const;
4433 inline boolean is_pos() const;
4434 inline boolean is_rat() const;
4435 inline boolean is_zero() const;
4436 inline boolean le(const isl::checked::val &v2) const;
4437 inline boolean le(long v2) const;
4438 inline boolean lt(const isl::checked::val &v2) const;
4439 inline boolean lt(long v2) const;
4440 inline isl::checked::val max(isl::checked::val v2) const;
4441 inline isl::checked::val max(long v2) const;
4442 inline isl::checked::val min(isl::checked::val v2) const;
4443 inline isl::checked::val min(long v2) const;
4444 inline isl::checked::val mod(isl::checked::val v2) const;
4445 inline isl::checked::val mod(long v2) const;
4446 inline isl::checked::val mul(isl::checked::val v2) const;
4447 inline isl::checked::val mul(long v2) const;
4448 static inline isl::checked::val nan(isl::checked::ctx ctx);
4449 inline boolean ne(const isl::checked::val &v2) const;
4450 inline boolean ne(long v2) const;
4451 inline isl::checked::val neg() const;
4452 static inline isl::checked::val neginfty(isl::checked::ctx ctx);
4453 static inline isl::checked::val negone(isl::checked::ctx ctx);
4454 inline long num_si() const;
4455 inline long get_num_si() const;
4456 static inline isl::checked::val one(isl::checked::ctx ctx);
4457 inline isl::checked::val pow2() const;
4458 inline int sgn() const;
4459 inline isl::checked::val sub(isl::checked::val v2) const;
4460 inline isl::checked::val sub(long v2) const;
4461 inline isl::checked::val_list to_list() const;
4462 inline isl::checked::val trunc() const;
4463 static inline isl::checked::val zero(isl::checked::ctx ctx);
4466 // declarations for isl::val_list
4467 inline val_list manage(__isl_take isl_val_list *ptr);
4468 inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4470 class val_list {
4471 friend inline val_list manage(__isl_take isl_val_list *ptr);
4472 friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4474 protected:
4475 isl_val_list *ptr = nullptr;
4477 inline explicit val_list(__isl_take isl_val_list *ptr);
4479 public:
4480 inline /* implicit */ val_list();
4481 inline /* implicit */ val_list(const val_list &obj);
4482 inline explicit val_list(isl::checked::ctx ctx, int n);
4483 inline explicit val_list(isl::checked::val el);
4484 inline explicit val_list(isl::checked::ctx ctx, const std::string &str);
4485 inline val_list &operator=(val_list obj);
4486 inline ~val_list();
4487 inline __isl_give isl_val_list *copy() const &;
4488 inline __isl_give isl_val_list *copy() && = delete;
4489 inline __isl_keep isl_val_list *get() const;
4490 inline __isl_give isl_val_list *release();
4491 inline bool is_null() const;
4492 inline isl::checked::ctx ctx() const;
4494 inline isl::checked::val_list add(isl::checked::val el) const;
4495 inline isl::checked::val_list add(long el) const;
4496 inline isl::checked::val at(int index) const;
4497 inline isl::checked::val get_at(int index) const;
4498 inline isl::checked::val_list clear() const;
4499 inline isl::checked::val_list concat(isl::checked::val_list list2) const;
4500 inline isl::checked::val_list drop(unsigned int first, unsigned int n) const;
4501 inline stat foreach(const std::function<stat(isl::checked::val)> &fn) const;
4502 inline stat foreach_scc(const std::function<boolean(isl::checked::val, isl::checked::val)> &follows, const std::function<stat(isl::checked::val_list)> &fn) const;
4503 inline isl::checked::val_list insert(unsigned int pos, isl::checked::val el) const;
4504 inline isl::checked::val_list insert(unsigned int pos, long el) const;
4505 inline isl::checked::val_list set_at(int index, isl::checked::val el) const;
4506 inline isl::checked::val_list set_at(int index, long el) const;
4507 inline class size size() const;
4510 // implementations for isl::aff
4511 aff manage(__isl_take isl_aff *ptr) {
4512 return aff(ptr);
4514 aff manage_copy(__isl_keep isl_aff *ptr) {
4515 ptr = isl_aff_copy(ptr);
4516 return aff(ptr);
4519 aff::aff(__isl_take isl_aff *ptr)
4520 : ptr(ptr) {}
4522 aff::aff()
4523 : ptr(nullptr) {}
4525 aff::aff(const aff &obj)
4526 : ptr(nullptr)
4528 ptr = obj.copy();
4531 aff::aff(isl::checked::ctx ctx, const std::string &str)
4533 auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
4534 ptr = res;
4537 aff &aff::operator=(aff obj) {
4538 std::swap(this->ptr, obj.ptr);
4539 return *this;
4542 aff::~aff() {
4543 if (ptr)
4544 isl_aff_free(ptr);
4547 __isl_give isl_aff *aff::copy() const & {
4548 return isl_aff_copy(ptr);
4551 __isl_keep isl_aff *aff::get() const {
4552 return ptr;
4555 __isl_give isl_aff *aff::release() {
4556 isl_aff *tmp = ptr;
4557 ptr = nullptr;
4558 return tmp;
4561 bool aff::is_null() const {
4562 return ptr == nullptr;
4565 isl::checked::ctx aff::ctx() const {
4566 return isl::checked::ctx(isl_aff_get_ctx(ptr));
4569 isl::checked::aff aff::add(isl::checked::aff aff2) const
4571 auto res = isl_aff_add(copy(), aff2.release());
4572 return manage(res);
4575 isl::checked::multi_aff aff::add(const isl::checked::multi_aff &multi2) const
4577 return isl::checked::multi_aff(*this).add(multi2);
4580 isl::checked::multi_pw_aff aff::add(const isl::checked::multi_pw_aff &multi2) const
4582 return isl::checked::pw_aff(*this).add(multi2);
4585 isl::checked::multi_union_pw_aff aff::add(const isl::checked::multi_union_pw_aff &multi2) const
4587 return isl::checked::pw_aff(*this).add(multi2);
4590 isl::checked::pw_aff aff::add(const isl::checked::pw_aff &pwaff2) const
4592 return isl::checked::pw_aff(*this).add(pwaff2);
4595 isl::checked::pw_multi_aff aff::add(const isl::checked::pw_multi_aff &pma2) const
4597 return isl::checked::pw_aff(*this).add(pma2);
4600 isl::checked::union_pw_aff aff::add(const isl::checked::union_pw_aff &upa2) const
4602 return isl::checked::pw_aff(*this).add(upa2);
4605 isl::checked::union_pw_multi_aff aff::add(const isl::checked::union_pw_multi_aff &upma2) const
4607 return isl::checked::pw_aff(*this).add(upma2);
4610 isl::checked::aff aff::add_constant(isl::checked::val v) const
4612 auto res = isl_aff_add_constant_val(copy(), v.release());
4613 return manage(res);
4616 isl::checked::aff aff::add_constant(long v) const
4618 return this->add_constant(isl::checked::val(ctx(), v));
4621 isl::checked::multi_aff aff::add_constant(const isl::checked::multi_val &mv) const
4623 return isl::checked::multi_aff(*this).add_constant(mv);
4626 isl::checked::union_pw_multi_aff aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
4628 return isl::checked::pw_aff(*this).apply(upma2);
4631 isl::checked::aff aff::as_aff() const
4633 return isl::checked::pw_aff(*this).as_aff();
4636 isl::checked::map aff::as_map() const
4638 return isl::checked::pw_aff(*this).as_map();
4641 isl::checked::multi_aff aff::as_multi_aff() const
4643 return isl::checked::pw_aff(*this).as_multi_aff();
4646 isl::checked::multi_union_pw_aff aff::as_multi_union_pw_aff() const
4648 return isl::checked::pw_aff(*this).as_multi_union_pw_aff();
4651 isl::checked::pw_multi_aff aff::as_pw_multi_aff() const
4653 return isl::checked::pw_aff(*this).as_pw_multi_aff();
4656 isl::checked::set aff::as_set() const
4658 return isl::checked::multi_aff(*this).as_set();
4661 isl::checked::union_map aff::as_union_map() const
4663 return isl::checked::pw_aff(*this).as_union_map();
4666 isl::checked::aff aff::at(int pos) const
4668 return isl::checked::multi_aff(*this).at(pos);
4671 isl::checked::basic_set aff::bind(isl::checked::id id) const
4673 auto res = isl_aff_bind_id(copy(), id.release());
4674 return manage(res);
4677 isl::checked::basic_set aff::bind(const std::string &id) const
4679 return this->bind(isl::checked::id(ctx(), id));
4682 isl::checked::basic_set aff::bind(const isl::checked::multi_id &tuple) const
4684 return isl::checked::multi_aff(*this).bind(tuple);
4687 isl::checked::pw_aff aff::bind_domain(const isl::checked::multi_id &tuple) const
4689 return isl::checked::pw_aff(*this).bind_domain(tuple);
4692 isl::checked::pw_aff aff::bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const
4694 return isl::checked::pw_aff(*this).bind_domain_wrapped_domain(tuple);
4697 isl::checked::aff aff::ceil() const
4699 auto res = isl_aff_ceil(copy());
4700 return manage(res);
4703 isl::checked::pw_aff aff::coalesce() const
4705 return isl::checked::pw_aff(*this).coalesce();
4708 isl::checked::pw_aff aff::cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const
4710 return isl::checked::pw_aff(*this).cond(pwaff_true, pwaff_false);
4713 isl::checked::multi_val aff::constant_multi_val() const
4715 return isl::checked::multi_aff(*this).constant_multi_val();
4718 isl::checked::val aff::constant_val() const
4720 auto res = isl_aff_get_constant_val(get());
4721 return manage(res);
4724 isl::checked::val aff::get_constant_val() const
4726 return constant_val();
4729 isl::checked::aff aff::div(isl::checked::aff aff2) const
4731 auto res = isl_aff_div(copy(), aff2.release());
4732 return manage(res);
4735 isl::checked::pw_aff aff::div(const isl::checked::pw_aff &pa2) const
4737 return isl::checked::pw_aff(*this).div(pa2);
4740 isl::checked::set aff::domain() const
4742 return isl::checked::pw_aff(*this).domain();
4745 isl::checked::aff aff::domain_reverse() const
4747 auto res = isl_aff_domain_reverse(copy());
4748 return manage(res);
4751 isl::checked::pw_aff aff::drop_unused_params() const
4753 return isl::checked::pw_aff(*this).drop_unused_params();
4756 isl::checked::set aff::eq_set(isl::checked::aff aff2) const
4758 auto res = isl_aff_eq_set(copy(), aff2.release());
4759 return manage(res);
4762 isl::checked::set aff::eq_set(const isl::checked::pw_aff &pwaff2) const
4764 return isl::checked::pw_aff(*this).eq_set(pwaff2);
4767 isl::checked::val aff::eval(isl::checked::point pnt) const
4769 auto res = isl_aff_eval(copy(), pnt.release());
4770 return manage(res);
4773 isl::checked::pw_multi_aff aff::extract_pw_multi_aff(const isl::checked::space &space) const
4775 return isl::checked::pw_aff(*this).extract_pw_multi_aff(space);
4778 isl::checked::multi_aff aff::flat_range_product(const isl::checked::multi_aff &multi2) const
4780 return isl::checked::multi_aff(*this).flat_range_product(multi2);
4783 isl::checked::multi_pw_aff aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
4785 return isl::checked::pw_aff(*this).flat_range_product(multi2);
4788 isl::checked::multi_union_pw_aff aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
4790 return isl::checked::pw_aff(*this).flat_range_product(multi2);
4793 isl::checked::pw_multi_aff aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
4795 return isl::checked::pw_aff(*this).flat_range_product(pma2);
4798 isl::checked::union_pw_multi_aff aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
4800 return isl::checked::pw_aff(*this).flat_range_product(upma2);
4803 isl::checked::aff aff::floor() const
4805 auto res = isl_aff_floor(copy());
4806 return manage(res);
4809 stat aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
4811 return isl::checked::pw_aff(*this).foreach_piece(fn);
4814 isl::checked::set aff::ge_set(isl::checked::aff aff2) const
4816 auto res = isl_aff_ge_set(copy(), aff2.release());
4817 return manage(res);
4820 isl::checked::set aff::ge_set(const isl::checked::pw_aff &pwaff2) const
4822 return isl::checked::pw_aff(*this).ge_set(pwaff2);
4825 isl::checked::aff aff::gist(isl::checked::set context) const
4827 auto res = isl_aff_gist(copy(), context.release());
4828 return manage(res);
4831 isl::checked::union_pw_aff aff::gist(const isl::checked::union_set &context) const
4833 return isl::checked::pw_aff(*this).gist(context);
4836 isl::checked::aff aff::gist(const isl::checked::basic_set &context) const
4838 return this->gist(isl::checked::set(context));
4841 isl::checked::aff aff::gist(const isl::checked::point &context) const
4843 return this->gist(isl::checked::set(context));
4846 isl::checked::aff aff::gist_params(isl::checked::set context) const
4848 auto res = isl_aff_gist_params(copy(), context.release());
4849 return manage(res);
4852 isl::checked::set aff::gt_set(isl::checked::aff aff2) const
4854 auto res = isl_aff_gt_set(copy(), aff2.release());
4855 return manage(res);
4858 isl::checked::set aff::gt_set(const isl::checked::pw_aff &pwaff2) const
4860 return isl::checked::pw_aff(*this).gt_set(pwaff2);
4863 boolean aff::has_range_tuple_id() const
4865 return isl::checked::multi_aff(*this).has_range_tuple_id();
4868 isl::checked::multi_aff aff::identity() const
4870 return isl::checked::multi_aff(*this).identity();
4873 isl::checked::pw_aff aff::insert_domain(const isl::checked::space &domain) const
4875 return isl::checked::pw_aff(*this).insert_domain(domain);
4878 isl::checked::pw_aff aff::intersect_domain(const isl::checked::set &set) const
4880 return isl::checked::pw_aff(*this).intersect_domain(set);
4883 isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::space &space) const
4885 return isl::checked::pw_aff(*this).intersect_domain(space);
4888 isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::union_set &uset) const
4890 return isl::checked::pw_aff(*this).intersect_domain(uset);
4893 isl::checked::union_pw_aff aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
4895 return isl::checked::pw_aff(*this).intersect_domain_wrapped_domain(uset);
4898 isl::checked::union_pw_aff aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
4900 return isl::checked::pw_aff(*this).intersect_domain_wrapped_range(uset);
4903 isl::checked::pw_aff aff::intersect_params(const isl::checked::set &set) const
4905 return isl::checked::pw_aff(*this).intersect_params(set);
4908 boolean aff::involves_locals() const
4910 return isl::checked::multi_aff(*this).involves_locals();
4913 boolean aff::involves_nan() const
4915 return isl::checked::multi_aff(*this).involves_nan();
4918 boolean aff::involves_param(const isl::checked::id &id) const
4920 return isl::checked::pw_aff(*this).involves_param(id);
4923 boolean aff::involves_param(const std::string &id) const
4925 return this->involves_param(isl::checked::id(ctx(), id));
4928 boolean aff::involves_param(const isl::checked::id_list &list) const
4930 return isl::checked::pw_aff(*this).involves_param(list);
4933 boolean aff::is_cst() const
4935 auto res = isl_aff_is_cst(get());
4936 return manage(res);
4939 boolean aff::isa_aff() const
4941 return isl::checked::pw_aff(*this).isa_aff();
4944 boolean aff::isa_multi_aff() const
4946 return isl::checked::pw_aff(*this).isa_multi_aff();
4949 boolean aff::isa_pw_multi_aff() const
4951 return isl::checked::pw_aff(*this).isa_pw_multi_aff();
4954 isl::checked::set aff::le_set(isl::checked::aff aff2) const
4956 auto res = isl_aff_le_set(copy(), aff2.release());
4957 return manage(res);
4960 isl::checked::set aff::le_set(const isl::checked::pw_aff &pwaff2) const
4962 return isl::checked::pw_aff(*this).le_set(pwaff2);
4965 isl::checked::aff_list aff::list() const
4967 return isl::checked::multi_aff(*this).list();
4970 isl::checked::set aff::lt_set(isl::checked::aff aff2) const
4972 auto res = isl_aff_lt_set(copy(), aff2.release());
4973 return manage(res);
4976 isl::checked::set aff::lt_set(const isl::checked::pw_aff &pwaff2) const
4978 return isl::checked::pw_aff(*this).lt_set(pwaff2);
4981 isl::checked::multi_pw_aff aff::max(const isl::checked::multi_pw_aff &multi2) const
4983 return isl::checked::pw_aff(*this).max(multi2);
4986 isl::checked::pw_aff aff::max(const isl::checked::pw_aff &pwaff2) const
4988 return isl::checked::pw_aff(*this).max(pwaff2);
4991 isl::checked::multi_val aff::max_multi_val() const
4993 return isl::checked::pw_aff(*this).max_multi_val();
4996 isl::checked::val aff::max_val() const
4998 return isl::checked::pw_aff(*this).max_val();
5001 isl::checked::multi_pw_aff aff::min(const isl::checked::multi_pw_aff &multi2) const
5003 return isl::checked::pw_aff(*this).min(multi2);
5006 isl::checked::pw_aff aff::min(const isl::checked::pw_aff &pwaff2) const
5008 return isl::checked::pw_aff(*this).min(pwaff2);
5011 isl::checked::multi_val aff::min_multi_val() const
5013 return isl::checked::pw_aff(*this).min_multi_val();
5016 isl::checked::val aff::min_val() const
5018 return isl::checked::pw_aff(*this).min_val();
5021 isl::checked::aff aff::mod(isl::checked::val mod) const
5023 auto res = isl_aff_mod_val(copy(), mod.release());
5024 return manage(res);
5027 isl::checked::aff aff::mod(long mod) const
5029 return this->mod(isl::checked::val(ctx(), mod));
5032 isl::checked::aff aff::mul(isl::checked::aff aff2) const
5034 auto res = isl_aff_mul(copy(), aff2.release());
5035 return manage(res);
5038 isl::checked::pw_aff aff::mul(const isl::checked::pw_aff &pwaff2) const
5040 return isl::checked::pw_aff(*this).mul(pwaff2);
5043 class size aff::n_piece() const
5045 return isl::checked::pw_aff(*this).n_piece();
5048 isl::checked::set aff::ne_set(isl::checked::aff aff2) const
5050 auto res = isl_aff_ne_set(copy(), aff2.release());
5051 return manage(res);
5054 isl::checked::set aff::ne_set(const isl::checked::pw_aff &pwaff2) const
5056 return isl::checked::pw_aff(*this).ne_set(pwaff2);
5059 isl::checked::aff aff::neg() const
5061 auto res = isl_aff_neg(copy());
5062 return manage(res);
5065 isl::checked::set aff::params() const
5067 return isl::checked::pw_aff(*this).params();
5070 boolean aff::plain_is_empty() const
5072 return isl::checked::pw_aff(*this).plain_is_empty();
5075 boolean aff::plain_is_equal(const isl::checked::aff &aff2) const
5077 auto res = isl_aff_plain_is_equal(get(), aff2.get());
5078 return manage(res);
5081 boolean aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
5083 return isl::checked::multi_aff(*this).plain_is_equal(multi2);
5086 boolean aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
5088 return isl::checked::pw_aff(*this).plain_is_equal(multi2);
5091 boolean aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
5093 return isl::checked::pw_aff(*this).plain_is_equal(multi2);
5096 boolean aff::plain_is_equal(const isl::checked::pw_aff &pwaff2) const
5098 return isl::checked::pw_aff(*this).plain_is_equal(pwaff2);
5101 boolean aff::plain_is_equal(const isl::checked::pw_multi_aff &pma2) const
5103 return isl::checked::pw_aff(*this).plain_is_equal(pma2);
5106 boolean aff::plain_is_equal(const isl::checked::union_pw_aff &upa2) const
5108 return isl::checked::pw_aff(*this).plain_is_equal(upa2);
5111 boolean aff::plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const
5113 return isl::checked::pw_aff(*this).plain_is_equal(upma2);
5116 isl::checked::pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
5118 return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(pma2);
5121 isl::checked::union_pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
5123 return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(upma2);
5126 isl::checked::multi_aff aff::product(const isl::checked::multi_aff &multi2) const
5128 return isl::checked::multi_aff(*this).product(multi2);
5131 isl::checked::multi_pw_aff aff::product(const isl::checked::multi_pw_aff &multi2) const
5133 return isl::checked::pw_aff(*this).product(multi2);
5136 isl::checked::pw_multi_aff aff::product(const isl::checked::pw_multi_aff &pma2) const
5138 return isl::checked::pw_aff(*this).product(pma2);
5141 isl::checked::aff aff::pullback(isl::checked::multi_aff ma) const
5143 auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
5144 return manage(res);
5147 isl::checked::pw_aff aff::pullback(const isl::checked::multi_pw_aff &mpa) const
5149 return isl::checked::pw_aff(*this).pullback(mpa);
5152 isl::checked::pw_aff aff::pullback(const isl::checked::pw_multi_aff &pma) const
5154 return isl::checked::pw_aff(*this).pullback(pma);
5157 isl::checked::union_pw_aff aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
5159 return isl::checked::pw_aff(*this).pullback(upma);
5162 isl::checked::aff aff::pullback(const isl::checked::aff &ma) const
5164 return this->pullback(isl::checked::multi_aff(ma));
5167 isl::checked::pw_multi_aff_list aff::pw_multi_aff_list() const
5169 return isl::checked::pw_aff(*this).pw_multi_aff_list();
5172 isl::checked::pw_multi_aff aff::range_factor_domain() const
5174 return isl::checked::pw_aff(*this).range_factor_domain();
5177 isl::checked::pw_multi_aff aff::range_factor_range() const
5179 return isl::checked::pw_aff(*this).range_factor_range();
5182 isl::checked::multi_aff aff::range_product(const isl::checked::multi_aff &multi2) const
5184 return isl::checked::multi_aff(*this).range_product(multi2);
5187 isl::checked::multi_pw_aff aff::range_product(const isl::checked::multi_pw_aff &multi2) const
5189 return isl::checked::pw_aff(*this).range_product(multi2);
5192 isl::checked::multi_union_pw_aff aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
5194 return isl::checked::pw_aff(*this).range_product(multi2);
5197 isl::checked::pw_multi_aff aff::range_product(const isl::checked::pw_multi_aff &pma2) const
5199 return isl::checked::pw_aff(*this).range_product(pma2);
5202 isl::checked::union_pw_multi_aff aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
5204 return isl::checked::pw_aff(*this).range_product(upma2);
5207 isl::checked::id aff::range_tuple_id() const
5209 return isl::checked::multi_aff(*this).range_tuple_id();
5212 isl::checked::multi_aff aff::reset_range_tuple_id() const
5214 return isl::checked::multi_aff(*this).reset_range_tuple_id();
5217 isl::checked::aff aff::scale(isl::checked::val v) const
5219 auto res = isl_aff_scale_val(copy(), v.release());
5220 return manage(res);
5223 isl::checked::aff aff::scale(long v) const
5225 return this->scale(isl::checked::val(ctx(), v));
5228 isl::checked::multi_aff aff::scale(const isl::checked::multi_val &mv) const
5230 return isl::checked::multi_aff(*this).scale(mv);
5233 isl::checked::aff aff::scale_down(isl::checked::val v) const
5235 auto res = isl_aff_scale_down_val(copy(), v.release());
5236 return manage(res);
5239 isl::checked::aff aff::scale_down(long v) const
5241 return this->scale_down(isl::checked::val(ctx(), v));
5244 isl::checked::multi_aff aff::scale_down(const isl::checked::multi_val &mv) const
5246 return isl::checked::multi_aff(*this).scale_down(mv);
5249 isl::checked::multi_aff aff::set_at(int pos, const isl::checked::aff &el) const
5251 return isl::checked::multi_aff(*this).set_at(pos, el);
5254 isl::checked::multi_pw_aff aff::set_at(int pos, const isl::checked::pw_aff &el) const
5256 return isl::checked::pw_aff(*this).set_at(pos, el);
5259 isl::checked::multi_union_pw_aff aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
5261 return isl::checked::pw_aff(*this).set_at(pos, el);
5264 isl::checked::multi_aff aff::set_range_tuple(const isl::checked::id &id) const
5266 return isl::checked::multi_aff(*this).set_range_tuple(id);
5269 isl::checked::multi_aff aff::set_range_tuple(const std::string &id) const
5271 return this->set_range_tuple(isl::checked::id(ctx(), id));
5274 class size aff::size() const
5276 return isl::checked::multi_aff(*this).size();
5279 isl::checked::space aff::space() const
5281 return isl::checked::pw_aff(*this).space();
5284 isl::checked::aff aff::sub(isl::checked::aff aff2) const
5286 auto res = isl_aff_sub(copy(), aff2.release());
5287 return manage(res);
5290 isl::checked::multi_aff aff::sub(const isl::checked::multi_aff &multi2) const
5292 return isl::checked::multi_aff(*this).sub(multi2);
5295 isl::checked::multi_pw_aff aff::sub(const isl::checked::multi_pw_aff &multi2) const
5297 return isl::checked::pw_aff(*this).sub(multi2);
5300 isl::checked::multi_union_pw_aff aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
5302 return isl::checked::pw_aff(*this).sub(multi2);
5305 isl::checked::pw_aff aff::sub(const isl::checked::pw_aff &pwaff2) const
5307 return isl::checked::pw_aff(*this).sub(pwaff2);
5310 isl::checked::pw_multi_aff aff::sub(const isl::checked::pw_multi_aff &pma2) const
5312 return isl::checked::pw_aff(*this).sub(pma2);
5315 isl::checked::union_pw_aff aff::sub(const isl::checked::union_pw_aff &upa2) const
5317 return isl::checked::pw_aff(*this).sub(upa2);
5320 isl::checked::union_pw_multi_aff aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
5322 return isl::checked::pw_aff(*this).sub(upma2);
5325 isl::checked::pw_aff aff::subtract_domain(const isl::checked::set &set) const
5327 return isl::checked::pw_aff(*this).subtract_domain(set);
5330 isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::space &space) const
5332 return isl::checked::pw_aff(*this).subtract_domain(space);
5335 isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::union_set &uset) const
5337 return isl::checked::pw_aff(*this).subtract_domain(uset);
5340 isl::checked::pw_aff aff::tdiv_q(const isl::checked::pw_aff &pa2) const
5342 return isl::checked::pw_aff(*this).tdiv_q(pa2);
5345 isl::checked::pw_aff aff::tdiv_r(const isl::checked::pw_aff &pa2) const
5347 return isl::checked::pw_aff(*this).tdiv_r(pa2);
5350 isl::checked::aff_list aff::to_list() const
5352 auto res = isl_aff_to_list(copy());
5353 return manage(res);
5356 isl::checked::multi_pw_aff aff::to_multi_pw_aff() const
5358 return isl::checked::multi_aff(*this).to_multi_pw_aff();
5361 isl::checked::multi_union_pw_aff aff::to_multi_union_pw_aff() const
5363 return isl::checked::multi_aff(*this).to_multi_union_pw_aff();
5366 isl::checked::pw_multi_aff aff::to_pw_multi_aff() const
5368 return isl::checked::multi_aff(*this).to_pw_multi_aff();
5371 isl::checked::union_pw_aff aff::to_union_pw_aff() const
5373 return isl::checked::pw_aff(*this).to_union_pw_aff();
5376 isl::checked::union_pw_multi_aff aff::to_union_pw_multi_aff() const
5378 return isl::checked::pw_aff(*this).to_union_pw_multi_aff();
5381 isl::checked::aff aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
5383 auto res = isl_aff_unbind_params_insert_domain(copy(), domain.release());
5384 return manage(res);
5387 isl::checked::multi_pw_aff aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
5389 return isl::checked::pw_aff(*this).union_add(mpa2);
5392 isl::checked::multi_union_pw_aff aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
5394 return isl::checked::pw_aff(*this).union_add(mupa2);
5397 isl::checked::pw_aff aff::union_add(const isl::checked::pw_aff &pwaff2) const
5399 return isl::checked::pw_aff(*this).union_add(pwaff2);
5402 isl::checked::pw_multi_aff aff::union_add(const isl::checked::pw_multi_aff &pma2) const
5404 return isl::checked::pw_aff(*this).union_add(pma2);
5407 isl::checked::union_pw_aff aff::union_add(const isl::checked::union_pw_aff &upa2) const
5409 return isl::checked::pw_aff(*this).union_add(upa2);
5412 isl::checked::union_pw_multi_aff aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
5414 return isl::checked::pw_aff(*this).union_add(upma2);
5417 isl::checked::aff aff::zero_on_domain(isl::checked::space space)
5419 auto res = isl_aff_zero_on_domain_space(space.release());
5420 return manage(res);
5423 inline std::ostream &operator<<(std::ostream &os, const aff &obj)
5425 char *str = isl_aff_to_str(obj.get());
5426 if (!str) {
5427 os.setstate(std::ios_base::badbit);
5428 return os;
5430 os << str;
5431 free(str);
5432 return os;
5435 // implementations for isl::aff_list
5436 aff_list manage(__isl_take isl_aff_list *ptr) {
5437 return aff_list(ptr);
5439 aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
5440 ptr = isl_aff_list_copy(ptr);
5441 return aff_list(ptr);
5444 aff_list::aff_list(__isl_take isl_aff_list *ptr)
5445 : ptr(ptr) {}
5447 aff_list::aff_list()
5448 : ptr(nullptr) {}
5450 aff_list::aff_list(const aff_list &obj)
5451 : ptr(nullptr)
5453 ptr = obj.copy();
5456 aff_list::aff_list(isl::checked::ctx ctx, int n)
5458 auto res = isl_aff_list_alloc(ctx.release(), n);
5459 ptr = res;
5462 aff_list::aff_list(isl::checked::aff el)
5464 auto res = isl_aff_list_from_aff(el.release());
5465 ptr = res;
5468 aff_list::aff_list(isl::checked::ctx ctx, const std::string &str)
5470 auto res = isl_aff_list_read_from_str(ctx.release(), str.c_str());
5471 ptr = res;
5474 aff_list &aff_list::operator=(aff_list obj) {
5475 std::swap(this->ptr, obj.ptr);
5476 return *this;
5479 aff_list::~aff_list() {
5480 if (ptr)
5481 isl_aff_list_free(ptr);
5484 __isl_give isl_aff_list *aff_list::copy() const & {
5485 return isl_aff_list_copy(ptr);
5488 __isl_keep isl_aff_list *aff_list::get() const {
5489 return ptr;
5492 __isl_give isl_aff_list *aff_list::release() {
5493 isl_aff_list *tmp = ptr;
5494 ptr = nullptr;
5495 return tmp;
5498 bool aff_list::is_null() const {
5499 return ptr == nullptr;
5502 isl::checked::ctx aff_list::ctx() const {
5503 return isl::checked::ctx(isl_aff_list_get_ctx(ptr));
5506 isl::checked::aff_list aff_list::add(isl::checked::aff el) const
5508 auto res = isl_aff_list_add(copy(), el.release());
5509 return manage(res);
5512 isl::checked::aff aff_list::at(int index) const
5514 auto res = isl_aff_list_get_at(get(), index);
5515 return manage(res);
5518 isl::checked::aff aff_list::get_at(int index) const
5520 return at(index);
5523 isl::checked::aff_list aff_list::clear() const
5525 auto res = isl_aff_list_clear(copy());
5526 return manage(res);
5529 isl::checked::aff_list aff_list::concat(isl::checked::aff_list list2) const
5531 auto res = isl_aff_list_concat(copy(), list2.release());
5532 return manage(res);
5535 isl::checked::aff_list aff_list::drop(unsigned int first, unsigned int n) const
5537 auto res = isl_aff_list_drop(copy(), first, n);
5538 return manage(res);
5541 stat aff_list::foreach(const std::function<stat(isl::checked::aff)> &fn) const
5543 struct fn_data {
5544 std::function<stat(isl::checked::aff)> func;
5545 } fn_data = { fn };
5546 auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
5547 auto *data = static_cast<struct fn_data *>(arg_1);
5548 auto ret = (data->func)(manage(arg_0));
5549 return ret.release();
5551 auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
5552 return manage(res);
5555 stat aff_list::foreach_scc(const std::function<boolean(isl::checked::aff, isl::checked::aff)> &follows, const std::function<stat(isl::checked::aff_list)> &fn) const
5557 struct follows_data {
5558 std::function<boolean(isl::checked::aff, isl::checked::aff)> func;
5559 } follows_data = { follows };
5560 auto follows_lambda = [](isl_aff *arg_0, isl_aff *arg_1, void *arg_2) -> isl_bool {
5561 auto *data = static_cast<struct follows_data *>(arg_2);
5562 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
5563 return ret.release();
5565 struct fn_data {
5566 std::function<stat(isl::checked::aff_list)> func;
5567 } fn_data = { fn };
5568 auto fn_lambda = [](isl_aff_list *arg_0, void *arg_1) -> isl_stat {
5569 auto *data = static_cast<struct fn_data *>(arg_1);
5570 auto ret = (data->func)(manage(arg_0));
5571 return ret.release();
5573 auto res = isl_aff_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
5574 return manage(res);
5577 isl::checked::aff_list aff_list::insert(unsigned int pos, isl::checked::aff el) const
5579 auto res = isl_aff_list_insert(copy(), pos, el.release());
5580 return manage(res);
5583 isl::checked::aff_list aff_list::set_at(int index, isl::checked::aff el) const
5585 auto res = isl_aff_list_set_at(copy(), index, el.release());
5586 return manage(res);
5589 class size aff_list::size() const
5591 auto res = isl_aff_list_size(get());
5592 return manage(res);
5595 inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
5597 char *str = isl_aff_list_to_str(obj.get());
5598 if (!str) {
5599 os.setstate(std::ios_base::badbit);
5600 return os;
5602 os << str;
5603 free(str);
5604 return os;
5607 // implementations for isl::ast_build
5608 ast_build manage(__isl_take isl_ast_build *ptr) {
5609 return ast_build(ptr);
5611 ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
5612 ptr = isl_ast_build_copy(ptr);
5613 return ast_build(ptr);
5616 ast_build::ast_build(__isl_take isl_ast_build *ptr)
5617 : ptr(ptr) {}
5619 ast_build::ast_build()
5620 : ptr(nullptr) {}
5622 ast_build::ast_build(const ast_build &obj)
5623 : ptr(nullptr)
5625 ptr = obj.copy();
5626 copy_callbacks(obj);
5629 ast_build::ast_build(isl::checked::ctx ctx)
5631 auto res = isl_ast_build_alloc(ctx.release());
5632 ptr = res;
5635 ast_build &ast_build::operator=(ast_build obj) {
5636 std::swap(this->ptr, obj.ptr);
5637 copy_callbacks(obj);
5638 return *this;
5641 ast_build::~ast_build() {
5642 if (ptr)
5643 isl_ast_build_free(ptr);
5646 __isl_give isl_ast_build *ast_build::copy() const & {
5647 return isl_ast_build_copy(ptr);
5650 __isl_keep isl_ast_build *ast_build::get() const {
5651 return ptr;
5654 __isl_give isl_ast_build *ast_build::release() {
5655 if (at_each_domain_data)
5656 isl_die(ctx().get(), isl_error_invalid, "cannot release object with persistent callbacks", return nullptr);
5657 isl_ast_build *tmp = ptr;
5658 ptr = nullptr;
5659 return tmp;
5662 bool ast_build::is_null() const {
5663 return ptr == nullptr;
5666 isl::checked::ctx ast_build::ctx() const {
5667 return isl::checked::ctx(isl_ast_build_get_ctx(ptr));
5670 ast_build &ast_build::copy_callbacks(const ast_build &obj)
5672 at_each_domain_data = obj.at_each_domain_data;
5673 return *this;
5676 isl_ast_node *ast_build::at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2)
5678 auto *data = static_cast<struct at_each_domain_data *>(arg_2);
5679 auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
5680 return ret.release();
5683 void ast_build::set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn)
5685 at_each_domain_data = std::make_shared<struct at_each_domain_data>();
5686 at_each_domain_data->func = fn;
5687 ptr = isl_ast_build_set_at_each_domain(ptr, &at_each_domain, at_each_domain_data.get());
5690 isl::checked::ast_build ast_build::set_at_each_domain(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn) const
5692 auto copy = *this;
5693 copy.set_at_each_domain_data(fn);
5694 return copy;
5697 isl::checked::ast_expr ast_build::access_from(isl::checked::multi_pw_aff mpa) const
5699 auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
5700 return manage(res);
5703 isl::checked::ast_expr ast_build::access_from(isl::checked::pw_multi_aff pma) const
5705 auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
5706 return manage(res);
5709 isl::checked::ast_expr ast_build::call_from(isl::checked::multi_pw_aff mpa) const
5711 auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
5712 return manage(res);
5715 isl::checked::ast_expr ast_build::call_from(isl::checked::pw_multi_aff pma) const
5717 auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
5718 return manage(res);
5721 isl::checked::ast_expr ast_build::expr_from(isl::checked::pw_aff pa) const
5723 auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
5724 return manage(res);
5727 isl::checked::ast_expr ast_build::expr_from(isl::checked::set set) const
5729 auto res = isl_ast_build_expr_from_set(get(), set.release());
5730 return manage(res);
5733 isl::checked::ast_build ast_build::from_context(isl::checked::set set)
5735 auto res = isl_ast_build_from_context(set.release());
5736 return manage(res);
5739 isl::checked::ast_node ast_build::node_from(isl::checked::schedule schedule) const
5741 auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
5742 return manage(res);
5745 isl::checked::ast_node ast_build::node_from_schedule_map(isl::checked::union_map schedule) const
5747 auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
5748 return manage(res);
5751 isl::checked::union_map ast_build::schedule() const
5753 auto res = isl_ast_build_get_schedule(get());
5754 return manage(res);
5757 isl::checked::union_map ast_build::get_schedule() const
5759 return schedule();
5762 // implementations for isl::ast_expr
5763 ast_expr manage(__isl_take isl_ast_expr *ptr) {
5764 return ast_expr(ptr);
5766 ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
5767 ptr = isl_ast_expr_copy(ptr);
5768 return ast_expr(ptr);
5771 ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
5772 : ptr(ptr) {}
5774 ast_expr::ast_expr()
5775 : ptr(nullptr) {}
5777 ast_expr::ast_expr(const ast_expr &obj)
5778 : ptr(nullptr)
5780 ptr = obj.copy();
5783 ast_expr &ast_expr::operator=(ast_expr obj) {
5784 std::swap(this->ptr, obj.ptr);
5785 return *this;
5788 ast_expr::~ast_expr() {
5789 if (ptr)
5790 isl_ast_expr_free(ptr);
5793 __isl_give isl_ast_expr *ast_expr::copy() const & {
5794 return isl_ast_expr_copy(ptr);
5797 __isl_keep isl_ast_expr *ast_expr::get() const {
5798 return ptr;
5801 __isl_give isl_ast_expr *ast_expr::release() {
5802 isl_ast_expr *tmp = ptr;
5803 ptr = nullptr;
5804 return tmp;
5807 bool ast_expr::is_null() const {
5808 return ptr == nullptr;
5811 template <typename T, typename>
5812 boolean ast_expr::isa_type(T subtype) const
5814 if (is_null())
5815 return boolean();
5816 return isl_ast_expr_get_type(get()) == subtype;
5818 template <class T>
5819 boolean ast_expr::isa() const
5821 return isa_type<decltype(T::type)>(T::type);
5823 template <class T>
5824 T ast_expr::as() const
5826 if (isa<T>().is_false())
5827 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5828 return T(copy());
5831 isl::checked::ctx ast_expr::ctx() const {
5832 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5835 std::string ast_expr::to_C_str() const
5837 auto res = isl_ast_expr_to_C_str(get());
5838 std::string tmp(res);
5839 free(res);
5840 return tmp;
5843 inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
5845 char *str = isl_ast_expr_to_str(obj.get());
5846 if (!str) {
5847 os.setstate(std::ios_base::badbit);
5848 return os;
5850 os << str;
5851 free(str);
5852 return os;
5855 // implementations for isl::ast_expr_id
5856 ast_expr_id::ast_expr_id(__isl_take isl_ast_expr *ptr)
5857 : ast_expr(ptr) {}
5859 ast_expr_id::ast_expr_id()
5860 : ast_expr() {}
5862 ast_expr_id::ast_expr_id(const ast_expr_id &obj)
5863 : ast_expr(obj)
5867 ast_expr_id &ast_expr_id::operator=(ast_expr_id obj) {
5868 std::swap(this->ptr, obj.ptr);
5869 return *this;
5872 isl::checked::ctx ast_expr_id::ctx() const {
5873 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5876 isl::checked::id ast_expr_id::id() const
5878 auto res = isl_ast_expr_id_get_id(get());
5879 return manage(res);
5882 isl::checked::id ast_expr_id::get_id() const
5884 return id();
5887 inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
5889 char *str = isl_ast_expr_to_str(obj.get());
5890 if (!str) {
5891 os.setstate(std::ios_base::badbit);
5892 return os;
5894 os << str;
5895 free(str);
5896 return os;
5899 // implementations for isl::ast_expr_int
5900 ast_expr_int::ast_expr_int(__isl_take isl_ast_expr *ptr)
5901 : ast_expr(ptr) {}
5903 ast_expr_int::ast_expr_int()
5904 : ast_expr() {}
5906 ast_expr_int::ast_expr_int(const ast_expr_int &obj)
5907 : ast_expr(obj)
5911 ast_expr_int &ast_expr_int::operator=(ast_expr_int obj) {
5912 std::swap(this->ptr, obj.ptr);
5913 return *this;
5916 isl::checked::ctx ast_expr_int::ctx() const {
5917 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5920 isl::checked::val ast_expr_int::val() const
5922 auto res = isl_ast_expr_int_get_val(get());
5923 return manage(res);
5926 isl::checked::val ast_expr_int::get_val() const
5928 return val();
5931 inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
5933 char *str = isl_ast_expr_to_str(obj.get());
5934 if (!str) {
5935 os.setstate(std::ios_base::badbit);
5936 return os;
5938 os << str;
5939 free(str);
5940 return os;
5943 // implementations for isl::ast_expr_op
5944 ast_expr_op::ast_expr_op(__isl_take isl_ast_expr *ptr)
5945 : ast_expr(ptr) {}
5947 ast_expr_op::ast_expr_op()
5948 : ast_expr() {}
5950 ast_expr_op::ast_expr_op(const ast_expr_op &obj)
5951 : ast_expr(obj)
5955 ast_expr_op &ast_expr_op::operator=(ast_expr_op obj) {
5956 std::swap(this->ptr, obj.ptr);
5957 return *this;
5960 template <typename T, typename>
5961 boolean ast_expr_op::isa_type(T subtype) const
5963 if (is_null())
5964 return boolean();
5965 return isl_ast_expr_op_get_type(get()) == subtype;
5967 template <class T>
5968 boolean ast_expr_op::isa() const
5970 return isa_type<decltype(T::type)>(T::type);
5972 template <class T>
5973 T ast_expr_op::as() const
5975 if (isa<T>().is_false())
5976 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5977 return T(copy());
5980 isl::checked::ctx ast_expr_op::ctx() const {
5981 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5984 isl::checked::ast_expr ast_expr_op::arg(int pos) const
5986 auto res = isl_ast_expr_op_get_arg(get(), pos);
5987 return manage(res);
5990 isl::checked::ast_expr ast_expr_op::get_arg(int pos) const
5992 return arg(pos);
5995 class size ast_expr_op::n_arg() const
5997 auto res = isl_ast_expr_op_get_n_arg(get());
5998 return manage(res);
6001 class size ast_expr_op::get_n_arg() const
6003 return n_arg();
6006 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
6008 char *str = isl_ast_expr_to_str(obj.get());
6009 if (!str) {
6010 os.setstate(std::ios_base::badbit);
6011 return os;
6013 os << str;
6014 free(str);
6015 return os;
6018 // implementations for isl::ast_expr_op_access
6019 ast_expr_op_access::ast_expr_op_access(__isl_take isl_ast_expr *ptr)
6020 : ast_expr_op(ptr) {}
6022 ast_expr_op_access::ast_expr_op_access()
6023 : ast_expr_op() {}
6025 ast_expr_op_access::ast_expr_op_access(const ast_expr_op_access &obj)
6026 : ast_expr_op(obj)
6030 ast_expr_op_access &ast_expr_op_access::operator=(ast_expr_op_access obj) {
6031 std::swap(this->ptr, obj.ptr);
6032 return *this;
6035 isl::checked::ctx ast_expr_op_access::ctx() const {
6036 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6039 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
6041 char *str = isl_ast_expr_to_str(obj.get());
6042 if (!str) {
6043 os.setstate(std::ios_base::badbit);
6044 return os;
6046 os << str;
6047 free(str);
6048 return os;
6051 // implementations for isl::ast_expr_op_add
6052 ast_expr_op_add::ast_expr_op_add(__isl_take isl_ast_expr *ptr)
6053 : ast_expr_op(ptr) {}
6055 ast_expr_op_add::ast_expr_op_add()
6056 : ast_expr_op() {}
6058 ast_expr_op_add::ast_expr_op_add(const ast_expr_op_add &obj)
6059 : ast_expr_op(obj)
6063 ast_expr_op_add &ast_expr_op_add::operator=(ast_expr_op_add obj) {
6064 std::swap(this->ptr, obj.ptr);
6065 return *this;
6068 isl::checked::ctx ast_expr_op_add::ctx() const {
6069 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6072 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
6074 char *str = isl_ast_expr_to_str(obj.get());
6075 if (!str) {
6076 os.setstate(std::ios_base::badbit);
6077 return os;
6079 os << str;
6080 free(str);
6081 return os;
6084 // implementations for isl::ast_expr_op_address_of
6085 ast_expr_op_address_of::ast_expr_op_address_of(__isl_take isl_ast_expr *ptr)
6086 : ast_expr_op(ptr) {}
6088 ast_expr_op_address_of::ast_expr_op_address_of()
6089 : ast_expr_op() {}
6091 ast_expr_op_address_of::ast_expr_op_address_of(const ast_expr_op_address_of &obj)
6092 : ast_expr_op(obj)
6096 ast_expr_op_address_of &ast_expr_op_address_of::operator=(ast_expr_op_address_of obj) {
6097 std::swap(this->ptr, obj.ptr);
6098 return *this;
6101 isl::checked::ctx ast_expr_op_address_of::ctx() const {
6102 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6105 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
6107 char *str = isl_ast_expr_to_str(obj.get());
6108 if (!str) {
6109 os.setstate(std::ios_base::badbit);
6110 return os;
6112 os << str;
6113 free(str);
6114 return os;
6117 // implementations for isl::ast_expr_op_and
6118 ast_expr_op_and::ast_expr_op_and(__isl_take isl_ast_expr *ptr)
6119 : ast_expr_op(ptr) {}
6121 ast_expr_op_and::ast_expr_op_and()
6122 : ast_expr_op() {}
6124 ast_expr_op_and::ast_expr_op_and(const ast_expr_op_and &obj)
6125 : ast_expr_op(obj)
6129 ast_expr_op_and &ast_expr_op_and::operator=(ast_expr_op_and obj) {
6130 std::swap(this->ptr, obj.ptr);
6131 return *this;
6134 isl::checked::ctx ast_expr_op_and::ctx() const {
6135 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6138 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
6140 char *str = isl_ast_expr_to_str(obj.get());
6141 if (!str) {
6142 os.setstate(std::ios_base::badbit);
6143 return os;
6145 os << str;
6146 free(str);
6147 return os;
6150 // implementations for isl::ast_expr_op_and_then
6151 ast_expr_op_and_then::ast_expr_op_and_then(__isl_take isl_ast_expr *ptr)
6152 : ast_expr_op(ptr) {}
6154 ast_expr_op_and_then::ast_expr_op_and_then()
6155 : ast_expr_op() {}
6157 ast_expr_op_and_then::ast_expr_op_and_then(const ast_expr_op_and_then &obj)
6158 : ast_expr_op(obj)
6162 ast_expr_op_and_then &ast_expr_op_and_then::operator=(ast_expr_op_and_then obj) {
6163 std::swap(this->ptr, obj.ptr);
6164 return *this;
6167 isl::checked::ctx ast_expr_op_and_then::ctx() const {
6168 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6171 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
6173 char *str = isl_ast_expr_to_str(obj.get());
6174 if (!str) {
6175 os.setstate(std::ios_base::badbit);
6176 return os;
6178 os << str;
6179 free(str);
6180 return os;
6183 // implementations for isl::ast_expr_op_call
6184 ast_expr_op_call::ast_expr_op_call(__isl_take isl_ast_expr *ptr)
6185 : ast_expr_op(ptr) {}
6187 ast_expr_op_call::ast_expr_op_call()
6188 : ast_expr_op() {}
6190 ast_expr_op_call::ast_expr_op_call(const ast_expr_op_call &obj)
6191 : ast_expr_op(obj)
6195 ast_expr_op_call &ast_expr_op_call::operator=(ast_expr_op_call obj) {
6196 std::swap(this->ptr, obj.ptr);
6197 return *this;
6200 isl::checked::ctx ast_expr_op_call::ctx() const {
6201 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6204 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
6206 char *str = isl_ast_expr_to_str(obj.get());
6207 if (!str) {
6208 os.setstate(std::ios_base::badbit);
6209 return os;
6211 os << str;
6212 free(str);
6213 return os;
6216 // implementations for isl::ast_expr_op_cond
6217 ast_expr_op_cond::ast_expr_op_cond(__isl_take isl_ast_expr *ptr)
6218 : ast_expr_op(ptr) {}
6220 ast_expr_op_cond::ast_expr_op_cond()
6221 : ast_expr_op() {}
6223 ast_expr_op_cond::ast_expr_op_cond(const ast_expr_op_cond &obj)
6224 : ast_expr_op(obj)
6228 ast_expr_op_cond &ast_expr_op_cond::operator=(ast_expr_op_cond obj) {
6229 std::swap(this->ptr, obj.ptr);
6230 return *this;
6233 isl::checked::ctx ast_expr_op_cond::ctx() const {
6234 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6237 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
6239 char *str = isl_ast_expr_to_str(obj.get());
6240 if (!str) {
6241 os.setstate(std::ios_base::badbit);
6242 return os;
6244 os << str;
6245 free(str);
6246 return os;
6249 // implementations for isl::ast_expr_op_div
6250 ast_expr_op_div::ast_expr_op_div(__isl_take isl_ast_expr *ptr)
6251 : ast_expr_op(ptr) {}
6253 ast_expr_op_div::ast_expr_op_div()
6254 : ast_expr_op() {}
6256 ast_expr_op_div::ast_expr_op_div(const ast_expr_op_div &obj)
6257 : ast_expr_op(obj)
6261 ast_expr_op_div &ast_expr_op_div::operator=(ast_expr_op_div obj) {
6262 std::swap(this->ptr, obj.ptr);
6263 return *this;
6266 isl::checked::ctx ast_expr_op_div::ctx() const {
6267 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6270 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
6272 char *str = isl_ast_expr_to_str(obj.get());
6273 if (!str) {
6274 os.setstate(std::ios_base::badbit);
6275 return os;
6277 os << str;
6278 free(str);
6279 return os;
6282 // implementations for isl::ast_expr_op_eq
6283 ast_expr_op_eq::ast_expr_op_eq(__isl_take isl_ast_expr *ptr)
6284 : ast_expr_op(ptr) {}
6286 ast_expr_op_eq::ast_expr_op_eq()
6287 : ast_expr_op() {}
6289 ast_expr_op_eq::ast_expr_op_eq(const ast_expr_op_eq &obj)
6290 : ast_expr_op(obj)
6294 ast_expr_op_eq &ast_expr_op_eq::operator=(ast_expr_op_eq obj) {
6295 std::swap(this->ptr, obj.ptr);
6296 return *this;
6299 isl::checked::ctx ast_expr_op_eq::ctx() const {
6300 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6303 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
6305 char *str = isl_ast_expr_to_str(obj.get());
6306 if (!str) {
6307 os.setstate(std::ios_base::badbit);
6308 return os;
6310 os << str;
6311 free(str);
6312 return os;
6315 // implementations for isl::ast_expr_op_fdiv_q
6316 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr)
6317 : ast_expr_op(ptr) {}
6319 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q()
6320 : ast_expr_op() {}
6322 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj)
6323 : ast_expr_op(obj)
6327 ast_expr_op_fdiv_q &ast_expr_op_fdiv_q::operator=(ast_expr_op_fdiv_q obj) {
6328 std::swap(this->ptr, obj.ptr);
6329 return *this;
6332 isl::checked::ctx ast_expr_op_fdiv_q::ctx() const {
6333 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6336 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
6338 char *str = isl_ast_expr_to_str(obj.get());
6339 if (!str) {
6340 os.setstate(std::ios_base::badbit);
6341 return os;
6343 os << str;
6344 free(str);
6345 return os;
6348 // implementations for isl::ast_expr_op_ge
6349 ast_expr_op_ge::ast_expr_op_ge(__isl_take isl_ast_expr *ptr)
6350 : ast_expr_op(ptr) {}
6352 ast_expr_op_ge::ast_expr_op_ge()
6353 : ast_expr_op() {}
6355 ast_expr_op_ge::ast_expr_op_ge(const ast_expr_op_ge &obj)
6356 : ast_expr_op(obj)
6360 ast_expr_op_ge &ast_expr_op_ge::operator=(ast_expr_op_ge obj) {
6361 std::swap(this->ptr, obj.ptr);
6362 return *this;
6365 isl::checked::ctx ast_expr_op_ge::ctx() const {
6366 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6369 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
6371 char *str = isl_ast_expr_to_str(obj.get());
6372 if (!str) {
6373 os.setstate(std::ios_base::badbit);
6374 return os;
6376 os << str;
6377 free(str);
6378 return os;
6381 // implementations for isl::ast_expr_op_gt
6382 ast_expr_op_gt::ast_expr_op_gt(__isl_take isl_ast_expr *ptr)
6383 : ast_expr_op(ptr) {}
6385 ast_expr_op_gt::ast_expr_op_gt()
6386 : ast_expr_op() {}
6388 ast_expr_op_gt::ast_expr_op_gt(const ast_expr_op_gt &obj)
6389 : ast_expr_op(obj)
6393 ast_expr_op_gt &ast_expr_op_gt::operator=(ast_expr_op_gt obj) {
6394 std::swap(this->ptr, obj.ptr);
6395 return *this;
6398 isl::checked::ctx ast_expr_op_gt::ctx() const {
6399 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6402 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
6404 char *str = isl_ast_expr_to_str(obj.get());
6405 if (!str) {
6406 os.setstate(std::ios_base::badbit);
6407 return os;
6409 os << str;
6410 free(str);
6411 return os;
6414 // implementations for isl::ast_expr_op_le
6415 ast_expr_op_le::ast_expr_op_le(__isl_take isl_ast_expr *ptr)
6416 : ast_expr_op(ptr) {}
6418 ast_expr_op_le::ast_expr_op_le()
6419 : ast_expr_op() {}
6421 ast_expr_op_le::ast_expr_op_le(const ast_expr_op_le &obj)
6422 : ast_expr_op(obj)
6426 ast_expr_op_le &ast_expr_op_le::operator=(ast_expr_op_le obj) {
6427 std::swap(this->ptr, obj.ptr);
6428 return *this;
6431 isl::checked::ctx ast_expr_op_le::ctx() const {
6432 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6435 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
6437 char *str = isl_ast_expr_to_str(obj.get());
6438 if (!str) {
6439 os.setstate(std::ios_base::badbit);
6440 return os;
6442 os << str;
6443 free(str);
6444 return os;
6447 // implementations for isl::ast_expr_op_lt
6448 ast_expr_op_lt::ast_expr_op_lt(__isl_take isl_ast_expr *ptr)
6449 : ast_expr_op(ptr) {}
6451 ast_expr_op_lt::ast_expr_op_lt()
6452 : ast_expr_op() {}
6454 ast_expr_op_lt::ast_expr_op_lt(const ast_expr_op_lt &obj)
6455 : ast_expr_op(obj)
6459 ast_expr_op_lt &ast_expr_op_lt::operator=(ast_expr_op_lt obj) {
6460 std::swap(this->ptr, obj.ptr);
6461 return *this;
6464 isl::checked::ctx ast_expr_op_lt::ctx() const {
6465 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6468 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
6470 char *str = isl_ast_expr_to_str(obj.get());
6471 if (!str) {
6472 os.setstate(std::ios_base::badbit);
6473 return os;
6475 os << str;
6476 free(str);
6477 return os;
6480 // implementations for isl::ast_expr_op_max
6481 ast_expr_op_max::ast_expr_op_max(__isl_take isl_ast_expr *ptr)
6482 : ast_expr_op(ptr) {}
6484 ast_expr_op_max::ast_expr_op_max()
6485 : ast_expr_op() {}
6487 ast_expr_op_max::ast_expr_op_max(const ast_expr_op_max &obj)
6488 : ast_expr_op(obj)
6492 ast_expr_op_max &ast_expr_op_max::operator=(ast_expr_op_max obj) {
6493 std::swap(this->ptr, obj.ptr);
6494 return *this;
6497 isl::checked::ctx ast_expr_op_max::ctx() const {
6498 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6501 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
6503 char *str = isl_ast_expr_to_str(obj.get());
6504 if (!str) {
6505 os.setstate(std::ios_base::badbit);
6506 return os;
6508 os << str;
6509 free(str);
6510 return os;
6513 // implementations for isl::ast_expr_op_member
6514 ast_expr_op_member::ast_expr_op_member(__isl_take isl_ast_expr *ptr)
6515 : ast_expr_op(ptr) {}
6517 ast_expr_op_member::ast_expr_op_member()
6518 : ast_expr_op() {}
6520 ast_expr_op_member::ast_expr_op_member(const ast_expr_op_member &obj)
6521 : ast_expr_op(obj)
6525 ast_expr_op_member &ast_expr_op_member::operator=(ast_expr_op_member obj) {
6526 std::swap(this->ptr, obj.ptr);
6527 return *this;
6530 isl::checked::ctx ast_expr_op_member::ctx() const {
6531 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6534 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
6536 char *str = isl_ast_expr_to_str(obj.get());
6537 if (!str) {
6538 os.setstate(std::ios_base::badbit);
6539 return os;
6541 os << str;
6542 free(str);
6543 return os;
6546 // implementations for isl::ast_expr_op_min
6547 ast_expr_op_min::ast_expr_op_min(__isl_take isl_ast_expr *ptr)
6548 : ast_expr_op(ptr) {}
6550 ast_expr_op_min::ast_expr_op_min()
6551 : ast_expr_op() {}
6553 ast_expr_op_min::ast_expr_op_min(const ast_expr_op_min &obj)
6554 : ast_expr_op(obj)
6558 ast_expr_op_min &ast_expr_op_min::operator=(ast_expr_op_min obj) {
6559 std::swap(this->ptr, obj.ptr);
6560 return *this;
6563 isl::checked::ctx ast_expr_op_min::ctx() const {
6564 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6567 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
6569 char *str = isl_ast_expr_to_str(obj.get());
6570 if (!str) {
6571 os.setstate(std::ios_base::badbit);
6572 return os;
6574 os << str;
6575 free(str);
6576 return os;
6579 // implementations for isl::ast_expr_op_minus
6580 ast_expr_op_minus::ast_expr_op_minus(__isl_take isl_ast_expr *ptr)
6581 : ast_expr_op(ptr) {}
6583 ast_expr_op_minus::ast_expr_op_minus()
6584 : ast_expr_op() {}
6586 ast_expr_op_minus::ast_expr_op_minus(const ast_expr_op_minus &obj)
6587 : ast_expr_op(obj)
6591 ast_expr_op_minus &ast_expr_op_minus::operator=(ast_expr_op_minus obj) {
6592 std::swap(this->ptr, obj.ptr);
6593 return *this;
6596 isl::checked::ctx ast_expr_op_minus::ctx() const {
6597 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6600 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
6602 char *str = isl_ast_expr_to_str(obj.get());
6603 if (!str) {
6604 os.setstate(std::ios_base::badbit);
6605 return os;
6607 os << str;
6608 free(str);
6609 return os;
6612 // implementations for isl::ast_expr_op_mul
6613 ast_expr_op_mul::ast_expr_op_mul(__isl_take isl_ast_expr *ptr)
6614 : ast_expr_op(ptr) {}
6616 ast_expr_op_mul::ast_expr_op_mul()
6617 : ast_expr_op() {}
6619 ast_expr_op_mul::ast_expr_op_mul(const ast_expr_op_mul &obj)
6620 : ast_expr_op(obj)
6624 ast_expr_op_mul &ast_expr_op_mul::operator=(ast_expr_op_mul obj) {
6625 std::swap(this->ptr, obj.ptr);
6626 return *this;
6629 isl::checked::ctx ast_expr_op_mul::ctx() const {
6630 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6633 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
6635 char *str = isl_ast_expr_to_str(obj.get());
6636 if (!str) {
6637 os.setstate(std::ios_base::badbit);
6638 return os;
6640 os << str;
6641 free(str);
6642 return os;
6645 // implementations for isl::ast_expr_op_or
6646 ast_expr_op_or::ast_expr_op_or(__isl_take isl_ast_expr *ptr)
6647 : ast_expr_op(ptr) {}
6649 ast_expr_op_or::ast_expr_op_or()
6650 : ast_expr_op() {}
6652 ast_expr_op_or::ast_expr_op_or(const ast_expr_op_or &obj)
6653 : ast_expr_op(obj)
6657 ast_expr_op_or &ast_expr_op_or::operator=(ast_expr_op_or obj) {
6658 std::swap(this->ptr, obj.ptr);
6659 return *this;
6662 isl::checked::ctx ast_expr_op_or::ctx() const {
6663 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6666 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
6668 char *str = isl_ast_expr_to_str(obj.get());
6669 if (!str) {
6670 os.setstate(std::ios_base::badbit);
6671 return os;
6673 os << str;
6674 free(str);
6675 return os;
6678 // implementations for isl::ast_expr_op_or_else
6679 ast_expr_op_or_else::ast_expr_op_or_else(__isl_take isl_ast_expr *ptr)
6680 : ast_expr_op(ptr) {}
6682 ast_expr_op_or_else::ast_expr_op_or_else()
6683 : ast_expr_op() {}
6685 ast_expr_op_or_else::ast_expr_op_or_else(const ast_expr_op_or_else &obj)
6686 : ast_expr_op(obj)
6690 ast_expr_op_or_else &ast_expr_op_or_else::operator=(ast_expr_op_or_else obj) {
6691 std::swap(this->ptr, obj.ptr);
6692 return *this;
6695 isl::checked::ctx ast_expr_op_or_else::ctx() const {
6696 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6699 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
6701 char *str = isl_ast_expr_to_str(obj.get());
6702 if (!str) {
6703 os.setstate(std::ios_base::badbit);
6704 return os;
6706 os << str;
6707 free(str);
6708 return os;
6711 // implementations for isl::ast_expr_op_pdiv_q
6712 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr)
6713 : ast_expr_op(ptr) {}
6715 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q()
6716 : ast_expr_op() {}
6718 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj)
6719 : ast_expr_op(obj)
6723 ast_expr_op_pdiv_q &ast_expr_op_pdiv_q::operator=(ast_expr_op_pdiv_q obj) {
6724 std::swap(this->ptr, obj.ptr);
6725 return *this;
6728 isl::checked::ctx ast_expr_op_pdiv_q::ctx() const {
6729 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6732 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
6734 char *str = isl_ast_expr_to_str(obj.get());
6735 if (!str) {
6736 os.setstate(std::ios_base::badbit);
6737 return os;
6739 os << str;
6740 free(str);
6741 return os;
6744 // implementations for isl::ast_expr_op_pdiv_r
6745 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr)
6746 : ast_expr_op(ptr) {}
6748 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r()
6749 : ast_expr_op() {}
6751 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj)
6752 : ast_expr_op(obj)
6756 ast_expr_op_pdiv_r &ast_expr_op_pdiv_r::operator=(ast_expr_op_pdiv_r obj) {
6757 std::swap(this->ptr, obj.ptr);
6758 return *this;
6761 isl::checked::ctx ast_expr_op_pdiv_r::ctx() const {
6762 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6765 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
6767 char *str = isl_ast_expr_to_str(obj.get());
6768 if (!str) {
6769 os.setstate(std::ios_base::badbit);
6770 return os;
6772 os << str;
6773 free(str);
6774 return os;
6777 // implementations for isl::ast_expr_op_select
6778 ast_expr_op_select::ast_expr_op_select(__isl_take isl_ast_expr *ptr)
6779 : ast_expr_op(ptr) {}
6781 ast_expr_op_select::ast_expr_op_select()
6782 : ast_expr_op() {}
6784 ast_expr_op_select::ast_expr_op_select(const ast_expr_op_select &obj)
6785 : ast_expr_op(obj)
6789 ast_expr_op_select &ast_expr_op_select::operator=(ast_expr_op_select obj) {
6790 std::swap(this->ptr, obj.ptr);
6791 return *this;
6794 isl::checked::ctx ast_expr_op_select::ctx() const {
6795 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6798 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
6800 char *str = isl_ast_expr_to_str(obj.get());
6801 if (!str) {
6802 os.setstate(std::ios_base::badbit);
6803 return os;
6805 os << str;
6806 free(str);
6807 return os;
6810 // implementations for isl::ast_expr_op_sub
6811 ast_expr_op_sub::ast_expr_op_sub(__isl_take isl_ast_expr *ptr)
6812 : ast_expr_op(ptr) {}
6814 ast_expr_op_sub::ast_expr_op_sub()
6815 : ast_expr_op() {}
6817 ast_expr_op_sub::ast_expr_op_sub(const ast_expr_op_sub &obj)
6818 : ast_expr_op(obj)
6822 ast_expr_op_sub &ast_expr_op_sub::operator=(ast_expr_op_sub obj) {
6823 std::swap(this->ptr, obj.ptr);
6824 return *this;
6827 isl::checked::ctx ast_expr_op_sub::ctx() const {
6828 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6831 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
6833 char *str = isl_ast_expr_to_str(obj.get());
6834 if (!str) {
6835 os.setstate(std::ios_base::badbit);
6836 return os;
6838 os << str;
6839 free(str);
6840 return os;
6843 // implementations for isl::ast_expr_op_zdiv_r
6844 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr)
6845 : ast_expr_op(ptr) {}
6847 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r()
6848 : ast_expr_op() {}
6850 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj)
6851 : ast_expr_op(obj)
6855 ast_expr_op_zdiv_r &ast_expr_op_zdiv_r::operator=(ast_expr_op_zdiv_r obj) {
6856 std::swap(this->ptr, obj.ptr);
6857 return *this;
6860 isl::checked::ctx ast_expr_op_zdiv_r::ctx() const {
6861 return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6864 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
6866 char *str = isl_ast_expr_to_str(obj.get());
6867 if (!str) {
6868 os.setstate(std::ios_base::badbit);
6869 return os;
6871 os << str;
6872 free(str);
6873 return os;
6876 // implementations for isl::ast_node
6877 ast_node manage(__isl_take isl_ast_node *ptr) {
6878 return ast_node(ptr);
6880 ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
6881 ptr = isl_ast_node_copy(ptr);
6882 return ast_node(ptr);
6885 ast_node::ast_node(__isl_take isl_ast_node *ptr)
6886 : ptr(ptr) {}
6888 ast_node::ast_node()
6889 : ptr(nullptr) {}
6891 ast_node::ast_node(const ast_node &obj)
6892 : ptr(nullptr)
6894 ptr = obj.copy();
6897 ast_node &ast_node::operator=(ast_node obj) {
6898 std::swap(this->ptr, obj.ptr);
6899 return *this;
6902 ast_node::~ast_node() {
6903 if (ptr)
6904 isl_ast_node_free(ptr);
6907 __isl_give isl_ast_node *ast_node::copy() const & {
6908 return isl_ast_node_copy(ptr);
6911 __isl_keep isl_ast_node *ast_node::get() const {
6912 return ptr;
6915 __isl_give isl_ast_node *ast_node::release() {
6916 isl_ast_node *tmp = ptr;
6917 ptr = nullptr;
6918 return tmp;
6921 bool ast_node::is_null() const {
6922 return ptr == nullptr;
6925 template <typename T, typename>
6926 boolean ast_node::isa_type(T subtype) const
6928 if (is_null())
6929 return boolean();
6930 return isl_ast_node_get_type(get()) == subtype;
6932 template <class T>
6933 boolean ast_node::isa() const
6935 return isa_type<decltype(T::type)>(T::type);
6937 template <class T>
6938 T ast_node::as() const
6940 if (isa<T>().is_false())
6941 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6942 return T(copy());
6945 isl::checked::ctx ast_node::ctx() const {
6946 return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6949 isl::checked::ast_node ast_node::map_descendant_bottom_up(const std::function<isl::checked::ast_node(isl::checked::ast_node)> &fn) const
6951 struct fn_data {
6952 std::function<isl::checked::ast_node(isl::checked::ast_node)> func;
6953 } fn_data = { fn };
6954 auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_ast_node * {
6955 auto *data = static_cast<struct fn_data *>(arg_1);
6956 auto ret = (data->func)(manage(arg_0));
6957 return ret.release();
6959 auto res = isl_ast_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
6960 return manage(res);
6963 std::string ast_node::to_C_str() const
6965 auto res = isl_ast_node_to_C_str(get());
6966 std::string tmp(res);
6967 free(res);
6968 return tmp;
6971 isl::checked::ast_node_list ast_node::to_list() const
6973 auto res = isl_ast_node_to_list(copy());
6974 return manage(res);
6977 inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
6979 char *str = isl_ast_node_to_str(obj.get());
6980 if (!str) {
6981 os.setstate(std::ios_base::badbit);
6982 return os;
6984 os << str;
6985 free(str);
6986 return os;
6989 // implementations for isl::ast_node_block
6990 ast_node_block::ast_node_block(__isl_take isl_ast_node *ptr)
6991 : ast_node(ptr) {}
6993 ast_node_block::ast_node_block()
6994 : ast_node() {}
6996 ast_node_block::ast_node_block(const ast_node_block &obj)
6997 : ast_node(obj)
7001 ast_node_block::ast_node_block(isl::checked::ast_node_list list)
7003 auto res = isl_ast_node_block_from_children(list.release());
7004 ptr = res;
7007 ast_node_block &ast_node_block::operator=(ast_node_block obj) {
7008 std::swap(this->ptr, obj.ptr);
7009 return *this;
7012 isl::checked::ctx ast_node_block::ctx() const {
7013 return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
7016 isl::checked::ast_node_list ast_node_block::children() const
7018 auto res = isl_ast_node_block_get_children(get());
7019 return manage(res);
7022 isl::checked::ast_node_list ast_node_block::get_children() const
7024 return children();
7027 inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
7029 char *str = isl_ast_node_to_str(obj.get());
7030 if (!str) {
7031 os.setstate(std::ios_base::badbit);
7032 return os;
7034 os << str;
7035 free(str);
7036 return os;
7039 // implementations for isl::ast_node_for
7040 ast_node_for::ast_node_for(__isl_take isl_ast_node *ptr)
7041 : ast_node(ptr) {}
7043 ast_node_for::ast_node_for()
7044 : ast_node() {}
7046 ast_node_for::ast_node_for(const ast_node_for &obj)
7047 : ast_node(obj)
7051 ast_node_for &ast_node_for::operator=(ast_node_for obj) {
7052 std::swap(this->ptr, obj.ptr);
7053 return *this;
7056 isl::checked::ctx ast_node_for::ctx() const {
7057 return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
7060 isl::checked::ast_node ast_node_for::body() const
7062 auto res = isl_ast_node_for_get_body(get());
7063 return manage(res);
7066 isl::checked::ast_node ast_node_for::get_body() const
7068 return body();
7071 isl::checked::ast_expr ast_node_for::cond() const
7073 auto res = isl_ast_node_for_get_cond(get());
7074 return manage(res);
7077 isl::checked::ast_expr ast_node_for::get_cond() const
7079 return cond();
7082 isl::checked::ast_expr ast_node_for::inc() const
7084 auto res = isl_ast_node_for_get_inc(get());
7085 return manage(res);
7088 isl::checked::ast_expr ast_node_for::get_inc() const
7090 return inc();
7093 isl::checked::ast_expr ast_node_for::init() const
7095 auto res = isl_ast_node_for_get_init(get());
7096 return manage(res);
7099 isl::checked::ast_expr ast_node_for::get_init() const
7101 return init();
7104 boolean ast_node_for::is_degenerate() const
7106 auto res = isl_ast_node_for_is_degenerate(get());
7107 return manage(res);
7110 isl::checked::ast_expr ast_node_for::iterator() const
7112 auto res = isl_ast_node_for_get_iterator(get());
7113 return manage(res);
7116 isl::checked::ast_expr ast_node_for::get_iterator() const
7118 return iterator();
7121 inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
7123 char *str = isl_ast_node_to_str(obj.get());
7124 if (!str) {
7125 os.setstate(std::ios_base::badbit);
7126 return os;
7128 os << str;
7129 free(str);
7130 return os;
7133 // implementations for isl::ast_node_if
7134 ast_node_if::ast_node_if(__isl_take isl_ast_node *ptr)
7135 : ast_node(ptr) {}
7137 ast_node_if::ast_node_if()
7138 : ast_node() {}
7140 ast_node_if::ast_node_if(const ast_node_if &obj)
7141 : ast_node(obj)
7145 ast_node_if &ast_node_if::operator=(ast_node_if obj) {
7146 std::swap(this->ptr, obj.ptr);
7147 return *this;
7150 isl::checked::ctx ast_node_if::ctx() const {
7151 return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
7154 isl::checked::ast_expr ast_node_if::cond() const
7156 auto res = isl_ast_node_if_get_cond(get());
7157 return manage(res);
7160 isl::checked::ast_expr ast_node_if::get_cond() const
7162 return cond();
7165 isl::checked::ast_node ast_node_if::else_node() const
7167 auto res = isl_ast_node_if_get_else_node(get());
7168 return manage(res);
7171 isl::checked::ast_node ast_node_if::get_else_node() const
7173 return else_node();
7176 boolean ast_node_if::has_else_node() const
7178 auto res = isl_ast_node_if_has_else_node(get());
7179 return manage(res);
7182 isl::checked::ast_node ast_node_if::then_node() const
7184 auto res = isl_ast_node_if_get_then_node(get());
7185 return manage(res);
7188 isl::checked::ast_node ast_node_if::get_then_node() const
7190 return then_node();
7193 inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
7195 char *str = isl_ast_node_to_str(obj.get());
7196 if (!str) {
7197 os.setstate(std::ios_base::badbit);
7198 return os;
7200 os << str;
7201 free(str);
7202 return os;
7205 // implementations for isl::ast_node_list
7206 ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
7207 return ast_node_list(ptr);
7209 ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
7210 ptr = isl_ast_node_list_copy(ptr);
7211 return ast_node_list(ptr);
7214 ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
7215 : ptr(ptr) {}
7217 ast_node_list::ast_node_list()
7218 : ptr(nullptr) {}
7220 ast_node_list::ast_node_list(const ast_node_list &obj)
7221 : ptr(nullptr)
7223 ptr = obj.copy();
7226 ast_node_list::ast_node_list(isl::checked::ctx ctx, int n)
7228 auto res = isl_ast_node_list_alloc(ctx.release(), n);
7229 ptr = res;
7232 ast_node_list::ast_node_list(isl::checked::ast_node el)
7234 auto res = isl_ast_node_list_from_ast_node(el.release());
7235 ptr = res;
7238 ast_node_list &ast_node_list::operator=(ast_node_list obj) {
7239 std::swap(this->ptr, obj.ptr);
7240 return *this;
7243 ast_node_list::~ast_node_list() {
7244 if (ptr)
7245 isl_ast_node_list_free(ptr);
7248 __isl_give isl_ast_node_list *ast_node_list::copy() const & {
7249 return isl_ast_node_list_copy(ptr);
7252 __isl_keep isl_ast_node_list *ast_node_list::get() const {
7253 return ptr;
7256 __isl_give isl_ast_node_list *ast_node_list::release() {
7257 isl_ast_node_list *tmp = ptr;
7258 ptr = nullptr;
7259 return tmp;
7262 bool ast_node_list::is_null() const {
7263 return ptr == nullptr;
7266 isl::checked::ctx ast_node_list::ctx() const {
7267 return isl::checked::ctx(isl_ast_node_list_get_ctx(ptr));
7270 isl::checked::ast_node_list ast_node_list::add(isl::checked::ast_node el) const
7272 auto res = isl_ast_node_list_add(copy(), el.release());
7273 return manage(res);
7276 isl::checked::ast_node ast_node_list::at(int index) const
7278 auto res = isl_ast_node_list_get_at(get(), index);
7279 return manage(res);
7282 isl::checked::ast_node ast_node_list::get_at(int index) const
7284 return at(index);
7287 isl::checked::ast_node_list ast_node_list::clear() const
7289 auto res = isl_ast_node_list_clear(copy());
7290 return manage(res);
7293 isl::checked::ast_node_list ast_node_list::concat(isl::checked::ast_node_list list2) const
7295 auto res = isl_ast_node_list_concat(copy(), list2.release());
7296 return manage(res);
7299 isl::checked::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
7301 auto res = isl_ast_node_list_drop(copy(), first, n);
7302 return manage(res);
7305 stat ast_node_list::foreach(const std::function<stat(isl::checked::ast_node)> &fn) const
7307 struct fn_data {
7308 std::function<stat(isl::checked::ast_node)> func;
7309 } fn_data = { fn };
7310 auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
7311 auto *data = static_cast<struct fn_data *>(arg_1);
7312 auto ret = (data->func)(manage(arg_0));
7313 return ret.release();
7315 auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
7316 return manage(res);
7319 stat ast_node_list::foreach_scc(const std::function<boolean(isl::checked::ast_node, isl::checked::ast_node)> &follows, const std::function<stat(isl::checked::ast_node_list)> &fn) const
7321 struct follows_data {
7322 std::function<boolean(isl::checked::ast_node, isl::checked::ast_node)> func;
7323 } follows_data = { follows };
7324 auto follows_lambda = [](isl_ast_node *arg_0, isl_ast_node *arg_1, void *arg_2) -> isl_bool {
7325 auto *data = static_cast<struct follows_data *>(arg_2);
7326 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
7327 return ret.release();
7329 struct fn_data {
7330 std::function<stat(isl::checked::ast_node_list)> func;
7331 } fn_data = { fn };
7332 auto fn_lambda = [](isl_ast_node_list *arg_0, void *arg_1) -> isl_stat {
7333 auto *data = static_cast<struct fn_data *>(arg_1);
7334 auto ret = (data->func)(manage(arg_0));
7335 return ret.release();
7337 auto res = isl_ast_node_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
7338 return manage(res);
7341 isl::checked::ast_node_list ast_node_list::insert(unsigned int pos, isl::checked::ast_node el) const
7343 auto res = isl_ast_node_list_insert(copy(), pos, el.release());
7344 return manage(res);
7347 isl::checked::ast_node_list ast_node_list::set_at(int index, isl::checked::ast_node el) const
7349 auto res = isl_ast_node_list_set_at(copy(), index, el.release());
7350 return manage(res);
7353 class size ast_node_list::size() const
7355 auto res = isl_ast_node_list_size(get());
7356 return manage(res);
7359 inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
7361 char *str = isl_ast_node_list_to_str(obj.get());
7362 if (!str) {
7363 os.setstate(std::ios_base::badbit);
7364 return os;
7366 os << str;
7367 free(str);
7368 return os;
7371 // implementations for isl::ast_node_mark
7372 ast_node_mark::ast_node_mark(__isl_take isl_ast_node *ptr)
7373 : ast_node(ptr) {}
7375 ast_node_mark::ast_node_mark()
7376 : ast_node() {}
7378 ast_node_mark::ast_node_mark(const ast_node_mark &obj)
7379 : ast_node(obj)
7383 ast_node_mark &ast_node_mark::operator=(ast_node_mark obj) {
7384 std::swap(this->ptr, obj.ptr);
7385 return *this;
7388 isl::checked::ctx ast_node_mark::ctx() const {
7389 return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
7392 isl::checked::id ast_node_mark::id() const
7394 auto res = isl_ast_node_mark_get_id(get());
7395 return manage(res);
7398 isl::checked::id ast_node_mark::get_id() const
7400 return id();
7403 isl::checked::ast_node ast_node_mark::node() const
7405 auto res = isl_ast_node_mark_get_node(get());
7406 return manage(res);
7409 isl::checked::ast_node ast_node_mark::get_node() const
7411 return node();
7414 inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
7416 char *str = isl_ast_node_to_str(obj.get());
7417 if (!str) {
7418 os.setstate(std::ios_base::badbit);
7419 return os;
7421 os << str;
7422 free(str);
7423 return os;
7426 // implementations for isl::ast_node_user
7427 ast_node_user::ast_node_user(__isl_take isl_ast_node *ptr)
7428 : ast_node(ptr) {}
7430 ast_node_user::ast_node_user()
7431 : ast_node() {}
7433 ast_node_user::ast_node_user(const ast_node_user &obj)
7434 : ast_node(obj)
7438 ast_node_user::ast_node_user(isl::checked::ast_expr expr)
7440 auto res = isl_ast_node_user_from_expr(expr.release());
7441 ptr = res;
7444 ast_node_user &ast_node_user::operator=(ast_node_user obj) {
7445 std::swap(this->ptr, obj.ptr);
7446 return *this;
7449 isl::checked::ctx ast_node_user::ctx() const {
7450 return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
7453 isl::checked::ast_expr ast_node_user::expr() const
7455 auto res = isl_ast_node_user_get_expr(get());
7456 return manage(res);
7459 isl::checked::ast_expr ast_node_user::get_expr() const
7461 return expr();
7464 inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
7466 char *str = isl_ast_node_to_str(obj.get());
7467 if (!str) {
7468 os.setstate(std::ios_base::badbit);
7469 return os;
7471 os << str;
7472 free(str);
7473 return os;
7476 // implementations for isl::basic_map
7477 basic_map manage(__isl_take isl_basic_map *ptr) {
7478 return basic_map(ptr);
7480 basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
7481 ptr = isl_basic_map_copy(ptr);
7482 return basic_map(ptr);
7485 basic_map::basic_map(__isl_take isl_basic_map *ptr)
7486 : ptr(ptr) {}
7488 basic_map::basic_map()
7489 : ptr(nullptr) {}
7491 basic_map::basic_map(const basic_map &obj)
7492 : ptr(nullptr)
7494 ptr = obj.copy();
7497 basic_map::basic_map(isl::checked::ctx ctx, const std::string &str)
7499 auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
7500 ptr = res;
7503 basic_map &basic_map::operator=(basic_map obj) {
7504 std::swap(this->ptr, obj.ptr);
7505 return *this;
7508 basic_map::~basic_map() {
7509 if (ptr)
7510 isl_basic_map_free(ptr);
7513 __isl_give isl_basic_map *basic_map::copy() const & {
7514 return isl_basic_map_copy(ptr);
7517 __isl_keep isl_basic_map *basic_map::get() const {
7518 return ptr;
7521 __isl_give isl_basic_map *basic_map::release() {
7522 isl_basic_map *tmp = ptr;
7523 ptr = nullptr;
7524 return tmp;
7527 bool basic_map::is_null() const {
7528 return ptr == nullptr;
7531 isl::checked::ctx basic_map::ctx() const {
7532 return isl::checked::ctx(isl_basic_map_get_ctx(ptr));
7535 isl::checked::basic_map basic_map::affine_hull() const
7537 auto res = isl_basic_map_affine_hull(copy());
7538 return manage(res);
7541 isl::checked::basic_map basic_map::apply_domain(isl::checked::basic_map bmap2) const
7543 auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
7544 return manage(res);
7547 isl::checked::map basic_map::apply_domain(const isl::checked::map &map2) const
7549 return isl::checked::map(*this).apply_domain(map2);
7552 isl::checked::union_map basic_map::apply_domain(const isl::checked::union_map &umap2) const
7554 return isl::checked::map(*this).apply_domain(umap2);
7557 isl::checked::basic_map basic_map::apply_range(isl::checked::basic_map bmap2) const
7559 auto res = isl_basic_map_apply_range(copy(), bmap2.release());
7560 return manage(res);
7563 isl::checked::map basic_map::apply_range(const isl::checked::map &map2) const
7565 return isl::checked::map(*this).apply_range(map2);
7568 isl::checked::union_map basic_map::apply_range(const isl::checked::union_map &umap2) const
7570 return isl::checked::map(*this).apply_range(umap2);
7573 isl::checked::map basic_map::as_map() const
7575 return isl::checked::map(*this).as_map();
7578 isl::checked::multi_union_pw_aff basic_map::as_multi_union_pw_aff() const
7580 return isl::checked::map(*this).as_multi_union_pw_aff();
7583 isl::checked::pw_multi_aff basic_map::as_pw_multi_aff() const
7585 return isl::checked::map(*this).as_pw_multi_aff();
7588 isl::checked::union_pw_multi_aff basic_map::as_union_pw_multi_aff() const
7590 return isl::checked::map(*this).as_union_pw_multi_aff();
7593 isl::checked::set basic_map::bind_domain(const isl::checked::multi_id &tuple) const
7595 return isl::checked::map(*this).bind_domain(tuple);
7598 isl::checked::set basic_map::bind_range(const isl::checked::multi_id &tuple) const
7600 return isl::checked::map(*this).bind_range(tuple);
7603 isl::checked::map basic_map::coalesce() const
7605 return isl::checked::map(*this).coalesce();
7608 isl::checked::map basic_map::complement() const
7610 return isl::checked::map(*this).complement();
7613 isl::checked::union_map basic_map::compute_divs() const
7615 return isl::checked::map(*this).compute_divs();
7618 isl::checked::map basic_map::curry() const
7620 return isl::checked::map(*this).curry();
7623 isl::checked::basic_set basic_map::deltas() const
7625 auto res = isl_basic_map_deltas(copy());
7626 return manage(res);
7629 isl::checked::basic_map basic_map::detect_equalities() const
7631 auto res = isl_basic_map_detect_equalities(copy());
7632 return manage(res);
7635 isl::checked::set basic_map::domain() const
7637 return isl::checked::map(*this).domain();
7640 isl::checked::map basic_map::domain_factor_domain() const
7642 return isl::checked::map(*this).domain_factor_domain();
7645 isl::checked::map basic_map::domain_factor_range() const
7647 return isl::checked::map(*this).domain_factor_range();
7650 isl::checked::union_map basic_map::domain_map() const
7652 return isl::checked::map(*this).domain_map();
7655 isl::checked::union_pw_multi_aff basic_map::domain_map_union_pw_multi_aff() const
7657 return isl::checked::map(*this).domain_map_union_pw_multi_aff();
7660 isl::checked::map basic_map::domain_product(const isl::checked::map &map2) const
7662 return isl::checked::map(*this).domain_product(map2);
7665 isl::checked::union_map basic_map::domain_product(const isl::checked::union_map &umap2) const
7667 return isl::checked::map(*this).domain_product(umap2);
7670 isl::checked::map basic_map::domain_reverse() const
7672 return isl::checked::map(*this).domain_reverse();
7675 class size basic_map::domain_tuple_dim() const
7677 return isl::checked::map(*this).domain_tuple_dim();
7680 isl::checked::id basic_map::domain_tuple_id() const
7682 return isl::checked::map(*this).domain_tuple_id();
7685 isl::checked::map basic_map::drop_unused_params() const
7687 return isl::checked::map(*this).drop_unused_params();
7690 isl::checked::map basic_map::eq_at(const isl::checked::multi_pw_aff &mpa) const
7692 return isl::checked::map(*this).eq_at(mpa);
7695 isl::checked::union_map basic_map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
7697 return isl::checked::map(*this).eq_at(mupa);
7700 boolean basic_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
7702 return isl::checked::map(*this).every_map(test);
7705 isl::checked::map basic_map::extract_map(const isl::checked::space &space) const
7707 return isl::checked::map(*this).extract_map(space);
7710 isl::checked::map basic_map::factor_domain() const
7712 return isl::checked::map(*this).factor_domain();
7715 isl::checked::map basic_map::factor_range() const
7717 return isl::checked::map(*this).factor_range();
7720 isl::checked::map basic_map::fixed_power(const isl::checked::val &exp) const
7722 return isl::checked::map(*this).fixed_power(exp);
7725 isl::checked::map basic_map::fixed_power(long exp) const
7727 return this->fixed_power(isl::checked::val(ctx(), exp));
7730 isl::checked::basic_map basic_map::flatten() const
7732 auto res = isl_basic_map_flatten(copy());
7733 return manage(res);
7736 isl::checked::basic_map basic_map::flatten_domain() const
7738 auto res = isl_basic_map_flatten_domain(copy());
7739 return manage(res);
7742 isl::checked::basic_map basic_map::flatten_range() const
7744 auto res = isl_basic_map_flatten_range(copy());
7745 return manage(res);
7748 stat basic_map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
7750 return isl::checked::map(*this).foreach_basic_map(fn);
7753 stat basic_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
7755 return isl::checked::map(*this).foreach_map(fn);
7758 isl::checked::basic_map basic_map::gist(isl::checked::basic_map context) const
7760 auto res = isl_basic_map_gist(copy(), context.release());
7761 return manage(res);
7764 isl::checked::map basic_map::gist(const isl::checked::map &context) const
7766 return isl::checked::map(*this).gist(context);
7769 isl::checked::union_map basic_map::gist(const isl::checked::union_map &context) const
7771 return isl::checked::map(*this).gist(context);
7774 isl::checked::map basic_map::gist_domain(const isl::checked::set &context) const
7776 return isl::checked::map(*this).gist_domain(context);
7779 isl::checked::union_map basic_map::gist_domain(const isl::checked::union_set &uset) const
7781 return isl::checked::map(*this).gist_domain(uset);
7784 isl::checked::map basic_map::gist_params(const isl::checked::set &context) const
7786 return isl::checked::map(*this).gist_params(context);
7789 isl::checked::union_map basic_map::gist_range(const isl::checked::union_set &uset) const
7791 return isl::checked::map(*this).gist_range(uset);
7794 boolean basic_map::has_domain_tuple_id() const
7796 return isl::checked::map(*this).has_domain_tuple_id();
7799 boolean basic_map::has_range_tuple_id() const
7801 return isl::checked::map(*this).has_range_tuple_id();
7804 isl::checked::basic_map basic_map::intersect(isl::checked::basic_map bmap2) const
7806 auto res = isl_basic_map_intersect(copy(), bmap2.release());
7807 return manage(res);
7810 isl::checked::map basic_map::intersect(const isl::checked::map &map2) const
7812 return isl::checked::map(*this).intersect(map2);
7815 isl::checked::union_map basic_map::intersect(const isl::checked::union_map &umap2) const
7817 return isl::checked::map(*this).intersect(umap2);
7820 isl::checked::basic_map basic_map::intersect_domain(isl::checked::basic_set bset) const
7822 auto res = isl_basic_map_intersect_domain(copy(), bset.release());
7823 return manage(res);
7826 isl::checked::map basic_map::intersect_domain(const isl::checked::set &set) const
7828 return isl::checked::map(*this).intersect_domain(set);
7831 isl::checked::union_map basic_map::intersect_domain(const isl::checked::space &space) const
7833 return isl::checked::map(*this).intersect_domain(space);
7836 isl::checked::union_map basic_map::intersect_domain(const isl::checked::union_set &uset) const
7838 return isl::checked::map(*this).intersect_domain(uset);
7841 isl::checked::basic_map basic_map::intersect_domain(const isl::checked::point &bset) const
7843 return this->intersect_domain(isl::checked::basic_set(bset));
7846 isl::checked::map basic_map::intersect_domain_factor_domain(const isl::checked::map &factor) const
7848 return isl::checked::map(*this).intersect_domain_factor_domain(factor);
7851 isl::checked::union_map basic_map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
7853 return isl::checked::map(*this).intersect_domain_factor_domain(factor);
7856 isl::checked::map basic_map::intersect_domain_factor_range(const isl::checked::map &factor) const
7858 return isl::checked::map(*this).intersect_domain_factor_range(factor);
7861 isl::checked::union_map basic_map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
7863 return isl::checked::map(*this).intersect_domain_factor_range(factor);
7866 isl::checked::map basic_map::intersect_domain_wrapped_domain(const isl::checked::set &domain) const
7868 return isl::checked::map(*this).intersect_domain_wrapped_domain(domain);
7871 isl::checked::union_map basic_map::intersect_domain_wrapped_domain(const isl::checked::union_set &domain) const
7873 return isl::checked::map(*this).intersect_domain_wrapped_domain(domain);
7876 isl::checked::basic_map basic_map::intersect_params(isl::checked::basic_set bset) const
7878 auto res = isl_basic_map_intersect_params(copy(), bset.release());
7879 return manage(res);
7882 isl::checked::map basic_map::intersect_params(const isl::checked::set &params) const
7884 return isl::checked::map(*this).intersect_params(params);
7887 isl::checked::basic_map basic_map::intersect_params(const isl::checked::point &bset) const
7889 return this->intersect_params(isl::checked::basic_set(bset));
7892 isl::checked::basic_map basic_map::intersect_range(isl::checked::basic_set bset) const
7894 auto res = isl_basic_map_intersect_range(copy(), bset.release());
7895 return manage(res);
7898 isl::checked::map basic_map::intersect_range(const isl::checked::set &set) const
7900 return isl::checked::map(*this).intersect_range(set);
7903 isl::checked::union_map basic_map::intersect_range(const isl::checked::space &space) const
7905 return isl::checked::map(*this).intersect_range(space);
7908 isl::checked::union_map basic_map::intersect_range(const isl::checked::union_set &uset) const
7910 return isl::checked::map(*this).intersect_range(uset);
7913 isl::checked::basic_map basic_map::intersect_range(const isl::checked::point &bset) const
7915 return this->intersect_range(isl::checked::basic_set(bset));
7918 isl::checked::map basic_map::intersect_range_factor_domain(const isl::checked::map &factor) const
7920 return isl::checked::map(*this).intersect_range_factor_domain(factor);
7923 isl::checked::union_map basic_map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
7925 return isl::checked::map(*this).intersect_range_factor_domain(factor);
7928 isl::checked::map basic_map::intersect_range_factor_range(const isl::checked::map &factor) const
7930 return isl::checked::map(*this).intersect_range_factor_range(factor);
7933 isl::checked::union_map basic_map::intersect_range_factor_range(const isl::checked::union_map &factor) const
7935 return isl::checked::map(*this).intersect_range_factor_range(factor);
7938 isl::checked::map basic_map::intersect_range_wrapped_domain(const isl::checked::set &domain) const
7940 return isl::checked::map(*this).intersect_range_wrapped_domain(domain);
7943 isl::checked::union_map basic_map::intersect_range_wrapped_domain(const isl::checked::union_set &domain) const
7945 return isl::checked::map(*this).intersect_range_wrapped_domain(domain);
7948 boolean basic_map::is_bijective() const
7950 return isl::checked::map(*this).is_bijective();
7953 boolean basic_map::is_disjoint(const isl::checked::map &map2) const
7955 return isl::checked::map(*this).is_disjoint(map2);
7958 boolean basic_map::is_disjoint(const isl::checked::union_map &umap2) const
7960 return isl::checked::map(*this).is_disjoint(umap2);
7963 boolean basic_map::is_empty() const
7965 auto res = isl_basic_map_is_empty(get());
7966 return manage(res);
7969 boolean basic_map::is_equal(const isl::checked::basic_map &bmap2) const
7971 auto res = isl_basic_map_is_equal(get(), bmap2.get());
7972 return manage(res);
7975 boolean basic_map::is_equal(const isl::checked::map &map2) const
7977 return isl::checked::map(*this).is_equal(map2);
7980 boolean basic_map::is_equal(const isl::checked::union_map &umap2) const
7982 return isl::checked::map(*this).is_equal(umap2);
7985 boolean basic_map::is_injective() const
7987 return isl::checked::map(*this).is_injective();
7990 boolean basic_map::is_single_valued() const
7992 return isl::checked::map(*this).is_single_valued();
7995 boolean basic_map::is_strict_subset(const isl::checked::map &map2) const
7997 return isl::checked::map(*this).is_strict_subset(map2);
8000 boolean basic_map::is_strict_subset(const isl::checked::union_map &umap2) const
8002 return isl::checked::map(*this).is_strict_subset(umap2);
8005 boolean basic_map::is_subset(const isl::checked::basic_map &bmap2) const
8007 auto res = isl_basic_map_is_subset(get(), bmap2.get());
8008 return manage(res);
8011 boolean basic_map::is_subset(const isl::checked::map &map2) const
8013 return isl::checked::map(*this).is_subset(map2);
8016 boolean basic_map::is_subset(const isl::checked::union_map &umap2) const
8018 return isl::checked::map(*this).is_subset(umap2);
8021 boolean basic_map::isa_map() const
8023 return isl::checked::map(*this).isa_map();
8026 isl::checked::map basic_map::lex_ge_at(const isl::checked::multi_pw_aff &mpa) const
8028 return isl::checked::map(*this).lex_ge_at(mpa);
8031 isl::checked::map basic_map::lex_gt_at(const isl::checked::multi_pw_aff &mpa) const
8033 return isl::checked::map(*this).lex_gt_at(mpa);
8036 isl::checked::map basic_map::lex_le_at(const isl::checked::multi_pw_aff &mpa) const
8038 return isl::checked::map(*this).lex_le_at(mpa);
8041 isl::checked::map basic_map::lex_lt_at(const isl::checked::multi_pw_aff &mpa) const
8043 return isl::checked::map(*this).lex_lt_at(mpa);
8046 isl::checked::map basic_map::lexmax() const
8048 auto res = isl_basic_map_lexmax(copy());
8049 return manage(res);
8052 isl::checked::pw_multi_aff basic_map::lexmax_pw_multi_aff() const
8054 return isl::checked::map(*this).lexmax_pw_multi_aff();
8057 isl::checked::map basic_map::lexmin() const
8059 auto res = isl_basic_map_lexmin(copy());
8060 return manage(res);
8063 isl::checked::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
8065 return isl::checked::map(*this).lexmin_pw_multi_aff();
8068 isl::checked::map basic_map::lower_bound(const isl::checked::multi_pw_aff &lower) const
8070 return isl::checked::map(*this).lower_bound(lower);
8073 isl::checked::map_list basic_map::map_list() const
8075 return isl::checked::map(*this).map_list();
8078 isl::checked::multi_pw_aff basic_map::max_multi_pw_aff() const
8080 return isl::checked::map(*this).max_multi_pw_aff();
8083 isl::checked::multi_pw_aff basic_map::min_multi_pw_aff() const
8085 return isl::checked::map(*this).min_multi_pw_aff();
8088 class size basic_map::n_basic_map() const
8090 return isl::checked::map(*this).n_basic_map();
8093 isl::checked::set basic_map::params() const
8095 return isl::checked::map(*this).params();
8098 isl::checked::basic_map basic_map::polyhedral_hull() const
8100 return isl::checked::map(*this).polyhedral_hull();
8103 isl::checked::map basic_map::preimage_domain(const isl::checked::multi_aff &ma) const
8105 return isl::checked::map(*this).preimage_domain(ma);
8108 isl::checked::map basic_map::preimage_domain(const isl::checked::multi_pw_aff &mpa) const
8110 return isl::checked::map(*this).preimage_domain(mpa);
8113 isl::checked::map basic_map::preimage_domain(const isl::checked::pw_multi_aff &pma) const
8115 return isl::checked::map(*this).preimage_domain(pma);
8118 isl::checked::union_map basic_map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
8120 return isl::checked::map(*this).preimage_domain(upma);
8123 isl::checked::map basic_map::preimage_range(const isl::checked::multi_aff &ma) const
8125 return isl::checked::map(*this).preimage_range(ma);
8128 isl::checked::map basic_map::preimage_range(const isl::checked::pw_multi_aff &pma) const
8130 return isl::checked::map(*this).preimage_range(pma);
8133 isl::checked::union_map basic_map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
8135 return isl::checked::map(*this).preimage_range(upma);
8138 isl::checked::map basic_map::product(const isl::checked::map &map2) const
8140 return isl::checked::map(*this).product(map2);
8143 isl::checked::union_map basic_map::product(const isl::checked::union_map &umap2) const
8145 return isl::checked::map(*this).product(umap2);
8148 isl::checked::map basic_map::project_out_all_params() const
8150 return isl::checked::map(*this).project_out_all_params();
8153 isl::checked::map basic_map::project_out_param(const isl::checked::id &id) const
8155 return isl::checked::map(*this).project_out_param(id);
8158 isl::checked::map basic_map::project_out_param(const std::string &id) const
8160 return this->project_out_param(isl::checked::id(ctx(), id));
8163 isl::checked::map basic_map::project_out_param(const isl::checked::id_list &list) const
8165 return isl::checked::map(*this).project_out_param(list);
8168 isl::checked::set basic_map::range() const
8170 return isl::checked::map(*this).range();
8173 isl::checked::map basic_map::range_factor_domain() const
8175 return isl::checked::map(*this).range_factor_domain();
8178 isl::checked::map basic_map::range_factor_range() const
8180 return isl::checked::map(*this).range_factor_range();
8183 isl::checked::fixed_box basic_map::range_lattice_tile() const
8185 return isl::checked::map(*this).range_lattice_tile();
8188 isl::checked::union_map basic_map::range_map() const
8190 return isl::checked::map(*this).range_map();
8193 isl::checked::map basic_map::range_product(const isl::checked::map &map2) const
8195 return isl::checked::map(*this).range_product(map2);
8198 isl::checked::union_map basic_map::range_product(const isl::checked::union_map &umap2) const
8200 return isl::checked::map(*this).range_product(umap2);
8203 isl::checked::map basic_map::range_reverse() const
8205 return isl::checked::map(*this).range_reverse();
8208 isl::checked::fixed_box basic_map::range_simple_fixed_box_hull() const
8210 return isl::checked::map(*this).range_simple_fixed_box_hull();
8213 class size basic_map::range_tuple_dim() const
8215 return isl::checked::map(*this).range_tuple_dim();
8218 isl::checked::id basic_map::range_tuple_id() const
8220 return isl::checked::map(*this).range_tuple_id();
8223 isl::checked::basic_map basic_map::reverse() const
8225 auto res = isl_basic_map_reverse(copy());
8226 return manage(res);
8229 isl::checked::basic_map basic_map::sample() const
8231 auto res = isl_basic_map_sample(copy());
8232 return manage(res);
8235 isl::checked::map basic_map::set_domain_tuple(const isl::checked::id &id) const
8237 return isl::checked::map(*this).set_domain_tuple(id);
8240 isl::checked::map basic_map::set_domain_tuple(const std::string &id) const
8242 return this->set_domain_tuple(isl::checked::id(ctx(), id));
8245 isl::checked::map basic_map::set_range_tuple(const isl::checked::id &id) const
8247 return isl::checked::map(*this).set_range_tuple(id);
8250 isl::checked::map basic_map::set_range_tuple(const std::string &id) const
8252 return this->set_range_tuple(isl::checked::id(ctx(), id));
8255 isl::checked::space basic_map::space() const
8257 return isl::checked::map(*this).space();
8260 isl::checked::map basic_map::subtract(const isl::checked::map &map2) const
8262 return isl::checked::map(*this).subtract(map2);
8265 isl::checked::union_map basic_map::subtract(const isl::checked::union_map &umap2) const
8267 return isl::checked::map(*this).subtract(umap2);
8270 isl::checked::union_map basic_map::subtract_domain(const isl::checked::union_set &dom) const
8272 return isl::checked::map(*this).subtract_domain(dom);
8275 isl::checked::union_map basic_map::subtract_range(const isl::checked::union_set &dom) const
8277 return isl::checked::map(*this).subtract_range(dom);
8280 isl::checked::map_list basic_map::to_list() const
8282 return isl::checked::map(*this).to_list();
8285 isl::checked::union_map basic_map::to_union_map() const
8287 return isl::checked::map(*this).to_union_map();
8290 isl::checked::map basic_map::uncurry() const
8292 return isl::checked::map(*this).uncurry();
8295 isl::checked::map basic_map::unite(isl::checked::basic_map bmap2) const
8297 auto res = isl_basic_map_union(copy(), bmap2.release());
8298 return manage(res);
8301 isl::checked::map basic_map::unite(const isl::checked::map &map2) const
8303 return isl::checked::map(*this).unite(map2);
8306 isl::checked::union_map basic_map::unite(const isl::checked::union_map &umap2) const
8308 return isl::checked::map(*this).unite(umap2);
8311 isl::checked::basic_map basic_map::unshifted_simple_hull() const
8313 return isl::checked::map(*this).unshifted_simple_hull();
8316 isl::checked::map basic_map::upper_bound(const isl::checked::multi_pw_aff &upper) const
8318 return isl::checked::map(*this).upper_bound(upper);
8321 isl::checked::set basic_map::wrap() const
8323 return isl::checked::map(*this).wrap();
8326 isl::checked::map basic_map::zip() const
8328 return isl::checked::map(*this).zip();
8331 inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
8333 char *str = isl_basic_map_to_str(obj.get());
8334 if (!str) {
8335 os.setstate(std::ios_base::badbit);
8336 return os;
8338 os << str;
8339 free(str);
8340 return os;
8343 // implementations for isl::basic_set
8344 basic_set manage(__isl_take isl_basic_set *ptr) {
8345 return basic_set(ptr);
8347 basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
8348 ptr = isl_basic_set_copy(ptr);
8349 return basic_set(ptr);
8352 basic_set::basic_set(__isl_take isl_basic_set *ptr)
8353 : ptr(ptr) {}
8355 basic_set::basic_set()
8356 : ptr(nullptr) {}
8358 basic_set::basic_set(const basic_set &obj)
8359 : ptr(nullptr)
8361 ptr = obj.copy();
8364 basic_set::basic_set(isl::checked::point pnt)
8366 auto res = isl_basic_set_from_point(pnt.release());
8367 ptr = res;
8370 basic_set::basic_set(isl::checked::ctx ctx, const std::string &str)
8372 auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
8373 ptr = res;
8376 basic_set &basic_set::operator=(basic_set obj) {
8377 std::swap(this->ptr, obj.ptr);
8378 return *this;
8381 basic_set::~basic_set() {
8382 if (ptr)
8383 isl_basic_set_free(ptr);
8386 __isl_give isl_basic_set *basic_set::copy() const & {
8387 return isl_basic_set_copy(ptr);
8390 __isl_keep isl_basic_set *basic_set::get() const {
8391 return ptr;
8394 __isl_give isl_basic_set *basic_set::release() {
8395 isl_basic_set *tmp = ptr;
8396 ptr = nullptr;
8397 return tmp;
8400 bool basic_set::is_null() const {
8401 return ptr == nullptr;
8404 isl::checked::ctx basic_set::ctx() const {
8405 return isl::checked::ctx(isl_basic_set_get_ctx(ptr));
8408 isl::checked::basic_set basic_set::affine_hull() const
8410 auto res = isl_basic_set_affine_hull(copy());
8411 return manage(res);
8414 isl::checked::basic_set basic_set::apply(isl::checked::basic_map bmap) const
8416 auto res = isl_basic_set_apply(copy(), bmap.release());
8417 return manage(res);
8420 isl::checked::set basic_set::apply(const isl::checked::map &map) const
8422 return isl::checked::set(*this).apply(map);
8425 isl::checked::union_set basic_set::apply(const isl::checked::union_map &umap) const
8427 return isl::checked::set(*this).apply(umap);
8430 isl::checked::pw_multi_aff basic_set::as_pw_multi_aff() const
8432 return isl::checked::set(*this).as_pw_multi_aff();
8435 isl::checked::set basic_set::as_set() const
8437 return isl::checked::set(*this).as_set();
8440 isl::checked::set basic_set::bind(const isl::checked::multi_id &tuple) const
8442 return isl::checked::set(*this).bind(tuple);
8445 isl::checked::set basic_set::coalesce() const
8447 return isl::checked::set(*this).coalesce();
8450 isl::checked::set basic_set::complement() const
8452 return isl::checked::set(*this).complement();
8455 isl::checked::union_set basic_set::compute_divs() const
8457 return isl::checked::set(*this).compute_divs();
8460 isl::checked::basic_set basic_set::detect_equalities() const
8462 auto res = isl_basic_set_detect_equalities(copy());
8463 return manage(res);
8466 isl::checked::val basic_set::dim_max_val(int pos) const
8468 auto res = isl_basic_set_dim_max_val(copy(), pos);
8469 return manage(res);
8472 isl::checked::val basic_set::dim_min_val(int pos) const
8474 return isl::checked::set(*this).dim_min_val(pos);
8477 isl::checked::set basic_set::drop_unused_params() const
8479 return isl::checked::set(*this).drop_unused_params();
8482 boolean basic_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
8484 return isl::checked::set(*this).every_set(test);
8487 isl::checked::set basic_set::extract_set(const isl::checked::space &space) const
8489 return isl::checked::set(*this).extract_set(space);
8492 isl::checked::basic_set basic_set::flatten() const
8494 auto res = isl_basic_set_flatten(copy());
8495 return manage(res);
8498 stat basic_set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
8500 return isl::checked::set(*this).foreach_basic_set(fn);
8503 stat basic_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
8505 return isl::checked::set(*this).foreach_point(fn);
8508 stat basic_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
8510 return isl::checked::set(*this).foreach_set(fn);
8513 isl::checked::basic_set basic_set::gist(isl::checked::basic_set context) const
8515 auto res = isl_basic_set_gist(copy(), context.release());
8516 return manage(res);
8519 isl::checked::set basic_set::gist(const isl::checked::set &context) const
8521 return isl::checked::set(*this).gist(context);
8524 isl::checked::union_set basic_set::gist(const isl::checked::union_set &context) const
8526 return isl::checked::set(*this).gist(context);
8529 isl::checked::basic_set basic_set::gist(const isl::checked::point &context) const
8531 return this->gist(isl::checked::basic_set(context));
8534 isl::checked::set basic_set::gist_params(const isl::checked::set &context) const
8536 return isl::checked::set(*this).gist_params(context);
8539 isl::checked::map basic_set::identity() const
8541 return isl::checked::set(*this).identity();
8544 isl::checked::pw_aff basic_set::indicator_function() const
8546 return isl::checked::set(*this).indicator_function();
8549 isl::checked::map basic_set::insert_domain(const isl::checked::space &domain) const
8551 return isl::checked::set(*this).insert_domain(domain);
8554 isl::checked::basic_set basic_set::intersect(isl::checked::basic_set bset2) const
8556 auto res = isl_basic_set_intersect(copy(), bset2.release());
8557 return manage(res);
8560 isl::checked::set basic_set::intersect(const isl::checked::set &set2) const
8562 return isl::checked::set(*this).intersect(set2);
8565 isl::checked::union_set basic_set::intersect(const isl::checked::union_set &uset2) const
8567 return isl::checked::set(*this).intersect(uset2);
8570 isl::checked::basic_set basic_set::intersect(const isl::checked::point &bset2) const
8572 return this->intersect(isl::checked::basic_set(bset2));
8575 isl::checked::basic_set basic_set::intersect_params(isl::checked::basic_set bset2) const
8577 auto res = isl_basic_set_intersect_params(copy(), bset2.release());
8578 return manage(res);
8581 isl::checked::set basic_set::intersect_params(const isl::checked::set &params) const
8583 return isl::checked::set(*this).intersect_params(params);
8586 isl::checked::basic_set basic_set::intersect_params(const isl::checked::point &bset2) const
8588 return this->intersect_params(isl::checked::basic_set(bset2));
8591 boolean basic_set::involves_locals() const
8593 return isl::checked::set(*this).involves_locals();
8596 boolean basic_set::is_disjoint(const isl::checked::set &set2) const
8598 return isl::checked::set(*this).is_disjoint(set2);
8601 boolean basic_set::is_disjoint(const isl::checked::union_set &uset2) const
8603 return isl::checked::set(*this).is_disjoint(uset2);
8606 boolean basic_set::is_empty() const
8608 auto res = isl_basic_set_is_empty(get());
8609 return manage(res);
8612 boolean basic_set::is_equal(const isl::checked::basic_set &bset2) const
8614 auto res = isl_basic_set_is_equal(get(), bset2.get());
8615 return manage(res);
8618 boolean basic_set::is_equal(const isl::checked::set &set2) const
8620 return isl::checked::set(*this).is_equal(set2);
8623 boolean basic_set::is_equal(const isl::checked::union_set &uset2) const
8625 return isl::checked::set(*this).is_equal(uset2);
8628 boolean basic_set::is_equal(const isl::checked::point &bset2) const
8630 return this->is_equal(isl::checked::basic_set(bset2));
8633 boolean basic_set::is_singleton() const
8635 return isl::checked::set(*this).is_singleton();
8638 boolean basic_set::is_strict_subset(const isl::checked::set &set2) const
8640 return isl::checked::set(*this).is_strict_subset(set2);
8643 boolean basic_set::is_strict_subset(const isl::checked::union_set &uset2) const
8645 return isl::checked::set(*this).is_strict_subset(uset2);
8648 boolean basic_set::is_subset(const isl::checked::basic_set &bset2) const
8650 auto res = isl_basic_set_is_subset(get(), bset2.get());
8651 return manage(res);
8654 boolean basic_set::is_subset(const isl::checked::set &set2) const
8656 return isl::checked::set(*this).is_subset(set2);
8659 boolean basic_set::is_subset(const isl::checked::union_set &uset2) const
8661 return isl::checked::set(*this).is_subset(uset2);
8664 boolean basic_set::is_subset(const isl::checked::point &bset2) const
8666 return this->is_subset(isl::checked::basic_set(bset2));
8669 boolean basic_set::is_wrapping() const
8671 auto res = isl_basic_set_is_wrapping(get());
8672 return manage(res);
8675 boolean basic_set::isa_set() const
8677 return isl::checked::set(*this).isa_set();
8680 isl::checked::fixed_box basic_set::lattice_tile() const
8682 return isl::checked::set(*this).lattice_tile();
8685 isl::checked::set basic_set::lexmax() const
8687 auto res = isl_basic_set_lexmax(copy());
8688 return manage(res);
8691 isl::checked::pw_multi_aff basic_set::lexmax_pw_multi_aff() const
8693 return isl::checked::set(*this).lexmax_pw_multi_aff();
8696 isl::checked::set basic_set::lexmin() const
8698 auto res = isl_basic_set_lexmin(copy());
8699 return manage(res);
8702 isl::checked::pw_multi_aff basic_set::lexmin_pw_multi_aff() const
8704 return isl::checked::set(*this).lexmin_pw_multi_aff();
8707 isl::checked::set basic_set::lower_bound(const isl::checked::multi_pw_aff &lower) const
8709 return isl::checked::set(*this).lower_bound(lower);
8712 isl::checked::set basic_set::lower_bound(const isl::checked::multi_val &lower) const
8714 return isl::checked::set(*this).lower_bound(lower);
8717 isl::checked::multi_pw_aff basic_set::max_multi_pw_aff() const
8719 return isl::checked::set(*this).max_multi_pw_aff();
8722 isl::checked::val basic_set::max_val(const isl::checked::aff &obj) const
8724 return isl::checked::set(*this).max_val(obj);
8727 isl::checked::multi_pw_aff basic_set::min_multi_pw_aff() const
8729 return isl::checked::set(*this).min_multi_pw_aff();
8732 isl::checked::val basic_set::min_val(const isl::checked::aff &obj) const
8734 return isl::checked::set(*this).min_val(obj);
8737 class size basic_set::n_basic_set() const
8739 return isl::checked::set(*this).n_basic_set();
8742 isl::checked::pw_aff basic_set::param_pw_aff_on_domain(const isl::checked::id &id) const
8744 return isl::checked::set(*this).param_pw_aff_on_domain(id);
8747 isl::checked::pw_aff basic_set::param_pw_aff_on_domain(const std::string &id) const
8749 return this->param_pw_aff_on_domain(isl::checked::id(ctx(), id));
8752 isl::checked::basic_set basic_set::params() const
8754 auto res = isl_basic_set_params(copy());
8755 return manage(res);
8758 isl::checked::multi_val basic_set::plain_multi_val_if_fixed() const
8760 return isl::checked::set(*this).plain_multi_val_if_fixed();
8763 isl::checked::basic_set basic_set::polyhedral_hull() const
8765 return isl::checked::set(*this).polyhedral_hull();
8768 isl::checked::set basic_set::preimage(const isl::checked::multi_aff &ma) const
8770 return isl::checked::set(*this).preimage(ma);
8773 isl::checked::set basic_set::preimage(const isl::checked::multi_pw_aff &mpa) const
8775 return isl::checked::set(*this).preimage(mpa);
8778 isl::checked::set basic_set::preimage(const isl::checked::pw_multi_aff &pma) const
8780 return isl::checked::set(*this).preimage(pma);
8783 isl::checked::union_set basic_set::preimage(const isl::checked::union_pw_multi_aff &upma) const
8785 return isl::checked::set(*this).preimage(upma);
8788 isl::checked::set basic_set::product(const isl::checked::set &set2) const
8790 return isl::checked::set(*this).product(set2);
8793 isl::checked::set basic_set::project_out_all_params() const
8795 return isl::checked::set(*this).project_out_all_params();
8798 isl::checked::set basic_set::project_out_param(const isl::checked::id &id) const
8800 return isl::checked::set(*this).project_out_param(id);
8803 isl::checked::set basic_set::project_out_param(const std::string &id) const
8805 return this->project_out_param(isl::checked::id(ctx(), id));
8808 isl::checked::set basic_set::project_out_param(const isl::checked::id_list &list) const
8810 return isl::checked::set(*this).project_out_param(list);
8813 isl::checked::pw_aff basic_set::pw_aff_on_domain(const isl::checked::val &v) const
8815 return isl::checked::set(*this).pw_aff_on_domain(v);
8818 isl::checked::pw_aff basic_set::pw_aff_on_domain(long v) const
8820 return this->pw_aff_on_domain(isl::checked::val(ctx(), v));
8823 isl::checked::pw_multi_aff basic_set::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
8825 return isl::checked::set(*this).pw_multi_aff_on_domain(mv);
8828 isl::checked::basic_set basic_set::sample() const
8830 auto res = isl_basic_set_sample(copy());
8831 return manage(res);
8834 isl::checked::point basic_set::sample_point() const
8836 auto res = isl_basic_set_sample_point(copy());
8837 return manage(res);
8840 isl::checked::set_list basic_set::set_list() const
8842 return isl::checked::set(*this).set_list();
8845 isl::checked::fixed_box basic_set::simple_fixed_box_hull() const
8847 return isl::checked::set(*this).simple_fixed_box_hull();
8850 isl::checked::space basic_set::space() const
8852 return isl::checked::set(*this).space();
8855 isl::checked::val basic_set::stride(int pos) const
8857 return isl::checked::set(*this).stride(pos);
8860 isl::checked::set basic_set::subtract(const isl::checked::set &set2) const
8862 return isl::checked::set(*this).subtract(set2);
8865 isl::checked::union_set basic_set::subtract(const isl::checked::union_set &uset2) const
8867 return isl::checked::set(*this).subtract(uset2);
8870 isl::checked::set_list basic_set::to_list() const
8872 return isl::checked::set(*this).to_list();
8875 isl::checked::set basic_set::to_set() const
8877 auto res = isl_basic_set_to_set(copy());
8878 return manage(res);
8881 isl::checked::union_set basic_set::to_union_set() const
8883 return isl::checked::set(*this).to_union_set();
8886 isl::checked::map basic_set::translation() const
8888 return isl::checked::set(*this).translation();
8891 class size basic_set::tuple_dim() const
8893 return isl::checked::set(*this).tuple_dim();
8896 isl::checked::set basic_set::unbind_params(const isl::checked::multi_id &tuple) const
8898 return isl::checked::set(*this).unbind_params(tuple);
8901 isl::checked::map basic_set::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
8903 return isl::checked::set(*this).unbind_params_insert_domain(domain);
8906 isl::checked::set basic_set::unite(isl::checked::basic_set bset2) const
8908 auto res = isl_basic_set_union(copy(), bset2.release());
8909 return manage(res);
8912 isl::checked::set basic_set::unite(const isl::checked::set &set2) const
8914 return isl::checked::set(*this).unite(set2);
8917 isl::checked::union_set basic_set::unite(const isl::checked::union_set &uset2) const
8919 return isl::checked::set(*this).unite(uset2);
8922 isl::checked::set basic_set::unite(const isl::checked::point &bset2) const
8924 return this->unite(isl::checked::basic_set(bset2));
8927 isl::checked::basic_set basic_set::unshifted_simple_hull() const
8929 return isl::checked::set(*this).unshifted_simple_hull();
8932 isl::checked::map basic_set::unwrap() const
8934 return isl::checked::set(*this).unwrap();
8937 isl::checked::set basic_set::upper_bound(const isl::checked::multi_pw_aff &upper) const
8939 return isl::checked::set(*this).upper_bound(upper);
8942 isl::checked::set basic_set::upper_bound(const isl::checked::multi_val &upper) const
8944 return isl::checked::set(*this).upper_bound(upper);
8947 isl::checked::set basic_set::wrapped_reverse() const
8949 return isl::checked::set(*this).wrapped_reverse();
8952 inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
8954 char *str = isl_basic_set_to_str(obj.get());
8955 if (!str) {
8956 os.setstate(std::ios_base::badbit);
8957 return os;
8959 os << str;
8960 free(str);
8961 return os;
8964 // implementations for isl::fixed_box
8965 fixed_box manage(__isl_take isl_fixed_box *ptr) {
8966 return fixed_box(ptr);
8968 fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
8969 ptr = isl_fixed_box_copy(ptr);
8970 return fixed_box(ptr);
8973 fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
8974 : ptr(ptr) {}
8976 fixed_box::fixed_box()
8977 : ptr(nullptr) {}
8979 fixed_box::fixed_box(const fixed_box &obj)
8980 : ptr(nullptr)
8982 ptr = obj.copy();
8985 fixed_box::fixed_box(isl::checked::ctx ctx, const std::string &str)
8987 auto res = isl_fixed_box_read_from_str(ctx.release(), str.c_str());
8988 ptr = res;
8991 fixed_box &fixed_box::operator=(fixed_box obj) {
8992 std::swap(this->ptr, obj.ptr);
8993 return *this;
8996 fixed_box::~fixed_box() {
8997 if (ptr)
8998 isl_fixed_box_free(ptr);
9001 __isl_give isl_fixed_box *fixed_box::copy() const & {
9002 return isl_fixed_box_copy(ptr);
9005 __isl_keep isl_fixed_box *fixed_box::get() const {
9006 return ptr;
9009 __isl_give isl_fixed_box *fixed_box::release() {
9010 isl_fixed_box *tmp = ptr;
9011 ptr = nullptr;
9012 return tmp;
9015 bool fixed_box::is_null() const {
9016 return ptr == nullptr;
9019 isl::checked::ctx fixed_box::ctx() const {
9020 return isl::checked::ctx(isl_fixed_box_get_ctx(ptr));
9023 boolean fixed_box::is_valid() const
9025 auto res = isl_fixed_box_is_valid(get());
9026 return manage(res);
9029 isl::checked::multi_aff fixed_box::offset() const
9031 auto res = isl_fixed_box_get_offset(get());
9032 return manage(res);
9035 isl::checked::multi_aff fixed_box::get_offset() const
9037 return offset();
9040 isl::checked::multi_val fixed_box::size() const
9042 auto res = isl_fixed_box_get_size(get());
9043 return manage(res);
9046 isl::checked::multi_val fixed_box::get_size() const
9048 return size();
9051 isl::checked::space fixed_box::space() const
9053 auto res = isl_fixed_box_get_space(get());
9054 return manage(res);
9057 isl::checked::space fixed_box::get_space() const
9059 return space();
9062 inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
9064 char *str = isl_fixed_box_to_str(obj.get());
9065 if (!str) {
9066 os.setstate(std::ios_base::badbit);
9067 return os;
9069 os << str;
9070 free(str);
9071 return os;
9074 // implementations for isl::id
9075 id manage(__isl_take isl_id *ptr) {
9076 return id(ptr);
9078 id manage_copy(__isl_keep isl_id *ptr) {
9079 ptr = isl_id_copy(ptr);
9080 return id(ptr);
9083 id::id(__isl_take isl_id *ptr)
9084 : ptr(ptr) {}
9086 id::id()
9087 : ptr(nullptr) {}
9089 id::id(const id &obj)
9090 : ptr(nullptr)
9092 ptr = obj.copy();
9095 id::id(isl::checked::ctx ctx, const std::string &str)
9097 auto res = isl_id_read_from_str(ctx.release(), str.c_str());
9098 ptr = res;
9101 id &id::operator=(id obj) {
9102 std::swap(this->ptr, obj.ptr);
9103 return *this;
9106 id::~id() {
9107 if (ptr)
9108 isl_id_free(ptr);
9111 __isl_give isl_id *id::copy() const & {
9112 return isl_id_copy(ptr);
9115 __isl_keep isl_id *id::get() const {
9116 return ptr;
9119 __isl_give isl_id *id::release() {
9120 isl_id *tmp = ptr;
9121 ptr = nullptr;
9122 return tmp;
9125 bool id::is_null() const {
9126 return ptr == nullptr;
9129 isl::checked::ctx id::ctx() const {
9130 return isl::checked::ctx(isl_id_get_ctx(ptr));
9133 std::string id::name() const
9135 auto res = isl_id_get_name(get());
9136 std::string tmp(res);
9137 return tmp;
9140 std::string id::get_name() const
9142 return name();
9145 isl::checked::id_list id::to_list() const
9147 auto res = isl_id_to_list(copy());
9148 return manage(res);
9151 #if __cplusplus >= 201703L
9152 id::id(isl::checked::ctx ctx, const std::string &str, const std::any &any)
9154 std::any *p = new std::any(any);
9155 auto res = isl_id_alloc(ctx.get(), str.c_str(), p);
9156 res = isl_id_set_free_user(res, &ctx::free_user);
9157 if (!res) {
9158 delete p;
9160 ptr = res;
9163 template <class T>
9164 std::optional<T> id::try_user() const
9166 std::any *p = (std::any *) isl_id_get_user(ptr);
9167 if (!p)
9168 return std::nullopt;
9169 if (isl_id_get_free_user(ptr) != &ctx::free_user)
9170 return std::nullopt;
9171 T *res = std::any_cast<T>(p);
9172 if (!res)
9173 return std::nullopt;
9174 return *res;
9177 template <class T>
9178 T id::user() const
9180 std::any *p = (std::any *) isl_id_get_user(ptr);
9181 if (!p)
9182 isl_die(ctx().get(), isl_error_invalid, "no user pointer", return T());
9183 if (isl_id_get_free_user(ptr) != &ctx::free_user)
9184 isl_die(ctx().get(), isl_error_invalid, "user pointer not attached by C++ interface", return T());
9185 T *res = std::any_cast<T>(p);
9186 if (!res)
9187 isl_die(ctx().get(), isl_error_invalid, "user pointer not of given type", return T());
9188 return *res;
9190 #endif
9192 inline std::ostream &operator<<(std::ostream &os, const id &obj)
9194 char *str = isl_id_to_str(obj.get());
9195 if (!str) {
9196 os.setstate(std::ios_base::badbit);
9197 return os;
9199 os << str;
9200 free(str);
9201 return os;
9204 // implementations for isl::id_list
9205 id_list manage(__isl_take isl_id_list *ptr) {
9206 return id_list(ptr);
9208 id_list manage_copy(__isl_keep isl_id_list *ptr) {
9209 ptr = isl_id_list_copy(ptr);
9210 return id_list(ptr);
9213 id_list::id_list(__isl_take isl_id_list *ptr)
9214 : ptr(ptr) {}
9216 id_list::id_list()
9217 : ptr(nullptr) {}
9219 id_list::id_list(const id_list &obj)
9220 : ptr(nullptr)
9222 ptr = obj.copy();
9225 id_list::id_list(isl::checked::ctx ctx, int n)
9227 auto res = isl_id_list_alloc(ctx.release(), n);
9228 ptr = res;
9231 id_list::id_list(isl::checked::id el)
9233 auto res = isl_id_list_from_id(el.release());
9234 ptr = res;
9237 id_list::id_list(isl::checked::ctx ctx, const std::string &str)
9239 auto res = isl_id_list_read_from_str(ctx.release(), str.c_str());
9240 ptr = res;
9243 id_list &id_list::operator=(id_list obj) {
9244 std::swap(this->ptr, obj.ptr);
9245 return *this;
9248 id_list::~id_list() {
9249 if (ptr)
9250 isl_id_list_free(ptr);
9253 __isl_give isl_id_list *id_list::copy() const & {
9254 return isl_id_list_copy(ptr);
9257 __isl_keep isl_id_list *id_list::get() const {
9258 return ptr;
9261 __isl_give isl_id_list *id_list::release() {
9262 isl_id_list *tmp = ptr;
9263 ptr = nullptr;
9264 return tmp;
9267 bool id_list::is_null() const {
9268 return ptr == nullptr;
9271 isl::checked::ctx id_list::ctx() const {
9272 return isl::checked::ctx(isl_id_list_get_ctx(ptr));
9275 isl::checked::id_list id_list::add(isl::checked::id el) const
9277 auto res = isl_id_list_add(copy(), el.release());
9278 return manage(res);
9281 isl::checked::id_list id_list::add(const std::string &el) const
9283 return this->add(isl::checked::id(ctx(), el));
9286 isl::checked::id id_list::at(int index) const
9288 auto res = isl_id_list_get_at(get(), index);
9289 return manage(res);
9292 isl::checked::id id_list::get_at(int index) const
9294 return at(index);
9297 isl::checked::id_list id_list::clear() const
9299 auto res = isl_id_list_clear(copy());
9300 return manage(res);
9303 isl::checked::id_list id_list::concat(isl::checked::id_list list2) const
9305 auto res = isl_id_list_concat(copy(), list2.release());
9306 return manage(res);
9309 isl::checked::id_list id_list::drop(unsigned int first, unsigned int n) const
9311 auto res = isl_id_list_drop(copy(), first, n);
9312 return manage(res);
9315 stat id_list::foreach(const std::function<stat(isl::checked::id)> &fn) const
9317 struct fn_data {
9318 std::function<stat(isl::checked::id)> func;
9319 } fn_data = { fn };
9320 auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
9321 auto *data = static_cast<struct fn_data *>(arg_1);
9322 auto ret = (data->func)(manage(arg_0));
9323 return ret.release();
9325 auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
9326 return manage(res);
9329 stat id_list::foreach_scc(const std::function<boolean(isl::checked::id, isl::checked::id)> &follows, const std::function<stat(isl::checked::id_list)> &fn) const
9331 struct follows_data {
9332 std::function<boolean(isl::checked::id, isl::checked::id)> func;
9333 } follows_data = { follows };
9334 auto follows_lambda = [](isl_id *arg_0, isl_id *arg_1, void *arg_2) -> isl_bool {
9335 auto *data = static_cast<struct follows_data *>(arg_2);
9336 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
9337 return ret.release();
9339 struct fn_data {
9340 std::function<stat(isl::checked::id_list)> func;
9341 } fn_data = { fn };
9342 auto fn_lambda = [](isl_id_list *arg_0, void *arg_1) -> isl_stat {
9343 auto *data = static_cast<struct fn_data *>(arg_1);
9344 auto ret = (data->func)(manage(arg_0));
9345 return ret.release();
9347 auto res = isl_id_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
9348 return manage(res);
9351 isl::checked::id_list id_list::insert(unsigned int pos, isl::checked::id el) const
9353 auto res = isl_id_list_insert(copy(), pos, el.release());
9354 return manage(res);
9357 isl::checked::id_list id_list::insert(unsigned int pos, const std::string &el) const
9359 return this->insert(pos, isl::checked::id(ctx(), el));
9362 isl::checked::id_list id_list::set_at(int index, isl::checked::id el) const
9364 auto res = isl_id_list_set_at(copy(), index, el.release());
9365 return manage(res);
9368 isl::checked::id_list id_list::set_at(int index, const std::string &el) const
9370 return this->set_at(index, isl::checked::id(ctx(), el));
9373 class size id_list::size() const
9375 auto res = isl_id_list_size(get());
9376 return manage(res);
9379 inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
9381 char *str = isl_id_list_to_str(obj.get());
9382 if (!str) {
9383 os.setstate(std::ios_base::badbit);
9384 return os;
9386 os << str;
9387 free(str);
9388 return os;
9391 // implementations for isl::id_to_ast_expr
9392 id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
9393 return id_to_ast_expr(ptr);
9395 id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
9396 ptr = isl_id_to_ast_expr_copy(ptr);
9397 return id_to_ast_expr(ptr);
9400 id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr)
9401 : ptr(ptr) {}
9403 id_to_ast_expr::id_to_ast_expr()
9404 : ptr(nullptr) {}
9406 id_to_ast_expr::id_to_ast_expr(const id_to_ast_expr &obj)
9407 : ptr(nullptr)
9409 ptr = obj.copy();
9412 id_to_ast_expr::id_to_ast_expr(isl::checked::ctx ctx, int min_size)
9414 auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
9415 ptr = res;
9418 id_to_ast_expr::id_to_ast_expr(isl::checked::ctx ctx, const std::string &str)
9420 auto res = isl_id_to_ast_expr_read_from_str(ctx.release(), str.c_str());
9421 ptr = res;
9424 id_to_ast_expr &id_to_ast_expr::operator=(id_to_ast_expr obj) {
9425 std::swap(this->ptr, obj.ptr);
9426 return *this;
9429 id_to_ast_expr::~id_to_ast_expr() {
9430 if (ptr)
9431 isl_id_to_ast_expr_free(ptr);
9434 __isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
9435 return isl_id_to_ast_expr_copy(ptr);
9438 __isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
9439 return ptr;
9442 __isl_give isl_id_to_ast_expr *id_to_ast_expr::release() {
9443 isl_id_to_ast_expr *tmp = ptr;
9444 ptr = nullptr;
9445 return tmp;
9448 bool id_to_ast_expr::is_null() const {
9449 return ptr == nullptr;
9452 isl::checked::ctx id_to_ast_expr::ctx() const {
9453 return isl::checked::ctx(isl_id_to_ast_expr_get_ctx(ptr));
9456 boolean id_to_ast_expr::is_equal(const isl::checked::id_to_ast_expr &hmap2) const
9458 auto res = isl_id_to_ast_expr_is_equal(get(), hmap2.get());
9459 return manage(res);
9462 isl::checked::id_to_ast_expr id_to_ast_expr::set(isl::checked::id key, isl::checked::ast_expr val) const
9464 auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
9465 return manage(res);
9468 isl::checked::id_to_ast_expr id_to_ast_expr::set(const std::string &key, const isl::checked::ast_expr &val) const
9470 return this->set(isl::checked::id(ctx(), key), val);
9473 inline std::ostream &operator<<(std::ostream &os, const id_to_ast_expr &obj)
9475 char *str = isl_id_to_ast_expr_to_str(obj.get());
9476 if (!str) {
9477 os.setstate(std::ios_base::badbit);
9478 return os;
9480 os << str;
9481 free(str);
9482 return os;
9485 // implementations for isl::id_to_id
9486 id_to_id manage(__isl_take isl_id_to_id *ptr) {
9487 return id_to_id(ptr);
9489 id_to_id manage_copy(__isl_keep isl_id_to_id *ptr) {
9490 ptr = isl_id_to_id_copy(ptr);
9491 return id_to_id(ptr);
9494 id_to_id::id_to_id(__isl_take isl_id_to_id *ptr)
9495 : ptr(ptr) {}
9497 id_to_id::id_to_id()
9498 : ptr(nullptr) {}
9500 id_to_id::id_to_id(const id_to_id &obj)
9501 : ptr(nullptr)
9503 ptr = obj.copy();
9506 id_to_id::id_to_id(isl::checked::ctx ctx, int min_size)
9508 auto res = isl_id_to_id_alloc(ctx.release(), min_size);
9509 ptr = res;
9512 id_to_id::id_to_id(isl::checked::ctx ctx, const std::string &str)
9514 auto res = isl_id_to_id_read_from_str(ctx.release(), str.c_str());
9515 ptr = res;
9518 id_to_id &id_to_id::operator=(id_to_id obj) {
9519 std::swap(this->ptr, obj.ptr);
9520 return *this;
9523 id_to_id::~id_to_id() {
9524 if (ptr)
9525 isl_id_to_id_free(ptr);
9528 __isl_give isl_id_to_id *id_to_id::copy() const & {
9529 return isl_id_to_id_copy(ptr);
9532 __isl_keep isl_id_to_id *id_to_id::get() const {
9533 return ptr;
9536 __isl_give isl_id_to_id *id_to_id::release() {
9537 isl_id_to_id *tmp = ptr;
9538 ptr = nullptr;
9539 return tmp;
9542 bool id_to_id::is_null() const {
9543 return ptr == nullptr;
9546 isl::checked::ctx id_to_id::ctx() const {
9547 return isl::checked::ctx(isl_id_to_id_get_ctx(ptr));
9550 boolean id_to_id::is_equal(const isl::checked::id_to_id &hmap2) const
9552 auto res = isl_id_to_id_is_equal(get(), hmap2.get());
9553 return manage(res);
9556 isl::checked::id_to_id id_to_id::set(isl::checked::id key, isl::checked::id val) const
9558 auto res = isl_id_to_id_set(copy(), key.release(), val.release());
9559 return manage(res);
9562 isl::checked::id_to_id id_to_id::set(const isl::checked::id &key, const std::string &val) const
9564 return this->set(key, isl::checked::id(ctx(), val));
9567 isl::checked::id_to_id id_to_id::set(const std::string &key, const isl::checked::id &val) const
9569 return this->set(isl::checked::id(ctx(), key), val);
9572 isl::checked::id_to_id id_to_id::set(const std::string &key, const std::string &val) const
9574 return this->set(isl::checked::id(ctx(), key), isl::checked::id(ctx(), val));
9577 inline std::ostream &operator<<(std::ostream &os, const id_to_id &obj)
9579 char *str = isl_id_to_id_to_str(obj.get());
9580 if (!str) {
9581 os.setstate(std::ios_base::badbit);
9582 return os;
9584 os << str;
9585 free(str);
9586 return os;
9589 // implementations for isl::map
9590 map manage(__isl_take isl_map *ptr) {
9591 return map(ptr);
9593 map manage_copy(__isl_keep isl_map *ptr) {
9594 ptr = isl_map_copy(ptr);
9595 return map(ptr);
9598 map::map(__isl_take isl_map *ptr)
9599 : ptr(ptr) {}
9601 map::map()
9602 : ptr(nullptr) {}
9604 map::map(const map &obj)
9605 : ptr(nullptr)
9607 ptr = obj.copy();
9610 map::map(isl::checked::basic_map bmap)
9612 auto res = isl_map_from_basic_map(bmap.release());
9613 ptr = res;
9616 map::map(isl::checked::ctx ctx, const std::string &str)
9618 auto res = isl_map_read_from_str(ctx.release(), str.c_str());
9619 ptr = res;
9622 map &map::operator=(map obj) {
9623 std::swap(this->ptr, obj.ptr);
9624 return *this;
9627 map::~map() {
9628 if (ptr)
9629 isl_map_free(ptr);
9632 __isl_give isl_map *map::copy() const & {
9633 return isl_map_copy(ptr);
9636 __isl_keep isl_map *map::get() const {
9637 return ptr;
9640 __isl_give isl_map *map::release() {
9641 isl_map *tmp = ptr;
9642 ptr = nullptr;
9643 return tmp;
9646 bool map::is_null() const {
9647 return ptr == nullptr;
9650 isl::checked::ctx map::ctx() const {
9651 return isl::checked::ctx(isl_map_get_ctx(ptr));
9654 isl::checked::basic_map map::affine_hull() const
9656 auto res = isl_map_affine_hull(copy());
9657 return manage(res);
9660 isl::checked::map map::apply_domain(isl::checked::map map2) const
9662 auto res = isl_map_apply_domain(copy(), map2.release());
9663 return manage(res);
9666 isl::checked::union_map map::apply_domain(const isl::checked::union_map &umap2) const
9668 return isl::checked::union_map(*this).apply_domain(umap2);
9671 isl::checked::map map::apply_domain(const isl::checked::basic_map &map2) const
9673 return this->apply_domain(isl::checked::map(map2));
9676 isl::checked::map map::apply_range(isl::checked::map map2) const
9678 auto res = isl_map_apply_range(copy(), map2.release());
9679 return manage(res);
9682 isl::checked::union_map map::apply_range(const isl::checked::union_map &umap2) const
9684 return isl::checked::union_map(*this).apply_range(umap2);
9687 isl::checked::map map::apply_range(const isl::checked::basic_map &map2) const
9689 return this->apply_range(isl::checked::map(map2));
9692 isl::checked::map map::as_map() const
9694 return isl::checked::union_map(*this).as_map();
9697 isl::checked::multi_union_pw_aff map::as_multi_union_pw_aff() const
9699 return isl::checked::union_map(*this).as_multi_union_pw_aff();
9702 isl::checked::pw_multi_aff map::as_pw_multi_aff() const
9704 auto res = isl_map_as_pw_multi_aff(copy());
9705 return manage(res);
9708 isl::checked::union_pw_multi_aff map::as_union_pw_multi_aff() const
9710 return isl::checked::union_map(*this).as_union_pw_multi_aff();
9713 isl::checked::set map::bind_domain(isl::checked::multi_id tuple) const
9715 auto res = isl_map_bind_domain(copy(), tuple.release());
9716 return manage(res);
9719 isl::checked::set map::bind_range(isl::checked::multi_id tuple) const
9721 auto res = isl_map_bind_range(copy(), tuple.release());
9722 return manage(res);
9725 isl::checked::map map::coalesce() const
9727 auto res = isl_map_coalesce(copy());
9728 return manage(res);
9731 isl::checked::map map::complement() const
9733 auto res = isl_map_complement(copy());
9734 return manage(res);
9737 isl::checked::union_map map::compute_divs() const
9739 return isl::checked::union_map(*this).compute_divs();
9742 isl::checked::map map::curry() const
9744 auto res = isl_map_curry(copy());
9745 return manage(res);
9748 isl::checked::set map::deltas() const
9750 auto res = isl_map_deltas(copy());
9751 return manage(res);
9754 isl::checked::map map::detect_equalities() const
9756 auto res = isl_map_detect_equalities(copy());
9757 return manage(res);
9760 isl::checked::set map::domain() const
9762 auto res = isl_map_domain(copy());
9763 return manage(res);
9766 isl::checked::map map::domain_factor_domain() const
9768 auto res = isl_map_domain_factor_domain(copy());
9769 return manage(res);
9772 isl::checked::map map::domain_factor_range() const
9774 auto res = isl_map_domain_factor_range(copy());
9775 return manage(res);
9778 isl::checked::union_map map::domain_map() const
9780 return isl::checked::union_map(*this).domain_map();
9783 isl::checked::union_pw_multi_aff map::domain_map_union_pw_multi_aff() const
9785 return isl::checked::union_map(*this).domain_map_union_pw_multi_aff();
9788 isl::checked::map map::domain_product(isl::checked::map map2) const
9790 auto res = isl_map_domain_product(copy(), map2.release());
9791 return manage(res);
9794 isl::checked::union_map map::domain_product(const isl::checked::union_map &umap2) const
9796 return isl::checked::union_map(*this).domain_product(umap2);
9799 isl::checked::map map::domain_product(const isl::checked::basic_map &map2) const
9801 return this->domain_product(isl::checked::map(map2));
9804 isl::checked::map map::domain_reverse() const
9806 auto res = isl_map_domain_reverse(copy());
9807 return manage(res);
9810 class size map::domain_tuple_dim() const
9812 auto res = isl_map_domain_tuple_dim(get());
9813 return manage(res);
9816 isl::checked::id map::domain_tuple_id() const
9818 auto res = isl_map_get_domain_tuple_id(get());
9819 return manage(res);
9822 isl::checked::id map::get_domain_tuple_id() const
9824 return domain_tuple_id();
9827 isl::checked::map map::drop_unused_params() const
9829 auto res = isl_map_drop_unused_params(copy());
9830 return manage(res);
9833 isl::checked::map map::empty(isl::checked::space space)
9835 auto res = isl_map_empty(space.release());
9836 return manage(res);
9839 isl::checked::map map::eq_at(isl::checked::multi_pw_aff mpa) const
9841 auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
9842 return manage(res);
9845 isl::checked::union_map map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
9847 return isl::checked::union_map(*this).eq_at(mupa);
9850 isl::checked::map map::eq_at(const isl::checked::aff &mpa) const
9852 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9855 isl::checked::map map::eq_at(const isl::checked::multi_aff &mpa) const
9857 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9860 isl::checked::map map::eq_at(const isl::checked::pw_aff &mpa) const
9862 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9865 isl::checked::map map::eq_at(const isl::checked::pw_multi_aff &mpa) const
9867 return this->eq_at(isl::checked::multi_pw_aff(mpa));
9870 boolean map::every_map(const std::function<boolean(isl::checked::map)> &test) const
9872 return isl::checked::union_map(*this).every_map(test);
9875 isl::checked::map map::extract_map(const isl::checked::space &space) const
9877 return isl::checked::union_map(*this).extract_map(space);
9880 isl::checked::map map::factor_domain() const
9882 auto res = isl_map_factor_domain(copy());
9883 return manage(res);
9886 isl::checked::map map::factor_range() const
9888 auto res = isl_map_factor_range(copy());
9889 return manage(res);
9892 isl::checked::map map::fixed_power(isl::checked::val exp) const
9894 auto res = isl_map_fixed_power_val(copy(), exp.release());
9895 return manage(res);
9898 isl::checked::map map::fixed_power(long exp) const
9900 return this->fixed_power(isl::checked::val(ctx(), exp));
9903 isl::checked::map map::flatten() const
9905 auto res = isl_map_flatten(copy());
9906 return manage(res);
9909 isl::checked::map map::flatten_domain() const
9911 auto res = isl_map_flatten_domain(copy());
9912 return manage(res);
9915 isl::checked::map map::flatten_range() const
9917 auto res = isl_map_flatten_range(copy());
9918 return manage(res);
9921 stat map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
9923 struct fn_data {
9924 std::function<stat(isl::checked::basic_map)> func;
9925 } fn_data = { fn };
9926 auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
9927 auto *data = static_cast<struct fn_data *>(arg_1);
9928 auto ret = (data->func)(manage(arg_0));
9929 return ret.release();
9931 auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
9932 return manage(res);
9935 stat map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
9937 return isl::checked::union_map(*this).foreach_map(fn);
9940 isl::checked::map map::gist(isl::checked::map context) const
9942 auto res = isl_map_gist(copy(), context.release());
9943 return manage(res);
9946 isl::checked::union_map map::gist(const isl::checked::union_map &context) const
9948 return isl::checked::union_map(*this).gist(context);
9951 isl::checked::map map::gist(const isl::checked::basic_map &context) const
9953 return this->gist(isl::checked::map(context));
9956 isl::checked::map map::gist_domain(isl::checked::set context) const
9958 auto res = isl_map_gist_domain(copy(), context.release());
9959 return manage(res);
9962 isl::checked::union_map map::gist_domain(const isl::checked::union_set &uset) const
9964 return isl::checked::union_map(*this).gist_domain(uset);
9967 isl::checked::map map::gist_domain(const isl::checked::basic_set &context) const
9969 return this->gist_domain(isl::checked::set(context));
9972 isl::checked::map map::gist_domain(const isl::checked::point &context) const
9974 return this->gist_domain(isl::checked::set(context));
9977 isl::checked::map map::gist_params(isl::checked::set context) const
9979 auto res = isl_map_gist_params(copy(), context.release());
9980 return manage(res);
9983 isl::checked::union_map map::gist_range(const isl::checked::union_set &uset) const
9985 return isl::checked::union_map(*this).gist_range(uset);
9988 boolean map::has_domain_tuple_id() const
9990 auto res = isl_map_has_domain_tuple_id(get());
9991 return manage(res);
9994 boolean map::has_range_tuple_id() const
9996 auto res = isl_map_has_range_tuple_id(get());
9997 return manage(res);
10000 isl::checked::map map::intersect(isl::checked::map map2) const
10002 auto res = isl_map_intersect(copy(), map2.release());
10003 return manage(res);
10006 isl::checked::union_map map::intersect(const isl::checked::union_map &umap2) const
10008 return isl::checked::union_map(*this).intersect(umap2);
10011 isl::checked::map map::intersect(const isl::checked::basic_map &map2) const
10013 return this->intersect(isl::checked::map(map2));
10016 isl::checked::map map::intersect_domain(isl::checked::set set) const
10018 auto res = isl_map_intersect_domain(copy(), set.release());
10019 return manage(res);
10022 isl::checked::union_map map::intersect_domain(const isl::checked::space &space) const
10024 return isl::checked::union_map(*this).intersect_domain(space);
10027 isl::checked::union_map map::intersect_domain(const isl::checked::union_set &uset) const
10029 return isl::checked::union_map(*this).intersect_domain(uset);
10032 isl::checked::map map::intersect_domain(const isl::checked::basic_set &set) const
10034 return this->intersect_domain(isl::checked::set(set));
10037 isl::checked::map map::intersect_domain(const isl::checked::point &set) const
10039 return this->intersect_domain(isl::checked::set(set));
10042 isl::checked::map map::intersect_domain_factor_domain(isl::checked::map factor) const
10044 auto res = isl_map_intersect_domain_factor_domain(copy(), factor.release());
10045 return manage(res);
10048 isl::checked::union_map map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
10050 return isl::checked::union_map(*this).intersect_domain_factor_domain(factor);
10053 isl::checked::map map::intersect_domain_factor_domain(const isl::checked::basic_map &factor) const
10055 return this->intersect_domain_factor_domain(isl::checked::map(factor));
10058 isl::checked::map map::intersect_domain_factor_range(isl::checked::map factor) const
10060 auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
10061 return manage(res);
10064 isl::checked::union_map map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
10066 return isl::checked::union_map(*this).intersect_domain_factor_range(factor);
10069 isl::checked::map map::intersect_domain_factor_range(const isl::checked::basic_map &factor) const
10071 return this->intersect_domain_factor_range(isl::checked::map(factor));
10074 isl::checked::map map::intersect_domain_wrapped_domain(isl::checked::set domain) const
10076 auto res = isl_map_intersect_domain_wrapped_domain(copy(), domain.release());
10077 return manage(res);
10080 isl::checked::union_map map::intersect_domain_wrapped_domain(const isl::checked::union_set &domain) const
10082 return isl::checked::union_map(*this).intersect_domain_wrapped_domain(domain);
10085 isl::checked::map map::intersect_domain_wrapped_domain(const isl::checked::basic_set &domain) const
10087 return this->intersect_domain_wrapped_domain(isl::checked::set(domain));
10090 isl::checked::map map::intersect_domain_wrapped_domain(const isl::checked::point &domain) const
10092 return this->intersect_domain_wrapped_domain(isl::checked::set(domain));
10095 isl::checked::map map::intersect_params(isl::checked::set params) const
10097 auto res = isl_map_intersect_params(copy(), params.release());
10098 return manage(res);
10101 isl::checked::map map::intersect_range(isl::checked::set set) const
10103 auto res = isl_map_intersect_range(copy(), set.release());
10104 return manage(res);
10107 isl::checked::union_map map::intersect_range(const isl::checked::space &space) const
10109 return isl::checked::union_map(*this).intersect_range(space);
10112 isl::checked::union_map map::intersect_range(const isl::checked::union_set &uset) const
10114 return isl::checked::union_map(*this).intersect_range(uset);
10117 isl::checked::map map::intersect_range(const isl::checked::basic_set &set) const
10119 return this->intersect_range(isl::checked::set(set));
10122 isl::checked::map map::intersect_range(const isl::checked::point &set) const
10124 return this->intersect_range(isl::checked::set(set));
10127 isl::checked::map map::intersect_range_factor_domain(isl::checked::map factor) const
10129 auto res = isl_map_intersect_range_factor_domain(copy(), factor.release());
10130 return manage(res);
10133 isl::checked::union_map map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
10135 return isl::checked::union_map(*this).intersect_range_factor_domain(factor);
10138 isl::checked::map map::intersect_range_factor_domain(const isl::checked::basic_map &factor) const
10140 return this->intersect_range_factor_domain(isl::checked::map(factor));
10143 isl::checked::map map::intersect_range_factor_range(isl::checked::map factor) const
10145 auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
10146 return manage(res);
10149 isl::checked::union_map map::intersect_range_factor_range(const isl::checked::union_map &factor) const
10151 return isl::checked::union_map(*this).intersect_range_factor_range(factor);
10154 isl::checked::map map::intersect_range_factor_range(const isl::checked::basic_map &factor) const
10156 return this->intersect_range_factor_range(isl::checked::map(factor));
10159 isl::checked::map map::intersect_range_wrapped_domain(isl::checked::set domain) const
10161 auto res = isl_map_intersect_range_wrapped_domain(copy(), domain.release());
10162 return manage(res);
10165 isl::checked::union_map map::intersect_range_wrapped_domain(const isl::checked::union_set &domain) const
10167 return isl::checked::union_map(*this).intersect_range_wrapped_domain(domain);
10170 isl::checked::map map::intersect_range_wrapped_domain(const isl::checked::basic_set &domain) const
10172 return this->intersect_range_wrapped_domain(isl::checked::set(domain));
10175 isl::checked::map map::intersect_range_wrapped_domain(const isl::checked::point &domain) const
10177 return this->intersect_range_wrapped_domain(isl::checked::set(domain));
10180 boolean map::is_bijective() const
10182 auto res = isl_map_is_bijective(get());
10183 return manage(res);
10186 boolean map::is_disjoint(const isl::checked::map &map2) const
10188 auto res = isl_map_is_disjoint(get(), map2.get());
10189 return manage(res);
10192 boolean map::is_disjoint(const isl::checked::union_map &umap2) const
10194 return isl::checked::union_map(*this).is_disjoint(umap2);
10197 boolean map::is_disjoint(const isl::checked::basic_map &map2) const
10199 return this->is_disjoint(isl::checked::map(map2));
10202 boolean map::is_empty() const
10204 auto res = isl_map_is_empty(get());
10205 return manage(res);
10208 boolean map::is_equal(const isl::checked::map &map2) const
10210 auto res = isl_map_is_equal(get(), map2.get());
10211 return manage(res);
10214 boolean map::is_equal(const isl::checked::union_map &umap2) const
10216 return isl::checked::union_map(*this).is_equal(umap2);
10219 boolean map::is_equal(const isl::checked::basic_map &map2) const
10221 return this->is_equal(isl::checked::map(map2));
10224 boolean map::is_injective() const
10226 auto res = isl_map_is_injective(get());
10227 return manage(res);
10230 boolean map::is_single_valued() const
10232 auto res = isl_map_is_single_valued(get());
10233 return manage(res);
10236 boolean map::is_strict_subset(const isl::checked::map &map2) const
10238 auto res = isl_map_is_strict_subset(get(), map2.get());
10239 return manage(res);
10242 boolean map::is_strict_subset(const isl::checked::union_map &umap2) const
10244 return isl::checked::union_map(*this).is_strict_subset(umap2);
10247 boolean map::is_strict_subset(const isl::checked::basic_map &map2) const
10249 return this->is_strict_subset(isl::checked::map(map2));
10252 boolean map::is_subset(const isl::checked::map &map2) const
10254 auto res = isl_map_is_subset(get(), map2.get());
10255 return manage(res);
10258 boolean map::is_subset(const isl::checked::union_map &umap2) const
10260 return isl::checked::union_map(*this).is_subset(umap2);
10263 boolean map::is_subset(const isl::checked::basic_map &map2) const
10265 return this->is_subset(isl::checked::map(map2));
10268 boolean map::isa_map() const
10270 return isl::checked::union_map(*this).isa_map();
10273 isl::checked::map map::lex_ge_at(isl::checked::multi_pw_aff mpa) const
10275 auto res = isl_map_lex_ge_at_multi_pw_aff(copy(), mpa.release());
10276 return manage(res);
10279 isl::checked::map map::lex_gt_at(isl::checked::multi_pw_aff mpa) const
10281 auto res = isl_map_lex_gt_at_multi_pw_aff(copy(), mpa.release());
10282 return manage(res);
10285 isl::checked::map map::lex_le_at(isl::checked::multi_pw_aff mpa) const
10287 auto res = isl_map_lex_le_at_multi_pw_aff(copy(), mpa.release());
10288 return manage(res);
10291 isl::checked::map map::lex_lt_at(isl::checked::multi_pw_aff mpa) const
10293 auto res = isl_map_lex_lt_at_multi_pw_aff(copy(), mpa.release());
10294 return manage(res);
10297 isl::checked::map map::lexmax() const
10299 auto res = isl_map_lexmax(copy());
10300 return manage(res);
10303 isl::checked::pw_multi_aff map::lexmax_pw_multi_aff() const
10305 auto res = isl_map_lexmax_pw_multi_aff(copy());
10306 return manage(res);
10309 isl::checked::map map::lexmin() const
10311 auto res = isl_map_lexmin(copy());
10312 return manage(res);
10315 isl::checked::pw_multi_aff map::lexmin_pw_multi_aff() const
10317 auto res = isl_map_lexmin_pw_multi_aff(copy());
10318 return manage(res);
10321 isl::checked::map map::lower_bound(isl::checked::multi_pw_aff lower) const
10323 auto res = isl_map_lower_bound_multi_pw_aff(copy(), lower.release());
10324 return manage(res);
10327 isl::checked::map_list map::map_list() const
10329 return isl::checked::union_map(*this).map_list();
10332 isl::checked::multi_pw_aff map::max_multi_pw_aff() const
10334 auto res = isl_map_max_multi_pw_aff(copy());
10335 return manage(res);
10338 isl::checked::multi_pw_aff map::min_multi_pw_aff() const
10340 auto res = isl_map_min_multi_pw_aff(copy());
10341 return manage(res);
10344 class size map::n_basic_map() const
10346 auto res = isl_map_n_basic_map(get());
10347 return manage(res);
10350 isl::checked::set map::params() const
10352 auto res = isl_map_params(copy());
10353 return manage(res);
10356 isl::checked::basic_map map::polyhedral_hull() const
10358 auto res = isl_map_polyhedral_hull(copy());
10359 return manage(res);
10362 isl::checked::map map::preimage_domain(isl::checked::multi_aff ma) const
10364 auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
10365 return manage(res);
10368 isl::checked::map map::preimage_domain(isl::checked::multi_pw_aff mpa) const
10370 auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
10371 return manage(res);
10374 isl::checked::map map::preimage_domain(isl::checked::pw_multi_aff pma) const
10376 auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
10377 return manage(res);
10380 isl::checked::union_map map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
10382 return isl::checked::union_map(*this).preimage_domain(upma);
10385 isl::checked::map map::preimage_range(isl::checked::multi_aff ma) const
10387 auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
10388 return manage(res);
10391 isl::checked::map map::preimage_range(isl::checked::pw_multi_aff pma) const
10393 auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
10394 return manage(res);
10397 isl::checked::union_map map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
10399 return isl::checked::union_map(*this).preimage_range(upma);
10402 isl::checked::map map::product(isl::checked::map map2) const
10404 auto res = isl_map_product(copy(), map2.release());
10405 return manage(res);
10408 isl::checked::union_map map::product(const isl::checked::union_map &umap2) const
10410 return isl::checked::union_map(*this).product(umap2);
10413 isl::checked::map map::product(const isl::checked::basic_map &map2) const
10415 return this->product(isl::checked::map(map2));
10418 isl::checked::map map::project_out_all_params() const
10420 auto res = isl_map_project_out_all_params(copy());
10421 return manage(res);
10424 isl::checked::map map::project_out_param(isl::checked::id id) const
10426 auto res = isl_map_project_out_param_id(copy(), id.release());
10427 return manage(res);
10430 isl::checked::map map::project_out_param(const std::string &id) const
10432 return this->project_out_param(isl::checked::id(ctx(), id));
10435 isl::checked::map map::project_out_param(isl::checked::id_list list) const
10437 auto res = isl_map_project_out_param_id_list(copy(), list.release());
10438 return manage(res);
10441 isl::checked::set map::range() const
10443 auto res = isl_map_range(copy());
10444 return manage(res);
10447 isl::checked::map map::range_factor_domain() const
10449 auto res = isl_map_range_factor_domain(copy());
10450 return manage(res);
10453 isl::checked::map map::range_factor_range() const
10455 auto res = isl_map_range_factor_range(copy());
10456 return manage(res);
10459 isl::checked::fixed_box map::range_lattice_tile() const
10461 auto res = isl_map_get_range_lattice_tile(get());
10462 return manage(res);
10465 isl::checked::fixed_box map::get_range_lattice_tile() const
10467 return range_lattice_tile();
10470 isl::checked::union_map map::range_map() const
10472 return isl::checked::union_map(*this).range_map();
10475 isl::checked::map map::range_product(isl::checked::map map2) const
10477 auto res = isl_map_range_product(copy(), map2.release());
10478 return manage(res);
10481 isl::checked::union_map map::range_product(const isl::checked::union_map &umap2) const
10483 return isl::checked::union_map(*this).range_product(umap2);
10486 isl::checked::map map::range_product(const isl::checked::basic_map &map2) const
10488 return this->range_product(isl::checked::map(map2));
10491 isl::checked::map map::range_reverse() const
10493 auto res = isl_map_range_reverse(copy());
10494 return manage(res);
10497 isl::checked::fixed_box map::range_simple_fixed_box_hull() const
10499 auto res = isl_map_get_range_simple_fixed_box_hull(get());
10500 return manage(res);
10503 isl::checked::fixed_box map::get_range_simple_fixed_box_hull() const
10505 return range_simple_fixed_box_hull();
10508 class size map::range_tuple_dim() const
10510 auto res = isl_map_range_tuple_dim(get());
10511 return manage(res);
10514 isl::checked::id map::range_tuple_id() const
10516 auto res = isl_map_get_range_tuple_id(get());
10517 return manage(res);
10520 isl::checked::id map::get_range_tuple_id() const
10522 return range_tuple_id();
10525 isl::checked::map map::reverse() const
10527 auto res = isl_map_reverse(copy());
10528 return manage(res);
10531 isl::checked::basic_map map::sample() const
10533 auto res = isl_map_sample(copy());
10534 return manage(res);
10537 isl::checked::map map::set_domain_tuple(isl::checked::id id) const
10539 auto res = isl_map_set_domain_tuple_id(copy(), id.release());
10540 return manage(res);
10543 isl::checked::map map::set_domain_tuple(const std::string &id) const
10545 return this->set_domain_tuple(isl::checked::id(ctx(), id));
10548 isl::checked::map map::set_range_tuple(isl::checked::id id) const
10550 auto res = isl_map_set_range_tuple_id(copy(), id.release());
10551 return manage(res);
10554 isl::checked::map map::set_range_tuple(const std::string &id) const
10556 return this->set_range_tuple(isl::checked::id(ctx(), id));
10559 isl::checked::space map::space() const
10561 auto res = isl_map_get_space(get());
10562 return manage(res);
10565 isl::checked::space map::get_space() const
10567 return space();
10570 isl::checked::map map::subtract(isl::checked::map map2) const
10572 auto res = isl_map_subtract(copy(), map2.release());
10573 return manage(res);
10576 isl::checked::union_map map::subtract(const isl::checked::union_map &umap2) const
10578 return isl::checked::union_map(*this).subtract(umap2);
10581 isl::checked::map map::subtract(const isl::checked::basic_map &map2) const
10583 return this->subtract(isl::checked::map(map2));
10586 isl::checked::union_map map::subtract_domain(const isl::checked::union_set &dom) const
10588 return isl::checked::union_map(*this).subtract_domain(dom);
10591 isl::checked::union_map map::subtract_range(const isl::checked::union_set &dom) const
10593 return isl::checked::union_map(*this).subtract_range(dom);
10596 isl::checked::map_list map::to_list() const
10598 auto res = isl_map_to_list(copy());
10599 return manage(res);
10602 isl::checked::union_map map::to_union_map() const
10604 auto res = isl_map_to_union_map(copy());
10605 return manage(res);
10608 isl::checked::map map::uncurry() const
10610 auto res = isl_map_uncurry(copy());
10611 return manage(res);
10614 isl::checked::map map::unite(isl::checked::map map2) const
10616 auto res = isl_map_union(copy(), map2.release());
10617 return manage(res);
10620 isl::checked::union_map map::unite(const isl::checked::union_map &umap2) const
10622 return isl::checked::union_map(*this).unite(umap2);
10625 isl::checked::map map::unite(const isl::checked::basic_map &map2) const
10627 return this->unite(isl::checked::map(map2));
10630 isl::checked::map map::universe(isl::checked::space space)
10632 auto res = isl_map_universe(space.release());
10633 return manage(res);
10636 isl::checked::basic_map map::unshifted_simple_hull() const
10638 auto res = isl_map_unshifted_simple_hull(copy());
10639 return manage(res);
10642 isl::checked::map map::upper_bound(isl::checked::multi_pw_aff upper) const
10644 auto res = isl_map_upper_bound_multi_pw_aff(copy(), upper.release());
10645 return manage(res);
10648 isl::checked::set map::wrap() const
10650 auto res = isl_map_wrap(copy());
10651 return manage(res);
10654 isl::checked::map map::zip() const
10656 auto res = isl_map_zip(copy());
10657 return manage(res);
10660 inline std::ostream &operator<<(std::ostream &os, const map &obj)
10662 char *str = isl_map_to_str(obj.get());
10663 if (!str) {
10664 os.setstate(std::ios_base::badbit);
10665 return os;
10667 os << str;
10668 free(str);
10669 return os;
10672 // implementations for isl::map_list
10673 map_list manage(__isl_take isl_map_list *ptr) {
10674 return map_list(ptr);
10676 map_list manage_copy(__isl_keep isl_map_list *ptr) {
10677 ptr = isl_map_list_copy(ptr);
10678 return map_list(ptr);
10681 map_list::map_list(__isl_take isl_map_list *ptr)
10682 : ptr(ptr) {}
10684 map_list::map_list()
10685 : ptr(nullptr) {}
10687 map_list::map_list(const map_list &obj)
10688 : ptr(nullptr)
10690 ptr = obj.copy();
10693 map_list::map_list(isl::checked::ctx ctx, int n)
10695 auto res = isl_map_list_alloc(ctx.release(), n);
10696 ptr = res;
10699 map_list::map_list(isl::checked::map el)
10701 auto res = isl_map_list_from_map(el.release());
10702 ptr = res;
10705 map_list::map_list(isl::checked::ctx ctx, const std::string &str)
10707 auto res = isl_map_list_read_from_str(ctx.release(), str.c_str());
10708 ptr = res;
10711 map_list &map_list::operator=(map_list obj) {
10712 std::swap(this->ptr, obj.ptr);
10713 return *this;
10716 map_list::~map_list() {
10717 if (ptr)
10718 isl_map_list_free(ptr);
10721 __isl_give isl_map_list *map_list::copy() const & {
10722 return isl_map_list_copy(ptr);
10725 __isl_keep isl_map_list *map_list::get() const {
10726 return ptr;
10729 __isl_give isl_map_list *map_list::release() {
10730 isl_map_list *tmp = ptr;
10731 ptr = nullptr;
10732 return tmp;
10735 bool map_list::is_null() const {
10736 return ptr == nullptr;
10739 isl::checked::ctx map_list::ctx() const {
10740 return isl::checked::ctx(isl_map_list_get_ctx(ptr));
10743 isl::checked::map_list map_list::add(isl::checked::map el) const
10745 auto res = isl_map_list_add(copy(), el.release());
10746 return manage(res);
10749 isl::checked::map map_list::at(int index) const
10751 auto res = isl_map_list_get_at(get(), index);
10752 return manage(res);
10755 isl::checked::map map_list::get_at(int index) const
10757 return at(index);
10760 isl::checked::map_list map_list::clear() const
10762 auto res = isl_map_list_clear(copy());
10763 return manage(res);
10766 isl::checked::map_list map_list::concat(isl::checked::map_list list2) const
10768 auto res = isl_map_list_concat(copy(), list2.release());
10769 return manage(res);
10772 isl::checked::map_list map_list::drop(unsigned int first, unsigned int n) const
10774 auto res = isl_map_list_drop(copy(), first, n);
10775 return manage(res);
10778 stat map_list::foreach(const std::function<stat(isl::checked::map)> &fn) const
10780 struct fn_data {
10781 std::function<stat(isl::checked::map)> func;
10782 } fn_data = { fn };
10783 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
10784 auto *data = static_cast<struct fn_data *>(arg_1);
10785 auto ret = (data->func)(manage(arg_0));
10786 return ret.release();
10788 auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
10789 return manage(res);
10792 stat map_list::foreach_scc(const std::function<boolean(isl::checked::map, isl::checked::map)> &follows, const std::function<stat(isl::checked::map_list)> &fn) const
10794 struct follows_data {
10795 std::function<boolean(isl::checked::map, isl::checked::map)> func;
10796 } follows_data = { follows };
10797 auto follows_lambda = [](isl_map *arg_0, isl_map *arg_1, void *arg_2) -> isl_bool {
10798 auto *data = static_cast<struct follows_data *>(arg_2);
10799 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
10800 return ret.release();
10802 struct fn_data {
10803 std::function<stat(isl::checked::map_list)> func;
10804 } fn_data = { fn };
10805 auto fn_lambda = [](isl_map_list *arg_0, void *arg_1) -> isl_stat {
10806 auto *data = static_cast<struct fn_data *>(arg_1);
10807 auto ret = (data->func)(manage(arg_0));
10808 return ret.release();
10810 auto res = isl_map_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
10811 return manage(res);
10814 isl::checked::map_list map_list::insert(unsigned int pos, isl::checked::map el) const
10816 auto res = isl_map_list_insert(copy(), pos, el.release());
10817 return manage(res);
10820 isl::checked::map_list map_list::set_at(int index, isl::checked::map el) const
10822 auto res = isl_map_list_set_at(copy(), index, el.release());
10823 return manage(res);
10826 class size map_list::size() const
10828 auto res = isl_map_list_size(get());
10829 return manage(res);
10832 inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
10834 char *str = isl_map_list_to_str(obj.get());
10835 if (!str) {
10836 os.setstate(std::ios_base::badbit);
10837 return os;
10839 os << str;
10840 free(str);
10841 return os;
10844 // implementations for isl::multi_aff
10845 multi_aff manage(__isl_take isl_multi_aff *ptr) {
10846 return multi_aff(ptr);
10848 multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
10849 ptr = isl_multi_aff_copy(ptr);
10850 return multi_aff(ptr);
10853 multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
10854 : ptr(ptr) {}
10856 multi_aff::multi_aff()
10857 : ptr(nullptr) {}
10859 multi_aff::multi_aff(const multi_aff &obj)
10860 : ptr(nullptr)
10862 ptr = obj.copy();
10865 multi_aff::multi_aff(isl::checked::aff aff)
10867 auto res = isl_multi_aff_from_aff(aff.release());
10868 ptr = res;
10871 multi_aff::multi_aff(isl::checked::space space, isl::checked::aff_list list)
10873 auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
10874 ptr = res;
10877 multi_aff::multi_aff(isl::checked::ctx ctx, const std::string &str)
10879 auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
10880 ptr = res;
10883 multi_aff &multi_aff::operator=(multi_aff obj) {
10884 std::swap(this->ptr, obj.ptr);
10885 return *this;
10888 multi_aff::~multi_aff() {
10889 if (ptr)
10890 isl_multi_aff_free(ptr);
10893 __isl_give isl_multi_aff *multi_aff::copy() const & {
10894 return isl_multi_aff_copy(ptr);
10897 __isl_keep isl_multi_aff *multi_aff::get() const {
10898 return ptr;
10901 __isl_give isl_multi_aff *multi_aff::release() {
10902 isl_multi_aff *tmp = ptr;
10903 ptr = nullptr;
10904 return tmp;
10907 bool multi_aff::is_null() const {
10908 return ptr == nullptr;
10911 isl::checked::ctx multi_aff::ctx() const {
10912 return isl::checked::ctx(isl_multi_aff_get_ctx(ptr));
10915 isl::checked::multi_aff multi_aff::add(isl::checked::multi_aff multi2) const
10917 auto res = isl_multi_aff_add(copy(), multi2.release());
10918 return manage(res);
10921 isl::checked::multi_pw_aff multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
10923 return isl::checked::pw_multi_aff(*this).add(multi2);
10926 isl::checked::multi_union_pw_aff multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
10928 return isl::checked::pw_multi_aff(*this).add(multi2);
10931 isl::checked::pw_multi_aff multi_aff::add(const isl::checked::pw_multi_aff &pma2) const
10933 return isl::checked::pw_multi_aff(*this).add(pma2);
10936 isl::checked::union_pw_multi_aff multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
10938 return isl::checked::pw_multi_aff(*this).add(upma2);
10941 isl::checked::multi_aff multi_aff::add(const isl::checked::aff &multi2) const
10943 return this->add(isl::checked::multi_aff(multi2));
10946 isl::checked::multi_aff multi_aff::add_constant(isl::checked::multi_val mv) const
10948 auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
10949 return manage(res);
10952 isl::checked::multi_aff multi_aff::add_constant(isl::checked::val v) const
10954 auto res = isl_multi_aff_add_constant_val(copy(), v.release());
10955 return manage(res);
10958 isl::checked::multi_aff multi_aff::add_constant(long v) const
10960 return this->add_constant(isl::checked::val(ctx(), v));
10963 isl::checked::union_pw_multi_aff multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
10965 return isl::checked::pw_multi_aff(*this).apply(upma2);
10968 isl::checked::map multi_aff::as_map() const
10970 auto res = isl_multi_aff_as_map(copy());
10971 return manage(res);
10974 isl::checked::multi_aff multi_aff::as_multi_aff() const
10976 return isl::checked::pw_multi_aff(*this).as_multi_aff();
10979 isl::checked::multi_union_pw_aff multi_aff::as_multi_union_pw_aff() const
10981 return isl::checked::pw_multi_aff(*this).as_multi_union_pw_aff();
10984 isl::checked::pw_multi_aff multi_aff::as_pw_multi_aff() const
10986 return isl::checked::pw_multi_aff(*this).as_pw_multi_aff();
10989 isl::checked::set multi_aff::as_set() const
10991 auto res = isl_multi_aff_as_set(copy());
10992 return manage(res);
10995 isl::checked::union_map multi_aff::as_union_map() const
10997 return isl::checked::pw_multi_aff(*this).as_union_map();
11000 isl::checked::aff multi_aff::at(int pos) const
11002 auto res = isl_multi_aff_get_at(get(), pos);
11003 return manage(res);
11006 isl::checked::aff multi_aff::get_at(int pos) const
11008 return at(pos);
11011 isl::checked::basic_set multi_aff::bind(isl::checked::multi_id tuple) const
11013 auto res = isl_multi_aff_bind(copy(), tuple.release());
11014 return manage(res);
11017 isl::checked::multi_aff multi_aff::bind_domain(isl::checked::multi_id tuple) const
11019 auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
11020 return manage(res);
11023 isl::checked::multi_aff multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
11025 auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
11026 return manage(res);
11029 isl::checked::pw_multi_aff multi_aff::coalesce() const
11031 return isl::checked::pw_multi_aff(*this).coalesce();
11034 isl::checked::multi_val multi_aff::constant_multi_val() const
11036 auto res = isl_multi_aff_get_constant_multi_val(get());
11037 return manage(res);
11040 isl::checked::multi_val multi_aff::get_constant_multi_val() const
11042 return constant_multi_val();
11045 isl::checked::set multi_aff::domain() const
11047 return isl::checked::pw_multi_aff(*this).domain();
11050 isl::checked::multi_aff multi_aff::domain_map(isl::checked::space space)
11052 auto res = isl_multi_aff_domain_map(space.release());
11053 return manage(res);
11056 isl::checked::multi_aff multi_aff::domain_reverse() const
11058 auto res = isl_multi_aff_domain_reverse(copy());
11059 return manage(res);
11062 isl::checked::pw_multi_aff multi_aff::drop_unused_params() const
11064 return isl::checked::pw_multi_aff(*this).drop_unused_params();
11067 isl::checked::pw_multi_aff multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
11069 return isl::checked::pw_multi_aff(*this).extract_pw_multi_aff(space);
11072 isl::checked::multi_aff multi_aff::flat_range_product(isl::checked::multi_aff multi2) const
11074 auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
11075 return manage(res);
11078 isl::checked::multi_pw_aff multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
11080 return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
11083 isl::checked::multi_union_pw_aff multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
11085 return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
11088 isl::checked::pw_multi_aff multi_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
11090 return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
11093 isl::checked::union_pw_multi_aff multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
11095 return isl::checked::pw_multi_aff(*this).flat_range_product(upma2);
11098 isl::checked::multi_aff multi_aff::flat_range_product(const isl::checked::aff &multi2) const
11100 return this->flat_range_product(isl::checked::multi_aff(multi2));
11103 isl::checked::multi_aff multi_aff::floor() const
11105 auto res = isl_multi_aff_floor(copy());
11106 return manage(res);
11109 stat multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
11111 return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
11114 isl::checked::multi_aff multi_aff::gist(isl::checked::set context) const
11116 auto res = isl_multi_aff_gist(copy(), context.release());
11117 return manage(res);
11120 isl::checked::union_pw_multi_aff multi_aff::gist(const isl::checked::union_set &context) const
11122 return isl::checked::pw_multi_aff(*this).gist(context);
11125 isl::checked::multi_aff multi_aff::gist(const isl::checked::basic_set &context) const
11127 return this->gist(isl::checked::set(context));
11130 isl::checked::multi_aff multi_aff::gist(const isl::checked::point &context) const
11132 return this->gist(isl::checked::set(context));
11135 isl::checked::multi_aff multi_aff::gist_params(isl::checked::set context) const
11137 auto res = isl_multi_aff_gist_params(copy(), context.release());
11138 return manage(res);
11141 boolean multi_aff::has_range_tuple_id() const
11143 auto res = isl_multi_aff_has_range_tuple_id(get());
11144 return manage(res);
11147 isl::checked::multi_aff multi_aff::identity() const
11149 auto res = isl_multi_aff_identity_multi_aff(copy());
11150 return manage(res);
11153 isl::checked::multi_aff multi_aff::identity_on_domain(isl::checked::space space)
11155 auto res = isl_multi_aff_identity_on_domain_space(space.release());
11156 return manage(res);
11159 isl::checked::multi_aff multi_aff::insert_domain(isl::checked::space domain) const
11161 auto res = isl_multi_aff_insert_domain(copy(), domain.release());
11162 return manage(res);
11165 isl::checked::pw_multi_aff multi_aff::intersect_domain(const isl::checked::set &set) const
11167 return isl::checked::pw_multi_aff(*this).intersect_domain(set);
11170 isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::space &space) const
11172 return isl::checked::pw_multi_aff(*this).intersect_domain(space);
11175 isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::union_set &uset) const
11177 return isl::checked::pw_multi_aff(*this).intersect_domain(uset);
11180 isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
11182 return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
11185 isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
11187 return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
11190 isl::checked::pw_multi_aff multi_aff::intersect_params(const isl::checked::set &set) const
11192 return isl::checked::pw_multi_aff(*this).intersect_params(set);
11195 boolean multi_aff::involves_locals() const
11197 auto res = isl_multi_aff_involves_locals(get());
11198 return manage(res);
11201 boolean multi_aff::involves_nan() const
11203 auto res = isl_multi_aff_involves_nan(get());
11204 return manage(res);
11207 boolean multi_aff::involves_param(const isl::checked::id &id) const
11209 return isl::checked::pw_multi_aff(*this).involves_param(id);
11212 boolean multi_aff::involves_param(const std::string &id) const
11214 return this->involves_param(isl::checked::id(ctx(), id));
11217 boolean multi_aff::involves_param(const isl::checked::id_list &list) const
11219 return isl::checked::pw_multi_aff(*this).involves_param(list);
11222 boolean multi_aff::isa_multi_aff() const
11224 return isl::checked::pw_multi_aff(*this).isa_multi_aff();
11227 boolean multi_aff::isa_pw_multi_aff() const
11229 return isl::checked::pw_multi_aff(*this).isa_pw_multi_aff();
11232 isl::checked::aff_list multi_aff::list() const
11234 auto res = isl_multi_aff_get_list(get());
11235 return manage(res);
11238 isl::checked::aff_list multi_aff::get_list() const
11240 return list();
11243 isl::checked::multi_pw_aff multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
11245 return isl::checked::pw_multi_aff(*this).max(multi2);
11248 isl::checked::multi_val multi_aff::max_multi_val() const
11250 return isl::checked::pw_multi_aff(*this).max_multi_val();
11253 isl::checked::multi_pw_aff multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
11255 return isl::checked::pw_multi_aff(*this).min(multi2);
11258 isl::checked::multi_val multi_aff::min_multi_val() const
11260 return isl::checked::pw_multi_aff(*this).min_multi_val();
11263 isl::checked::multi_aff multi_aff::multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv)
11265 auto res = isl_multi_aff_multi_val_on_domain_space(space.release(), mv.release());
11266 return manage(res);
11269 class size multi_aff::n_piece() const
11271 return isl::checked::pw_multi_aff(*this).n_piece();
11274 isl::checked::multi_aff multi_aff::neg() const
11276 auto res = isl_multi_aff_neg(copy());
11277 return manage(res);
11280 boolean multi_aff::plain_is_empty() const
11282 return isl::checked::pw_multi_aff(*this).plain_is_empty();
11285 boolean multi_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
11287 auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
11288 return manage(res);
11291 boolean multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
11293 return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
11296 boolean multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
11298 return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
11301 boolean multi_aff::plain_is_equal(const isl::checked::pw_multi_aff &pma2) const
11303 return isl::checked::pw_multi_aff(*this).plain_is_equal(pma2);
11306 boolean multi_aff::plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const
11308 return isl::checked::pw_multi_aff(*this).plain_is_equal(upma2);
11311 boolean multi_aff::plain_is_equal(const isl::checked::aff &multi2) const
11313 return this->plain_is_equal(isl::checked::multi_aff(multi2));
11316 isl::checked::pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
11318 return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
11321 isl::checked::union_pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
11323 return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
11326 isl::checked::multi_aff multi_aff::product(isl::checked::multi_aff multi2) const
11328 auto res = isl_multi_aff_product(copy(), multi2.release());
11329 return manage(res);
11332 isl::checked::multi_pw_aff multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
11334 return isl::checked::pw_multi_aff(*this).product(multi2);
11337 isl::checked::pw_multi_aff multi_aff::product(const isl::checked::pw_multi_aff &pma2) const
11339 return isl::checked::pw_multi_aff(*this).product(pma2);
11342 isl::checked::multi_aff multi_aff::product(const isl::checked::aff &multi2) const
11344 return this->product(isl::checked::multi_aff(multi2));
11347 isl::checked::multi_aff multi_aff::pullback(isl::checked::multi_aff ma2) const
11349 auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
11350 return manage(res);
11353 isl::checked::multi_pw_aff multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
11355 return isl::checked::pw_multi_aff(*this).pullback(mpa2);
11358 isl::checked::pw_multi_aff multi_aff::pullback(const isl::checked::pw_multi_aff &pma2) const
11360 return isl::checked::pw_multi_aff(*this).pullback(pma2);
11363 isl::checked::union_pw_multi_aff multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
11365 return isl::checked::pw_multi_aff(*this).pullback(upma2);
11368 isl::checked::multi_aff multi_aff::pullback(const isl::checked::aff &ma2) const
11370 return this->pullback(isl::checked::multi_aff(ma2));
11373 isl::checked::pw_multi_aff_list multi_aff::pw_multi_aff_list() const
11375 return isl::checked::pw_multi_aff(*this).pw_multi_aff_list();
11378 isl::checked::pw_multi_aff multi_aff::range_factor_domain() const
11380 return isl::checked::pw_multi_aff(*this).range_factor_domain();
11383 isl::checked::pw_multi_aff multi_aff::range_factor_range() const
11385 return isl::checked::pw_multi_aff(*this).range_factor_range();
11388 isl::checked::multi_aff multi_aff::range_map(isl::checked::space space)
11390 auto res = isl_multi_aff_range_map(space.release());
11391 return manage(res);
11394 isl::checked::multi_aff multi_aff::range_product(isl::checked::multi_aff multi2) const
11396 auto res = isl_multi_aff_range_product(copy(), multi2.release());
11397 return manage(res);
11400 isl::checked::multi_pw_aff multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
11402 return isl::checked::pw_multi_aff(*this).range_product(multi2);
11405 isl::checked::multi_union_pw_aff multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
11407 return isl::checked::pw_multi_aff(*this).range_product(multi2);
11410 isl::checked::pw_multi_aff multi_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
11412 return isl::checked::pw_multi_aff(*this).range_product(pma2);
11415 isl::checked::union_pw_multi_aff multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
11417 return isl::checked::pw_multi_aff(*this).range_product(upma2);
11420 isl::checked::multi_aff multi_aff::range_product(const isl::checked::aff &multi2) const
11422 return this->range_product(isl::checked::multi_aff(multi2));
11425 isl::checked::id multi_aff::range_tuple_id() const
11427 auto res = isl_multi_aff_get_range_tuple_id(get());
11428 return manage(res);
11431 isl::checked::id multi_aff::get_range_tuple_id() const
11433 return range_tuple_id();
11436 isl::checked::multi_aff multi_aff::reset_range_tuple_id() const
11438 auto res = isl_multi_aff_reset_range_tuple_id(copy());
11439 return manage(res);
11442 isl::checked::multi_aff multi_aff::scale(isl::checked::multi_val mv) const
11444 auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
11445 return manage(res);
11448 isl::checked::multi_aff multi_aff::scale(isl::checked::val v) const
11450 auto res = isl_multi_aff_scale_val(copy(), v.release());
11451 return manage(res);
11454 isl::checked::multi_aff multi_aff::scale(long v) const
11456 return this->scale(isl::checked::val(ctx(), v));
11459 isl::checked::multi_aff multi_aff::scale_down(isl::checked::multi_val mv) const
11461 auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
11462 return manage(res);
11465 isl::checked::multi_aff multi_aff::scale_down(isl::checked::val v) const
11467 auto res = isl_multi_aff_scale_down_val(copy(), v.release());
11468 return manage(res);
11471 isl::checked::multi_aff multi_aff::scale_down(long v) const
11473 return this->scale_down(isl::checked::val(ctx(), v));
11476 isl::checked::multi_aff multi_aff::set_at(int pos, isl::checked::aff el) const
11478 auto res = isl_multi_aff_set_at(copy(), pos, el.release());
11479 return manage(res);
11482 isl::checked::multi_pw_aff multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
11484 return isl::checked::pw_multi_aff(*this).set_at(pos, el);
11487 isl::checked::multi_union_pw_aff multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
11489 return isl::checked::pw_multi_aff(*this).set_at(pos, el);
11492 isl::checked::multi_aff multi_aff::set_range_tuple(isl::checked::id id) const
11494 auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
11495 return manage(res);
11498 isl::checked::multi_aff multi_aff::set_range_tuple(const std::string &id) const
11500 return this->set_range_tuple(isl::checked::id(ctx(), id));
11503 class size multi_aff::size() const
11505 auto res = isl_multi_aff_size(get());
11506 return manage(res);
11509 isl::checked::space multi_aff::space() const
11511 auto res = isl_multi_aff_get_space(get());
11512 return manage(res);
11515 isl::checked::space multi_aff::get_space() const
11517 return space();
11520 isl::checked::multi_aff multi_aff::sub(isl::checked::multi_aff multi2) const
11522 auto res = isl_multi_aff_sub(copy(), multi2.release());
11523 return manage(res);
11526 isl::checked::multi_pw_aff multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
11528 return isl::checked::pw_multi_aff(*this).sub(multi2);
11531 isl::checked::multi_union_pw_aff multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
11533 return isl::checked::pw_multi_aff(*this).sub(multi2);
11536 isl::checked::pw_multi_aff multi_aff::sub(const isl::checked::pw_multi_aff &pma2) const
11538 return isl::checked::pw_multi_aff(*this).sub(pma2);
11541 isl::checked::union_pw_multi_aff multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
11543 return isl::checked::pw_multi_aff(*this).sub(upma2);
11546 isl::checked::multi_aff multi_aff::sub(const isl::checked::aff &multi2) const
11548 return this->sub(isl::checked::multi_aff(multi2));
11551 isl::checked::pw_multi_aff multi_aff::subtract_domain(const isl::checked::set &set) const
11553 return isl::checked::pw_multi_aff(*this).subtract_domain(set);
11556 isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::space &space) const
11558 return isl::checked::pw_multi_aff(*this).subtract_domain(space);
11561 isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::union_set &uset) const
11563 return isl::checked::pw_multi_aff(*this).subtract_domain(uset);
11566 isl::checked::pw_multi_aff_list multi_aff::to_list() const
11568 return isl::checked::pw_multi_aff(*this).to_list();
11571 isl::checked::multi_pw_aff multi_aff::to_multi_pw_aff() const
11573 auto res = isl_multi_aff_to_multi_pw_aff(copy());
11574 return manage(res);
11577 isl::checked::multi_union_pw_aff multi_aff::to_multi_union_pw_aff() const
11579 auto res = isl_multi_aff_to_multi_union_pw_aff(copy());
11580 return manage(res);
11583 isl::checked::pw_multi_aff multi_aff::to_pw_multi_aff() const
11585 auto res = isl_multi_aff_to_pw_multi_aff(copy());
11586 return manage(res);
11589 isl::checked::union_pw_multi_aff multi_aff::to_union_pw_multi_aff() const
11591 return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
11594 isl::checked::multi_aff multi_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
11596 auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
11597 return manage(res);
11600 isl::checked::multi_pw_aff multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
11602 return isl::checked::pw_multi_aff(*this).union_add(mpa2);
11605 isl::checked::multi_union_pw_aff multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
11607 return isl::checked::pw_multi_aff(*this).union_add(mupa2);
11610 isl::checked::pw_multi_aff multi_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
11612 return isl::checked::pw_multi_aff(*this).union_add(pma2);
11615 isl::checked::union_pw_multi_aff multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
11617 return isl::checked::pw_multi_aff(*this).union_add(upma2);
11620 isl::checked::multi_aff multi_aff::zero(isl::checked::space space)
11622 auto res = isl_multi_aff_zero(space.release());
11623 return manage(res);
11626 inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
11628 char *str = isl_multi_aff_to_str(obj.get());
11629 if (!str) {
11630 os.setstate(std::ios_base::badbit);
11631 return os;
11633 os << str;
11634 free(str);
11635 return os;
11638 // implementations for isl::multi_id
11639 multi_id manage(__isl_take isl_multi_id *ptr) {
11640 return multi_id(ptr);
11642 multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
11643 ptr = isl_multi_id_copy(ptr);
11644 return multi_id(ptr);
11647 multi_id::multi_id(__isl_take isl_multi_id *ptr)
11648 : ptr(ptr) {}
11650 multi_id::multi_id()
11651 : ptr(nullptr) {}
11653 multi_id::multi_id(const multi_id &obj)
11654 : ptr(nullptr)
11656 ptr = obj.copy();
11659 multi_id::multi_id(isl::checked::space space, isl::checked::id_list list)
11661 auto res = isl_multi_id_from_id_list(space.release(), list.release());
11662 ptr = res;
11665 multi_id::multi_id(isl::checked::ctx ctx, const std::string &str)
11667 auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
11668 ptr = res;
11671 multi_id &multi_id::operator=(multi_id obj) {
11672 std::swap(this->ptr, obj.ptr);
11673 return *this;
11676 multi_id::~multi_id() {
11677 if (ptr)
11678 isl_multi_id_free(ptr);
11681 __isl_give isl_multi_id *multi_id::copy() const & {
11682 return isl_multi_id_copy(ptr);
11685 __isl_keep isl_multi_id *multi_id::get() const {
11686 return ptr;
11689 __isl_give isl_multi_id *multi_id::release() {
11690 isl_multi_id *tmp = ptr;
11691 ptr = nullptr;
11692 return tmp;
11695 bool multi_id::is_null() const {
11696 return ptr == nullptr;
11699 isl::checked::ctx multi_id::ctx() const {
11700 return isl::checked::ctx(isl_multi_id_get_ctx(ptr));
11703 isl::checked::id multi_id::at(int pos) const
11705 auto res = isl_multi_id_get_at(get(), pos);
11706 return manage(res);
11709 isl::checked::id multi_id::get_at(int pos) const
11711 return at(pos);
11714 isl::checked::multi_id multi_id::flat_range_product(isl::checked::multi_id multi2) const
11716 auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
11717 return manage(res);
11720 isl::checked::id_list multi_id::list() const
11722 auto res = isl_multi_id_get_list(get());
11723 return manage(res);
11726 isl::checked::id_list multi_id::get_list() const
11728 return list();
11731 boolean multi_id::plain_is_equal(const isl::checked::multi_id &multi2) const
11733 auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
11734 return manage(res);
11737 isl::checked::multi_id multi_id::range_product(isl::checked::multi_id multi2) const
11739 auto res = isl_multi_id_range_product(copy(), multi2.release());
11740 return manage(res);
11743 isl::checked::multi_id multi_id::set_at(int pos, isl::checked::id el) const
11745 auto res = isl_multi_id_set_at(copy(), pos, el.release());
11746 return manage(res);
11749 isl::checked::multi_id multi_id::set_at(int pos, const std::string &el) const
11751 return this->set_at(pos, isl::checked::id(ctx(), el));
11754 class size multi_id::size() const
11756 auto res = isl_multi_id_size(get());
11757 return manage(res);
11760 isl::checked::space multi_id::space() const
11762 auto res = isl_multi_id_get_space(get());
11763 return manage(res);
11766 isl::checked::space multi_id::get_space() const
11768 return space();
11771 inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
11773 char *str = isl_multi_id_to_str(obj.get());
11774 if (!str) {
11775 os.setstate(std::ios_base::badbit);
11776 return os;
11778 os << str;
11779 free(str);
11780 return os;
11783 // implementations for isl::multi_pw_aff
11784 multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
11785 return multi_pw_aff(ptr);
11787 multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
11788 ptr = isl_multi_pw_aff_copy(ptr);
11789 return multi_pw_aff(ptr);
11792 multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
11793 : ptr(ptr) {}
11795 multi_pw_aff::multi_pw_aff()
11796 : ptr(nullptr) {}
11798 multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
11799 : ptr(nullptr)
11801 ptr = obj.copy();
11804 multi_pw_aff::multi_pw_aff(isl::checked::aff aff)
11806 auto res = isl_multi_pw_aff_from_aff(aff.release());
11807 ptr = res;
11810 multi_pw_aff::multi_pw_aff(isl::checked::multi_aff ma)
11812 auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
11813 ptr = res;
11816 multi_pw_aff::multi_pw_aff(isl::checked::pw_aff pa)
11818 auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
11819 ptr = res;
11822 multi_pw_aff::multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list)
11824 auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
11825 ptr = res;
11828 multi_pw_aff::multi_pw_aff(isl::checked::pw_multi_aff pma)
11830 auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
11831 ptr = res;
11834 multi_pw_aff::multi_pw_aff(isl::checked::ctx ctx, const std::string &str)
11836 auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
11837 ptr = res;
11840 multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
11841 std::swap(this->ptr, obj.ptr);
11842 return *this;
11845 multi_pw_aff::~multi_pw_aff() {
11846 if (ptr)
11847 isl_multi_pw_aff_free(ptr);
11850 __isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
11851 return isl_multi_pw_aff_copy(ptr);
11854 __isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
11855 return ptr;
11858 __isl_give isl_multi_pw_aff *multi_pw_aff::release() {
11859 isl_multi_pw_aff *tmp = ptr;
11860 ptr = nullptr;
11861 return tmp;
11864 bool multi_pw_aff::is_null() const {
11865 return ptr == nullptr;
11868 isl::checked::ctx multi_pw_aff::ctx() const {
11869 return isl::checked::ctx(isl_multi_pw_aff_get_ctx(ptr));
11872 isl::checked::multi_pw_aff multi_pw_aff::add(isl::checked::multi_pw_aff multi2) const
11874 auto res = isl_multi_pw_aff_add(copy(), multi2.release());
11875 return manage(res);
11878 isl::checked::multi_union_pw_aff multi_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
11880 return isl::checked::multi_union_pw_aff(*this).add(multi2);
11883 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::aff &multi2) const
11885 return this->add(isl::checked::multi_pw_aff(multi2));
11888 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::multi_aff &multi2) const
11890 return this->add(isl::checked::multi_pw_aff(multi2));
11893 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_aff &multi2) const
11895 return this->add(isl::checked::multi_pw_aff(multi2));
11898 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_multi_aff &multi2) const
11900 return this->add(isl::checked::multi_pw_aff(multi2));
11903 isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::multi_val mv) const
11905 auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
11906 return manage(res);
11909 isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::val v) const
11911 auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
11912 return manage(res);
11915 isl::checked::multi_pw_aff multi_pw_aff::add_constant(long v) const
11917 return this->add_constant(isl::checked::val(ctx(), v));
11920 isl::checked::map multi_pw_aff::as_map() const
11922 auto res = isl_multi_pw_aff_as_map(copy());
11923 return manage(res);
11926 isl::checked::multi_aff multi_pw_aff::as_multi_aff() const
11928 auto res = isl_multi_pw_aff_as_multi_aff(copy());
11929 return manage(res);
11932 isl::checked::set multi_pw_aff::as_set() const
11934 auto res = isl_multi_pw_aff_as_set(copy());
11935 return manage(res);
11938 isl::checked::pw_aff multi_pw_aff::at(int pos) const
11940 auto res = isl_multi_pw_aff_get_at(get(), pos);
11941 return manage(res);
11944 isl::checked::pw_aff multi_pw_aff::get_at(int pos) const
11946 return at(pos);
11949 isl::checked::set multi_pw_aff::bind(isl::checked::multi_id tuple) const
11951 auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
11952 return manage(res);
11955 isl::checked::multi_pw_aff multi_pw_aff::bind_domain(isl::checked::multi_id tuple) const
11957 auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
11958 return manage(res);
11961 isl::checked::multi_pw_aff multi_pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
11963 auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
11964 return manage(res);
11967 isl::checked::multi_pw_aff multi_pw_aff::coalesce() const
11969 auto res = isl_multi_pw_aff_coalesce(copy());
11970 return manage(res);
11973 isl::checked::set multi_pw_aff::domain() const
11975 auto res = isl_multi_pw_aff_domain(copy());
11976 return manage(res);
11979 isl::checked::multi_pw_aff multi_pw_aff::domain_reverse() const
11981 auto res = isl_multi_pw_aff_domain_reverse(copy());
11982 return manage(res);
11985 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(isl::checked::multi_pw_aff multi2) const
11987 auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
11988 return manage(res);
11991 isl::checked::multi_union_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
11993 return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
11996 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::aff &multi2) const
11998 return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
12001 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_aff &multi2) const
12003 return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
12006 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_aff &multi2) const
12008 return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
12011 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_multi_aff &multi2) const
12013 return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
12016 isl::checked::multi_pw_aff multi_pw_aff::gist(isl::checked::set set) const
12018 auto res = isl_multi_pw_aff_gist(copy(), set.release());
12019 return manage(res);
12022 isl::checked::multi_union_pw_aff multi_pw_aff::gist(const isl::checked::union_set &context) const
12024 return isl::checked::multi_union_pw_aff(*this).gist(context);
12027 isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::basic_set &set) const
12029 return this->gist(isl::checked::set(set));
12032 isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::point &set) const
12034 return this->gist(isl::checked::set(set));
12037 isl::checked::multi_pw_aff multi_pw_aff::gist_params(isl::checked::set set) const
12039 auto res = isl_multi_pw_aff_gist_params(copy(), set.release());
12040 return manage(res);
12043 boolean multi_pw_aff::has_range_tuple_id() const
12045 auto res = isl_multi_pw_aff_has_range_tuple_id(get());
12046 return manage(res);
12049 isl::checked::multi_pw_aff multi_pw_aff::identity() const
12051 auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
12052 return manage(res);
12055 isl::checked::multi_pw_aff multi_pw_aff::identity_on_domain(isl::checked::space space)
12057 auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
12058 return manage(res);
12061 isl::checked::multi_pw_aff multi_pw_aff::insert_domain(isl::checked::space domain) const
12063 auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
12064 return manage(res);
12067 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(isl::checked::set domain) const
12069 auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
12070 return manage(res);
12073 isl::checked::multi_union_pw_aff multi_pw_aff::intersect_domain(const isl::checked::union_set &uset) const
12075 return isl::checked::multi_union_pw_aff(*this).intersect_domain(uset);
12078 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::basic_set &domain) const
12080 return this->intersect_domain(isl::checked::set(domain));
12083 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::point &domain) const
12085 return this->intersect_domain(isl::checked::set(domain));
12088 isl::checked::multi_pw_aff multi_pw_aff::intersect_params(isl::checked::set set) const
12090 auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
12091 return manage(res);
12094 boolean multi_pw_aff::involves_nan() const
12096 auto res = isl_multi_pw_aff_involves_nan(get());
12097 return manage(res);
12100 boolean multi_pw_aff::involves_param(const isl::checked::id &id) const
12102 auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
12103 return manage(res);
12106 boolean multi_pw_aff::involves_param(const std::string &id) const
12108 return this->involves_param(isl::checked::id(ctx(), id));
12111 boolean multi_pw_aff::involves_param(const isl::checked::id_list &list) const
12113 auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
12114 return manage(res);
12117 boolean multi_pw_aff::isa_multi_aff() const
12119 auto res = isl_multi_pw_aff_isa_multi_aff(get());
12120 return manage(res);
12123 isl::checked::pw_aff_list multi_pw_aff::list() const
12125 auto res = isl_multi_pw_aff_get_list(get());
12126 return manage(res);
12129 isl::checked::pw_aff_list multi_pw_aff::get_list() const
12131 return list();
12134 isl::checked::multi_pw_aff multi_pw_aff::max(isl::checked::multi_pw_aff multi2) const
12136 auto res = isl_multi_pw_aff_max(copy(), multi2.release());
12137 return manage(res);
12140 isl::checked::multi_val multi_pw_aff::max_multi_val() const
12142 auto res = isl_multi_pw_aff_max_multi_val(copy());
12143 return manage(res);
12146 isl::checked::multi_pw_aff multi_pw_aff::min(isl::checked::multi_pw_aff multi2) const
12148 auto res = isl_multi_pw_aff_min(copy(), multi2.release());
12149 return manage(res);
12152 isl::checked::multi_val multi_pw_aff::min_multi_val() const
12154 auto res = isl_multi_pw_aff_min_multi_val(copy());
12155 return manage(res);
12158 isl::checked::multi_pw_aff multi_pw_aff::neg() const
12160 auto res = isl_multi_pw_aff_neg(copy());
12161 return manage(res);
12164 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
12166 auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
12167 return manage(res);
12170 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
12172 return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
12175 boolean multi_pw_aff::plain_is_equal(const isl::checked::aff &multi2) const
12177 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12180 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
12182 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12185 boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_aff &multi2) const
12187 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12190 boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_multi_aff &multi2) const
12192 return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
12195 isl::checked::multi_pw_aff multi_pw_aff::product(isl::checked::multi_pw_aff multi2) const
12197 auto res = isl_multi_pw_aff_product(copy(), multi2.release());
12198 return manage(res);
12201 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_aff ma) const
12203 auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
12204 return manage(res);
12207 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_pw_aff mpa2) const
12209 auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
12210 return manage(res);
12213 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::pw_multi_aff pma) const
12215 auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
12216 return manage(res);
12219 isl::checked::multi_union_pw_aff multi_pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
12221 return isl::checked::multi_union_pw_aff(*this).pullback(upma);
12224 isl::checked::multi_pw_aff multi_pw_aff::range_product(isl::checked::multi_pw_aff multi2) const
12226 auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
12227 return manage(res);
12230 isl::checked::multi_union_pw_aff multi_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
12232 return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
12235 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::aff &multi2) const
12237 return this->range_product(isl::checked::multi_pw_aff(multi2));
12240 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::multi_aff &multi2) const
12242 return this->range_product(isl::checked::multi_pw_aff(multi2));
12245 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_aff &multi2) const
12247 return this->range_product(isl::checked::multi_pw_aff(multi2));
12250 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_multi_aff &multi2) const
12252 return this->range_product(isl::checked::multi_pw_aff(multi2));
12255 isl::checked::id multi_pw_aff::range_tuple_id() const
12257 auto res = isl_multi_pw_aff_get_range_tuple_id(get());
12258 return manage(res);
12261 isl::checked::id multi_pw_aff::get_range_tuple_id() const
12263 return range_tuple_id();
12266 isl::checked::multi_pw_aff multi_pw_aff::reset_range_tuple_id() const
12268 auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
12269 return manage(res);
12272 isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::multi_val mv) const
12274 auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
12275 return manage(res);
12278 isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::val v) const
12280 auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
12281 return manage(res);
12284 isl::checked::multi_pw_aff multi_pw_aff::scale(long v) const
12286 return this->scale(isl::checked::val(ctx(), v));
12289 isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::multi_val mv) const
12291 auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
12292 return manage(res);
12295 isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::val v) const
12297 auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
12298 return manage(res);
12301 isl::checked::multi_pw_aff multi_pw_aff::scale_down(long v) const
12303 return this->scale_down(isl::checked::val(ctx(), v));
12306 isl::checked::multi_pw_aff multi_pw_aff::set_at(int pos, isl::checked::pw_aff el) const
12308 auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
12309 return manage(res);
12312 isl::checked::multi_union_pw_aff multi_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
12314 return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
12317 isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(isl::checked::id id) const
12319 auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
12320 return manage(res);
12323 isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(const std::string &id) const
12325 return this->set_range_tuple(isl::checked::id(ctx(), id));
12328 class size multi_pw_aff::size() const
12330 auto res = isl_multi_pw_aff_size(get());
12331 return manage(res);
12334 isl::checked::space multi_pw_aff::space() const
12336 auto res = isl_multi_pw_aff_get_space(get());
12337 return manage(res);
12340 isl::checked::space multi_pw_aff::get_space() const
12342 return space();
12345 isl::checked::multi_pw_aff multi_pw_aff::sub(isl::checked::multi_pw_aff multi2) const
12347 auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
12348 return manage(res);
12351 isl::checked::multi_union_pw_aff multi_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
12353 return isl::checked::multi_union_pw_aff(*this).sub(multi2);
12356 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::aff &multi2) const
12358 return this->sub(isl::checked::multi_pw_aff(multi2));
12361 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::multi_aff &multi2) const
12363 return this->sub(isl::checked::multi_pw_aff(multi2));
12366 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_aff &multi2) const
12368 return this->sub(isl::checked::multi_pw_aff(multi2));
12371 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_multi_aff &multi2) const
12373 return this->sub(isl::checked::multi_pw_aff(multi2));
12376 isl::checked::multi_pw_aff multi_pw_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
12378 auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
12379 return manage(res);
12382 isl::checked::multi_pw_aff multi_pw_aff::union_add(isl::checked::multi_pw_aff mpa2) const
12384 auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
12385 return manage(res);
12388 isl::checked::multi_union_pw_aff multi_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
12390 return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
12393 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::aff &mpa2) const
12395 return this->union_add(isl::checked::multi_pw_aff(mpa2));
12398 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::multi_aff &mpa2) const
12400 return this->union_add(isl::checked::multi_pw_aff(mpa2));
12403 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_aff &mpa2) const
12405 return this->union_add(isl::checked::multi_pw_aff(mpa2));
12408 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_multi_aff &mpa2) const
12410 return this->union_add(isl::checked::multi_pw_aff(mpa2));
12413 isl::checked::multi_pw_aff multi_pw_aff::zero(isl::checked::space space)
12415 auto res = isl_multi_pw_aff_zero(space.release());
12416 return manage(res);
12419 inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
12421 char *str = isl_multi_pw_aff_to_str(obj.get());
12422 if (!str) {
12423 os.setstate(std::ios_base::badbit);
12424 return os;
12426 os << str;
12427 free(str);
12428 return os;
12431 // implementations for isl::multi_union_pw_aff
12432 multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
12433 return multi_union_pw_aff(ptr);
12435 multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
12436 ptr = isl_multi_union_pw_aff_copy(ptr);
12437 return multi_union_pw_aff(ptr);
12440 multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
12441 : ptr(ptr) {}
12443 multi_union_pw_aff::multi_union_pw_aff()
12444 : ptr(nullptr) {}
12446 multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
12447 : ptr(nullptr)
12449 ptr = obj.copy();
12452 multi_union_pw_aff::multi_union_pw_aff(isl::checked::multi_pw_aff mpa)
12454 auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
12455 ptr = res;
12458 multi_union_pw_aff::multi_union_pw_aff(isl::checked::union_pw_aff upa)
12460 auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
12461 ptr = res;
12464 multi_union_pw_aff::multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list)
12466 auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
12467 ptr = res;
12470 multi_union_pw_aff::multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str)
12472 auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
12473 ptr = res;
12476 multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
12477 std::swap(this->ptr, obj.ptr);
12478 return *this;
12481 multi_union_pw_aff::~multi_union_pw_aff() {
12482 if (ptr)
12483 isl_multi_union_pw_aff_free(ptr);
12486 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
12487 return isl_multi_union_pw_aff_copy(ptr);
12490 __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
12491 return ptr;
12494 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
12495 isl_multi_union_pw_aff *tmp = ptr;
12496 ptr = nullptr;
12497 return tmp;
12500 bool multi_union_pw_aff::is_null() const {
12501 return ptr == nullptr;
12504 isl::checked::ctx multi_union_pw_aff::ctx() const {
12505 return isl::checked::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
12508 isl::checked::multi_union_pw_aff multi_union_pw_aff::add(isl::checked::multi_union_pw_aff multi2) const
12510 auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
12511 return manage(res);
12514 isl::checked::union_pw_aff multi_union_pw_aff::at(int pos) const
12516 auto res = isl_multi_union_pw_aff_get_at(get(), pos);
12517 return manage(res);
12520 isl::checked::union_pw_aff multi_union_pw_aff::get_at(int pos) const
12522 return at(pos);
12525 isl::checked::union_set multi_union_pw_aff::bind(isl::checked::multi_id tuple) const
12527 auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
12528 return manage(res);
12531 isl::checked::multi_union_pw_aff multi_union_pw_aff::coalesce() const
12533 auto res = isl_multi_union_pw_aff_coalesce(copy());
12534 return manage(res);
12537 isl::checked::union_set multi_union_pw_aff::domain() const
12539 auto res = isl_multi_union_pw_aff_domain(copy());
12540 return manage(res);
12543 isl::checked::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::checked::multi_union_pw_aff multi2) const
12545 auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
12546 return manage(res);
12549 isl::checked::multi_union_pw_aff multi_union_pw_aff::gist(isl::checked::union_set context) const
12551 auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
12552 return manage(res);
12555 isl::checked::multi_union_pw_aff multi_union_pw_aff::gist_params(isl::checked::set context) const
12557 auto res = isl_multi_union_pw_aff_gist_params(copy(), context.release());
12558 return manage(res);
12561 boolean multi_union_pw_aff::has_range_tuple_id() const
12563 auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
12564 return manage(res);
12567 isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::checked::union_set uset) const
12569 auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
12570 return manage(res);
12573 isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::checked::set params) const
12575 auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
12576 return manage(res);
12579 boolean multi_union_pw_aff::involves_nan() const
12581 auto res = isl_multi_union_pw_aff_involves_nan(get());
12582 return manage(res);
12585 isl::checked::union_pw_aff_list multi_union_pw_aff::list() const
12587 auto res = isl_multi_union_pw_aff_get_list(get());
12588 return manage(res);
12591 isl::checked::union_pw_aff_list multi_union_pw_aff::get_list() const
12593 return list();
12596 isl::checked::multi_union_pw_aff multi_union_pw_aff::neg() const
12598 auto res = isl_multi_union_pw_aff_neg(copy());
12599 return manage(res);
12602 boolean multi_union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
12604 auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
12605 return manage(res);
12608 isl::checked::multi_union_pw_aff multi_union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
12610 auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
12611 return manage(res);
12614 isl::checked::multi_union_pw_aff multi_union_pw_aff::range_product(isl::checked::multi_union_pw_aff multi2) const
12616 auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
12617 return manage(res);
12620 isl::checked::id multi_union_pw_aff::range_tuple_id() const
12622 auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
12623 return manage(res);
12626 isl::checked::id multi_union_pw_aff::get_range_tuple_id() const
12628 return range_tuple_id();
12631 isl::checked::multi_union_pw_aff multi_union_pw_aff::reset_range_tuple_id() const
12633 auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
12634 return manage(res);
12637 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::multi_val mv) const
12639 auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
12640 return manage(res);
12643 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::val v) const
12645 auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
12646 return manage(res);
12649 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(long v) const
12651 return this->scale(isl::checked::val(ctx(), v));
12654 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::multi_val mv) const
12656 auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
12657 return manage(res);
12660 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::val v) const
12662 auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
12663 return manage(res);
12666 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(long v) const
12668 return this->scale_down(isl::checked::val(ctx(), v));
12671 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_at(int pos, isl::checked::union_pw_aff el) const
12673 auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
12674 return manage(res);
12677 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(isl::checked::id id) const
12679 auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
12680 return manage(res);
12683 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(const std::string &id) const
12685 return this->set_range_tuple(isl::checked::id(ctx(), id));
12688 class size multi_union_pw_aff::size() const
12690 auto res = isl_multi_union_pw_aff_size(get());
12691 return manage(res);
12694 isl::checked::space multi_union_pw_aff::space() const
12696 auto res = isl_multi_union_pw_aff_get_space(get());
12697 return manage(res);
12700 isl::checked::space multi_union_pw_aff::get_space() const
12702 return space();
12705 isl::checked::multi_union_pw_aff multi_union_pw_aff::sub(isl::checked::multi_union_pw_aff multi2) const
12707 auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
12708 return manage(res);
12711 isl::checked::multi_union_pw_aff multi_union_pw_aff::union_add(isl::checked::multi_union_pw_aff mupa2) const
12713 auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
12714 return manage(res);
12717 isl::checked::multi_union_pw_aff multi_union_pw_aff::zero(isl::checked::space space)
12719 auto res = isl_multi_union_pw_aff_zero(space.release());
12720 return manage(res);
12723 inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
12725 char *str = isl_multi_union_pw_aff_to_str(obj.get());
12726 if (!str) {
12727 os.setstate(std::ios_base::badbit);
12728 return os;
12730 os << str;
12731 free(str);
12732 return os;
12735 // implementations for isl::multi_val
12736 multi_val manage(__isl_take isl_multi_val *ptr) {
12737 return multi_val(ptr);
12739 multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
12740 ptr = isl_multi_val_copy(ptr);
12741 return multi_val(ptr);
12744 multi_val::multi_val(__isl_take isl_multi_val *ptr)
12745 : ptr(ptr) {}
12747 multi_val::multi_val()
12748 : ptr(nullptr) {}
12750 multi_val::multi_val(const multi_val &obj)
12751 : ptr(nullptr)
12753 ptr = obj.copy();
12756 multi_val::multi_val(isl::checked::space space, isl::checked::val_list list)
12758 auto res = isl_multi_val_from_val_list(space.release(), list.release());
12759 ptr = res;
12762 multi_val::multi_val(isl::checked::ctx ctx, const std::string &str)
12764 auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
12765 ptr = res;
12768 multi_val &multi_val::operator=(multi_val obj) {
12769 std::swap(this->ptr, obj.ptr);
12770 return *this;
12773 multi_val::~multi_val() {
12774 if (ptr)
12775 isl_multi_val_free(ptr);
12778 __isl_give isl_multi_val *multi_val::copy() const & {
12779 return isl_multi_val_copy(ptr);
12782 __isl_keep isl_multi_val *multi_val::get() const {
12783 return ptr;
12786 __isl_give isl_multi_val *multi_val::release() {
12787 isl_multi_val *tmp = ptr;
12788 ptr = nullptr;
12789 return tmp;
12792 bool multi_val::is_null() const {
12793 return ptr == nullptr;
12796 isl::checked::ctx multi_val::ctx() const {
12797 return isl::checked::ctx(isl_multi_val_get_ctx(ptr));
12800 isl::checked::multi_val multi_val::add(isl::checked::multi_val multi2) const
12802 auto res = isl_multi_val_add(copy(), multi2.release());
12803 return manage(res);
12806 isl::checked::multi_val multi_val::add(isl::checked::val v) const
12808 auto res = isl_multi_val_add_val(copy(), v.release());
12809 return manage(res);
12812 isl::checked::multi_val multi_val::add(long v) const
12814 return this->add(isl::checked::val(ctx(), v));
12817 isl::checked::val multi_val::at(int pos) const
12819 auto res = isl_multi_val_get_at(get(), pos);
12820 return manage(res);
12823 isl::checked::val multi_val::get_at(int pos) const
12825 return at(pos);
12828 isl::checked::multi_val multi_val::flat_range_product(isl::checked::multi_val multi2) const
12830 auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
12831 return manage(res);
12834 boolean multi_val::has_range_tuple_id() const
12836 auto res = isl_multi_val_has_range_tuple_id(get());
12837 return manage(res);
12840 boolean multi_val::involves_nan() const
12842 auto res = isl_multi_val_involves_nan(get());
12843 return manage(res);
12846 isl::checked::val_list multi_val::list() const
12848 auto res = isl_multi_val_get_list(get());
12849 return manage(res);
12852 isl::checked::val_list multi_val::get_list() const
12854 return list();
12857 isl::checked::multi_val multi_val::max(isl::checked::multi_val multi2) const
12859 auto res = isl_multi_val_max(copy(), multi2.release());
12860 return manage(res);
12863 isl::checked::multi_val multi_val::min(isl::checked::multi_val multi2) const
12865 auto res = isl_multi_val_min(copy(), multi2.release());
12866 return manage(res);
12869 isl::checked::multi_val multi_val::neg() const
12871 auto res = isl_multi_val_neg(copy());
12872 return manage(res);
12875 boolean multi_val::plain_is_equal(const isl::checked::multi_val &multi2) const
12877 auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
12878 return manage(res);
12881 isl::checked::multi_val multi_val::product(isl::checked::multi_val multi2) const
12883 auto res = isl_multi_val_product(copy(), multi2.release());
12884 return manage(res);
12887 isl::checked::multi_val multi_val::range_product(isl::checked::multi_val multi2) const
12889 auto res = isl_multi_val_range_product(copy(), multi2.release());
12890 return manage(res);
12893 isl::checked::id multi_val::range_tuple_id() const
12895 auto res = isl_multi_val_get_range_tuple_id(get());
12896 return manage(res);
12899 isl::checked::id multi_val::get_range_tuple_id() const
12901 return range_tuple_id();
12904 isl::checked::multi_val multi_val::reset_range_tuple_id() const
12906 auto res = isl_multi_val_reset_range_tuple_id(copy());
12907 return manage(res);
12910 isl::checked::multi_val multi_val::scale(isl::checked::multi_val mv) const
12912 auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
12913 return manage(res);
12916 isl::checked::multi_val multi_val::scale(isl::checked::val v) const
12918 auto res = isl_multi_val_scale_val(copy(), v.release());
12919 return manage(res);
12922 isl::checked::multi_val multi_val::scale(long v) const
12924 return this->scale(isl::checked::val(ctx(), v));
12927 isl::checked::multi_val multi_val::scale_down(isl::checked::multi_val mv) const
12929 auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
12930 return manage(res);
12933 isl::checked::multi_val multi_val::scale_down(isl::checked::val v) const
12935 auto res = isl_multi_val_scale_down_val(copy(), v.release());
12936 return manage(res);
12939 isl::checked::multi_val multi_val::scale_down(long v) const
12941 return this->scale_down(isl::checked::val(ctx(), v));
12944 isl::checked::multi_val multi_val::set_at(int pos, isl::checked::val el) const
12946 auto res = isl_multi_val_set_at(copy(), pos, el.release());
12947 return manage(res);
12950 isl::checked::multi_val multi_val::set_at(int pos, long el) const
12952 return this->set_at(pos, isl::checked::val(ctx(), el));
12955 isl::checked::multi_val multi_val::set_range_tuple(isl::checked::id id) const
12957 auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
12958 return manage(res);
12961 isl::checked::multi_val multi_val::set_range_tuple(const std::string &id) const
12963 return this->set_range_tuple(isl::checked::id(ctx(), id));
12966 class size multi_val::size() const
12968 auto res = isl_multi_val_size(get());
12969 return manage(res);
12972 isl::checked::space multi_val::space() const
12974 auto res = isl_multi_val_get_space(get());
12975 return manage(res);
12978 isl::checked::space multi_val::get_space() const
12980 return space();
12983 isl::checked::multi_val multi_val::sub(isl::checked::multi_val multi2) const
12985 auto res = isl_multi_val_sub(copy(), multi2.release());
12986 return manage(res);
12989 isl::checked::multi_val multi_val::zero(isl::checked::space space)
12991 auto res = isl_multi_val_zero(space.release());
12992 return manage(res);
12995 inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
12997 char *str = isl_multi_val_to_str(obj.get());
12998 if (!str) {
12999 os.setstate(std::ios_base::badbit);
13000 return os;
13002 os << str;
13003 free(str);
13004 return os;
13007 // implementations for isl::point
13008 point manage(__isl_take isl_point *ptr) {
13009 return point(ptr);
13011 point manage_copy(__isl_keep isl_point *ptr) {
13012 ptr = isl_point_copy(ptr);
13013 return point(ptr);
13016 point::point(__isl_take isl_point *ptr)
13017 : ptr(ptr) {}
13019 point::point()
13020 : ptr(nullptr) {}
13022 point::point(const point &obj)
13023 : ptr(nullptr)
13025 ptr = obj.copy();
13028 point &point::operator=(point obj) {
13029 std::swap(this->ptr, obj.ptr);
13030 return *this;
13033 point::~point() {
13034 if (ptr)
13035 isl_point_free(ptr);
13038 __isl_give isl_point *point::copy() const & {
13039 return isl_point_copy(ptr);
13042 __isl_keep isl_point *point::get() const {
13043 return ptr;
13046 __isl_give isl_point *point::release() {
13047 isl_point *tmp = ptr;
13048 ptr = nullptr;
13049 return tmp;
13052 bool point::is_null() const {
13053 return ptr == nullptr;
13056 isl::checked::ctx point::ctx() const {
13057 return isl::checked::ctx(isl_point_get_ctx(ptr));
13060 isl::checked::basic_set point::affine_hull() const
13062 return isl::checked::basic_set(*this).affine_hull();
13065 isl::checked::basic_set point::apply(const isl::checked::basic_map &bmap) const
13067 return isl::checked::basic_set(*this).apply(bmap);
13070 isl::checked::set point::apply(const isl::checked::map &map) const
13072 return isl::checked::basic_set(*this).apply(map);
13075 isl::checked::union_set point::apply(const isl::checked::union_map &umap) const
13077 return isl::checked::basic_set(*this).apply(umap);
13080 isl::checked::pw_multi_aff point::as_pw_multi_aff() const
13082 return isl::checked::basic_set(*this).as_pw_multi_aff();
13085 isl::checked::set point::as_set() const
13087 return isl::checked::basic_set(*this).as_set();
13090 isl::checked::set point::bind(const isl::checked::multi_id &tuple) const
13092 return isl::checked::basic_set(*this).bind(tuple);
13095 isl::checked::set point::coalesce() const
13097 return isl::checked::basic_set(*this).coalesce();
13100 isl::checked::set point::complement() const
13102 return isl::checked::basic_set(*this).complement();
13105 isl::checked::union_set point::compute_divs() const
13107 return isl::checked::basic_set(*this).compute_divs();
13110 isl::checked::basic_set point::detect_equalities() const
13112 return isl::checked::basic_set(*this).detect_equalities();
13115 isl::checked::val point::dim_max_val(int pos) const
13117 return isl::checked::basic_set(*this).dim_max_val(pos);
13120 isl::checked::val point::dim_min_val(int pos) const
13122 return isl::checked::basic_set(*this).dim_min_val(pos);
13125 isl::checked::set point::drop_unused_params() const
13127 return isl::checked::basic_set(*this).drop_unused_params();
13130 boolean point::every_set(const std::function<boolean(isl::checked::set)> &test) const
13132 return isl::checked::basic_set(*this).every_set(test);
13135 isl::checked::set point::extract_set(const isl::checked::space &space) const
13137 return isl::checked::basic_set(*this).extract_set(space);
13140 isl::checked::basic_set point::flatten() const
13142 return isl::checked::basic_set(*this).flatten();
13145 stat point::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
13147 return isl::checked::basic_set(*this).foreach_basic_set(fn);
13150 stat point::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
13152 return isl::checked::basic_set(*this).foreach_point(fn);
13155 stat point::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
13157 return isl::checked::basic_set(*this).foreach_set(fn);
13160 isl::checked::basic_set point::gist(const isl::checked::basic_set &context) const
13162 return isl::checked::basic_set(*this).gist(context);
13165 isl::checked::set point::gist(const isl::checked::set &context) const
13167 return isl::checked::basic_set(*this).gist(context);
13170 isl::checked::union_set point::gist(const isl::checked::union_set &context) const
13172 return isl::checked::basic_set(*this).gist(context);
13175 isl::checked::set point::gist_params(const isl::checked::set &context) const
13177 return isl::checked::basic_set(*this).gist_params(context);
13180 isl::checked::map point::identity() const
13182 return isl::checked::basic_set(*this).identity();
13185 isl::checked::pw_aff point::indicator_function() const
13187 return isl::checked::basic_set(*this).indicator_function();
13190 isl::checked::map point::insert_domain(const isl::checked::space &domain) const
13192 return isl::checked::basic_set(*this).insert_domain(domain);
13195 isl::checked::basic_set point::intersect(const isl::checked::basic_set &bset2) const
13197 return isl::checked::basic_set(*this).intersect(bset2);
13200 isl::checked::set point::intersect(const isl::checked::set &set2) const
13202 return isl::checked::basic_set(*this).intersect(set2);
13205 isl::checked::union_set point::intersect(const isl::checked::union_set &uset2) const
13207 return isl::checked::basic_set(*this).intersect(uset2);
13210 isl::checked::basic_set point::intersect_params(const isl::checked::basic_set &bset2) const
13212 return isl::checked::basic_set(*this).intersect_params(bset2);
13215 isl::checked::set point::intersect_params(const isl::checked::set &params) const
13217 return isl::checked::basic_set(*this).intersect_params(params);
13220 boolean point::involves_locals() const
13222 return isl::checked::basic_set(*this).involves_locals();
13225 boolean point::is_disjoint(const isl::checked::set &set2) const
13227 return isl::checked::basic_set(*this).is_disjoint(set2);
13230 boolean point::is_disjoint(const isl::checked::union_set &uset2) const
13232 return isl::checked::basic_set(*this).is_disjoint(uset2);
13235 boolean point::is_empty() const
13237 return isl::checked::basic_set(*this).is_empty();
13240 boolean point::is_equal(const isl::checked::basic_set &bset2) const
13242 return isl::checked::basic_set(*this).is_equal(bset2);
13245 boolean point::is_equal(const isl::checked::set &set2) const
13247 return isl::checked::basic_set(*this).is_equal(set2);
13250 boolean point::is_equal(const isl::checked::union_set &uset2) const
13252 return isl::checked::basic_set(*this).is_equal(uset2);
13255 boolean point::is_singleton() const
13257 return isl::checked::basic_set(*this).is_singleton();
13260 boolean point::is_strict_subset(const isl::checked::set &set2) const
13262 return isl::checked::basic_set(*this).is_strict_subset(set2);
13265 boolean point::is_strict_subset(const isl::checked::union_set &uset2) const
13267 return isl::checked::basic_set(*this).is_strict_subset(uset2);
13270 boolean point::is_subset(const isl::checked::basic_set &bset2) const
13272 return isl::checked::basic_set(*this).is_subset(bset2);
13275 boolean point::is_subset(const isl::checked::set &set2) const
13277 return isl::checked::basic_set(*this).is_subset(set2);
13280 boolean point::is_subset(const isl::checked::union_set &uset2) const
13282 return isl::checked::basic_set(*this).is_subset(uset2);
13285 boolean point::is_wrapping() const
13287 return isl::checked::basic_set(*this).is_wrapping();
13290 boolean point::isa_set() const
13292 return isl::checked::basic_set(*this).isa_set();
13295 isl::checked::fixed_box point::lattice_tile() const
13297 return isl::checked::basic_set(*this).lattice_tile();
13300 isl::checked::set point::lexmax() const
13302 return isl::checked::basic_set(*this).lexmax();
13305 isl::checked::pw_multi_aff point::lexmax_pw_multi_aff() const
13307 return isl::checked::basic_set(*this).lexmax_pw_multi_aff();
13310 isl::checked::set point::lexmin() const
13312 return isl::checked::basic_set(*this).lexmin();
13315 isl::checked::pw_multi_aff point::lexmin_pw_multi_aff() const
13317 return isl::checked::basic_set(*this).lexmin_pw_multi_aff();
13320 isl::checked::set point::lower_bound(const isl::checked::multi_pw_aff &lower) const
13322 return isl::checked::basic_set(*this).lower_bound(lower);
13325 isl::checked::set point::lower_bound(const isl::checked::multi_val &lower) const
13327 return isl::checked::basic_set(*this).lower_bound(lower);
13330 isl::checked::multi_pw_aff point::max_multi_pw_aff() const
13332 return isl::checked::basic_set(*this).max_multi_pw_aff();
13335 isl::checked::val point::max_val(const isl::checked::aff &obj) const
13337 return isl::checked::basic_set(*this).max_val(obj);
13340 isl::checked::multi_pw_aff point::min_multi_pw_aff() const
13342 return isl::checked::basic_set(*this).min_multi_pw_aff();
13345 isl::checked::val point::min_val(const isl::checked::aff &obj) const
13347 return isl::checked::basic_set(*this).min_val(obj);
13350 isl::checked::multi_val point::multi_val() const
13352 auto res = isl_point_get_multi_val(get());
13353 return manage(res);
13356 isl::checked::multi_val point::get_multi_val() const
13358 return multi_val();
13361 class size point::n_basic_set() const
13363 return isl::checked::basic_set(*this).n_basic_set();
13366 isl::checked::pw_aff point::param_pw_aff_on_domain(const isl::checked::id &id) const
13368 return isl::checked::basic_set(*this).param_pw_aff_on_domain(id);
13371 isl::checked::pw_aff point::param_pw_aff_on_domain(const std::string &id) const
13373 return this->param_pw_aff_on_domain(isl::checked::id(ctx(), id));
13376 isl::checked::basic_set point::params() const
13378 return isl::checked::basic_set(*this).params();
13381 isl::checked::multi_val point::plain_multi_val_if_fixed() const
13383 return isl::checked::basic_set(*this).plain_multi_val_if_fixed();
13386 isl::checked::basic_set point::polyhedral_hull() const
13388 return isl::checked::basic_set(*this).polyhedral_hull();
13391 isl::checked::set point::preimage(const isl::checked::multi_aff &ma) const
13393 return isl::checked::basic_set(*this).preimage(ma);
13396 isl::checked::set point::preimage(const isl::checked::multi_pw_aff &mpa) const
13398 return isl::checked::basic_set(*this).preimage(mpa);
13401 isl::checked::set point::preimage(const isl::checked::pw_multi_aff &pma) const
13403 return isl::checked::basic_set(*this).preimage(pma);
13406 isl::checked::union_set point::preimage(const isl::checked::union_pw_multi_aff &upma) const
13408 return isl::checked::basic_set(*this).preimage(upma);
13411 isl::checked::set point::product(const isl::checked::set &set2) const
13413 return isl::checked::basic_set(*this).product(set2);
13416 isl::checked::set point::project_out_all_params() const
13418 return isl::checked::basic_set(*this).project_out_all_params();
13421 isl::checked::set point::project_out_param(const isl::checked::id &id) const
13423 return isl::checked::basic_set(*this).project_out_param(id);
13426 isl::checked::set point::project_out_param(const std::string &id) const
13428 return this->project_out_param(isl::checked::id(ctx(), id));
13431 isl::checked::set point::project_out_param(const isl::checked::id_list &list) const
13433 return isl::checked::basic_set(*this).project_out_param(list);
13436 isl::checked::pw_aff point::pw_aff_on_domain(const isl::checked::val &v) const
13438 return isl::checked::basic_set(*this).pw_aff_on_domain(v);
13441 isl::checked::pw_aff point::pw_aff_on_domain(long v) const
13443 return this->pw_aff_on_domain(isl::checked::val(ctx(), v));
13446 isl::checked::pw_multi_aff point::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
13448 return isl::checked::basic_set(*this).pw_multi_aff_on_domain(mv);
13451 isl::checked::basic_set point::sample() const
13453 return isl::checked::basic_set(*this).sample();
13456 isl::checked::point point::sample_point() const
13458 return isl::checked::basic_set(*this).sample_point();
13461 isl::checked::set_list point::set_list() const
13463 return isl::checked::basic_set(*this).set_list();
13466 isl::checked::fixed_box point::simple_fixed_box_hull() const
13468 return isl::checked::basic_set(*this).simple_fixed_box_hull();
13471 isl::checked::space point::space() const
13473 return isl::checked::basic_set(*this).space();
13476 isl::checked::val point::stride(int pos) const
13478 return isl::checked::basic_set(*this).stride(pos);
13481 isl::checked::set point::subtract(const isl::checked::set &set2) const
13483 return isl::checked::basic_set(*this).subtract(set2);
13486 isl::checked::union_set point::subtract(const isl::checked::union_set &uset2) const
13488 return isl::checked::basic_set(*this).subtract(uset2);
13491 isl::checked::set_list point::to_list() const
13493 return isl::checked::basic_set(*this).to_list();
13496 isl::checked::set point::to_set() const
13498 auto res = isl_point_to_set(copy());
13499 return manage(res);
13502 isl::checked::union_set point::to_union_set() const
13504 return isl::checked::basic_set(*this).to_union_set();
13507 isl::checked::map point::translation() const
13509 return isl::checked::basic_set(*this).translation();
13512 class size point::tuple_dim() const
13514 return isl::checked::basic_set(*this).tuple_dim();
13517 isl::checked::set point::unbind_params(const isl::checked::multi_id &tuple) const
13519 return isl::checked::basic_set(*this).unbind_params(tuple);
13522 isl::checked::map point::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
13524 return isl::checked::basic_set(*this).unbind_params_insert_domain(domain);
13527 isl::checked::set point::unite(const isl::checked::basic_set &bset2) const
13529 return isl::checked::basic_set(*this).unite(bset2);
13532 isl::checked::set point::unite(const isl::checked::set &set2) const
13534 return isl::checked::basic_set(*this).unite(set2);
13537 isl::checked::union_set point::unite(const isl::checked::union_set &uset2) const
13539 return isl::checked::basic_set(*this).unite(uset2);
13542 isl::checked::basic_set point::unshifted_simple_hull() const
13544 return isl::checked::basic_set(*this).unshifted_simple_hull();
13547 isl::checked::map point::unwrap() const
13549 return isl::checked::basic_set(*this).unwrap();
13552 isl::checked::set point::upper_bound(const isl::checked::multi_pw_aff &upper) const
13554 return isl::checked::basic_set(*this).upper_bound(upper);
13557 isl::checked::set point::upper_bound(const isl::checked::multi_val &upper) const
13559 return isl::checked::basic_set(*this).upper_bound(upper);
13562 isl::checked::set point::wrapped_reverse() const
13564 return isl::checked::basic_set(*this).wrapped_reverse();
13567 inline std::ostream &operator<<(std::ostream &os, const point &obj)
13569 char *str = isl_point_to_str(obj.get());
13570 if (!str) {
13571 os.setstate(std::ios_base::badbit);
13572 return os;
13574 os << str;
13575 free(str);
13576 return os;
13579 // implementations for isl::pw_aff
13580 pw_aff manage(__isl_take isl_pw_aff *ptr) {
13581 return pw_aff(ptr);
13583 pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
13584 ptr = isl_pw_aff_copy(ptr);
13585 return pw_aff(ptr);
13588 pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
13589 : ptr(ptr) {}
13591 pw_aff::pw_aff()
13592 : ptr(nullptr) {}
13594 pw_aff::pw_aff(const pw_aff &obj)
13595 : ptr(nullptr)
13597 ptr = obj.copy();
13600 pw_aff::pw_aff(isl::checked::aff aff)
13602 auto res = isl_pw_aff_from_aff(aff.release());
13603 ptr = res;
13606 pw_aff::pw_aff(isl::checked::ctx ctx, const std::string &str)
13608 auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
13609 ptr = res;
13612 pw_aff &pw_aff::operator=(pw_aff obj) {
13613 std::swap(this->ptr, obj.ptr);
13614 return *this;
13617 pw_aff::~pw_aff() {
13618 if (ptr)
13619 isl_pw_aff_free(ptr);
13622 __isl_give isl_pw_aff *pw_aff::copy() const & {
13623 return isl_pw_aff_copy(ptr);
13626 __isl_keep isl_pw_aff *pw_aff::get() const {
13627 return ptr;
13630 __isl_give isl_pw_aff *pw_aff::release() {
13631 isl_pw_aff *tmp = ptr;
13632 ptr = nullptr;
13633 return tmp;
13636 bool pw_aff::is_null() const {
13637 return ptr == nullptr;
13640 isl::checked::ctx pw_aff::ctx() const {
13641 return isl::checked::ctx(isl_pw_aff_get_ctx(ptr));
13644 isl::checked::multi_pw_aff pw_aff::add(const isl::checked::multi_pw_aff &multi2) const
13646 return isl::checked::pw_multi_aff(*this).add(multi2);
13649 isl::checked::multi_union_pw_aff pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
13651 return isl::checked::union_pw_aff(*this).add(multi2);
13654 isl::checked::pw_aff pw_aff::add(isl::checked::pw_aff pwaff2) const
13656 auto res = isl_pw_aff_add(copy(), pwaff2.release());
13657 return manage(res);
13660 isl::checked::pw_multi_aff pw_aff::add(const isl::checked::pw_multi_aff &pma2) const
13662 return isl::checked::pw_multi_aff(*this).add(pma2);
13665 isl::checked::union_pw_aff pw_aff::add(const isl::checked::union_pw_aff &upa2) const
13667 return isl::checked::union_pw_aff(*this).add(upa2);
13670 isl::checked::union_pw_multi_aff pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
13672 return isl::checked::union_pw_aff(*this).add(upma2);
13675 isl::checked::pw_aff pw_aff::add(const isl::checked::aff &pwaff2) const
13677 return this->add(isl::checked::pw_aff(pwaff2));
13680 isl::checked::pw_aff pw_aff::add_constant(isl::checked::val v) const
13682 auto res = isl_pw_aff_add_constant_val(copy(), v.release());
13683 return manage(res);
13686 isl::checked::pw_aff pw_aff::add_constant(long v) const
13688 return this->add_constant(isl::checked::val(ctx(), v));
13691 isl::checked::pw_multi_aff pw_aff::add_constant(const isl::checked::multi_val &mv) const
13693 return isl::checked::pw_multi_aff(*this).add_constant(mv);
13696 isl::checked::union_pw_multi_aff pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
13698 return isl::checked::union_pw_aff(*this).apply(upma2);
13701 isl::checked::aff pw_aff::as_aff() const
13703 auto res = isl_pw_aff_as_aff(copy());
13704 return manage(res);
13707 isl::checked::map pw_aff::as_map() const
13709 auto res = isl_pw_aff_as_map(copy());
13710 return manage(res);
13713 isl::checked::multi_aff pw_aff::as_multi_aff() const
13715 return isl::checked::pw_multi_aff(*this).as_multi_aff();
13718 isl::checked::multi_union_pw_aff pw_aff::as_multi_union_pw_aff() const
13720 return isl::checked::union_pw_aff(*this).as_multi_union_pw_aff();
13723 isl::checked::pw_multi_aff pw_aff::as_pw_multi_aff() const
13725 return isl::checked::union_pw_aff(*this).as_pw_multi_aff();
13728 isl::checked::set pw_aff::as_set() const
13730 return isl::checked::pw_multi_aff(*this).as_set();
13733 isl::checked::union_map pw_aff::as_union_map() const
13735 return isl::checked::union_pw_aff(*this).as_union_map();
13738 isl::checked::pw_aff pw_aff::at(int pos) const
13740 return isl::checked::pw_multi_aff(*this).at(pos);
13743 isl::checked::set pw_aff::bind(const isl::checked::multi_id &tuple) const
13745 return isl::checked::multi_pw_aff(*this).bind(tuple);
13748 isl::checked::set pw_aff::bind(isl::checked::id id) const
13750 auto res = isl_pw_aff_bind_id(copy(), id.release());
13751 return manage(res);
13754 isl::checked::set pw_aff::bind(const std::string &id) const
13756 return this->bind(isl::checked::id(ctx(), id));
13759 isl::checked::pw_aff pw_aff::bind_domain(isl::checked::multi_id tuple) const
13761 auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
13762 return manage(res);
13765 isl::checked::pw_aff pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
13767 auto res = isl_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
13768 return manage(res);
13771 isl::checked::pw_aff pw_aff::ceil() const
13773 auto res = isl_pw_aff_ceil(copy());
13774 return manage(res);
13777 isl::checked::pw_aff pw_aff::coalesce() const
13779 auto res = isl_pw_aff_coalesce(copy());
13780 return manage(res);
13783 isl::checked::pw_aff pw_aff::cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const
13785 auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
13786 return manage(res);
13789 isl::checked::pw_aff pw_aff::div(isl::checked::pw_aff pa2) const
13791 auto res = isl_pw_aff_div(copy(), pa2.release());
13792 return manage(res);
13795 isl::checked::set pw_aff::domain() const
13797 auto res = isl_pw_aff_domain(copy());
13798 return manage(res);
13801 isl::checked::pw_aff pw_aff::domain_reverse() const
13803 auto res = isl_pw_aff_domain_reverse(copy());
13804 return manage(res);
13807 isl::checked::pw_aff pw_aff::drop_unused_params() const
13809 auto res = isl_pw_aff_drop_unused_params(copy());
13810 return manage(res);
13813 isl::checked::set pw_aff::eq_set(isl::checked::pw_aff pwaff2) const
13815 auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
13816 return manage(res);
13819 isl::checked::val pw_aff::eval(isl::checked::point pnt) const
13821 auto res = isl_pw_aff_eval(copy(), pnt.release());
13822 return manage(res);
13825 isl::checked::pw_multi_aff pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
13827 return isl::checked::union_pw_aff(*this).extract_pw_multi_aff(space);
13830 isl::checked::multi_pw_aff pw_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
13832 return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
13835 isl::checked::multi_union_pw_aff pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
13837 return isl::checked::union_pw_aff(*this).flat_range_product(multi2);
13840 isl::checked::pw_multi_aff pw_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
13842 return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
13845 isl::checked::union_pw_multi_aff pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
13847 return isl::checked::union_pw_aff(*this).flat_range_product(upma2);
13850 isl::checked::pw_aff pw_aff::floor() const
13852 auto res = isl_pw_aff_floor(copy());
13853 return manage(res);
13856 stat pw_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
13858 return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
13861 isl::checked::set pw_aff::ge_set(isl::checked::pw_aff pwaff2) const
13863 auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
13864 return manage(res);
13867 isl::checked::pw_aff pw_aff::gist(isl::checked::set context) const
13869 auto res = isl_pw_aff_gist(copy(), context.release());
13870 return manage(res);
13873 isl::checked::union_pw_aff pw_aff::gist(const isl::checked::union_set &context) const
13875 return isl::checked::union_pw_aff(*this).gist(context);
13878 isl::checked::pw_aff pw_aff::gist(const isl::checked::basic_set &context) const
13880 return this->gist(isl::checked::set(context));
13883 isl::checked::pw_aff pw_aff::gist(const isl::checked::point &context) const
13885 return this->gist(isl::checked::set(context));
13888 isl::checked::pw_aff pw_aff::gist_params(isl::checked::set context) const
13890 auto res = isl_pw_aff_gist_params(copy(), context.release());
13891 return manage(res);
13894 isl::checked::set pw_aff::gt_set(isl::checked::pw_aff pwaff2) const
13896 auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
13897 return manage(res);
13900 boolean pw_aff::has_range_tuple_id() const
13902 return isl::checked::pw_multi_aff(*this).has_range_tuple_id();
13905 isl::checked::multi_pw_aff pw_aff::identity() const
13907 return isl::checked::pw_multi_aff(*this).identity();
13910 isl::checked::pw_aff pw_aff::insert_domain(isl::checked::space domain) const
13912 auto res = isl_pw_aff_insert_domain(copy(), domain.release());
13913 return manage(res);
13916 isl::checked::pw_aff pw_aff::intersect_domain(isl::checked::set set) const
13918 auto res = isl_pw_aff_intersect_domain(copy(), set.release());
13919 return manage(res);
13922 isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::space &space) const
13924 return isl::checked::union_pw_aff(*this).intersect_domain(space);
13927 isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::union_set &uset) const
13929 return isl::checked::union_pw_aff(*this).intersect_domain(uset);
13932 isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::basic_set &set) const
13934 return this->intersect_domain(isl::checked::set(set));
13937 isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::point &set) const
13939 return this->intersect_domain(isl::checked::set(set));
13942 isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
13944 return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_domain(uset);
13947 isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
13949 return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_range(uset);
13952 isl::checked::pw_aff pw_aff::intersect_params(isl::checked::set set) const
13954 auto res = isl_pw_aff_intersect_params(copy(), set.release());
13955 return manage(res);
13958 boolean pw_aff::involves_locals() const
13960 return isl::checked::pw_multi_aff(*this).involves_locals();
13963 boolean pw_aff::involves_nan() const
13965 return isl::checked::multi_pw_aff(*this).involves_nan();
13968 boolean pw_aff::involves_param(const isl::checked::id &id) const
13970 return isl::checked::pw_multi_aff(*this).involves_param(id);
13973 boolean pw_aff::involves_param(const std::string &id) const
13975 return this->involves_param(isl::checked::id(ctx(), id));
13978 boolean pw_aff::involves_param(const isl::checked::id_list &list) const
13980 return isl::checked::pw_multi_aff(*this).involves_param(list);
13983 boolean pw_aff::isa_aff() const
13985 auto res = isl_pw_aff_isa_aff(get());
13986 return manage(res);
13989 boolean pw_aff::isa_multi_aff() const
13991 return isl::checked::pw_multi_aff(*this).isa_multi_aff();
13994 boolean pw_aff::isa_pw_multi_aff() const
13996 return isl::checked::union_pw_aff(*this).isa_pw_multi_aff();
13999 isl::checked::set pw_aff::le_set(isl::checked::pw_aff pwaff2) const
14001 auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
14002 return manage(res);
14005 isl::checked::pw_aff_list pw_aff::list() const
14007 return isl::checked::multi_pw_aff(*this).list();
14010 isl::checked::set pw_aff::lt_set(isl::checked::pw_aff pwaff2) const
14012 auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
14013 return manage(res);
14016 isl::checked::multi_pw_aff pw_aff::max(const isl::checked::multi_pw_aff &multi2) const
14018 return isl::checked::pw_multi_aff(*this).max(multi2);
14021 isl::checked::pw_aff pw_aff::max(isl::checked::pw_aff pwaff2) const
14023 auto res = isl_pw_aff_max(copy(), pwaff2.release());
14024 return manage(res);
14027 isl::checked::pw_aff pw_aff::max(const isl::checked::aff &pwaff2) const
14029 return this->max(isl::checked::pw_aff(pwaff2));
14032 isl::checked::multi_val pw_aff::max_multi_val() const
14034 return isl::checked::pw_multi_aff(*this).max_multi_val();
14037 isl::checked::val pw_aff::max_val() const
14039 auto res = isl_pw_aff_max_val(copy());
14040 return manage(res);
14043 isl::checked::multi_pw_aff pw_aff::min(const isl::checked::multi_pw_aff &multi2) const
14045 return isl::checked::pw_multi_aff(*this).min(multi2);
14048 isl::checked::pw_aff pw_aff::min(isl::checked::pw_aff pwaff2) const
14050 auto res = isl_pw_aff_min(copy(), pwaff2.release());
14051 return manage(res);
14054 isl::checked::pw_aff pw_aff::min(const isl::checked::aff &pwaff2) const
14056 return this->min(isl::checked::pw_aff(pwaff2));
14059 isl::checked::multi_val pw_aff::min_multi_val() const
14061 return isl::checked::pw_multi_aff(*this).min_multi_val();
14064 isl::checked::val pw_aff::min_val() const
14066 auto res = isl_pw_aff_min_val(copy());
14067 return manage(res);
14070 isl::checked::pw_aff pw_aff::mod(isl::checked::val mod) const
14072 auto res = isl_pw_aff_mod_val(copy(), mod.release());
14073 return manage(res);
14076 isl::checked::pw_aff pw_aff::mod(long mod) const
14078 return this->mod(isl::checked::val(ctx(), mod));
14081 isl::checked::pw_aff pw_aff::mul(isl::checked::pw_aff pwaff2) const
14083 auto res = isl_pw_aff_mul(copy(), pwaff2.release());
14084 return manage(res);
14087 class size pw_aff::n_piece() const
14089 return isl::checked::pw_multi_aff(*this).n_piece();
14092 isl::checked::set pw_aff::ne_set(isl::checked::pw_aff pwaff2) const
14094 auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
14095 return manage(res);
14098 isl::checked::pw_aff pw_aff::neg() const
14100 auto res = isl_pw_aff_neg(copy());
14101 return manage(res);
14104 isl::checked::pw_aff pw_aff::param_on_domain(isl::checked::set domain, isl::checked::id id)
14106 auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
14107 return manage(res);
14110 isl::checked::set pw_aff::params() const
14112 auto res = isl_pw_aff_params(copy());
14113 return manage(res);
14116 boolean pw_aff::plain_is_empty() const
14118 return isl::checked::union_pw_aff(*this).plain_is_empty();
14121 boolean pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
14123 return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
14126 boolean pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
14128 return isl::checked::union_pw_aff(*this).plain_is_equal(multi2);
14131 boolean pw_aff::plain_is_equal(const isl::checked::pw_aff &pwaff2) const
14133 auto res = isl_pw_aff_plain_is_equal(get(), pwaff2.get());
14134 return manage(res);
14137 boolean pw_aff::plain_is_equal(const isl::checked::pw_multi_aff &pma2) const
14139 return isl::checked::pw_multi_aff(*this).plain_is_equal(pma2);
14142 boolean pw_aff::plain_is_equal(const isl::checked::union_pw_aff &upa2) const
14144 return isl::checked::union_pw_aff(*this).plain_is_equal(upa2);
14147 boolean pw_aff::plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const
14149 return isl::checked::union_pw_aff(*this).plain_is_equal(upma2);
14152 boolean pw_aff::plain_is_equal(const isl::checked::aff &pwaff2) const
14154 return this->plain_is_equal(isl::checked::pw_aff(pwaff2));
14157 isl::checked::pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
14159 return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
14162 isl::checked::union_pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
14164 return isl::checked::union_pw_aff(*this).preimage_domain_wrapped_domain(upma2);
14167 isl::checked::multi_pw_aff pw_aff::product(const isl::checked::multi_pw_aff &multi2) const
14169 return isl::checked::pw_multi_aff(*this).product(multi2);
14172 isl::checked::pw_multi_aff pw_aff::product(const isl::checked::pw_multi_aff &pma2) const
14174 return isl::checked::pw_multi_aff(*this).product(pma2);
14177 isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_aff ma) const
14179 auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
14180 return manage(res);
14183 isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_pw_aff mpa) const
14185 auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
14186 return manage(res);
14189 isl::checked::pw_aff pw_aff::pullback(isl::checked::pw_multi_aff pma) const
14191 auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
14192 return manage(res);
14195 isl::checked::union_pw_aff pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
14197 return isl::checked::union_pw_aff(*this).pullback(upma);
14200 isl::checked::pw_multi_aff_list pw_aff::pw_multi_aff_list() const
14202 return isl::checked::union_pw_aff(*this).pw_multi_aff_list();
14205 isl::checked::pw_multi_aff pw_aff::range_factor_domain() const
14207 return isl::checked::pw_multi_aff(*this).range_factor_domain();
14210 isl::checked::pw_multi_aff pw_aff::range_factor_range() const
14212 return isl::checked::pw_multi_aff(*this).range_factor_range();
14215 isl::checked::multi_pw_aff pw_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
14217 return isl::checked::pw_multi_aff(*this).range_product(multi2);
14220 isl::checked::multi_union_pw_aff pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
14222 return isl::checked::union_pw_aff(*this).range_product(multi2);
14225 isl::checked::pw_multi_aff pw_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
14227 return isl::checked::pw_multi_aff(*this).range_product(pma2);
14230 isl::checked::union_pw_multi_aff pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
14232 return isl::checked::union_pw_aff(*this).range_product(upma2);
14235 isl::checked::id pw_aff::range_tuple_id() const
14237 return isl::checked::pw_multi_aff(*this).range_tuple_id();
14240 isl::checked::multi_pw_aff pw_aff::reset_range_tuple_id() const
14242 return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
14245 isl::checked::pw_aff pw_aff::scale(isl::checked::val v) const
14247 auto res = isl_pw_aff_scale_val(copy(), v.release());
14248 return manage(res);
14251 isl::checked::pw_aff pw_aff::scale(long v) const
14253 return this->scale(isl::checked::val(ctx(), v));
14256 isl::checked::pw_multi_aff pw_aff::scale(const isl::checked::multi_val &mv) const
14258 return isl::checked::pw_multi_aff(*this).scale(mv);
14261 isl::checked::pw_aff pw_aff::scale_down(isl::checked::val f) const
14263 auto res = isl_pw_aff_scale_down_val(copy(), f.release());
14264 return manage(res);
14267 isl::checked::pw_aff pw_aff::scale_down(long f) const
14269 return this->scale_down(isl::checked::val(ctx(), f));
14272 isl::checked::pw_multi_aff pw_aff::scale_down(const isl::checked::multi_val &mv) const
14274 return isl::checked::pw_multi_aff(*this).scale_down(mv);
14277 isl::checked::multi_pw_aff pw_aff::set_at(int pos, const isl::checked::pw_aff &el) const
14279 return isl::checked::pw_multi_aff(*this).set_at(pos, el);
14282 isl::checked::multi_union_pw_aff pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
14284 return isl::checked::union_pw_aff(*this).set_at(pos, el);
14287 isl::checked::pw_multi_aff pw_aff::set_range_tuple(const isl::checked::id &id) const
14289 return isl::checked::pw_multi_aff(*this).set_range_tuple(id);
14292 isl::checked::pw_multi_aff pw_aff::set_range_tuple(const std::string &id) const
14294 return this->set_range_tuple(isl::checked::id(ctx(), id));
14297 class size pw_aff::size() const
14299 return isl::checked::multi_pw_aff(*this).size();
14302 isl::checked::space pw_aff::space() const
14304 auto res = isl_pw_aff_get_space(get());
14305 return manage(res);
14308 isl::checked::space pw_aff::get_space() const
14310 return space();
14313 isl::checked::multi_pw_aff pw_aff::sub(const isl::checked::multi_pw_aff &multi2) const
14315 return isl::checked::pw_multi_aff(*this).sub(multi2);
14318 isl::checked::multi_union_pw_aff pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
14320 return isl::checked::union_pw_aff(*this).sub(multi2);
14323 isl::checked::pw_aff pw_aff::sub(isl::checked::pw_aff pwaff2) const
14325 auto res = isl_pw_aff_sub(copy(), pwaff2.release());
14326 return manage(res);
14329 isl::checked::pw_multi_aff pw_aff::sub(const isl::checked::pw_multi_aff &pma2) const
14331 return isl::checked::pw_multi_aff(*this).sub(pma2);
14334 isl::checked::union_pw_aff pw_aff::sub(const isl::checked::union_pw_aff &upa2) const
14336 return isl::checked::union_pw_aff(*this).sub(upa2);
14339 isl::checked::union_pw_multi_aff pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
14341 return isl::checked::union_pw_aff(*this).sub(upma2);
14344 isl::checked::pw_aff pw_aff::sub(const isl::checked::aff &pwaff2) const
14346 return this->sub(isl::checked::pw_aff(pwaff2));
14349 isl::checked::pw_aff pw_aff::subtract_domain(isl::checked::set set) const
14351 auto res = isl_pw_aff_subtract_domain(copy(), set.release());
14352 return manage(res);
14355 isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::space &space) const
14357 return isl::checked::union_pw_aff(*this).subtract_domain(space);
14360 isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::union_set &uset) const
14362 return isl::checked::union_pw_aff(*this).subtract_domain(uset);
14365 isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::basic_set &set) const
14367 return this->subtract_domain(isl::checked::set(set));
14370 isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::point &set) const
14372 return this->subtract_domain(isl::checked::set(set));
14375 isl::checked::pw_aff pw_aff::tdiv_q(isl::checked::pw_aff pa2) const
14377 auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
14378 return manage(res);
14381 isl::checked::pw_aff pw_aff::tdiv_r(isl::checked::pw_aff pa2) const
14383 auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
14384 return manage(res);
14387 isl::checked::pw_aff_list pw_aff::to_list() const
14389 auto res = isl_pw_aff_to_list(copy());
14390 return manage(res);
14393 isl::checked::multi_pw_aff pw_aff::to_multi_pw_aff() const
14395 return isl::checked::pw_multi_aff(*this).to_multi_pw_aff();
14398 isl::checked::union_pw_aff pw_aff::to_union_pw_aff() const
14400 auto res = isl_pw_aff_to_union_pw_aff(copy());
14401 return manage(res);
14404 isl::checked::union_pw_multi_aff pw_aff::to_union_pw_multi_aff() const
14406 return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
14409 isl::checked::multi_pw_aff pw_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
14411 return isl::checked::pw_multi_aff(*this).unbind_params_insert_domain(domain);
14414 isl::checked::multi_pw_aff pw_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
14416 return isl::checked::pw_multi_aff(*this).union_add(mpa2);
14419 isl::checked::multi_union_pw_aff pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
14421 return isl::checked::union_pw_aff(*this).union_add(mupa2);
14424 isl::checked::pw_aff pw_aff::union_add(isl::checked::pw_aff pwaff2) const
14426 auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
14427 return manage(res);
14430 isl::checked::pw_multi_aff pw_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
14432 return isl::checked::pw_multi_aff(*this).union_add(pma2);
14435 isl::checked::union_pw_aff pw_aff::union_add(const isl::checked::union_pw_aff &upa2) const
14437 return isl::checked::union_pw_aff(*this).union_add(upa2);
14440 isl::checked::union_pw_multi_aff pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
14442 return isl::checked::union_pw_aff(*this).union_add(upma2);
14445 isl::checked::pw_aff pw_aff::union_add(const isl::checked::aff &pwaff2) const
14447 return this->union_add(isl::checked::pw_aff(pwaff2));
14450 inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
14452 char *str = isl_pw_aff_to_str(obj.get());
14453 if (!str) {
14454 os.setstate(std::ios_base::badbit);
14455 return os;
14457 os << str;
14458 free(str);
14459 return os;
14462 // implementations for isl::pw_aff_list
14463 pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
14464 return pw_aff_list(ptr);
14466 pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
14467 ptr = isl_pw_aff_list_copy(ptr);
14468 return pw_aff_list(ptr);
14471 pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
14472 : ptr(ptr) {}
14474 pw_aff_list::pw_aff_list()
14475 : ptr(nullptr) {}
14477 pw_aff_list::pw_aff_list(const pw_aff_list &obj)
14478 : ptr(nullptr)
14480 ptr = obj.copy();
14483 pw_aff_list::pw_aff_list(isl::checked::ctx ctx, int n)
14485 auto res = isl_pw_aff_list_alloc(ctx.release(), n);
14486 ptr = res;
14489 pw_aff_list::pw_aff_list(isl::checked::pw_aff el)
14491 auto res = isl_pw_aff_list_from_pw_aff(el.release());
14492 ptr = res;
14495 pw_aff_list::pw_aff_list(isl::checked::ctx ctx, const std::string &str)
14497 auto res = isl_pw_aff_list_read_from_str(ctx.release(), str.c_str());
14498 ptr = res;
14501 pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
14502 std::swap(this->ptr, obj.ptr);
14503 return *this;
14506 pw_aff_list::~pw_aff_list() {
14507 if (ptr)
14508 isl_pw_aff_list_free(ptr);
14511 __isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
14512 return isl_pw_aff_list_copy(ptr);
14515 __isl_keep isl_pw_aff_list *pw_aff_list::get() const {
14516 return ptr;
14519 __isl_give isl_pw_aff_list *pw_aff_list::release() {
14520 isl_pw_aff_list *tmp = ptr;
14521 ptr = nullptr;
14522 return tmp;
14525 bool pw_aff_list::is_null() const {
14526 return ptr == nullptr;
14529 isl::checked::ctx pw_aff_list::ctx() const {
14530 return isl::checked::ctx(isl_pw_aff_list_get_ctx(ptr));
14533 isl::checked::pw_aff_list pw_aff_list::add(isl::checked::pw_aff el) const
14535 auto res = isl_pw_aff_list_add(copy(), el.release());
14536 return manage(res);
14539 isl::checked::pw_aff pw_aff_list::at(int index) const
14541 auto res = isl_pw_aff_list_get_at(get(), index);
14542 return manage(res);
14545 isl::checked::pw_aff pw_aff_list::get_at(int index) const
14547 return at(index);
14550 isl::checked::pw_aff_list pw_aff_list::clear() const
14552 auto res = isl_pw_aff_list_clear(copy());
14553 return manage(res);
14556 isl::checked::pw_aff_list pw_aff_list::concat(isl::checked::pw_aff_list list2) const
14558 auto res = isl_pw_aff_list_concat(copy(), list2.release());
14559 return manage(res);
14562 isl::checked::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
14564 auto res = isl_pw_aff_list_drop(copy(), first, n);
14565 return manage(res);
14568 stat pw_aff_list::foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const
14570 struct fn_data {
14571 std::function<stat(isl::checked::pw_aff)> func;
14572 } fn_data = { fn };
14573 auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
14574 auto *data = static_cast<struct fn_data *>(arg_1);
14575 auto ret = (data->func)(manage(arg_0));
14576 return ret.release();
14578 auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
14579 return manage(res);
14582 stat pw_aff_list::foreach_scc(const std::function<boolean(isl::checked::pw_aff, isl::checked::pw_aff)> &follows, const std::function<stat(isl::checked::pw_aff_list)> &fn) const
14584 struct follows_data {
14585 std::function<boolean(isl::checked::pw_aff, isl::checked::pw_aff)> func;
14586 } follows_data = { follows };
14587 auto follows_lambda = [](isl_pw_aff *arg_0, isl_pw_aff *arg_1, void *arg_2) -> isl_bool {
14588 auto *data = static_cast<struct follows_data *>(arg_2);
14589 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
14590 return ret.release();
14592 struct fn_data {
14593 std::function<stat(isl::checked::pw_aff_list)> func;
14594 } fn_data = { fn };
14595 auto fn_lambda = [](isl_pw_aff_list *arg_0, void *arg_1) -> isl_stat {
14596 auto *data = static_cast<struct fn_data *>(arg_1);
14597 auto ret = (data->func)(manage(arg_0));
14598 return ret.release();
14600 auto res = isl_pw_aff_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
14601 return manage(res);
14604 isl::checked::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::checked::pw_aff el) const
14606 auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
14607 return manage(res);
14610 isl::checked::pw_aff_list pw_aff_list::set_at(int index, isl::checked::pw_aff el) const
14612 auto res = isl_pw_aff_list_set_at(copy(), index, el.release());
14613 return manage(res);
14616 class size pw_aff_list::size() const
14618 auto res = isl_pw_aff_list_size(get());
14619 return manage(res);
14622 inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
14624 char *str = isl_pw_aff_list_to_str(obj.get());
14625 if (!str) {
14626 os.setstate(std::ios_base::badbit);
14627 return os;
14629 os << str;
14630 free(str);
14631 return os;
14634 // implementations for isl::pw_multi_aff
14635 pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
14636 return pw_multi_aff(ptr);
14638 pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
14639 ptr = isl_pw_multi_aff_copy(ptr);
14640 return pw_multi_aff(ptr);
14643 pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
14644 : ptr(ptr) {}
14646 pw_multi_aff::pw_multi_aff()
14647 : ptr(nullptr) {}
14649 pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
14650 : ptr(nullptr)
14652 ptr = obj.copy();
14655 pw_multi_aff::pw_multi_aff(isl::checked::multi_aff ma)
14657 auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
14658 ptr = res;
14661 pw_multi_aff::pw_multi_aff(isl::checked::pw_aff pa)
14663 auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
14664 ptr = res;
14667 pw_multi_aff::pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
14669 auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
14670 ptr = res;
14673 pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
14674 std::swap(this->ptr, obj.ptr);
14675 return *this;
14678 pw_multi_aff::~pw_multi_aff() {
14679 if (ptr)
14680 isl_pw_multi_aff_free(ptr);
14683 __isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
14684 return isl_pw_multi_aff_copy(ptr);
14687 __isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
14688 return ptr;
14691 __isl_give isl_pw_multi_aff *pw_multi_aff::release() {
14692 isl_pw_multi_aff *tmp = ptr;
14693 ptr = nullptr;
14694 return tmp;
14697 bool pw_multi_aff::is_null() const {
14698 return ptr == nullptr;
14701 isl::checked::ctx pw_multi_aff::ctx() const {
14702 return isl::checked::ctx(isl_pw_multi_aff_get_ctx(ptr));
14705 isl::checked::multi_pw_aff pw_multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
14707 return isl::checked::multi_pw_aff(*this).add(multi2);
14710 isl::checked::multi_union_pw_aff pw_multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
14712 return isl::checked::multi_pw_aff(*this).add(multi2);
14715 isl::checked::pw_multi_aff pw_multi_aff::add(isl::checked::pw_multi_aff pma2) const
14717 auto res = isl_pw_multi_aff_add(copy(), pma2.release());
14718 return manage(res);
14721 isl::checked::union_pw_multi_aff pw_multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
14723 return isl::checked::union_pw_multi_aff(*this).add(upma2);
14726 isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::multi_aff &pma2) const
14728 return this->add(isl::checked::pw_multi_aff(pma2));
14731 isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::pw_aff &pma2) const
14733 return this->add(isl::checked::pw_multi_aff(pma2));
14736 isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::multi_val mv) const
14738 auto res = isl_pw_multi_aff_add_constant_multi_val(copy(), mv.release());
14739 return manage(res);
14742 isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::val v) const
14744 auto res = isl_pw_multi_aff_add_constant_val(copy(), v.release());
14745 return manage(res);
14748 isl::checked::pw_multi_aff pw_multi_aff::add_constant(long v) const
14750 return this->add_constant(isl::checked::val(ctx(), v));
14753 isl::checked::union_pw_multi_aff pw_multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
14755 return isl::checked::union_pw_multi_aff(*this).apply(upma2);
14758 isl::checked::map pw_multi_aff::as_map() const
14760 auto res = isl_pw_multi_aff_as_map(copy());
14761 return manage(res);
14764 isl::checked::multi_aff pw_multi_aff::as_multi_aff() const
14766 auto res = isl_pw_multi_aff_as_multi_aff(copy());
14767 return manage(res);
14770 isl::checked::multi_union_pw_aff pw_multi_aff::as_multi_union_pw_aff() const
14772 return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
14775 isl::checked::pw_multi_aff pw_multi_aff::as_pw_multi_aff() const
14777 return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
14780 isl::checked::set pw_multi_aff::as_set() const
14782 auto res = isl_pw_multi_aff_as_set(copy());
14783 return manage(res);
14786 isl::checked::union_map pw_multi_aff::as_union_map() const
14788 return isl::checked::union_pw_multi_aff(*this).as_union_map();
14791 isl::checked::pw_aff pw_multi_aff::at(int pos) const
14793 auto res = isl_pw_multi_aff_get_at(get(), pos);
14794 return manage(res);
14797 isl::checked::pw_aff pw_multi_aff::get_at(int pos) const
14799 return at(pos);
14802 isl::checked::set pw_multi_aff::bind(const isl::checked::multi_id &tuple) const
14804 return isl::checked::multi_pw_aff(*this).bind(tuple);
14807 isl::checked::pw_multi_aff pw_multi_aff::bind_domain(isl::checked::multi_id tuple) const
14809 auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
14810 return manage(res);
14813 isl::checked::pw_multi_aff pw_multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
14815 auto res = isl_pw_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
14816 return manage(res);
14819 isl::checked::pw_multi_aff pw_multi_aff::coalesce() const
14821 auto res = isl_pw_multi_aff_coalesce(copy());
14822 return manage(res);
14825 isl::checked::set pw_multi_aff::domain() const
14827 auto res = isl_pw_multi_aff_domain(copy());
14828 return manage(res);
14831 isl::checked::pw_multi_aff pw_multi_aff::domain_map(isl::checked::space space)
14833 auto res = isl_pw_multi_aff_domain_map(space.release());
14834 return manage(res);
14837 isl::checked::pw_multi_aff pw_multi_aff::domain_reverse() const
14839 auto res = isl_pw_multi_aff_domain_reverse(copy());
14840 return manage(res);
14843 isl::checked::pw_multi_aff pw_multi_aff::drop_unused_params() const
14845 auto res = isl_pw_multi_aff_drop_unused_params(copy());
14846 return manage(res);
14849 isl::checked::pw_multi_aff pw_multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
14851 return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
14854 isl::checked::multi_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
14856 return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
14859 isl::checked::multi_union_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
14861 return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
14864 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(isl::checked::pw_multi_aff pma2) const
14866 auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
14867 return manage(res);
14870 isl::checked::union_pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
14872 return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
14875 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::multi_aff &pma2) const
14877 return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
14880 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::pw_aff &pma2) const
14882 return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
14885 stat pw_multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
14887 struct fn_data {
14888 std::function<stat(isl::checked::set, isl::checked::multi_aff)> func;
14889 } fn_data = { fn };
14890 auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
14891 auto *data = static_cast<struct fn_data *>(arg_2);
14892 auto ret = (data->func)(manage(arg_0), manage(arg_1));
14893 return ret.release();
14895 auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
14896 return manage(res);
14899 isl::checked::pw_multi_aff pw_multi_aff::gist(isl::checked::set set) const
14901 auto res = isl_pw_multi_aff_gist(copy(), set.release());
14902 return manage(res);
14905 isl::checked::union_pw_multi_aff pw_multi_aff::gist(const isl::checked::union_set &context) const
14907 return isl::checked::union_pw_multi_aff(*this).gist(context);
14910 isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::basic_set &set) const
14912 return this->gist(isl::checked::set(set));
14915 isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::point &set) const
14917 return this->gist(isl::checked::set(set));
14920 isl::checked::pw_multi_aff pw_multi_aff::gist_params(isl::checked::set set) const
14922 auto res = isl_pw_multi_aff_gist_params(copy(), set.release());
14923 return manage(res);
14926 boolean pw_multi_aff::has_range_tuple_id() const
14928 auto res = isl_pw_multi_aff_has_range_tuple_id(get());
14929 return manage(res);
14932 isl::checked::multi_pw_aff pw_multi_aff::identity() const
14934 return isl::checked::multi_pw_aff(*this).identity();
14937 isl::checked::pw_multi_aff pw_multi_aff::identity_on_domain(isl::checked::space space)
14939 auto res = isl_pw_multi_aff_identity_on_domain_space(space.release());
14940 return manage(res);
14943 isl::checked::pw_multi_aff pw_multi_aff::insert_domain(isl::checked::space domain) const
14945 auto res = isl_pw_multi_aff_insert_domain(copy(), domain.release());
14946 return manage(res);
14949 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(isl::checked::set set) const
14951 auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
14952 return manage(res);
14955 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::space &space) const
14957 return isl::checked::union_pw_multi_aff(*this).intersect_domain(space);
14960 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::union_set &uset) const
14962 return isl::checked::union_pw_multi_aff(*this).intersect_domain(uset);
14965 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::basic_set &set) const
14967 return this->intersect_domain(isl::checked::set(set));
14970 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::point &set) const
14972 return this->intersect_domain(isl::checked::set(set));
14975 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
14977 return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
14980 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
14982 return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
14985 isl::checked::pw_multi_aff pw_multi_aff::intersect_params(isl::checked::set set) const
14987 auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
14988 return manage(res);
14991 boolean pw_multi_aff::involves_locals() const
14993 auto res = isl_pw_multi_aff_involves_locals(get());
14994 return manage(res);
14997 boolean pw_multi_aff::involves_nan() const
14999 return isl::checked::multi_pw_aff(*this).involves_nan();
15002 boolean pw_multi_aff::involves_param(const isl::checked::id &id) const
15004 return isl::checked::multi_pw_aff(*this).involves_param(id);
15007 boolean pw_multi_aff::involves_param(const std::string &id) const
15009 return this->involves_param(isl::checked::id(ctx(), id));
15012 boolean pw_multi_aff::involves_param(const isl::checked::id_list &list) const
15014 return isl::checked::multi_pw_aff(*this).involves_param(list);
15017 boolean pw_multi_aff::isa_multi_aff() const
15019 auto res = isl_pw_multi_aff_isa_multi_aff(get());
15020 return manage(res);
15023 boolean pw_multi_aff::isa_pw_multi_aff() const
15025 return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
15028 isl::checked::pw_aff_list pw_multi_aff::list() const
15030 return isl::checked::multi_pw_aff(*this).list();
15033 isl::checked::multi_pw_aff pw_multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
15035 return isl::checked::multi_pw_aff(*this).max(multi2);
15038 isl::checked::multi_val pw_multi_aff::max_multi_val() const
15040 auto res = isl_pw_multi_aff_max_multi_val(copy());
15041 return manage(res);
15044 isl::checked::multi_pw_aff pw_multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
15046 return isl::checked::multi_pw_aff(*this).min(multi2);
15049 isl::checked::multi_val pw_multi_aff::min_multi_val() const
15051 auto res = isl_pw_multi_aff_min_multi_val(copy());
15052 return manage(res);
15055 isl::checked::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv)
15057 auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
15058 return manage(res);
15061 class size pw_multi_aff::n_piece() const
15063 auto res = isl_pw_multi_aff_n_piece(get());
15064 return manage(res);
15067 isl::checked::multi_pw_aff pw_multi_aff::neg() const
15069 return isl::checked::multi_pw_aff(*this).neg();
15072 boolean pw_multi_aff::plain_is_empty() const
15074 return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
15077 boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
15079 return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
15082 boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
15084 return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
15087 boolean pw_multi_aff::plain_is_equal(const isl::checked::pw_multi_aff &pma2) const
15089 auto res = isl_pw_multi_aff_plain_is_equal(get(), pma2.get());
15090 return manage(res);
15093 boolean pw_multi_aff::plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const
15095 return isl::checked::union_pw_multi_aff(*this).plain_is_equal(upma2);
15098 boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_aff &pma2) const
15100 return this->plain_is_equal(isl::checked::pw_multi_aff(pma2));
15103 boolean pw_multi_aff::plain_is_equal(const isl::checked::pw_aff &pma2) const
15105 return this->plain_is_equal(isl::checked::pw_multi_aff(pma2));
15108 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const
15110 auto res = isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(copy(), pma2.release());
15111 return manage(res);
15114 isl::checked::union_pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
15116 return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
15119 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const
15121 return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
15124 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const
15126 return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
15129 isl::checked::multi_pw_aff pw_multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
15131 return isl::checked::multi_pw_aff(*this).product(multi2);
15134 isl::checked::pw_multi_aff pw_multi_aff::product(isl::checked::pw_multi_aff pma2) const
15136 auto res = isl_pw_multi_aff_product(copy(), pma2.release());
15137 return manage(res);
15140 isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::multi_aff &pma2) const
15142 return this->product(isl::checked::pw_multi_aff(pma2));
15145 isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::pw_aff &pma2) const
15147 return this->product(isl::checked::pw_multi_aff(pma2));
15150 isl::checked::multi_pw_aff pw_multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
15152 return isl::checked::multi_pw_aff(*this).pullback(mpa2);
15155 isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::multi_aff ma) const
15157 auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
15158 return manage(res);
15161 isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::pw_multi_aff pma2) const
15163 auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
15164 return manage(res);
15167 isl::checked::union_pw_multi_aff pw_multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
15169 return isl::checked::union_pw_multi_aff(*this).pullback(upma2);
15172 isl::checked::pw_multi_aff_list pw_multi_aff::pw_multi_aff_list() const
15174 return isl::checked::union_pw_multi_aff(*this).pw_multi_aff_list();
15177 isl::checked::pw_multi_aff pw_multi_aff::range_factor_domain() const
15179 auto res = isl_pw_multi_aff_range_factor_domain(copy());
15180 return manage(res);
15183 isl::checked::pw_multi_aff pw_multi_aff::range_factor_range() const
15185 auto res = isl_pw_multi_aff_range_factor_range(copy());
15186 return manage(res);
15189 isl::checked::pw_multi_aff pw_multi_aff::range_map(isl::checked::space space)
15191 auto res = isl_pw_multi_aff_range_map(space.release());
15192 return manage(res);
15195 isl::checked::multi_pw_aff pw_multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
15197 return isl::checked::multi_pw_aff(*this).range_product(multi2);
15200 isl::checked::multi_union_pw_aff pw_multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
15202 return isl::checked::multi_pw_aff(*this).range_product(multi2);
15205 isl::checked::pw_multi_aff pw_multi_aff::range_product(isl::checked::pw_multi_aff pma2) const
15207 auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
15208 return manage(res);
15211 isl::checked::union_pw_multi_aff pw_multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
15213 return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
15216 isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::multi_aff &pma2) const
15218 return this->range_product(isl::checked::pw_multi_aff(pma2));
15221 isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::pw_aff &pma2) const
15223 return this->range_product(isl::checked::pw_multi_aff(pma2));
15226 isl::checked::id pw_multi_aff::range_tuple_id() const
15228 auto res = isl_pw_multi_aff_get_range_tuple_id(get());
15229 return manage(res);
15232 isl::checked::id pw_multi_aff::get_range_tuple_id() const
15234 return range_tuple_id();
15237 isl::checked::multi_pw_aff pw_multi_aff::reset_range_tuple_id() const
15239 return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
15242 isl::checked::pw_multi_aff pw_multi_aff::scale(isl::checked::multi_val mv) const
15244 auto res = isl_pw_multi_aff_scale_multi_val(copy(), mv.release());
15245 return manage(res);
15248 isl::checked::pw_multi_aff pw_multi_aff::scale(isl::checked::val v) const
15250 auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
15251 return manage(res);
15254 isl::checked::pw_multi_aff pw_multi_aff::scale(long v) const
15256 return this->scale(isl::checked::val(ctx(), v));
15259 isl::checked::pw_multi_aff pw_multi_aff::scale_down(isl::checked::multi_val mv) const
15261 auto res = isl_pw_multi_aff_scale_down_multi_val(copy(), mv.release());
15262 return manage(res);
15265 isl::checked::pw_multi_aff pw_multi_aff::scale_down(isl::checked::val v) const
15267 auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
15268 return manage(res);
15271 isl::checked::pw_multi_aff pw_multi_aff::scale_down(long v) const
15273 return this->scale_down(isl::checked::val(ctx(), v));
15276 isl::checked::multi_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
15278 return isl::checked::multi_pw_aff(*this).set_at(pos, el);
15281 isl::checked::multi_union_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
15283 return isl::checked::multi_pw_aff(*this).set_at(pos, el);
15286 isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(isl::checked::id id) const
15288 auto res = isl_pw_multi_aff_set_range_tuple_id(copy(), id.release());
15289 return manage(res);
15292 isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(const std::string &id) const
15294 return this->set_range_tuple(isl::checked::id(ctx(), id));
15297 class size pw_multi_aff::size() const
15299 return isl::checked::multi_pw_aff(*this).size();
15302 isl::checked::space pw_multi_aff::space() const
15304 auto res = isl_pw_multi_aff_get_space(get());
15305 return manage(res);
15308 isl::checked::space pw_multi_aff::get_space() const
15310 return space();
15313 isl::checked::multi_pw_aff pw_multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
15315 return isl::checked::multi_pw_aff(*this).sub(multi2);
15318 isl::checked::multi_union_pw_aff pw_multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
15320 return isl::checked::multi_pw_aff(*this).sub(multi2);
15323 isl::checked::pw_multi_aff pw_multi_aff::sub(isl::checked::pw_multi_aff pma2) const
15325 auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
15326 return manage(res);
15329 isl::checked::union_pw_multi_aff pw_multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
15331 return isl::checked::union_pw_multi_aff(*this).sub(upma2);
15334 isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::multi_aff &pma2) const
15336 return this->sub(isl::checked::pw_multi_aff(pma2));
15339 isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::pw_aff &pma2) const
15341 return this->sub(isl::checked::pw_multi_aff(pma2));
15344 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(isl::checked::set set) const
15346 auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
15347 return manage(res);
15350 isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::space &space) const
15352 return isl::checked::union_pw_multi_aff(*this).subtract_domain(space);
15355 isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::union_set &uset) const
15357 return isl::checked::union_pw_multi_aff(*this).subtract_domain(uset);
15360 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::basic_set &set) const
15362 return this->subtract_domain(isl::checked::set(set));
15365 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::point &set) const
15367 return this->subtract_domain(isl::checked::set(set));
15370 isl::checked::pw_multi_aff_list pw_multi_aff::to_list() const
15372 auto res = isl_pw_multi_aff_to_list(copy());
15373 return manage(res);
15376 isl::checked::multi_pw_aff pw_multi_aff::to_multi_pw_aff() const
15378 auto res = isl_pw_multi_aff_to_multi_pw_aff(copy());
15379 return manage(res);
15382 isl::checked::union_pw_multi_aff pw_multi_aff::to_union_pw_multi_aff() const
15384 auto res = isl_pw_multi_aff_to_union_pw_multi_aff(copy());
15385 return manage(res);
15388 isl::checked::multi_pw_aff pw_multi_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
15390 return isl::checked::multi_pw_aff(*this).unbind_params_insert_domain(domain);
15393 isl::checked::multi_pw_aff pw_multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
15395 return isl::checked::multi_pw_aff(*this).union_add(mpa2);
15398 isl::checked::multi_union_pw_aff pw_multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
15400 return isl::checked::multi_pw_aff(*this).union_add(mupa2);
15403 isl::checked::pw_multi_aff pw_multi_aff::union_add(isl::checked::pw_multi_aff pma2) const
15405 auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
15406 return manage(res);
15409 isl::checked::union_pw_multi_aff pw_multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
15411 return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
15414 isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::multi_aff &pma2) const
15416 return this->union_add(isl::checked::pw_multi_aff(pma2));
15419 isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::pw_aff &pma2) const
15421 return this->union_add(isl::checked::pw_multi_aff(pma2));
15424 isl::checked::pw_multi_aff pw_multi_aff::zero(isl::checked::space space)
15426 auto res = isl_pw_multi_aff_zero(space.release());
15427 return manage(res);
15430 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
15432 char *str = isl_pw_multi_aff_to_str(obj.get());
15433 if (!str) {
15434 os.setstate(std::ios_base::badbit);
15435 return os;
15437 os << str;
15438 free(str);
15439 return os;
15442 // implementations for isl::pw_multi_aff_list
15443 pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
15444 return pw_multi_aff_list(ptr);
15446 pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
15447 ptr = isl_pw_multi_aff_list_copy(ptr);
15448 return pw_multi_aff_list(ptr);
15451 pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
15452 : ptr(ptr) {}
15454 pw_multi_aff_list::pw_multi_aff_list()
15455 : ptr(nullptr) {}
15457 pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
15458 : ptr(nullptr)
15460 ptr = obj.copy();
15463 pw_multi_aff_list::pw_multi_aff_list(isl::checked::ctx ctx, int n)
15465 auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
15466 ptr = res;
15469 pw_multi_aff_list::pw_multi_aff_list(isl::checked::pw_multi_aff el)
15471 auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
15472 ptr = res;
15475 pw_multi_aff_list::pw_multi_aff_list(isl::checked::ctx ctx, const std::string &str)
15477 auto res = isl_pw_multi_aff_list_read_from_str(ctx.release(), str.c_str());
15478 ptr = res;
15481 pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
15482 std::swap(this->ptr, obj.ptr);
15483 return *this;
15486 pw_multi_aff_list::~pw_multi_aff_list() {
15487 if (ptr)
15488 isl_pw_multi_aff_list_free(ptr);
15491 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
15492 return isl_pw_multi_aff_list_copy(ptr);
15495 __isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
15496 return ptr;
15499 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
15500 isl_pw_multi_aff_list *tmp = ptr;
15501 ptr = nullptr;
15502 return tmp;
15505 bool pw_multi_aff_list::is_null() const {
15506 return ptr == nullptr;
15509 isl::checked::ctx pw_multi_aff_list::ctx() const {
15510 return isl::checked::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
15513 isl::checked::pw_multi_aff_list pw_multi_aff_list::add(isl::checked::pw_multi_aff el) const
15515 auto res = isl_pw_multi_aff_list_add(copy(), el.release());
15516 return manage(res);
15519 isl::checked::pw_multi_aff pw_multi_aff_list::at(int index) const
15521 auto res = isl_pw_multi_aff_list_get_at(get(), index);
15522 return manage(res);
15525 isl::checked::pw_multi_aff pw_multi_aff_list::get_at(int index) const
15527 return at(index);
15530 isl::checked::pw_multi_aff_list pw_multi_aff_list::clear() const
15532 auto res = isl_pw_multi_aff_list_clear(copy());
15533 return manage(res);
15536 isl::checked::pw_multi_aff_list pw_multi_aff_list::concat(isl::checked::pw_multi_aff_list list2) const
15538 auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
15539 return manage(res);
15542 isl::checked::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
15544 auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
15545 return manage(res);
15548 stat pw_multi_aff_list::foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const
15550 struct fn_data {
15551 std::function<stat(isl::checked::pw_multi_aff)> func;
15552 } fn_data = { fn };
15553 auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
15554 auto *data = static_cast<struct fn_data *>(arg_1);
15555 auto ret = (data->func)(manage(arg_0));
15556 return ret.release();
15558 auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
15559 return manage(res);
15562 stat pw_multi_aff_list::foreach_scc(const std::function<boolean(isl::checked::pw_multi_aff, isl::checked::pw_multi_aff)> &follows, const std::function<stat(isl::checked::pw_multi_aff_list)> &fn) const
15564 struct follows_data {
15565 std::function<boolean(isl::checked::pw_multi_aff, isl::checked::pw_multi_aff)> func;
15566 } follows_data = { follows };
15567 auto follows_lambda = [](isl_pw_multi_aff *arg_0, isl_pw_multi_aff *arg_1, void *arg_2) -> isl_bool {
15568 auto *data = static_cast<struct follows_data *>(arg_2);
15569 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
15570 return ret.release();
15572 struct fn_data {
15573 std::function<stat(isl::checked::pw_multi_aff_list)> func;
15574 } fn_data = { fn };
15575 auto fn_lambda = [](isl_pw_multi_aff_list *arg_0, void *arg_1) -> isl_stat {
15576 auto *data = static_cast<struct fn_data *>(arg_1);
15577 auto ret = (data->func)(manage(arg_0));
15578 return ret.release();
15580 auto res = isl_pw_multi_aff_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
15581 return manage(res);
15584 isl::checked::pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, isl::checked::pw_multi_aff el) const
15586 auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
15587 return manage(res);
15590 isl::checked::pw_multi_aff_list pw_multi_aff_list::set_at(int index, isl::checked::pw_multi_aff el) const
15592 auto res = isl_pw_multi_aff_list_set_at(copy(), index, el.release());
15593 return manage(res);
15596 class size pw_multi_aff_list::size() const
15598 auto res = isl_pw_multi_aff_list_size(get());
15599 return manage(res);
15602 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
15604 char *str = isl_pw_multi_aff_list_to_str(obj.get());
15605 if (!str) {
15606 os.setstate(std::ios_base::badbit);
15607 return os;
15609 os << str;
15610 free(str);
15611 return os;
15614 // implementations for isl::schedule
15615 schedule manage(__isl_take isl_schedule *ptr) {
15616 return schedule(ptr);
15618 schedule manage_copy(__isl_keep isl_schedule *ptr) {
15619 ptr = isl_schedule_copy(ptr);
15620 return schedule(ptr);
15623 schedule::schedule(__isl_take isl_schedule *ptr)
15624 : ptr(ptr) {}
15626 schedule::schedule()
15627 : ptr(nullptr) {}
15629 schedule::schedule(const schedule &obj)
15630 : ptr(nullptr)
15632 ptr = obj.copy();
15635 schedule::schedule(isl::checked::ctx ctx, const std::string &str)
15637 auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
15638 ptr = res;
15641 schedule &schedule::operator=(schedule obj) {
15642 std::swap(this->ptr, obj.ptr);
15643 return *this;
15646 schedule::~schedule() {
15647 if (ptr)
15648 isl_schedule_free(ptr);
15651 __isl_give isl_schedule *schedule::copy() const & {
15652 return isl_schedule_copy(ptr);
15655 __isl_keep isl_schedule *schedule::get() const {
15656 return ptr;
15659 __isl_give isl_schedule *schedule::release() {
15660 isl_schedule *tmp = ptr;
15661 ptr = nullptr;
15662 return tmp;
15665 bool schedule::is_null() const {
15666 return ptr == nullptr;
15669 isl::checked::ctx schedule::ctx() const {
15670 return isl::checked::ctx(isl_schedule_get_ctx(ptr));
15673 isl::checked::union_set schedule::domain() const
15675 auto res = isl_schedule_get_domain(get());
15676 return manage(res);
15679 isl::checked::union_set schedule::get_domain() const
15681 return domain();
15684 isl::checked::schedule schedule::from_domain(isl::checked::union_set domain)
15686 auto res = isl_schedule_from_domain(domain.release());
15687 return manage(res);
15690 isl::checked::union_map schedule::map() const
15692 auto res = isl_schedule_get_map(get());
15693 return manage(res);
15696 isl::checked::union_map schedule::get_map() const
15698 return map();
15701 isl::checked::schedule schedule::pullback(isl::checked::union_pw_multi_aff upma) const
15703 auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
15704 return manage(res);
15707 isl::checked::schedule_node schedule::root() const
15709 auto res = isl_schedule_get_root(get());
15710 return manage(res);
15713 isl::checked::schedule_node schedule::get_root() const
15715 return root();
15718 inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
15720 char *str = isl_schedule_to_str(obj.get());
15721 if (!str) {
15722 os.setstate(std::ios_base::badbit);
15723 return os;
15725 os << str;
15726 free(str);
15727 return os;
15730 // implementations for isl::schedule_constraints
15731 schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
15732 return schedule_constraints(ptr);
15734 schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
15735 ptr = isl_schedule_constraints_copy(ptr);
15736 return schedule_constraints(ptr);
15739 schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
15740 : ptr(ptr) {}
15742 schedule_constraints::schedule_constraints()
15743 : ptr(nullptr) {}
15745 schedule_constraints::schedule_constraints(const schedule_constraints &obj)
15746 : ptr(nullptr)
15748 ptr = obj.copy();
15751 schedule_constraints::schedule_constraints(isl::checked::ctx ctx, const std::string &str)
15753 auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
15754 ptr = res;
15757 schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
15758 std::swap(this->ptr, obj.ptr);
15759 return *this;
15762 schedule_constraints::~schedule_constraints() {
15763 if (ptr)
15764 isl_schedule_constraints_free(ptr);
15767 __isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
15768 return isl_schedule_constraints_copy(ptr);
15771 __isl_keep isl_schedule_constraints *schedule_constraints::get() const {
15772 return ptr;
15775 __isl_give isl_schedule_constraints *schedule_constraints::release() {
15776 isl_schedule_constraints *tmp = ptr;
15777 ptr = nullptr;
15778 return tmp;
15781 bool schedule_constraints::is_null() const {
15782 return ptr == nullptr;
15785 isl::checked::ctx schedule_constraints::ctx() const {
15786 return isl::checked::ctx(isl_schedule_constraints_get_ctx(ptr));
15789 isl::checked::union_map schedule_constraints::coincidence() const
15791 auto res = isl_schedule_constraints_get_coincidence(get());
15792 return manage(res);
15795 isl::checked::union_map schedule_constraints::get_coincidence() const
15797 return coincidence();
15800 isl::checked::schedule schedule_constraints::compute_schedule() const
15802 auto res = isl_schedule_constraints_compute_schedule(copy());
15803 return manage(res);
15806 isl::checked::union_map schedule_constraints::conditional_validity() const
15808 auto res = isl_schedule_constraints_get_conditional_validity(get());
15809 return manage(res);
15812 isl::checked::union_map schedule_constraints::get_conditional_validity() const
15814 return conditional_validity();
15817 isl::checked::union_map schedule_constraints::conditional_validity_condition() const
15819 auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
15820 return manage(res);
15823 isl::checked::union_map schedule_constraints::get_conditional_validity_condition() const
15825 return conditional_validity_condition();
15828 isl::checked::set schedule_constraints::context() const
15830 auto res = isl_schedule_constraints_get_context(get());
15831 return manage(res);
15834 isl::checked::set schedule_constraints::get_context() const
15836 return context();
15839 isl::checked::union_set schedule_constraints::domain() const
15841 auto res = isl_schedule_constraints_get_domain(get());
15842 return manage(res);
15845 isl::checked::union_set schedule_constraints::get_domain() const
15847 return domain();
15850 isl::checked::schedule_constraints schedule_constraints::on_domain(isl::checked::union_set domain)
15852 auto res = isl_schedule_constraints_on_domain(domain.release());
15853 return manage(res);
15856 isl::checked::union_map schedule_constraints::proximity() const
15858 auto res = isl_schedule_constraints_get_proximity(get());
15859 return manage(res);
15862 isl::checked::union_map schedule_constraints::get_proximity() const
15864 return proximity();
15867 isl::checked::schedule_constraints schedule_constraints::set_coincidence(isl::checked::union_map coincidence) const
15869 auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
15870 return manage(res);
15873 isl::checked::schedule_constraints schedule_constraints::set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const
15875 auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
15876 return manage(res);
15879 isl::checked::schedule_constraints schedule_constraints::set_context(isl::checked::set context) const
15881 auto res = isl_schedule_constraints_set_context(copy(), context.release());
15882 return manage(res);
15885 isl::checked::schedule_constraints schedule_constraints::set_proximity(isl::checked::union_map proximity) const
15887 auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
15888 return manage(res);
15891 isl::checked::schedule_constraints schedule_constraints::set_validity(isl::checked::union_map validity) const
15893 auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
15894 return manage(res);
15897 isl::checked::union_map schedule_constraints::validity() const
15899 auto res = isl_schedule_constraints_get_validity(get());
15900 return manage(res);
15903 isl::checked::union_map schedule_constraints::get_validity() const
15905 return validity();
15908 inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
15910 char *str = isl_schedule_constraints_to_str(obj.get());
15911 if (!str) {
15912 os.setstate(std::ios_base::badbit);
15913 return os;
15915 os << str;
15916 free(str);
15917 return os;
15920 // implementations for isl::schedule_node
15921 schedule_node manage(__isl_take isl_schedule_node *ptr) {
15922 return schedule_node(ptr);
15924 schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
15925 ptr = isl_schedule_node_copy(ptr);
15926 return schedule_node(ptr);
15929 schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
15930 : ptr(ptr) {}
15932 schedule_node::schedule_node()
15933 : ptr(nullptr) {}
15935 schedule_node::schedule_node(const schedule_node &obj)
15936 : ptr(nullptr)
15938 ptr = obj.copy();
15941 schedule_node &schedule_node::operator=(schedule_node obj) {
15942 std::swap(this->ptr, obj.ptr);
15943 return *this;
15946 schedule_node::~schedule_node() {
15947 if (ptr)
15948 isl_schedule_node_free(ptr);
15951 __isl_give isl_schedule_node *schedule_node::copy() const & {
15952 return isl_schedule_node_copy(ptr);
15955 __isl_keep isl_schedule_node *schedule_node::get() const {
15956 return ptr;
15959 __isl_give isl_schedule_node *schedule_node::release() {
15960 isl_schedule_node *tmp = ptr;
15961 ptr = nullptr;
15962 return tmp;
15965 bool schedule_node::is_null() const {
15966 return ptr == nullptr;
15969 template <typename T, typename>
15970 boolean schedule_node::isa_type(T subtype) const
15972 if (is_null())
15973 return boolean();
15974 return isl_schedule_node_get_type(get()) == subtype;
15976 template <class T>
15977 boolean schedule_node::isa() const
15979 return isa_type<decltype(T::type)>(T::type);
15981 template <class T>
15982 T schedule_node::as() const
15984 if (isa<T>().is_false())
15985 isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
15986 return T(copy());
15989 isl::checked::ctx schedule_node::ctx() const {
15990 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15993 isl::checked::schedule_node schedule_node::ancestor(int generation) const
15995 auto res = isl_schedule_node_ancestor(copy(), generation);
15996 return manage(res);
15999 class size schedule_node::ancestor_child_position(const isl::checked::schedule_node &ancestor) const
16001 auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
16002 return manage(res);
16005 class size schedule_node::get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const
16007 return ancestor_child_position(ancestor);
16010 isl::checked::schedule_node schedule_node::child(int pos) const
16012 auto res = isl_schedule_node_child(copy(), pos);
16013 return manage(res);
16016 class size schedule_node::child_position() const
16018 auto res = isl_schedule_node_get_child_position(get());
16019 return manage(res);
16022 class size schedule_node::get_child_position() const
16024 return child_position();
16027 boolean schedule_node::every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const
16029 struct test_data {
16030 std::function<boolean(isl::checked::schedule_node)> func;
16031 } test_data = { test };
16032 auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
16033 auto *data = static_cast<struct test_data *>(arg_1);
16034 auto ret = (data->func)(manage_copy(arg_0));
16035 return ret.release();
16037 auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
16038 return manage(res);
16041 isl::checked::schedule_node schedule_node::first_child() const
16043 auto res = isl_schedule_node_first_child(copy());
16044 return manage(res);
16047 stat schedule_node::foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const
16049 struct fn_data {
16050 std::function<stat(isl::checked::schedule_node)> func;
16051 } fn_data = { fn };
16052 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
16053 auto *data = static_cast<struct fn_data *>(arg_1);
16054 auto ret = (data->func)(manage_copy(arg_0));
16055 return ret.release();
16057 auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
16058 return manage(res);
16061 stat schedule_node::foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const
16063 struct fn_data {
16064 std::function<boolean(isl::checked::schedule_node)> func;
16065 } fn_data = { fn };
16066 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
16067 auto *data = static_cast<struct fn_data *>(arg_1);
16068 auto ret = (data->func)(manage_copy(arg_0));
16069 return ret.release();
16071 auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
16072 return manage(res);
16075 isl::checked::schedule_node schedule_node::from_domain(isl::checked::union_set domain)
16077 auto res = isl_schedule_node_from_domain(domain.release());
16078 return manage(res);
16081 isl::checked::schedule_node schedule_node::from_extension(isl::checked::union_map extension)
16083 auto res = isl_schedule_node_from_extension(extension.release());
16084 return manage(res);
16087 isl::checked::schedule_node schedule_node::graft_after(isl::checked::schedule_node graft) const
16089 auto res = isl_schedule_node_graft_after(copy(), graft.release());
16090 return manage(res);
16093 isl::checked::schedule_node schedule_node::graft_before(isl::checked::schedule_node graft) const
16095 auto res = isl_schedule_node_graft_before(copy(), graft.release());
16096 return manage(res);
16099 boolean schedule_node::has_children() const
16101 auto res = isl_schedule_node_has_children(get());
16102 return manage(res);
16105 boolean schedule_node::has_next_sibling() const
16107 auto res = isl_schedule_node_has_next_sibling(get());
16108 return manage(res);
16111 boolean schedule_node::has_parent() const
16113 auto res = isl_schedule_node_has_parent(get());
16114 return manage(res);
16117 boolean schedule_node::has_previous_sibling() const
16119 auto res = isl_schedule_node_has_previous_sibling(get());
16120 return manage(res);
16123 isl::checked::schedule_node schedule_node::insert_context(isl::checked::set context) const
16125 auto res = isl_schedule_node_insert_context(copy(), context.release());
16126 return manage(res);
16129 isl::checked::schedule_node schedule_node::insert_filter(isl::checked::union_set filter) const
16131 auto res = isl_schedule_node_insert_filter(copy(), filter.release());
16132 return manage(res);
16135 isl::checked::schedule_node schedule_node::insert_guard(isl::checked::set context) const
16137 auto res = isl_schedule_node_insert_guard(copy(), context.release());
16138 return manage(res);
16141 isl::checked::schedule_node schedule_node::insert_mark(isl::checked::id mark) const
16143 auto res = isl_schedule_node_insert_mark(copy(), mark.release());
16144 return manage(res);
16147 isl::checked::schedule_node schedule_node::insert_mark(const std::string &mark) const
16149 return this->insert_mark(isl::checked::id(ctx(), mark));
16152 isl::checked::schedule_node schedule_node::insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const
16154 auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
16155 return manage(res);
16158 isl::checked::schedule_node schedule_node::insert_sequence(isl::checked::union_set_list filters) const
16160 auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
16161 return manage(res);
16164 isl::checked::schedule_node schedule_node::insert_set(isl::checked::union_set_list filters) const
16166 auto res = isl_schedule_node_insert_set(copy(), filters.release());
16167 return manage(res);
16170 boolean schedule_node::is_equal(const isl::checked::schedule_node &node2) const
16172 auto res = isl_schedule_node_is_equal(get(), node2.get());
16173 return manage(res);
16176 boolean schedule_node::is_subtree_anchored() const
16178 auto res = isl_schedule_node_is_subtree_anchored(get());
16179 return manage(res);
16182 isl::checked::schedule_node schedule_node::map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const
16184 struct fn_data {
16185 std::function<isl::checked::schedule_node(isl::checked::schedule_node)> func;
16186 } fn_data = { fn };
16187 auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_schedule_node * {
16188 auto *data = static_cast<struct fn_data *>(arg_1);
16189 auto ret = (data->func)(manage(arg_0));
16190 return ret.release();
16192 auto res = isl_schedule_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
16193 return manage(res);
16196 class size schedule_node::n_children() const
16198 auto res = isl_schedule_node_n_children(get());
16199 return manage(res);
16202 isl::checked::schedule_node schedule_node::next_sibling() const
16204 auto res = isl_schedule_node_next_sibling(copy());
16205 return manage(res);
16208 isl::checked::schedule_node schedule_node::order_after(isl::checked::union_set filter) const
16210 auto res = isl_schedule_node_order_after(copy(), filter.release());
16211 return manage(res);
16214 isl::checked::schedule_node schedule_node::order_before(isl::checked::union_set filter) const
16216 auto res = isl_schedule_node_order_before(copy(), filter.release());
16217 return manage(res);
16220 isl::checked::schedule_node schedule_node::parent() const
16222 auto res = isl_schedule_node_parent(copy());
16223 return manage(res);
16226 isl::checked::multi_union_pw_aff schedule_node::prefix_schedule_multi_union_pw_aff() const
16228 auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
16229 return manage(res);
16232 isl::checked::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
16234 return prefix_schedule_multi_union_pw_aff();
16237 isl::checked::union_map schedule_node::prefix_schedule_union_map() const
16239 auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
16240 return manage(res);
16243 isl::checked::union_map schedule_node::get_prefix_schedule_union_map() const
16245 return prefix_schedule_union_map();
16248 isl::checked::union_pw_multi_aff schedule_node::prefix_schedule_union_pw_multi_aff() const
16250 auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
16251 return manage(res);
16254 isl::checked::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
16256 return prefix_schedule_union_pw_multi_aff();
16259 isl::checked::schedule_node schedule_node::previous_sibling() const
16261 auto res = isl_schedule_node_previous_sibling(copy());
16262 return manage(res);
16265 isl::checked::schedule_node schedule_node::root() const
16267 auto res = isl_schedule_node_root(copy());
16268 return manage(res);
16271 isl::checked::schedule schedule_node::schedule() const
16273 auto res = isl_schedule_node_get_schedule(get());
16274 return manage(res);
16277 isl::checked::schedule schedule_node::get_schedule() const
16279 return schedule();
16282 isl::checked::schedule_node schedule_node::shared_ancestor(const isl::checked::schedule_node &node2) const
16284 auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
16285 return manage(res);
16288 isl::checked::schedule_node schedule_node::get_shared_ancestor(const isl::checked::schedule_node &node2) const
16290 return shared_ancestor(node2);
16293 class size schedule_node::tree_depth() const
16295 auto res = isl_schedule_node_get_tree_depth(get());
16296 return manage(res);
16299 class size schedule_node::get_tree_depth() const
16301 return tree_depth();
16304 inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
16306 char *str = isl_schedule_node_to_str(obj.get());
16307 if (!str) {
16308 os.setstate(std::ios_base::badbit);
16309 return os;
16311 os << str;
16312 free(str);
16313 return os;
16316 // implementations for isl::schedule_node_band
16317 schedule_node_band::schedule_node_band(__isl_take isl_schedule_node *ptr)
16318 : schedule_node(ptr) {}
16320 schedule_node_band::schedule_node_band()
16321 : schedule_node() {}
16323 schedule_node_band::schedule_node_band(const schedule_node_band &obj)
16324 : schedule_node(obj)
16328 schedule_node_band &schedule_node_band::operator=(schedule_node_band obj) {
16329 std::swap(this->ptr, obj.ptr);
16330 return *this;
16333 isl::checked::ctx schedule_node_band::ctx() const {
16334 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16337 isl::checked::union_set schedule_node_band::ast_build_options() const
16339 auto res = isl_schedule_node_band_get_ast_build_options(get());
16340 return manage(res);
16343 isl::checked::union_set schedule_node_band::get_ast_build_options() const
16345 return ast_build_options();
16348 isl::checked::set schedule_node_band::ast_isolate_option() const
16350 auto res = isl_schedule_node_band_get_ast_isolate_option(get());
16351 return manage(res);
16354 isl::checked::set schedule_node_band::get_ast_isolate_option() const
16356 return ast_isolate_option();
16359 boolean schedule_node_band::member_get_coincident(int pos) const
16361 auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
16362 return manage(res);
16365 schedule_node_band schedule_node_band::member_set_coincident(int pos, int coincident) const
16367 auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
16368 return manage(res).as<schedule_node_band>();
16371 schedule_node_band schedule_node_band::mod(isl::checked::multi_val mv) const
16373 auto res = isl_schedule_node_band_mod(copy(), mv.release());
16374 return manage(res).as<schedule_node_band>();
16377 class size schedule_node_band::n_member() const
16379 auto res = isl_schedule_node_band_n_member(get());
16380 return manage(res);
16383 isl::checked::multi_union_pw_aff schedule_node_band::partial_schedule() const
16385 auto res = isl_schedule_node_band_get_partial_schedule(get());
16386 return manage(res);
16389 isl::checked::multi_union_pw_aff schedule_node_band::get_partial_schedule() const
16391 return partial_schedule();
16394 boolean schedule_node_band::permutable() const
16396 auto res = isl_schedule_node_band_get_permutable(get());
16397 return manage(res);
16400 boolean schedule_node_band::get_permutable() const
16402 return permutable();
16405 schedule_node_band schedule_node_band::scale(isl::checked::multi_val mv) const
16407 auto res = isl_schedule_node_band_scale(copy(), mv.release());
16408 return manage(res).as<schedule_node_band>();
16411 schedule_node_band schedule_node_band::scale_down(isl::checked::multi_val mv) const
16413 auto res = isl_schedule_node_band_scale_down(copy(), mv.release());
16414 return manage(res).as<schedule_node_band>();
16417 schedule_node_band schedule_node_band::set_ast_build_options(isl::checked::union_set options) const
16419 auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
16420 return manage(res).as<schedule_node_band>();
16423 schedule_node_band schedule_node_band::set_permutable(int permutable) const
16425 auto res = isl_schedule_node_band_set_permutable(copy(), permutable);
16426 return manage(res).as<schedule_node_band>();
16429 schedule_node_band schedule_node_band::shift(isl::checked::multi_union_pw_aff shift) const
16431 auto res = isl_schedule_node_band_shift(copy(), shift.release());
16432 return manage(res).as<schedule_node_band>();
16435 schedule_node_band schedule_node_band::split(int pos) const
16437 auto res = isl_schedule_node_band_split(copy(), pos);
16438 return manage(res).as<schedule_node_band>();
16441 schedule_node_band schedule_node_band::tile(isl::checked::multi_val sizes) const
16443 auto res = isl_schedule_node_band_tile(copy(), sizes.release());
16444 return manage(res).as<schedule_node_band>();
16447 schedule_node_band schedule_node_band::member_set_ast_loop_default(int pos) const
16449 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_default);
16450 return manage(res).as<schedule_node_band>();
16453 schedule_node_band schedule_node_band::member_set_ast_loop_atomic(int pos) const
16455 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_atomic);
16456 return manage(res).as<schedule_node_band>();
16459 schedule_node_band schedule_node_band::member_set_ast_loop_unroll(int pos) const
16461 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_unroll);
16462 return manage(res).as<schedule_node_band>();
16465 schedule_node_band schedule_node_band::member_set_ast_loop_separate(int pos) const
16467 auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_separate);
16468 return manage(res).as<schedule_node_band>();
16471 inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
16473 char *str = isl_schedule_node_to_str(obj.get());
16474 if (!str) {
16475 os.setstate(std::ios_base::badbit);
16476 return os;
16478 os << str;
16479 free(str);
16480 return os;
16483 // implementations for isl::schedule_node_context
16484 schedule_node_context::schedule_node_context(__isl_take isl_schedule_node *ptr)
16485 : schedule_node(ptr) {}
16487 schedule_node_context::schedule_node_context()
16488 : schedule_node() {}
16490 schedule_node_context::schedule_node_context(const schedule_node_context &obj)
16491 : schedule_node(obj)
16495 schedule_node_context &schedule_node_context::operator=(schedule_node_context obj) {
16496 std::swap(this->ptr, obj.ptr);
16497 return *this;
16500 isl::checked::ctx schedule_node_context::ctx() const {
16501 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16504 isl::checked::set schedule_node_context::context() const
16506 auto res = isl_schedule_node_context_get_context(get());
16507 return manage(res);
16510 isl::checked::set schedule_node_context::get_context() const
16512 return context();
16515 inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
16517 char *str = isl_schedule_node_to_str(obj.get());
16518 if (!str) {
16519 os.setstate(std::ios_base::badbit);
16520 return os;
16522 os << str;
16523 free(str);
16524 return os;
16527 // implementations for isl::schedule_node_domain
16528 schedule_node_domain::schedule_node_domain(__isl_take isl_schedule_node *ptr)
16529 : schedule_node(ptr) {}
16531 schedule_node_domain::schedule_node_domain()
16532 : schedule_node() {}
16534 schedule_node_domain::schedule_node_domain(const schedule_node_domain &obj)
16535 : schedule_node(obj)
16539 schedule_node_domain &schedule_node_domain::operator=(schedule_node_domain obj) {
16540 std::swap(this->ptr, obj.ptr);
16541 return *this;
16544 isl::checked::ctx schedule_node_domain::ctx() const {
16545 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16548 isl::checked::union_set schedule_node_domain::domain() const
16550 auto res = isl_schedule_node_domain_get_domain(get());
16551 return manage(res);
16554 isl::checked::union_set schedule_node_domain::get_domain() const
16556 return domain();
16559 inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
16561 char *str = isl_schedule_node_to_str(obj.get());
16562 if (!str) {
16563 os.setstate(std::ios_base::badbit);
16564 return os;
16566 os << str;
16567 free(str);
16568 return os;
16571 // implementations for isl::schedule_node_expansion
16572 schedule_node_expansion::schedule_node_expansion(__isl_take isl_schedule_node *ptr)
16573 : schedule_node(ptr) {}
16575 schedule_node_expansion::schedule_node_expansion()
16576 : schedule_node() {}
16578 schedule_node_expansion::schedule_node_expansion(const schedule_node_expansion &obj)
16579 : schedule_node(obj)
16583 schedule_node_expansion &schedule_node_expansion::operator=(schedule_node_expansion obj) {
16584 std::swap(this->ptr, obj.ptr);
16585 return *this;
16588 isl::checked::ctx schedule_node_expansion::ctx() const {
16589 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16592 isl::checked::union_pw_multi_aff schedule_node_expansion::contraction() const
16594 auto res = isl_schedule_node_expansion_get_contraction(get());
16595 return manage(res);
16598 isl::checked::union_pw_multi_aff schedule_node_expansion::get_contraction() const
16600 return contraction();
16603 isl::checked::union_map schedule_node_expansion::expansion() const
16605 auto res = isl_schedule_node_expansion_get_expansion(get());
16606 return manage(res);
16609 isl::checked::union_map schedule_node_expansion::get_expansion() const
16611 return expansion();
16614 inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
16616 char *str = isl_schedule_node_to_str(obj.get());
16617 if (!str) {
16618 os.setstate(std::ios_base::badbit);
16619 return os;
16621 os << str;
16622 free(str);
16623 return os;
16626 // implementations for isl::schedule_node_extension
16627 schedule_node_extension::schedule_node_extension(__isl_take isl_schedule_node *ptr)
16628 : schedule_node(ptr) {}
16630 schedule_node_extension::schedule_node_extension()
16631 : schedule_node() {}
16633 schedule_node_extension::schedule_node_extension(const schedule_node_extension &obj)
16634 : schedule_node(obj)
16638 schedule_node_extension &schedule_node_extension::operator=(schedule_node_extension obj) {
16639 std::swap(this->ptr, obj.ptr);
16640 return *this;
16643 isl::checked::ctx schedule_node_extension::ctx() const {
16644 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16647 isl::checked::union_map schedule_node_extension::extension() const
16649 auto res = isl_schedule_node_extension_get_extension(get());
16650 return manage(res);
16653 isl::checked::union_map schedule_node_extension::get_extension() const
16655 return extension();
16658 inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
16660 char *str = isl_schedule_node_to_str(obj.get());
16661 if (!str) {
16662 os.setstate(std::ios_base::badbit);
16663 return os;
16665 os << str;
16666 free(str);
16667 return os;
16670 // implementations for isl::schedule_node_filter
16671 schedule_node_filter::schedule_node_filter(__isl_take isl_schedule_node *ptr)
16672 : schedule_node(ptr) {}
16674 schedule_node_filter::schedule_node_filter()
16675 : schedule_node() {}
16677 schedule_node_filter::schedule_node_filter(const schedule_node_filter &obj)
16678 : schedule_node(obj)
16682 schedule_node_filter &schedule_node_filter::operator=(schedule_node_filter obj) {
16683 std::swap(this->ptr, obj.ptr);
16684 return *this;
16687 isl::checked::ctx schedule_node_filter::ctx() const {
16688 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16691 isl::checked::union_set schedule_node_filter::filter() const
16693 auto res = isl_schedule_node_filter_get_filter(get());
16694 return manage(res);
16697 isl::checked::union_set schedule_node_filter::get_filter() const
16699 return filter();
16702 inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
16704 char *str = isl_schedule_node_to_str(obj.get());
16705 if (!str) {
16706 os.setstate(std::ios_base::badbit);
16707 return os;
16709 os << str;
16710 free(str);
16711 return os;
16714 // implementations for isl::schedule_node_guard
16715 schedule_node_guard::schedule_node_guard(__isl_take isl_schedule_node *ptr)
16716 : schedule_node(ptr) {}
16718 schedule_node_guard::schedule_node_guard()
16719 : schedule_node() {}
16721 schedule_node_guard::schedule_node_guard(const schedule_node_guard &obj)
16722 : schedule_node(obj)
16726 schedule_node_guard &schedule_node_guard::operator=(schedule_node_guard obj) {
16727 std::swap(this->ptr, obj.ptr);
16728 return *this;
16731 isl::checked::ctx schedule_node_guard::ctx() const {
16732 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16735 isl::checked::set schedule_node_guard::guard() const
16737 auto res = isl_schedule_node_guard_get_guard(get());
16738 return manage(res);
16741 isl::checked::set schedule_node_guard::get_guard() const
16743 return guard();
16746 inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
16748 char *str = isl_schedule_node_to_str(obj.get());
16749 if (!str) {
16750 os.setstate(std::ios_base::badbit);
16751 return os;
16753 os << str;
16754 free(str);
16755 return os;
16758 // implementations for isl::schedule_node_leaf
16759 schedule_node_leaf::schedule_node_leaf(__isl_take isl_schedule_node *ptr)
16760 : schedule_node(ptr) {}
16762 schedule_node_leaf::schedule_node_leaf()
16763 : schedule_node() {}
16765 schedule_node_leaf::schedule_node_leaf(const schedule_node_leaf &obj)
16766 : schedule_node(obj)
16770 schedule_node_leaf &schedule_node_leaf::operator=(schedule_node_leaf obj) {
16771 std::swap(this->ptr, obj.ptr);
16772 return *this;
16775 isl::checked::ctx schedule_node_leaf::ctx() const {
16776 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16779 inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
16781 char *str = isl_schedule_node_to_str(obj.get());
16782 if (!str) {
16783 os.setstate(std::ios_base::badbit);
16784 return os;
16786 os << str;
16787 free(str);
16788 return os;
16791 // implementations for isl::schedule_node_mark
16792 schedule_node_mark::schedule_node_mark(__isl_take isl_schedule_node *ptr)
16793 : schedule_node(ptr) {}
16795 schedule_node_mark::schedule_node_mark()
16796 : schedule_node() {}
16798 schedule_node_mark::schedule_node_mark(const schedule_node_mark &obj)
16799 : schedule_node(obj)
16803 schedule_node_mark &schedule_node_mark::operator=(schedule_node_mark obj) {
16804 std::swap(this->ptr, obj.ptr);
16805 return *this;
16808 isl::checked::ctx schedule_node_mark::ctx() const {
16809 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16812 inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
16814 char *str = isl_schedule_node_to_str(obj.get());
16815 if (!str) {
16816 os.setstate(std::ios_base::badbit);
16817 return os;
16819 os << str;
16820 free(str);
16821 return os;
16824 // implementations for isl::schedule_node_sequence
16825 schedule_node_sequence::schedule_node_sequence(__isl_take isl_schedule_node *ptr)
16826 : schedule_node(ptr) {}
16828 schedule_node_sequence::schedule_node_sequence()
16829 : schedule_node() {}
16831 schedule_node_sequence::schedule_node_sequence(const schedule_node_sequence &obj)
16832 : schedule_node(obj)
16836 schedule_node_sequence &schedule_node_sequence::operator=(schedule_node_sequence obj) {
16837 std::swap(this->ptr, obj.ptr);
16838 return *this;
16841 isl::checked::ctx schedule_node_sequence::ctx() const {
16842 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16845 inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
16847 char *str = isl_schedule_node_to_str(obj.get());
16848 if (!str) {
16849 os.setstate(std::ios_base::badbit);
16850 return os;
16852 os << str;
16853 free(str);
16854 return os;
16857 // implementations for isl::schedule_node_set
16858 schedule_node_set::schedule_node_set(__isl_take isl_schedule_node *ptr)
16859 : schedule_node(ptr) {}
16861 schedule_node_set::schedule_node_set()
16862 : schedule_node() {}
16864 schedule_node_set::schedule_node_set(const schedule_node_set &obj)
16865 : schedule_node(obj)
16869 schedule_node_set &schedule_node_set::operator=(schedule_node_set obj) {
16870 std::swap(this->ptr, obj.ptr);
16871 return *this;
16874 isl::checked::ctx schedule_node_set::ctx() const {
16875 return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
16878 inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
16880 char *str = isl_schedule_node_to_str(obj.get());
16881 if (!str) {
16882 os.setstate(std::ios_base::badbit);
16883 return os;
16885 os << str;
16886 free(str);
16887 return os;
16890 // implementations for isl::set
16891 set manage(__isl_take isl_set *ptr) {
16892 return set(ptr);
16894 set manage_copy(__isl_keep isl_set *ptr) {
16895 ptr = isl_set_copy(ptr);
16896 return set(ptr);
16899 set::set(__isl_take isl_set *ptr)
16900 : ptr(ptr) {}
16902 set::set()
16903 : ptr(nullptr) {}
16905 set::set(const set &obj)
16906 : ptr(nullptr)
16908 ptr = obj.copy();
16911 set::set(isl::checked::basic_set bset)
16913 auto res = isl_set_from_basic_set(bset.release());
16914 ptr = res;
16917 set::set(isl::checked::point pnt)
16919 auto res = isl_set_from_point(pnt.release());
16920 ptr = res;
16923 set::set(isl::checked::ctx ctx, const std::string &str)
16925 auto res = isl_set_read_from_str(ctx.release(), str.c_str());
16926 ptr = res;
16929 set &set::operator=(set obj) {
16930 std::swap(this->ptr, obj.ptr);
16931 return *this;
16934 set::~set() {
16935 if (ptr)
16936 isl_set_free(ptr);
16939 __isl_give isl_set *set::copy() const & {
16940 return isl_set_copy(ptr);
16943 __isl_keep isl_set *set::get() const {
16944 return ptr;
16947 __isl_give isl_set *set::release() {
16948 isl_set *tmp = ptr;
16949 ptr = nullptr;
16950 return tmp;
16953 bool set::is_null() const {
16954 return ptr == nullptr;
16957 isl::checked::ctx set::ctx() const {
16958 return isl::checked::ctx(isl_set_get_ctx(ptr));
16961 isl::checked::basic_set set::affine_hull() const
16963 auto res = isl_set_affine_hull(copy());
16964 return manage(res);
16967 isl::checked::set set::apply(isl::checked::map map) const
16969 auto res = isl_set_apply(copy(), map.release());
16970 return manage(res);
16973 isl::checked::union_set set::apply(const isl::checked::union_map &umap) const
16975 return isl::checked::union_set(*this).apply(umap);
16978 isl::checked::set set::apply(const isl::checked::basic_map &map) const
16980 return this->apply(isl::checked::map(map));
16983 isl::checked::pw_multi_aff set::as_pw_multi_aff() const
16985 auto res = isl_set_as_pw_multi_aff(copy());
16986 return manage(res);
16989 isl::checked::set set::as_set() const
16991 return isl::checked::union_set(*this).as_set();
16994 isl::checked::set set::bind(isl::checked::multi_id tuple) const
16996 auto res = isl_set_bind(copy(), tuple.release());
16997 return manage(res);
17000 isl::checked::set set::coalesce() const
17002 auto res = isl_set_coalesce(copy());
17003 return manage(res);
17006 isl::checked::set set::complement() const
17008 auto res = isl_set_complement(copy());
17009 return manage(res);
17012 isl::checked::union_set set::compute_divs() const
17014 return isl::checked::union_set(*this).compute_divs();
17017 isl::checked::set set::detect_equalities() const
17019 auto res = isl_set_detect_equalities(copy());
17020 return manage(res);
17023 isl::checked::val set::dim_max_val(int pos) const
17025 auto res = isl_set_dim_max_val(copy(), pos);
17026 return manage(res);
17029 isl::checked::val set::dim_min_val(int pos) const
17031 auto res = isl_set_dim_min_val(copy(), pos);
17032 return manage(res);
17035 isl::checked::set set::drop_unused_params() const
17037 auto res = isl_set_drop_unused_params(copy());
17038 return manage(res);
17041 isl::checked::set set::empty(isl::checked::space space)
17043 auto res = isl_set_empty(space.release());
17044 return manage(res);
17047 boolean set::every_set(const std::function<boolean(isl::checked::set)> &test) const
17049 return isl::checked::union_set(*this).every_set(test);
17052 isl::checked::set set::extract_set(const isl::checked::space &space) const
17054 return isl::checked::union_set(*this).extract_set(space);
17057 isl::checked::set set::flatten() const
17059 auto res = isl_set_flatten(copy());
17060 return manage(res);
17063 stat set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
17065 struct fn_data {
17066 std::function<stat(isl::checked::basic_set)> func;
17067 } fn_data = { fn };
17068 auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
17069 auto *data = static_cast<struct fn_data *>(arg_1);
17070 auto ret = (data->func)(manage(arg_0));
17071 return ret.release();
17073 auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
17074 return manage(res);
17077 stat set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
17079 struct fn_data {
17080 std::function<stat(isl::checked::point)> func;
17081 } fn_data = { fn };
17082 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
17083 auto *data = static_cast<struct fn_data *>(arg_1);
17084 auto ret = (data->func)(manage(arg_0));
17085 return ret.release();
17087 auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
17088 return manage(res);
17091 stat set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
17093 return isl::checked::union_set(*this).foreach_set(fn);
17096 isl::checked::set set::gist(isl::checked::set context) const
17098 auto res = isl_set_gist(copy(), context.release());
17099 return manage(res);
17102 isl::checked::union_set set::gist(const isl::checked::union_set &context) const
17104 return isl::checked::union_set(*this).gist(context);
17107 isl::checked::set set::gist(const isl::checked::basic_set &context) const
17109 return this->gist(isl::checked::set(context));
17112 isl::checked::set set::gist(const isl::checked::point &context) const
17114 return this->gist(isl::checked::set(context));
17117 isl::checked::set set::gist_params(isl::checked::set context) const
17119 auto res = isl_set_gist_params(copy(), context.release());
17120 return manage(res);
17123 isl::checked::map set::identity() const
17125 auto res = isl_set_identity(copy());
17126 return manage(res);
17129 isl::checked::pw_aff set::indicator_function() const
17131 auto res = isl_set_indicator_function(copy());
17132 return manage(res);
17135 isl::checked::map set::insert_domain(isl::checked::space domain) const
17137 auto res = isl_set_insert_domain(copy(), domain.release());
17138 return manage(res);
17141 isl::checked::set set::intersect(isl::checked::set set2) const
17143 auto res = isl_set_intersect(copy(), set2.release());
17144 return manage(res);
17147 isl::checked::union_set set::intersect(const isl::checked::union_set &uset2) const
17149 return isl::checked::union_set(*this).intersect(uset2);
17152 isl::checked::set set::intersect(const isl::checked::basic_set &set2) const
17154 return this->intersect(isl::checked::set(set2));
17157 isl::checked::set set::intersect(const isl::checked::point &set2) const
17159 return this->intersect(isl::checked::set(set2));
17162 isl::checked::set set::intersect_params(isl::checked::set params) const
17164 auto res = isl_set_intersect_params(copy(), params.release());
17165 return manage(res);
17168 boolean set::involves_locals() const
17170 auto res = isl_set_involves_locals(get());
17171 return manage(res);
17174 boolean set::is_disjoint(const isl::checked::set &set2) const
17176 auto res = isl_set_is_disjoint(get(), set2.get());
17177 return manage(res);
17180 boolean set::is_disjoint(const isl::checked::union_set &uset2) const
17182 return isl::checked::union_set(*this).is_disjoint(uset2);
17185 boolean set::is_disjoint(const isl::checked::basic_set &set2) const
17187 return this->is_disjoint(isl::checked::set(set2));
17190 boolean set::is_disjoint(const isl::checked::point &set2) const
17192 return this->is_disjoint(isl::checked::set(set2));
17195 boolean set::is_empty() const
17197 auto res = isl_set_is_empty(get());
17198 return manage(res);
17201 boolean set::is_equal(const isl::checked::set &set2) const
17203 auto res = isl_set_is_equal(get(), set2.get());
17204 return manage(res);
17207 boolean set::is_equal(const isl::checked::union_set &uset2) const
17209 return isl::checked::union_set(*this).is_equal(uset2);
17212 boolean set::is_equal(const isl::checked::basic_set &set2) const
17214 return this->is_equal(isl::checked::set(set2));
17217 boolean set::is_equal(const isl::checked::point &set2) const
17219 return this->is_equal(isl::checked::set(set2));
17222 boolean set::is_singleton() const
17224 auto res = isl_set_is_singleton(get());
17225 return manage(res);
17228 boolean set::is_strict_subset(const isl::checked::set &set2) const
17230 auto res = isl_set_is_strict_subset(get(), set2.get());
17231 return manage(res);
17234 boolean set::is_strict_subset(const isl::checked::union_set &uset2) const
17236 return isl::checked::union_set(*this).is_strict_subset(uset2);
17239 boolean set::is_strict_subset(const isl::checked::basic_set &set2) const
17241 return this->is_strict_subset(isl::checked::set(set2));
17244 boolean set::is_strict_subset(const isl::checked::point &set2) const
17246 return this->is_strict_subset(isl::checked::set(set2));
17249 boolean set::is_subset(const isl::checked::set &set2) const
17251 auto res = isl_set_is_subset(get(), set2.get());
17252 return manage(res);
17255 boolean set::is_subset(const isl::checked::union_set &uset2) const
17257 return isl::checked::union_set(*this).is_subset(uset2);
17260 boolean set::is_subset(const isl::checked::basic_set &set2) const
17262 return this->is_subset(isl::checked::set(set2));
17265 boolean set::is_subset(const isl::checked::point &set2) const
17267 return this->is_subset(isl::checked::set(set2));
17270 boolean set::is_wrapping() const
17272 auto res = isl_set_is_wrapping(get());
17273 return manage(res);
17276 boolean set::isa_set() const
17278 return isl::checked::union_set(*this).isa_set();
17281 isl::checked::fixed_box set::lattice_tile() const
17283 auto res = isl_set_get_lattice_tile(get());
17284 return manage(res);
17287 isl::checked::fixed_box set::get_lattice_tile() const
17289 return lattice_tile();
17292 isl::checked::set set::lexmax() const
17294 auto res = isl_set_lexmax(copy());
17295 return manage(res);
17298 isl::checked::pw_multi_aff set::lexmax_pw_multi_aff() const
17300 auto res = isl_set_lexmax_pw_multi_aff(copy());
17301 return manage(res);
17304 isl::checked::set set::lexmin() const
17306 auto res = isl_set_lexmin(copy());
17307 return manage(res);
17310 isl::checked::pw_multi_aff set::lexmin_pw_multi_aff() const
17312 auto res = isl_set_lexmin_pw_multi_aff(copy());
17313 return manage(res);
17316 isl::checked::set set::lower_bound(isl::checked::multi_pw_aff lower) const
17318 auto res = isl_set_lower_bound_multi_pw_aff(copy(), lower.release());
17319 return manage(res);
17322 isl::checked::set set::lower_bound(isl::checked::multi_val lower) const
17324 auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
17325 return manage(res);
17328 isl::checked::multi_pw_aff set::max_multi_pw_aff() const
17330 auto res = isl_set_max_multi_pw_aff(copy());
17331 return manage(res);
17334 isl::checked::val set::max_val(const isl::checked::aff &obj) const
17336 auto res = isl_set_max_val(get(), obj.get());
17337 return manage(res);
17340 isl::checked::multi_pw_aff set::min_multi_pw_aff() const
17342 auto res = isl_set_min_multi_pw_aff(copy());
17343 return manage(res);
17346 isl::checked::val set::min_val(const isl::checked::aff &obj) const
17348 auto res = isl_set_min_val(get(), obj.get());
17349 return manage(res);
17352 class size set::n_basic_set() const
17354 auto res = isl_set_n_basic_set(get());
17355 return manage(res);
17358 isl::checked::pw_aff set::param_pw_aff_on_domain(isl::checked::id id) const
17360 auto res = isl_set_param_pw_aff_on_domain_id(copy(), id.release());
17361 return manage(res);
17364 isl::checked::pw_aff set::param_pw_aff_on_domain(const std::string &id) const
17366 return this->param_pw_aff_on_domain(isl::checked::id(ctx(), id));
17369 isl::checked::set set::params() const
17371 auto res = isl_set_params(copy());
17372 return manage(res);
17375 isl::checked::multi_val set::plain_multi_val_if_fixed() const
17377 auto res = isl_set_get_plain_multi_val_if_fixed(get());
17378 return manage(res);
17381 isl::checked::multi_val set::get_plain_multi_val_if_fixed() const
17383 return plain_multi_val_if_fixed();
17386 isl::checked::basic_set set::polyhedral_hull() const
17388 auto res = isl_set_polyhedral_hull(copy());
17389 return manage(res);
17392 isl::checked::set set::preimage(isl::checked::multi_aff ma) const
17394 auto res = isl_set_preimage_multi_aff(copy(), ma.release());
17395 return manage(res);
17398 isl::checked::set set::preimage(isl::checked::multi_pw_aff mpa) const
17400 auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
17401 return manage(res);
17404 isl::checked::set set::preimage(isl::checked::pw_multi_aff pma) const
17406 auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
17407 return manage(res);
17410 isl::checked::union_set set::preimage(const isl::checked::union_pw_multi_aff &upma) const
17412 return isl::checked::union_set(*this).preimage(upma);
17415 isl::checked::set set::product(isl::checked::set set2) const
17417 auto res = isl_set_product(copy(), set2.release());
17418 return manage(res);
17421 isl::checked::set set::project_out_all_params() const
17423 auto res = isl_set_project_out_all_params(copy());
17424 return manage(res);
17427 isl::checked::set set::project_out_param(isl::checked::id id) const
17429 auto res = isl_set_project_out_param_id(copy(), id.release());
17430 return manage(res);
17433 isl::checked::set set::project_out_param(const std::string &id) const
17435 return this->project_out_param(isl::checked::id(ctx(), id));
17438 isl::checked::set set::project_out_param(isl::checked::id_list list) const
17440 auto res = isl_set_project_out_param_id_list(copy(), list.release());
17441 return manage(res);
17444 isl::checked::pw_aff set::pw_aff_on_domain(isl::checked::val v) const
17446 auto res = isl_set_pw_aff_on_domain_val(copy(), v.release());
17447 return manage(res);
17450 isl::checked::pw_aff set::pw_aff_on_domain(long v) const
17452 return this->pw_aff_on_domain(isl::checked::val(ctx(), v));
17455 isl::checked::pw_multi_aff set::pw_multi_aff_on_domain(isl::checked::multi_val mv) const
17457 auto res = isl_set_pw_multi_aff_on_domain_multi_val(copy(), mv.release());
17458 return manage(res);
17461 isl::checked::basic_set set::sample() const
17463 auto res = isl_set_sample(copy());
17464 return manage(res);
17467 isl::checked::point set::sample_point() const
17469 auto res = isl_set_sample_point(copy());
17470 return manage(res);
17473 isl::checked::set_list set::set_list() const
17475 return isl::checked::union_set(*this).set_list();
17478 isl::checked::fixed_box set::simple_fixed_box_hull() const
17480 auto res = isl_set_get_simple_fixed_box_hull(get());
17481 return manage(res);
17484 isl::checked::fixed_box set::get_simple_fixed_box_hull() const
17486 return simple_fixed_box_hull();
17489 isl::checked::space set::space() const
17491 auto res = isl_set_get_space(get());
17492 return manage(res);
17495 isl::checked::space set::get_space() const
17497 return space();
17500 isl::checked::val set::stride(int pos) const
17502 auto res = isl_set_get_stride(get(), pos);
17503 return manage(res);
17506 isl::checked::val set::get_stride(int pos) const
17508 return stride(pos);
17511 isl::checked::set set::subtract(isl::checked::set set2) const
17513 auto res = isl_set_subtract(copy(), set2.release());
17514 return manage(res);
17517 isl::checked::union_set set::subtract(const isl::checked::union_set &uset2) const
17519 return isl::checked::union_set(*this).subtract(uset2);
17522 isl::checked::set set::subtract(const isl::checked::basic_set &set2) const
17524 return this->subtract(isl::checked::set(set2));
17527 isl::checked::set set::subtract(const isl::checked::point &set2) const
17529 return this->subtract(isl::checked::set(set2));
17532 isl::checked::set_list set::to_list() const
17534 auto res = isl_set_to_list(copy());
17535 return manage(res);
17538 isl::checked::union_set set::to_union_set() const
17540 auto res = isl_set_to_union_set(copy());
17541 return manage(res);
17544 isl::checked::map set::translation() const
17546 auto res = isl_set_translation(copy());
17547 return manage(res);
17550 class size set::tuple_dim() const
17552 auto res = isl_set_tuple_dim(get());
17553 return manage(res);
17556 isl::checked::set set::unbind_params(isl::checked::multi_id tuple) const
17558 auto res = isl_set_unbind_params(copy(), tuple.release());
17559 return manage(res);
17562 isl::checked::map set::unbind_params_insert_domain(isl::checked::multi_id domain) const
17564 auto res = isl_set_unbind_params_insert_domain(copy(), domain.release());
17565 return manage(res);
17568 isl::checked::set set::unite(isl::checked::set set2) const
17570 auto res = isl_set_union(copy(), set2.release());
17571 return manage(res);
17574 isl::checked::union_set set::unite(const isl::checked::union_set &uset2) const
17576 return isl::checked::union_set(*this).unite(uset2);
17579 isl::checked::set set::unite(const isl::checked::basic_set &set2) const
17581 return this->unite(isl::checked::set(set2));
17584 isl::checked::set set::unite(const isl::checked::point &set2) const
17586 return this->unite(isl::checked::set(set2));
17589 isl::checked::set set::universe(isl::checked::space space)
17591 auto res = isl_set_universe(space.release());
17592 return manage(res);
17595 isl::checked::basic_set set::unshifted_simple_hull() const
17597 auto res = isl_set_unshifted_simple_hull(copy());
17598 return manage(res);
17601 isl::checked::map set::unwrap() const
17603 auto res = isl_set_unwrap(copy());
17604 return manage(res);
17607 isl::checked::set set::upper_bound(isl::checked::multi_pw_aff upper) const
17609 auto res = isl_set_upper_bound_multi_pw_aff(copy(), upper.release());
17610 return manage(res);
17613 isl::checked::set set::upper_bound(isl::checked::multi_val upper) const
17615 auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
17616 return manage(res);
17619 isl::checked::set set::wrapped_reverse() const
17621 auto res = isl_set_wrapped_reverse(copy());
17622 return manage(res);
17625 inline std::ostream &operator<<(std::ostream &os, const set &obj)
17627 char *str = isl_set_to_str(obj.get());
17628 if (!str) {
17629 os.setstate(std::ios_base::badbit);
17630 return os;
17632 os << str;
17633 free(str);
17634 return os;
17637 // implementations for isl::set_list
17638 set_list manage(__isl_take isl_set_list *ptr) {
17639 return set_list(ptr);
17641 set_list manage_copy(__isl_keep isl_set_list *ptr) {
17642 ptr = isl_set_list_copy(ptr);
17643 return set_list(ptr);
17646 set_list::set_list(__isl_take isl_set_list *ptr)
17647 : ptr(ptr) {}
17649 set_list::set_list()
17650 : ptr(nullptr) {}
17652 set_list::set_list(const set_list &obj)
17653 : ptr(nullptr)
17655 ptr = obj.copy();
17658 set_list::set_list(isl::checked::ctx ctx, int n)
17660 auto res = isl_set_list_alloc(ctx.release(), n);
17661 ptr = res;
17664 set_list::set_list(isl::checked::set el)
17666 auto res = isl_set_list_from_set(el.release());
17667 ptr = res;
17670 set_list::set_list(isl::checked::ctx ctx, const std::string &str)
17672 auto res = isl_set_list_read_from_str(ctx.release(), str.c_str());
17673 ptr = res;
17676 set_list &set_list::operator=(set_list obj) {
17677 std::swap(this->ptr, obj.ptr);
17678 return *this;
17681 set_list::~set_list() {
17682 if (ptr)
17683 isl_set_list_free(ptr);
17686 __isl_give isl_set_list *set_list::copy() const & {
17687 return isl_set_list_copy(ptr);
17690 __isl_keep isl_set_list *set_list::get() const {
17691 return ptr;
17694 __isl_give isl_set_list *set_list::release() {
17695 isl_set_list *tmp = ptr;
17696 ptr = nullptr;
17697 return tmp;
17700 bool set_list::is_null() const {
17701 return ptr == nullptr;
17704 isl::checked::ctx set_list::ctx() const {
17705 return isl::checked::ctx(isl_set_list_get_ctx(ptr));
17708 isl::checked::set_list set_list::add(isl::checked::set el) const
17710 auto res = isl_set_list_add(copy(), el.release());
17711 return manage(res);
17714 isl::checked::set set_list::at(int index) const
17716 auto res = isl_set_list_get_at(get(), index);
17717 return manage(res);
17720 isl::checked::set set_list::get_at(int index) const
17722 return at(index);
17725 isl::checked::set_list set_list::clear() const
17727 auto res = isl_set_list_clear(copy());
17728 return manage(res);
17731 isl::checked::set_list set_list::concat(isl::checked::set_list list2) const
17733 auto res = isl_set_list_concat(copy(), list2.release());
17734 return manage(res);
17737 isl::checked::set_list set_list::drop(unsigned int first, unsigned int n) const
17739 auto res = isl_set_list_drop(copy(), first, n);
17740 return manage(res);
17743 stat set_list::foreach(const std::function<stat(isl::checked::set)> &fn) const
17745 struct fn_data {
17746 std::function<stat(isl::checked::set)> func;
17747 } fn_data = { fn };
17748 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
17749 auto *data = static_cast<struct fn_data *>(arg_1);
17750 auto ret = (data->func)(manage(arg_0));
17751 return ret.release();
17753 auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
17754 return manage(res);
17757 stat set_list::foreach_scc(const std::function<boolean(isl::checked::set, isl::checked::set)> &follows, const std::function<stat(isl::checked::set_list)> &fn) const
17759 struct follows_data {
17760 std::function<boolean(isl::checked::set, isl::checked::set)> func;
17761 } follows_data = { follows };
17762 auto follows_lambda = [](isl_set *arg_0, isl_set *arg_1, void *arg_2) -> isl_bool {
17763 auto *data = static_cast<struct follows_data *>(arg_2);
17764 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
17765 return ret.release();
17767 struct fn_data {
17768 std::function<stat(isl::checked::set_list)> func;
17769 } fn_data = { fn };
17770 auto fn_lambda = [](isl_set_list *arg_0, void *arg_1) -> isl_stat {
17771 auto *data = static_cast<struct fn_data *>(arg_1);
17772 auto ret = (data->func)(manage(arg_0));
17773 return ret.release();
17775 auto res = isl_set_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
17776 return manage(res);
17779 isl::checked::set_list set_list::insert(unsigned int pos, isl::checked::set el) const
17781 auto res = isl_set_list_insert(copy(), pos, el.release());
17782 return manage(res);
17785 isl::checked::set_list set_list::set_at(int index, isl::checked::set el) const
17787 auto res = isl_set_list_set_at(copy(), index, el.release());
17788 return manage(res);
17791 class size set_list::size() const
17793 auto res = isl_set_list_size(get());
17794 return manage(res);
17797 inline std::ostream &operator<<(std::ostream &os, const set_list &obj)
17799 char *str = isl_set_list_to_str(obj.get());
17800 if (!str) {
17801 os.setstate(std::ios_base::badbit);
17802 return os;
17804 os << str;
17805 free(str);
17806 return os;
17809 // implementations for isl::space
17810 space manage(__isl_take isl_space *ptr) {
17811 return space(ptr);
17813 space manage_copy(__isl_keep isl_space *ptr) {
17814 ptr = isl_space_copy(ptr);
17815 return space(ptr);
17818 space::space(__isl_take isl_space *ptr)
17819 : ptr(ptr) {}
17821 space::space()
17822 : ptr(nullptr) {}
17824 space::space(const space &obj)
17825 : ptr(nullptr)
17827 ptr = obj.copy();
17830 space::space(isl::checked::ctx ctx, const std::string &str)
17832 auto res = isl_space_read_from_str(ctx.release(), str.c_str());
17833 ptr = res;
17836 space &space::operator=(space obj) {
17837 std::swap(this->ptr, obj.ptr);
17838 return *this;
17841 space::~space() {
17842 if (ptr)
17843 isl_space_free(ptr);
17846 __isl_give isl_space *space::copy() const & {
17847 return isl_space_copy(ptr);
17850 __isl_keep isl_space *space::get() const {
17851 return ptr;
17854 __isl_give isl_space *space::release() {
17855 isl_space *tmp = ptr;
17856 ptr = nullptr;
17857 return tmp;
17860 bool space::is_null() const {
17861 return ptr == nullptr;
17864 isl::checked::ctx space::ctx() const {
17865 return isl::checked::ctx(isl_space_get_ctx(ptr));
17868 isl::checked::space space::add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const
17870 auto res = isl_space_add_named_tuple_id_ui(copy(), tuple_id.release(), dim);
17871 return manage(res);
17874 isl::checked::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
17876 return this->add_named_tuple(isl::checked::id(ctx(), tuple_id), dim);
17879 isl::checked::space space::add_param(isl::checked::id id) const
17881 auto res = isl_space_add_param_id(copy(), id.release());
17882 return manage(res);
17885 isl::checked::space space::add_param(const std::string &id) const
17887 return this->add_param(isl::checked::id(ctx(), id));
17890 isl::checked::space space::add_unnamed_tuple(unsigned int dim) const
17892 auto res = isl_space_add_unnamed_tuple_ui(copy(), dim);
17893 return manage(res);
17896 isl::checked::space space::curry() const
17898 auto res = isl_space_curry(copy());
17899 return manage(res);
17902 isl::checked::space space::domain() const
17904 auto res = isl_space_domain(copy());
17905 return manage(res);
17908 isl::checked::multi_aff space::domain_map_multi_aff() const
17910 auto res = isl_space_domain_map_multi_aff(copy());
17911 return manage(res);
17914 isl::checked::pw_multi_aff space::domain_map_pw_multi_aff() const
17916 auto res = isl_space_domain_map_pw_multi_aff(copy());
17917 return manage(res);
17920 isl::checked::space space::domain_reverse() const
17922 auto res = isl_space_domain_reverse(copy());
17923 return manage(res);
17926 isl::checked::id space::domain_tuple_id() const
17928 auto res = isl_space_get_domain_tuple_id(get());
17929 return manage(res);
17932 isl::checked::id space::get_domain_tuple_id() const
17934 return domain_tuple_id();
17937 isl::checked::space space::drop_all_params() const
17939 auto res = isl_space_drop_all_params(copy());
17940 return manage(res);
17943 isl::checked::space space::flatten_domain() const
17945 auto res = isl_space_flatten_domain(copy());
17946 return manage(res);
17949 isl::checked::space space::flatten_range() const
17951 auto res = isl_space_flatten_range(copy());
17952 return manage(res);
17955 boolean space::has_domain_tuple_id() const
17957 auto res = isl_space_has_domain_tuple_id(get());
17958 return manage(res);
17961 boolean space::has_range_tuple_id() const
17963 auto res = isl_space_has_range_tuple_id(get());
17964 return manage(res);
17967 isl::checked::multi_aff space::identity_multi_aff_on_domain() const
17969 auto res = isl_space_identity_multi_aff_on_domain(copy());
17970 return manage(res);
17973 isl::checked::multi_pw_aff space::identity_multi_pw_aff_on_domain() const
17975 auto res = isl_space_identity_multi_pw_aff_on_domain(copy());
17976 return manage(res);
17979 isl::checked::pw_multi_aff space::identity_pw_multi_aff_on_domain() const
17981 auto res = isl_space_identity_pw_multi_aff_on_domain(copy());
17982 return manage(res);
17985 boolean space::is_equal(const isl::checked::space &space2) const
17987 auto res = isl_space_is_equal(get(), space2.get());
17988 return manage(res);
17991 boolean space::is_wrapping() const
17993 auto res = isl_space_is_wrapping(get());
17994 return manage(res);
17997 isl::checked::space space::map_from_set() const
17999 auto res = isl_space_map_from_set(copy());
18000 return manage(res);
18003 isl::checked::multi_aff space::multi_aff(isl::checked::aff_list list) const
18005 auto res = isl_space_multi_aff(copy(), list.release());
18006 return manage(res);
18009 isl::checked::multi_aff space::multi_aff_on_domain(isl::checked::multi_val mv) const
18011 auto res = isl_space_multi_aff_on_domain_multi_val(copy(), mv.release());
18012 return manage(res);
18015 isl::checked::multi_id space::multi_id(isl::checked::id_list list) const
18017 auto res = isl_space_multi_id(copy(), list.release());
18018 return manage(res);
18021 isl::checked::multi_pw_aff space::multi_pw_aff(isl::checked::pw_aff_list list) const
18023 auto res = isl_space_multi_pw_aff(copy(), list.release());
18024 return manage(res);
18027 isl::checked::multi_union_pw_aff space::multi_union_pw_aff(isl::checked::union_pw_aff_list list) const
18029 auto res = isl_space_multi_union_pw_aff(copy(), list.release());
18030 return manage(res);
18033 isl::checked::multi_val space::multi_val(isl::checked::val_list list) const
18035 auto res = isl_space_multi_val(copy(), list.release());
18036 return manage(res);
18039 isl::checked::aff space::param_aff_on_domain(isl::checked::id id) const
18041 auto res = isl_space_param_aff_on_domain_id(copy(), id.release());
18042 return manage(res);
18045 isl::checked::aff space::param_aff_on_domain(const std::string &id) const
18047 return this->param_aff_on_domain(isl::checked::id(ctx(), id));
18050 isl::checked::space space::params() const
18052 auto res = isl_space_params(copy());
18053 return manage(res);
18056 isl::checked::space space::product(isl::checked::space right) const
18058 auto res = isl_space_product(copy(), right.release());
18059 return manage(res);
18062 isl::checked::space space::range() const
18064 auto res = isl_space_range(copy());
18065 return manage(res);
18068 isl::checked::multi_aff space::range_map_multi_aff() const
18070 auto res = isl_space_range_map_multi_aff(copy());
18071 return manage(res);
18074 isl::checked::pw_multi_aff space::range_map_pw_multi_aff() const
18076 auto res = isl_space_range_map_pw_multi_aff(copy());
18077 return manage(res);
18080 isl::checked::space space::range_reverse() const
18082 auto res = isl_space_range_reverse(copy());
18083 return manage(res);
18086 isl::checked::id space::range_tuple_id() const
18088 auto res = isl_space_get_range_tuple_id(get());
18089 return manage(res);
18092 isl::checked::id space::get_range_tuple_id() const
18094 return range_tuple_id();
18097 isl::checked::space space::reverse() const
18099 auto res = isl_space_reverse(copy());
18100 return manage(res);
18103 isl::checked::space space::set_domain_tuple(isl::checked::id id) const
18105 auto res = isl_space_set_domain_tuple_id(copy(), id.release());
18106 return manage(res);
18109 isl::checked::space space::set_domain_tuple(const std::string &id) const
18111 return this->set_domain_tuple(isl::checked::id(ctx(), id));
18114 isl::checked::space space::set_range_tuple(isl::checked::id id) const
18116 auto res = isl_space_set_range_tuple_id(copy(), id.release());
18117 return manage(res);
18120 isl::checked::space space::set_range_tuple(const std::string &id) const
18122 return this->set_range_tuple(isl::checked::id(ctx(), id));
18125 isl::checked::space space::uncurry() const
18127 auto res = isl_space_uncurry(copy());
18128 return manage(res);
18131 isl::checked::space space::unit(isl::checked::ctx ctx)
18133 auto res = isl_space_unit(ctx.release());
18134 return manage(res);
18137 isl::checked::map space::universe_map() const
18139 auto res = isl_space_universe_map(copy());
18140 return manage(res);
18143 isl::checked::set space::universe_set() const
18145 auto res = isl_space_universe_set(copy());
18146 return manage(res);
18149 isl::checked::space space::unwrap() const
18151 auto res = isl_space_unwrap(copy());
18152 return manage(res);
18155 isl::checked::space space::wrap() const
18157 auto res = isl_space_wrap(copy());
18158 return manage(res);
18161 isl::checked::space space::wrapped_reverse() const
18163 auto res = isl_space_wrapped_reverse(copy());
18164 return manage(res);
18167 isl::checked::aff space::zero_aff_on_domain() const
18169 auto res = isl_space_zero_aff_on_domain(copy());
18170 return manage(res);
18173 isl::checked::multi_aff space::zero_multi_aff() const
18175 auto res = isl_space_zero_multi_aff(copy());
18176 return manage(res);
18179 isl::checked::multi_pw_aff space::zero_multi_pw_aff() const
18181 auto res = isl_space_zero_multi_pw_aff(copy());
18182 return manage(res);
18185 isl::checked::multi_union_pw_aff space::zero_multi_union_pw_aff() const
18187 auto res = isl_space_zero_multi_union_pw_aff(copy());
18188 return manage(res);
18191 isl::checked::multi_val space::zero_multi_val() const
18193 auto res = isl_space_zero_multi_val(copy());
18194 return manage(res);
18197 inline std::ostream &operator<<(std::ostream &os, const space &obj)
18199 char *str = isl_space_to_str(obj.get());
18200 if (!str) {
18201 os.setstate(std::ios_base::badbit);
18202 return os;
18204 os << str;
18205 free(str);
18206 return os;
18209 // implementations for isl::union_access_info
18210 union_access_info manage(__isl_take isl_union_access_info *ptr) {
18211 return union_access_info(ptr);
18213 union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
18214 ptr = isl_union_access_info_copy(ptr);
18215 return union_access_info(ptr);
18218 union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
18219 : ptr(ptr) {}
18221 union_access_info::union_access_info()
18222 : ptr(nullptr) {}
18224 union_access_info::union_access_info(const union_access_info &obj)
18225 : ptr(nullptr)
18227 ptr = obj.copy();
18230 union_access_info::union_access_info(isl::checked::union_map sink)
18232 auto res = isl_union_access_info_from_sink(sink.release());
18233 ptr = res;
18236 union_access_info &union_access_info::operator=(union_access_info obj) {
18237 std::swap(this->ptr, obj.ptr);
18238 return *this;
18241 union_access_info::~union_access_info() {
18242 if (ptr)
18243 isl_union_access_info_free(ptr);
18246 __isl_give isl_union_access_info *union_access_info::copy() const & {
18247 return isl_union_access_info_copy(ptr);
18250 __isl_keep isl_union_access_info *union_access_info::get() const {
18251 return ptr;
18254 __isl_give isl_union_access_info *union_access_info::release() {
18255 isl_union_access_info *tmp = ptr;
18256 ptr = nullptr;
18257 return tmp;
18260 bool union_access_info::is_null() const {
18261 return ptr == nullptr;
18264 isl::checked::ctx union_access_info::ctx() const {
18265 return isl::checked::ctx(isl_union_access_info_get_ctx(ptr));
18268 isl::checked::union_flow union_access_info::compute_flow() const
18270 auto res = isl_union_access_info_compute_flow(copy());
18271 return manage(res);
18274 isl::checked::union_access_info union_access_info::set_kill(isl::checked::union_map kill) const
18276 auto res = isl_union_access_info_set_kill(copy(), kill.release());
18277 return manage(res);
18280 isl::checked::union_access_info union_access_info::set_may_source(isl::checked::union_map may_source) const
18282 auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
18283 return manage(res);
18286 isl::checked::union_access_info union_access_info::set_must_source(isl::checked::union_map must_source) const
18288 auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
18289 return manage(res);
18292 isl::checked::union_access_info union_access_info::set_schedule(isl::checked::schedule schedule) const
18294 auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
18295 return manage(res);
18298 isl::checked::union_access_info union_access_info::set_schedule_map(isl::checked::union_map schedule_map) const
18300 auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
18301 return manage(res);
18304 inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
18306 char *str = isl_union_access_info_to_str(obj.get());
18307 if (!str) {
18308 os.setstate(std::ios_base::badbit);
18309 return os;
18311 os << str;
18312 free(str);
18313 return os;
18316 // implementations for isl::union_flow
18317 union_flow manage(__isl_take isl_union_flow *ptr) {
18318 return union_flow(ptr);
18320 union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
18321 ptr = isl_union_flow_copy(ptr);
18322 return union_flow(ptr);
18325 union_flow::union_flow(__isl_take isl_union_flow *ptr)
18326 : ptr(ptr) {}
18328 union_flow::union_flow()
18329 : ptr(nullptr) {}
18331 union_flow::union_flow(const union_flow &obj)
18332 : ptr(nullptr)
18334 ptr = obj.copy();
18337 union_flow &union_flow::operator=(union_flow obj) {
18338 std::swap(this->ptr, obj.ptr);
18339 return *this;
18342 union_flow::~union_flow() {
18343 if (ptr)
18344 isl_union_flow_free(ptr);
18347 __isl_give isl_union_flow *union_flow::copy() const & {
18348 return isl_union_flow_copy(ptr);
18351 __isl_keep isl_union_flow *union_flow::get() const {
18352 return ptr;
18355 __isl_give isl_union_flow *union_flow::release() {
18356 isl_union_flow *tmp = ptr;
18357 ptr = nullptr;
18358 return tmp;
18361 bool union_flow::is_null() const {
18362 return ptr == nullptr;
18365 isl::checked::ctx union_flow::ctx() const {
18366 return isl::checked::ctx(isl_union_flow_get_ctx(ptr));
18369 isl::checked::union_map union_flow::full_may_dependence() const
18371 auto res = isl_union_flow_get_full_may_dependence(get());
18372 return manage(res);
18375 isl::checked::union_map union_flow::get_full_may_dependence() const
18377 return full_may_dependence();
18380 isl::checked::union_map union_flow::full_must_dependence() const
18382 auto res = isl_union_flow_get_full_must_dependence(get());
18383 return manage(res);
18386 isl::checked::union_map union_flow::get_full_must_dependence() const
18388 return full_must_dependence();
18391 isl::checked::union_map union_flow::may_dependence() const
18393 auto res = isl_union_flow_get_may_dependence(get());
18394 return manage(res);
18397 isl::checked::union_map union_flow::get_may_dependence() const
18399 return may_dependence();
18402 isl::checked::union_map union_flow::may_no_source() const
18404 auto res = isl_union_flow_get_may_no_source(get());
18405 return manage(res);
18408 isl::checked::union_map union_flow::get_may_no_source() const
18410 return may_no_source();
18413 isl::checked::union_map union_flow::must_dependence() const
18415 auto res = isl_union_flow_get_must_dependence(get());
18416 return manage(res);
18419 isl::checked::union_map union_flow::get_must_dependence() const
18421 return must_dependence();
18424 isl::checked::union_map union_flow::must_no_source() const
18426 auto res = isl_union_flow_get_must_no_source(get());
18427 return manage(res);
18430 isl::checked::union_map union_flow::get_must_no_source() const
18432 return must_no_source();
18435 inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
18437 char *str = isl_union_flow_to_str(obj.get());
18438 if (!str) {
18439 os.setstate(std::ios_base::badbit);
18440 return os;
18442 os << str;
18443 free(str);
18444 return os;
18447 // implementations for isl::union_map
18448 union_map manage(__isl_take isl_union_map *ptr) {
18449 return union_map(ptr);
18451 union_map manage_copy(__isl_keep isl_union_map *ptr) {
18452 ptr = isl_union_map_copy(ptr);
18453 return union_map(ptr);
18456 union_map::union_map(__isl_take isl_union_map *ptr)
18457 : ptr(ptr) {}
18459 union_map::union_map()
18460 : ptr(nullptr) {}
18462 union_map::union_map(const union_map &obj)
18463 : ptr(nullptr)
18465 ptr = obj.copy();
18468 union_map::union_map(isl::checked::basic_map bmap)
18470 auto res = isl_union_map_from_basic_map(bmap.release());
18471 ptr = res;
18474 union_map::union_map(isl::checked::map map)
18476 auto res = isl_union_map_from_map(map.release());
18477 ptr = res;
18480 union_map::union_map(isl::checked::ctx ctx, const std::string &str)
18482 auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
18483 ptr = res;
18486 union_map &union_map::operator=(union_map obj) {
18487 std::swap(this->ptr, obj.ptr);
18488 return *this;
18491 union_map::~union_map() {
18492 if (ptr)
18493 isl_union_map_free(ptr);
18496 __isl_give isl_union_map *union_map::copy() const & {
18497 return isl_union_map_copy(ptr);
18500 __isl_keep isl_union_map *union_map::get() const {
18501 return ptr;
18504 __isl_give isl_union_map *union_map::release() {
18505 isl_union_map *tmp = ptr;
18506 ptr = nullptr;
18507 return tmp;
18510 bool union_map::is_null() const {
18511 return ptr == nullptr;
18514 isl::checked::ctx union_map::ctx() const {
18515 return isl::checked::ctx(isl_union_map_get_ctx(ptr));
18518 isl::checked::union_map union_map::affine_hull() const
18520 auto res = isl_union_map_affine_hull(copy());
18521 return manage(res);
18524 isl::checked::union_map union_map::apply_domain(isl::checked::union_map umap2) const
18526 auto res = isl_union_map_apply_domain(copy(), umap2.release());
18527 return manage(res);
18530 isl::checked::union_map union_map::apply_range(isl::checked::union_map umap2) const
18532 auto res = isl_union_map_apply_range(copy(), umap2.release());
18533 return manage(res);
18536 isl::checked::map union_map::as_map() const
18538 auto res = isl_union_map_as_map(copy());
18539 return manage(res);
18542 isl::checked::multi_union_pw_aff union_map::as_multi_union_pw_aff() const
18544 auto res = isl_union_map_as_multi_union_pw_aff(copy());
18545 return manage(res);
18548 isl::checked::union_pw_multi_aff union_map::as_union_pw_multi_aff() const
18550 auto res = isl_union_map_as_union_pw_multi_aff(copy());
18551 return manage(res);
18554 isl::checked::union_set union_map::bind_range(isl::checked::multi_id tuple) const
18556 auto res = isl_union_map_bind_range(copy(), tuple.release());
18557 return manage(res);
18560 isl::checked::union_map union_map::coalesce() const
18562 auto res = isl_union_map_coalesce(copy());
18563 return manage(res);
18566 isl::checked::union_map union_map::compute_divs() const
18568 auto res = isl_union_map_compute_divs(copy());
18569 return manage(res);
18572 isl::checked::union_map union_map::curry() const
18574 auto res = isl_union_map_curry(copy());
18575 return manage(res);
18578 isl::checked::union_set union_map::deltas() const
18580 auto res = isl_union_map_deltas(copy());
18581 return manage(res);
18584 isl::checked::union_map union_map::detect_equalities() const
18586 auto res = isl_union_map_detect_equalities(copy());
18587 return manage(res);
18590 isl::checked::union_set union_map::domain() const
18592 auto res = isl_union_map_domain(copy());
18593 return manage(res);
18596 isl::checked::union_map union_map::domain_factor_domain() const
18598 auto res = isl_union_map_domain_factor_domain(copy());
18599 return manage(res);
18602 isl::checked::union_map union_map::domain_factor_range() const
18604 auto res = isl_union_map_domain_factor_range(copy());
18605 return manage(res);
18608 isl::checked::union_map union_map::domain_map() const
18610 auto res = isl_union_map_domain_map(copy());
18611 return manage(res);
18614 isl::checked::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
18616 auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
18617 return manage(res);
18620 isl::checked::union_map union_map::domain_product(isl::checked::union_map umap2) const
18622 auto res = isl_union_map_domain_product(copy(), umap2.release());
18623 return manage(res);
18626 isl::checked::union_map union_map::domain_reverse() const
18628 auto res = isl_union_map_domain_reverse(copy());
18629 return manage(res);
18632 isl::checked::union_map union_map::drop_unused_params() const
18634 auto res = isl_union_map_drop_unused_params(copy());
18635 return manage(res);
18638 isl::checked::union_map union_map::empty(isl::checked::ctx ctx)
18640 auto res = isl_union_map_empty_ctx(ctx.release());
18641 return manage(res);
18644 isl::checked::union_map union_map::eq_at(isl::checked::multi_union_pw_aff mupa) const
18646 auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
18647 return manage(res);
18650 boolean union_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
18652 struct test_data {
18653 std::function<boolean(isl::checked::map)> func;
18654 } test_data = { test };
18655 auto test_lambda = [](isl_map *arg_0, void *arg_1) -> isl_bool {
18656 auto *data = static_cast<struct test_data *>(arg_1);
18657 auto ret = (data->func)(manage_copy(arg_0));
18658 return ret.release();
18660 auto res = isl_union_map_every_map(get(), test_lambda, &test_data);
18661 return manage(res);
18664 isl::checked::map union_map::extract_map(isl::checked::space space) const
18666 auto res = isl_union_map_extract_map(get(), space.release());
18667 return manage(res);
18670 isl::checked::union_map union_map::factor_domain() const
18672 auto res = isl_union_map_factor_domain(copy());
18673 return manage(res);
18676 isl::checked::union_map union_map::factor_range() const
18678 auto res = isl_union_map_factor_range(copy());
18679 return manage(res);
18682 isl::checked::union_map union_map::fixed_power(isl::checked::val exp) const
18684 auto res = isl_union_map_fixed_power_val(copy(), exp.release());
18685 return manage(res);
18688 isl::checked::union_map union_map::fixed_power(long exp) const
18690 return this->fixed_power(isl::checked::val(ctx(), exp));
18693 stat union_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
18695 struct fn_data {
18696 std::function<stat(isl::checked::map)> func;
18697 } fn_data = { fn };
18698 auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
18699 auto *data = static_cast<struct fn_data *>(arg_1);
18700 auto ret = (data->func)(manage(arg_0));
18701 return ret.release();
18703 auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
18704 return manage(res);
18707 isl::checked::union_map union_map::from(isl::checked::multi_union_pw_aff mupa)
18709 auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
18710 return manage(res);
18713 isl::checked::union_map union_map::from(isl::checked::union_pw_multi_aff upma)
18715 auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
18716 return manage(res);
18719 isl::checked::union_map union_map::from_domain(isl::checked::union_set uset)
18721 auto res = isl_union_map_from_domain(uset.release());
18722 return manage(res);
18725 isl::checked::union_map union_map::from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range)
18727 auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
18728 return manage(res);
18731 isl::checked::union_map union_map::from_range(isl::checked::union_set uset)
18733 auto res = isl_union_map_from_range(uset.release());
18734 return manage(res);
18737 isl::checked::union_map union_map::gist(isl::checked::union_map context) const
18739 auto res = isl_union_map_gist(copy(), context.release());
18740 return manage(res);
18743 isl::checked::union_map union_map::gist_domain(isl::checked::union_set uset) const
18745 auto res = isl_union_map_gist_domain(copy(), uset.release());
18746 return manage(res);
18749 isl::checked::union_map union_map::gist_params(isl::checked::set set) const
18751 auto res = isl_union_map_gist_params(copy(), set.release());
18752 return manage(res);
18755 isl::checked::union_map union_map::gist_range(isl::checked::union_set uset) const
18757 auto res = isl_union_map_gist_range(copy(), uset.release());
18758 return manage(res);
18761 isl::checked::union_map union_map::intersect(isl::checked::union_map umap2) const
18763 auto res = isl_union_map_intersect(copy(), umap2.release());
18764 return manage(res);
18767 isl::checked::union_map union_map::intersect_domain(isl::checked::space space) const
18769 auto res = isl_union_map_intersect_domain_space(copy(), space.release());
18770 return manage(res);
18773 isl::checked::union_map union_map::intersect_domain(isl::checked::union_set uset) const
18775 auto res = isl_union_map_intersect_domain_union_set(copy(), uset.release());
18776 return manage(res);
18779 isl::checked::union_map union_map::intersect_domain_factor_domain(isl::checked::union_map factor) const
18781 auto res = isl_union_map_intersect_domain_factor_domain(copy(), factor.release());
18782 return manage(res);
18785 isl::checked::union_map union_map::intersect_domain_factor_range(isl::checked::union_map factor) const
18787 auto res = isl_union_map_intersect_domain_factor_range(copy(), factor.release());
18788 return manage(res);
18791 isl::checked::union_map union_map::intersect_domain_wrapped_domain(isl::checked::union_set domain) const
18793 auto res = isl_union_map_intersect_domain_wrapped_domain_union_set(copy(), domain.release());
18794 return manage(res);
18797 isl::checked::union_map union_map::intersect_params(isl::checked::set set) const
18799 auto res = isl_union_map_intersect_params(copy(), set.release());
18800 return manage(res);
18803 isl::checked::union_map union_map::intersect_range(isl::checked::space space) const
18805 auto res = isl_union_map_intersect_range_space(copy(), space.release());
18806 return manage(res);
18809 isl::checked::union_map union_map::intersect_range(isl::checked::union_set uset) const
18811 auto res = isl_union_map_intersect_range_union_set(copy(), uset.release());
18812 return manage(res);
18815 isl::checked::union_map union_map::intersect_range_factor_domain(isl::checked::union_map factor) const
18817 auto res = isl_union_map_intersect_range_factor_domain(copy(), factor.release());
18818 return manage(res);
18821 isl::checked::union_map union_map::intersect_range_factor_range(isl::checked::union_map factor) const
18823 auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
18824 return manage(res);
18827 isl::checked::union_map union_map::intersect_range_wrapped_domain(isl::checked::union_set domain) const
18829 auto res = isl_union_map_intersect_range_wrapped_domain_union_set(copy(), domain.release());
18830 return manage(res);
18833 boolean union_map::is_bijective() const
18835 auto res = isl_union_map_is_bijective(get());
18836 return manage(res);
18839 boolean union_map::is_disjoint(const isl::checked::union_map &umap2) const
18841 auto res = isl_union_map_is_disjoint(get(), umap2.get());
18842 return manage(res);
18845 boolean union_map::is_empty() const
18847 auto res = isl_union_map_is_empty(get());
18848 return manage(res);
18851 boolean union_map::is_equal(const isl::checked::union_map &umap2) const
18853 auto res = isl_union_map_is_equal(get(), umap2.get());
18854 return manage(res);
18857 boolean union_map::is_injective() const
18859 auto res = isl_union_map_is_injective(get());
18860 return manage(res);
18863 boolean union_map::is_single_valued() const
18865 auto res = isl_union_map_is_single_valued(get());
18866 return manage(res);
18869 boolean union_map::is_strict_subset(const isl::checked::union_map &umap2) const
18871 auto res = isl_union_map_is_strict_subset(get(), umap2.get());
18872 return manage(res);
18875 boolean union_map::is_subset(const isl::checked::union_map &umap2) const
18877 auto res = isl_union_map_is_subset(get(), umap2.get());
18878 return manage(res);
18881 boolean union_map::isa_map() const
18883 auto res = isl_union_map_isa_map(get());
18884 return manage(res);
18887 isl::checked::union_map union_map::lexmax() const
18889 auto res = isl_union_map_lexmax(copy());
18890 return manage(res);
18893 isl::checked::union_map union_map::lexmin() const
18895 auto res = isl_union_map_lexmin(copy());
18896 return manage(res);
18899 isl::checked::map_list union_map::map_list() const
18901 auto res = isl_union_map_get_map_list(get());
18902 return manage(res);
18905 isl::checked::map_list union_map::get_map_list() const
18907 return map_list();
18910 isl::checked::set union_map::params() const
18912 auto res = isl_union_map_params(copy());
18913 return manage(res);
18916 isl::checked::union_map union_map::polyhedral_hull() const
18918 auto res = isl_union_map_polyhedral_hull(copy());
18919 return manage(res);
18922 isl::checked::union_map union_map::preimage_domain(isl::checked::multi_aff ma) const
18924 auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
18925 return manage(res);
18928 isl::checked::union_map union_map::preimage_domain(isl::checked::multi_pw_aff mpa) const
18930 auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
18931 return manage(res);
18934 isl::checked::union_map union_map::preimage_domain(isl::checked::pw_multi_aff pma) const
18936 auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
18937 return manage(res);
18940 isl::checked::union_map union_map::preimage_domain(isl::checked::union_pw_multi_aff upma) const
18942 auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
18943 return manage(res);
18946 isl::checked::union_map union_map::preimage_range(isl::checked::multi_aff ma) const
18948 auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
18949 return manage(res);
18952 isl::checked::union_map union_map::preimage_range(isl::checked::pw_multi_aff pma) const
18954 auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
18955 return manage(res);
18958 isl::checked::union_map union_map::preimage_range(isl::checked::union_pw_multi_aff upma) const
18960 auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
18961 return manage(res);
18964 isl::checked::union_map union_map::product(isl::checked::union_map umap2) const
18966 auto res = isl_union_map_product(copy(), umap2.release());
18967 return manage(res);
18970 isl::checked::union_map union_map::project_out_all_params() const
18972 auto res = isl_union_map_project_out_all_params(copy());
18973 return manage(res);
18976 isl::checked::union_map union_map::project_out_param(isl::checked::id id) const
18978 auto res = isl_union_map_project_out_param_id(copy(), id.release());
18979 return manage(res);
18982 isl::checked::union_map union_map::project_out_param(const std::string &id) const
18984 return this->project_out_param(isl::checked::id(ctx(), id));
18987 isl::checked::union_map union_map::project_out_param(isl::checked::id_list list) const
18989 auto res = isl_union_map_project_out_param_id_list(copy(), list.release());
18990 return manage(res);
18993 isl::checked::union_set union_map::range() const
18995 auto res = isl_union_map_range(copy());
18996 return manage(res);
18999 isl::checked::union_map union_map::range_factor_domain() const
19001 auto res = isl_union_map_range_factor_domain(copy());
19002 return manage(res);
19005 isl::checked::union_map union_map::range_factor_range() const
19007 auto res = isl_union_map_range_factor_range(copy());
19008 return manage(res);
19011 isl::checked::union_map union_map::range_map() const
19013 auto res = isl_union_map_range_map(copy());
19014 return manage(res);
19017 isl::checked::union_map union_map::range_product(isl::checked::union_map umap2) const
19019 auto res = isl_union_map_range_product(copy(), umap2.release());
19020 return manage(res);
19023 isl::checked::union_map union_map::range_reverse() const
19025 auto res = isl_union_map_range_reverse(copy());
19026 return manage(res);
19029 isl::checked::union_map union_map::reverse() const
19031 auto res = isl_union_map_reverse(copy());
19032 return manage(res);
19035 isl::checked::space union_map::space() const
19037 auto res = isl_union_map_get_space(get());
19038 return manage(res);
19041 isl::checked::space union_map::get_space() const
19043 return space();
19046 isl::checked::union_map union_map::subtract(isl::checked::union_map umap2) const
19048 auto res = isl_union_map_subtract(copy(), umap2.release());
19049 return manage(res);
19052 isl::checked::union_map union_map::subtract_domain(isl::checked::union_set dom) const
19054 auto res = isl_union_map_subtract_domain(copy(), dom.release());
19055 return manage(res);
19058 isl::checked::union_map union_map::subtract_range(isl::checked::union_set dom) const
19060 auto res = isl_union_map_subtract_range(copy(), dom.release());
19061 return manage(res);
19064 isl::checked::union_map union_map::uncurry() const
19066 auto res = isl_union_map_uncurry(copy());
19067 return manage(res);
19070 isl::checked::union_map union_map::unite(isl::checked::union_map umap2) const
19072 auto res = isl_union_map_union(copy(), umap2.release());
19073 return manage(res);
19076 isl::checked::union_map union_map::universe() const
19078 auto res = isl_union_map_universe(copy());
19079 return manage(res);
19082 isl::checked::union_set union_map::wrap() const
19084 auto res = isl_union_map_wrap(copy());
19085 return manage(res);
19088 isl::checked::union_map union_map::zip() const
19090 auto res = isl_union_map_zip(copy());
19091 return manage(res);
19094 inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
19096 char *str = isl_union_map_to_str(obj.get());
19097 if (!str) {
19098 os.setstate(std::ios_base::badbit);
19099 return os;
19101 os << str;
19102 free(str);
19103 return os;
19106 // implementations for isl::union_pw_aff
19107 union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
19108 return union_pw_aff(ptr);
19110 union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
19111 ptr = isl_union_pw_aff_copy(ptr);
19112 return union_pw_aff(ptr);
19115 union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
19116 : ptr(ptr) {}
19118 union_pw_aff::union_pw_aff()
19119 : ptr(nullptr) {}
19121 union_pw_aff::union_pw_aff(const union_pw_aff &obj)
19122 : ptr(nullptr)
19124 ptr = obj.copy();
19127 union_pw_aff::union_pw_aff(isl::checked::aff aff)
19129 auto res = isl_union_pw_aff_from_aff(aff.release());
19130 ptr = res;
19133 union_pw_aff::union_pw_aff(isl::checked::pw_aff pa)
19135 auto res = isl_union_pw_aff_from_pw_aff(pa.release());
19136 ptr = res;
19139 union_pw_aff::union_pw_aff(isl::checked::ctx ctx, const std::string &str)
19141 auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
19142 ptr = res;
19145 union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
19146 std::swap(this->ptr, obj.ptr);
19147 return *this;
19150 union_pw_aff::~union_pw_aff() {
19151 if (ptr)
19152 isl_union_pw_aff_free(ptr);
19155 __isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
19156 return isl_union_pw_aff_copy(ptr);
19159 __isl_keep isl_union_pw_aff *union_pw_aff::get() const {
19160 return ptr;
19163 __isl_give isl_union_pw_aff *union_pw_aff::release() {
19164 isl_union_pw_aff *tmp = ptr;
19165 ptr = nullptr;
19166 return tmp;
19169 bool union_pw_aff::is_null() const {
19170 return ptr == nullptr;
19173 isl::checked::ctx union_pw_aff::ctx() const {
19174 return isl::checked::ctx(isl_union_pw_aff_get_ctx(ptr));
19177 isl::checked::multi_union_pw_aff union_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
19179 return isl::checked::multi_union_pw_aff(*this).add(multi2);
19182 isl::checked::union_pw_aff union_pw_aff::add(isl::checked::union_pw_aff upa2) const
19184 auto res = isl_union_pw_aff_add(copy(), upa2.release());
19185 return manage(res);
19188 isl::checked::union_pw_multi_aff union_pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
19190 return isl::checked::union_pw_multi_aff(*this).add(upma2);
19193 isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::aff &upa2) const
19195 return this->add(isl::checked::union_pw_aff(upa2));
19198 isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::pw_aff &upa2) const
19200 return this->add(isl::checked::union_pw_aff(upa2));
19203 isl::checked::union_pw_multi_aff union_pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
19205 return isl::checked::union_pw_multi_aff(*this).apply(upma2);
19208 isl::checked::multi_union_pw_aff union_pw_aff::as_multi_union_pw_aff() const
19210 return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
19213 isl::checked::pw_multi_aff union_pw_aff::as_pw_multi_aff() const
19215 return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
19218 isl::checked::union_map union_pw_aff::as_union_map() const
19220 return isl::checked::union_pw_multi_aff(*this).as_union_map();
19223 isl::checked::union_pw_aff union_pw_aff::at(int pos) const
19225 return isl::checked::multi_union_pw_aff(*this).at(pos);
19228 isl::checked::union_set union_pw_aff::bind(const isl::checked::multi_id &tuple) const
19230 return isl::checked::multi_union_pw_aff(*this).bind(tuple);
19233 isl::checked::union_set union_pw_aff::bind(isl::checked::id id) const
19235 auto res = isl_union_pw_aff_bind_id(copy(), id.release());
19236 return manage(res);
19239 isl::checked::union_set union_pw_aff::bind(const std::string &id) const
19241 return this->bind(isl::checked::id(ctx(), id));
19244 isl::checked::union_pw_aff union_pw_aff::coalesce() const
19246 auto res = isl_union_pw_aff_coalesce(copy());
19247 return manage(res);
19250 isl::checked::union_set union_pw_aff::domain() const
19252 auto res = isl_union_pw_aff_domain(copy());
19253 return manage(res);
19256 isl::checked::union_pw_aff union_pw_aff::drop_unused_params() const
19258 auto res = isl_union_pw_aff_drop_unused_params(copy());
19259 return manage(res);
19262 isl::checked::pw_multi_aff union_pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
19264 return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
19267 isl::checked::multi_union_pw_aff union_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
19269 return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
19272 isl::checked::union_pw_multi_aff union_pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
19274 return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
19277 isl::checked::union_pw_aff union_pw_aff::gist(isl::checked::union_set context) const
19279 auto res = isl_union_pw_aff_gist(copy(), context.release());
19280 return manage(res);
19283 isl::checked::multi_union_pw_aff union_pw_aff::gist_params(const isl::checked::set &context) const
19285 return isl::checked::multi_union_pw_aff(*this).gist_params(context);
19288 boolean union_pw_aff::has_range_tuple_id() const
19290 return isl::checked::multi_union_pw_aff(*this).has_range_tuple_id();
19293 isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::space space) const
19295 auto res = isl_union_pw_aff_intersect_domain_space(copy(), space.release());
19296 return manage(res);
19299 isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::union_set uset) const
19301 auto res = isl_union_pw_aff_intersect_domain_union_set(copy(), uset.release());
19302 return manage(res);
19305 isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
19307 auto res = isl_union_pw_aff_intersect_domain_wrapped_domain(copy(), uset.release());
19308 return manage(res);
19311 isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
19313 auto res = isl_union_pw_aff_intersect_domain_wrapped_range(copy(), uset.release());
19314 return manage(res);
19317 isl::checked::union_pw_aff union_pw_aff::intersect_params(isl::checked::set set) const
19319 auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
19320 return manage(res);
19323 boolean union_pw_aff::involves_locals() const
19325 return isl::checked::union_pw_multi_aff(*this).involves_locals();
19328 boolean union_pw_aff::involves_nan() const
19330 return isl::checked::multi_union_pw_aff(*this).involves_nan();
19333 boolean union_pw_aff::isa_pw_multi_aff() const
19335 return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
19338 isl::checked::union_pw_aff_list union_pw_aff::list() const
19340 return isl::checked::multi_union_pw_aff(*this).list();
19343 isl::checked::multi_union_pw_aff union_pw_aff::neg() const
19345 return isl::checked::multi_union_pw_aff(*this).neg();
19348 boolean union_pw_aff::plain_is_empty() const
19350 return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
19353 boolean union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
19355 return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
19358 boolean union_pw_aff::plain_is_equal(const isl::checked::union_pw_aff &upa2) const
19360 auto res = isl_union_pw_aff_plain_is_equal(get(), upa2.get());
19361 return manage(res);
19364 boolean union_pw_aff::plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const
19366 return isl::checked::union_pw_multi_aff(*this).plain_is_equal(upma2);
19369 boolean union_pw_aff::plain_is_equal(const isl::checked::aff &upa2) const
19371 return this->plain_is_equal(isl::checked::union_pw_aff(upa2));
19374 boolean union_pw_aff::plain_is_equal(const isl::checked::pw_aff &upa2) const
19376 return this->plain_is_equal(isl::checked::union_pw_aff(upa2));
19379 isl::checked::union_pw_multi_aff union_pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
19381 return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
19384 isl::checked::union_pw_aff union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
19386 auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
19387 return manage(res);
19390 isl::checked::pw_multi_aff_list union_pw_aff::pw_multi_aff_list() const
19392 return isl::checked::union_pw_multi_aff(*this).pw_multi_aff_list();
19395 isl::checked::union_pw_multi_aff union_pw_aff::range_factor_domain() const
19397 return isl::checked::union_pw_multi_aff(*this).range_factor_domain();
19400 isl::checked::union_pw_multi_aff union_pw_aff::range_factor_range() const
19402 return isl::checked::union_pw_multi_aff(*this).range_factor_range();
19405 isl::checked::multi_union_pw_aff union_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
19407 return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
19410 isl::checked::union_pw_multi_aff union_pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
19412 return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
19415 isl::checked::id union_pw_aff::range_tuple_id() const
19417 return isl::checked::multi_union_pw_aff(*this).range_tuple_id();
19420 isl::checked::multi_union_pw_aff union_pw_aff::reset_range_tuple_id() const
19422 return isl::checked::multi_union_pw_aff(*this).reset_range_tuple_id();
19425 isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::multi_val &mv) const
19427 return isl::checked::multi_union_pw_aff(*this).scale(mv);
19430 isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::val &v) const
19432 return isl::checked::multi_union_pw_aff(*this).scale(v);
19435 isl::checked::multi_union_pw_aff union_pw_aff::scale(long v) const
19437 return this->scale(isl::checked::val(ctx(), v));
19440 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::multi_val &mv) const
19442 return isl::checked::multi_union_pw_aff(*this).scale_down(mv);
19445 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::val &v) const
19447 return isl::checked::multi_union_pw_aff(*this).scale_down(v);
19450 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(long v) const
19452 return this->scale_down(isl::checked::val(ctx(), v));
19455 isl::checked::multi_union_pw_aff union_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
19457 return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
19460 isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const isl::checked::id &id) const
19462 return isl::checked::multi_union_pw_aff(*this).set_range_tuple(id);
19465 isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const std::string &id) const
19467 return this->set_range_tuple(isl::checked::id(ctx(), id));
19470 class size union_pw_aff::size() const
19472 return isl::checked::multi_union_pw_aff(*this).size();
19475 isl::checked::space union_pw_aff::space() const
19477 auto res = isl_union_pw_aff_get_space(get());
19478 return manage(res);
19481 isl::checked::space union_pw_aff::get_space() const
19483 return space();
19486 isl::checked::multi_union_pw_aff union_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
19488 return isl::checked::multi_union_pw_aff(*this).sub(multi2);
19491 isl::checked::union_pw_aff union_pw_aff::sub(isl::checked::union_pw_aff upa2) const
19493 auto res = isl_union_pw_aff_sub(copy(), upa2.release());
19494 return manage(res);
19497 isl::checked::union_pw_multi_aff union_pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
19499 return isl::checked::union_pw_multi_aff(*this).sub(upma2);
19502 isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::aff &upa2) const
19504 return this->sub(isl::checked::union_pw_aff(upa2));
19507 isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::pw_aff &upa2) const
19509 return this->sub(isl::checked::union_pw_aff(upa2));
19512 isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::space space) const
19514 auto res = isl_union_pw_aff_subtract_domain_space(copy(), space.release());
19515 return manage(res);
19518 isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::union_set uset) const
19520 auto res = isl_union_pw_aff_subtract_domain_union_set(copy(), uset.release());
19521 return manage(res);
19524 isl::checked::union_pw_aff_list union_pw_aff::to_list() const
19526 auto res = isl_union_pw_aff_to_list(copy());
19527 return manage(res);
19530 isl::checked::multi_union_pw_aff union_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
19532 return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
19535 isl::checked::union_pw_aff union_pw_aff::union_add(isl::checked::union_pw_aff upa2) const
19537 auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
19538 return manage(res);
19541 isl::checked::union_pw_multi_aff union_pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
19543 return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
19546 isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::aff &upa2) const
19548 return this->union_add(isl::checked::union_pw_aff(upa2));
19551 isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::pw_aff &upa2) const
19553 return this->union_add(isl::checked::union_pw_aff(upa2));
19556 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
19558 char *str = isl_union_pw_aff_to_str(obj.get());
19559 if (!str) {
19560 os.setstate(std::ios_base::badbit);
19561 return os;
19563 os << str;
19564 free(str);
19565 return os;
19568 // implementations for isl::union_pw_aff_list
19569 union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
19570 return union_pw_aff_list(ptr);
19572 union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
19573 ptr = isl_union_pw_aff_list_copy(ptr);
19574 return union_pw_aff_list(ptr);
19577 union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
19578 : ptr(ptr) {}
19580 union_pw_aff_list::union_pw_aff_list()
19581 : ptr(nullptr) {}
19583 union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
19584 : ptr(nullptr)
19586 ptr = obj.copy();
19589 union_pw_aff_list::union_pw_aff_list(isl::checked::ctx ctx, int n)
19591 auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
19592 ptr = res;
19595 union_pw_aff_list::union_pw_aff_list(isl::checked::union_pw_aff el)
19597 auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
19598 ptr = res;
19601 union_pw_aff_list::union_pw_aff_list(isl::checked::ctx ctx, const std::string &str)
19603 auto res = isl_union_pw_aff_list_read_from_str(ctx.release(), str.c_str());
19604 ptr = res;
19607 union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
19608 std::swap(this->ptr, obj.ptr);
19609 return *this;
19612 union_pw_aff_list::~union_pw_aff_list() {
19613 if (ptr)
19614 isl_union_pw_aff_list_free(ptr);
19617 __isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
19618 return isl_union_pw_aff_list_copy(ptr);
19621 __isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
19622 return ptr;
19625 __isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
19626 isl_union_pw_aff_list *tmp = ptr;
19627 ptr = nullptr;
19628 return tmp;
19631 bool union_pw_aff_list::is_null() const {
19632 return ptr == nullptr;
19635 isl::checked::ctx union_pw_aff_list::ctx() const {
19636 return isl::checked::ctx(isl_union_pw_aff_list_get_ctx(ptr));
19639 isl::checked::union_pw_aff_list union_pw_aff_list::add(isl::checked::union_pw_aff el) const
19641 auto res = isl_union_pw_aff_list_add(copy(), el.release());
19642 return manage(res);
19645 isl::checked::union_pw_aff union_pw_aff_list::at(int index) const
19647 auto res = isl_union_pw_aff_list_get_at(get(), index);
19648 return manage(res);
19651 isl::checked::union_pw_aff union_pw_aff_list::get_at(int index) const
19653 return at(index);
19656 isl::checked::union_pw_aff_list union_pw_aff_list::clear() const
19658 auto res = isl_union_pw_aff_list_clear(copy());
19659 return manage(res);
19662 isl::checked::union_pw_aff_list union_pw_aff_list::concat(isl::checked::union_pw_aff_list list2) const
19664 auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
19665 return manage(res);
19668 isl::checked::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
19670 auto res = isl_union_pw_aff_list_drop(copy(), first, n);
19671 return manage(res);
19674 stat union_pw_aff_list::foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const
19676 struct fn_data {
19677 std::function<stat(isl::checked::union_pw_aff)> func;
19678 } fn_data = { fn };
19679 auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
19680 auto *data = static_cast<struct fn_data *>(arg_1);
19681 auto ret = (data->func)(manage(arg_0));
19682 return ret.release();
19684 auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
19685 return manage(res);
19688 stat union_pw_aff_list::foreach_scc(const std::function<boolean(isl::checked::union_pw_aff, isl::checked::union_pw_aff)> &follows, const std::function<stat(isl::checked::union_pw_aff_list)> &fn) const
19690 struct follows_data {
19691 std::function<boolean(isl::checked::union_pw_aff, isl::checked::union_pw_aff)> func;
19692 } follows_data = { follows };
19693 auto follows_lambda = [](isl_union_pw_aff *arg_0, isl_union_pw_aff *arg_1, void *arg_2) -> isl_bool {
19694 auto *data = static_cast<struct follows_data *>(arg_2);
19695 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
19696 return ret.release();
19698 struct fn_data {
19699 std::function<stat(isl::checked::union_pw_aff_list)> func;
19700 } fn_data = { fn };
19701 auto fn_lambda = [](isl_union_pw_aff_list *arg_0, void *arg_1) -> isl_stat {
19702 auto *data = static_cast<struct fn_data *>(arg_1);
19703 auto ret = (data->func)(manage(arg_0));
19704 return ret.release();
19706 auto res = isl_union_pw_aff_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
19707 return manage(res);
19710 isl::checked::union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, isl::checked::union_pw_aff el) const
19712 auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
19713 return manage(res);
19716 isl::checked::union_pw_aff_list union_pw_aff_list::set_at(int index, isl::checked::union_pw_aff el) const
19718 auto res = isl_union_pw_aff_list_set_at(copy(), index, el.release());
19719 return manage(res);
19722 class size union_pw_aff_list::size() const
19724 auto res = isl_union_pw_aff_list_size(get());
19725 return manage(res);
19728 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
19730 char *str = isl_union_pw_aff_list_to_str(obj.get());
19731 if (!str) {
19732 os.setstate(std::ios_base::badbit);
19733 return os;
19735 os << str;
19736 free(str);
19737 return os;
19740 // implementations for isl::union_pw_multi_aff
19741 union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
19742 return union_pw_multi_aff(ptr);
19744 union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
19745 ptr = isl_union_pw_multi_aff_copy(ptr);
19746 return union_pw_multi_aff(ptr);
19749 union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
19750 : ptr(ptr) {}
19752 union_pw_multi_aff::union_pw_multi_aff()
19753 : ptr(nullptr) {}
19755 union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
19756 : ptr(nullptr)
19758 ptr = obj.copy();
19761 union_pw_multi_aff::union_pw_multi_aff(isl::checked::multi_aff ma)
19763 auto res = isl_union_pw_multi_aff_from_multi_aff(ma.release());
19764 ptr = res;
19767 union_pw_multi_aff::union_pw_multi_aff(isl::checked::pw_multi_aff pma)
19769 auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
19770 ptr = res;
19773 union_pw_multi_aff::union_pw_multi_aff(isl::checked::union_pw_aff upa)
19775 auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
19776 ptr = res;
19779 union_pw_multi_aff::union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
19781 auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
19782 ptr = res;
19785 union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
19786 std::swap(this->ptr, obj.ptr);
19787 return *this;
19790 union_pw_multi_aff::~union_pw_multi_aff() {
19791 if (ptr)
19792 isl_union_pw_multi_aff_free(ptr);
19795 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
19796 return isl_union_pw_multi_aff_copy(ptr);
19799 __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
19800 return ptr;
19803 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
19804 isl_union_pw_multi_aff *tmp = ptr;
19805 ptr = nullptr;
19806 return tmp;
19809 bool union_pw_multi_aff::is_null() const {
19810 return ptr == nullptr;
19813 isl::checked::ctx union_pw_multi_aff::ctx() const {
19814 return isl::checked::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
19817 isl::checked::union_pw_multi_aff union_pw_multi_aff::add(isl::checked::union_pw_multi_aff upma2) const
19819 auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
19820 return manage(res);
19823 isl::checked::union_pw_multi_aff union_pw_multi_aff::apply(isl::checked::union_pw_multi_aff upma2) const
19825 auto res = isl_union_pw_multi_aff_apply_union_pw_multi_aff(copy(), upma2.release());
19826 return manage(res);
19829 isl::checked::multi_union_pw_aff union_pw_multi_aff::as_multi_union_pw_aff() const
19831 auto res = isl_union_pw_multi_aff_as_multi_union_pw_aff(copy());
19832 return manage(res);
19835 isl::checked::pw_multi_aff union_pw_multi_aff::as_pw_multi_aff() const
19837 auto res = isl_union_pw_multi_aff_as_pw_multi_aff(copy());
19838 return manage(res);
19841 isl::checked::union_map union_pw_multi_aff::as_union_map() const
19843 auto res = isl_union_pw_multi_aff_as_union_map(copy());
19844 return manage(res);
19847 isl::checked::union_pw_multi_aff union_pw_multi_aff::coalesce() const
19849 auto res = isl_union_pw_multi_aff_coalesce(copy());
19850 return manage(res);
19853 isl::checked::union_set union_pw_multi_aff::domain() const
19855 auto res = isl_union_pw_multi_aff_domain(copy());
19856 return manage(res);
19859 isl::checked::union_pw_multi_aff union_pw_multi_aff::drop_unused_params() const
19861 auto res = isl_union_pw_multi_aff_drop_unused_params(copy());
19862 return manage(res);
19865 isl::checked::union_pw_multi_aff union_pw_multi_aff::empty(isl::checked::ctx ctx)
19867 auto res = isl_union_pw_multi_aff_empty_ctx(ctx.release());
19868 return manage(res);
19871 isl::checked::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::checked::space space) const
19873 auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
19874 return manage(res);
19877 isl::checked::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::checked::union_pw_multi_aff upma2) const
19879 auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
19880 return manage(res);
19883 isl::checked::union_pw_multi_aff union_pw_multi_aff::gist(isl::checked::union_set context) const
19885 auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
19886 return manage(res);
19889 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::space space) const
19891 auto res = isl_union_pw_multi_aff_intersect_domain_space(copy(), space.release());
19892 return manage(res);
19895 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::union_set uset) const
19897 auto res = isl_union_pw_multi_aff_intersect_domain_union_set(copy(), uset.release());
19898 return manage(res);
19901 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
19903 auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_domain(copy(), uset.release());
19904 return manage(res);
19907 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
19909 auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_range(copy(), uset.release());
19910 return manage(res);
19913 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::checked::set set) const
19915 auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
19916 return manage(res);
19919 boolean union_pw_multi_aff::involves_locals() const
19921 auto res = isl_union_pw_multi_aff_involves_locals(get());
19922 return manage(res);
19925 boolean union_pw_multi_aff::isa_pw_multi_aff() const
19927 auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(get());
19928 return manage(res);
19931 boolean union_pw_multi_aff::plain_is_empty() const
19933 auto res = isl_union_pw_multi_aff_plain_is_empty(get());
19934 return manage(res);
19937 boolean union_pw_multi_aff::plain_is_equal(const isl::checked::union_pw_multi_aff &upma2) const
19939 auto res = isl_union_pw_multi_aff_plain_is_equal(get(), upma2.get());
19940 return manage(res);
19943 isl::checked::union_pw_multi_aff union_pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const
19945 auto res = isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(copy(), upma2.release());
19946 return manage(res);
19949 isl::checked::union_pw_multi_aff union_pw_multi_aff::pullback(isl::checked::union_pw_multi_aff upma2) const
19951 auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
19952 return manage(res);
19955 isl::checked::pw_multi_aff_list union_pw_multi_aff::pw_multi_aff_list() const
19957 auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
19958 return manage(res);
19961 isl::checked::pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
19963 return pw_multi_aff_list();
19966 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
19968 auto res = isl_union_pw_multi_aff_range_factor_domain(copy());
19969 return manage(res);
19972 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
19974 auto res = isl_union_pw_multi_aff_range_factor_range(copy());
19975 return manage(res);
19978 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_product(isl::checked::union_pw_multi_aff upma2) const
19980 auto res = isl_union_pw_multi_aff_range_product(copy(), upma2.release());
19981 return manage(res);
19984 isl::checked::space union_pw_multi_aff::space() const
19986 auto res = isl_union_pw_multi_aff_get_space(get());
19987 return manage(res);
19990 isl::checked::space union_pw_multi_aff::get_space() const
19992 return space();
19995 isl::checked::union_pw_multi_aff union_pw_multi_aff::sub(isl::checked::union_pw_multi_aff upma2) const
19997 auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
19998 return manage(res);
20001 isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::space space) const
20003 auto res = isl_union_pw_multi_aff_subtract_domain_space(copy(), space.release());
20004 return manage(res);
20007 isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::union_set uset) const
20009 auto res = isl_union_pw_multi_aff_subtract_domain_union_set(copy(), uset.release());
20010 return manage(res);
20013 isl::checked::union_pw_multi_aff union_pw_multi_aff::union_add(isl::checked::union_pw_multi_aff upma2) const
20015 auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
20016 return manage(res);
20019 inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
20021 char *str = isl_union_pw_multi_aff_to_str(obj.get());
20022 if (!str) {
20023 os.setstate(std::ios_base::badbit);
20024 return os;
20026 os << str;
20027 free(str);
20028 return os;
20031 // implementations for isl::union_set
20032 union_set manage(__isl_take isl_union_set *ptr) {
20033 return union_set(ptr);
20035 union_set manage_copy(__isl_keep isl_union_set *ptr) {
20036 ptr = isl_union_set_copy(ptr);
20037 return union_set(ptr);
20040 union_set::union_set(__isl_take isl_union_set *ptr)
20041 : ptr(ptr) {}
20043 union_set::union_set()
20044 : ptr(nullptr) {}
20046 union_set::union_set(const union_set &obj)
20047 : ptr(nullptr)
20049 ptr = obj.copy();
20052 union_set::union_set(isl::checked::basic_set bset)
20054 auto res = isl_union_set_from_basic_set(bset.release());
20055 ptr = res;
20058 union_set::union_set(isl::checked::point pnt)
20060 auto res = isl_union_set_from_point(pnt.release());
20061 ptr = res;
20064 union_set::union_set(isl::checked::set set)
20066 auto res = isl_union_set_from_set(set.release());
20067 ptr = res;
20070 union_set::union_set(isl::checked::ctx ctx, const std::string &str)
20072 auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
20073 ptr = res;
20076 union_set &union_set::operator=(union_set obj) {
20077 std::swap(this->ptr, obj.ptr);
20078 return *this;
20081 union_set::~union_set() {
20082 if (ptr)
20083 isl_union_set_free(ptr);
20086 __isl_give isl_union_set *union_set::copy() const & {
20087 return isl_union_set_copy(ptr);
20090 __isl_keep isl_union_set *union_set::get() const {
20091 return ptr;
20094 __isl_give isl_union_set *union_set::release() {
20095 isl_union_set *tmp = ptr;
20096 ptr = nullptr;
20097 return tmp;
20100 bool union_set::is_null() const {
20101 return ptr == nullptr;
20104 isl::checked::ctx union_set::ctx() const {
20105 return isl::checked::ctx(isl_union_set_get_ctx(ptr));
20108 isl::checked::union_set union_set::affine_hull() const
20110 auto res = isl_union_set_affine_hull(copy());
20111 return manage(res);
20114 isl::checked::union_set union_set::apply(isl::checked::union_map umap) const
20116 auto res = isl_union_set_apply(copy(), umap.release());
20117 return manage(res);
20120 isl::checked::set union_set::as_set() const
20122 auto res = isl_union_set_as_set(copy());
20123 return manage(res);
20126 isl::checked::union_set union_set::coalesce() const
20128 auto res = isl_union_set_coalesce(copy());
20129 return manage(res);
20132 isl::checked::union_set union_set::compute_divs() const
20134 auto res = isl_union_set_compute_divs(copy());
20135 return manage(res);
20138 isl::checked::union_set union_set::detect_equalities() const
20140 auto res = isl_union_set_detect_equalities(copy());
20141 return manage(res);
20144 isl::checked::union_set union_set::drop_unused_params() const
20146 auto res = isl_union_set_drop_unused_params(copy());
20147 return manage(res);
20150 isl::checked::union_set union_set::empty(isl::checked::ctx ctx)
20152 auto res = isl_union_set_empty_ctx(ctx.release());
20153 return manage(res);
20156 boolean union_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
20158 struct test_data {
20159 std::function<boolean(isl::checked::set)> func;
20160 } test_data = { test };
20161 auto test_lambda = [](isl_set *arg_0, void *arg_1) -> isl_bool {
20162 auto *data = static_cast<struct test_data *>(arg_1);
20163 auto ret = (data->func)(manage_copy(arg_0));
20164 return ret.release();
20166 auto res = isl_union_set_every_set(get(), test_lambda, &test_data);
20167 return manage(res);
20170 isl::checked::set union_set::extract_set(isl::checked::space space) const
20172 auto res = isl_union_set_extract_set(get(), space.release());
20173 return manage(res);
20176 stat union_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
20178 struct fn_data {
20179 std::function<stat(isl::checked::point)> func;
20180 } fn_data = { fn };
20181 auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
20182 auto *data = static_cast<struct fn_data *>(arg_1);
20183 auto ret = (data->func)(manage(arg_0));
20184 return ret.release();
20186 auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
20187 return manage(res);
20190 stat union_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
20192 struct fn_data {
20193 std::function<stat(isl::checked::set)> func;
20194 } fn_data = { fn };
20195 auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
20196 auto *data = static_cast<struct fn_data *>(arg_1);
20197 auto ret = (data->func)(manage(arg_0));
20198 return ret.release();
20200 auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
20201 return manage(res);
20204 isl::checked::union_set union_set::gist(isl::checked::union_set context) const
20206 auto res = isl_union_set_gist(copy(), context.release());
20207 return manage(res);
20210 isl::checked::union_set union_set::gist_params(isl::checked::set set) const
20212 auto res = isl_union_set_gist_params(copy(), set.release());
20213 return manage(res);
20216 isl::checked::union_map union_set::identity() const
20218 auto res = isl_union_set_identity(copy());
20219 return manage(res);
20222 isl::checked::union_set union_set::intersect(isl::checked::union_set uset2) const
20224 auto res = isl_union_set_intersect(copy(), uset2.release());
20225 return manage(res);
20228 isl::checked::union_set union_set::intersect_params(isl::checked::set set) const
20230 auto res = isl_union_set_intersect_params(copy(), set.release());
20231 return manage(res);
20234 boolean union_set::is_disjoint(const isl::checked::union_set &uset2) const
20236 auto res = isl_union_set_is_disjoint(get(), uset2.get());
20237 return manage(res);
20240 boolean union_set::is_empty() const
20242 auto res = isl_union_set_is_empty(get());
20243 return manage(res);
20246 boolean union_set::is_equal(const isl::checked::union_set &uset2) const
20248 auto res = isl_union_set_is_equal(get(), uset2.get());
20249 return manage(res);
20252 boolean union_set::is_strict_subset(const isl::checked::union_set &uset2) const
20254 auto res = isl_union_set_is_strict_subset(get(), uset2.get());
20255 return manage(res);
20258 boolean union_set::is_subset(const isl::checked::union_set &uset2) const
20260 auto res = isl_union_set_is_subset(get(), uset2.get());
20261 return manage(res);
20264 boolean union_set::isa_set() const
20266 auto res = isl_union_set_isa_set(get());
20267 return manage(res);
20270 isl::checked::union_set union_set::lexmax() const
20272 auto res = isl_union_set_lexmax(copy());
20273 return manage(res);
20276 isl::checked::union_set union_set::lexmin() const
20278 auto res = isl_union_set_lexmin(copy());
20279 return manage(res);
20282 isl::checked::set union_set::params() const
20284 auto res = isl_union_set_params(copy());
20285 return manage(res);
20288 isl::checked::union_set union_set::polyhedral_hull() const
20290 auto res = isl_union_set_polyhedral_hull(copy());
20291 return manage(res);
20294 isl::checked::union_set union_set::preimage(isl::checked::multi_aff ma) const
20296 auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
20297 return manage(res);
20300 isl::checked::union_set union_set::preimage(isl::checked::pw_multi_aff pma) const
20302 auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
20303 return manage(res);
20306 isl::checked::union_set union_set::preimage(isl::checked::union_pw_multi_aff upma) const
20308 auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
20309 return manage(res);
20312 isl::checked::union_set union_set::project_out_all_params() const
20314 auto res = isl_union_set_project_out_all_params(copy());
20315 return manage(res);
20318 isl::checked::point union_set::sample_point() const
20320 auto res = isl_union_set_sample_point(copy());
20321 return manage(res);
20324 isl::checked::set_list union_set::set_list() const
20326 auto res = isl_union_set_get_set_list(get());
20327 return manage(res);
20330 isl::checked::set_list union_set::get_set_list() const
20332 return set_list();
20335 isl::checked::space union_set::space() const
20337 auto res = isl_union_set_get_space(get());
20338 return manage(res);
20341 isl::checked::space union_set::get_space() const
20343 return space();
20346 isl::checked::union_set union_set::subtract(isl::checked::union_set uset2) const
20348 auto res = isl_union_set_subtract(copy(), uset2.release());
20349 return manage(res);
20352 isl::checked::union_set_list union_set::to_list() const
20354 auto res = isl_union_set_to_list(copy());
20355 return manage(res);
20358 isl::checked::union_set union_set::unite(isl::checked::union_set uset2) const
20360 auto res = isl_union_set_union(copy(), uset2.release());
20361 return manage(res);
20364 isl::checked::union_set union_set::universe() const
20366 auto res = isl_union_set_universe(copy());
20367 return manage(res);
20370 isl::checked::union_map union_set::unwrap() const
20372 auto res = isl_union_set_unwrap(copy());
20373 return manage(res);
20376 inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
20378 char *str = isl_union_set_to_str(obj.get());
20379 if (!str) {
20380 os.setstate(std::ios_base::badbit);
20381 return os;
20383 os << str;
20384 free(str);
20385 return os;
20388 // implementations for isl::union_set_list
20389 union_set_list manage(__isl_take isl_union_set_list *ptr) {
20390 return union_set_list(ptr);
20392 union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
20393 ptr = isl_union_set_list_copy(ptr);
20394 return union_set_list(ptr);
20397 union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
20398 : ptr(ptr) {}
20400 union_set_list::union_set_list()
20401 : ptr(nullptr) {}
20403 union_set_list::union_set_list(const union_set_list &obj)
20404 : ptr(nullptr)
20406 ptr = obj.copy();
20409 union_set_list::union_set_list(isl::checked::ctx ctx, int n)
20411 auto res = isl_union_set_list_alloc(ctx.release(), n);
20412 ptr = res;
20415 union_set_list::union_set_list(isl::checked::union_set el)
20417 auto res = isl_union_set_list_from_union_set(el.release());
20418 ptr = res;
20421 union_set_list::union_set_list(isl::checked::ctx ctx, const std::string &str)
20423 auto res = isl_union_set_list_read_from_str(ctx.release(), str.c_str());
20424 ptr = res;
20427 union_set_list &union_set_list::operator=(union_set_list obj) {
20428 std::swap(this->ptr, obj.ptr);
20429 return *this;
20432 union_set_list::~union_set_list() {
20433 if (ptr)
20434 isl_union_set_list_free(ptr);
20437 __isl_give isl_union_set_list *union_set_list::copy() const & {
20438 return isl_union_set_list_copy(ptr);
20441 __isl_keep isl_union_set_list *union_set_list::get() const {
20442 return ptr;
20445 __isl_give isl_union_set_list *union_set_list::release() {
20446 isl_union_set_list *tmp = ptr;
20447 ptr = nullptr;
20448 return tmp;
20451 bool union_set_list::is_null() const {
20452 return ptr == nullptr;
20455 isl::checked::ctx union_set_list::ctx() const {
20456 return isl::checked::ctx(isl_union_set_list_get_ctx(ptr));
20459 isl::checked::union_set_list union_set_list::add(isl::checked::union_set el) const
20461 auto res = isl_union_set_list_add(copy(), el.release());
20462 return manage(res);
20465 isl::checked::union_set union_set_list::at(int index) const
20467 auto res = isl_union_set_list_get_at(get(), index);
20468 return manage(res);
20471 isl::checked::union_set union_set_list::get_at(int index) const
20473 return at(index);
20476 isl::checked::union_set_list union_set_list::clear() const
20478 auto res = isl_union_set_list_clear(copy());
20479 return manage(res);
20482 isl::checked::union_set_list union_set_list::concat(isl::checked::union_set_list list2) const
20484 auto res = isl_union_set_list_concat(copy(), list2.release());
20485 return manage(res);
20488 isl::checked::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
20490 auto res = isl_union_set_list_drop(copy(), first, n);
20491 return manage(res);
20494 stat union_set_list::foreach(const std::function<stat(isl::checked::union_set)> &fn) const
20496 struct fn_data {
20497 std::function<stat(isl::checked::union_set)> func;
20498 } fn_data = { fn };
20499 auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
20500 auto *data = static_cast<struct fn_data *>(arg_1);
20501 auto ret = (data->func)(manage(arg_0));
20502 return ret.release();
20504 auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
20505 return manage(res);
20508 stat union_set_list::foreach_scc(const std::function<boolean(isl::checked::union_set, isl::checked::union_set)> &follows, const std::function<stat(isl::checked::union_set_list)> &fn) const
20510 struct follows_data {
20511 std::function<boolean(isl::checked::union_set, isl::checked::union_set)> func;
20512 } follows_data = { follows };
20513 auto follows_lambda = [](isl_union_set *arg_0, isl_union_set *arg_1, void *arg_2) -> isl_bool {
20514 auto *data = static_cast<struct follows_data *>(arg_2);
20515 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
20516 return ret.release();
20518 struct fn_data {
20519 std::function<stat(isl::checked::union_set_list)> func;
20520 } fn_data = { fn };
20521 auto fn_lambda = [](isl_union_set_list *arg_0, void *arg_1) -> isl_stat {
20522 auto *data = static_cast<struct fn_data *>(arg_1);
20523 auto ret = (data->func)(manage(arg_0));
20524 return ret.release();
20526 auto res = isl_union_set_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
20527 return manage(res);
20530 isl::checked::union_set_list union_set_list::insert(unsigned int pos, isl::checked::union_set el) const
20532 auto res = isl_union_set_list_insert(copy(), pos, el.release());
20533 return manage(res);
20536 isl::checked::union_set_list union_set_list::set_at(int index, isl::checked::union_set el) const
20538 auto res = isl_union_set_list_set_at(copy(), index, el.release());
20539 return manage(res);
20542 class size union_set_list::size() const
20544 auto res = isl_union_set_list_size(get());
20545 return manage(res);
20548 inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
20550 char *str = isl_union_set_list_to_str(obj.get());
20551 if (!str) {
20552 os.setstate(std::ios_base::badbit);
20553 return os;
20555 os << str;
20556 free(str);
20557 return os;
20560 // implementations for isl::val
20561 val manage(__isl_take isl_val *ptr) {
20562 return val(ptr);
20564 val manage_copy(__isl_keep isl_val *ptr) {
20565 ptr = isl_val_copy(ptr);
20566 return val(ptr);
20569 val::val(__isl_take isl_val *ptr)
20570 : ptr(ptr) {}
20572 val::val()
20573 : ptr(nullptr) {}
20575 val::val(const val &obj)
20576 : ptr(nullptr)
20578 ptr = obj.copy();
20581 val::val(isl::checked::ctx ctx, long i)
20583 auto res = isl_val_int_from_si(ctx.release(), i);
20584 ptr = res;
20587 val::val(isl::checked::ctx ctx, const std::string &str)
20589 auto res = isl_val_read_from_str(ctx.release(), str.c_str());
20590 ptr = res;
20593 val &val::operator=(val obj) {
20594 std::swap(this->ptr, obj.ptr);
20595 return *this;
20598 val::~val() {
20599 if (ptr)
20600 isl_val_free(ptr);
20603 __isl_give isl_val *val::copy() const & {
20604 return isl_val_copy(ptr);
20607 __isl_keep isl_val *val::get() const {
20608 return ptr;
20611 __isl_give isl_val *val::release() {
20612 isl_val *tmp = ptr;
20613 ptr = nullptr;
20614 return tmp;
20617 bool val::is_null() const {
20618 return ptr == nullptr;
20621 isl::checked::ctx val::ctx() const {
20622 return isl::checked::ctx(isl_val_get_ctx(ptr));
20625 isl::checked::val val::abs() const
20627 auto res = isl_val_abs(copy());
20628 return manage(res);
20631 boolean val::abs_eq(const isl::checked::val &v2) const
20633 auto res = isl_val_abs_eq(get(), v2.get());
20634 return manage(res);
20637 boolean val::abs_eq(long v2) const
20639 return this->abs_eq(isl::checked::val(ctx(), v2));
20642 isl::checked::val val::add(isl::checked::val v2) const
20644 auto res = isl_val_add(copy(), v2.release());
20645 return manage(res);
20648 isl::checked::val val::add(long v2) const
20650 return this->add(isl::checked::val(ctx(), v2));
20653 isl::checked::val val::ceil() const
20655 auto res = isl_val_ceil(copy());
20656 return manage(res);
20659 int val::cmp_si(long i) const
20661 auto res = isl_val_cmp_si(get(), i);
20662 return res;
20665 long val::den_si() const
20667 auto res = isl_val_get_den_si(get());
20668 return res;
20671 long val::get_den_si() const
20673 return den_si();
20676 isl::checked::val val::div(isl::checked::val v2) const
20678 auto res = isl_val_div(copy(), v2.release());
20679 return manage(res);
20682 isl::checked::val val::div(long v2) const
20684 return this->div(isl::checked::val(ctx(), v2));
20687 boolean val::eq(const isl::checked::val &v2) const
20689 auto res = isl_val_eq(get(), v2.get());
20690 return manage(res);
20693 boolean val::eq(long v2) const
20695 return this->eq(isl::checked::val(ctx(), v2));
20698 isl::checked::val val::floor() const
20700 auto res = isl_val_floor(copy());
20701 return manage(res);
20704 isl::checked::val val::gcd(isl::checked::val v2) const
20706 auto res = isl_val_gcd(copy(), v2.release());
20707 return manage(res);
20710 isl::checked::val val::gcd(long v2) const
20712 return this->gcd(isl::checked::val(ctx(), v2));
20715 boolean val::ge(const isl::checked::val &v2) const
20717 auto res = isl_val_ge(get(), v2.get());
20718 return manage(res);
20721 boolean val::ge(long v2) const
20723 return this->ge(isl::checked::val(ctx(), v2));
20726 boolean val::gt(const isl::checked::val &v2) const
20728 auto res = isl_val_gt(get(), v2.get());
20729 return manage(res);
20732 boolean val::gt(long v2) const
20734 return this->gt(isl::checked::val(ctx(), v2));
20737 isl::checked::val val::infty(isl::checked::ctx ctx)
20739 auto res = isl_val_infty(ctx.release());
20740 return manage(res);
20743 isl::checked::val val::inv() const
20745 auto res = isl_val_inv(copy());
20746 return manage(res);
20749 boolean val::is_divisible_by(const isl::checked::val &v2) const
20751 auto res = isl_val_is_divisible_by(get(), v2.get());
20752 return manage(res);
20755 boolean val::is_divisible_by(long v2) const
20757 return this->is_divisible_by(isl::checked::val(ctx(), v2));
20760 boolean val::is_infty() const
20762 auto res = isl_val_is_infty(get());
20763 return manage(res);
20766 boolean val::is_int() const
20768 auto res = isl_val_is_int(get());
20769 return manage(res);
20772 boolean val::is_nan() const
20774 auto res = isl_val_is_nan(get());
20775 return manage(res);
20778 boolean val::is_neg() const
20780 auto res = isl_val_is_neg(get());
20781 return manage(res);
20784 boolean val::is_neginfty() const
20786 auto res = isl_val_is_neginfty(get());
20787 return manage(res);
20790 boolean val::is_negone() const
20792 auto res = isl_val_is_negone(get());
20793 return manage(res);
20796 boolean val::is_nonneg() const
20798 auto res = isl_val_is_nonneg(get());
20799 return manage(res);
20802 boolean val::is_nonpos() const
20804 auto res = isl_val_is_nonpos(get());
20805 return manage(res);
20808 boolean val::is_one() const
20810 auto res = isl_val_is_one(get());
20811 return manage(res);
20814 boolean val::is_pos() const
20816 auto res = isl_val_is_pos(get());
20817 return manage(res);
20820 boolean val::is_rat() const
20822 auto res = isl_val_is_rat(get());
20823 return manage(res);
20826 boolean val::is_zero() const
20828 auto res = isl_val_is_zero(get());
20829 return manage(res);
20832 boolean val::le(const isl::checked::val &v2) const
20834 auto res = isl_val_le(get(), v2.get());
20835 return manage(res);
20838 boolean val::le(long v2) const
20840 return this->le(isl::checked::val(ctx(), v2));
20843 boolean val::lt(const isl::checked::val &v2) const
20845 auto res = isl_val_lt(get(), v2.get());
20846 return manage(res);
20849 boolean val::lt(long v2) const
20851 return this->lt(isl::checked::val(ctx(), v2));
20854 isl::checked::val val::max(isl::checked::val v2) const
20856 auto res = isl_val_max(copy(), v2.release());
20857 return manage(res);
20860 isl::checked::val val::max(long v2) const
20862 return this->max(isl::checked::val(ctx(), v2));
20865 isl::checked::val val::min(isl::checked::val v2) const
20867 auto res = isl_val_min(copy(), v2.release());
20868 return manage(res);
20871 isl::checked::val val::min(long v2) const
20873 return this->min(isl::checked::val(ctx(), v2));
20876 isl::checked::val val::mod(isl::checked::val v2) const
20878 auto res = isl_val_mod(copy(), v2.release());
20879 return manage(res);
20882 isl::checked::val val::mod(long v2) const
20884 return this->mod(isl::checked::val(ctx(), v2));
20887 isl::checked::val val::mul(isl::checked::val v2) const
20889 auto res = isl_val_mul(copy(), v2.release());
20890 return manage(res);
20893 isl::checked::val val::mul(long v2) const
20895 return this->mul(isl::checked::val(ctx(), v2));
20898 isl::checked::val val::nan(isl::checked::ctx ctx)
20900 auto res = isl_val_nan(ctx.release());
20901 return manage(res);
20904 boolean val::ne(const isl::checked::val &v2) const
20906 auto res = isl_val_ne(get(), v2.get());
20907 return manage(res);
20910 boolean val::ne(long v2) const
20912 return this->ne(isl::checked::val(ctx(), v2));
20915 isl::checked::val val::neg() const
20917 auto res = isl_val_neg(copy());
20918 return manage(res);
20921 isl::checked::val val::neginfty(isl::checked::ctx ctx)
20923 auto res = isl_val_neginfty(ctx.release());
20924 return manage(res);
20927 isl::checked::val val::negone(isl::checked::ctx ctx)
20929 auto res = isl_val_negone(ctx.release());
20930 return manage(res);
20933 long val::num_si() const
20935 auto res = isl_val_get_num_si(get());
20936 return res;
20939 long val::get_num_si() const
20941 return num_si();
20944 isl::checked::val val::one(isl::checked::ctx ctx)
20946 auto res = isl_val_one(ctx.release());
20947 return manage(res);
20950 isl::checked::val val::pow2() const
20952 auto res = isl_val_pow2(copy());
20953 return manage(res);
20956 int val::sgn() const
20958 auto res = isl_val_sgn(get());
20959 return res;
20962 isl::checked::val val::sub(isl::checked::val v2) const
20964 auto res = isl_val_sub(copy(), v2.release());
20965 return manage(res);
20968 isl::checked::val val::sub(long v2) const
20970 return this->sub(isl::checked::val(ctx(), v2));
20973 isl::checked::val_list val::to_list() const
20975 auto res = isl_val_to_list(copy());
20976 return manage(res);
20979 isl::checked::val val::trunc() const
20981 auto res = isl_val_trunc(copy());
20982 return manage(res);
20985 isl::checked::val val::zero(isl::checked::ctx ctx)
20987 auto res = isl_val_zero(ctx.release());
20988 return manage(res);
20991 inline std::ostream &operator<<(std::ostream &os, const val &obj)
20993 char *str = isl_val_to_str(obj.get());
20994 if (!str) {
20995 os.setstate(std::ios_base::badbit);
20996 return os;
20998 os << str;
20999 free(str);
21000 return os;
21003 // implementations for isl::val_list
21004 val_list manage(__isl_take isl_val_list *ptr) {
21005 return val_list(ptr);
21007 val_list manage_copy(__isl_keep isl_val_list *ptr) {
21008 ptr = isl_val_list_copy(ptr);
21009 return val_list(ptr);
21012 val_list::val_list(__isl_take isl_val_list *ptr)
21013 : ptr(ptr) {}
21015 val_list::val_list()
21016 : ptr(nullptr) {}
21018 val_list::val_list(const val_list &obj)
21019 : ptr(nullptr)
21021 ptr = obj.copy();
21024 val_list::val_list(isl::checked::ctx ctx, int n)
21026 auto res = isl_val_list_alloc(ctx.release(), n);
21027 ptr = res;
21030 val_list::val_list(isl::checked::val el)
21032 auto res = isl_val_list_from_val(el.release());
21033 ptr = res;
21036 val_list::val_list(isl::checked::ctx ctx, const std::string &str)
21038 auto res = isl_val_list_read_from_str(ctx.release(), str.c_str());
21039 ptr = res;
21042 val_list &val_list::operator=(val_list obj) {
21043 std::swap(this->ptr, obj.ptr);
21044 return *this;
21047 val_list::~val_list() {
21048 if (ptr)
21049 isl_val_list_free(ptr);
21052 __isl_give isl_val_list *val_list::copy() const & {
21053 return isl_val_list_copy(ptr);
21056 __isl_keep isl_val_list *val_list::get() const {
21057 return ptr;
21060 __isl_give isl_val_list *val_list::release() {
21061 isl_val_list *tmp = ptr;
21062 ptr = nullptr;
21063 return tmp;
21066 bool val_list::is_null() const {
21067 return ptr == nullptr;
21070 isl::checked::ctx val_list::ctx() const {
21071 return isl::checked::ctx(isl_val_list_get_ctx(ptr));
21074 isl::checked::val_list val_list::add(isl::checked::val el) const
21076 auto res = isl_val_list_add(copy(), el.release());
21077 return manage(res);
21080 isl::checked::val_list val_list::add(long el) const
21082 return this->add(isl::checked::val(ctx(), el));
21085 isl::checked::val val_list::at(int index) const
21087 auto res = isl_val_list_get_at(get(), index);
21088 return manage(res);
21091 isl::checked::val val_list::get_at(int index) const
21093 return at(index);
21096 isl::checked::val_list val_list::clear() const
21098 auto res = isl_val_list_clear(copy());
21099 return manage(res);
21102 isl::checked::val_list val_list::concat(isl::checked::val_list list2) const
21104 auto res = isl_val_list_concat(copy(), list2.release());
21105 return manage(res);
21108 isl::checked::val_list val_list::drop(unsigned int first, unsigned int n) const
21110 auto res = isl_val_list_drop(copy(), first, n);
21111 return manage(res);
21114 stat val_list::foreach(const std::function<stat(isl::checked::val)> &fn) const
21116 struct fn_data {
21117 std::function<stat(isl::checked::val)> func;
21118 } fn_data = { fn };
21119 auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
21120 auto *data = static_cast<struct fn_data *>(arg_1);
21121 auto ret = (data->func)(manage(arg_0));
21122 return ret.release();
21124 auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
21125 return manage(res);
21128 stat val_list::foreach_scc(const std::function<boolean(isl::checked::val, isl::checked::val)> &follows, const std::function<stat(isl::checked::val_list)> &fn) const
21130 struct follows_data {
21131 std::function<boolean(isl::checked::val, isl::checked::val)> func;
21132 } follows_data = { follows };
21133 auto follows_lambda = [](isl_val *arg_0, isl_val *arg_1, void *arg_2) -> isl_bool {
21134 auto *data = static_cast<struct follows_data *>(arg_2);
21135 auto ret = (data->func)(manage_copy(arg_0), manage_copy(arg_1));
21136 return ret.release();
21138 struct fn_data {
21139 std::function<stat(isl::checked::val_list)> func;
21140 } fn_data = { fn };
21141 auto fn_lambda = [](isl_val_list *arg_0, void *arg_1) -> isl_stat {
21142 auto *data = static_cast<struct fn_data *>(arg_1);
21143 auto ret = (data->func)(manage(arg_0));
21144 return ret.release();
21146 auto res = isl_val_list_foreach_scc(get(), follows_lambda, &follows_data, fn_lambda, &fn_data);
21147 return manage(res);
21150 isl::checked::val_list val_list::insert(unsigned int pos, isl::checked::val el) const
21152 auto res = isl_val_list_insert(copy(), pos, el.release());
21153 return manage(res);
21156 isl::checked::val_list val_list::insert(unsigned int pos, long el) const
21158 return this->insert(pos, isl::checked::val(ctx(), el));
21161 isl::checked::val_list val_list::set_at(int index, isl::checked::val el) const
21163 auto res = isl_val_list_set_at(copy(), index, el.release());
21164 return manage(res);
21167 isl::checked::val_list val_list::set_at(int index, long el) const
21169 return this->set_at(index, isl::checked::val(ctx(), el));
21172 class size val_list::size() const
21174 auto res = isl_val_list_size(get());
21175 return manage(res);
21178 inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
21180 char *str = isl_val_list_to_str(obj.get());
21181 if (!str) {
21182 os.setstate(std::ios_base::badbit);
21183 return os;
21185 os << str;
21186 free(str);
21187 return os;
21189 } // namespace checked
21190 } // namespace isl
21192 #endif /* ISL_CPP_CHECKED */