1 /// These are automatically generated checked C++ bindings for isl.
2 ///
3 /// isl is a library for computing with integer sets and maps described by
4 /// Presburger formulas. On top of this, isl provides various tools for
5 /// polyhedral compilation, ranging from dependence analysis over scheduling
6 /// to AST generation.
7 
8 // clang-format off
9 
10 #ifndef ISL_CPP_CHECKED
11 #define ISL_CPP_CHECKED
12 
13 #include <isl/id.h>
14 #include <isl/space.h>
15 #include <isl/val.h>
16 #include <isl/aff.h>
17 #include <isl/set.h>
18 #include <isl/id.h>
19 #include <isl/map.h>
20 #include <isl/vec.h>
21 #include <isl/ilp.h>
22 #include <isl/union_set.h>
23 #include <isl/union_map.h>
24 #include <isl/flow.h>
25 #include <isl/schedule.h>
26 #include <isl/schedule_node.h>
27 #include <isl/ast_build.h>
28 #include <isl/fixed_box.h>
29 #include <isl/constraint.h>
30 #include <isl/polynomial.h>
31 #include <isl/mat.h>
32 #include <isl/fixed_box.h>
33 #include <stdio.h>
34 #include <stdlib.h>
35 
36 #include <functional>
37 #include <string>
38 
39 namespace isl {
40 inline namespace noexceptions {
41 
42 #define ISLPP_STRINGIZE_(X) #X
43 #define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
44 
45 #define ISLPP_ASSERT(test, message)                          \
46   do {                                                       \
47     if (test)                                                \
48       break;                                                 \
49     fputs("Assertion \"" #test "\" failed at " __FILE__      \
50       ":" ISLPP_STRINGIZE(__LINE__) "\n  " message "\n",     \
51       stderr);                                               \
52     abort();                                                 \
53   } while (0)
54 
55 class boolean {
56 private:
57   mutable bool checked = false;
58   isl_bool val;
59 
60   friend boolean manage(isl_bool val);
boolean(isl_bool val)61   boolean(isl_bool val): val(val) {}
62 public:
boolean()63   boolean()
64       : val(isl_bool_error) {}
~boolean()65   ~boolean() {
66     // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
67   }
68 
boolean(bool val)69   /* implicit */ boolean(bool val)
70       : val(val ? isl_bool_true : isl_bool_false) {}
71 
is_error()72   bool is_error() const { checked = true; return val == isl_bool_error; }
is_false()73   bool is_false() const { checked = true; return val == isl_bool_false; }
is_true()74   bool is_true() const { checked = true; return val == isl_bool_true; }
75 
76   operator bool() const {
77     // ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked error state");
78     ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
79     return is_true();
80   }
81 
82   boolean operator!() const {
83     if (is_error())
84       return *this;
85     return !is_true();
86   }
87 };
88 
manage(isl_bool val)89 inline boolean manage(isl_bool val) {
90   return boolean(val);
91 }
92 
93 class ctx {
94   isl_ctx *ptr;
95 public:
ctx(isl_ctx * ctx)96   /* implicit */ ctx(isl_ctx *ctx)
97       : ptr(ctx) {}
release()98   isl_ctx *release() {
99     auto tmp = ptr;
100     ptr = nullptr;
101     return tmp;
102   }
get()103   isl_ctx *get() {
104     return ptr;
105   }
106 };
107 
108 /* Class encapsulating an isl_stat value.
109  */
110 class stat {
111 private:
112 	mutable bool checked = false;
113 	isl_stat val;
114 
115 	friend stat manage(isl_stat val);
116 public:
stat(isl_stat val)117 	constexpr stat(isl_stat val) : val(val) {}
ok()118 	static stat ok() {
119 		return stat(isl_stat_ok);
120 	}
error()121 	static stat error() {
122 		return stat(isl_stat_error);
123 	}
stat()124 	stat() : val(isl_stat_error) {}
~stat()125 	~stat() {
126 		// ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
127 	}
128 
release()129 	isl_stat release() {
130 		checked = true;
131 		return val;
132 	}
133 
is_error()134 	bool is_error() const {
135 		checked = true;
136 		return val == isl_stat_error;
137 	}
is_ok()138 	bool is_ok() const {
139 		checked = true;
140 		return val == isl_stat_ok;
141 	}
142 };
143 
144 
manage(isl_stat val)145 inline stat manage(isl_stat val)
146 {
147 	return stat(val);
148 }
149 
150 enum class dim {
151   cst = isl_dim_cst,
152   param = isl_dim_param,
153   in = isl_dim_in,
154   out = isl_dim_out,
155   set = isl_dim_set,
156   div = isl_dim_div,
157   all = isl_dim_all
158 };
159 
160 }
161 } // namespace isl
162 
163 namespace isl {
164 
165 inline namespace noexceptions {
166 
167 // forward declarations
168 class aff;
169 class aff_list;
170 class ast_build;
171 class ast_expr;
172 class ast_expr_list;
173 class ast_node;
174 class ast_node_list;
175 class basic_map;
176 class basic_map_list;
177 class basic_set;
178 class basic_set_list;
179 class constraint;
180 class constraint_list;
181 class fixed_box;
182 class id;
183 class id_list;
184 class id_to_ast_expr;
185 class local_space;
186 class map;
187 class map_list;
188 class mat;
189 class multi_aff;
190 class multi_id;
191 class multi_pw_aff;
192 class multi_union_pw_aff;
193 class multi_val;
194 class point;
195 class pw_aff;
196 class pw_aff_list;
197 class pw_multi_aff;
198 class pw_multi_aff_list;
199 class pw_qpolynomial;
200 class pw_qpolynomial_fold_list;
201 class pw_qpolynomial_list;
202 class qpolynomial;
203 class qpolynomial_list;
204 class schedule;
205 class schedule_constraints;
206 class schedule_node;
207 class set;
208 class set_list;
209 class space;
210 class term;
211 class union_access_info;
212 class union_flow;
213 class union_map;
214 class union_map_list;
215 class union_pw_aff;
216 class union_pw_aff_list;
217 class union_pw_multi_aff;
218 class union_pw_multi_aff_list;
219 class union_pw_qpolynomial;
220 class union_set;
221 class union_set_list;
222 class val;
223 class val_list;
224 class vec;
225 
226 // declarations for isl::aff
227 inline aff manage(__isl_take isl_aff *ptr);
228 inline aff manage_copy(__isl_keep isl_aff *ptr);
229 
230 class aff {
231   friend inline aff manage(__isl_take isl_aff *ptr);
232   friend inline aff manage_copy(__isl_keep isl_aff *ptr);
233 
234   isl_aff *ptr = nullptr;
235 
236   inline explicit aff(__isl_take isl_aff *ptr);
237 
238 public:
239   inline /* implicit */ aff();
240   inline /* implicit */ aff(const aff &obj);
241   inline explicit aff(isl::ctx ctx, const std::string &str);
242   inline explicit aff(isl::local_space ls, isl::val val);
243   inline explicit aff(isl::local_space ls);
244   inline aff &operator=(aff obj);
245   inline ~aff();
246   inline __isl_give isl_aff *copy() const &;
247   inline __isl_give isl_aff *copy() && = delete;
248   inline __isl_keep isl_aff *get() const;
249   inline __isl_give isl_aff *release();
250   inline bool is_null() const;
251   inline isl::ctx ctx() const;
252   inline void dump() const;
253 
254   inline isl::aff add(isl::aff aff2) const;
255   inline isl::aff add_coefficient_si(isl::dim type, int pos, int v) const;
256   inline isl::aff add_coefficient_val(isl::dim type, int pos, isl::val v) const;
257   inline isl::aff add_constant(isl::val v) const;
258   inline isl::aff add_constant_num_si(int v) const;
259   inline isl::aff add_constant_si(int v) const;
260   inline isl::aff add_dims(isl::dim type, unsigned int n) const;
261   inline isl::aff align_params(isl::space model) const;
262   inline isl::basic_set bind(isl::id id) const;
263   inline isl::aff ceil() const;
264   inline int coefficient_sgn(isl::dim type, int pos) const;
265   inline isl_size dim(isl::dim type) const;
266   inline isl::aff div(isl::aff aff2) const;
267   inline isl::aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
268   inline isl::basic_set eq_basic_set(isl::aff aff2) const;
269   inline isl::set eq_set(isl::aff aff2) const;
270   inline isl::val eval(isl::point pnt) const;
271   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
272   inline isl::aff floor() const;
273   inline isl::aff from_range() const;
274   inline isl::basic_set ge_basic_set(isl::aff aff2) const;
275   inline isl::set ge_set(isl::aff aff2) const;
276   inline isl::val get_coefficient_val(isl::dim type, int pos) const;
277   inline isl::val get_constant_val() const;
278   inline isl::val get_denominator_val() const;
279   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
280   inline isl::aff get_div(int pos) const;
281   inline isl::local_space get_domain_local_space() const;
282   inline isl::space get_domain_space() const;
283   inline uint32_t get_hash() const;
284   inline isl::local_space get_local_space() const;
285   inline isl::space get_space() const;
286   inline isl::aff gist(isl::set context) const;
287   inline isl::aff gist_params(isl::set context) const;
288   inline isl::basic_set gt_basic_set(isl::aff aff2) const;
289   inline isl::set gt_set(isl::aff aff2) const;
290   inline isl::aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
291   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
292   inline boolean involves_locals() const;
293   inline boolean is_cst() const;
294   inline boolean is_nan() const;
295   inline isl::basic_set le_basic_set(isl::aff aff2) const;
296   inline isl::set le_set(isl::aff aff2) const;
297   inline isl::basic_set lt_basic_set(isl::aff aff2) const;
298   inline isl::set lt_set(isl::aff aff2) const;
299   inline isl::aff mod(isl::val mod) const;
300   inline isl::aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
301   inline isl::aff mul(isl::aff aff2) const;
302   static inline isl::aff nan_on_domain(isl::local_space ls);
303   static inline isl::aff nan_on_domain_space(isl::space space);
304   inline isl::set ne_set(isl::aff aff2) const;
305   inline isl::aff neg() const;
306   inline isl::basic_set neg_basic_set() const;
307   static inline isl::aff param_on_domain_space_id(isl::space space, isl::id id);
308   inline boolean plain_is_equal(const isl::aff &aff2) const;
309   inline boolean plain_is_zero() const;
310   inline isl::aff project_domain_on_params() const;
311   inline isl::aff pullback(isl::multi_aff ma) const;
312   inline isl::aff pullback_aff(isl::aff aff2) const;
313   inline isl::aff scale(isl::val v) const;
314   inline isl::aff scale_down(isl::val v) const;
315   inline isl::aff scale_down_ui(unsigned int f) const;
316   inline isl::aff set_coefficient_si(isl::dim type, int pos, int v) const;
317   inline isl::aff set_coefficient_val(isl::dim type, int pos, isl::val v) const;
318   inline isl::aff set_constant_si(int v) const;
319   inline isl::aff set_constant_val(isl::val v) const;
320   inline isl::aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
321   inline isl::aff set_tuple_id(isl::dim type, isl::id id) const;
322   inline isl::aff sub(isl::aff aff2) const;
323   inline isl::aff unbind_params_insert_domain(isl::multi_id domain) const;
324   static inline isl::aff val_on_domain_space(isl::space space, isl::val val);
325   static inline isl::aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
326   inline isl::basic_set zero_basic_set() const;
327   static inline isl::aff zero_on_domain(isl::space space);
328 };
329 
330 // declarations for isl::aff_list
331 inline aff_list manage(__isl_take isl_aff_list *ptr);
332 inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
333 
334 class aff_list {
335   friend inline aff_list manage(__isl_take isl_aff_list *ptr);
336   friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
337 
338   isl_aff_list *ptr = nullptr;
339 
340   inline explicit aff_list(__isl_take isl_aff_list *ptr);
341 
342 public:
343   inline /* implicit */ aff_list();
344   inline /* implicit */ aff_list(const aff_list &obj);
345   inline aff_list &operator=(aff_list obj);
346   inline ~aff_list();
347   inline __isl_give isl_aff_list *copy() const &;
348   inline __isl_give isl_aff_list *copy() && = delete;
349   inline __isl_keep isl_aff_list *get() const;
350   inline __isl_give isl_aff_list *release();
351   inline bool is_null() const;
352   inline isl::ctx ctx() const;
353   inline void dump() const;
354 
355   inline isl::aff_list add(isl::aff el) const;
356   static inline isl::aff_list alloc(isl::ctx ctx, int n);
357   inline isl::aff_list clear() const;
358   inline isl::aff_list concat(isl::aff_list list2) const;
359   inline isl::aff_list drop(unsigned int first, unsigned int n) const;
360   inline stat foreach(const std::function<stat(aff)> &fn) const;
361   static inline isl::aff_list from_aff(isl::aff el);
362   inline isl::aff get_aff(int index) const;
363   inline isl::aff get_at(int index) const;
364   inline isl::aff_list insert(unsigned int pos, isl::aff el) const;
365   inline isl_size n_aff() const;
366   inline isl::aff_list reverse() const;
367   inline isl::aff_list set_aff(int index, isl::aff el) const;
368   inline isl_size size() const;
369   inline isl::aff_list swap(unsigned int pos1, unsigned int pos2) const;
370 };
371 
372 // declarations for isl::ast_build
373 inline ast_build manage(__isl_take isl_ast_build *ptr);
374 inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
375 
376 class ast_build {
377   friend inline ast_build manage(__isl_take isl_ast_build *ptr);
378   friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
379 
380   isl_ast_build *ptr = nullptr;
381 
382   inline explicit ast_build(__isl_take isl_ast_build *ptr);
383 
384 public:
385   inline /* implicit */ ast_build();
386   inline /* implicit */ ast_build(const ast_build &obj);
387   inline explicit ast_build(isl::ctx ctx);
388   inline ast_build &operator=(ast_build obj);
389   inline ~ast_build();
390   inline __isl_give isl_ast_build *copy() const &;
391   inline __isl_give isl_ast_build *copy() && = delete;
392   inline __isl_keep isl_ast_build *get() const;
393   inline __isl_give isl_ast_build *release();
394   inline bool is_null() const;
395   inline isl::ctx ctx() const;
396 
397   inline isl::ast_expr access_from(isl::multi_pw_aff mpa) const;
398   inline isl::ast_expr access_from(isl::pw_multi_aff pma) const;
399   inline isl::ast_node ast_from_schedule(isl::union_map schedule) const;
400   inline isl::ast_expr call_from(isl::multi_pw_aff mpa) const;
401   inline isl::ast_expr call_from(isl::pw_multi_aff pma) const;
402   inline isl::ast_expr expr_from(isl::pw_aff pa) const;
403   inline isl::ast_expr expr_from(isl::set set) const;
404   static inline isl::ast_build from_context(isl::set set);
405   inline isl::union_map get_schedule() const;
406   inline isl::space get_schedule_space() const;
407   inline isl::ast_node node_from(isl::schedule schedule) const;
408   inline isl::ast_node node_from_schedule_map(isl::union_map schedule) const;
409   inline isl::ast_build restrict(isl::set set) const;
410 };
411 
412 // declarations for isl::ast_expr
413 inline ast_expr manage(__isl_take isl_ast_expr *ptr);
414 inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
415 
416 class ast_expr {
417   friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
418   friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
419 
420   isl_ast_expr *ptr = nullptr;
421 
422   inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
423 
424 public:
425   inline /* implicit */ ast_expr();
426   inline /* implicit */ ast_expr(const ast_expr &obj);
427   inline ast_expr &operator=(ast_expr obj);
428   inline ~ast_expr();
429   inline __isl_give isl_ast_expr *copy() const &;
430   inline __isl_give isl_ast_expr *copy() && = delete;
431   inline __isl_keep isl_ast_expr *get() const;
432   inline __isl_give isl_ast_expr *release();
433   inline bool is_null() const;
434   inline isl::ctx ctx() const;
435   inline void dump() const;
436 
437   inline isl::ast_expr access(isl::ast_expr_list indices) const;
438   inline isl::ast_expr add(isl::ast_expr expr2) const;
439   inline isl::ast_expr address_of() const;
440   inline isl::ast_expr call(isl::ast_expr_list arguments) const;
441   inline isl::ast_expr div(isl::ast_expr expr2) const;
442   inline isl::ast_expr eq(isl::ast_expr expr2) const;
443   static inline isl::ast_expr from_id(isl::id id);
444   static inline isl::ast_expr from_val(isl::val v);
445   inline isl::ast_expr ge(isl::ast_expr expr2) const;
446   inline isl::id get_id() const;
447   inline isl::ast_expr get_op_arg(int pos) const;
448   inline isl_size get_op_n_arg() const;
449   inline isl::val get_val() const;
450   inline isl::ast_expr gt(isl::ast_expr expr2) const;
451   inline isl::id id_get_id() const;
452   inline isl::val int_get_val() const;
453   inline boolean is_equal(const isl::ast_expr &expr2) const;
454   inline isl::ast_expr le(isl::ast_expr expr2) const;
455   inline isl::ast_expr lt(isl::ast_expr expr2) const;
456   inline isl::ast_expr mul(isl::ast_expr expr2) const;
457   inline isl::ast_expr neg() const;
458   inline isl::ast_expr op_get_arg(int pos) const;
459   inline isl_size op_get_n_arg() const;
460   inline isl::ast_expr pdiv_q(isl::ast_expr expr2) const;
461   inline isl::ast_expr pdiv_r(isl::ast_expr expr2) const;
462   inline isl::ast_expr set_op_arg(int pos, isl::ast_expr arg) const;
463   inline isl::ast_expr sub(isl::ast_expr expr2) const;
464   inline isl::ast_expr substitute_ids(isl::id_to_ast_expr id2expr) const;
465   inline std::string to_C_str() const;
466 };
467 
468 // declarations for isl::ast_expr_list
469 inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
470 inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
471 
472 class ast_expr_list {
473   friend inline ast_expr_list manage(__isl_take isl_ast_expr_list *ptr);
474   friend inline ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr);
475 
476   isl_ast_expr_list *ptr = nullptr;
477 
478   inline explicit ast_expr_list(__isl_take isl_ast_expr_list *ptr);
479 
480 public:
481   inline /* implicit */ ast_expr_list();
482   inline /* implicit */ ast_expr_list(const ast_expr_list &obj);
483   inline ast_expr_list &operator=(ast_expr_list obj);
484   inline ~ast_expr_list();
485   inline __isl_give isl_ast_expr_list *copy() const &;
486   inline __isl_give isl_ast_expr_list *copy() && = delete;
487   inline __isl_keep isl_ast_expr_list *get() const;
488   inline __isl_give isl_ast_expr_list *release();
489   inline bool is_null() const;
490   inline isl::ctx ctx() const;
491   inline void dump() const;
492 
493   inline isl::ast_expr_list add(isl::ast_expr el) const;
494   static inline isl::ast_expr_list alloc(isl::ctx ctx, int n);
495   inline isl::ast_expr_list clear() const;
496   inline isl::ast_expr_list concat(isl::ast_expr_list list2) const;
497   inline isl::ast_expr_list drop(unsigned int first, unsigned int n) const;
498   inline stat foreach(const std::function<stat(ast_expr)> &fn) const;
499   static inline isl::ast_expr_list from_ast_expr(isl::ast_expr el);
500   inline isl::ast_expr get_ast_expr(int index) const;
501   inline isl::ast_expr get_at(int index) const;
502   inline isl::ast_expr_list insert(unsigned int pos, isl::ast_expr el) const;
503   inline isl_size n_ast_expr() const;
504   inline isl::ast_expr_list reverse() const;
505   inline isl::ast_expr_list set_ast_expr(int index, isl::ast_expr el) const;
506   inline isl_size size() const;
507   inline isl::ast_expr_list swap(unsigned int pos1, unsigned int pos2) const;
508 };
509 
510 // declarations for isl::ast_node
511 inline ast_node manage(__isl_take isl_ast_node *ptr);
512 inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
513 
514 class ast_node {
515   friend inline ast_node manage(__isl_take isl_ast_node *ptr);
516   friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
517 
518   isl_ast_node *ptr = nullptr;
519 
520   inline explicit ast_node(__isl_take isl_ast_node *ptr);
521 
522 public:
523   inline /* implicit */ ast_node();
524   inline /* implicit */ ast_node(const ast_node &obj);
525   inline ast_node &operator=(ast_node obj);
526   inline ~ast_node();
527   inline __isl_give isl_ast_node *copy() const &;
528   inline __isl_give isl_ast_node *copy() && = delete;
529   inline __isl_keep isl_ast_node *get() const;
530   inline __isl_give isl_ast_node *release();
531   inline bool is_null() const;
532   inline isl::ctx ctx() const;
533   inline void dump() const;
534 
535   static inline isl::ast_node alloc_user(isl::ast_expr expr);
536   inline isl::ast_node_list block_get_children() const;
537   inline isl::ast_node for_get_body() const;
538   inline isl::ast_expr for_get_cond() const;
539   inline isl::ast_expr for_get_inc() const;
540   inline isl::ast_expr for_get_init() const;
541   inline isl::ast_expr for_get_iterator() const;
542   inline boolean for_is_degenerate() const;
543   inline isl::id get_annotation() const;
544   inline isl::ast_expr if_get_cond() const;
545   inline isl::ast_node if_get_else() const;
546   inline isl::ast_node if_get_else_node() const;
547   inline isl::ast_node if_get_then() const;
548   inline isl::ast_node if_get_then_node() const;
549   inline boolean if_has_else() const;
550   inline boolean if_has_else_node() const;
551   inline isl::id mark_get_id() const;
552   inline isl::ast_node mark_get_node() const;
553   inline isl::ast_node set_annotation(isl::id annotation) const;
554   inline std::string to_C_str() const;
555   inline isl::ast_expr user_get_expr() const;
556 };
557 
558 // declarations for isl::ast_node_list
559 inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
560 inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
561 
562 class ast_node_list {
563   friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
564   friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
565 
566   isl_ast_node_list *ptr = nullptr;
567 
568   inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
569 
570 public:
571   inline /* implicit */ ast_node_list();
572   inline /* implicit */ ast_node_list(const ast_node_list &obj);
573   inline ast_node_list &operator=(ast_node_list obj);
574   inline ~ast_node_list();
575   inline __isl_give isl_ast_node_list *copy() const &;
576   inline __isl_give isl_ast_node_list *copy() && = delete;
577   inline __isl_keep isl_ast_node_list *get() const;
578   inline __isl_give isl_ast_node_list *release();
579   inline bool is_null() const;
580   inline isl::ctx ctx() const;
581   inline void dump() const;
582 
583   inline isl::ast_node_list add(isl::ast_node el) const;
584   static inline isl::ast_node_list alloc(isl::ctx ctx, int n);
585   inline isl::ast_node_list clear() const;
586   inline isl::ast_node_list concat(isl::ast_node_list list2) const;
587   inline isl::ast_node_list drop(unsigned int first, unsigned int n) const;
588   inline stat foreach(const std::function<stat(ast_node)> &fn) const;
589   static inline isl::ast_node_list from_ast_node(isl::ast_node el);
590   inline isl::ast_node get_ast_node(int index) const;
591   inline isl::ast_node get_at(int index) const;
592   inline isl::ast_node_list insert(unsigned int pos, isl::ast_node el) const;
593   inline isl_size n_ast_node() const;
594   inline isl::ast_node_list reverse() const;
595   inline isl::ast_node_list set_ast_node(int index, isl::ast_node el) const;
596   inline isl_size size() const;
597   inline isl::ast_node_list swap(unsigned int pos1, unsigned int pos2) const;
598 };
599 
600 // declarations for isl::basic_map
601 inline basic_map manage(__isl_take isl_basic_map *ptr);
602 inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
603 
604 class basic_map {
605   friend inline basic_map manage(__isl_take isl_basic_map *ptr);
606   friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
607 
608   isl_basic_map *ptr = nullptr;
609 
610   inline explicit basic_map(__isl_take isl_basic_map *ptr);
611 
612 public:
613   inline /* implicit */ basic_map();
614   inline /* implicit */ basic_map(const basic_map &obj);
615   inline explicit basic_map(isl::ctx ctx, const std::string &str);
616   inline basic_map &operator=(basic_map obj);
617   inline ~basic_map();
618   inline __isl_give isl_basic_map *copy() const &;
619   inline __isl_give isl_basic_map *copy() && = delete;
620   inline __isl_keep isl_basic_map *get() const;
621   inline __isl_give isl_basic_map *release();
622   inline bool is_null() const;
623   inline isl::ctx ctx() const;
624   inline void dump() const;
625 
626   inline isl::basic_map add_constraint(isl::constraint constraint) const;
627   inline isl::basic_map add_dims(isl::dim type, unsigned int n) const;
628   inline isl::basic_map affine_hull() const;
629   inline isl::basic_map align_params(isl::space model) const;
630   inline isl::basic_map apply_domain(isl::basic_map bmap2) const;
631   inline isl::basic_map apply_range(isl::basic_map bmap2) const;
632   inline boolean can_curry() const;
633   inline boolean can_uncurry() const;
634   inline boolean can_zip() const;
635   inline isl::basic_map curry() const;
636   inline isl::basic_set deltas() const;
637   inline isl::basic_map deltas_map() const;
638   inline isl::basic_map detect_equalities() const;
639   inline isl_size dim(isl::dim type) const;
640   inline isl::basic_set domain() const;
641   inline isl::basic_map domain_map() const;
642   inline isl::basic_map domain_product(isl::basic_map bmap2) const;
643   inline isl::basic_map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
644   inline isl::basic_map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
645   inline isl::basic_map drop_unused_params() const;
646   inline isl::basic_map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
647   static inline isl::basic_map empty(isl::space space);
648   static inline isl::basic_map equal(isl::space space, unsigned int n_equal);
649   inline isl::mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
650   inline isl::basic_map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
651   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
652   inline isl::basic_map fix_si(isl::dim type, unsigned int pos, int value) const;
653   inline isl::basic_map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
654   inline isl::basic_map flat_product(isl::basic_map bmap2) const;
655   inline isl::basic_map flat_range_product(isl::basic_map bmap2) const;
656   inline isl::basic_map flatten() const;
657   inline isl::basic_map flatten_domain() const;
658   inline isl::basic_map flatten_range() const;
659   inline stat foreach_constraint(const std::function<stat(constraint)> &fn) const;
660   static inline isl::basic_map from_aff(isl::aff aff);
661   static inline isl::basic_map from_aff_list(isl::space domain_space, isl::aff_list list);
662   static inline isl::basic_map from_constraint(isl::constraint constraint);
663   static inline isl::basic_map from_domain(isl::basic_set bset);
664   static inline isl::basic_map from_domain_and_range(isl::basic_set domain, isl::basic_set range);
665   static inline isl::basic_map from_multi_aff(isl::multi_aff maff);
666   static inline isl::basic_map from_qpolynomial(isl::qpolynomial qp);
667   static inline isl::basic_map from_range(isl::basic_set bset);
668   inline isl::constraint_list get_constraint_list() const;
669   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
670   inline isl::aff get_div(int pos) const;
671   inline isl::local_space get_local_space() const;
672   inline isl::space get_space() const;
673   inline std::string get_tuple_name(isl::dim type) const;
674   inline isl::basic_map gist(isl::basic_map context) const;
675   inline isl::basic_map gist_domain(isl::basic_set context) const;
676   inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
677   static inline isl::basic_map identity(isl::space space);
678   inline boolean image_is_bounded() const;
679   inline isl::mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const;
680   inline isl::basic_map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
681   inline isl::basic_map intersect(isl::basic_map bmap2) const;
682   inline isl::basic_map intersect_domain(isl::basic_set bset) const;
683   inline isl::basic_map intersect_range(isl::basic_set bset) const;
684   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
685   inline boolean is_disjoint(const isl::basic_map &bmap2) const;
686   inline boolean is_empty() const;
687   inline boolean is_equal(const isl::basic_map &bmap2) const;
688   inline boolean is_rational() const;
689   inline boolean is_single_valued() const;
690   inline boolean is_strict_subset(const isl::basic_map &bmap2) const;
691   inline boolean is_subset(const isl::basic_map &bmap2) const;
692   inline boolean is_universe() const;
693   static inline isl::basic_map less_at(isl::space space, unsigned int pos);
694   inline isl::map lexmax() const;
695   inline isl::map lexmin() const;
696   inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
697   inline isl::basic_map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
698   static inline isl::basic_map more_at(isl::space space, unsigned int pos);
699   inline isl::basic_map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
700   inline isl_size n_constraint() const;
701   static inline isl::basic_map nat_universe(isl::space space);
702   inline isl::basic_map neg() const;
703   inline isl::basic_map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
704   inline isl::basic_map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
705   inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
706   inline boolean plain_is_empty() const;
707   inline boolean plain_is_universe() const;
708   inline isl::basic_map preimage_domain_multi_aff(isl::multi_aff ma) const;
709   inline isl::basic_map preimage_range_multi_aff(isl::multi_aff ma) const;
710   inline isl::basic_map product(isl::basic_map bmap2) const;
711   inline isl::basic_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
712   inline isl::basic_set range() const;
713   inline isl::basic_map range_map() const;
714   inline isl::basic_map range_product(isl::basic_map bmap2) const;
715   inline isl::basic_map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
716   inline isl::basic_map remove_divs() const;
717   inline isl::basic_map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
718   inline isl::basic_map remove_redundancies() const;
719   inline isl::basic_map reverse() const;
720   inline isl::basic_map sample() const;
721   inline isl::basic_map set_tuple_id(isl::dim type, isl::id id) const;
722   inline isl::basic_map set_tuple_name(isl::dim type, const std::string &s) const;
723   inline isl::basic_map sum(isl::basic_map bmap2) const;
724   inline isl::basic_map uncurry() const;
725   inline isl::map unite(isl::basic_map bmap2) const;
726   static inline isl::basic_map universe(isl::space space);
727   inline isl::basic_map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
728   inline isl::basic_set wrap() const;
729   inline isl::basic_map zip() const;
730 };
731 
732 // declarations for isl::basic_map_list
733 inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
734 inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
735 
736 class basic_map_list {
737   friend inline basic_map_list manage(__isl_take isl_basic_map_list *ptr);
738   friend inline basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr);
739 
740   isl_basic_map_list *ptr = nullptr;
741 
742   inline explicit basic_map_list(__isl_take isl_basic_map_list *ptr);
743 
744 public:
745   inline /* implicit */ basic_map_list();
746   inline /* implicit */ basic_map_list(const basic_map_list &obj);
747   inline basic_map_list &operator=(basic_map_list obj);
748   inline ~basic_map_list();
749   inline __isl_give isl_basic_map_list *copy() const &;
750   inline __isl_give isl_basic_map_list *copy() && = delete;
751   inline __isl_keep isl_basic_map_list *get() const;
752   inline __isl_give isl_basic_map_list *release();
753   inline bool is_null() const;
754   inline isl::ctx ctx() const;
755   inline void dump() const;
756 
757   inline isl::basic_map_list add(isl::basic_map el) const;
758   static inline isl::basic_map_list alloc(isl::ctx ctx, int n);
759   inline isl::basic_map_list clear() const;
760   inline isl::basic_map_list concat(isl::basic_map_list list2) const;
761   inline isl::basic_map_list drop(unsigned int first, unsigned int n) const;
762   inline stat foreach(const std::function<stat(basic_map)> &fn) const;
763   static inline isl::basic_map_list from_basic_map(isl::basic_map el);
764   inline isl::basic_map get_at(int index) const;
765   inline isl::basic_map get_basic_map(int index) const;
766   inline isl::basic_map_list insert(unsigned int pos, isl::basic_map el) const;
767   inline isl_size n_basic_map() const;
768   inline isl::basic_map_list reverse() const;
769   inline isl::basic_map_list set_basic_map(int index, isl::basic_map el) const;
770   inline isl_size size() const;
771   inline isl::basic_map_list swap(unsigned int pos1, unsigned int pos2) const;
772 };
773 
774 // declarations for isl::basic_set
775 inline basic_set manage(__isl_take isl_basic_set *ptr);
776 inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
777 
778 class basic_set {
779   friend inline basic_set manage(__isl_take isl_basic_set *ptr);
780   friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
781 
782   isl_basic_set *ptr = nullptr;
783 
784   inline explicit basic_set(__isl_take isl_basic_set *ptr);
785 
786 public:
787   inline /* implicit */ basic_set();
788   inline /* implicit */ basic_set(const basic_set &obj);
789   inline /* implicit */ basic_set(isl::point pnt);
790   inline explicit basic_set(isl::ctx ctx, const std::string &str);
791   inline basic_set &operator=(basic_set obj);
792   inline ~basic_set();
793   inline __isl_give isl_basic_set *copy() const &;
794   inline __isl_give isl_basic_set *copy() && = delete;
795   inline __isl_keep isl_basic_set *get() const;
796   inline __isl_give isl_basic_set *release();
797   inline bool is_null() const;
798   inline isl::ctx ctx() const;
799   inline void dump() const;
800 
801   inline isl::basic_set affine_hull() const;
802   inline isl::basic_set align_params(isl::space model) const;
803   inline isl::basic_set apply(isl::basic_map bmap) const;
804   static inline isl::basic_set box_from_points(isl::point pnt1, isl::point pnt2);
805   inline isl::basic_set coefficients() const;
806   inline isl::basic_set detect_equalities() const;
807   inline isl_size dim(isl::dim type) const;
808   inline isl::val dim_max_val(int pos) const;
809   inline isl::basic_set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
810   inline isl::basic_set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
811   inline isl::basic_set drop_unused_params() const;
812   inline isl::basic_set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
813   static inline isl::basic_set empty(isl::space space);
814   inline isl::mat equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
815   inline isl::basic_set fix_si(isl::dim type, unsigned int pos, int value) const;
816   inline isl::basic_set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
817   inline isl::basic_set flat_product(isl::basic_set bset2) const;
818   inline isl::basic_set flatten() const;
819   inline stat foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<stat(constraint, constraint, basic_set)> &fn) const;
820   inline stat foreach_constraint(const std::function<stat(constraint)> &fn) const;
821   static inline isl::basic_set from_constraint(isl::constraint constraint);
822   static inline isl::basic_set from_multi_aff(isl::multi_aff ma);
823   inline isl::basic_set from_params() const;
824   inline isl::constraint_list get_constraint_list() const;
825   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
826   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
827   inline isl::aff get_div(int pos) const;
828   inline isl::local_space get_local_space() const;
829   inline isl::space get_space() const;
830   inline std::string get_tuple_name() const;
831   inline isl::basic_set gist(isl::basic_set context) const;
832   inline isl::mat inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const;
833   inline isl::basic_set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
834   inline isl::basic_set intersect(isl::basic_set bset2) const;
835   inline isl::basic_set intersect_params(isl::basic_set bset2) const;
836   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
837   inline boolean is_bounded() const;
838   inline boolean is_disjoint(const isl::basic_set &bset2) const;
839   inline boolean is_empty() const;
840   inline boolean is_equal(const isl::basic_set &bset2) const;
841   inline int is_rational() const;
842   inline boolean is_subset(const isl::basic_set &bset2) const;
843   inline boolean is_universe() const;
844   inline boolean is_wrapping() const;
845   inline isl::set lexmax() const;
846   inline isl::set lexmin() const;
847   inline isl::basic_set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
848   inline isl::val max_val(const isl::aff &obj) const;
849   inline isl::basic_set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
850   inline isl_size n_constraint() const;
851   inline isl_size n_dim() const;
852   static inline isl::basic_set nat_universe(isl::space space);
853   inline isl::basic_set neg() const;
854   inline isl::basic_set params() const;
855   inline boolean plain_is_empty() const;
856   inline boolean plain_is_equal(const isl::basic_set &bset2) const;
857   inline boolean plain_is_universe() const;
858   static inline isl::basic_set positive_orthant(isl::space space);
859   inline isl::basic_set preimage_multi_aff(isl::multi_aff ma) const;
860   inline isl::basic_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
861   inline isl::mat reduced_basis() const;
862   inline isl::basic_set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
863   inline isl::basic_set remove_divs() const;
864   inline isl::basic_set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
865   inline isl::basic_set remove_redundancies() const;
866   inline isl::basic_set remove_unknown_divs() const;
867   inline isl::basic_set sample() const;
868   inline isl::point sample_point() const;
869   inline isl::basic_set set_tuple_id(isl::id id) const;
870   inline isl::basic_set set_tuple_name(const std::string &s) const;
871   inline isl::basic_set solutions() const;
872   inline isl::set unite(isl::basic_set bset2) const;
873   static inline isl::basic_set universe(isl::space space);
874   inline isl::basic_map unwrap() const;
875   inline isl::basic_set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
876 };
877 
878 // declarations for isl::basic_set_list
879 inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
880 inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
881 
882 class basic_set_list {
883   friend inline basic_set_list manage(__isl_take isl_basic_set_list *ptr);
884   friend inline basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr);
885 
886   isl_basic_set_list *ptr = nullptr;
887 
888   inline explicit basic_set_list(__isl_take isl_basic_set_list *ptr);
889 
890 public:
891   inline /* implicit */ basic_set_list();
892   inline /* implicit */ basic_set_list(const basic_set_list &obj);
893   inline basic_set_list &operator=(basic_set_list obj);
894   inline ~basic_set_list();
895   inline __isl_give isl_basic_set_list *copy() const &;
896   inline __isl_give isl_basic_set_list *copy() && = delete;
897   inline __isl_keep isl_basic_set_list *get() const;
898   inline __isl_give isl_basic_set_list *release();
899   inline bool is_null() const;
900   inline isl::ctx ctx() const;
901   inline void dump() const;
902 
903   inline isl::basic_set_list add(isl::basic_set el) const;
904   static inline isl::basic_set_list alloc(isl::ctx ctx, int n);
905   inline isl::basic_set_list clear() const;
906   inline isl::basic_set_list coefficients() const;
907   inline isl::basic_set_list concat(isl::basic_set_list list2) const;
908   inline isl::basic_set_list drop(unsigned int first, unsigned int n) const;
909   inline stat foreach(const std::function<stat(basic_set)> &fn) const;
910   static inline isl::basic_set_list from_basic_set(isl::basic_set el);
911   inline isl::basic_set get_at(int index) const;
912   inline isl::basic_set get_basic_set(int index) const;
913   inline isl::basic_set_list insert(unsigned int pos, isl::basic_set el) const;
914   inline isl_size n_basic_set() const;
915   inline isl::basic_set_list reverse() const;
916   inline isl::basic_set_list set_basic_set(int index, isl::basic_set el) const;
917   inline isl_size size() const;
918   inline isl::basic_set_list swap(unsigned int pos1, unsigned int pos2) const;
919 };
920 
921 // declarations for isl::constraint
922 inline constraint manage(__isl_take isl_constraint *ptr);
923 inline constraint manage_copy(__isl_keep isl_constraint *ptr);
924 
925 class constraint {
926   friend inline constraint manage(__isl_take isl_constraint *ptr);
927   friend inline constraint manage_copy(__isl_keep isl_constraint *ptr);
928 
929   isl_constraint *ptr = nullptr;
930 
931   inline explicit constraint(__isl_take isl_constraint *ptr);
932 
933 public:
934   inline /* implicit */ constraint();
935   inline /* implicit */ constraint(const constraint &obj);
936   inline constraint &operator=(constraint obj);
937   inline ~constraint();
938   inline __isl_give isl_constraint *copy() const &;
939   inline __isl_give isl_constraint *copy() && = delete;
940   inline __isl_keep isl_constraint *get() const;
941   inline __isl_give isl_constraint *release();
942   inline bool is_null() const;
943   inline isl::ctx ctx() const;
944   inline void dump() const;
945 
946   static inline isl::constraint alloc_equality(isl::local_space ls);
947   static inline isl::constraint alloc_inequality(isl::local_space ls);
948   inline int cmp_last_non_zero(const isl::constraint &c2) const;
949   inline isl::aff get_aff() const;
950   inline isl::aff get_bound(isl::dim type, int pos) const;
951   inline isl::val get_coefficient_val(isl::dim type, int pos) const;
952   inline isl::val get_constant_val() const;
953   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
954   inline isl::aff get_div(int pos) const;
955   inline isl::local_space get_local_space() const;
956   inline isl::space get_space() const;
957   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
958   inline boolean is_div_constraint() const;
959   inline boolean is_lower_bound(isl::dim type, unsigned int pos) const;
960   inline boolean is_upper_bound(isl::dim type, unsigned int pos) const;
961   inline int plain_cmp(const isl::constraint &c2) const;
962   inline isl::constraint set_coefficient_si(isl::dim type, int pos, int v) const;
963   inline isl::constraint set_coefficient_val(isl::dim type, int pos, isl::val v) const;
964   inline isl::constraint set_constant_si(int v) const;
965   inline isl::constraint set_constant_val(isl::val v) const;
966 };
967 
968 // declarations for isl::constraint_list
969 inline constraint_list manage(__isl_take isl_constraint_list *ptr);
970 inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
971 
972 class constraint_list {
973   friend inline constraint_list manage(__isl_take isl_constraint_list *ptr);
974   friend inline constraint_list manage_copy(__isl_keep isl_constraint_list *ptr);
975 
976   isl_constraint_list *ptr = nullptr;
977 
978   inline explicit constraint_list(__isl_take isl_constraint_list *ptr);
979 
980 public:
981   inline /* implicit */ constraint_list();
982   inline /* implicit */ constraint_list(const constraint_list &obj);
983   inline constraint_list &operator=(constraint_list obj);
984   inline ~constraint_list();
985   inline __isl_give isl_constraint_list *copy() const &;
986   inline __isl_give isl_constraint_list *copy() && = delete;
987   inline __isl_keep isl_constraint_list *get() const;
988   inline __isl_give isl_constraint_list *release();
989   inline bool is_null() const;
990   inline isl::ctx ctx() const;
991   inline void dump() const;
992 
993   inline isl::constraint_list add(isl::constraint el) const;
994   static inline isl::constraint_list alloc(isl::ctx ctx, int n);
995   inline isl::constraint_list clear() const;
996   inline isl::constraint_list concat(isl::constraint_list list2) const;
997   inline isl::constraint_list drop(unsigned int first, unsigned int n) const;
998   inline stat foreach(const std::function<stat(constraint)> &fn) const;
999   static inline isl::constraint_list from_constraint(isl::constraint el);
1000   inline isl::constraint get_at(int index) const;
1001   inline isl::constraint get_constraint(int index) const;
1002   inline isl::constraint_list insert(unsigned int pos, isl::constraint el) const;
1003   inline isl_size n_constraint() const;
1004   inline isl::constraint_list reverse() const;
1005   inline isl::constraint_list set_constraint(int index, isl::constraint el) const;
1006   inline isl_size size() const;
1007   inline isl::constraint_list swap(unsigned int pos1, unsigned int pos2) const;
1008 };
1009 
1010 // declarations for isl::fixed_box
1011 inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1012 inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1013 
1014 class fixed_box {
1015   friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1016   friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1017 
1018   isl_fixed_box *ptr = nullptr;
1019 
1020   inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1021 
1022 public:
1023   inline /* implicit */ fixed_box();
1024   inline /* implicit */ fixed_box(const fixed_box &obj);
1025   inline fixed_box &operator=(fixed_box obj);
1026   inline ~fixed_box();
1027   inline __isl_give isl_fixed_box *copy() const &;
1028   inline __isl_give isl_fixed_box *copy() && = delete;
1029   inline __isl_keep isl_fixed_box *get() const;
1030   inline __isl_give isl_fixed_box *release();
1031   inline bool is_null() const;
1032   inline isl::ctx ctx() const;
1033   inline void dump() const;
1034 
1035   inline isl::multi_aff get_offset() const;
1036   inline isl::multi_val get_size() const;
1037   inline isl::space get_space() const;
1038   inline boolean is_valid() const;
1039 };
1040 
1041 // declarations for isl::id
1042 inline id manage(__isl_take isl_id *ptr);
1043 inline id manage_copy(__isl_keep isl_id *ptr);
1044 
1045 class id {
1046   friend inline id manage(__isl_take isl_id *ptr);
1047   friend inline id manage_copy(__isl_keep isl_id *ptr);
1048 
1049   isl_id *ptr = nullptr;
1050 
1051   inline explicit id(__isl_take isl_id *ptr);
1052 
1053 public:
1054   inline /* implicit */ id();
1055   inline /* implicit */ id(const id &obj);
1056   inline explicit id(isl::ctx ctx, const std::string &str);
1057   inline id &operator=(id obj);
1058   inline ~id();
1059   inline __isl_give isl_id *copy() const &;
1060   inline __isl_give isl_id *copy() && = delete;
1061   inline __isl_keep isl_id *get() const;
1062   inline __isl_give isl_id *release();
1063   inline bool is_null() const;
1064   inline isl::ctx ctx() const;
1065   inline void dump() const;
1066 
1067   static inline isl::id alloc(isl::ctx ctx, const std::string &name, void * user);
1068   inline uint32_t get_hash() const;
1069   inline std::string get_name() const;
1070   inline void * get_user() const;
1071 };
1072 
1073 // declarations for isl::id_list
1074 inline id_list manage(__isl_take isl_id_list *ptr);
1075 inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1076 
1077 class id_list {
1078   friend inline id_list manage(__isl_take isl_id_list *ptr);
1079   friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1080 
1081   isl_id_list *ptr = nullptr;
1082 
1083   inline explicit id_list(__isl_take isl_id_list *ptr);
1084 
1085 public:
1086   inline /* implicit */ id_list();
1087   inline /* implicit */ id_list(const id_list &obj);
1088   inline id_list &operator=(id_list obj);
1089   inline ~id_list();
1090   inline __isl_give isl_id_list *copy() const &;
1091   inline __isl_give isl_id_list *copy() && = delete;
1092   inline __isl_keep isl_id_list *get() const;
1093   inline __isl_give isl_id_list *release();
1094   inline bool is_null() const;
1095   inline isl::ctx ctx() const;
1096   inline void dump() const;
1097 
1098   inline isl::id_list add(isl::id el) const;
1099   static inline isl::id_list alloc(isl::ctx ctx, int n);
1100   inline isl::id_list clear() const;
1101   inline isl::id_list concat(isl::id_list list2) const;
1102   inline isl::id_list drop(unsigned int first, unsigned int n) const;
1103   inline stat foreach(const std::function<stat(id)> &fn) const;
1104   static inline isl::id_list from_id(isl::id el);
1105   inline isl::id get_at(int index) const;
1106   inline isl::id get_id(int index) const;
1107   inline isl::id_list insert(unsigned int pos, isl::id el) const;
1108   inline isl_size n_id() const;
1109   inline isl::id_list reverse() const;
1110   inline isl::id_list set_id(int index, isl::id el) const;
1111   inline isl_size size() const;
1112   inline isl::id_list swap(unsigned int pos1, unsigned int pos2) const;
1113 };
1114 
1115 // declarations for isl::id_to_ast_expr
1116 inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1117 inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1118 
1119 class id_to_ast_expr {
1120   friend inline id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr);
1121   friend inline id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr);
1122 
1123   isl_id_to_ast_expr *ptr = nullptr;
1124 
1125   inline explicit id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr);
1126 
1127 public:
1128   inline /* implicit */ id_to_ast_expr();
1129   inline /* implicit */ id_to_ast_expr(const id_to_ast_expr &obj);
1130   inline id_to_ast_expr &operator=(id_to_ast_expr obj);
1131   inline ~id_to_ast_expr();
1132   inline __isl_give isl_id_to_ast_expr *copy() const &;
1133   inline __isl_give isl_id_to_ast_expr *copy() && = delete;
1134   inline __isl_keep isl_id_to_ast_expr *get() const;
1135   inline __isl_give isl_id_to_ast_expr *release();
1136   inline bool is_null() const;
1137   inline isl::ctx ctx() const;
1138   inline void dump() const;
1139 
1140   static inline isl::id_to_ast_expr alloc(isl::ctx ctx, int min_size);
1141   inline isl::id_to_ast_expr drop(isl::id key) const;
1142   inline stat foreach(const std::function<stat(id, ast_expr)> &fn) const;
1143   inline isl::ast_expr get(isl::id key) const;
1144   inline boolean has(const isl::id &key) const;
1145   inline isl::id_to_ast_expr set(isl::id key, isl::ast_expr val) const;
1146 };
1147 
1148 // declarations for isl::local_space
1149 inline local_space manage(__isl_take isl_local_space *ptr);
1150 inline local_space manage_copy(__isl_keep isl_local_space *ptr);
1151 
1152 class local_space {
1153   friend inline local_space manage(__isl_take isl_local_space *ptr);
1154   friend inline local_space manage_copy(__isl_keep isl_local_space *ptr);
1155 
1156   isl_local_space *ptr = nullptr;
1157 
1158   inline explicit local_space(__isl_take isl_local_space *ptr);
1159 
1160 public:
1161   inline /* implicit */ local_space();
1162   inline /* implicit */ local_space(const local_space &obj);
1163   inline explicit local_space(isl::space space);
1164   inline local_space &operator=(local_space obj);
1165   inline ~local_space();
1166   inline __isl_give isl_local_space *copy() const &;
1167   inline __isl_give isl_local_space *copy() && = delete;
1168   inline __isl_keep isl_local_space *get() const;
1169   inline __isl_give isl_local_space *release();
1170   inline bool is_null() const;
1171   inline isl::ctx ctx() const;
1172   inline void dump() const;
1173 
1174   inline isl::local_space add_dims(isl::dim type, unsigned int n) const;
1175   inline isl_size dim(isl::dim type) const;
1176   inline isl::local_space domain() const;
1177   inline isl::local_space drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1178   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1179   inline isl::local_space flatten_domain() const;
1180   inline isl::local_space flatten_range() const;
1181   inline isl::local_space from_domain() const;
1182   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1183   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1184   inline isl::aff get_div(int pos) const;
1185   inline isl::space get_space() const;
1186   inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1187   inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
1188   inline isl::local_space insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1189   inline isl::local_space intersect(isl::local_space ls2) const;
1190   inline boolean is_equal(const isl::local_space &ls2) const;
1191   inline boolean is_params() const;
1192   inline boolean is_set() const;
1193   inline isl::local_space range() const;
1194   inline isl::local_space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1195   inline isl::local_space set_from_params() const;
1196   inline isl::local_space set_tuple_id(isl::dim type, isl::id id) const;
1197   inline isl::local_space wrap() const;
1198 };
1199 
1200 // declarations for isl::map
1201 inline map manage(__isl_take isl_map *ptr);
1202 inline map manage_copy(__isl_keep isl_map *ptr);
1203 
1204 class map {
1205   friend inline map manage(__isl_take isl_map *ptr);
1206   friend inline map manage_copy(__isl_keep isl_map *ptr);
1207 
1208   isl_map *ptr = nullptr;
1209 
1210   inline explicit map(__isl_take isl_map *ptr);
1211 
1212 public:
1213   inline /* implicit */ map();
1214   inline /* implicit */ map(const map &obj);
1215   inline /* implicit */ map(isl::basic_map bmap);
1216   inline explicit map(isl::ctx ctx, const std::string &str);
1217   inline map &operator=(map obj);
1218   inline ~map();
1219   inline __isl_give isl_map *copy() const &;
1220   inline __isl_give isl_map *copy() && = delete;
1221   inline __isl_keep isl_map *get() const;
1222   inline __isl_give isl_map *release();
1223   inline bool is_null() const;
1224   inline isl::ctx ctx() const;
1225   inline void dump() const;
1226 
1227   inline isl::map add_constraint(isl::constraint constraint) const;
1228   inline isl::map add_dims(isl::dim type, unsigned int n) const;
1229   inline isl::basic_map affine_hull() const;
1230   inline isl::map align_params(isl::space model) const;
1231   inline isl::map apply_domain(isl::map map2) const;
1232   inline isl::map apply_range(isl::map map2) const;
1233   inline isl::set bind_domain(isl::multi_id tuple) const;
1234   inline isl::set bind_range(isl::multi_id tuple) const;
1235   inline boolean can_curry() const;
1236   inline boolean can_range_curry() const;
1237   inline boolean can_uncurry() const;
1238   inline boolean can_zip() const;
1239   inline isl::map coalesce() const;
1240   inline isl::map complement() const;
1241   inline isl::basic_map convex_hull() const;
1242   inline isl::map curry() const;
1243   inline isl::set deltas() const;
1244   inline isl::map deltas_map() const;
1245   inline isl::map detect_equalities() const;
1246   inline isl_size dim(isl::dim type) const;
1247   inline isl::pw_aff dim_max(int pos) const;
1248   inline isl::pw_aff dim_min(int pos) const;
1249   inline isl::set domain() const;
1250   inline isl::map domain_factor_domain() const;
1251   inline isl::map domain_factor_range() const;
1252   inline boolean domain_is_wrapping() const;
1253   inline isl::map domain_map() const;
1254   inline isl::map domain_product(isl::map map2) const;
1255   inline isl_size domain_tuple_dim() const;
1256   inline isl::map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1257   inline isl::map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1258   inline isl::map drop_unused_params() const;
1259   inline isl::map eliminate(isl::dim type, unsigned int first, unsigned int n) const;
1260   static inline isl::map empty(isl::space space);
1261   inline isl::map eq_at(isl::multi_pw_aff mpa) const;
1262   inline isl::map equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1263   inline isl::map factor_domain() const;
1264   inline isl::map factor_range() const;
1265   inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1266   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1267   inline isl::map fix_si(isl::dim type, unsigned int pos, int value) const;
1268   inline isl::map fix_val(isl::dim type, unsigned int pos, isl::val v) const;
1269   inline isl::map fixed_power_val(isl::val exp) const;
1270   inline isl::map flat_domain_product(isl::map map2) const;
1271   inline isl::map flat_product(isl::map map2) const;
1272   inline isl::map flat_range_product(isl::map map2) const;
1273   inline isl::map flatten() const;
1274   inline isl::map flatten_domain() const;
1275   inline isl::map flatten_range() const;
1276   inline isl::map floordiv_val(isl::val d) const;
1277   inline stat foreach_basic_map(const std::function<stat(basic_map)> &fn) const;
1278   static inline isl::map from_aff(isl::aff aff);
1279   static inline isl::map from_domain(isl::set set);
1280   static inline isl::map from_domain_and_range(isl::set domain, isl::set range);
1281   static inline isl::map from_multi_aff(isl::multi_aff maff);
1282   static inline isl::map from_multi_pw_aff(isl::multi_pw_aff mpa);
1283   static inline isl::map from_pw_aff(isl::pw_aff pwaff);
1284   static inline isl::map from_pw_multi_aff(isl::pw_multi_aff pma);
1285   static inline isl::map from_range(isl::set set);
1286   static inline isl::map from_union_map(isl::union_map umap);
1287   inline isl::basic_map_list get_basic_map_list() const;
1288   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1289   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
1290   inline uint32_t get_hash() const;
1291   inline isl::fixed_box get_range_simple_fixed_box_hull() const;
1292   inline isl::space get_space() const;
1293   inline isl::id get_tuple_id(isl::dim type) const;
1294   inline std::string get_tuple_name(isl::dim type) const;
1295   inline isl::map gist(isl::map context) const;
1296   inline isl::map gist_basic_map(isl::basic_map context) const;
1297   inline isl::map gist_domain(isl::set context) const;
1298   inline isl::map gist_params(isl::set context) const;
1299   inline isl::map gist_range(isl::set context) const;
1300   inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
1301   inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
1302   inline boolean has_equal_space(const isl::map &map2) const;
1303   inline boolean has_tuple_id(isl::dim type) const;
1304   inline boolean has_tuple_name(isl::dim type) const;
1305   static inline isl::map identity(isl::space space);
1306   inline isl::map insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
1307   inline isl::map intersect(isl::map map2) const;
1308   inline isl::map intersect_domain(isl::set set) const;
1309   inline isl::map intersect_domain_factor_domain(isl::map factor) const;
1310   inline isl::map intersect_domain_factor_range(isl::map factor) const;
1311   inline isl::map intersect_params(isl::set params) const;
1312   inline isl::map intersect_range(isl::set set) const;
1313   inline isl::map intersect_range_factor_domain(isl::map factor) const;
1314   inline isl::map intersect_range_factor_range(isl::map factor) const;
1315   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1316   inline boolean is_bijective() const;
1317   inline boolean is_disjoint(const isl::map &map2) const;
1318   inline boolean is_empty() const;
1319   inline boolean is_equal(const isl::map &map2) const;
1320   inline boolean is_identity() const;
1321   inline boolean is_injective() const;
1322   inline boolean is_product() const;
1323   inline boolean is_single_valued() const;
1324   inline boolean is_strict_subset(const isl::map &map2) const;
1325   inline boolean is_subset(const isl::map &map2) const;
1326   inline int is_translation() const;
1327   static inline isl::map lex_ge(isl::space set_space);
1328   inline isl::map lex_ge_at(isl::multi_pw_aff mpa) const;
1329   static inline isl::map lex_ge_first(isl::space space, unsigned int n);
1330   inline isl::map lex_ge_map(isl::map map2) const;
1331   static inline isl::map lex_gt(isl::space set_space);
1332   inline isl::map lex_gt_at(isl::multi_pw_aff mpa) const;
1333   static inline isl::map lex_gt_first(isl::space space, unsigned int n);
1334   inline isl::map lex_gt_map(isl::map map2) const;
1335   static inline isl::map lex_le(isl::space set_space);
1336   inline isl::map lex_le_at(isl::multi_pw_aff mpa) const;
1337   static inline isl::map lex_le_first(isl::space space, unsigned int n);
1338   inline isl::map lex_le_map(isl::map map2) const;
1339   static inline isl::map lex_lt(isl::space set_space);
1340   inline isl::map lex_lt_at(isl::multi_pw_aff mpa) const;
1341   static inline isl::map lex_lt_first(isl::space space, unsigned int n);
1342   inline isl::map lex_lt_map(isl::map map2) const;
1343   inline isl::map lexmax() const;
1344   inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
1345   inline isl::map lexmin() const;
1346   inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
1347   inline isl::map lower_bound(isl::multi_pw_aff lower) const;
1348   inline isl::map lower_bound_si(isl::dim type, unsigned int pos, int value) const;
1349   inline isl::map lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
1350   inline isl::multi_pw_aff max_multi_pw_aff() const;
1351   inline isl::multi_pw_aff min_multi_pw_aff() const;
1352   inline isl::map move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1353   inline isl_size n_basic_map() const;
1354   static inline isl::map nat_universe(isl::space space);
1355   inline isl::map neg() const;
1356   inline isl::map oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1357   inline isl::map order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1358   inline isl::map order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1359   inline isl::map order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1360   inline isl::map order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
1361   inline isl::set params() const;
1362   inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
1363   inline boolean plain_is_empty() const;
1364   inline boolean plain_is_equal(const isl::map &map2) const;
1365   inline boolean plain_is_injective() const;
1366   inline boolean plain_is_single_valued() const;
1367   inline boolean plain_is_universe() const;
1368   inline isl::basic_map plain_unshifted_simple_hull() const;
1369   inline isl::basic_map polyhedral_hull() const;
1370   inline isl::map preimage_domain(isl::multi_aff ma) const;
1371   inline isl::map preimage_domain(isl::multi_pw_aff mpa) const;
1372   inline isl::map preimage_domain(isl::pw_multi_aff pma) const;
1373   inline isl::map preimage_range(isl::multi_aff ma) const;
1374   inline isl::map preimage_range(isl::pw_multi_aff pma) const;
1375   inline isl::map product(isl::map map2) const;
1376   inline isl::map project_out(isl::dim type, unsigned int first, unsigned int n) const;
1377   inline isl::map project_out_all_params() const;
1378   inline isl::set range() const;
1379   inline isl::map range_curry() const;
1380   inline isl::map range_factor_domain() const;
1381   inline isl::map range_factor_range() const;
1382   inline boolean range_is_wrapping() const;
1383   inline isl::map range_map() const;
1384   inline isl::map range_product(isl::map map2) const;
1385   inline isl::map range_reverse() const;
1386   inline isl_size range_tuple_dim() const;
1387   inline isl::map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
1388   inline isl::map remove_divs() const;
1389   inline isl::map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
1390   inline isl::map remove_redundancies() const;
1391   inline isl::map remove_unknown_divs() const;
1392   inline isl::map reset_tuple_id(isl::dim type) const;
1393   inline isl::map reset_user() const;
1394   inline isl::map reverse() const;
1395   inline isl::basic_map sample() const;
1396   inline isl::map set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1397   inline isl::map set_tuple_id(isl::dim type, isl::id id) const;
1398   inline isl::map set_tuple_name(isl::dim type, const std::string &s) const;
1399   inline isl::basic_map simple_hull() const;
1400   inline isl::map subtract(isl::map map2) const;
1401   inline isl::map subtract_domain(isl::set dom) const;
1402   inline isl::map subtract_range(isl::set dom) const;
1403   inline isl::map sum(isl::map map2) const;
1404   inline isl::map uncurry() const;
1405   inline isl::map unite(isl::map map2) const;
1406   static inline isl::map universe(isl::space space);
1407   inline isl::basic_map unshifted_simple_hull() const;
1408   inline isl::basic_map unshifted_simple_hull_from_map_list(isl::map_list list) const;
1409   inline isl::map upper_bound(isl::multi_pw_aff upper) const;
1410   inline isl::map upper_bound_si(isl::dim type, unsigned int pos, int value) const;
1411   inline isl::map upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
1412   inline isl::set wrap() const;
1413   inline isl::map zip() const;
1414 };
1415 
1416 // declarations for isl::map_list
1417 inline map_list manage(__isl_take isl_map_list *ptr);
1418 inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1419 
1420 class map_list {
1421   friend inline map_list manage(__isl_take isl_map_list *ptr);
1422   friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1423 
1424   isl_map_list *ptr = nullptr;
1425 
1426   inline explicit map_list(__isl_take isl_map_list *ptr);
1427 
1428 public:
1429   inline /* implicit */ map_list();
1430   inline /* implicit */ map_list(const map_list &obj);
1431   inline map_list &operator=(map_list obj);
1432   inline ~map_list();
1433   inline __isl_give isl_map_list *copy() const &;
1434   inline __isl_give isl_map_list *copy() && = delete;
1435   inline __isl_keep isl_map_list *get() const;
1436   inline __isl_give isl_map_list *release();
1437   inline bool is_null() const;
1438   inline isl::ctx ctx() const;
1439   inline void dump() const;
1440 
1441   inline isl::map_list add(isl::map el) const;
1442   static inline isl::map_list alloc(isl::ctx ctx, int n);
1443   inline isl::map_list clear() const;
1444   inline isl::map_list concat(isl::map_list list2) const;
1445   inline isl::map_list drop(unsigned int first, unsigned int n) const;
1446   inline stat foreach(const std::function<stat(map)> &fn) const;
1447   static inline isl::map_list from_map(isl::map el);
1448   inline isl::map get_at(int index) const;
1449   inline isl::map get_map(int index) const;
1450   inline isl::map_list insert(unsigned int pos, isl::map el) const;
1451   inline isl_size n_map() const;
1452   inline isl::map_list reverse() const;
1453   inline isl::map_list set_map(int index, isl::map el) const;
1454   inline isl_size size() const;
1455   inline isl::map_list swap(unsigned int pos1, unsigned int pos2) const;
1456 };
1457 
1458 // declarations for isl::mat
1459 inline mat manage(__isl_take isl_mat *ptr);
1460 inline mat manage_copy(__isl_keep isl_mat *ptr);
1461 
1462 class mat {
1463   friend inline mat manage(__isl_take isl_mat *ptr);
1464   friend inline mat manage_copy(__isl_keep isl_mat *ptr);
1465 
1466   isl_mat *ptr = nullptr;
1467 
1468   inline explicit mat(__isl_take isl_mat *ptr);
1469 
1470 public:
1471   inline /* implicit */ mat();
1472   inline /* implicit */ mat(const mat &obj);
1473   inline mat &operator=(mat obj);
1474   inline ~mat();
1475   inline __isl_give isl_mat *copy() const &;
1476   inline __isl_give isl_mat *copy() && = delete;
1477   inline __isl_keep isl_mat *get() const;
1478   inline __isl_give isl_mat *release();
1479   inline bool is_null() const;
1480   inline isl::ctx ctx() const;
1481   inline void dump() const;
1482 
1483   inline isl::mat add_rows(unsigned int n) const;
1484   inline isl::mat add_zero_cols(unsigned int n) const;
1485   inline isl::mat add_zero_rows(unsigned int n) const;
1486   inline isl::mat aff_direct_sum(isl::mat right) const;
1487   static inline isl::mat alloc(isl::ctx ctx, unsigned int n_row, unsigned int n_col);
1488   inline isl_size cols() const;
1489   inline isl::mat concat(isl::mat bot) const;
1490   inline isl::mat diagonal(isl::mat mat2) const;
1491   inline isl::mat drop_cols(unsigned int col, unsigned int n) const;
1492   inline isl::mat drop_rows(unsigned int row, unsigned int n) const;
1493   static inline isl::mat from_row_vec(isl::vec vec);
1494   inline isl::val get_element_val(int row, int col) const;
1495   inline boolean has_linearly_independent_rows(const isl::mat &mat2) const;
1496   inline int initial_non_zero_cols() const;
1497   inline isl::mat insert_cols(unsigned int col, unsigned int n) const;
1498   inline isl::mat insert_rows(unsigned int row, unsigned int n) const;
1499   inline isl::mat insert_zero_cols(unsigned int first, unsigned int n) const;
1500   inline isl::mat insert_zero_rows(unsigned int row, unsigned int n) const;
1501   inline isl::mat inverse_product(isl::mat right) const;
1502   inline boolean is_equal(const isl::mat &mat2) const;
1503   inline isl::mat lin_to_aff() const;
1504   inline isl::mat move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
1505   inline isl::mat normalize() const;
1506   inline isl::mat normalize_row(int row) const;
1507   inline isl::mat product(isl::mat right) const;
1508   inline isl_size rank() const;
1509   inline isl::mat right_inverse() const;
1510   inline isl::mat right_kernel() const;
1511   inline isl::mat row_basis() const;
1512   inline isl::mat row_basis_extension(isl::mat mat2) const;
1513   inline isl_size rows() const;
1514   inline isl::mat set_element_si(int row, int col, int v) const;
1515   inline isl::mat set_element_val(int row, int col, isl::val v) const;
1516   inline isl::mat swap_cols(unsigned int i, unsigned int j) const;
1517   inline isl::mat swap_rows(unsigned int i, unsigned int j) const;
1518   inline isl::mat transpose() const;
1519   inline isl::mat unimodular_complete(int row) const;
1520   inline isl::mat vec_concat(isl::vec bot) const;
1521   inline isl::vec vec_inverse_product(isl::vec vec) const;
1522   inline isl::vec vec_product(isl::vec vec) const;
1523 };
1524 
1525 // declarations for isl::multi_aff
1526 inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1527 inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1528 
1529 class multi_aff {
1530   friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
1531   friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
1532 
1533   isl_multi_aff *ptr = nullptr;
1534 
1535   inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
1536 
1537 public:
1538   inline /* implicit */ multi_aff();
1539   inline /* implicit */ multi_aff(const multi_aff &obj);
1540   inline /* implicit */ multi_aff(isl::aff aff);
1541   inline explicit multi_aff(isl::space space, isl::aff_list list);
1542   inline explicit multi_aff(isl::ctx ctx, const std::string &str);
1543   inline multi_aff &operator=(multi_aff obj);
1544   inline ~multi_aff();
1545   inline __isl_give isl_multi_aff *copy() const &;
1546   inline __isl_give isl_multi_aff *copy() && = delete;
1547   inline __isl_keep isl_multi_aff *get() const;
1548   inline __isl_give isl_multi_aff *release();
1549   inline bool is_null() const;
1550   inline isl::ctx ctx() const;
1551   inline void dump() const;
1552 
1553   inline isl::multi_aff add(isl::multi_aff multi2) const;
1554   inline isl::multi_aff add_constant(isl::multi_val mv) const;
1555   inline isl::multi_aff add_constant(isl::val v) const;
1556   inline isl::multi_aff add_dims(isl::dim type, unsigned int n) const;
1557   inline isl::multi_aff align_params(isl::space model) const;
1558   inline isl::basic_set bind(isl::multi_id tuple) const;
1559   inline isl::multi_aff bind_domain(isl::multi_id tuple) const;
1560   inline isl::multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
1561   inline isl_size dim(isl::dim type) const;
1562   static inline isl::multi_aff domain_map(isl::space space);
1563   inline isl::multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1564   inline isl::multi_aff factor_range() const;
1565   inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1566   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1567   inline isl::multi_aff flat_range_product(isl::multi_aff multi2) const;
1568   inline isl::multi_aff flatten_domain() const;
1569   inline isl::multi_aff flatten_range() const;
1570   inline isl::multi_aff floor() const;
1571   inline isl::multi_aff from_range() const;
1572   inline isl::aff get_aff(int pos) const;
1573   inline isl::aff get_at(int pos) const;
1574   inline isl::multi_val get_constant_multi_val() const;
1575   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1576   inline isl::space get_domain_space() const;
1577   inline isl::aff_list get_list() const;
1578   inline isl::space get_space() const;
1579   inline isl::id get_tuple_id(isl::dim type) const;
1580   inline std::string get_tuple_name(isl::dim type) const;
1581   inline isl::multi_aff gist(isl::set context) const;
1582   inline isl::multi_aff gist_params(isl::set context) const;
1583   inline boolean has_tuple_id(isl::dim type) const;
1584   static inline isl::multi_aff identity(isl::space space);
1585   inline isl::multi_aff identity() const;
1586   static inline isl::multi_aff identity_on_domain(isl::space space);
1587   inline isl::multi_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1588   inline isl::multi_aff insert_domain(isl::space domain) const;
1589   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1590   inline boolean involves_locals() const;
1591   inline boolean involves_nan() const;
1592   inline isl::set lex_ge_set(isl::multi_aff ma2) const;
1593   inline isl::set lex_gt_set(isl::multi_aff ma2) const;
1594   inline isl::set lex_le_set(isl::multi_aff ma2) const;
1595   inline isl::set lex_lt_set(isl::multi_aff ma2) const;
1596   inline isl::multi_aff mod_multi_val(isl::multi_val mv) const;
1597   inline isl::multi_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1598   static inline isl::multi_aff multi_val_on_space(isl::space space, isl::multi_val mv);
1599   inline isl::multi_aff neg() const;
1600   inline int plain_cmp(const isl::multi_aff &multi2) const;
1601   inline boolean plain_is_equal(const isl::multi_aff &multi2) const;
1602   inline isl::multi_aff product(isl::multi_aff multi2) const;
1603   inline isl::multi_aff project_domain_on_params() const;
1604   static inline isl::multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
1605   inline isl::multi_aff pullback(isl::multi_aff ma2) const;
1606   inline isl::multi_aff range_factor_domain() const;
1607   inline isl::multi_aff range_factor_range() const;
1608   inline boolean range_is_wrapping() const;
1609   static inline isl::multi_aff range_map(isl::space space);
1610   inline isl::multi_aff range_product(isl::multi_aff multi2) const;
1611   inline isl::multi_aff range_splice(unsigned int pos, isl::multi_aff multi2) const;
1612   inline isl::multi_aff reset_tuple_id(isl::dim type) const;
1613   inline isl::multi_aff reset_user() const;
1614   inline isl::multi_aff scale(isl::multi_val mv) const;
1615   inline isl::multi_aff scale(isl::val v) const;
1616   inline isl::multi_aff scale_down(isl::multi_val mv) const;
1617   inline isl::multi_aff scale_down(isl::val v) const;
1618   inline isl::multi_aff set_aff(int pos, isl::aff el) const;
1619   inline isl::multi_aff set_at(int pos, isl::aff el) const;
1620   inline isl::multi_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1621   inline isl::multi_aff set_tuple_id(isl::dim type, isl::id id) const;
1622   inline isl::multi_aff set_tuple_name(isl::dim type, const std::string &s) const;
1623   inline isl_size size() const;
1624   inline isl::multi_aff splice(unsigned int in_pos, unsigned int out_pos, isl::multi_aff multi2) const;
1625   inline isl::multi_aff sub(isl::multi_aff multi2) const;
1626   inline isl::multi_aff unbind_params_insert_domain(isl::multi_id domain) const;
1627   static inline isl::multi_aff zero(isl::space space);
1628 };
1629 
1630 // declarations for isl::multi_id
1631 inline multi_id manage(__isl_take isl_multi_id *ptr);
1632 inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
1633 
1634 class multi_id {
1635   friend inline multi_id manage(__isl_take isl_multi_id *ptr);
1636   friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
1637 
1638   isl_multi_id *ptr = nullptr;
1639 
1640   inline explicit multi_id(__isl_take isl_multi_id *ptr);
1641 
1642 public:
1643   inline /* implicit */ multi_id();
1644   inline /* implicit */ multi_id(const multi_id &obj);
1645   inline explicit multi_id(isl::space space, isl::id_list list);
1646   inline explicit multi_id(isl::ctx ctx, const std::string &str);
1647   inline multi_id &operator=(multi_id obj);
1648   inline ~multi_id();
1649   inline __isl_give isl_multi_id *copy() const &;
1650   inline __isl_give isl_multi_id *copy() && = delete;
1651   inline __isl_keep isl_multi_id *get() const;
1652   inline __isl_give isl_multi_id *release();
1653   inline bool is_null() const;
1654   inline isl::ctx ctx() const;
1655   inline void dump() const;
1656 
1657   inline isl::multi_id align_params(isl::space model) const;
1658   inline isl::multi_id factor_range() const;
1659   inline isl::multi_id flat_range_product(isl::multi_id multi2) const;
1660   inline isl::multi_id flatten_range() const;
1661   inline isl::multi_id from_range() const;
1662   inline isl::id get_at(int pos) const;
1663   inline isl::space get_domain_space() const;
1664   inline isl::id get_id(int pos) const;
1665   inline isl::id_list get_list() const;
1666   inline isl::space get_space() const;
1667   inline boolean plain_is_equal(const isl::multi_id &multi2) const;
1668   inline isl::multi_id range_factor_domain() const;
1669   inline isl::multi_id range_factor_range() const;
1670   inline boolean range_is_wrapping() const;
1671   inline isl::multi_id range_product(isl::multi_id multi2) const;
1672   inline isl::multi_id range_splice(unsigned int pos, isl::multi_id multi2) const;
1673   inline isl::multi_id reset_user() const;
1674   inline isl::multi_id set_at(int pos, isl::id el) const;
1675   inline isl::multi_id set_id(int pos, isl::id el) const;
1676   inline isl_size size() const;
1677 };
1678 
1679 // declarations for isl::multi_pw_aff
1680 inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1681 inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1682 
1683 class multi_pw_aff {
1684   friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
1685   friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
1686 
1687   isl_multi_pw_aff *ptr = nullptr;
1688 
1689   inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
1690 
1691 public:
1692   inline /* implicit */ multi_pw_aff();
1693   inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
1694   inline /* implicit */ multi_pw_aff(isl::aff aff);
1695   inline /* implicit */ multi_pw_aff(isl::multi_aff ma);
1696   inline /* implicit */ multi_pw_aff(isl::pw_aff pa);
1697   inline explicit multi_pw_aff(isl::space space, isl::pw_aff_list list);
1698   inline /* implicit */ multi_pw_aff(isl::pw_multi_aff pma);
1699   inline explicit multi_pw_aff(isl::ctx ctx, const std::string &str);
1700   inline multi_pw_aff &operator=(multi_pw_aff obj);
1701   inline ~multi_pw_aff();
1702   inline __isl_give isl_multi_pw_aff *copy() const &;
1703   inline __isl_give isl_multi_pw_aff *copy() && = delete;
1704   inline __isl_keep isl_multi_pw_aff *get() const;
1705   inline __isl_give isl_multi_pw_aff *release();
1706   inline bool is_null() const;
1707   inline isl::ctx ctx() const;
1708   inline void dump() const;
1709 
1710   inline isl::multi_pw_aff add(isl::multi_pw_aff multi2) const;
1711   inline isl::multi_pw_aff add_constant(isl::multi_val mv) const;
1712   inline isl::multi_pw_aff add_constant(isl::val v) const;
1713   inline isl::multi_pw_aff add_dims(isl::dim type, unsigned int n) const;
1714   inline isl::multi_pw_aff align_params(isl::space model) const;
1715   inline isl::set bind(isl::multi_id tuple) const;
1716   inline isl::multi_pw_aff bind_domain(isl::multi_id tuple) const;
1717   inline isl::multi_pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
1718   inline isl::multi_pw_aff coalesce() const;
1719   inline isl_size dim(isl::dim type) const;
1720   inline isl::set domain() const;
1721   inline isl::multi_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1722   inline isl::map eq_map(isl::multi_pw_aff mpa2) const;
1723   inline isl::multi_pw_aff factor_range() const;
1724   inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1725   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1726   inline isl::multi_pw_aff flat_range_product(isl::multi_pw_aff multi2) const;
1727   inline isl::multi_pw_aff flatten_range() const;
1728   inline isl::multi_pw_aff from_range() const;
1729   inline isl::pw_aff get_at(int pos) const;
1730   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1731   inline isl::space get_domain_space() const;
1732   inline uint32_t get_hash() const;
1733   inline isl::pw_aff_list get_list() const;
1734   inline isl::pw_aff get_pw_aff(int pos) const;
1735   inline isl::space get_space() const;
1736   inline isl::id get_tuple_id(isl::dim type) const;
1737   inline std::string get_tuple_name(isl::dim type) const;
1738   inline isl::multi_pw_aff gist(isl::set set) const;
1739   inline isl::multi_pw_aff gist_params(isl::set set) const;
1740   inline boolean has_tuple_id(isl::dim type) const;
1741   static inline isl::multi_pw_aff identity(isl::space space);
1742   inline isl::multi_pw_aff identity() const;
1743   static inline isl::multi_pw_aff identity_on_domain(isl::space space);
1744   inline isl::multi_pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1745   inline isl::multi_pw_aff insert_domain(isl::space domain) const;
1746   inline isl::multi_pw_aff intersect_domain(isl::set domain) const;
1747   inline isl::multi_pw_aff intersect_params(isl::set set) const;
1748   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1749   inline boolean involves_nan() const;
1750   inline boolean involves_param(const isl::id &id) const;
1751   inline boolean involves_param(const isl::id_list &list) const;
1752   inline boolean is_cst() const;
1753   inline boolean is_equal(const isl::multi_pw_aff &mpa2) const;
1754   inline isl::map lex_ge_map(isl::multi_pw_aff mpa2) const;
1755   inline isl::map lex_gt_map(isl::multi_pw_aff mpa2) const;
1756   inline isl::map lex_le_map(isl::multi_pw_aff mpa2) const;
1757   inline isl::map lex_lt_map(isl::multi_pw_aff mpa2) const;
1758   inline isl::multi_pw_aff max(isl::multi_pw_aff multi2) const;
1759   inline isl::multi_val max_multi_val() const;
1760   inline isl::multi_pw_aff min(isl::multi_pw_aff multi2) const;
1761   inline isl::multi_val min_multi_val() const;
1762   inline isl::multi_pw_aff mod_multi_val(isl::multi_val mv) const;
1763   inline isl::multi_pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
1764   inline isl::multi_pw_aff neg() const;
1765   inline boolean plain_is_equal(const isl::multi_pw_aff &multi2) const;
1766   inline isl::multi_pw_aff product(isl::multi_pw_aff multi2) const;
1767   inline isl::multi_pw_aff project_domain_on_params() const;
1768   inline isl::multi_pw_aff pullback(isl::multi_aff ma) const;
1769   inline isl::multi_pw_aff pullback(isl::multi_pw_aff mpa2) const;
1770   inline isl::multi_pw_aff pullback(isl::pw_multi_aff pma) const;
1771   inline isl::multi_pw_aff range_factor_domain() const;
1772   inline isl::multi_pw_aff range_factor_range() const;
1773   inline boolean range_is_wrapping() const;
1774   inline isl::multi_pw_aff range_product(isl::multi_pw_aff multi2) const;
1775   inline isl::multi_pw_aff range_splice(unsigned int pos, isl::multi_pw_aff multi2) const;
1776   inline isl::multi_pw_aff reset_tuple_id(isl::dim type) const;
1777   inline isl::multi_pw_aff reset_user() const;
1778   inline isl::multi_pw_aff scale(isl::multi_val mv) const;
1779   inline isl::multi_pw_aff scale(isl::val v) const;
1780   inline isl::multi_pw_aff scale_down(isl::multi_val mv) const;
1781   inline isl::multi_pw_aff scale_down(isl::val v) const;
1782   inline isl::multi_pw_aff set_at(int pos, isl::pw_aff el) const;
1783   inline isl::multi_pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1784   inline isl::multi_pw_aff set_pw_aff(int pos, isl::pw_aff el) const;
1785   inline isl::multi_pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1786   inline isl::multi_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1787   inline isl_size size() const;
1788   inline isl::multi_pw_aff splice(unsigned int in_pos, unsigned int out_pos, isl::multi_pw_aff multi2) const;
1789   inline isl::multi_pw_aff sub(isl::multi_pw_aff multi2) const;
1790   inline isl::multi_pw_aff unbind_params_insert_domain(isl::multi_id domain) const;
1791   inline isl::multi_pw_aff union_add(isl::multi_pw_aff mpa2) const;
1792   static inline isl::multi_pw_aff zero(isl::space space);
1793 };
1794 
1795 // declarations for isl::multi_union_pw_aff
1796 inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1797 inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1798 
1799 class multi_union_pw_aff {
1800   friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
1801   friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
1802 
1803   isl_multi_union_pw_aff *ptr = nullptr;
1804 
1805   inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
1806 
1807 public:
1808   inline /* implicit */ multi_union_pw_aff();
1809   inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
1810   inline /* implicit */ multi_union_pw_aff(isl::multi_pw_aff mpa);
1811   inline /* implicit */ multi_union_pw_aff(isl::union_pw_aff upa);
1812   inline explicit multi_union_pw_aff(isl::space space, isl::union_pw_aff_list list);
1813   inline explicit multi_union_pw_aff(isl::union_pw_multi_aff upma);
1814   inline explicit multi_union_pw_aff(isl::ctx ctx, const std::string &str);
1815   inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
1816   inline ~multi_union_pw_aff();
1817   inline __isl_give isl_multi_union_pw_aff *copy() const &;
1818   inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
1819   inline __isl_keep isl_multi_union_pw_aff *get() const;
1820   inline __isl_give isl_multi_union_pw_aff *release();
1821   inline bool is_null() const;
1822   inline isl::ctx ctx() const;
1823   inline void dump() const;
1824 
1825   inline isl::multi_union_pw_aff add(isl::multi_union_pw_aff multi2) const;
1826   inline isl::multi_union_pw_aff align_params(isl::space model) const;
1827   inline isl::union_pw_aff apply_aff(isl::aff aff) const;
1828   inline isl::union_pw_aff apply_pw_aff(isl::pw_aff pa) const;
1829   inline isl::multi_union_pw_aff apply_pw_multi_aff(isl::pw_multi_aff pma) const;
1830   inline isl::union_set bind(isl::multi_id tuple) const;
1831   inline isl::multi_union_pw_aff coalesce() const;
1832   inline isl_size dim(isl::dim type) const;
1833   inline isl::union_set domain() const;
1834   inline isl::multi_union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1835   inline isl::multi_pw_aff extract_multi_pw_aff(isl::space space) const;
1836   inline isl::multi_union_pw_aff factor_range() const;
1837   inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1838   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1839   inline isl::multi_union_pw_aff flat_range_product(isl::multi_union_pw_aff multi2) const;
1840   inline isl::multi_union_pw_aff flatten_range() const;
1841   inline isl::multi_union_pw_aff floor() const;
1842   static inline isl::multi_union_pw_aff from_multi_aff(isl::multi_aff ma);
1843   inline isl::multi_union_pw_aff from_range() const;
1844   static inline isl::multi_union_pw_aff from_union_map(isl::union_map umap);
1845   inline isl::union_pw_aff get_at(int pos) const;
1846   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1847   inline isl::space get_domain_space() const;
1848   inline isl::union_pw_aff_list get_list() const;
1849   inline isl::space get_space() const;
1850   inline isl::id get_tuple_id(isl::dim type) const;
1851   inline std::string get_tuple_name(isl::dim type) const;
1852   inline isl::union_pw_aff get_union_pw_aff(int pos) const;
1853   inline isl::multi_union_pw_aff gist(isl::union_set context) const;
1854   inline isl::multi_union_pw_aff gist_params(isl::set context) const;
1855   inline boolean has_tuple_id(isl::dim type) const;
1856   inline isl::multi_union_pw_aff intersect_domain(isl::union_set uset) const;
1857   inline isl::multi_union_pw_aff intersect_params(isl::set params) const;
1858   inline isl::multi_union_pw_aff intersect_range(isl::set set) const;
1859   inline boolean involves_nan() const;
1860   inline isl::multi_val max_multi_val() const;
1861   inline isl::multi_val min_multi_val() const;
1862   inline isl::multi_union_pw_aff mod_multi_val(isl::multi_val mv) const;
1863   static inline isl::multi_union_pw_aff multi_aff_on_domain(isl::union_set domain, isl::multi_aff ma);
1864   static inline isl::multi_union_pw_aff multi_val_on_domain(isl::union_set domain, isl::multi_val mv);
1865   inline isl::multi_union_pw_aff neg() const;
1866   inline boolean plain_is_equal(const isl::multi_union_pw_aff &multi2) const;
1867   inline isl::multi_union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
1868   static inline isl::multi_union_pw_aff pw_multi_aff_on_domain(isl::union_set domain, isl::pw_multi_aff pma);
1869   inline isl::multi_union_pw_aff range_factor_domain() const;
1870   inline isl::multi_union_pw_aff range_factor_range() const;
1871   inline boolean range_is_wrapping() const;
1872   inline isl::multi_union_pw_aff range_product(isl::multi_union_pw_aff multi2) const;
1873   inline isl::multi_union_pw_aff range_splice(unsigned int pos, isl::multi_union_pw_aff multi2) const;
1874   inline isl::multi_union_pw_aff reset_tuple_id(isl::dim type) const;
1875   inline isl::multi_union_pw_aff reset_user() const;
1876   inline isl::multi_union_pw_aff scale(isl::multi_val mv) const;
1877   inline isl::multi_union_pw_aff scale(isl::val v) const;
1878   inline isl::multi_union_pw_aff scale_down(isl::multi_val mv) const;
1879   inline isl::multi_union_pw_aff scale_down(isl::val v) const;
1880   inline isl::multi_union_pw_aff set_at(int pos, isl::union_pw_aff el) const;
1881   inline isl::multi_union_pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1882   inline isl::multi_union_pw_aff set_tuple_id(isl::dim type, isl::id id) const;
1883   inline isl::multi_union_pw_aff set_tuple_name(isl::dim type, const std::string &s) const;
1884   inline isl::multi_union_pw_aff set_union_pw_aff(int pos, isl::union_pw_aff el) const;
1885   inline isl_size size() const;
1886   inline isl::multi_union_pw_aff sub(isl::multi_union_pw_aff multi2) const;
1887   inline isl::multi_union_pw_aff union_add(isl::multi_union_pw_aff mupa2) const;
1888   static inline isl::multi_union_pw_aff zero(isl::space space);
1889   inline isl::union_set zero_union_set() const;
1890 };
1891 
1892 // declarations for isl::multi_val
1893 inline multi_val manage(__isl_take isl_multi_val *ptr);
1894 inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1895 
1896 class multi_val {
1897   friend inline multi_val manage(__isl_take isl_multi_val *ptr);
1898   friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
1899 
1900   isl_multi_val *ptr = nullptr;
1901 
1902   inline explicit multi_val(__isl_take isl_multi_val *ptr);
1903 
1904 public:
1905   inline /* implicit */ multi_val();
1906   inline /* implicit */ multi_val(const multi_val &obj);
1907   inline explicit multi_val(isl::space space, isl::val_list list);
1908   inline explicit multi_val(isl::ctx ctx, const std::string &str);
1909   inline multi_val &operator=(multi_val obj);
1910   inline ~multi_val();
1911   inline __isl_give isl_multi_val *copy() const &;
1912   inline __isl_give isl_multi_val *copy() && = delete;
1913   inline __isl_keep isl_multi_val *get() const;
1914   inline __isl_give isl_multi_val *release();
1915   inline bool is_null() const;
1916   inline isl::ctx ctx() const;
1917   inline void dump() const;
1918 
1919   inline isl::multi_val add(isl::multi_val multi2) const;
1920   inline isl::multi_val add(isl::val v) const;
1921   inline isl::multi_val add_dims(isl::dim type, unsigned int n) const;
1922   inline isl::multi_val align_params(isl::space model) const;
1923   inline isl_size dim(isl::dim type) const;
1924   inline isl::multi_val drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
1925   inline isl::multi_val factor_range() const;
1926   inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
1927   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
1928   inline isl::multi_val flat_range_product(isl::multi_val multi2) const;
1929   inline isl::multi_val flatten_range() const;
1930   inline isl::multi_val from_range() const;
1931   inline isl::val get_at(int pos) const;
1932   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
1933   inline isl::space get_domain_space() const;
1934   inline isl::val_list get_list() const;
1935   inline isl::space get_space() const;
1936   inline isl::id get_tuple_id(isl::dim type) const;
1937   inline std::string get_tuple_name(isl::dim type) const;
1938   inline isl::val get_val(int pos) const;
1939   inline boolean has_tuple_id(isl::dim type) const;
1940   inline isl::multi_val insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
1941   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
1942   inline boolean involves_nan() const;
1943   inline boolean is_zero() const;
1944   inline isl::multi_val max(isl::multi_val multi2) const;
1945   inline isl::multi_val min(isl::multi_val multi2) const;
1946   inline isl::multi_val mod_multi_val(isl::multi_val mv) const;
1947   inline isl::multi_val mod_val(isl::val v) const;
1948   inline isl::multi_val neg() const;
1949   inline boolean plain_is_equal(const isl::multi_val &multi2) const;
1950   inline isl::multi_val product(isl::multi_val multi2) const;
1951   inline isl::multi_val project_domain_on_params() const;
1952   inline isl::multi_val range_factor_domain() const;
1953   inline isl::multi_val range_factor_range() const;
1954   inline boolean range_is_wrapping() const;
1955   inline isl::multi_val range_product(isl::multi_val multi2) const;
1956   inline isl::multi_val range_splice(unsigned int pos, isl::multi_val multi2) const;
1957   inline isl::multi_val reset_tuple_id(isl::dim type) const;
1958   inline isl::multi_val reset_user() const;
1959   inline isl::multi_val scale(isl::multi_val mv) const;
1960   inline isl::multi_val scale(isl::val v) const;
1961   inline isl::multi_val scale_down(isl::multi_val mv) const;
1962   inline isl::multi_val scale_down(isl::val v) const;
1963   inline isl::multi_val set_at(int pos, isl::val el) const;
1964   inline isl::multi_val set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
1965   inline isl::multi_val set_tuple_id(isl::dim type, isl::id id) const;
1966   inline isl::multi_val set_tuple_name(isl::dim type, const std::string &s) const;
1967   inline isl::multi_val set_val(int pos, isl::val el) const;
1968   inline isl_size size() const;
1969   inline isl::multi_val splice(unsigned int in_pos, unsigned int out_pos, isl::multi_val multi2) const;
1970   inline isl::multi_val sub(isl::multi_val multi2) const;
1971   static inline isl::multi_val zero(isl::space space);
1972 };
1973 
1974 // declarations for isl::point
1975 inline point manage(__isl_take isl_point *ptr);
1976 inline point manage_copy(__isl_keep isl_point *ptr);
1977 
1978 class point {
1979   friend inline point manage(__isl_take isl_point *ptr);
1980   friend inline point manage_copy(__isl_keep isl_point *ptr);
1981 
1982   isl_point *ptr = nullptr;
1983 
1984   inline explicit point(__isl_take isl_point *ptr);
1985 
1986 public:
1987   inline /* implicit */ point();
1988   inline /* implicit */ point(const point &obj);
1989   inline explicit point(isl::space dim);
1990   inline point &operator=(point obj);
1991   inline ~point();
1992   inline __isl_give isl_point *copy() const &;
1993   inline __isl_give isl_point *copy() && = delete;
1994   inline __isl_keep isl_point *get() const;
1995   inline __isl_give isl_point *release();
1996   inline bool is_null() const;
1997   inline isl::ctx ctx() const;
1998   inline void dump() const;
1999 
2000   inline isl::point add_ui(isl::dim type, int pos, unsigned int val) const;
2001   inline isl::val get_coordinate_val(isl::dim type, int pos) const;
2002   inline isl::multi_val get_multi_val() const;
2003   inline isl::space get_space() const;
2004   inline isl::point set_coordinate_val(isl::dim type, int pos, isl::val v) const;
2005   inline isl::point sub_ui(isl::dim type, int pos, unsigned int val) const;
2006 };
2007 
2008 // declarations for isl::pw_aff
2009 inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2010 inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2011 
2012 class pw_aff {
2013   friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2014   friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2015 
2016   isl_pw_aff *ptr = nullptr;
2017 
2018   inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
2019 
2020 public:
2021   inline /* implicit */ pw_aff();
2022   inline /* implicit */ pw_aff(const pw_aff &obj);
2023   inline /* implicit */ pw_aff(isl::aff aff);
2024   inline explicit pw_aff(isl::ctx ctx, const std::string &str);
2025   inline explicit pw_aff(isl::set domain, isl::val v);
2026   inline explicit pw_aff(isl::local_space ls);
2027   inline pw_aff &operator=(pw_aff obj);
2028   inline ~pw_aff();
2029   inline __isl_give isl_pw_aff *copy() const &;
2030   inline __isl_give isl_pw_aff *copy() && = delete;
2031   inline __isl_keep isl_pw_aff *get() const;
2032   inline __isl_give isl_pw_aff *release();
2033   inline bool is_null() const;
2034   inline isl::ctx ctx() const;
2035   inline void dump() const;
2036 
2037   inline isl::pw_aff add(isl::pw_aff pwaff2) const;
2038   inline isl::pw_aff add_constant(isl::val v) const;
2039   inline isl::pw_aff add_dims(isl::dim type, unsigned int n) const;
2040   inline isl::pw_aff align_params(isl::space model) const;
2041   static inline isl::pw_aff alloc(isl::set set, isl::aff aff);
2042   inline isl::aff as_aff() const;
2043   inline isl::set bind(isl::id id) const;
2044   inline isl::pw_aff bind_domain(isl::multi_id tuple) const;
2045   inline isl::pw_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
2046   inline isl::pw_aff ceil() const;
2047   inline isl::pw_aff coalesce() const;
2048   inline isl::pw_aff cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const;
2049   inline isl_size dim(isl::dim type) const;
2050   inline isl::pw_aff div(isl::pw_aff pa2) const;
2051   inline isl::set domain() const;
2052   inline isl::pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2053   inline isl::pw_aff drop_unused_params() const;
2054   static inline isl::pw_aff empty(isl::space space);
2055   inline isl::map eq_map(isl::pw_aff pa2) const;
2056   inline isl::set eq_set(isl::pw_aff pwaff2) const;
2057   inline isl::val eval(isl::point pnt) const;
2058   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2059   inline isl::pw_aff floor() const;
2060   inline stat foreach_piece(const std::function<stat(set, aff)> &fn) const;
2061   inline isl::pw_aff from_range() const;
2062   inline isl::map ge_map(isl::pw_aff pa2) const;
2063   inline isl::set ge_set(isl::pw_aff pwaff2) const;
2064   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2065   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2066   inline isl::space get_domain_space() const;
2067   inline uint32_t get_hash() const;
2068   inline isl::space get_space() const;
2069   inline isl::id get_tuple_id(isl::dim type) const;
2070   inline isl::pw_aff gist(isl::set context) const;
2071   inline isl::pw_aff gist_params(isl::set context) const;
2072   inline isl::map gt_map(isl::pw_aff pa2) const;
2073   inline isl::set gt_set(isl::pw_aff pwaff2) const;
2074   inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
2075   inline boolean has_tuple_id(isl::dim type) const;
2076   inline isl::pw_aff insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2077   inline isl::pw_aff insert_domain(isl::space domain) const;
2078   inline isl::pw_aff intersect_domain(isl::set set) const;
2079   inline isl::pw_aff intersect_domain_wrapped_domain(isl::set set) const;
2080   inline isl::pw_aff intersect_domain_wrapped_range(isl::set set) const;
2081   inline isl::pw_aff intersect_params(isl::set set) const;
2082   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2083   inline boolean involves_nan() const;
2084   inline boolean involves_param_id(const isl::id &id) const;
2085   inline boolean is_cst() const;
2086   inline boolean is_empty() const;
2087   inline boolean is_equal(const isl::pw_aff &pa2) const;
2088   inline boolean isa_aff() const;
2089   inline isl::map le_map(isl::pw_aff pa2) const;
2090   inline isl::set le_set(isl::pw_aff pwaff2) const;
2091   inline isl::map lt_map(isl::pw_aff pa2) const;
2092   inline isl::set lt_set(isl::pw_aff pwaff2) const;
2093   inline isl::pw_aff max(isl::pw_aff pwaff2) const;
2094   inline isl::pw_aff min(isl::pw_aff pwaff2) const;
2095   inline isl::pw_aff mod(isl::val mod) const;
2096   inline isl::pw_aff move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2097   inline isl::pw_aff mul(isl::pw_aff pwaff2) const;
2098   inline isl_size n_piece() const;
2099   static inline isl::pw_aff nan_on_domain(isl::local_space ls);
2100   static inline isl::pw_aff nan_on_domain_space(isl::space space);
2101   inline isl::set ne_set(isl::pw_aff pwaff2) const;
2102   inline isl::pw_aff neg() const;
2103   inline isl::set non_zero_set() const;
2104   inline isl::set nonneg_set() const;
2105   static inline isl::pw_aff param_on_domain(isl::set domain, isl::id id);
2106   inline isl::set params() const;
2107   inline int plain_cmp(const isl::pw_aff &pa2) const;
2108   inline boolean plain_is_equal(const isl::pw_aff &pwaff2) const;
2109   inline isl::set pos_set() const;
2110   inline isl::pw_aff project_domain_on_params() const;
2111   inline isl::pw_aff pullback(isl::multi_aff ma) const;
2112   inline isl::pw_aff pullback(isl::multi_pw_aff mpa) const;
2113   inline isl::pw_aff pullback(isl::pw_multi_aff pma) const;
2114   inline isl::pw_aff reset_tuple_id(isl::dim type) const;
2115   inline isl::pw_aff reset_user() const;
2116   inline isl::pw_aff scale(isl::val v) const;
2117   inline isl::pw_aff scale_down(isl::val f) const;
2118   inline isl::pw_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2119   inline isl::pw_aff set_tuple_id(isl::dim type, isl::id id) const;
2120   inline isl::pw_aff sub(isl::pw_aff pwaff2) const;
2121   inline isl::pw_aff subtract_domain(isl::set set) const;
2122   inline isl::pw_aff tdiv_q(isl::pw_aff pa2) const;
2123   inline isl::pw_aff tdiv_r(isl::pw_aff pa2) const;
2124   inline isl::pw_aff union_add(isl::pw_aff pwaff2) const;
2125   inline isl::pw_aff union_max(isl::pw_aff pwaff2) const;
2126   inline isl::pw_aff union_min(isl::pw_aff pwaff2) const;
2127   static inline isl::pw_aff var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos);
2128   inline isl::set zero_set() const;
2129 };
2130 
2131 // declarations for isl::pw_aff_list
2132 inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2133 inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2134 
2135 class pw_aff_list {
2136   friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2137   friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2138 
2139   isl_pw_aff_list *ptr = nullptr;
2140 
2141   inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
2142 
2143 public:
2144   inline /* implicit */ pw_aff_list();
2145   inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
2146   inline pw_aff_list &operator=(pw_aff_list obj);
2147   inline ~pw_aff_list();
2148   inline __isl_give isl_pw_aff_list *copy() const &;
2149   inline __isl_give isl_pw_aff_list *copy() && = delete;
2150   inline __isl_keep isl_pw_aff_list *get() const;
2151   inline __isl_give isl_pw_aff_list *release();
2152   inline bool is_null() const;
2153   inline isl::ctx ctx() const;
2154   inline void dump() const;
2155 
2156   inline isl::pw_aff_list add(isl::pw_aff el) const;
2157   static inline isl::pw_aff_list alloc(isl::ctx ctx, int n);
2158   inline isl::pw_aff_list clear() const;
2159   inline isl::pw_aff_list concat(isl::pw_aff_list list2) const;
2160   inline isl::pw_aff_list drop(unsigned int first, unsigned int n) const;
2161   inline isl::set eq_set(isl::pw_aff_list list2) const;
2162   inline stat foreach(const std::function<stat(pw_aff)> &fn) const;
2163   static inline isl::pw_aff_list from_pw_aff(isl::pw_aff el);
2164   inline isl::set ge_set(isl::pw_aff_list list2) const;
2165   inline isl::pw_aff get_at(int index) const;
2166   inline isl::pw_aff get_pw_aff(int index) const;
2167   inline isl::set gt_set(isl::pw_aff_list list2) const;
2168   inline isl::pw_aff_list insert(unsigned int pos, isl::pw_aff el) const;
2169   inline isl::set le_set(isl::pw_aff_list list2) const;
2170   inline isl::set lt_set(isl::pw_aff_list list2) const;
2171   inline isl::pw_aff max() const;
2172   inline isl::pw_aff min() const;
2173   inline isl_size n_pw_aff() const;
2174   inline isl::set ne_set(isl::pw_aff_list list2) const;
2175   inline isl::pw_aff_list reverse() const;
2176   inline isl::pw_aff_list set_pw_aff(int index, isl::pw_aff el) const;
2177   inline isl_size size() const;
2178   inline isl::pw_aff_list swap(unsigned int pos1, unsigned int pos2) const;
2179 };
2180 
2181 // declarations for isl::pw_multi_aff
2182 inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2183 inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2184 
2185 class pw_multi_aff {
2186   friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2187   friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2188 
2189   isl_pw_multi_aff *ptr = nullptr;
2190 
2191   inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
2192 
2193 public:
2194   inline /* implicit */ pw_multi_aff();
2195   inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
2196   inline /* implicit */ pw_multi_aff(isl::multi_aff ma);
2197   inline /* implicit */ pw_multi_aff(isl::pw_aff pa);
2198   inline explicit pw_multi_aff(isl::ctx ctx, const std::string &str);
2199   inline pw_multi_aff &operator=(pw_multi_aff obj);
2200   inline ~pw_multi_aff();
2201   inline __isl_give isl_pw_multi_aff *copy() const &;
2202   inline __isl_give isl_pw_multi_aff *copy() && = delete;
2203   inline __isl_keep isl_pw_multi_aff *get() const;
2204   inline __isl_give isl_pw_multi_aff *release();
2205   inline bool is_null() const;
2206   inline isl::ctx ctx() const;
2207   inline void dump() const;
2208 
2209   inline isl::pw_multi_aff add(isl::pw_multi_aff pma2) const;
2210   inline isl::pw_multi_aff add_constant(isl::multi_val mv) const;
2211   inline isl::pw_multi_aff add_constant(isl::val v) const;
2212   inline isl::pw_multi_aff align_params(isl::space model) const;
2213   static inline isl::pw_multi_aff alloc(isl::set set, isl::multi_aff maff);
2214   inline isl::multi_aff as_multi_aff() const;
2215   inline isl::pw_multi_aff bind_domain(isl::multi_id tuple) const;
2216   inline isl::pw_multi_aff bind_domain_wrapped_domain(isl::multi_id tuple) const;
2217   inline isl::pw_multi_aff coalesce() const;
2218   inline isl_size dim(isl::dim type) const;
2219   inline isl::set domain() const;
2220   static inline isl::pw_multi_aff domain_map(isl::space space);
2221   inline isl::pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2222   inline isl::pw_multi_aff drop_unused_params() const;
2223   static inline isl::pw_multi_aff empty(isl::space space);
2224   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2225   inline isl::pw_multi_aff fix_si(isl::dim type, unsigned int pos, int value) const;
2226   inline isl::pw_multi_aff flat_range_product(isl::pw_multi_aff pma2) const;
2227   inline stat foreach_piece(const std::function<stat(set, multi_aff)> &fn) const;
2228   static inline isl::pw_multi_aff from_domain(isl::set set);
2229   static inline isl::pw_multi_aff from_map(isl::map map);
2230   static inline isl::pw_multi_aff from_multi_pw_aff(isl::multi_pw_aff mpa);
2231   static inline isl::pw_multi_aff from_set(isl::set set);
2232   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2233   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2234   inline isl::space get_domain_space() const;
2235   inline isl::pw_aff get_pw_aff(int pos) const;
2236   inline isl::space get_space() const;
2237   inline isl::id get_tuple_id(isl::dim type) const;
2238   inline std::string get_tuple_name(isl::dim type) const;
2239   inline isl::pw_multi_aff gist(isl::set set) const;
2240   inline isl::pw_multi_aff gist_params(isl::set set) const;
2241   inline boolean has_tuple_id(isl::dim type) const;
2242   inline boolean has_tuple_name(isl::dim type) const;
2243   static inline isl::pw_multi_aff identity(isl::space space);
2244   static inline isl::pw_multi_aff identity_on_domain(isl::space space);
2245   inline isl::pw_multi_aff insert_domain(isl::space domain) const;
2246   inline isl::pw_multi_aff intersect_domain(isl::set set) const;
2247   inline isl::pw_multi_aff intersect_domain_wrapped_domain(isl::set set) const;
2248   inline isl::pw_multi_aff intersect_domain_wrapped_range(isl::set set) const;
2249   inline isl::pw_multi_aff intersect_params(isl::set set) const;
2250   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2251   inline boolean involves_locals() const;
2252   inline boolean involves_nan() const;
2253   inline boolean involves_param_id(const isl::id &id) const;
2254   inline boolean is_equal(const isl::pw_multi_aff &pma2) const;
2255   inline boolean isa_multi_aff() const;
2256   inline isl::multi_val max_multi_val() const;
2257   inline isl::multi_val min_multi_val() const;
2258   static inline isl::pw_multi_aff multi_val_on_domain(isl::set domain, isl::multi_val mv);
2259   inline isl_size n_piece() const;
2260   inline isl::pw_multi_aff neg() const;
2261   inline boolean plain_is_equal(const isl::pw_multi_aff &pma2) const;
2262   inline isl::pw_multi_aff preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const;
2263   inline isl::pw_multi_aff product(isl::pw_multi_aff pma2) const;
2264   inline isl::pw_multi_aff project_domain_on_params() const;
2265   static inline isl::pw_multi_aff project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n);
2266   inline isl::pw_multi_aff pullback(isl::multi_aff ma) const;
2267   inline isl::pw_multi_aff pullback(isl::pw_multi_aff pma2) const;
2268   inline isl::pw_multi_aff range_factor_domain() const;
2269   inline isl::pw_multi_aff range_factor_range() const;
2270   static inline isl::pw_multi_aff range_map(isl::space space);
2271   inline isl::pw_multi_aff range_product(isl::pw_multi_aff pma2) const;
2272   inline isl::pw_multi_aff reset_tuple_id(isl::dim type) const;
2273   inline isl::pw_multi_aff reset_user() const;
2274   inline isl::pw_multi_aff scale(isl::val v) const;
2275   inline isl::pw_multi_aff scale_down(isl::val v) const;
2276   inline isl::pw_multi_aff scale_multi_val(isl::multi_val mv) const;
2277   inline isl::pw_multi_aff set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2278   inline isl::pw_multi_aff set_pw_aff(unsigned int pos, isl::pw_aff pa) const;
2279   inline isl::pw_multi_aff set_tuple_id(isl::dim type, isl::id id) const;
2280   inline isl::pw_multi_aff sub(isl::pw_multi_aff pma2) const;
2281   inline isl::pw_multi_aff subtract_domain(isl::set set) const;
2282   inline isl::pw_multi_aff union_add(isl::pw_multi_aff pma2) const;
2283   inline isl::pw_multi_aff union_lexmax(isl::pw_multi_aff pma2) const;
2284   inline isl::pw_multi_aff union_lexmin(isl::pw_multi_aff pma2) const;
2285   static inline isl::pw_multi_aff zero(isl::space space);
2286 };
2287 
2288 // declarations for isl::pw_multi_aff_list
2289 inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2290 inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2291 
2292 class pw_multi_aff_list {
2293   friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2294   friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2295 
2296   isl_pw_multi_aff_list *ptr = nullptr;
2297 
2298   inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
2299 
2300 public:
2301   inline /* implicit */ pw_multi_aff_list();
2302   inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
2303   inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
2304   inline ~pw_multi_aff_list();
2305   inline __isl_give isl_pw_multi_aff_list *copy() const &;
2306   inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
2307   inline __isl_keep isl_pw_multi_aff_list *get() const;
2308   inline __isl_give isl_pw_multi_aff_list *release();
2309   inline bool is_null() const;
2310   inline isl::ctx ctx() const;
2311   inline void dump() const;
2312 
2313   inline isl::pw_multi_aff_list add(isl::pw_multi_aff el) const;
2314   static inline isl::pw_multi_aff_list alloc(isl::ctx ctx, int n);
2315   inline isl::pw_multi_aff_list clear() const;
2316   inline isl::pw_multi_aff_list concat(isl::pw_multi_aff_list list2) const;
2317   inline isl::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
2318   inline stat foreach(const std::function<stat(pw_multi_aff)> &fn) const;
2319   static inline isl::pw_multi_aff_list from_pw_multi_aff(isl::pw_multi_aff el);
2320   inline isl::pw_multi_aff get_at(int index) const;
2321   inline isl::pw_multi_aff get_pw_multi_aff(int index) const;
2322   inline isl::pw_multi_aff_list insert(unsigned int pos, isl::pw_multi_aff el) const;
2323   inline isl_size n_pw_multi_aff() const;
2324   inline isl::pw_multi_aff_list reverse() const;
2325   inline isl::pw_multi_aff_list set_pw_multi_aff(int index, isl::pw_multi_aff el) const;
2326   inline isl_size size() const;
2327   inline isl::pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const;
2328 };
2329 
2330 // declarations for isl::pw_qpolynomial
2331 inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2332 inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2333 
2334 class pw_qpolynomial {
2335   friend inline pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr);
2336   friend inline pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr);
2337 
2338   isl_pw_qpolynomial *ptr = nullptr;
2339 
2340   inline explicit pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr);
2341 
2342 public:
2343   inline /* implicit */ pw_qpolynomial();
2344   inline /* implicit */ pw_qpolynomial(const pw_qpolynomial &obj);
2345   inline explicit pw_qpolynomial(isl::ctx ctx, const std::string &str);
2346   inline pw_qpolynomial &operator=(pw_qpolynomial obj);
2347   inline ~pw_qpolynomial();
2348   inline __isl_give isl_pw_qpolynomial *copy() const &;
2349   inline __isl_give isl_pw_qpolynomial *copy() && = delete;
2350   inline __isl_keep isl_pw_qpolynomial *get() const;
2351   inline __isl_give isl_pw_qpolynomial *release();
2352   inline bool is_null() const;
2353   inline isl::ctx ctx() const;
2354   inline void dump() const;
2355 
2356   inline isl::pw_qpolynomial add(isl::pw_qpolynomial pwqp2) const;
2357   inline isl::pw_qpolynomial add_dims(isl::dim type, unsigned int n) const;
2358   static inline isl::pw_qpolynomial alloc(isl::set set, isl::qpolynomial qp);
2359   inline isl::qpolynomial as_qpolynomial() const;
2360   inline isl::pw_qpolynomial coalesce() const;
2361   inline isl_size dim(isl::dim type) const;
2362   inline isl::set domain() const;
2363   inline isl::pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2364   inline isl::pw_qpolynomial drop_unused_params() const;
2365   inline isl::val eval(isl::point pnt) const;
2366   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2367   inline isl::pw_qpolynomial fix_val(isl::dim type, unsigned int n, isl::val v) const;
2368   inline stat foreach_piece(const std::function<stat(set, qpolynomial)> &fn) const;
2369   static inline isl::pw_qpolynomial from_pw_aff(isl::pw_aff pwaff);
2370   static inline isl::pw_qpolynomial from_qpolynomial(isl::qpolynomial qp);
2371   inline isl::pw_qpolynomial from_range() const;
2372   inline isl::space get_domain_space() const;
2373   inline isl::space get_space() const;
2374   inline isl::pw_qpolynomial gist(isl::set context) const;
2375   inline isl::pw_qpolynomial gist_params(isl::set context) const;
2376   inline boolean has_equal_space(const isl::pw_qpolynomial &pwqp2) const;
2377   inline isl::pw_qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2378   inline isl::pw_qpolynomial intersect_domain(isl::set set) const;
2379   inline isl::pw_qpolynomial intersect_domain_wrapped_domain(isl::set set) const;
2380   inline isl::pw_qpolynomial intersect_domain_wrapped_range(isl::set set) const;
2381   inline isl::pw_qpolynomial intersect_params(isl::set set) const;
2382   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2383   inline boolean involves_nan() const;
2384   inline boolean involves_param_id(const isl::id &id) const;
2385   inline boolean is_zero() const;
2386   inline boolean isa_qpolynomial() const;
2387   inline isl::val max() const;
2388   inline isl::val min() const;
2389   inline isl::pw_qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2390   inline isl::pw_qpolynomial mul(isl::pw_qpolynomial pwqp2) const;
2391   inline isl_size n_piece() const;
2392   inline isl::pw_qpolynomial neg() const;
2393   inline boolean plain_is_equal(const isl::pw_qpolynomial &pwqp2) const;
2394   inline isl::pw_qpolynomial pow(unsigned int exponent) const;
2395   inline isl::pw_qpolynomial project_domain_on_params() const;
2396   inline isl::pw_qpolynomial reset_domain_space(isl::space space) const;
2397   inline isl::pw_qpolynomial reset_user() const;
2398   inline isl::pw_qpolynomial scale_down_val(isl::val v) const;
2399   inline isl::pw_qpolynomial scale_val(isl::val v) const;
2400   inline isl::pw_qpolynomial split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2401   inline isl::pw_qpolynomial split_periods(int max_periods) const;
2402   inline isl::pw_qpolynomial sub(isl::pw_qpolynomial pwqp2) const;
2403   inline isl::pw_qpolynomial subtract_domain(isl::set set) const;
2404   inline isl::pw_qpolynomial to_polynomial(int sign) const;
2405   static inline isl::pw_qpolynomial zero(isl::space space);
2406 };
2407 
2408 // declarations for isl::pw_qpolynomial_fold_list
2409 inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2410 inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr);
2411 
2412 class pw_qpolynomial_fold_list {
2413   friend inline pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2414   friend inline pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr);
2415 
2416   isl_pw_qpolynomial_fold_list *ptr = nullptr;
2417 
2418   inline explicit pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr);
2419 
2420 public:
2421   inline /* implicit */ pw_qpolynomial_fold_list();
2422   inline /* implicit */ pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj);
2423   inline pw_qpolynomial_fold_list &operator=(pw_qpolynomial_fold_list obj);
2424   inline ~pw_qpolynomial_fold_list();
2425   inline __isl_give isl_pw_qpolynomial_fold_list *copy() const &;
2426   inline __isl_give isl_pw_qpolynomial_fold_list *copy() && = delete;
2427   inline __isl_keep isl_pw_qpolynomial_fold_list *get() const;
2428   inline __isl_give isl_pw_qpolynomial_fold_list *release();
2429   inline bool is_null() const;
2430   inline isl::ctx ctx() const;
2431   inline void dump() const;
2432 
2433 };
2434 
2435 // declarations for isl::pw_qpolynomial_list
2436 inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr);
2437 inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr);
2438 
2439 class pw_qpolynomial_list {
2440   friend inline pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr);
2441   friend inline pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr);
2442 
2443   isl_pw_qpolynomial_list *ptr = nullptr;
2444 
2445   inline explicit pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr);
2446 
2447 public:
2448   inline /* implicit */ pw_qpolynomial_list();
2449   inline /* implicit */ pw_qpolynomial_list(const pw_qpolynomial_list &obj);
2450   inline pw_qpolynomial_list &operator=(pw_qpolynomial_list obj);
2451   inline ~pw_qpolynomial_list();
2452   inline __isl_give isl_pw_qpolynomial_list *copy() const &;
2453   inline __isl_give isl_pw_qpolynomial_list *copy() && = delete;
2454   inline __isl_keep isl_pw_qpolynomial_list *get() const;
2455   inline __isl_give isl_pw_qpolynomial_list *release();
2456   inline bool is_null() const;
2457   inline isl::ctx ctx() const;
2458   inline void dump() const;
2459 
2460   inline isl::pw_qpolynomial_list add(isl::pw_qpolynomial el) const;
2461   static inline isl::pw_qpolynomial_list alloc(isl::ctx ctx, int n);
2462   inline isl::pw_qpolynomial_list clear() const;
2463   inline isl::pw_qpolynomial_list concat(isl::pw_qpolynomial_list list2) const;
2464   inline isl::pw_qpolynomial_list drop(unsigned int first, unsigned int n) const;
2465   inline stat foreach(const std::function<stat(pw_qpolynomial)> &fn) const;
2466   static inline isl::pw_qpolynomial_list from_pw_qpolynomial(isl::pw_qpolynomial el);
2467   inline isl::pw_qpolynomial get_at(int index) const;
2468   inline isl::pw_qpolynomial get_pw_qpolynomial(int index) const;
2469   inline isl::pw_qpolynomial_list insert(unsigned int pos, isl::pw_qpolynomial el) const;
2470   inline isl_size n_pw_qpolynomial() const;
2471   inline isl::pw_qpolynomial_list reverse() const;
2472   inline isl::pw_qpolynomial_list set_pw_qpolynomial(int index, isl::pw_qpolynomial el) const;
2473   inline isl_size size() const;
2474   inline isl::pw_qpolynomial_list swap(unsigned int pos1, unsigned int pos2) const;
2475 };
2476 
2477 // declarations for isl::qpolynomial
2478 inline qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2479 inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2480 
2481 class qpolynomial {
2482   friend inline qpolynomial manage(__isl_take isl_qpolynomial *ptr);
2483   friend inline qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr);
2484 
2485   isl_qpolynomial *ptr = nullptr;
2486 
2487   inline explicit qpolynomial(__isl_take isl_qpolynomial *ptr);
2488 
2489 public:
2490   inline /* implicit */ qpolynomial();
2491   inline /* implicit */ qpolynomial(const qpolynomial &obj);
2492   inline qpolynomial &operator=(qpolynomial obj);
2493   inline ~qpolynomial();
2494   inline __isl_give isl_qpolynomial *copy() const &;
2495   inline __isl_give isl_qpolynomial *copy() && = delete;
2496   inline __isl_keep isl_qpolynomial *get() const;
2497   inline __isl_give isl_qpolynomial *release();
2498   inline bool is_null() const;
2499   inline isl::ctx ctx() const;
2500   inline void dump() const;
2501 
2502   inline isl::qpolynomial add(isl::qpolynomial qp2) const;
2503   inline isl::qpolynomial add_dims(isl::dim type, unsigned int n) const;
2504   inline isl::qpolynomial align_params(isl::space model) const;
2505   inline stat as_polynomial_on_domain(const isl::basic_set &bset, const std::function<stat(basic_set, qpolynomial)> &fn) const;
2506   inline isl_size dim(isl::dim type) const;
2507   inline isl::qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
2508   inline isl::val eval(isl::point pnt) const;
2509   inline stat foreach_term(const std::function<stat(term)> &fn) const;
2510   static inline isl::qpolynomial from_aff(isl::aff aff);
2511   static inline isl::qpolynomial from_constraint(isl::constraint c, isl::dim type, unsigned int pos);
2512   static inline isl::qpolynomial from_term(isl::term term);
2513   inline isl::val get_constant_val() const;
2514   inline isl::space get_domain_space() const;
2515   inline isl::space get_space() const;
2516   inline isl::qpolynomial gist(isl::set context) const;
2517   inline isl::qpolynomial gist_params(isl::set context) const;
2518   inline isl::qpolynomial homogenize() const;
2519   static inline isl::qpolynomial infty_on_domain(isl::space domain);
2520   inline isl::qpolynomial insert_dims(isl::dim type, unsigned int first, unsigned int n) const;
2521   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2522   inline boolean is_infty() const;
2523   inline boolean is_nan() const;
2524   inline boolean is_neginfty() const;
2525   inline boolean is_zero() const;
2526   inline isl::qpolynomial move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2527   inline isl::qpolynomial mul(isl::qpolynomial qp2) const;
2528   static inline isl::qpolynomial nan_on_domain(isl::space domain);
2529   inline isl::qpolynomial neg() const;
2530   static inline isl::qpolynomial neginfty_on_domain(isl::space domain);
2531   static inline isl::qpolynomial one_on_domain(isl::space domain);
2532   inline boolean plain_is_equal(const isl::qpolynomial &qp2) const;
2533   inline isl::qpolynomial pow(unsigned int power) const;
2534   inline isl::qpolynomial project_domain_on_params() const;
2535   inline isl::qpolynomial scale_down_val(isl::val v) const;
2536   inline isl::qpolynomial scale_val(isl::val v) const;
2537   inline int sgn() const;
2538   inline isl::qpolynomial sub(isl::qpolynomial qp2) const;
2539   static inline isl::qpolynomial val_on_domain(isl::space space, isl::val val);
2540   static inline isl::qpolynomial var_on_domain(isl::space domain, isl::dim type, unsigned int pos);
2541   static inline isl::qpolynomial zero_on_domain(isl::space domain);
2542 };
2543 
2544 // declarations for isl::qpolynomial_list
2545 inline qpolynomial_list manage(__isl_take isl_qpolynomial_list *ptr);
2546 inline qpolynomial_list manage_copy(__isl_keep isl_qpolynomial_list *ptr);
2547 
2548 class qpolynomial_list {
2549   friend inline qpolynomial_list manage(__isl_take isl_qpolynomial_list *ptr);
2550   friend inline qpolynomial_list manage_copy(__isl_keep isl_qpolynomial_list *ptr);
2551 
2552   isl_qpolynomial_list *ptr = nullptr;
2553 
2554   inline explicit qpolynomial_list(__isl_take isl_qpolynomial_list *ptr);
2555 
2556 public:
2557   inline /* implicit */ qpolynomial_list();
2558   inline /* implicit */ qpolynomial_list(const qpolynomial_list &obj);
2559   inline qpolynomial_list &operator=(qpolynomial_list obj);
2560   inline ~qpolynomial_list();
2561   inline __isl_give isl_qpolynomial_list *copy() const &;
2562   inline __isl_give isl_qpolynomial_list *copy() && = delete;
2563   inline __isl_keep isl_qpolynomial_list *get() const;
2564   inline __isl_give isl_qpolynomial_list *release();
2565   inline bool is_null() const;
2566   inline isl::ctx ctx() const;
2567   inline void dump() const;
2568 
2569   inline isl::qpolynomial_list add(isl::qpolynomial el) const;
2570   static inline isl::qpolynomial_list alloc(isl::ctx ctx, int n);
2571   inline isl::qpolynomial_list clear() const;
2572   inline isl::qpolynomial_list concat(isl::qpolynomial_list list2) const;
2573   inline isl::qpolynomial_list drop(unsigned int first, unsigned int n) const;
2574   inline stat foreach(const std::function<stat(qpolynomial)> &fn) const;
2575   static inline isl::qpolynomial_list from_qpolynomial(isl::qpolynomial el);
2576   inline isl::qpolynomial get_at(int index) const;
2577   inline isl::qpolynomial get_qpolynomial(int index) const;
2578   inline isl::qpolynomial_list insert(unsigned int pos, isl::qpolynomial el) const;
2579   inline isl_size n_qpolynomial() const;
2580   inline isl::qpolynomial_list reverse() const;
2581   inline isl::qpolynomial_list set_qpolynomial(int index, isl::qpolynomial el) const;
2582   inline isl_size size() const;
2583   inline isl::qpolynomial_list swap(unsigned int pos1, unsigned int pos2) const;
2584 };
2585 
2586 // declarations for isl::schedule
2587 inline schedule manage(__isl_take isl_schedule *ptr);
2588 inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2589 
2590 class schedule {
2591   friend inline schedule manage(__isl_take isl_schedule *ptr);
2592   friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2593 
2594   isl_schedule *ptr = nullptr;
2595 
2596   inline explicit schedule(__isl_take isl_schedule *ptr);
2597 
2598 public:
2599   inline /* implicit */ schedule();
2600   inline /* implicit */ schedule(const schedule &obj);
2601   inline explicit schedule(isl::ctx ctx, const std::string &str);
2602   inline schedule &operator=(schedule obj);
2603   inline ~schedule();
2604   inline __isl_give isl_schedule *copy() const &;
2605   inline __isl_give isl_schedule *copy() && = delete;
2606   inline __isl_keep isl_schedule *get() const;
2607   inline __isl_give isl_schedule *release();
2608   inline bool is_null() const;
2609   inline isl::ctx ctx() const;
2610   inline void dump() const;
2611 
2612   inline isl::schedule align_params(isl::space space) const;
2613   static inline isl::schedule empty(isl::space space);
2614   static inline isl::schedule from_domain(isl::union_set domain);
2615   inline isl::union_set get_domain() const;
2616   inline isl::union_map get_map() const;
2617   inline isl::schedule_node get_root() const;
2618   inline isl::schedule gist_domain_params(isl::set context) const;
2619   inline isl::schedule insert_context(isl::set context) const;
2620   inline isl::schedule insert_guard(isl::set guard) const;
2621   inline isl::schedule insert_partial_schedule(isl::multi_union_pw_aff partial) const;
2622   inline isl::schedule intersect_domain(isl::union_set domain) const;
2623   inline boolean plain_is_equal(const isl::schedule &schedule2) const;
2624   inline isl::schedule pullback(isl::union_pw_multi_aff upma) const;
2625   inline isl::schedule reset_user() const;
2626   inline isl::schedule sequence(isl::schedule schedule2) const;
2627 };
2628 
2629 // declarations for isl::schedule_constraints
2630 inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2631 inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2632 
2633 class schedule_constraints {
2634   friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
2635   friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
2636 
2637   isl_schedule_constraints *ptr = nullptr;
2638 
2639   inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
2640 
2641 public:
2642   inline /* implicit */ schedule_constraints();
2643   inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
2644   inline explicit schedule_constraints(isl::ctx ctx, const std::string &str);
2645   inline schedule_constraints &operator=(schedule_constraints obj);
2646   inline ~schedule_constraints();
2647   inline __isl_give isl_schedule_constraints *copy() const &;
2648   inline __isl_give isl_schedule_constraints *copy() && = delete;
2649   inline __isl_keep isl_schedule_constraints *get() const;
2650   inline __isl_give isl_schedule_constraints *release();
2651   inline bool is_null() const;
2652   inline isl::ctx ctx() const;
2653   inline void dump() const;
2654 
2655   inline isl::schedule_constraints apply(isl::union_map umap) const;
2656   inline isl::schedule compute_schedule() const;
2657   inline isl::union_map get_coincidence() const;
2658   inline isl::union_map get_conditional_validity() const;
2659   inline isl::union_map get_conditional_validity_condition() const;
2660   inline isl::set get_context() const;
2661   inline isl::union_set get_domain() const;
2662   inline isl::union_map get_proximity() const;
2663   inline isl::union_map get_validity() const;
2664   static inline isl::schedule_constraints on_domain(isl::union_set domain);
2665   inline isl::schedule_constraints set_coincidence(isl::union_map coincidence) const;
2666   inline isl::schedule_constraints set_conditional_validity(isl::union_map condition, isl::union_map validity) const;
2667   inline isl::schedule_constraints set_context(isl::set context) const;
2668   inline isl::schedule_constraints set_proximity(isl::union_map proximity) const;
2669   inline isl::schedule_constraints set_validity(isl::union_map validity) const;
2670 };
2671 
2672 // declarations for isl::schedule_node
2673 inline schedule_node manage(__isl_take isl_schedule_node *ptr);
2674 inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2675 
2676 class schedule_node {
2677   friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
2678   friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
2679 
2680   isl_schedule_node *ptr = nullptr;
2681 
2682   inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
2683 
2684 public:
2685   inline /* implicit */ schedule_node();
2686   inline /* implicit */ schedule_node(const schedule_node &obj);
2687   inline schedule_node &operator=(schedule_node obj);
2688   inline ~schedule_node();
2689   inline __isl_give isl_schedule_node *copy() const &;
2690   inline __isl_give isl_schedule_node *copy() && = delete;
2691   inline __isl_keep isl_schedule_node *get() const;
2692   inline __isl_give isl_schedule_node *release();
2693   inline bool is_null() const;
2694   inline isl::ctx ctx() const;
2695   inline void dump() const;
2696 
2697   inline isl::schedule_node align_params(isl::space space) const;
2698   inline isl::schedule_node ancestor(int generation) const;
2699   inline boolean band_member_get_coincident(int pos) const;
2700   inline isl::schedule_node band_member_set_coincident(int pos, int coincident) const;
2701   inline isl::schedule_node band_set_ast_build_options(isl::union_set options) const;
2702   inline isl::schedule_node child(int pos) const;
2703   inline isl::set context_get_context() const;
2704   inline isl::schedule_node cut() const;
2705   inline isl::union_set domain_get_domain() const;
2706   inline isl::union_pw_multi_aff expansion_get_contraction() const;
2707   inline isl::union_map expansion_get_expansion() const;
2708   inline isl::union_map extension_get_extension() const;
2709   inline isl::union_set filter_get_filter() const;
2710   inline isl::schedule_node first_child() const;
2711   inline stat foreach_ancestor_top_down(const std::function<stat(schedule_node)> &fn) const;
2712   static inline isl::schedule_node from_domain(isl::union_set domain);
2713   static inline isl::schedule_node from_extension(isl::union_map extension);
2714   inline isl_size get_ancestor_child_position(const isl::schedule_node &ancestor) const;
2715   inline isl::schedule_node get_child(int pos) const;
2716   inline isl_size get_child_position() const;
2717   inline isl::union_set get_domain() const;
2718   inline isl::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
2719   inline isl::union_map get_prefix_schedule_relation() const;
2720   inline isl::union_map get_prefix_schedule_union_map() const;
2721   inline isl::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
2722   inline isl::schedule get_schedule() const;
2723   inline isl_size get_schedule_depth() const;
2724   inline isl::schedule_node get_shared_ancestor(const isl::schedule_node &node2) const;
2725   inline isl::union_pw_multi_aff get_subtree_contraction() const;
2726   inline isl::union_map get_subtree_expansion() const;
2727   inline isl::union_map get_subtree_schedule_union_map() const;
2728   inline isl_size get_tree_depth() const;
2729   inline isl::union_set get_universe_domain() const;
2730   inline isl::schedule_node graft_after(isl::schedule_node graft) const;
2731   inline isl::schedule_node graft_before(isl::schedule_node graft) const;
2732   inline isl::schedule_node group(isl::id group_id) const;
2733   inline isl::set guard_get_guard() const;
2734   inline boolean has_children() const;
2735   inline boolean has_next_sibling() const;
2736   inline boolean has_parent() const;
2737   inline boolean has_previous_sibling() const;
2738   inline isl::schedule_node insert_context(isl::set context) const;
2739   inline isl::schedule_node insert_filter(isl::union_set filter) const;
2740   inline isl::schedule_node insert_guard(isl::set context) const;
2741   inline isl::schedule_node insert_mark(isl::id mark) const;
2742   inline isl::schedule_node insert_partial_schedule(isl::multi_union_pw_aff schedule) const;
2743   inline isl::schedule_node insert_sequence(isl::union_set_list filters) const;
2744   inline isl::schedule_node insert_set(isl::union_set_list filters) const;
2745   inline boolean is_equal(const isl::schedule_node &node2) const;
2746   inline boolean is_subtree_anchored() const;
2747   inline isl::id mark_get_id() const;
2748   inline isl_size n_children() const;
2749   inline isl::schedule_node next_sibling() const;
2750   inline isl::schedule_node order_after(isl::union_set filter) const;
2751   inline isl::schedule_node order_before(isl::union_set filter) const;
2752   inline isl::schedule_node parent() const;
2753   inline isl::schedule_node previous_sibling() const;
2754   inline isl::schedule_node reset_user() const;
2755   inline isl::schedule_node root() const;
2756   inline isl::schedule_node sequence_splice_child(int pos) const;
2757 };
2758 
2759 // declarations for isl::set
2760 inline set manage(__isl_take isl_set *ptr);
2761 inline set manage_copy(__isl_keep isl_set *ptr);
2762 
2763 class set {
2764   friend inline set manage(__isl_take isl_set *ptr);
2765   friend inline set manage_copy(__isl_keep isl_set *ptr);
2766 
2767   isl_set *ptr = nullptr;
2768 
2769   inline explicit set(__isl_take isl_set *ptr);
2770 
2771 public:
2772   inline /* implicit */ set();
2773   inline /* implicit */ set(const set &obj);
2774   inline /* implicit */ set(isl::basic_set bset);
2775   inline /* implicit */ set(isl::point pnt);
2776   inline explicit set(isl::union_set uset);
2777   inline explicit set(isl::ctx ctx, const std::string &str);
2778   inline set &operator=(set obj);
2779   inline ~set();
2780   inline __isl_give isl_set *copy() const &;
2781   inline __isl_give isl_set *copy() && = delete;
2782   inline __isl_keep isl_set *get() const;
2783   inline __isl_give isl_set *release();
2784   inline bool is_null() const;
2785   inline isl::ctx ctx() const;
2786   inline void dump() const;
2787 
2788   inline isl::set add_constraint(isl::constraint constraint) const;
2789   inline isl::set add_dims(isl::dim type, unsigned int n) const;
2790   inline isl::basic_set affine_hull() const;
2791   inline isl::set align_params(isl::space model) const;
2792   inline isl::set apply(isl::map map) const;
2793   inline isl::set bind(isl::multi_id tuple) const;
2794   inline isl::basic_set bounded_simple_hull() const;
2795   static inline isl::set box_from_points(isl::point pnt1, isl::point pnt2);
2796   inline isl::set coalesce() const;
2797   inline isl::basic_set coefficients() const;
2798   inline isl::set complement() const;
2799   inline isl::basic_set convex_hull() const;
2800   inline isl::val count_val() const;
2801   inline isl::set detect_equalities() const;
2802   inline isl_size dim(isl::dim type) const;
2803   inline boolean dim_has_any_lower_bound(isl::dim type, unsigned int pos) const;
2804   inline boolean dim_has_any_upper_bound(isl::dim type, unsigned int pos) const;
2805   inline boolean dim_has_lower_bound(isl::dim type, unsigned int pos) const;
2806   inline boolean dim_has_upper_bound(isl::dim type, unsigned int pos) const;
2807   inline boolean dim_is_bounded(isl::dim type, unsigned int pos) const;
2808   inline isl::pw_aff dim_max(int pos) const;
2809   inline isl::val dim_max_val(int pos) const;
2810   inline isl::pw_aff dim_min(int pos) const;
2811   inline isl::val dim_min_val(int pos) const;
2812   inline isl::set drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2813   inline isl::set drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2814   inline isl::set drop_unused_params() const;
2815   inline isl::set eliminate(isl::dim type, unsigned int first, unsigned int n) const;
2816   static inline isl::set empty(isl::space space);
2817   inline isl::set equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const;
2818   inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
2819   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
2820   inline isl::set fix_si(isl::dim type, unsigned int pos, int value) const;
2821   inline isl::set fix_val(isl::dim type, unsigned int pos, isl::val v) const;
2822   inline isl::set flat_product(isl::set set2) const;
2823   inline isl::set flatten() const;
2824   inline isl::map flatten_map() const;
2825   inline int follows_at(const isl::set &set2, int pos) const;
2826   inline stat foreach_basic_set(const std::function<stat(basic_set)> &fn) const;
2827   inline stat foreach_point(const std::function<stat(point)> &fn) const;
2828   static inline isl::set from_multi_aff(isl::multi_aff ma);
2829   static inline isl::set from_multi_pw_aff(isl::multi_pw_aff mpa);
2830   inline isl::set from_params() const;
2831   static inline isl::set from_pw_aff(isl::pw_aff pwaff);
2832   static inline isl::set from_pw_multi_aff(isl::pw_multi_aff pma);
2833   inline isl::basic_set_list get_basic_set_list() const;
2834   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
2835   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
2836   inline isl::multi_val get_plain_multi_val_if_fixed() const;
2837   inline isl::fixed_box get_simple_fixed_box_hull() const;
2838   inline isl::space get_space() const;
2839   inline isl::val get_stride(int pos) const;
2840   inline isl::id get_tuple_id() const;
2841   inline std::string get_tuple_name() const;
2842   inline isl::set gist(isl::set context) const;
2843   inline isl::set gist_basic_set(isl::basic_set context) const;
2844   inline isl::set gist_params(isl::set context) const;
2845   inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
2846   inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
2847   inline boolean has_equal_space(const isl::set &set2) const;
2848   inline boolean has_tuple_id() const;
2849   inline boolean has_tuple_name() const;
2850   inline isl::map identity() const;
2851   inline isl::pw_aff indicator_function() const;
2852   inline isl::set insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
2853   inline isl::map insert_domain(isl::space domain) const;
2854   inline isl::set intersect(isl::set set2) const;
2855   inline isl::set intersect_factor_domain(isl::set domain) const;
2856   inline isl::set intersect_factor_range(isl::set range) const;
2857   inline isl::set intersect_params(isl::set params) const;
2858   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
2859   inline boolean involves_locals() const;
2860   inline boolean is_bounded() const;
2861   inline boolean is_box() const;
2862   inline boolean is_disjoint(const isl::set &set2) const;
2863   inline boolean is_empty() const;
2864   inline boolean is_equal(const isl::set &set2) const;
2865   inline boolean is_params() const;
2866   inline boolean is_singleton() const;
2867   inline boolean is_strict_subset(const isl::set &set2) const;
2868   inline boolean is_subset(const isl::set &set2) const;
2869   inline boolean is_wrapping() const;
2870   inline isl::map lex_ge_set(isl::set set2) const;
2871   inline isl::map lex_gt_set(isl::set set2) const;
2872   inline isl::map lex_lt_set(isl::set set2) const;
2873   inline isl::set lexmax() const;
2874   inline isl::pw_multi_aff lexmax_pw_multi_aff() const;
2875   inline isl::set lexmin() const;
2876   inline isl::pw_multi_aff lexmin_pw_multi_aff() const;
2877   inline isl::set lower_bound(isl::multi_pw_aff lower) const;
2878   inline isl::set lower_bound(isl::multi_val lower) const;
2879   inline isl::set lower_bound_si(isl::dim type, unsigned int pos, int value) const;
2880   inline isl::set lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
2881   inline isl::multi_pw_aff max_multi_pw_aff() const;
2882   inline isl::val max_val(const isl::aff &obj) const;
2883   inline isl::multi_pw_aff min_multi_pw_aff() const;
2884   inline isl::val min_val(const isl::aff &obj) const;
2885   inline isl::set move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
2886   inline isl_size n_basic_set() const;
2887   inline isl_size n_dim() const;
2888   static inline isl::set nat_universe(isl::space space);
2889   inline isl::set neg() const;
2890   inline isl::set params() const;
2891   inline int plain_cmp(const isl::set &set2) const;
2892   inline isl::val plain_get_val_if_fixed(isl::dim type, unsigned int pos) const;
2893   inline boolean plain_is_disjoint(const isl::set &set2) const;
2894   inline boolean plain_is_empty() const;
2895   inline boolean plain_is_equal(const isl::set &set2) const;
2896   inline boolean plain_is_universe() const;
2897   inline isl::basic_set plain_unshifted_simple_hull() const;
2898   inline isl::basic_set polyhedral_hull() const;
2899   inline isl::set preimage(isl::multi_aff ma) const;
2900   inline isl::set preimage(isl::multi_pw_aff mpa) const;
2901   inline isl::set preimage(isl::pw_multi_aff pma) const;
2902   inline isl::set product(isl::set set2) const;
2903   inline isl::map project_onto_map(isl::dim type, unsigned int first, unsigned int n) const;
2904   inline isl::set project_out(isl::dim type, unsigned int first, unsigned int n) const;
2905   inline isl::set project_out_all_params() const;
2906   inline isl::set project_out_param(isl::id id) const;
2907   inline isl::set project_out_param(isl::id_list list) const;
2908   inline isl::set remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
2909   inline isl::set remove_divs() const;
2910   inline isl::set remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
2911   inline isl::set remove_redundancies() const;
2912   inline isl::set remove_unknown_divs() const;
2913   inline isl::set reset_space(isl::space space) const;
2914   inline isl::set reset_tuple_id() const;
2915   inline isl::set reset_user() const;
2916   inline isl::basic_set sample() const;
2917   inline isl::point sample_point() const;
2918   inline isl::set set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
2919   inline isl::set set_tuple_id(isl::id id) const;
2920   inline isl::set set_tuple_name(const std::string &s) const;
2921   inline isl::basic_set simple_hull() const;
2922   inline int size() const;
2923   inline isl::basic_set solutions() const;
2924   inline isl::set split_dims(isl::dim type, unsigned int first, unsigned int n) const;
2925   inline isl::set subtract(isl::set set2) const;
2926   inline isl::set sum(isl::set set2) const;
2927   inline isl::map translation() const;
2928   inline isl_size tuple_dim() const;
2929   inline isl::set unbind_params(isl::multi_id tuple) const;
2930   inline isl::map unbind_params_insert_domain(isl::multi_id domain) const;
2931   inline isl::set unite(isl::set set2) const;
2932   static inline isl::set universe(isl::space space);
2933   inline isl::basic_set unshifted_simple_hull() const;
2934   inline isl::basic_set unshifted_simple_hull_from_set_list(isl::set_list list) const;
2935   inline isl::map unwrap() const;
2936   inline isl::set upper_bound(isl::multi_pw_aff upper) const;
2937   inline isl::set upper_bound(isl::multi_val upper) const;
2938   inline isl::set upper_bound_si(isl::dim type, unsigned int pos, int value) const;
2939   inline isl::set upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const;
2940   inline isl::map wrapped_domain_map() const;
2941 };
2942 
2943 // declarations for isl::set_list
2944 inline set_list manage(__isl_take isl_set_list *ptr);
2945 inline set_list manage_copy(__isl_keep isl_set_list *ptr);
2946 
2947 class set_list {
2948   friend inline set_list manage(__isl_take isl_set_list *ptr);
2949   friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
2950 
2951   isl_set_list *ptr = nullptr;
2952 
2953   inline explicit set_list(__isl_take isl_set_list *ptr);
2954 
2955 public:
2956   inline /* implicit */ set_list();
2957   inline /* implicit */ set_list(const set_list &obj);
2958   inline set_list &operator=(set_list obj);
2959   inline ~set_list();
2960   inline __isl_give isl_set_list *copy() const &;
2961   inline __isl_give isl_set_list *copy() && = delete;
2962   inline __isl_keep isl_set_list *get() const;
2963   inline __isl_give isl_set_list *release();
2964   inline bool is_null() const;
2965   inline isl::ctx ctx() const;
2966   inline void dump() const;
2967 
2968   inline isl::set_list add(isl::set el) const;
2969   static inline isl::set_list alloc(isl::ctx ctx, int n);
2970   inline isl::set_list clear() const;
2971   inline isl::set_list concat(isl::set_list list2) const;
2972   inline isl::set_list drop(unsigned int first, unsigned int n) const;
2973   inline stat foreach(const std::function<stat(set)> &fn) const;
2974   static inline isl::set_list from_set(isl::set el);
2975   inline isl::set get_at(int index) const;
2976   inline isl::set get_set(int index) const;
2977   inline isl::set_list insert(unsigned int pos, isl::set el) const;
2978   inline isl_size n_set() const;
2979   inline isl::set_list reverse() const;
2980   inline isl::set_list set_set(int index, isl::set el) const;
2981   inline isl_size size() const;
2982   inline isl::set_list swap(unsigned int pos1, unsigned int pos2) const;
2983   inline isl::set unite() const;
2984 };
2985 
2986 // declarations for isl::space
2987 inline space manage(__isl_take isl_space *ptr);
2988 inline space manage_copy(__isl_keep isl_space *ptr);
2989 
2990 class space {
2991   friend inline space manage(__isl_take isl_space *ptr);
2992   friend inline space manage_copy(__isl_keep isl_space *ptr);
2993 
2994   isl_space *ptr = nullptr;
2995 
2996   inline explicit space(__isl_take isl_space *ptr);
2997 
2998 public:
2999   inline /* implicit */ space();
3000   inline /* implicit */ space(const space &obj);
3001   inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out);
3002   inline explicit space(isl::ctx ctx, unsigned int nparam, unsigned int dim);
3003   inline space &operator=(space obj);
3004   inline ~space();
3005   inline __isl_give isl_space *copy() const &;
3006   inline __isl_give isl_space *copy() && = delete;
3007   inline __isl_keep isl_space *get() const;
3008   inline __isl_give isl_space *release();
3009   inline bool is_null() const;
3010   inline isl::ctx ctx() const;
3011   inline void dump() const;
3012 
3013   inline isl::space add_dims(isl::dim type, unsigned int n) const;
3014   inline isl::space add_named_tuple(isl::id tuple_id, unsigned int dim) const;
3015   inline isl::space add_param_id(isl::id id) const;
3016   inline isl::space add_unnamed_tuple(unsigned int dim) const;
3017   inline isl::space align_params(isl::space space2) const;
3018   inline boolean can_curry() const;
3019   inline boolean can_range_curry() const;
3020   inline boolean can_uncurry() const;
3021   inline boolean can_zip() const;
3022   inline isl::space curry() const;
3023   inline isl_size dim(isl::dim type) const;
3024   inline isl::space domain() const;
3025   inline isl::space domain_factor_domain() const;
3026   inline isl::space domain_factor_range() const;
3027   inline boolean domain_is_wrapping() const;
3028   inline isl::space domain_map() const;
3029   inline isl::space domain_product(isl::space right) const;
3030   inline isl::space drop_all_params() const;
3031   inline isl::space drop_dims(isl::dim type, unsigned int first, unsigned int num) const;
3032   inline isl::space factor_domain() const;
3033   inline isl::space factor_range() const;
3034   inline int find_dim_by_id(isl::dim type, const isl::id &id) const;
3035   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3036   inline isl::space flatten_domain() const;
3037   inline isl::space flatten_range() const;
3038   inline isl::space from_domain() const;
3039   inline isl::space from_range() const;
3040   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
3041   inline std::string get_dim_name(isl::dim type, unsigned int pos) const;
3042   inline isl::id get_tuple_id(isl::dim type) const;
3043   inline std::string get_tuple_name(isl::dim type) const;
3044   inline boolean has_dim_id(isl::dim type, unsigned int pos) const;
3045   inline boolean has_dim_name(isl::dim type, unsigned int pos) const;
3046   inline boolean has_equal_params(const isl::space &space2) const;
3047   inline boolean has_equal_tuples(const isl::space &space2) const;
3048   inline boolean has_tuple_id(isl::dim type) const;
3049   inline boolean has_tuple_name(isl::dim type) const;
3050   inline isl::space insert_dims(isl::dim type, unsigned int pos, unsigned int n) const;
3051   inline boolean is_domain(const isl::space &space2) const;
3052   inline boolean is_equal(const isl::space &space2) const;
3053   inline boolean is_map() const;
3054   inline boolean is_params() const;
3055   inline boolean is_product() const;
3056   inline boolean is_range(const isl::space &space2) const;
3057   inline boolean is_set() const;
3058   inline boolean is_wrapping() const;
3059   inline isl::space join(isl::space right) const;
3060   inline isl::space map_from_domain_and_range(isl::space range) const;
3061   inline isl::space map_from_set() const;
3062   inline isl::space move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const;
3063   inline isl::space params() const;
3064   static inline isl::space params_alloc(isl::ctx ctx, unsigned int nparam);
3065   inline isl::space product(isl::space right) const;
3066   inline isl::space range() const;
3067   inline isl::space range_curry() const;
3068   inline isl::space range_factor_domain() const;
3069   inline isl::space range_factor_range() const;
3070   inline boolean range_is_wrapping() const;
3071   inline isl::space range_map() const;
3072   inline isl::space range_product(isl::space right) const;
3073   inline isl::space range_reverse() const;
3074   inline isl::space reset_tuple_id(isl::dim type) const;
3075   inline isl::space reset_user() const;
3076   inline isl::space reverse() const;
3077   inline isl::space set_dim_id(isl::dim type, unsigned int pos, isl::id id) const;
3078   inline isl::space set_from_params() const;
3079   inline isl::space set_tuple_id(isl::dim type, isl::id id) const;
3080   inline isl::space set_tuple_name(isl::dim type, const std::string &s) const;
3081   inline boolean tuple_is_equal(isl::dim type1, const isl::space &space2, isl::dim type2) const;
3082   inline isl::space uncurry() const;
3083   static inline isl::space unit(isl::ctx ctx);
3084   inline isl::space unwrap() const;
3085   inline isl::space wrap() const;
3086   inline isl::space zip() const;
3087 };
3088 
3089 // declarations for isl::term
3090 inline term manage(__isl_take isl_term *ptr);
3091 inline term manage_copy(__isl_keep isl_term *ptr);
3092 
3093 class term {
3094   friend inline term manage(__isl_take isl_term *ptr);
3095   friend inline term manage_copy(__isl_keep isl_term *ptr);
3096 
3097   isl_term *ptr = nullptr;
3098 
3099   inline explicit term(__isl_take isl_term *ptr);
3100 
3101 public:
3102   inline /* implicit */ term();
3103   inline /* implicit */ term(const term &obj);
3104   inline term &operator=(term obj);
3105   inline ~term();
3106   inline __isl_give isl_term *copy() const &;
3107   inline __isl_give isl_term *copy() && = delete;
3108   inline __isl_keep isl_term *get() const;
3109   inline __isl_give isl_term *release();
3110   inline bool is_null() const;
3111   inline isl::ctx ctx() const;
3112 
3113   inline isl_size dim(isl::dim type) const;
3114   inline isl::val get_coefficient_val() const;
3115   inline isl::aff get_div(unsigned int pos) const;
3116   inline isl_size get_exp(isl::dim type, unsigned int pos) const;
3117 };
3118 
3119 // declarations for isl::union_access_info
3120 inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3121 inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3122 
3123 class union_access_info {
3124   friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3125   friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3126 
3127   isl_union_access_info *ptr = nullptr;
3128 
3129   inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
3130 
3131 public:
3132   inline /* implicit */ union_access_info();
3133   inline /* implicit */ union_access_info(const union_access_info &obj);
3134   inline explicit union_access_info(isl::union_map sink);
3135   inline union_access_info &operator=(union_access_info obj);
3136   inline ~union_access_info();
3137   inline __isl_give isl_union_access_info *copy() const &;
3138   inline __isl_give isl_union_access_info *copy() && = delete;
3139   inline __isl_keep isl_union_access_info *get() const;
3140   inline __isl_give isl_union_access_info *release();
3141   inline bool is_null() const;
3142   inline isl::ctx ctx() const;
3143 
3144   inline isl::union_flow compute_flow() const;
3145   inline isl::union_access_info set_kill(isl::union_map kill) const;
3146   inline isl::union_access_info set_may_source(isl::union_map may_source) const;
3147   inline isl::union_access_info set_must_source(isl::union_map must_source) const;
3148   inline isl::union_access_info set_schedule(isl::schedule schedule) const;
3149   inline isl::union_access_info set_schedule_map(isl::union_map schedule_map) const;
3150 };
3151 
3152 // declarations for isl::union_flow
3153 inline union_flow manage(__isl_take isl_union_flow *ptr);
3154 inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3155 
3156 class union_flow {
3157   friend inline union_flow manage(__isl_take isl_union_flow *ptr);
3158   friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3159 
3160   isl_union_flow *ptr = nullptr;
3161 
3162   inline explicit union_flow(__isl_take isl_union_flow *ptr);
3163 
3164 public:
3165   inline /* implicit */ union_flow();
3166   inline /* implicit */ union_flow(const union_flow &obj);
3167   inline union_flow &operator=(union_flow obj);
3168   inline ~union_flow();
3169   inline __isl_give isl_union_flow *copy() const &;
3170   inline __isl_give isl_union_flow *copy() && = delete;
3171   inline __isl_keep isl_union_flow *get() const;
3172   inline __isl_give isl_union_flow *release();
3173   inline bool is_null() const;
3174   inline isl::ctx ctx() const;
3175 
3176   inline isl::union_map get_full_may_dependence() const;
3177   inline isl::union_map get_full_must_dependence() const;
3178   inline isl::union_map get_may_dependence() const;
3179   inline isl::union_map get_may_no_source() const;
3180   inline isl::union_map get_must_dependence() const;
3181   inline isl::union_map get_must_no_source() const;
3182 };
3183 
3184 // declarations for isl::union_map
3185 inline union_map manage(__isl_take isl_union_map *ptr);
3186 inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3187 
3188 class union_map {
3189   friend inline union_map manage(__isl_take isl_union_map *ptr);
3190   friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3191 
3192   isl_union_map *ptr = nullptr;
3193 
3194   inline explicit union_map(__isl_take isl_union_map *ptr);
3195 
3196 public:
3197   inline /* implicit */ union_map();
3198   inline /* implicit */ union_map(const union_map &obj);
3199   inline /* implicit */ union_map(isl::basic_map bmap);
3200   inline /* implicit */ union_map(isl::map map);
3201   inline explicit union_map(isl::union_pw_multi_aff upma);
3202   inline explicit union_map(isl::ctx ctx, const std::string &str);
3203   inline union_map &operator=(union_map obj);
3204   inline ~union_map();
3205   inline __isl_give isl_union_map *copy() const &;
3206   inline __isl_give isl_union_map *copy() && = delete;
3207   inline __isl_keep isl_union_map *get() const;
3208   inline __isl_give isl_union_map *release();
3209   inline bool is_null() const;
3210   inline isl::ctx ctx() const;
3211   inline void dump() const;
3212 
3213   inline isl::union_map affine_hull() const;
3214   inline isl::union_map align_params(isl::space model) const;
3215   inline isl::union_map apply_domain(isl::union_map umap2) const;
3216   inline isl::union_map apply_range(isl::union_map umap2) const;
3217   inline isl::union_set bind_range(isl::multi_id tuple) const;
3218   inline isl::union_map coalesce() const;
3219   inline boolean contains(const isl::space &space) const;
3220   inline isl::union_map curry() const;
3221   inline isl::union_set deltas() const;
3222   inline isl::union_map deltas_map() const;
3223   inline isl::union_map detect_equalities() const;
3224   inline isl_size dim(isl::dim type) const;
3225   inline isl::union_set domain() const;
3226   inline isl::union_map domain_factor_domain() const;
3227   inline isl::union_map domain_factor_range() const;
3228   inline isl::union_map domain_map() const;
3229   inline isl::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
3230   inline isl::union_map domain_product(isl::union_map umap2) const;
3231   static inline isl::union_map empty(isl::ctx ctx);
3232   inline isl::union_map eq_at(isl::multi_union_pw_aff mupa) const;
3233   inline isl::map extract_map(isl::space space) const;
3234   inline isl::union_map factor_domain() const;
3235   inline isl::union_map factor_range() const;
3236   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3237   inline isl::union_map fixed_power(isl::val exp) const;
3238   inline isl::union_map flat_domain_product(isl::union_map umap2) const;
3239   inline isl::union_map flat_range_product(isl::union_map umap2) const;
3240   inline stat foreach_map(const std::function<stat(map)> &fn) const;
3241   static inline isl::union_map from(isl::multi_union_pw_aff mupa);
3242   static inline isl::union_map from_domain(isl::union_set uset);
3243   static inline isl::union_map from_domain_and_range(isl::union_set domain, isl::union_set range);
3244   static inline isl::union_map from_range(isl::union_set uset);
3245   static inline isl::union_map from_union_pw_aff(isl::union_pw_aff upa);
3246   inline isl::id get_dim_id(isl::dim type, unsigned int pos) const;
3247   inline uint32_t get_hash() const;
3248   inline isl::map_list get_map_list() const;
3249   inline isl::space get_space() const;
3250   inline isl::union_map gist(isl::union_map context) const;
3251   inline isl::union_map gist_domain(isl::union_set uset) const;
3252   inline isl::union_map gist_params(isl::set set) const;
3253   inline isl::union_map gist_range(isl::union_set uset) const;
3254   inline isl::union_map intersect(isl::union_map umap2) const;
3255   inline isl::union_map intersect_domain(isl::space space) const;
3256   inline isl::union_map intersect_domain(isl::union_set uset) const;
3257   inline isl::union_map intersect_domain_factor_domain(isl::union_map factor) const;
3258   inline isl::union_map intersect_domain_factor_range(isl::union_map factor) const;
3259   inline isl::union_map intersect_params(isl::set set) const;
3260   inline isl::union_map intersect_range(isl::space space) const;
3261   inline isl::union_map intersect_range(isl::union_set uset) const;
3262   inline isl::union_map intersect_range_factor_domain(isl::union_map factor) const;
3263   inline isl::union_map intersect_range_factor_range(isl::union_map factor) const;
3264   inline boolean involves_dims(isl::dim type, unsigned int first, unsigned int n) const;
3265   inline boolean is_bijective() const;
3266   inline boolean is_disjoint(const isl::union_map &umap2) const;
3267   inline boolean is_empty() const;
3268   inline boolean is_equal(const isl::union_map &umap2) const;
3269   inline boolean is_identity() const;
3270   inline boolean is_injective() const;
3271   inline boolean is_single_valued() const;
3272   inline boolean is_strict_subset(const isl::union_map &umap2) const;
3273   inline boolean is_subset(const isl::union_map &umap2) const;
3274   inline boolean isa_map() const;
3275   inline isl::union_map lex_ge_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
3276   inline isl::union_map lex_ge_union_map(isl::union_map umap2) const;
3277   inline isl::union_map lex_gt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
3278   inline isl::union_map lex_gt_union_map(isl::union_map umap2) const;
3279   inline isl::union_map lex_le_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
3280   inline isl::union_map lex_le_union_map(isl::union_map umap2) const;
3281   inline isl::union_map lex_lt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const;
3282   inline isl::union_map lex_lt_union_map(isl::union_map umap2) const;
3283   inline isl::union_map lexmax() const;
3284   inline isl::union_map lexmin() const;
3285   inline isl_size n_map() const;
3286   inline isl::set params() const;
3287   inline boolean plain_is_empty() const;
3288   inline boolean plain_is_injective() const;
3289   inline isl::union_map polyhedral_hull() const;
3290   inline isl::union_map preimage_domain(isl::multi_aff ma) const;
3291   inline isl::union_map preimage_domain(isl::multi_pw_aff mpa) const;
3292   inline isl::union_map preimage_domain(isl::pw_multi_aff pma) const;
3293   inline isl::union_map preimage_domain(isl::union_pw_multi_aff upma) const;
3294   inline isl::union_map preimage_range(isl::multi_aff ma) const;
3295   inline isl::union_map preimage_range(isl::pw_multi_aff pma) const;
3296   inline isl::union_map preimage_range(isl::union_pw_multi_aff upma) const;
3297   inline isl::union_map product(isl::union_map umap2) const;
3298   inline isl::union_map project_out(isl::dim type, unsigned int first, unsigned int n) const;
3299   inline isl::union_map project_out_all_params() const;
3300   inline isl::union_set range() const;
3301   inline isl::union_map range_curry() const;
3302   inline isl::union_map range_factor_domain() const;
3303   inline isl::union_map range_factor_range() const;
3304   inline isl::union_map range_map() const;
3305   inline isl::union_map range_product(isl::union_map umap2) const;
3306   inline isl::union_map range_reverse() const;
3307   inline isl::union_map remove_divs() const;
3308   inline isl::union_map remove_redundancies() const;
3309   inline isl::union_map reset_user() const;
3310   inline isl::union_map reverse() const;
3311   inline isl::basic_map sample() const;
3312   inline isl::union_map simple_hull() const;
3313   inline isl::union_map subtract(isl::union_map umap2) const;
3314   inline isl::union_map subtract_domain(isl::union_set dom) const;
3315   inline isl::union_map subtract_range(isl::union_set dom) const;
3316   inline isl::union_map uncurry() const;
3317   inline isl::union_map unite(isl::union_map umap2) const;
3318   inline isl::union_map universe() const;
3319   inline isl::union_set wrap() const;
3320   inline isl::union_map zip() const;
3321 };
3322 
3323 // declarations for isl::union_map_list
3324 inline union_map_list manage(__isl_take isl_union_map_list *ptr);
3325 inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
3326 
3327 class union_map_list {
3328   friend inline union_map_list manage(__isl_take isl_union_map_list *ptr);
3329   friend inline union_map_list manage_copy(__isl_keep isl_union_map_list *ptr);
3330 
3331   isl_union_map_list *ptr = nullptr;
3332 
3333   inline explicit union_map_list(__isl_take isl_union_map_list *ptr);
3334 
3335 public:
3336   inline /* implicit */ union_map_list();
3337   inline /* implicit */ union_map_list(const union_map_list &obj);
3338   inline union_map_list &operator=(union_map_list obj);
3339   inline ~union_map_list();
3340   inline __isl_give isl_union_map_list *copy() const &;
3341   inline __isl_give isl_union_map_list *copy() && = delete;
3342   inline __isl_keep isl_union_map_list *get() const;
3343   inline __isl_give isl_union_map_list *release();
3344   inline bool is_null() const;
3345   inline isl::ctx ctx() const;
3346   inline void dump() const;
3347 
3348   inline isl::union_map_list add(isl::union_map el) const;
3349   static inline isl::union_map_list alloc(isl::ctx ctx, int n);
3350   inline isl::union_map_list clear() const;
3351   inline isl::union_map_list concat(isl::union_map_list list2) const;
3352   inline isl::union_map_list drop(unsigned int first, unsigned int n) const;
3353   inline stat foreach(const std::function<stat(union_map)> &fn) const;
3354   static inline isl::union_map_list from_union_map(isl::union_map el);
3355   inline isl::union_map get_at(int index) const;
3356   inline isl::union_map get_union_map(int index) const;
3357   inline isl::union_map_list insert(unsigned int pos, isl::union_map el) const;
3358   inline isl_size n_union_map() const;
3359   inline isl::union_map_list reverse() const;
3360   inline isl::union_map_list set_union_map(int index, isl::union_map el) const;
3361   inline isl_size size() const;
3362   inline isl::union_map_list swap(unsigned int pos1, unsigned int pos2) const;
3363 };
3364 
3365 // declarations for isl::union_pw_aff
3366 inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3367 inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3368 
3369 class union_pw_aff {
3370   friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3371   friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3372 
3373   isl_union_pw_aff *ptr = nullptr;
3374 
3375   inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
3376 
3377 public:
3378   inline /* implicit */ union_pw_aff();
3379   inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
3380   inline /* implicit */ union_pw_aff(isl::aff aff);
3381   inline /* implicit */ union_pw_aff(isl::pw_aff pa);
3382   inline explicit union_pw_aff(isl::ctx ctx, const std::string &str);
3383   inline explicit union_pw_aff(isl::union_set domain, isl::val v);
3384   inline union_pw_aff &operator=(union_pw_aff obj);
3385   inline ~union_pw_aff();
3386   inline __isl_give isl_union_pw_aff *copy() const &;
3387   inline __isl_give isl_union_pw_aff *copy() && = delete;
3388   inline __isl_keep isl_union_pw_aff *get() const;
3389   inline __isl_give isl_union_pw_aff *release();
3390   inline bool is_null() const;
3391   inline isl::ctx ctx() const;
3392   inline void dump() const;
3393 
3394   inline isl::union_pw_aff add(isl::union_pw_aff upa2) const;
3395   inline isl::union_pw_aff add_pw_aff(isl::pw_aff pa) const;
3396   static inline isl::union_pw_aff aff_on_domain(isl::union_set domain, isl::aff aff);
3397   inline isl::union_pw_aff align_params(isl::space model) const;
3398   inline isl::union_set bind(isl::id id) const;
3399   inline isl::union_pw_aff coalesce() const;
3400   inline isl_size dim(isl::dim type) const;
3401   inline isl::union_set domain() const;
3402   inline isl::union_pw_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3403   static inline isl::union_pw_aff empty(isl::space space);
3404   static inline isl::union_pw_aff empty_ctx(isl::ctx ctx);
3405   static inline isl::union_pw_aff empty_space(isl::space space);
3406   inline isl::pw_aff extract_pw_aff(isl::space space) const;
3407   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3408   inline isl::union_pw_aff floor() const;
3409   inline stat foreach_pw_aff(const std::function<stat(pw_aff)> &fn) const;
3410   inline isl::pw_aff_list get_pw_aff_list() const;
3411   inline isl::space get_space() const;
3412   inline isl::union_pw_aff gist(isl::union_set context) const;
3413   inline isl::union_pw_aff gist_params(isl::set context) const;
3414   inline isl::union_pw_aff intersect_domain(isl::space space) const;
3415   inline isl::union_pw_aff intersect_domain(isl::union_set uset) const;
3416   inline isl::union_pw_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
3417   inline isl::union_pw_aff intersect_domain_wrapped_range(isl::union_set uset) const;
3418   inline isl::union_pw_aff intersect_params(isl::set set) const;
3419   inline boolean involves_nan() const;
3420   inline isl::val max_val() const;
3421   inline isl::val min_val() const;
3422   inline isl::union_pw_aff mod_val(isl::val f) const;
3423   inline isl_size n_pw_aff() const;
3424   inline isl::union_pw_aff neg() const;
3425   static inline isl::union_pw_aff param_on_domain_id(isl::union_set domain, isl::id id);
3426   inline boolean plain_is_equal(const isl::union_pw_aff &upa2) const;
3427   inline isl::union_pw_aff pullback(isl::union_pw_multi_aff upma) const;
3428   static inline isl::union_pw_aff pw_aff_on_domain(isl::union_set domain, isl::pw_aff pa);
3429   inline isl::union_pw_aff reset_user() const;
3430   inline isl::union_pw_aff scale_down_val(isl::val v) const;
3431   inline isl::union_pw_aff scale_val(isl::val v) const;
3432   inline isl::union_pw_aff sub(isl::union_pw_aff upa2) const;
3433   inline isl::union_pw_aff subtract_domain(isl::space space) const;
3434   inline isl::union_pw_aff subtract_domain(isl::union_set uset) const;
3435   inline isl::union_pw_aff union_add(isl::union_pw_aff upa2) const;
3436   inline isl::union_set zero_union_set() const;
3437 };
3438 
3439 // declarations for isl::union_pw_aff_list
3440 inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3441 inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3442 
3443 class union_pw_aff_list {
3444   friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3445   friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3446 
3447   isl_union_pw_aff_list *ptr = nullptr;
3448 
3449   inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
3450 
3451 public:
3452   inline /* implicit */ union_pw_aff_list();
3453   inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
3454   inline union_pw_aff_list &operator=(union_pw_aff_list obj);
3455   inline ~union_pw_aff_list();
3456   inline __isl_give isl_union_pw_aff_list *copy() const &;
3457   inline __isl_give isl_union_pw_aff_list *copy() && = delete;
3458   inline __isl_keep isl_union_pw_aff_list *get() const;
3459   inline __isl_give isl_union_pw_aff_list *release();
3460   inline bool is_null() const;
3461   inline isl::ctx ctx() const;
3462   inline void dump() const;
3463 
3464   inline isl::union_pw_aff_list add(isl::union_pw_aff el) const;
3465   static inline isl::union_pw_aff_list alloc(isl::ctx ctx, int n);
3466   inline isl::union_pw_aff_list clear() const;
3467   inline isl::union_pw_aff_list concat(isl::union_pw_aff_list list2) const;
3468   inline isl::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
3469   inline stat foreach(const std::function<stat(union_pw_aff)> &fn) const;
3470   static inline isl::union_pw_aff_list from_union_pw_aff(isl::union_pw_aff el);
3471   inline isl::union_pw_aff get_at(int index) const;
3472   inline isl::union_pw_aff get_union_pw_aff(int index) const;
3473   inline isl::union_pw_aff_list insert(unsigned int pos, isl::union_pw_aff el) const;
3474   inline isl_size n_union_pw_aff() const;
3475   inline isl::union_pw_aff_list reverse() const;
3476   inline isl::union_pw_aff_list set_union_pw_aff(int index, isl::union_pw_aff el) const;
3477   inline isl_size size() const;
3478   inline isl::union_pw_aff_list swap(unsigned int pos1, unsigned int pos2) const;
3479 };
3480 
3481 // declarations for isl::union_pw_multi_aff
3482 inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3483 inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3484 
3485 class union_pw_multi_aff {
3486   friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3487   friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3488 
3489   isl_union_pw_multi_aff *ptr = nullptr;
3490 
3491   inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
3492 
3493 public:
3494   inline /* implicit */ union_pw_multi_aff();
3495   inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
3496   inline /* implicit */ union_pw_multi_aff(isl::aff aff);
3497   inline explicit union_pw_multi_aff(isl::union_set uset);
3498   inline /* implicit */ union_pw_multi_aff(isl::multi_aff ma);
3499   inline explicit union_pw_multi_aff(isl::multi_union_pw_aff mupa);
3500   inline /* implicit */ union_pw_multi_aff(isl::pw_multi_aff pma);
3501   inline explicit union_pw_multi_aff(isl::union_map umap);
3502   inline /* implicit */ union_pw_multi_aff(isl::union_pw_aff upa);
3503   inline explicit union_pw_multi_aff(isl::ctx ctx, const std::string &str);
3504   inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
3505   inline ~union_pw_multi_aff();
3506   inline __isl_give isl_union_pw_multi_aff *copy() const &;
3507   inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
3508   inline __isl_keep isl_union_pw_multi_aff *get() const;
3509   inline __isl_give isl_union_pw_multi_aff *release();
3510   inline bool is_null() const;
3511   inline isl::ctx ctx() const;
3512   inline void dump() const;
3513 
3514   inline isl::union_pw_multi_aff add(isl::union_pw_multi_aff upma2) const;
3515   inline isl::union_pw_multi_aff add_pw_multi_aff(isl::pw_multi_aff pma) const;
3516   inline isl::union_pw_multi_aff align_params(isl::space model) const;
3517   inline isl::union_pw_multi_aff apply(isl::union_pw_multi_aff upma2) const;
3518   inline isl::pw_multi_aff as_pw_multi_aff() const;
3519   inline isl::union_pw_multi_aff coalesce() const;
3520   inline isl_size dim(isl::dim type) const;
3521   inline isl::union_set domain() const;
3522   inline isl::union_pw_multi_aff drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3523   static inline isl::union_pw_multi_aff empty(isl::space space);
3524   static inline isl::union_pw_multi_aff empty(isl::ctx ctx);
3525   static inline isl::union_pw_multi_aff empty_space(isl::space space);
3526   inline isl::pw_multi_aff extract_pw_multi_aff(isl::space space) const;
3527   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3528   inline isl::union_pw_multi_aff flat_range_product(isl::union_pw_multi_aff upma2) const;
3529   inline stat foreach_pw_multi_aff(const std::function<stat(pw_multi_aff)> &fn) const;
3530   static inline isl::union_pw_multi_aff from_union_set(isl::union_set uset);
3531   inline isl::pw_multi_aff_list get_pw_multi_aff_list() const;
3532   inline isl::space get_space() const;
3533   inline isl::union_pw_aff get_union_pw_aff(int pos) const;
3534   inline isl::union_pw_multi_aff gist(isl::union_set context) const;
3535   inline isl::union_pw_multi_aff gist_params(isl::set context) const;
3536   inline isl::union_pw_multi_aff intersect_domain(isl::space space) const;
3537   inline isl::union_pw_multi_aff intersect_domain(isl::union_set uset) const;
3538   inline isl::union_pw_multi_aff intersect_domain_wrapped_domain(isl::union_set uset) const;
3539   inline isl::union_pw_multi_aff intersect_domain_wrapped_range(isl::union_set uset) const;
3540   inline isl::union_pw_multi_aff intersect_params(isl::set set) const;
3541   inline boolean involves_locals() const;
3542   inline boolean involves_nan() const;
3543   inline boolean isa_pw_multi_aff() const;
3544   static inline isl::union_pw_multi_aff multi_val_on_domain(isl::union_set domain, isl::multi_val mv);
3545   inline isl_size n_pw_multi_aff() const;
3546   inline isl::union_pw_multi_aff neg() const;
3547   inline boolean plain_is_empty() const;
3548   inline boolean plain_is_equal(const isl::union_pw_multi_aff &upma2) const;
3549   inline isl::union_pw_multi_aff preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const;
3550   inline isl::union_pw_multi_aff pullback(isl::union_pw_multi_aff upma2) const;
3551   inline isl::union_pw_multi_aff range_factor_domain() const;
3552   inline isl::union_pw_multi_aff range_factor_range() const;
3553   inline isl::union_pw_multi_aff range_product(isl::union_pw_multi_aff upma2) const;
3554   inline isl::union_pw_multi_aff reset_user() const;
3555   inline isl::union_pw_multi_aff scale_down_val(isl::val val) const;
3556   inline isl::union_pw_multi_aff scale_multi_val(isl::multi_val mv) const;
3557   inline isl::union_pw_multi_aff scale_val(isl::val val) const;
3558   inline isl::union_pw_multi_aff sub(isl::union_pw_multi_aff upma2) const;
3559   inline isl::union_pw_multi_aff subtract_domain(isl::space space) const;
3560   inline isl::union_pw_multi_aff subtract_domain(isl::union_set uset) const;
3561   inline isl::union_pw_multi_aff union_add(isl::union_pw_multi_aff upma2) const;
3562 };
3563 
3564 // declarations for isl::union_pw_multi_aff_list
3565 inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3566 inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3567 
3568 class union_pw_multi_aff_list {
3569   friend inline union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr);
3570   friend inline union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr);
3571 
3572   isl_union_pw_multi_aff_list *ptr = nullptr;
3573 
3574   inline explicit union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr);
3575 
3576 public:
3577   inline /* implicit */ union_pw_multi_aff_list();
3578   inline /* implicit */ union_pw_multi_aff_list(const union_pw_multi_aff_list &obj);
3579   inline union_pw_multi_aff_list &operator=(union_pw_multi_aff_list obj);
3580   inline ~union_pw_multi_aff_list();
3581   inline __isl_give isl_union_pw_multi_aff_list *copy() const &;
3582   inline __isl_give isl_union_pw_multi_aff_list *copy() && = delete;
3583   inline __isl_keep isl_union_pw_multi_aff_list *get() const;
3584   inline __isl_give isl_union_pw_multi_aff_list *release();
3585   inline bool is_null() const;
3586   inline isl::ctx ctx() const;
3587   inline void dump() const;
3588 
3589   inline isl::union_pw_multi_aff_list add(isl::union_pw_multi_aff el) const;
3590   static inline isl::union_pw_multi_aff_list alloc(isl::ctx ctx, int n);
3591   inline isl::union_pw_multi_aff_list clear() const;
3592   inline isl::union_pw_multi_aff_list concat(isl::union_pw_multi_aff_list list2) const;
3593   inline isl::union_pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
3594   inline stat foreach(const std::function<stat(union_pw_multi_aff)> &fn) const;
3595   static inline isl::union_pw_multi_aff_list from_union_pw_multi_aff(isl::union_pw_multi_aff el);
3596   inline isl::union_pw_multi_aff get_at(int index) const;
3597   inline isl::union_pw_multi_aff get_union_pw_multi_aff(int index) const;
3598   inline isl::union_pw_multi_aff_list insert(unsigned int pos, isl::union_pw_multi_aff el) const;
3599   inline isl_size n_union_pw_multi_aff() const;
3600   inline isl::union_pw_multi_aff_list reverse() const;
3601   inline isl::union_pw_multi_aff_list set_union_pw_multi_aff(int index, isl::union_pw_multi_aff el) const;
3602   inline isl_size size() const;
3603   inline isl::union_pw_multi_aff_list swap(unsigned int pos1, unsigned int pos2) const;
3604 };
3605 
3606 // declarations for isl::union_pw_qpolynomial
3607 inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3608 inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3609 
3610 class union_pw_qpolynomial {
3611   friend inline union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr);
3612   friend inline union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr);
3613 
3614   isl_union_pw_qpolynomial *ptr = nullptr;
3615 
3616   inline explicit union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr);
3617 
3618 public:
3619   inline /* implicit */ union_pw_qpolynomial();
3620   inline /* implicit */ union_pw_qpolynomial(const union_pw_qpolynomial &obj);
3621   inline explicit union_pw_qpolynomial(isl::ctx ctx, const std::string &str);
3622   inline union_pw_qpolynomial &operator=(union_pw_qpolynomial obj);
3623   inline ~union_pw_qpolynomial();
3624   inline __isl_give isl_union_pw_qpolynomial *copy() const &;
3625   inline __isl_give isl_union_pw_qpolynomial *copy() && = delete;
3626   inline __isl_keep isl_union_pw_qpolynomial *get() const;
3627   inline __isl_give isl_union_pw_qpolynomial *release();
3628   inline bool is_null() const;
3629   inline isl::ctx ctx() const;
3630 
3631   inline isl::union_pw_qpolynomial add(isl::union_pw_qpolynomial upwqp2) const;
3632   inline isl::union_pw_qpolynomial add_pw_qpolynomial(isl::pw_qpolynomial pwqp) const;
3633   inline isl::union_pw_qpolynomial align_params(isl::space model) const;
3634   inline isl::union_pw_qpolynomial coalesce() const;
3635   inline isl_size dim(isl::dim type) const;
3636   inline isl::union_set domain() const;
3637   inline isl::union_pw_qpolynomial drop_dims(isl::dim type, unsigned int first, unsigned int n) const;
3638   inline isl::val eval(isl::point pnt) const;
3639   inline isl::pw_qpolynomial extract_pw_qpolynomial(isl::space space) const;
3640   inline int find_dim_by_name(isl::dim type, const std::string &name) const;
3641   inline stat foreach_pw_qpolynomial(const std::function<stat(pw_qpolynomial)> &fn) const;
3642   static inline isl::union_pw_qpolynomial from_pw_qpolynomial(isl::pw_qpolynomial pwqp);
3643   inline isl::pw_qpolynomial_list get_pw_qpolynomial_list() const;
3644   inline isl::space get_space() const;
3645   inline isl::union_pw_qpolynomial gist(isl::union_set context) const;
3646   inline isl::union_pw_qpolynomial gist_params(isl::set context) const;
3647   inline isl::union_pw_qpolynomial intersect_domain(isl::union_set uset) const;
3648   inline isl::union_pw_qpolynomial intersect_domain_space(isl::space space) const;
3649   inline isl::union_pw_qpolynomial intersect_domain_union_set(isl::union_set uset) const;
3650   inline isl::union_pw_qpolynomial intersect_domain_wrapped_domain(isl::union_set uset) const;
3651   inline isl::union_pw_qpolynomial intersect_domain_wrapped_range(isl::union_set uset) const;
3652   inline isl::union_pw_qpolynomial intersect_params(isl::set set) const;
3653   inline boolean involves_nan() const;
3654   inline isl::union_pw_qpolynomial mul(isl::union_pw_qpolynomial upwqp2) const;
3655   inline isl_size n_pw_qpolynomial() const;
3656   inline isl::union_pw_qpolynomial neg() const;
3657   inline boolean plain_is_equal(const isl::union_pw_qpolynomial &upwqp2) const;
3658   inline isl::union_pw_qpolynomial reset_user() const;
3659   inline isl::union_pw_qpolynomial scale_down_val(isl::val v) const;
3660   inline isl::union_pw_qpolynomial scale_val(isl::val v) const;
3661   inline isl::union_pw_qpolynomial sub(isl::union_pw_qpolynomial upwqp2) const;
3662   inline isl::union_pw_qpolynomial subtract_domain(isl::union_set uset) const;
3663   inline isl::union_pw_qpolynomial subtract_domain_space(isl::space space) const;
3664   inline isl::union_pw_qpolynomial subtract_domain_union_set(isl::union_set uset) const;
3665   inline isl::union_pw_qpolynomial to_polynomial(int sign) const;
3666   static inline isl::union_pw_qpolynomial zero(isl::space space);
3667   static inline isl::union_pw_qpolynomial zero_ctx(isl::ctx ctx);
3668   static inline isl::union_pw_qpolynomial zero_space(isl::space space);
3669 };
3670 
3671 // declarations for isl::union_set
3672 inline union_set manage(__isl_take isl_union_set *ptr);
3673 inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3674 
3675 class union_set {
3676   friend inline union_set manage(__isl_take isl_union_set *ptr);
3677   friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
3678 
3679   isl_union_set *ptr = nullptr;
3680 
3681   inline explicit union_set(__isl_take isl_union_set *ptr);
3682 
3683 public:
3684   inline /* implicit */ union_set();
3685   inline /* implicit */ union_set(const union_set &obj);
3686   inline /* implicit */ union_set(isl::basic_set bset);
3687   inline /* implicit */ union_set(isl::point pnt);
3688   inline /* implicit */ union_set(isl::set set);
3689   inline explicit union_set(isl::ctx ctx, const std::string &str);
3690   inline union_set &operator=(union_set obj);
3691   inline ~union_set();
3692   inline __isl_give isl_union_set *copy() const &;
3693   inline __isl_give isl_union_set *copy() && = delete;
3694   inline __isl_keep isl_union_set *get() const;
3695   inline __isl_give isl_union_set *release();
3696   inline bool is_null() const;
3697   inline isl::ctx ctx() const;
3698   inline void dump() const;
3699 
3700   inline isl::union_set affine_hull() const;
3701   inline isl::union_set align_params(isl::space model) const;
3702   inline isl::union_set apply(isl::union_map umap) const;
3703   inline isl::union_set coalesce() const;
3704   inline isl::union_set coefficients() const;
3705   inline isl::schedule compute_schedule(isl::union_map validity, isl::union_map proximity) const;
3706   inline boolean contains(const isl::space &space) const;
3707   inline isl::union_set detect_equalities() const;
3708   inline isl_size dim(isl::dim type) const;
3709   static inline isl::union_set empty(isl::ctx ctx);
3710   inline isl::set extract_set(isl::space space) const;
3711   inline stat foreach_point(const std::function<stat(point)> &fn) const;
3712   inline stat foreach_set(const std::function<stat(set)> &fn) const;
3713   inline isl::basic_set_list get_basic_set_list() const;
3714   inline uint32_t get_hash() const;
3715   inline isl::set_list get_set_list() const;
3716   inline isl::space get_space() const;
3717   inline isl::union_set gist(isl::union_set context) const;
3718   inline isl::union_set gist_params(isl::set set) const;
3719   inline isl::union_map identity() const;
3720   inline isl::union_pw_multi_aff identity_union_pw_multi_aff() const;
3721   inline isl::union_set intersect(isl::union_set uset2) const;
3722   inline isl::union_set intersect_params(isl::set set) const;
3723   inline boolean is_disjoint(const isl::union_set &uset2) const;
3724   inline boolean is_empty() const;
3725   inline boolean is_equal(const isl::union_set &uset2) const;
3726   inline boolean is_params() const;
3727   inline boolean is_strict_subset(const isl::union_set &uset2) const;
3728   inline boolean is_subset(const isl::union_set &uset2) const;
3729   inline boolean isa_set() const;
3730   inline isl::union_map lex_ge_union_set(isl::union_set uset2) const;
3731   inline isl::union_map lex_gt_union_set(isl::union_set uset2) const;
3732   inline isl::union_map lex_le_union_set(isl::union_set uset2) const;
3733   inline isl::union_map lex_lt_union_set(isl::union_set uset2) const;
3734   inline isl::union_set lexmax() const;
3735   inline isl::union_set lexmin() const;
3736   inline isl::multi_val min_multi_union_pw_aff(const isl::multi_union_pw_aff &obj) const;
3737   inline isl_size n_set() const;
3738   inline isl::set params() const;
3739   inline isl::union_set polyhedral_hull() const;
3740   inline isl::union_set preimage(isl::multi_aff ma) const;
3741   inline isl::union_set preimage(isl::pw_multi_aff pma) const;
3742   inline isl::union_set preimage(isl::union_pw_multi_aff upma) const;
3743   inline isl::union_set product(isl::union_set uset2) const;
3744   inline isl::union_set project_out(isl::dim type, unsigned int first, unsigned int n) const;
3745   inline isl::union_set project_out_all_params() const;
3746   inline isl::union_set remove_divs() const;
3747   inline isl::union_set remove_redundancies() const;
3748   inline isl::union_set reset_user() const;
3749   inline isl::basic_set sample() const;
3750   inline isl::point sample_point() const;
3751   inline isl::union_set simple_hull() const;
3752   inline isl::union_set solutions() const;
3753   inline isl::union_set subtract(isl::union_set uset2) const;
3754   inline isl::union_set unite(isl::union_set uset2) const;
3755   inline isl::union_set universe() const;
3756   inline isl::union_map unwrap() const;
3757   inline isl::union_map wrapped_domain_map() const;
3758 };
3759 
3760 // declarations for isl::union_set_list
3761 inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3762 inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3763 
3764 class union_set_list {
3765   friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
3766   friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
3767 
3768   isl_union_set_list *ptr = nullptr;
3769 
3770   inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
3771 
3772 public:
3773   inline /* implicit */ union_set_list();
3774   inline /* implicit */ union_set_list(const union_set_list &obj);
3775   inline union_set_list &operator=(union_set_list obj);
3776   inline ~union_set_list();
3777   inline __isl_give isl_union_set_list *copy() const &;
3778   inline __isl_give isl_union_set_list *copy() && = delete;
3779   inline __isl_keep isl_union_set_list *get() const;
3780   inline __isl_give isl_union_set_list *release();
3781   inline bool is_null() const;
3782   inline isl::ctx ctx() const;
3783   inline void dump() const;
3784 
3785   inline isl::union_set_list add(isl::union_set el) const;
3786   static inline isl::union_set_list alloc(isl::ctx ctx, int n);
3787   inline isl::union_set_list clear() const;
3788   inline isl::union_set_list concat(isl::union_set_list list2) const;
3789   inline isl::union_set_list drop(unsigned int first, unsigned int n) const;
3790   inline stat foreach(const std::function<stat(union_set)> &fn) const;
3791   static inline isl::union_set_list from_union_set(isl::union_set el);
3792   inline isl::union_set get_at(int index) const;
3793   inline isl::union_set get_union_set(int index) const;
3794   inline isl::union_set_list insert(unsigned int pos, isl::union_set el) const;
3795   inline isl_size n_union_set() const;
3796   inline isl::union_set_list reverse() const;
3797   inline isl::union_set_list set_union_set(int index, isl::union_set el) const;
3798   inline isl_size size() const;
3799   inline isl::union_set_list swap(unsigned int pos1, unsigned int pos2) const;
3800   inline isl::union_set unite() const;
3801 };
3802 
3803 // declarations for isl::val
3804 inline val manage(__isl_take isl_val *ptr);
3805 inline val manage_copy(__isl_keep isl_val *ptr);
3806 
3807 class val {
3808   friend inline val manage(__isl_take isl_val *ptr);
3809   friend inline val manage_copy(__isl_keep isl_val *ptr);
3810 
3811   isl_val *ptr = nullptr;
3812 
3813   inline explicit val(__isl_take isl_val *ptr);
3814 
3815 public:
3816   inline /* implicit */ val();
3817   inline /* implicit */ val(const val &obj);
3818   inline explicit val(isl::ctx ctx, long i);
3819   inline explicit val(isl::ctx ctx, const std::string &str);
3820   inline val &operator=(val obj);
3821   inline ~val();
3822   inline __isl_give isl_val *copy() const &;
3823   inline __isl_give isl_val *copy() && = delete;
3824   inline __isl_keep isl_val *get() const;
3825   inline __isl_give isl_val *release();
3826   inline bool is_null() const;
3827   inline isl::ctx ctx() const;
3828   inline void dump() const;
3829 
3830   inline isl::val abs() const;
3831   inline boolean abs_eq(const isl::val &v2) const;
3832   inline isl::val add(isl::val v2) const;
3833   inline isl::val add_ui(unsigned long v2) const;
3834   inline isl::val ceil() const;
3835   inline int cmp_si(long i) const;
3836   inline isl::val div(isl::val v2) const;
3837   inline isl::val div_ui(unsigned long v2) const;
3838   inline boolean eq(const isl::val &v2) const;
3839   inline boolean eq_si(long i) const;
3840   inline isl::val floor() const;
3841   inline isl::val gcd(isl::val v2) const;
3842   inline boolean ge(const isl::val &v2) const;
3843   inline uint32_t get_hash() const;
3844   inline long get_num_si() const;
3845   inline boolean gt(const isl::val &v2) const;
3846   inline boolean gt_si(long i) const;
3847   static inline isl::val infty(isl::ctx ctx);
3848   static inline isl::val int_from_ui(isl::ctx ctx, unsigned long u);
3849   inline isl::val inv() const;
3850   inline boolean is_divisible_by(const isl::val &v2) const;
3851   inline boolean is_infty() const;
3852   inline boolean is_int() const;
3853   inline boolean is_nan() const;
3854   inline boolean is_neg() const;
3855   inline boolean is_neginfty() const;
3856   inline boolean is_negone() const;
3857   inline boolean is_nonneg() const;
3858   inline boolean is_nonpos() const;
3859   inline boolean is_one() const;
3860   inline boolean is_pos() const;
3861   inline boolean is_rat() const;
3862   inline boolean is_zero() const;
3863   inline boolean le(const isl::val &v2) const;
3864   inline boolean lt(const isl::val &v2) const;
3865   inline isl::val max(isl::val v2) const;
3866   inline isl::val min(isl::val v2) const;
3867   inline isl::val mod(isl::val v2) const;
3868   inline isl::val mul(isl::val v2) const;
3869   inline isl::val mul_ui(unsigned long v2) const;
3870   inline isl_size n_abs_num_chunks(size_t size) const;
3871   static inline isl::val nan(isl::ctx ctx);
3872   inline boolean ne(const isl::val &v2) const;
3873   inline isl::val neg() const;
3874   static inline isl::val neginfty(isl::ctx ctx);
3875   static inline isl::val negone(isl::ctx ctx);
3876   static inline isl::val one(isl::ctx ctx);
3877   inline isl::val pow2() const;
3878   inline isl::val set_si(long i) const;
3879   inline int sgn() const;
3880   inline isl::val sub(isl::val v2) const;
3881   inline isl::val sub_ui(unsigned long v2) const;
3882   inline isl::val trunc() const;
3883   static inline isl::val zero(isl::ctx ctx);
3884 };
3885 
3886 // declarations for isl::val_list
3887 inline val_list manage(__isl_take isl_val_list *ptr);
3888 inline val_list manage_copy(__isl_keep isl_val_list *ptr);
3889 
3890 class val_list {
3891   friend inline val_list manage(__isl_take isl_val_list *ptr);
3892   friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
3893 
3894   isl_val_list *ptr = nullptr;
3895 
3896   inline explicit val_list(__isl_take isl_val_list *ptr);
3897 
3898 public:
3899   inline /* implicit */ val_list();
3900   inline /* implicit */ val_list(const val_list &obj);
3901   inline val_list &operator=(val_list obj);
3902   inline ~val_list();
3903   inline __isl_give isl_val_list *copy() const &;
3904   inline __isl_give isl_val_list *copy() && = delete;
3905   inline __isl_keep isl_val_list *get() const;
3906   inline __isl_give isl_val_list *release();
3907   inline bool is_null() const;
3908   inline isl::ctx ctx() const;
3909   inline void dump() const;
3910 
3911   inline isl::val_list add(isl::val el) const;
3912   static inline isl::val_list alloc(isl::ctx ctx, int n);
3913   inline isl::val_list clear() const;
3914   inline isl::val_list concat(isl::val_list list2) const;
3915   inline isl::val_list drop(unsigned int first, unsigned int n) const;
3916   inline stat foreach(const std::function<stat(val)> &fn) const;
3917   static inline isl::val_list from_val(isl::val el);
3918   inline isl::val get_at(int index) const;
3919   inline isl::val get_val(int index) const;
3920   inline isl::val_list insert(unsigned int pos, isl::val el) const;
3921   inline isl_size n_val() const;
3922   inline isl::val_list reverse() const;
3923   inline isl::val_list set_val(int index, isl::val el) const;
3924   inline isl_size size() const;
3925   inline isl::val_list swap(unsigned int pos1, unsigned int pos2) const;
3926 };
3927 
3928 // declarations for isl::vec
3929 inline vec manage(__isl_take isl_vec *ptr);
3930 inline vec manage_copy(__isl_keep isl_vec *ptr);
3931 
3932 class vec {
3933   friend inline vec manage(__isl_take isl_vec *ptr);
3934   friend inline vec manage_copy(__isl_keep isl_vec *ptr);
3935 
3936   isl_vec *ptr = nullptr;
3937 
3938   inline explicit vec(__isl_take isl_vec *ptr);
3939 
3940 public:
3941   inline /* implicit */ vec();
3942   inline /* implicit */ vec(const vec &obj);
3943   inline vec &operator=(vec obj);
3944   inline ~vec();
3945   inline __isl_give isl_vec *copy() const &;
3946   inline __isl_give isl_vec *copy() && = delete;
3947   inline __isl_keep isl_vec *get() const;
3948   inline __isl_give isl_vec *release();
3949   inline bool is_null() const;
3950   inline isl::ctx ctx() const;
3951   inline void dump() const;
3952 
3953   inline isl::vec add(isl::vec vec2) const;
3954   inline isl::vec add_els(unsigned int n) const;
3955   static inline isl::vec alloc(isl::ctx ctx, unsigned int size);
3956   inline isl::vec ceil() const;
3957   inline isl::vec clr() const;
3958   inline int cmp_element(const isl::vec &vec2, int pos) const;
3959   inline isl::vec concat(isl::vec vec2) const;
3960   inline isl::vec drop_els(unsigned int pos, unsigned int n) const;
3961   inline isl::vec extend(unsigned int size) const;
3962   inline isl::val get_element_val(int pos) const;
3963   inline isl::vec insert_els(unsigned int pos, unsigned int n) const;
3964   inline isl::vec insert_zero_els(unsigned int pos, unsigned int n) const;
3965   inline boolean is_equal(const isl::vec &vec2) const;
3966   inline isl::vec mat_product(isl::mat mat) const;
3967   inline isl::vec move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const;
3968   inline isl::vec neg() const;
3969   inline isl::vec set_element_si(int pos, int v) const;
3970   inline isl::vec set_element_val(int pos, isl::val v) const;
3971   inline isl::vec set_si(int v) const;
3972   inline isl::vec set_val(isl::val v) const;
3973   inline isl_size size() const;
3974   inline isl::vec sort() const;
3975   static inline isl::vec zero(isl::ctx ctx, unsigned int size);
3976   inline isl::vec zero_extend(unsigned int size) const;
3977 };
3978 
3979 // implementations for isl::aff
manage(__isl_take isl_aff * ptr)3980 aff manage(__isl_take isl_aff *ptr) {
3981   return aff(ptr);
3982 }
manage_copy(__isl_keep isl_aff * ptr)3983 aff manage_copy(__isl_keep isl_aff *ptr) {
3984   ptr = isl_aff_copy(ptr);
3985   return aff(ptr);
3986 }
3987 
aff()3988 aff::aff()
3989     : ptr(nullptr) {}
3990 
aff(const aff & obj)3991 aff::aff(const aff &obj)
3992     : ptr(nullptr)
3993 {
3994   ptr = obj.copy();
3995 }
3996 
3997 
aff(__isl_take isl_aff * ptr)3998 aff::aff(__isl_take isl_aff *ptr)
3999     : ptr(ptr) {}
4000 
aff(isl::ctx ctx,const std::string & str)4001 aff::aff(isl::ctx ctx, const std::string &str)
4002 {
4003   auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
4004   ptr = res;
4005 }
aff(isl::local_space ls,isl::val val)4006 aff::aff(isl::local_space ls, isl::val val)
4007 {
4008   auto res = isl_aff_val_on_domain(ls.release(), val.release());
4009   ptr = res;
4010 }
aff(isl::local_space ls)4011 aff::aff(isl::local_space ls)
4012 {
4013   auto res = isl_aff_zero_on_domain(ls.release());
4014   ptr = res;
4015 }
4016 
4017 aff &aff::operator=(aff obj) {
4018   std::swap(this->ptr, obj.ptr);
4019   return *this;
4020 }
4021 
~aff()4022 aff::~aff() {
4023   if (ptr)
4024     isl_aff_free(ptr);
4025 }
4026 
copy()4027 __isl_give isl_aff *aff::copy() const & {
4028   return isl_aff_copy(ptr);
4029 }
4030 
get()4031 __isl_keep isl_aff *aff::get() const {
4032   return ptr;
4033 }
4034 
release()4035 __isl_give isl_aff *aff::release() {
4036   isl_aff *tmp = ptr;
4037   ptr = nullptr;
4038   return tmp;
4039 }
4040 
is_null()4041 bool aff::is_null() const {
4042   return ptr == nullptr;
4043 }
4044 
4045 
ctx()4046 isl::ctx aff::ctx() const {
4047   return isl::ctx(isl_aff_get_ctx(ptr));
4048 }
4049 
dump()4050 void aff::dump() const {
4051   isl_aff_dump(get());
4052 }
4053 
4054 
add(isl::aff aff2)4055 isl::aff aff::add(isl::aff aff2) const
4056 {
4057   auto res = isl_aff_add(copy(), aff2.release());
4058   return manage(res);
4059 }
4060 
add_coefficient_si(isl::dim type,int pos,int v)4061 isl::aff aff::add_coefficient_si(isl::dim type, int pos, int v) const
4062 {
4063   auto res = isl_aff_add_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
4064   return manage(res);
4065 }
4066 
add_coefficient_val(isl::dim type,int pos,isl::val v)4067 isl::aff aff::add_coefficient_val(isl::dim type, int pos, isl::val v) const
4068 {
4069   auto res = isl_aff_add_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
4070   return manage(res);
4071 }
4072 
add_constant(isl::val v)4073 isl::aff aff::add_constant(isl::val v) const
4074 {
4075   auto res = isl_aff_add_constant_val(copy(), v.release());
4076   return manage(res);
4077 }
4078 
add_constant_num_si(int v)4079 isl::aff aff::add_constant_num_si(int v) const
4080 {
4081   auto res = isl_aff_add_constant_num_si(copy(), v);
4082   return manage(res);
4083 }
4084 
add_constant_si(int v)4085 isl::aff aff::add_constant_si(int v) const
4086 {
4087   auto res = isl_aff_add_constant_si(copy(), v);
4088   return manage(res);
4089 }
4090 
add_dims(isl::dim type,unsigned int n)4091 isl::aff aff::add_dims(isl::dim type, unsigned int n) const
4092 {
4093   auto res = isl_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
4094   return manage(res);
4095 }
4096 
align_params(isl::space model)4097 isl::aff aff::align_params(isl::space model) const
4098 {
4099   auto res = isl_aff_align_params(copy(), model.release());
4100   return manage(res);
4101 }
4102 
bind(isl::id id)4103 isl::basic_set aff::bind(isl::id id) const
4104 {
4105   auto res = isl_aff_bind_id(copy(), id.release());
4106   return manage(res);
4107 }
4108 
ceil()4109 isl::aff aff::ceil() const
4110 {
4111   auto res = isl_aff_ceil(copy());
4112   return manage(res);
4113 }
4114 
coefficient_sgn(isl::dim type,int pos)4115 int aff::coefficient_sgn(isl::dim type, int pos) const
4116 {
4117   auto res = isl_aff_coefficient_sgn(get(), static_cast<enum isl_dim_type>(type), pos);
4118   return res;
4119 }
4120 
dim(isl::dim type)4121 isl_size aff::dim(isl::dim type) const
4122 {
4123   auto res = isl_aff_dim(get(), static_cast<enum isl_dim_type>(type));
4124   return res;
4125 }
4126 
div(isl::aff aff2)4127 isl::aff aff::div(isl::aff aff2) const
4128 {
4129   auto res = isl_aff_div(copy(), aff2.release());
4130   return manage(res);
4131 }
4132 
drop_dims(isl::dim type,unsigned int first,unsigned int n)4133 isl::aff aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
4134 {
4135   auto res = isl_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
4136   return manage(res);
4137 }
4138 
eq_basic_set(isl::aff aff2)4139 isl::basic_set aff::eq_basic_set(isl::aff aff2) const
4140 {
4141   auto res = isl_aff_eq_basic_set(copy(), aff2.release());
4142   return manage(res);
4143 }
4144 
eq_set(isl::aff aff2)4145 isl::set aff::eq_set(isl::aff aff2) const
4146 {
4147   auto res = isl_aff_eq_set(copy(), aff2.release());
4148   return manage(res);
4149 }
4150 
eval(isl::point pnt)4151 isl::val aff::eval(isl::point pnt) const
4152 {
4153   auto res = isl_aff_eval(copy(), pnt.release());
4154   return manage(res);
4155 }
4156 
find_dim_by_name(isl::dim type,const std::string & name)4157 int aff::find_dim_by_name(isl::dim type, const std::string &name) const
4158 {
4159   auto res = isl_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
4160   return res;
4161 }
4162 
floor()4163 isl::aff aff::floor() const
4164 {
4165   auto res = isl_aff_floor(copy());
4166   return manage(res);
4167 }
4168 
from_range()4169 isl::aff aff::from_range() const
4170 {
4171   auto res = isl_aff_from_range(copy());
4172   return manage(res);
4173 }
4174 
ge_basic_set(isl::aff aff2)4175 isl::basic_set aff::ge_basic_set(isl::aff aff2) const
4176 {
4177   auto res = isl_aff_ge_basic_set(copy(), aff2.release());
4178   return manage(res);
4179 }
4180 
ge_set(isl::aff aff2)4181 isl::set aff::ge_set(isl::aff aff2) const
4182 {
4183   auto res = isl_aff_ge_set(copy(), aff2.release());
4184   return manage(res);
4185 }
4186 
get_coefficient_val(isl::dim type,int pos)4187 isl::val aff::get_coefficient_val(isl::dim type, int pos) const
4188 {
4189   auto res = isl_aff_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
4190   return manage(res);
4191 }
4192 
get_constant_val()4193 isl::val aff::get_constant_val() const
4194 {
4195   auto res = isl_aff_get_constant_val(get());
4196   return manage(res);
4197 }
4198 
get_denominator_val()4199 isl::val aff::get_denominator_val() const
4200 {
4201   auto res = isl_aff_get_denominator_val(get());
4202   return manage(res);
4203 }
4204 
get_dim_name(isl::dim type,unsigned int pos)4205 std::string aff::get_dim_name(isl::dim type, unsigned int pos) const
4206 {
4207   auto res = isl_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
4208   std::string tmp(res);
4209   return tmp;
4210 }
4211 
get_div(int pos)4212 isl::aff aff::get_div(int pos) const
4213 {
4214   auto res = isl_aff_get_div(get(), pos);
4215   return manage(res);
4216 }
4217 
get_domain_local_space()4218 isl::local_space aff::get_domain_local_space() const
4219 {
4220   auto res = isl_aff_get_domain_local_space(get());
4221   return manage(res);
4222 }
4223 
get_domain_space()4224 isl::space aff::get_domain_space() const
4225 {
4226   auto res = isl_aff_get_domain_space(get());
4227   return manage(res);
4228 }
4229 
get_hash()4230 uint32_t aff::get_hash() const
4231 {
4232   auto res = isl_aff_get_hash(get());
4233   return res;
4234 }
4235 
get_local_space()4236 isl::local_space aff::get_local_space() const
4237 {
4238   auto res = isl_aff_get_local_space(get());
4239   return manage(res);
4240 }
4241 
get_space()4242 isl::space aff::get_space() const
4243 {
4244   auto res = isl_aff_get_space(get());
4245   return manage(res);
4246 }
4247 
gist(isl::set context)4248 isl::aff aff::gist(isl::set context) const
4249 {
4250   auto res = isl_aff_gist(copy(), context.release());
4251   return manage(res);
4252 }
4253 
gist_params(isl::set context)4254 isl::aff aff::gist_params(isl::set context) const
4255 {
4256   auto res = isl_aff_gist_params(copy(), context.release());
4257   return manage(res);
4258 }
4259 
gt_basic_set(isl::aff aff2)4260 isl::basic_set aff::gt_basic_set(isl::aff aff2) const
4261 {
4262   auto res = isl_aff_gt_basic_set(copy(), aff2.release());
4263   return manage(res);
4264 }
4265 
gt_set(isl::aff aff2)4266 isl::set aff::gt_set(isl::aff aff2) const
4267 {
4268   auto res = isl_aff_gt_set(copy(), aff2.release());
4269   return manage(res);
4270 }
4271 
insert_dims(isl::dim type,unsigned int first,unsigned int n)4272 isl::aff aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
4273 {
4274   auto res = isl_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
4275   return manage(res);
4276 }
4277 
involves_dims(isl::dim type,unsigned int first,unsigned int n)4278 boolean aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
4279 {
4280   auto res = isl_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
4281   return manage(res);
4282 }
4283 
involves_locals()4284 boolean aff::involves_locals() const
4285 {
4286   auto res = isl_aff_involves_locals(get());
4287   return manage(res);
4288 }
4289 
is_cst()4290 boolean aff::is_cst() const
4291 {
4292   auto res = isl_aff_is_cst(get());
4293   return manage(res);
4294 }
4295 
is_nan()4296 boolean aff::is_nan() const
4297 {
4298   auto res = isl_aff_is_nan(get());
4299   return manage(res);
4300 }
4301 
le_basic_set(isl::aff aff2)4302 isl::basic_set aff::le_basic_set(isl::aff aff2) const
4303 {
4304   auto res = isl_aff_le_basic_set(copy(), aff2.release());
4305   return manage(res);
4306 }
4307 
le_set(isl::aff aff2)4308 isl::set aff::le_set(isl::aff aff2) const
4309 {
4310   auto res = isl_aff_le_set(copy(), aff2.release());
4311   return manage(res);
4312 }
4313 
lt_basic_set(isl::aff aff2)4314 isl::basic_set aff::lt_basic_set(isl::aff aff2) const
4315 {
4316   auto res = isl_aff_lt_basic_set(copy(), aff2.release());
4317   return manage(res);
4318 }
4319 
lt_set(isl::aff aff2)4320 isl::set aff::lt_set(isl::aff aff2) const
4321 {
4322   auto res = isl_aff_lt_set(copy(), aff2.release());
4323   return manage(res);
4324 }
4325 
mod(isl::val mod)4326 isl::aff aff::mod(isl::val mod) const
4327 {
4328   auto res = isl_aff_mod_val(copy(), mod.release());
4329   return manage(res);
4330 }
4331 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)4332 isl::aff aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
4333 {
4334   auto res = isl_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
4335   return manage(res);
4336 }
4337 
mul(isl::aff aff2)4338 isl::aff aff::mul(isl::aff aff2) const
4339 {
4340   auto res = isl_aff_mul(copy(), aff2.release());
4341   return manage(res);
4342 }
4343 
nan_on_domain(isl::local_space ls)4344 isl::aff aff::nan_on_domain(isl::local_space ls)
4345 {
4346   auto res = isl_aff_nan_on_domain(ls.release());
4347   return manage(res);
4348 }
4349 
nan_on_domain_space(isl::space space)4350 isl::aff aff::nan_on_domain_space(isl::space space)
4351 {
4352   auto res = isl_aff_nan_on_domain_space(space.release());
4353   return manage(res);
4354 }
4355 
ne_set(isl::aff aff2)4356 isl::set aff::ne_set(isl::aff aff2) const
4357 {
4358   auto res = isl_aff_ne_set(copy(), aff2.release());
4359   return manage(res);
4360 }
4361 
neg()4362 isl::aff aff::neg() const
4363 {
4364   auto res = isl_aff_neg(copy());
4365   return manage(res);
4366 }
4367 
neg_basic_set()4368 isl::basic_set aff::neg_basic_set() const
4369 {
4370   auto res = isl_aff_neg_basic_set(copy());
4371   return manage(res);
4372 }
4373 
param_on_domain_space_id(isl::space space,isl::id id)4374 isl::aff aff::param_on_domain_space_id(isl::space space, isl::id id)
4375 {
4376   auto res = isl_aff_param_on_domain_space_id(space.release(), id.release());
4377   return manage(res);
4378 }
4379 
plain_is_equal(const isl::aff & aff2)4380 boolean aff::plain_is_equal(const isl::aff &aff2) const
4381 {
4382   auto res = isl_aff_plain_is_equal(get(), aff2.get());
4383   return manage(res);
4384 }
4385 
plain_is_zero()4386 boolean aff::plain_is_zero() const
4387 {
4388   auto res = isl_aff_plain_is_zero(get());
4389   return manage(res);
4390 }
4391 
project_domain_on_params()4392 isl::aff aff::project_domain_on_params() const
4393 {
4394   auto res = isl_aff_project_domain_on_params(copy());
4395   return manage(res);
4396 }
4397 
pullback(isl::multi_aff ma)4398 isl::aff aff::pullback(isl::multi_aff ma) const
4399 {
4400   auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
4401   return manage(res);
4402 }
4403 
pullback_aff(isl::aff aff2)4404 isl::aff aff::pullback_aff(isl::aff aff2) const
4405 {
4406   auto res = isl_aff_pullback_aff(copy(), aff2.release());
4407   return manage(res);
4408 }
4409 
scale(isl::val v)4410 isl::aff aff::scale(isl::val v) const
4411 {
4412   auto res = isl_aff_scale_val(copy(), v.release());
4413   return manage(res);
4414 }
4415 
scale_down(isl::val v)4416 isl::aff aff::scale_down(isl::val v) const
4417 {
4418   auto res = isl_aff_scale_down_val(copy(), v.release());
4419   return manage(res);
4420 }
4421 
scale_down_ui(unsigned int f)4422 isl::aff aff::scale_down_ui(unsigned int f) const
4423 {
4424   auto res = isl_aff_scale_down_ui(copy(), f);
4425   return manage(res);
4426 }
4427 
set_coefficient_si(isl::dim type,int pos,int v)4428 isl::aff aff::set_coefficient_si(isl::dim type, int pos, int v) const
4429 {
4430   auto res = isl_aff_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
4431   return manage(res);
4432 }
4433 
set_coefficient_val(isl::dim type,int pos,isl::val v)4434 isl::aff aff::set_coefficient_val(isl::dim type, int pos, isl::val v) const
4435 {
4436   auto res = isl_aff_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
4437   return manage(res);
4438 }
4439 
set_constant_si(int v)4440 isl::aff aff::set_constant_si(int v) const
4441 {
4442   auto res = isl_aff_set_constant_si(copy(), v);
4443   return manage(res);
4444 }
4445 
set_constant_val(isl::val v)4446 isl::aff aff::set_constant_val(isl::val v) const
4447 {
4448   auto res = isl_aff_set_constant_val(copy(), v.release());
4449   return manage(res);
4450 }
4451 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)4452 isl::aff aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
4453 {
4454   auto res = isl_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
4455   return manage(res);
4456 }
4457 
set_tuple_id(isl::dim type,isl::id id)4458 isl::aff aff::set_tuple_id(isl::dim type, isl::id id) const
4459 {
4460   auto res = isl_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
4461   return manage(res);
4462 }
4463 
sub(isl::aff aff2)4464 isl::aff aff::sub(isl::aff aff2) const
4465 {
4466   auto res = isl_aff_sub(copy(), aff2.release());
4467   return manage(res);
4468 }
4469 
unbind_params_insert_domain(isl::multi_id domain)4470 isl::aff aff::unbind_params_insert_domain(isl::multi_id domain) const
4471 {
4472   auto res = isl_aff_unbind_params_insert_domain(copy(), domain.release());
4473   return manage(res);
4474 }
4475 
val_on_domain_space(isl::space space,isl::val val)4476 isl::aff aff::val_on_domain_space(isl::space space, isl::val val)
4477 {
4478   auto res = isl_aff_val_on_domain_space(space.release(), val.release());
4479   return manage(res);
4480 }
4481 
var_on_domain(isl::local_space ls,isl::dim type,unsigned int pos)4482 isl::aff aff::var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos)
4483 {
4484   auto res = isl_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
4485   return manage(res);
4486 }
4487 
zero_basic_set()4488 isl::basic_set aff::zero_basic_set() const
4489 {
4490   auto res = isl_aff_zero_basic_set(copy());
4491   return manage(res);
4492 }
4493 
zero_on_domain(isl::space space)4494 isl::aff aff::zero_on_domain(isl::space space)
4495 {
4496   auto res = isl_aff_zero_on_domain_space(space.release());
4497   return manage(res);
4498 }
4499 
4500 // implementations for isl::aff_list
manage(__isl_take isl_aff_list * ptr)4501 aff_list manage(__isl_take isl_aff_list *ptr) {
4502   return aff_list(ptr);
4503 }
manage_copy(__isl_keep isl_aff_list * ptr)4504 aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
4505   ptr = isl_aff_list_copy(ptr);
4506   return aff_list(ptr);
4507 }
4508 
aff_list()4509 aff_list::aff_list()
4510     : ptr(nullptr) {}
4511 
aff_list(const aff_list & obj)4512 aff_list::aff_list(const aff_list &obj)
4513     : ptr(nullptr)
4514 {
4515   ptr = obj.copy();
4516 }
4517 
4518 
aff_list(__isl_take isl_aff_list * ptr)4519 aff_list::aff_list(__isl_take isl_aff_list *ptr)
4520     : ptr(ptr) {}
4521 
4522 
4523 aff_list &aff_list::operator=(aff_list obj) {
4524   std::swap(this->ptr, obj.ptr);
4525   return *this;
4526 }
4527 
~aff_list()4528 aff_list::~aff_list() {
4529   if (ptr)
4530     isl_aff_list_free(ptr);
4531 }
4532 
copy()4533 __isl_give isl_aff_list *aff_list::copy() const & {
4534   return isl_aff_list_copy(ptr);
4535 }
4536 
get()4537 __isl_keep isl_aff_list *aff_list::get() const {
4538   return ptr;
4539 }
4540 
release()4541 __isl_give isl_aff_list *aff_list::release() {
4542   isl_aff_list *tmp = ptr;
4543   ptr = nullptr;
4544   return tmp;
4545 }
4546 
is_null()4547 bool aff_list::is_null() const {
4548   return ptr == nullptr;
4549 }
4550 
4551 
ctx()4552 isl::ctx aff_list::ctx() const {
4553   return isl::ctx(isl_aff_list_get_ctx(ptr));
4554 }
4555 
dump()4556 void aff_list::dump() const {
4557   isl_aff_list_dump(get());
4558 }
4559 
4560 
add(isl::aff el)4561 isl::aff_list aff_list::add(isl::aff el) const
4562 {
4563   auto res = isl_aff_list_add(copy(), el.release());
4564   return manage(res);
4565 }
4566 
alloc(isl::ctx ctx,int n)4567 isl::aff_list aff_list::alloc(isl::ctx ctx, int n)
4568 {
4569   auto res = isl_aff_list_alloc(ctx.release(), n);
4570   return manage(res);
4571 }
4572 
clear()4573 isl::aff_list aff_list::clear() const
4574 {
4575   auto res = isl_aff_list_clear(copy());
4576   return manage(res);
4577 }
4578 
concat(isl::aff_list list2)4579 isl::aff_list aff_list::concat(isl::aff_list list2) const
4580 {
4581   auto res = isl_aff_list_concat(copy(), list2.release());
4582   return manage(res);
4583 }
4584 
drop(unsigned int first,unsigned int n)4585 isl::aff_list aff_list::drop(unsigned int first, unsigned int n) const
4586 {
4587   auto res = isl_aff_list_drop(copy(), first, n);
4588   return manage(res);
4589 }
4590 
foreach(const std::function<stat (aff)> & fn)4591 stat aff_list::foreach(const std::function<stat(aff)> &fn) const
4592 {
4593   struct fn_data {
4594     const std::function<stat(aff)> *func;
4595   } fn_data = { &fn };
4596   auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
4597     auto *data = static_cast<struct fn_data *>(arg_1);
4598     stat ret = (*data->func)(manage(arg_0));
4599     return ret.release();
4600   };
4601   auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
4602   return manage(res);
4603 }
4604 
from_aff(isl::aff el)4605 isl::aff_list aff_list::from_aff(isl::aff el)
4606 {
4607   auto res = isl_aff_list_from_aff(el.release());
4608   return manage(res);
4609 }
4610 
get_aff(int index)4611 isl::aff aff_list::get_aff(int index) const
4612 {
4613   auto res = isl_aff_list_get_aff(get(), index);
4614   return manage(res);
4615 }
4616 
get_at(int index)4617 isl::aff aff_list::get_at(int index) const
4618 {
4619   auto res = isl_aff_list_get_at(get(), index);
4620   return manage(res);
4621 }
4622 
insert(unsigned int pos,isl::aff el)4623 isl::aff_list aff_list::insert(unsigned int pos, isl::aff el) const
4624 {
4625   auto res = isl_aff_list_insert(copy(), pos, el.release());
4626   return manage(res);
4627 }
4628 
n_aff()4629 isl_size aff_list::n_aff() const
4630 {
4631   auto res = isl_aff_list_n_aff(get());
4632   return res;
4633 }
4634 
reverse()4635 isl::aff_list aff_list::reverse() const
4636 {
4637   auto res = isl_aff_list_reverse(copy());
4638   return manage(res);
4639 }
4640 
set_aff(int index,isl::aff el)4641 isl::aff_list aff_list::set_aff(int index, isl::aff el) const
4642 {
4643   auto res = isl_aff_list_set_aff(copy(), index, el.release());
4644   return manage(res);
4645 }
4646 
size()4647 isl_size aff_list::size() const
4648 {
4649   auto res = isl_aff_list_size(get());
4650   return res;
4651 }
4652 
swap(unsigned int pos1,unsigned int pos2)4653 isl::aff_list aff_list::swap(unsigned int pos1, unsigned int pos2) const
4654 {
4655   auto res = isl_aff_list_swap(copy(), pos1, pos2);
4656   return manage(res);
4657 }
4658 
4659 // implementations for isl::ast_build
manage(__isl_take isl_ast_build * ptr)4660 ast_build manage(__isl_take isl_ast_build *ptr) {
4661   return ast_build(ptr);
4662 }
manage_copy(__isl_keep isl_ast_build * ptr)4663 ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
4664   ptr = isl_ast_build_copy(ptr);
4665   return ast_build(ptr);
4666 }
4667 
ast_build()4668 ast_build::ast_build()
4669     : ptr(nullptr) {}
4670 
ast_build(const ast_build & obj)4671 ast_build::ast_build(const ast_build &obj)
4672     : ptr(nullptr)
4673 {
4674   ptr = obj.copy();
4675 }
4676 
4677 
ast_build(__isl_take isl_ast_build * ptr)4678 ast_build::ast_build(__isl_take isl_ast_build *ptr)
4679     : ptr(ptr) {}
4680 
ast_build(isl::ctx ctx)4681 ast_build::ast_build(isl::ctx ctx)
4682 {
4683   auto res = isl_ast_build_alloc(ctx.release());
4684   ptr = res;
4685 }
4686 
4687 ast_build &ast_build::operator=(ast_build obj) {
4688   std::swap(this->ptr, obj.ptr);
4689   return *this;
4690 }
4691 
~ast_build()4692 ast_build::~ast_build() {
4693   if (ptr)
4694     isl_ast_build_free(ptr);
4695 }
4696 
copy()4697 __isl_give isl_ast_build *ast_build::copy() const & {
4698   return isl_ast_build_copy(ptr);
4699 }
4700 
get()4701 __isl_keep isl_ast_build *ast_build::get() const {
4702   return ptr;
4703 }
4704 
release()4705 __isl_give isl_ast_build *ast_build::release() {
4706   isl_ast_build *tmp = ptr;
4707   ptr = nullptr;
4708   return tmp;
4709 }
4710 
is_null()4711 bool ast_build::is_null() const {
4712   return ptr == nullptr;
4713 }
4714 
4715 
ctx()4716 isl::ctx ast_build::ctx() const {
4717   return isl::ctx(isl_ast_build_get_ctx(ptr));
4718 }
4719 
4720 
access_from(isl::multi_pw_aff mpa)4721 isl::ast_expr ast_build::access_from(isl::multi_pw_aff mpa) const
4722 {
4723   auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
4724   return manage(res);
4725 }
4726 
access_from(isl::pw_multi_aff pma)4727 isl::ast_expr ast_build::access_from(isl::pw_multi_aff pma) const
4728 {
4729   auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
4730   return manage(res);
4731 }
4732 
ast_from_schedule(isl::union_map schedule)4733 isl::ast_node ast_build::ast_from_schedule(isl::union_map schedule) const
4734 {
4735   auto res = isl_ast_build_ast_from_schedule(get(), schedule.release());
4736   return manage(res);
4737 }
4738 
call_from(isl::multi_pw_aff mpa)4739 isl::ast_expr ast_build::call_from(isl::multi_pw_aff mpa) const
4740 {
4741   auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
4742   return manage(res);
4743 }
4744 
call_from(isl::pw_multi_aff pma)4745 isl::ast_expr ast_build::call_from(isl::pw_multi_aff pma) const
4746 {
4747   auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
4748   return manage(res);
4749 }
4750 
expr_from(isl::pw_aff pa)4751 isl::ast_expr ast_build::expr_from(isl::pw_aff pa) const
4752 {
4753   auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
4754   return manage(res);
4755 }
4756 
expr_from(isl::set set)4757 isl::ast_expr ast_build::expr_from(isl::set set) const
4758 {
4759   auto res = isl_ast_build_expr_from_set(get(), set.release());
4760   return manage(res);
4761 }
4762 
from_context(isl::set set)4763 isl::ast_build ast_build::from_context(isl::set set)
4764 {
4765   auto res = isl_ast_build_from_context(set.release());
4766   return manage(res);
4767 }
4768 
get_schedule()4769 isl::union_map ast_build::get_schedule() const
4770 {
4771   auto res = isl_ast_build_get_schedule(get());
4772   return manage(res);
4773 }
4774 
get_schedule_space()4775 isl::space ast_build::get_schedule_space() const
4776 {
4777   auto res = isl_ast_build_get_schedule_space(get());
4778   return manage(res);
4779 }
4780 
node_from(isl::schedule schedule)4781 isl::ast_node ast_build::node_from(isl::schedule schedule) const
4782 {
4783   auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
4784   return manage(res);
4785 }
4786 
node_from_schedule_map(isl::union_map schedule)4787 isl::ast_node ast_build::node_from_schedule_map(isl::union_map schedule) const
4788 {
4789   auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
4790   return manage(res);
4791 }
4792 
4793 isl::ast_build ast_build::restrict(isl::set set) const
4794 {
4795   auto res = isl_ast_build_restrict(copy(), set.release());
4796   return manage(res);
4797 }
4798 
4799 // implementations for isl::ast_expr
manage(__isl_take isl_ast_expr * ptr)4800 ast_expr manage(__isl_take isl_ast_expr *ptr) {
4801   return ast_expr(ptr);
4802 }
manage_copy(__isl_keep isl_ast_expr * ptr)4803 ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
4804   ptr = isl_ast_expr_copy(ptr);
4805   return ast_expr(ptr);
4806 }
4807 
ast_expr()4808 ast_expr::ast_expr()
4809     : ptr(nullptr) {}
4810 
ast_expr(const ast_expr & obj)4811 ast_expr::ast_expr(const ast_expr &obj)
4812     : ptr(nullptr)
4813 {
4814   ptr = obj.copy();
4815 }
4816 
4817 
ast_expr(__isl_take isl_ast_expr * ptr)4818 ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
4819     : ptr(ptr) {}
4820 
4821 
4822 ast_expr &ast_expr::operator=(ast_expr obj) {
4823   std::swap(this->ptr, obj.ptr);
4824   return *this;
4825 }
4826 
~ast_expr()4827 ast_expr::~ast_expr() {
4828   if (ptr)
4829     isl_ast_expr_free(ptr);
4830 }
4831 
copy()4832 __isl_give isl_ast_expr *ast_expr::copy() const & {
4833   return isl_ast_expr_copy(ptr);
4834 }
4835 
get()4836 __isl_keep isl_ast_expr *ast_expr::get() const {
4837   return ptr;
4838 }
4839 
release()4840 __isl_give isl_ast_expr *ast_expr::release() {
4841   isl_ast_expr *tmp = ptr;
4842   ptr = nullptr;
4843   return tmp;
4844 }
4845 
is_null()4846 bool ast_expr::is_null() const {
4847   return ptr == nullptr;
4848 }
4849 
4850 
ctx()4851 isl::ctx ast_expr::ctx() const {
4852   return isl::ctx(isl_ast_expr_get_ctx(ptr));
4853 }
4854 
dump()4855 void ast_expr::dump() const {
4856   isl_ast_expr_dump(get());
4857 }
4858 
4859 
access(isl::ast_expr_list indices)4860 isl::ast_expr ast_expr::access(isl::ast_expr_list indices) const
4861 {
4862   auto res = isl_ast_expr_access(copy(), indices.release());
4863   return manage(res);
4864 }
4865 
add(isl::ast_expr expr2)4866 isl::ast_expr ast_expr::add(isl::ast_expr expr2) const
4867 {
4868   auto res = isl_ast_expr_add(copy(), expr2.release());
4869   return manage(res);
4870 }
4871 
address_of()4872 isl::ast_expr ast_expr::address_of() const
4873 {
4874   auto res = isl_ast_expr_address_of(copy());
4875   return manage(res);
4876 }
4877 
call(isl::ast_expr_list arguments)4878 isl::ast_expr ast_expr::call(isl::ast_expr_list arguments) const
4879 {
4880   auto res = isl_ast_expr_call(copy(), arguments.release());
4881   return manage(res);
4882 }
4883 
div(isl::ast_expr expr2)4884 isl::ast_expr ast_expr::div(isl::ast_expr expr2) const
4885 {
4886   auto res = isl_ast_expr_div(copy(), expr2.release());
4887   return manage(res);
4888 }
4889 
eq(isl::ast_expr expr2)4890 isl::ast_expr ast_expr::eq(isl::ast_expr expr2) const
4891 {
4892   auto res = isl_ast_expr_eq(copy(), expr2.release());
4893   return manage(res);
4894 }
4895 
from_id(isl::id id)4896 isl::ast_expr ast_expr::from_id(isl::id id)
4897 {
4898   auto res = isl_ast_expr_from_id(id.release());
4899   return manage(res);
4900 }
4901 
from_val(isl::val v)4902 isl::ast_expr ast_expr::from_val(isl::val v)
4903 {
4904   auto res = isl_ast_expr_from_val(v.release());
4905   return manage(res);
4906 }
4907 
ge(isl::ast_expr expr2)4908 isl::ast_expr ast_expr::ge(isl::ast_expr expr2) const
4909 {
4910   auto res = isl_ast_expr_ge(copy(), expr2.release());
4911   return manage(res);
4912 }
4913 
get_id()4914 isl::id ast_expr::get_id() const
4915 {
4916   auto res = isl_ast_expr_get_id(get());
4917   return manage(res);
4918 }
4919 
get_op_arg(int pos)4920 isl::ast_expr ast_expr::get_op_arg(int pos) const
4921 {
4922   auto res = isl_ast_expr_get_op_arg(get(), pos);
4923   return manage(res);
4924 }
4925 
get_op_n_arg()4926 isl_size ast_expr::get_op_n_arg() const
4927 {
4928   auto res = isl_ast_expr_get_op_n_arg(get());
4929   return res;
4930 }
4931 
get_val()4932 isl::val ast_expr::get_val() const
4933 {
4934   auto res = isl_ast_expr_get_val(get());
4935   return manage(res);
4936 }
4937 
gt(isl::ast_expr expr2)4938 isl::ast_expr ast_expr::gt(isl::ast_expr expr2) const
4939 {
4940   auto res = isl_ast_expr_gt(copy(), expr2.release());
4941   return manage(res);
4942 }
4943 
id_get_id()4944 isl::id ast_expr::id_get_id() const
4945 {
4946   auto res = isl_ast_expr_id_get_id(get());
4947   return manage(res);
4948 }
4949 
int_get_val()4950 isl::val ast_expr::int_get_val() const
4951 {
4952   auto res = isl_ast_expr_int_get_val(get());
4953   return manage(res);
4954 }
4955 
is_equal(const isl::ast_expr & expr2)4956 boolean ast_expr::is_equal(const isl::ast_expr &expr2) const
4957 {
4958   auto res = isl_ast_expr_is_equal(get(), expr2.get());
4959   return manage(res);
4960 }
4961 
le(isl::ast_expr expr2)4962 isl::ast_expr ast_expr::le(isl::ast_expr expr2) const
4963 {
4964   auto res = isl_ast_expr_le(copy(), expr2.release());
4965   return manage(res);
4966 }
4967 
lt(isl::ast_expr expr2)4968 isl::ast_expr ast_expr::lt(isl::ast_expr expr2) const
4969 {
4970   auto res = isl_ast_expr_lt(copy(), expr2.release());
4971   return manage(res);
4972 }
4973 
mul(isl::ast_expr expr2)4974 isl::ast_expr ast_expr::mul(isl::ast_expr expr2) const
4975 {
4976   auto res = isl_ast_expr_mul(copy(), expr2.release());
4977   return manage(res);
4978 }
4979 
neg()4980 isl::ast_expr ast_expr::neg() const
4981 {
4982   auto res = isl_ast_expr_neg(copy());
4983   return manage(res);
4984 }
4985 
op_get_arg(int pos)4986 isl::ast_expr ast_expr::op_get_arg(int pos) const
4987 {
4988   auto res = isl_ast_expr_op_get_arg(get(), pos);
4989   return manage(res);
4990 }
4991 
op_get_n_arg()4992 isl_size ast_expr::op_get_n_arg() const
4993 {
4994   auto res = isl_ast_expr_op_get_n_arg(get());
4995   return res;
4996 }
4997 
pdiv_q(isl::ast_expr expr2)4998 isl::ast_expr ast_expr::pdiv_q(isl::ast_expr expr2) const
4999 {
5000   auto res = isl_ast_expr_pdiv_q(copy(), expr2.release());
5001   return manage(res);
5002 }
5003 
pdiv_r(isl::ast_expr expr2)5004 isl::ast_expr ast_expr::pdiv_r(isl::ast_expr expr2) const
5005 {
5006   auto res = isl_ast_expr_pdiv_r(copy(), expr2.release());
5007   return manage(res);
5008 }
5009 
set_op_arg(int pos,isl::ast_expr arg)5010 isl::ast_expr ast_expr::set_op_arg(int pos, isl::ast_expr arg) const
5011 {
5012   auto res = isl_ast_expr_set_op_arg(copy(), pos, arg.release());
5013   return manage(res);
5014 }
5015 
sub(isl::ast_expr expr2)5016 isl::ast_expr ast_expr::sub(isl::ast_expr expr2) const
5017 {
5018   auto res = isl_ast_expr_sub(copy(), expr2.release());
5019   return manage(res);
5020 }
5021 
substitute_ids(isl::id_to_ast_expr id2expr)5022 isl::ast_expr ast_expr::substitute_ids(isl::id_to_ast_expr id2expr) const
5023 {
5024   auto res = isl_ast_expr_substitute_ids(copy(), id2expr.release());
5025   return manage(res);
5026 }
5027 
to_C_str()5028 std::string ast_expr::to_C_str() const
5029 {
5030   auto res = isl_ast_expr_to_C_str(get());
5031   std::string tmp(res);
5032   free(res);
5033   return tmp;
5034 }
5035 
5036 // implementations for isl::ast_expr_list
manage(__isl_take isl_ast_expr_list * ptr)5037 ast_expr_list manage(__isl_take isl_ast_expr_list *ptr) {
5038   return ast_expr_list(ptr);
5039 }
manage_copy(__isl_keep isl_ast_expr_list * ptr)5040 ast_expr_list manage_copy(__isl_keep isl_ast_expr_list *ptr) {
5041   ptr = isl_ast_expr_list_copy(ptr);
5042   return ast_expr_list(ptr);
5043 }
5044 
ast_expr_list()5045 ast_expr_list::ast_expr_list()
5046     : ptr(nullptr) {}
5047 
ast_expr_list(const ast_expr_list & obj)5048 ast_expr_list::ast_expr_list(const ast_expr_list &obj)
5049     : ptr(nullptr)
5050 {
5051   ptr = obj.copy();
5052 }
5053 
5054 
ast_expr_list(__isl_take isl_ast_expr_list * ptr)5055 ast_expr_list::ast_expr_list(__isl_take isl_ast_expr_list *ptr)
5056     : ptr(ptr) {}
5057 
5058 
5059 ast_expr_list &ast_expr_list::operator=(ast_expr_list obj) {
5060   std::swap(this->ptr, obj.ptr);
5061   return *this;
5062 }
5063 
~ast_expr_list()5064 ast_expr_list::~ast_expr_list() {
5065   if (ptr)
5066     isl_ast_expr_list_free(ptr);
5067 }
5068 
copy()5069 __isl_give isl_ast_expr_list *ast_expr_list::copy() const & {
5070   return isl_ast_expr_list_copy(ptr);
5071 }
5072 
get()5073 __isl_keep isl_ast_expr_list *ast_expr_list::get() const {
5074   return ptr;
5075 }
5076 
release()5077 __isl_give isl_ast_expr_list *ast_expr_list::release() {
5078   isl_ast_expr_list *tmp = ptr;
5079   ptr = nullptr;
5080   return tmp;
5081 }
5082 
is_null()5083 bool ast_expr_list::is_null() const {
5084   return ptr == nullptr;
5085 }
5086 
5087 
ctx()5088 isl::ctx ast_expr_list::ctx() const {
5089   return isl::ctx(isl_ast_expr_list_get_ctx(ptr));
5090 }
5091 
dump()5092 void ast_expr_list::dump() const {
5093   isl_ast_expr_list_dump(get());
5094 }
5095 
5096 
add(isl::ast_expr el)5097 isl::ast_expr_list ast_expr_list::add(isl::ast_expr el) const
5098 {
5099   auto res = isl_ast_expr_list_add(copy(), el.release());
5100   return manage(res);
5101 }
5102 
alloc(isl::ctx ctx,int n)5103 isl::ast_expr_list ast_expr_list::alloc(isl::ctx ctx, int n)
5104 {
5105   auto res = isl_ast_expr_list_alloc(ctx.release(), n);
5106   return manage(res);
5107 }
5108 
clear()5109 isl::ast_expr_list ast_expr_list::clear() const
5110 {
5111   auto res = isl_ast_expr_list_clear(copy());
5112   return manage(res);
5113 }
5114 
concat(isl::ast_expr_list list2)5115 isl::ast_expr_list ast_expr_list::concat(isl::ast_expr_list list2) const
5116 {
5117   auto res = isl_ast_expr_list_concat(copy(), list2.release());
5118   return manage(res);
5119 }
5120 
drop(unsigned int first,unsigned int n)5121 isl::ast_expr_list ast_expr_list::drop(unsigned int first, unsigned int n) const
5122 {
5123   auto res = isl_ast_expr_list_drop(copy(), first, n);
5124   return manage(res);
5125 }
5126 
foreach(const std::function<stat (ast_expr)> & fn)5127 stat ast_expr_list::foreach(const std::function<stat(ast_expr)> &fn) const
5128 {
5129   struct fn_data {
5130     const std::function<stat(ast_expr)> *func;
5131   } fn_data = { &fn };
5132   auto fn_lambda = [](isl_ast_expr *arg_0, void *arg_1) -> isl_stat {
5133     auto *data = static_cast<struct fn_data *>(arg_1);
5134     stat ret = (*data->func)(manage(arg_0));
5135     return ret.release();
5136   };
5137   auto res = isl_ast_expr_list_foreach(get(), fn_lambda, &fn_data);
5138   return manage(res);
5139 }
5140 
from_ast_expr(isl::ast_expr el)5141 isl::ast_expr_list ast_expr_list::from_ast_expr(isl::ast_expr el)
5142 {
5143   auto res = isl_ast_expr_list_from_ast_expr(el.release());
5144   return manage(res);
5145 }
5146 
get_ast_expr(int index)5147 isl::ast_expr ast_expr_list::get_ast_expr(int index) const
5148 {
5149   auto res = isl_ast_expr_list_get_ast_expr(get(), index);
5150   return manage(res);
5151 }
5152 
get_at(int index)5153 isl::ast_expr ast_expr_list::get_at(int index) const
5154 {
5155   auto res = isl_ast_expr_list_get_at(get(), index);
5156   return manage(res);
5157 }
5158 
insert(unsigned int pos,isl::ast_expr el)5159 isl::ast_expr_list ast_expr_list::insert(unsigned int pos, isl::ast_expr el) const
5160 {
5161   auto res = isl_ast_expr_list_insert(copy(), pos, el.release());
5162   return manage(res);
5163 }
5164 
n_ast_expr()5165 isl_size ast_expr_list::n_ast_expr() const
5166 {
5167   auto res = isl_ast_expr_list_n_ast_expr(get());
5168   return res;
5169 }
5170 
reverse()5171 isl::ast_expr_list ast_expr_list::reverse() const
5172 {
5173   auto res = isl_ast_expr_list_reverse(copy());
5174   return manage(res);
5175 }
5176 
set_ast_expr(int index,isl::ast_expr el)5177 isl::ast_expr_list ast_expr_list::set_ast_expr(int index, isl::ast_expr el) const
5178 {
5179   auto res = isl_ast_expr_list_set_ast_expr(copy(), index, el.release());
5180   return manage(res);
5181 }
5182 
size()5183 isl_size ast_expr_list::size() const
5184 {
5185   auto res = isl_ast_expr_list_size(get());
5186   return res;
5187 }
5188 
swap(unsigned int pos1,unsigned int pos2)5189 isl::ast_expr_list ast_expr_list::swap(unsigned int pos1, unsigned int pos2) const
5190 {
5191   auto res = isl_ast_expr_list_swap(copy(), pos1, pos2);
5192   return manage(res);
5193 }
5194 
5195 // implementations for isl::ast_node
manage(__isl_take isl_ast_node * ptr)5196 ast_node manage(__isl_take isl_ast_node *ptr) {
5197   return ast_node(ptr);
5198 }
manage_copy(__isl_keep isl_ast_node * ptr)5199 ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
5200   ptr = isl_ast_node_copy(ptr);
5201   return ast_node(ptr);
5202 }
5203 
ast_node()5204 ast_node::ast_node()
5205     : ptr(nullptr) {}
5206 
ast_node(const ast_node & obj)5207 ast_node::ast_node(const ast_node &obj)
5208     : ptr(nullptr)
5209 {
5210   ptr = obj.copy();
5211 }
5212 
5213 
ast_node(__isl_take isl_ast_node * ptr)5214 ast_node::ast_node(__isl_take isl_ast_node *ptr)
5215     : ptr(ptr) {}
5216 
5217 
5218 ast_node &ast_node::operator=(ast_node obj) {
5219   std::swap(this->ptr, obj.ptr);
5220   return *this;
5221 }
5222 
~ast_node()5223 ast_node::~ast_node() {
5224   if (ptr)
5225     isl_ast_node_free(ptr);
5226 }
5227 
copy()5228 __isl_give isl_ast_node *ast_node::copy() const & {
5229   return isl_ast_node_copy(ptr);
5230 }
5231 
get()5232 __isl_keep isl_ast_node *ast_node::get() const {
5233   return ptr;
5234 }
5235 
release()5236 __isl_give isl_ast_node *ast_node::release() {
5237   isl_ast_node *tmp = ptr;
5238   ptr = nullptr;
5239   return tmp;
5240 }
5241 
is_null()5242 bool ast_node::is_null() const {
5243   return ptr == nullptr;
5244 }
5245 
5246 
ctx()5247 isl::ctx ast_node::ctx() const {
5248   return isl::ctx(isl_ast_node_get_ctx(ptr));
5249 }
5250 
dump()5251 void ast_node::dump() const {
5252   isl_ast_node_dump(get());
5253 }
5254 
5255 
alloc_user(isl::ast_expr expr)5256 isl::ast_node ast_node::alloc_user(isl::ast_expr expr)
5257 {
5258   auto res = isl_ast_node_alloc_user(expr.release());
5259   return manage(res);
5260 }
5261 
block_get_children()5262 isl::ast_node_list ast_node::block_get_children() const
5263 {
5264   auto res = isl_ast_node_block_get_children(get());
5265   return manage(res);
5266 }
5267 
for_get_body()5268 isl::ast_node ast_node::for_get_body() const
5269 {
5270   auto res = isl_ast_node_for_get_body(get());
5271   return manage(res);
5272 }
5273 
for_get_cond()5274 isl::ast_expr ast_node::for_get_cond() const
5275 {
5276   auto res = isl_ast_node_for_get_cond(get());
5277   return manage(res);
5278 }
5279 
for_get_inc()5280 isl::ast_expr ast_node::for_get_inc() const
5281 {
5282   auto res = isl_ast_node_for_get_inc(get());
5283   return manage(res);
5284 }
5285 
for_get_init()5286 isl::ast_expr ast_node::for_get_init() const
5287 {
5288   auto res = isl_ast_node_for_get_init(get());
5289   return manage(res);
5290 }
5291 
for_get_iterator()5292 isl::ast_expr ast_node::for_get_iterator() const
5293 {
5294   auto res = isl_ast_node_for_get_iterator(get());
5295   return manage(res);
5296 }
5297 
for_is_degenerate()5298 boolean ast_node::for_is_degenerate() const
5299 {
5300   auto res = isl_ast_node_for_is_degenerate(get());
5301   return manage(res);
5302 }
5303 
get_annotation()5304 isl::id ast_node::get_annotation() const
5305 {
5306   auto res = isl_ast_node_get_annotation(get());
5307   return manage(res);
5308 }
5309 
if_get_cond()5310 isl::ast_expr ast_node::if_get_cond() const
5311 {
5312   auto res = isl_ast_node_if_get_cond(get());
5313   return manage(res);
5314 }
5315 
if_get_else()5316 isl::ast_node ast_node::if_get_else() const
5317 {
5318   auto res = isl_ast_node_if_get_else(get());
5319   return manage(res);
5320 }
5321 
if_get_else_node()5322 isl::ast_node ast_node::if_get_else_node() const
5323 {
5324   auto res = isl_ast_node_if_get_else_node(get());
5325   return manage(res);
5326 }
5327 
if_get_then()5328 isl::ast_node ast_node::if_get_then() const
5329 {
5330   auto res = isl_ast_node_if_get_then(get());
5331   return manage(res);
5332 }
5333 
if_get_then_node()5334 isl::ast_node ast_node::if_get_then_node() const
5335 {
5336   auto res = isl_ast_node_if_get_then_node(get());
5337   return manage(res);
5338 }
5339 
if_has_else()5340 boolean ast_node::if_has_else() const
5341 {
5342   auto res = isl_ast_node_if_has_else(get());
5343   return manage(res);
5344 }
5345 
if_has_else_node()5346 boolean ast_node::if_has_else_node() const
5347 {
5348   auto res = isl_ast_node_if_has_else_node(get());
5349   return manage(res);
5350 }
5351 
mark_get_id()5352 isl::id ast_node::mark_get_id() const
5353 {
5354   auto res = isl_ast_node_mark_get_id(get());
5355   return manage(res);
5356 }
5357 
mark_get_node()5358 isl::ast_node ast_node::mark_get_node() const
5359 {
5360   auto res = isl_ast_node_mark_get_node(get());
5361   return manage(res);
5362 }
5363 
set_annotation(isl::id annotation)5364 isl::ast_node ast_node::set_annotation(isl::id annotation) const
5365 {
5366   auto res = isl_ast_node_set_annotation(copy(), annotation.release());
5367   return manage(res);
5368 }
5369 
to_C_str()5370 std::string ast_node::to_C_str() const
5371 {
5372   auto res = isl_ast_node_to_C_str(get());
5373   std::string tmp(res);
5374   free(res);
5375   return tmp;
5376 }
5377 
user_get_expr()5378 isl::ast_expr ast_node::user_get_expr() const
5379 {
5380   auto res = isl_ast_node_user_get_expr(get());
5381   return manage(res);
5382 }
5383 
5384 // implementations for isl::ast_node_list
manage(__isl_take isl_ast_node_list * ptr)5385 ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
5386   return ast_node_list(ptr);
5387 }
manage_copy(__isl_keep isl_ast_node_list * ptr)5388 ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
5389   ptr = isl_ast_node_list_copy(ptr);
5390   return ast_node_list(ptr);
5391 }
5392 
ast_node_list()5393 ast_node_list::ast_node_list()
5394     : ptr(nullptr) {}
5395 
ast_node_list(const ast_node_list & obj)5396 ast_node_list::ast_node_list(const ast_node_list &obj)
5397     : ptr(nullptr)
5398 {
5399   ptr = obj.copy();
5400 }
5401 
5402 
ast_node_list(__isl_take isl_ast_node_list * ptr)5403 ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
5404     : ptr(ptr) {}
5405 
5406 
5407 ast_node_list &ast_node_list::operator=(ast_node_list obj) {
5408   std::swap(this->ptr, obj.ptr);
5409   return *this;
5410 }
5411 
~ast_node_list()5412 ast_node_list::~ast_node_list() {
5413   if (ptr)
5414     isl_ast_node_list_free(ptr);
5415 }
5416 
copy()5417 __isl_give isl_ast_node_list *ast_node_list::copy() const & {
5418   return isl_ast_node_list_copy(ptr);
5419 }
5420 
get()5421 __isl_keep isl_ast_node_list *ast_node_list::get() const {
5422   return ptr;
5423 }
5424 
release()5425 __isl_give isl_ast_node_list *ast_node_list::release() {
5426   isl_ast_node_list *tmp = ptr;
5427   ptr = nullptr;
5428   return tmp;
5429 }
5430 
is_null()5431 bool ast_node_list::is_null() const {
5432   return ptr == nullptr;
5433 }
5434 
5435 
ctx()5436 isl::ctx ast_node_list::ctx() const {
5437   return isl::ctx(isl_ast_node_list_get_ctx(ptr));
5438 }
5439 
dump()5440 void ast_node_list::dump() const {
5441   isl_ast_node_list_dump(get());
5442 }
5443 
5444 
add(isl::ast_node el)5445 isl::ast_node_list ast_node_list::add(isl::ast_node el) const
5446 {
5447   auto res = isl_ast_node_list_add(copy(), el.release());
5448   return manage(res);
5449 }
5450 
alloc(isl::ctx ctx,int n)5451 isl::ast_node_list ast_node_list::alloc(isl::ctx ctx, int n)
5452 {
5453   auto res = isl_ast_node_list_alloc(ctx.release(), n);
5454   return manage(res);
5455 }
5456 
clear()5457 isl::ast_node_list ast_node_list::clear() const
5458 {
5459   auto res = isl_ast_node_list_clear(copy());
5460   return manage(res);
5461 }
5462 
concat(isl::ast_node_list list2)5463 isl::ast_node_list ast_node_list::concat(isl::ast_node_list list2) const
5464 {
5465   auto res = isl_ast_node_list_concat(copy(), list2.release());
5466   return manage(res);
5467 }
5468 
drop(unsigned int first,unsigned int n)5469 isl::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
5470 {
5471   auto res = isl_ast_node_list_drop(copy(), first, n);
5472   return manage(res);
5473 }
5474 
foreach(const std::function<stat (ast_node)> & fn)5475 stat ast_node_list::foreach(const std::function<stat(ast_node)> &fn) const
5476 {
5477   struct fn_data {
5478     const std::function<stat(ast_node)> *func;
5479   } fn_data = { &fn };
5480   auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
5481     auto *data = static_cast<struct fn_data *>(arg_1);
5482     stat ret = (*data->func)(manage(arg_0));
5483     return ret.release();
5484   };
5485   auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
5486   return manage(res);
5487 }
5488 
from_ast_node(isl::ast_node el)5489 isl::ast_node_list ast_node_list::from_ast_node(isl::ast_node el)
5490 {
5491   auto res = isl_ast_node_list_from_ast_node(el.release());
5492   return manage(res);
5493 }
5494 
get_ast_node(int index)5495 isl::ast_node ast_node_list::get_ast_node(int index) const
5496 {
5497   auto res = isl_ast_node_list_get_ast_node(get(), index);
5498   return manage(res);
5499 }
5500 
get_at(int index)5501 isl::ast_node ast_node_list::get_at(int index) const
5502 {
5503   auto res = isl_ast_node_list_get_at(get(), index);
5504   return manage(res);
5505 }
5506 
insert(unsigned int pos,isl::ast_node el)5507 isl::ast_node_list ast_node_list::insert(unsigned int pos, isl::ast_node el) const
5508 {
5509   auto res = isl_ast_node_list_insert(copy(), pos, el.release());
5510   return manage(res);
5511 }
5512 
n_ast_node()5513 isl_size ast_node_list::n_ast_node() const
5514 {
5515   auto res = isl_ast_node_list_n_ast_node(get());
5516   return res;
5517 }
5518 
reverse()5519 isl::ast_node_list ast_node_list::reverse() const
5520 {
5521   auto res = isl_ast_node_list_reverse(copy());
5522   return manage(res);
5523 }
5524 
set_ast_node(int index,isl::ast_node el)5525 isl::ast_node_list ast_node_list::set_ast_node(int index, isl::ast_node el) const
5526 {
5527   auto res = isl_ast_node_list_set_ast_node(copy(), index, el.release());
5528   return manage(res);
5529 }
5530 
size()5531 isl_size ast_node_list::size() const
5532 {
5533   auto res = isl_ast_node_list_size(get());
5534   return res;
5535 }
5536 
swap(unsigned int pos1,unsigned int pos2)5537 isl::ast_node_list ast_node_list::swap(unsigned int pos1, unsigned int pos2) const
5538 {
5539   auto res = isl_ast_node_list_swap(copy(), pos1, pos2);
5540   return manage(res);
5541 }
5542 
5543 // implementations for isl::basic_map
manage(__isl_take isl_basic_map * ptr)5544 basic_map manage(__isl_take isl_basic_map *ptr) {
5545   return basic_map(ptr);
5546 }
manage_copy(__isl_keep isl_basic_map * ptr)5547 basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
5548   ptr = isl_basic_map_copy(ptr);
5549   return basic_map(ptr);
5550 }
5551 
basic_map()5552 basic_map::basic_map()
5553     : ptr(nullptr) {}
5554 
basic_map(const basic_map & obj)5555 basic_map::basic_map(const basic_map &obj)
5556     : ptr(nullptr)
5557 {
5558   ptr = obj.copy();
5559 }
5560 
5561 
basic_map(__isl_take isl_basic_map * ptr)5562 basic_map::basic_map(__isl_take isl_basic_map *ptr)
5563     : ptr(ptr) {}
5564 
basic_map(isl::ctx ctx,const std::string & str)5565 basic_map::basic_map(isl::ctx ctx, const std::string &str)
5566 {
5567   auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
5568   ptr = res;
5569 }
5570 
5571 basic_map &basic_map::operator=(basic_map obj) {
5572   std::swap(this->ptr, obj.ptr);
5573   return *this;
5574 }
5575 
~basic_map()5576 basic_map::~basic_map() {
5577   if (ptr)
5578     isl_basic_map_free(ptr);
5579 }
5580 
copy()5581 __isl_give isl_basic_map *basic_map::copy() const & {
5582   return isl_basic_map_copy(ptr);
5583 }
5584 
get()5585 __isl_keep isl_basic_map *basic_map::get() const {
5586   return ptr;
5587 }
5588 
release()5589 __isl_give isl_basic_map *basic_map::release() {
5590   isl_basic_map *tmp = ptr;
5591   ptr = nullptr;
5592   return tmp;
5593 }
5594 
is_null()5595 bool basic_map::is_null() const {
5596   return ptr == nullptr;
5597 }
5598 
5599 
ctx()5600 isl::ctx basic_map::ctx() const {
5601   return isl::ctx(isl_basic_map_get_ctx(ptr));
5602 }
5603 
dump()5604 void basic_map::dump() const {
5605   isl_basic_map_dump(get());
5606 }
5607 
5608 
add_constraint(isl::constraint constraint)5609 isl::basic_map basic_map::add_constraint(isl::constraint constraint) const
5610 {
5611   auto res = isl_basic_map_add_constraint(copy(), constraint.release());
5612   return manage(res);
5613 }
5614 
add_dims(isl::dim type,unsigned int n)5615 isl::basic_map basic_map::add_dims(isl::dim type, unsigned int n) const
5616 {
5617   auto res = isl_basic_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
5618   return manage(res);
5619 }
5620 
affine_hull()5621 isl::basic_map basic_map::affine_hull() const
5622 {
5623   auto res = isl_basic_map_affine_hull(copy());
5624   return manage(res);
5625 }
5626 
align_params(isl::space model)5627 isl::basic_map basic_map::align_params(isl::space model) const
5628 {
5629   auto res = isl_basic_map_align_params(copy(), model.release());
5630   return manage(res);
5631 }
5632 
apply_domain(isl::basic_map bmap2)5633 isl::basic_map basic_map::apply_domain(isl::basic_map bmap2) const
5634 {
5635   auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
5636   return manage(res);
5637 }
5638 
apply_range(isl::basic_map bmap2)5639 isl::basic_map basic_map::apply_range(isl::basic_map bmap2) const
5640 {
5641   auto res = isl_basic_map_apply_range(copy(), bmap2.release());
5642   return manage(res);
5643 }
5644 
can_curry()5645 boolean basic_map::can_curry() const
5646 {
5647   auto res = isl_basic_map_can_curry(get());
5648   return manage(res);
5649 }
5650 
can_uncurry()5651 boolean basic_map::can_uncurry() const
5652 {
5653   auto res = isl_basic_map_can_uncurry(get());
5654   return manage(res);
5655 }
5656 
can_zip()5657 boolean basic_map::can_zip() const
5658 {
5659   auto res = isl_basic_map_can_zip(get());
5660   return manage(res);
5661 }
5662 
curry()5663 isl::basic_map basic_map::curry() const
5664 {
5665   auto res = isl_basic_map_curry(copy());
5666   return manage(res);
5667 }
5668 
deltas()5669 isl::basic_set basic_map::deltas() const
5670 {
5671   auto res = isl_basic_map_deltas(copy());
5672   return manage(res);
5673 }
5674 
deltas_map()5675 isl::basic_map basic_map::deltas_map() const
5676 {
5677   auto res = isl_basic_map_deltas_map(copy());
5678   return manage(res);
5679 }
5680 
detect_equalities()5681 isl::basic_map basic_map::detect_equalities() const
5682 {
5683   auto res = isl_basic_map_detect_equalities(copy());
5684   return manage(res);
5685 }
5686 
dim(isl::dim type)5687 isl_size basic_map::dim(isl::dim type) const
5688 {
5689   auto res = isl_basic_map_dim(get(), static_cast<enum isl_dim_type>(type));
5690   return res;
5691 }
5692 
domain()5693 isl::basic_set basic_map::domain() const
5694 {
5695   auto res = isl_basic_map_domain(copy());
5696   return manage(res);
5697 }
5698 
domain_map()5699 isl::basic_map basic_map::domain_map() const
5700 {
5701   auto res = isl_basic_map_domain_map(copy());
5702   return manage(res);
5703 }
5704 
domain_product(isl::basic_map bmap2)5705 isl::basic_map basic_map::domain_product(isl::basic_map bmap2) const
5706 {
5707   auto res = isl_basic_map_domain_product(copy(), bmap2.release());
5708   return manage(res);
5709 }
5710 
drop_constraints_involving_dims(isl::dim type,unsigned int first,unsigned int n)5711 isl::basic_map basic_map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5712 {
5713   auto res = isl_basic_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5714   return manage(res);
5715 }
5716 
drop_constraints_not_involving_dims(isl::dim type,unsigned int first,unsigned int n)5717 isl::basic_map basic_map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
5718 {
5719   auto res = isl_basic_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
5720   return manage(res);
5721 }
5722 
drop_unused_params()5723 isl::basic_map basic_map::drop_unused_params() const
5724 {
5725   auto res = isl_basic_map_drop_unused_params(copy());
5726   return manage(res);
5727 }
5728 
eliminate(isl::dim type,unsigned int first,unsigned int n)5729 isl::basic_map basic_map::eliminate(isl::dim type, unsigned int first, unsigned int n) const
5730 {
5731   auto res = isl_basic_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
5732   return manage(res);
5733 }
5734 
empty(isl::space space)5735 isl::basic_map basic_map::empty(isl::space space)
5736 {
5737   auto res = isl_basic_map_empty(space.release());
5738   return manage(res);
5739 }
5740 
equal(isl::space space,unsigned int n_equal)5741 isl::basic_map basic_map::equal(isl::space space, unsigned int n_equal)
5742 {
5743   auto res = isl_basic_map_equal(space.release(), n_equal);
5744   return manage(res);
5745 }
5746 
equalities_matrix(isl::dim c1,isl::dim c2,isl::dim c3,isl::dim c4,isl::dim c5)5747 isl::mat basic_map::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const
5748 {
5749   auto res = isl_basic_map_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
5750   return manage(res);
5751 }
5752 
equate(isl::dim type1,int pos1,isl::dim type2,int pos2)5753 isl::basic_map basic_map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
5754 {
5755   auto res = isl_basic_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
5756   return manage(res);
5757 }
5758 
find_dim_by_name(isl::dim type,const std::string & name)5759 int basic_map::find_dim_by_name(isl::dim type, const std::string &name) const
5760 {
5761   auto res = isl_basic_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
5762   return res;
5763 }
5764 
fix_si(isl::dim type,unsigned int pos,int value)5765 isl::basic_map basic_map::fix_si(isl::dim type, unsigned int pos, int value) const
5766 {
5767   auto res = isl_basic_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
5768   return manage(res);
5769 }
5770 
fix_val(isl::dim type,unsigned int pos,isl::val v)5771 isl::basic_map basic_map::fix_val(isl::dim type, unsigned int pos, isl::val v) const
5772 {
5773   auto res = isl_basic_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
5774   return manage(res);
5775 }
5776 
flat_product(isl::basic_map bmap2)5777 isl::basic_map basic_map::flat_product(isl::basic_map bmap2) const
5778 {
5779   auto res = isl_basic_map_flat_product(copy(), bmap2.release());
5780   return manage(res);
5781 }
5782 
flat_range_product(isl::basic_map bmap2)5783 isl::basic_map basic_map::flat_range_product(isl::basic_map bmap2) const
5784 {
5785   auto res = isl_basic_map_flat_range_product(copy(), bmap2.release());
5786   return manage(res);
5787 }
5788 
flatten()5789 isl::basic_map basic_map::flatten() const
5790 {
5791   auto res = isl_basic_map_flatten(copy());
5792   return manage(res);
5793 }
5794 
flatten_domain()5795 isl::basic_map basic_map::flatten_domain() const
5796 {
5797   auto res = isl_basic_map_flatten_domain(copy());
5798   return manage(res);
5799 }
5800 
flatten_range()5801 isl::basic_map basic_map::flatten_range() const
5802 {
5803   auto res = isl_basic_map_flatten_range(copy());
5804   return manage(res);
5805 }
5806 
foreach_constraint(const std::function<stat (constraint)> & fn)5807 stat basic_map::foreach_constraint(const std::function<stat(constraint)> &fn) const
5808 {
5809   struct fn_data {
5810     const std::function<stat(constraint)> *func;
5811   } fn_data = { &fn };
5812   auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
5813     auto *data = static_cast<struct fn_data *>(arg_1);
5814     stat ret = (*data->func)(manage(arg_0));
5815     return ret.release();
5816   };
5817   auto res = isl_basic_map_foreach_constraint(get(), fn_lambda, &fn_data);
5818   return manage(res);
5819 }
5820 
from_aff(isl::aff aff)5821 isl::basic_map basic_map::from_aff(isl::aff aff)
5822 {
5823   auto res = isl_basic_map_from_aff(aff.release());
5824   return manage(res);
5825 }
5826 
from_aff_list(isl::space domain_space,isl::aff_list list)5827 isl::basic_map basic_map::from_aff_list(isl::space domain_space, isl::aff_list list)
5828 {
5829   auto res = isl_basic_map_from_aff_list(domain_space.release(), list.release());
5830   return manage(res);
5831 }
5832 
from_constraint(isl::constraint constraint)5833 isl::basic_map basic_map::from_constraint(isl::constraint constraint)
5834 {
5835   auto res = isl_basic_map_from_constraint(constraint.release());
5836   return manage(res);
5837 }
5838 
from_domain(isl::basic_set bset)5839 isl::basic_map basic_map::from_domain(isl::basic_set bset)
5840 {
5841   auto res = isl_basic_map_from_domain(bset.release());
5842   return manage(res);
5843 }
5844 
from_domain_and_range(isl::basic_set domain,isl::basic_set range)5845 isl::basic_map basic_map::from_domain_and_range(isl::basic_set domain, isl::basic_set range)
5846 {
5847   auto res = isl_basic_map_from_domain_and_range(domain.release(), range.release());
5848   return manage(res);
5849 }
5850 
from_multi_aff(isl::multi_aff maff)5851 isl::basic_map basic_map::from_multi_aff(isl::multi_aff maff)
5852 {
5853   auto res = isl_basic_map_from_multi_aff(maff.release());
5854   return manage(res);
5855 }
5856 
from_qpolynomial(isl::qpolynomial qp)5857 isl::basic_map basic_map::from_qpolynomial(isl::qpolynomial qp)
5858 {
5859   auto res = isl_basic_map_from_qpolynomial(qp.release());
5860   return manage(res);
5861 }
5862 
from_range(isl::basic_set bset)5863 isl::basic_map basic_map::from_range(isl::basic_set bset)
5864 {
5865   auto res = isl_basic_map_from_range(bset.release());
5866   return manage(res);
5867 }
5868 
get_constraint_list()5869 isl::constraint_list basic_map::get_constraint_list() const
5870 {
5871   auto res = isl_basic_map_get_constraint_list(get());
5872   return manage(res);
5873 }
5874 
get_dim_name(isl::dim type,unsigned int pos)5875 std::string basic_map::get_dim_name(isl::dim type, unsigned int pos) const
5876 {
5877   auto res = isl_basic_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
5878   std::string tmp(res);
5879   return tmp;
5880 }
5881 
get_div(int pos)5882 isl::aff basic_map::get_div(int pos) const
5883 {
5884   auto res = isl_basic_map_get_div(get(), pos);
5885   return manage(res);
5886 }
5887 
get_local_space()5888 isl::local_space basic_map::get_local_space() const
5889 {
5890   auto res = isl_basic_map_get_local_space(get());
5891   return manage(res);
5892 }
5893 
get_space()5894 isl::space basic_map::get_space() const
5895 {
5896   auto res = isl_basic_map_get_space(get());
5897   return manage(res);
5898 }
5899 
get_tuple_name(isl::dim type)5900 std::string basic_map::get_tuple_name(isl::dim type) const
5901 {
5902   auto res = isl_basic_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
5903   std::string tmp(res);
5904   return tmp;
5905 }
5906 
gist(isl::basic_map context)5907 isl::basic_map basic_map::gist(isl::basic_map context) const
5908 {
5909   auto res = isl_basic_map_gist(copy(), context.release());
5910   return manage(res);
5911 }
5912 
gist_domain(isl::basic_set context)5913 isl::basic_map basic_map::gist_domain(isl::basic_set context) const
5914 {
5915   auto res = isl_basic_map_gist_domain(copy(), context.release());
5916   return manage(res);
5917 }
5918 
has_dim_id(isl::dim type,unsigned int pos)5919 boolean basic_map::has_dim_id(isl::dim type, unsigned int pos) const
5920 {
5921   auto res = isl_basic_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
5922   return manage(res);
5923 }
5924 
identity(isl::space space)5925 isl::basic_map basic_map::identity(isl::space space)
5926 {
5927   auto res = isl_basic_map_identity(space.release());
5928   return manage(res);
5929 }
5930 
image_is_bounded()5931 boolean basic_map::image_is_bounded() const
5932 {
5933   auto res = isl_basic_map_image_is_bounded(get());
5934   return manage(res);
5935 }
5936 
inequalities_matrix(isl::dim c1,isl::dim c2,isl::dim c3,isl::dim c4,isl::dim c5)5937 isl::mat basic_map::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4, isl::dim c5) const
5938 {
5939   auto res = isl_basic_map_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4), static_cast<enum isl_dim_type>(c5));
5940   return manage(res);
5941 }
5942 
insert_dims(isl::dim type,unsigned int pos,unsigned int n)5943 isl::basic_map basic_map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
5944 {
5945   auto res = isl_basic_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
5946   return manage(res);
5947 }
5948 
intersect(isl::basic_map bmap2)5949 isl::basic_map basic_map::intersect(isl::basic_map bmap2) const
5950 {
5951   auto res = isl_basic_map_intersect(copy(), bmap2.release());
5952   return manage(res);
5953 }
5954 
intersect_domain(isl::basic_set bset)5955 isl::basic_map basic_map::intersect_domain(isl::basic_set bset) const
5956 {
5957   auto res = isl_basic_map_intersect_domain(copy(), bset.release());
5958   return manage(res);
5959 }
5960 
intersect_range(isl::basic_set bset)5961 isl::basic_map basic_map::intersect_range(isl::basic_set bset) const
5962 {
5963   auto res = isl_basic_map_intersect_range(copy(), bset.release());
5964   return manage(res);
5965 }
5966 
involves_dims(isl::dim type,unsigned int first,unsigned int n)5967 boolean basic_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
5968 {
5969   auto res = isl_basic_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
5970   return manage(res);
5971 }
5972 
is_disjoint(const isl::basic_map & bmap2)5973 boolean basic_map::is_disjoint(const isl::basic_map &bmap2) const
5974 {
5975   auto res = isl_basic_map_is_disjoint(get(), bmap2.get());
5976   return manage(res);
5977 }
5978 
is_empty()5979 boolean basic_map::is_empty() const
5980 {
5981   auto res = isl_basic_map_is_empty(get());
5982   return manage(res);
5983 }
5984 
is_equal(const isl::basic_map & bmap2)5985 boolean basic_map::is_equal(const isl::basic_map &bmap2) const
5986 {
5987   auto res = isl_basic_map_is_equal(get(), bmap2.get());
5988   return manage(res);
5989 }
5990 
is_rational()5991 boolean basic_map::is_rational() const
5992 {
5993   auto res = isl_basic_map_is_rational(get());
5994   return manage(res);
5995 }
5996 
is_single_valued()5997 boolean basic_map::is_single_valued() const
5998 {
5999   auto res = isl_basic_map_is_single_valued(get());
6000   return manage(res);
6001 }
6002 
is_strict_subset(const isl::basic_map & bmap2)6003 boolean basic_map::is_strict_subset(const isl::basic_map &bmap2) const
6004 {
6005   auto res = isl_basic_map_is_strict_subset(get(), bmap2.get());
6006   return manage(res);
6007 }
6008 
is_subset(const isl::basic_map & bmap2)6009 boolean basic_map::is_subset(const isl::basic_map &bmap2) const
6010 {
6011   auto res = isl_basic_map_is_subset(get(), bmap2.get());
6012   return manage(res);
6013 }
6014 
is_universe()6015 boolean basic_map::is_universe() const
6016 {
6017   auto res = isl_basic_map_is_universe(get());
6018   return manage(res);
6019 }
6020 
less_at(isl::space space,unsigned int pos)6021 isl::basic_map basic_map::less_at(isl::space space, unsigned int pos)
6022 {
6023   auto res = isl_basic_map_less_at(space.release(), pos);
6024   return manage(res);
6025 }
6026 
lexmax()6027 isl::map basic_map::lexmax() const
6028 {
6029   auto res = isl_basic_map_lexmax(copy());
6030   return manage(res);
6031 }
6032 
lexmin()6033 isl::map basic_map::lexmin() const
6034 {
6035   auto res = isl_basic_map_lexmin(copy());
6036   return manage(res);
6037 }
6038 
lexmin_pw_multi_aff()6039 isl::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
6040 {
6041   auto res = isl_basic_map_lexmin_pw_multi_aff(copy());
6042   return manage(res);
6043 }
6044 
lower_bound_si(isl::dim type,unsigned int pos,int value)6045 isl::basic_map basic_map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
6046 {
6047   auto res = isl_basic_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6048   return manage(res);
6049 }
6050 
more_at(isl::space space,unsigned int pos)6051 isl::basic_map basic_map::more_at(isl::space space, unsigned int pos)
6052 {
6053   auto res = isl_basic_map_more_at(space.release(), pos);
6054   return manage(res);
6055 }
6056 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)6057 isl::basic_map basic_map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
6058 {
6059   auto res = isl_basic_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
6060   return manage(res);
6061 }
6062 
n_constraint()6063 isl_size basic_map::n_constraint() const
6064 {
6065   auto res = isl_basic_map_n_constraint(get());
6066   return res;
6067 }
6068 
nat_universe(isl::space space)6069 isl::basic_map basic_map::nat_universe(isl::space space)
6070 {
6071   auto res = isl_basic_map_nat_universe(space.release());
6072   return manage(res);
6073 }
6074 
neg()6075 isl::basic_map basic_map::neg() const
6076 {
6077   auto res = isl_basic_map_neg(copy());
6078   return manage(res);
6079 }
6080 
order_ge(isl::dim type1,int pos1,isl::dim type2,int pos2)6081 isl::basic_map basic_map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const
6082 {
6083   auto res = isl_basic_map_order_ge(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
6084   return manage(res);
6085 }
6086 
order_gt(isl::dim type1,int pos1,isl::dim type2,int pos2)6087 isl::basic_map basic_map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
6088 {
6089   auto res = isl_basic_map_order_gt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
6090   return manage(res);
6091 }
6092 
plain_get_val_if_fixed(isl::dim type,unsigned int pos)6093 isl::val basic_map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
6094 {
6095   auto res = isl_basic_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
6096   return manage(res);
6097 }
6098 
plain_is_empty()6099 boolean basic_map::plain_is_empty() const
6100 {
6101   auto res = isl_basic_map_plain_is_empty(get());
6102   return manage(res);
6103 }
6104 
plain_is_universe()6105 boolean basic_map::plain_is_universe() const
6106 {
6107   auto res = isl_basic_map_plain_is_universe(get());
6108   return manage(res);
6109 }
6110 
preimage_domain_multi_aff(isl::multi_aff ma)6111 isl::basic_map basic_map::preimage_domain_multi_aff(isl::multi_aff ma) const
6112 {
6113   auto res = isl_basic_map_preimage_domain_multi_aff(copy(), ma.release());
6114   return manage(res);
6115 }
6116 
preimage_range_multi_aff(isl::multi_aff ma)6117 isl::basic_map basic_map::preimage_range_multi_aff(isl::multi_aff ma) const
6118 {
6119   auto res = isl_basic_map_preimage_range_multi_aff(copy(), ma.release());
6120   return manage(res);
6121 }
6122 
product(isl::basic_map bmap2)6123 isl::basic_map basic_map::product(isl::basic_map bmap2) const
6124 {
6125   auto res = isl_basic_map_product(copy(), bmap2.release());
6126   return manage(res);
6127 }
6128 
project_out(isl::dim type,unsigned int first,unsigned int n)6129 isl::basic_map basic_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
6130 {
6131   auto res = isl_basic_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
6132   return manage(res);
6133 }
6134 
range()6135 isl::basic_set basic_map::range() const
6136 {
6137   auto res = isl_basic_map_range(copy());
6138   return manage(res);
6139 }
6140 
range_map()6141 isl::basic_map basic_map::range_map() const
6142 {
6143   auto res = isl_basic_map_range_map(copy());
6144   return manage(res);
6145 }
6146 
range_product(isl::basic_map bmap2)6147 isl::basic_map basic_map::range_product(isl::basic_map bmap2) const
6148 {
6149   auto res = isl_basic_map_range_product(copy(), bmap2.release());
6150   return manage(res);
6151 }
6152 
remove_dims(isl::dim type,unsigned int first,unsigned int n)6153 isl::basic_map basic_map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
6154 {
6155   auto res = isl_basic_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6156   return manage(res);
6157 }
6158 
remove_divs()6159 isl::basic_map basic_map::remove_divs() const
6160 {
6161   auto res = isl_basic_map_remove_divs(copy());
6162   return manage(res);
6163 }
6164 
remove_divs_involving_dims(isl::dim type,unsigned int first,unsigned int n)6165 isl::basic_map basic_map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6166 {
6167   auto res = isl_basic_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6168   return manage(res);
6169 }
6170 
remove_redundancies()6171 isl::basic_map basic_map::remove_redundancies() const
6172 {
6173   auto res = isl_basic_map_remove_redundancies(copy());
6174   return manage(res);
6175 }
6176 
reverse()6177 isl::basic_map basic_map::reverse() const
6178 {
6179   auto res = isl_basic_map_reverse(copy());
6180   return manage(res);
6181 }
6182 
sample()6183 isl::basic_map basic_map::sample() const
6184 {
6185   auto res = isl_basic_map_sample(copy());
6186   return manage(res);
6187 }
6188 
set_tuple_id(isl::dim type,isl::id id)6189 isl::basic_map basic_map::set_tuple_id(isl::dim type, isl::id id) const
6190 {
6191   auto res = isl_basic_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
6192   return manage(res);
6193 }
6194 
set_tuple_name(isl::dim type,const std::string & s)6195 isl::basic_map basic_map::set_tuple_name(isl::dim type, const std::string &s) const
6196 {
6197   auto res = isl_basic_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
6198   return manage(res);
6199 }
6200 
sum(isl::basic_map bmap2)6201 isl::basic_map basic_map::sum(isl::basic_map bmap2) const
6202 {
6203   auto res = isl_basic_map_sum(copy(), bmap2.release());
6204   return manage(res);
6205 }
6206 
uncurry()6207 isl::basic_map basic_map::uncurry() const
6208 {
6209   auto res = isl_basic_map_uncurry(copy());
6210   return manage(res);
6211 }
6212 
unite(isl::basic_map bmap2)6213 isl::map basic_map::unite(isl::basic_map bmap2) const
6214 {
6215   auto res = isl_basic_map_union(copy(), bmap2.release());
6216   return manage(res);
6217 }
6218 
universe(isl::space space)6219 isl::basic_map basic_map::universe(isl::space space)
6220 {
6221   auto res = isl_basic_map_universe(space.release());
6222   return manage(res);
6223 }
6224 
upper_bound_si(isl::dim type,unsigned int pos,int value)6225 isl::basic_map basic_map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
6226 {
6227   auto res = isl_basic_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6228   return manage(res);
6229 }
6230 
wrap()6231 isl::basic_set basic_map::wrap() const
6232 {
6233   auto res = isl_basic_map_wrap(copy());
6234   return manage(res);
6235 }
6236 
zip()6237 isl::basic_map basic_map::zip() const
6238 {
6239   auto res = isl_basic_map_zip(copy());
6240   return manage(res);
6241 }
6242 
6243 // implementations for isl::basic_map_list
manage(__isl_take isl_basic_map_list * ptr)6244 basic_map_list manage(__isl_take isl_basic_map_list *ptr) {
6245   return basic_map_list(ptr);
6246 }
manage_copy(__isl_keep isl_basic_map_list * ptr)6247 basic_map_list manage_copy(__isl_keep isl_basic_map_list *ptr) {
6248   ptr = isl_basic_map_list_copy(ptr);
6249   return basic_map_list(ptr);
6250 }
6251 
basic_map_list()6252 basic_map_list::basic_map_list()
6253     : ptr(nullptr) {}
6254 
basic_map_list(const basic_map_list & obj)6255 basic_map_list::basic_map_list(const basic_map_list &obj)
6256     : ptr(nullptr)
6257 {
6258   ptr = obj.copy();
6259 }
6260 
6261 
basic_map_list(__isl_take isl_basic_map_list * ptr)6262 basic_map_list::basic_map_list(__isl_take isl_basic_map_list *ptr)
6263     : ptr(ptr) {}
6264 
6265 
6266 basic_map_list &basic_map_list::operator=(basic_map_list obj) {
6267   std::swap(this->ptr, obj.ptr);
6268   return *this;
6269 }
6270 
~basic_map_list()6271 basic_map_list::~basic_map_list() {
6272   if (ptr)
6273     isl_basic_map_list_free(ptr);
6274 }
6275 
copy()6276 __isl_give isl_basic_map_list *basic_map_list::copy() const & {
6277   return isl_basic_map_list_copy(ptr);
6278 }
6279 
get()6280 __isl_keep isl_basic_map_list *basic_map_list::get() const {
6281   return ptr;
6282 }
6283 
release()6284 __isl_give isl_basic_map_list *basic_map_list::release() {
6285   isl_basic_map_list *tmp = ptr;
6286   ptr = nullptr;
6287   return tmp;
6288 }
6289 
is_null()6290 bool basic_map_list::is_null() const {
6291   return ptr == nullptr;
6292 }
6293 
6294 
ctx()6295 isl::ctx basic_map_list::ctx() const {
6296   return isl::ctx(isl_basic_map_list_get_ctx(ptr));
6297 }
6298 
dump()6299 void basic_map_list::dump() const {
6300   isl_basic_map_list_dump(get());
6301 }
6302 
6303 
add(isl::basic_map el)6304 isl::basic_map_list basic_map_list::add(isl::basic_map el) const
6305 {
6306   auto res = isl_basic_map_list_add(copy(), el.release());
6307   return manage(res);
6308 }
6309 
alloc(isl::ctx ctx,int n)6310 isl::basic_map_list basic_map_list::alloc(isl::ctx ctx, int n)
6311 {
6312   auto res = isl_basic_map_list_alloc(ctx.release(), n);
6313   return manage(res);
6314 }
6315 
clear()6316 isl::basic_map_list basic_map_list::clear() const
6317 {
6318   auto res = isl_basic_map_list_clear(copy());
6319   return manage(res);
6320 }
6321 
concat(isl::basic_map_list list2)6322 isl::basic_map_list basic_map_list::concat(isl::basic_map_list list2) const
6323 {
6324   auto res = isl_basic_map_list_concat(copy(), list2.release());
6325   return manage(res);
6326 }
6327 
drop(unsigned int first,unsigned int n)6328 isl::basic_map_list basic_map_list::drop(unsigned int first, unsigned int n) const
6329 {
6330   auto res = isl_basic_map_list_drop(copy(), first, n);
6331   return manage(res);
6332 }
6333 
foreach(const std::function<stat (basic_map)> & fn)6334 stat basic_map_list::foreach(const std::function<stat(basic_map)> &fn) const
6335 {
6336   struct fn_data {
6337     const std::function<stat(basic_map)> *func;
6338   } fn_data = { &fn };
6339   auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
6340     auto *data = static_cast<struct fn_data *>(arg_1);
6341     stat ret = (*data->func)(manage(arg_0));
6342     return ret.release();
6343   };
6344   auto res = isl_basic_map_list_foreach(get(), fn_lambda, &fn_data);
6345   return manage(res);
6346 }
6347 
from_basic_map(isl::basic_map el)6348 isl::basic_map_list basic_map_list::from_basic_map(isl::basic_map el)
6349 {
6350   auto res = isl_basic_map_list_from_basic_map(el.release());
6351   return manage(res);
6352 }
6353 
get_at(int index)6354 isl::basic_map basic_map_list::get_at(int index) const
6355 {
6356   auto res = isl_basic_map_list_get_at(get(), index);
6357   return manage(res);
6358 }
6359 
get_basic_map(int index)6360 isl::basic_map basic_map_list::get_basic_map(int index) const
6361 {
6362   auto res = isl_basic_map_list_get_basic_map(get(), index);
6363   return manage(res);
6364 }
6365 
insert(unsigned int pos,isl::basic_map el)6366 isl::basic_map_list basic_map_list::insert(unsigned int pos, isl::basic_map el) const
6367 {
6368   auto res = isl_basic_map_list_insert(copy(), pos, el.release());
6369   return manage(res);
6370 }
6371 
n_basic_map()6372 isl_size basic_map_list::n_basic_map() const
6373 {
6374   auto res = isl_basic_map_list_n_basic_map(get());
6375   return res;
6376 }
6377 
reverse()6378 isl::basic_map_list basic_map_list::reverse() const
6379 {
6380   auto res = isl_basic_map_list_reverse(copy());
6381   return manage(res);
6382 }
6383 
set_basic_map(int index,isl::basic_map el)6384 isl::basic_map_list basic_map_list::set_basic_map(int index, isl::basic_map el) const
6385 {
6386   auto res = isl_basic_map_list_set_basic_map(copy(), index, el.release());
6387   return manage(res);
6388 }
6389 
size()6390 isl_size basic_map_list::size() const
6391 {
6392   auto res = isl_basic_map_list_size(get());
6393   return res;
6394 }
6395 
swap(unsigned int pos1,unsigned int pos2)6396 isl::basic_map_list basic_map_list::swap(unsigned int pos1, unsigned int pos2) const
6397 {
6398   auto res = isl_basic_map_list_swap(copy(), pos1, pos2);
6399   return manage(res);
6400 }
6401 
6402 // implementations for isl::basic_set
manage(__isl_take isl_basic_set * ptr)6403 basic_set manage(__isl_take isl_basic_set *ptr) {
6404   return basic_set(ptr);
6405 }
manage_copy(__isl_keep isl_basic_set * ptr)6406 basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
6407   ptr = isl_basic_set_copy(ptr);
6408   return basic_set(ptr);
6409 }
6410 
basic_set()6411 basic_set::basic_set()
6412     : ptr(nullptr) {}
6413 
basic_set(const basic_set & obj)6414 basic_set::basic_set(const basic_set &obj)
6415     : ptr(nullptr)
6416 {
6417   ptr = obj.copy();
6418 }
6419 
6420 
basic_set(__isl_take isl_basic_set * ptr)6421 basic_set::basic_set(__isl_take isl_basic_set *ptr)
6422     : ptr(ptr) {}
6423 
basic_set(isl::point pnt)6424 basic_set::basic_set(isl::point pnt)
6425 {
6426   auto res = isl_basic_set_from_point(pnt.release());
6427   ptr = res;
6428 }
basic_set(isl::ctx ctx,const std::string & str)6429 basic_set::basic_set(isl::ctx ctx, const std::string &str)
6430 {
6431   auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
6432   ptr = res;
6433 }
6434 
6435 basic_set &basic_set::operator=(basic_set obj) {
6436   std::swap(this->ptr, obj.ptr);
6437   return *this;
6438 }
6439 
~basic_set()6440 basic_set::~basic_set() {
6441   if (ptr)
6442     isl_basic_set_free(ptr);
6443 }
6444 
copy()6445 __isl_give isl_basic_set *basic_set::copy() const & {
6446   return isl_basic_set_copy(ptr);
6447 }
6448 
get()6449 __isl_keep isl_basic_set *basic_set::get() const {
6450   return ptr;
6451 }
6452 
release()6453 __isl_give isl_basic_set *basic_set::release() {
6454   isl_basic_set *tmp = ptr;
6455   ptr = nullptr;
6456   return tmp;
6457 }
6458 
is_null()6459 bool basic_set::is_null() const {
6460   return ptr == nullptr;
6461 }
6462 
6463 
ctx()6464 isl::ctx basic_set::ctx() const {
6465   return isl::ctx(isl_basic_set_get_ctx(ptr));
6466 }
6467 
dump()6468 void basic_set::dump() const {
6469   isl_basic_set_dump(get());
6470 }
6471 
6472 
affine_hull()6473 isl::basic_set basic_set::affine_hull() const
6474 {
6475   auto res = isl_basic_set_affine_hull(copy());
6476   return manage(res);
6477 }
6478 
align_params(isl::space model)6479 isl::basic_set basic_set::align_params(isl::space model) const
6480 {
6481   auto res = isl_basic_set_align_params(copy(), model.release());
6482   return manage(res);
6483 }
6484 
apply(isl::basic_map bmap)6485 isl::basic_set basic_set::apply(isl::basic_map bmap) const
6486 {
6487   auto res = isl_basic_set_apply(copy(), bmap.release());
6488   return manage(res);
6489 }
6490 
box_from_points(isl::point pnt1,isl::point pnt2)6491 isl::basic_set basic_set::box_from_points(isl::point pnt1, isl::point pnt2)
6492 {
6493   auto res = isl_basic_set_box_from_points(pnt1.release(), pnt2.release());
6494   return manage(res);
6495 }
6496 
coefficients()6497 isl::basic_set basic_set::coefficients() const
6498 {
6499   auto res = isl_basic_set_coefficients(copy());
6500   return manage(res);
6501 }
6502 
detect_equalities()6503 isl::basic_set basic_set::detect_equalities() const
6504 {
6505   auto res = isl_basic_set_detect_equalities(copy());
6506   return manage(res);
6507 }
6508 
dim(isl::dim type)6509 isl_size basic_set::dim(isl::dim type) const
6510 {
6511   auto res = isl_basic_set_dim(get(), static_cast<enum isl_dim_type>(type));
6512   return res;
6513 }
6514 
dim_max_val(int pos)6515 isl::val basic_set::dim_max_val(int pos) const
6516 {
6517   auto res = isl_basic_set_dim_max_val(copy(), pos);
6518   return manage(res);
6519 }
6520 
drop_constraints_involving_dims(isl::dim type,unsigned int first,unsigned int n)6521 isl::basic_set basic_set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6522 {
6523   auto res = isl_basic_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6524   return manage(res);
6525 }
6526 
drop_constraints_not_involving_dims(isl::dim type,unsigned int first,unsigned int n)6527 isl::basic_set basic_set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6528 {
6529   auto res = isl_basic_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6530   return manage(res);
6531 }
6532 
drop_unused_params()6533 isl::basic_set basic_set::drop_unused_params() const
6534 {
6535   auto res = isl_basic_set_drop_unused_params(copy());
6536   return manage(res);
6537 }
6538 
eliminate(isl::dim type,unsigned int first,unsigned int n)6539 isl::basic_set basic_set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
6540 {
6541   auto res = isl_basic_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
6542   return manage(res);
6543 }
6544 
empty(isl::space space)6545 isl::basic_set basic_set::empty(isl::space space)
6546 {
6547   auto res = isl_basic_set_empty(space.release());
6548   return manage(res);
6549 }
6550 
equalities_matrix(isl::dim c1,isl::dim c2,isl::dim c3,isl::dim c4)6551 isl::mat basic_set::equalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const
6552 {
6553   auto res = isl_basic_set_equalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
6554   return manage(res);
6555 }
6556 
fix_si(isl::dim type,unsigned int pos,int value)6557 isl::basic_set basic_set::fix_si(isl::dim type, unsigned int pos, int value) const
6558 {
6559   auto res = isl_basic_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
6560   return manage(res);
6561 }
6562 
fix_val(isl::dim type,unsigned int pos,isl::val v)6563 isl::basic_set basic_set::fix_val(isl::dim type, unsigned int pos, isl::val v) const
6564 {
6565   auto res = isl_basic_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
6566   return manage(res);
6567 }
6568 
flat_product(isl::basic_set bset2)6569 isl::basic_set basic_set::flat_product(isl::basic_set bset2) const
6570 {
6571   auto res = isl_basic_set_flat_product(copy(), bset2.release());
6572   return manage(res);
6573 }
6574 
flatten()6575 isl::basic_set basic_set::flatten() const
6576 {
6577   auto res = isl_basic_set_flatten(copy());
6578   return manage(res);
6579 }
6580 
foreach_bound_pair(isl::dim type,unsigned int pos,const std::function<stat (constraint,constraint,basic_set)> & fn)6581 stat basic_set::foreach_bound_pair(isl::dim type, unsigned int pos, const std::function<stat(constraint, constraint, basic_set)> &fn) const
6582 {
6583   struct fn_data {
6584     const std::function<stat(constraint, constraint, basic_set)> *func;
6585   } fn_data = { &fn };
6586   auto fn_lambda = [](isl_constraint *arg_0, isl_constraint *arg_1, isl_basic_set *arg_2, void *arg_3) -> isl_stat {
6587     auto *data = static_cast<struct fn_data *>(arg_3);
6588     stat ret = (*data->func)(manage(arg_0), manage(arg_1), manage(arg_2));
6589     return ret.release();
6590   };
6591   auto res = isl_basic_set_foreach_bound_pair(get(), static_cast<enum isl_dim_type>(type), pos, fn_lambda, &fn_data);
6592   return manage(res);
6593 }
6594 
foreach_constraint(const std::function<stat (constraint)> & fn)6595 stat basic_set::foreach_constraint(const std::function<stat(constraint)> &fn) const
6596 {
6597   struct fn_data {
6598     const std::function<stat(constraint)> *func;
6599   } fn_data = { &fn };
6600   auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
6601     auto *data = static_cast<struct fn_data *>(arg_1);
6602     stat ret = (*data->func)(manage(arg_0));
6603     return ret.release();
6604   };
6605   auto res = isl_basic_set_foreach_constraint(get(), fn_lambda, &fn_data);
6606   return manage(res);
6607 }
6608 
from_constraint(isl::constraint constraint)6609 isl::basic_set basic_set::from_constraint(isl::constraint constraint)
6610 {
6611   auto res = isl_basic_set_from_constraint(constraint.release());
6612   return manage(res);
6613 }
6614 
from_multi_aff(isl::multi_aff ma)6615 isl::basic_set basic_set::from_multi_aff(isl::multi_aff ma)
6616 {
6617   auto res = isl_basic_set_from_multi_aff(ma.release());
6618   return manage(res);
6619 }
6620 
from_params()6621 isl::basic_set basic_set::from_params() const
6622 {
6623   auto res = isl_basic_set_from_params(copy());
6624   return manage(res);
6625 }
6626 
get_constraint_list()6627 isl::constraint_list basic_set::get_constraint_list() const
6628 {
6629   auto res = isl_basic_set_get_constraint_list(get());
6630   return manage(res);
6631 }
6632 
get_dim_id(isl::dim type,unsigned int pos)6633 isl::id basic_set::get_dim_id(isl::dim type, unsigned int pos) const
6634 {
6635   auto res = isl_basic_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
6636   return manage(res);
6637 }
6638 
get_dim_name(isl::dim type,unsigned int pos)6639 std::string basic_set::get_dim_name(isl::dim type, unsigned int pos) const
6640 {
6641   auto res = isl_basic_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
6642   std::string tmp(res);
6643   return tmp;
6644 }
6645 
get_div(int pos)6646 isl::aff basic_set::get_div(int pos) const
6647 {
6648   auto res = isl_basic_set_get_div(get(), pos);
6649   return manage(res);
6650 }
6651 
get_local_space()6652 isl::local_space basic_set::get_local_space() const
6653 {
6654   auto res = isl_basic_set_get_local_space(get());
6655   return manage(res);
6656 }
6657 
get_space()6658 isl::space basic_set::get_space() const
6659 {
6660   auto res = isl_basic_set_get_space(get());
6661   return manage(res);
6662 }
6663 
get_tuple_name()6664 std::string basic_set::get_tuple_name() const
6665 {
6666   auto res = isl_basic_set_get_tuple_name(get());
6667   std::string tmp(res);
6668   return tmp;
6669 }
6670 
gist(isl::basic_set context)6671 isl::basic_set basic_set::gist(isl::basic_set context) const
6672 {
6673   auto res = isl_basic_set_gist(copy(), context.release());
6674   return manage(res);
6675 }
6676 
inequalities_matrix(isl::dim c1,isl::dim c2,isl::dim c3,isl::dim c4)6677 isl::mat basic_set::inequalities_matrix(isl::dim c1, isl::dim c2, isl::dim c3, isl::dim c4) const
6678 {
6679   auto res = isl_basic_set_inequalities_matrix(get(), static_cast<enum isl_dim_type>(c1), static_cast<enum isl_dim_type>(c2), static_cast<enum isl_dim_type>(c3), static_cast<enum isl_dim_type>(c4));
6680   return manage(res);
6681 }
6682 
insert_dims(isl::dim type,unsigned int pos,unsigned int n)6683 isl::basic_set basic_set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
6684 {
6685   auto res = isl_basic_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
6686   return manage(res);
6687 }
6688 
intersect(isl::basic_set bset2)6689 isl::basic_set basic_set::intersect(isl::basic_set bset2) const
6690 {
6691   auto res = isl_basic_set_intersect(copy(), bset2.release());
6692   return manage(res);
6693 }
6694 
intersect_params(isl::basic_set bset2)6695 isl::basic_set basic_set::intersect_params(isl::basic_set bset2) const
6696 {
6697   auto res = isl_basic_set_intersect_params(copy(), bset2.release());
6698   return manage(res);
6699 }
6700 
involves_dims(isl::dim type,unsigned int first,unsigned int n)6701 boolean basic_set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
6702 {
6703   auto res = isl_basic_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
6704   return manage(res);
6705 }
6706 
is_bounded()6707 boolean basic_set::is_bounded() const
6708 {
6709   auto res = isl_basic_set_is_bounded(get());
6710   return manage(res);
6711 }
6712 
is_disjoint(const isl::basic_set & bset2)6713 boolean basic_set::is_disjoint(const isl::basic_set &bset2) const
6714 {
6715   auto res = isl_basic_set_is_disjoint(get(), bset2.get());
6716   return manage(res);
6717 }
6718 
is_empty()6719 boolean basic_set::is_empty() const
6720 {
6721   auto res = isl_basic_set_is_empty(get());
6722   return manage(res);
6723 }
6724 
is_equal(const isl::basic_set & bset2)6725 boolean basic_set::is_equal(const isl::basic_set &bset2) const
6726 {
6727   auto res = isl_basic_set_is_equal(get(), bset2.get());
6728   return manage(res);
6729 }
6730 
is_rational()6731 int basic_set::is_rational() const
6732 {
6733   auto res = isl_basic_set_is_rational(get());
6734   return res;
6735 }
6736 
is_subset(const isl::basic_set & bset2)6737 boolean basic_set::is_subset(const isl::basic_set &bset2) const
6738 {
6739   auto res = isl_basic_set_is_subset(get(), bset2.get());
6740   return manage(res);
6741 }
6742 
is_universe()6743 boolean basic_set::is_universe() const
6744 {
6745   auto res = isl_basic_set_is_universe(get());
6746   return manage(res);
6747 }
6748 
is_wrapping()6749 boolean basic_set::is_wrapping() const
6750 {
6751   auto res = isl_basic_set_is_wrapping(get());
6752   return manage(res);
6753 }
6754 
lexmax()6755 isl::set basic_set::lexmax() const
6756 {
6757   auto res = isl_basic_set_lexmax(copy());
6758   return manage(res);
6759 }
6760 
lexmin()6761 isl::set basic_set::lexmin() const
6762 {
6763   auto res = isl_basic_set_lexmin(copy());
6764   return manage(res);
6765 }
6766 
lower_bound_val(isl::dim type,unsigned int pos,isl::val value)6767 isl::basic_set basic_set::lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const
6768 {
6769   auto res = isl_basic_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
6770   return manage(res);
6771 }
6772 
max_val(const isl::aff & obj)6773 isl::val basic_set::max_val(const isl::aff &obj) const
6774 {
6775   auto res = isl_basic_set_max_val(get(), obj.get());
6776   return manage(res);
6777 }
6778 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)6779 isl::basic_set basic_set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
6780 {
6781   auto res = isl_basic_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
6782   return manage(res);
6783 }
6784 
n_constraint()6785 isl_size basic_set::n_constraint() const
6786 {
6787   auto res = isl_basic_set_n_constraint(get());
6788   return res;
6789 }
6790 
n_dim()6791 isl_size basic_set::n_dim() const
6792 {
6793   auto res = isl_basic_set_n_dim(get());
6794   return res;
6795 }
6796 
nat_universe(isl::space space)6797 isl::basic_set basic_set::nat_universe(isl::space space)
6798 {
6799   auto res = isl_basic_set_nat_universe(space.release());
6800   return manage(res);
6801 }
6802 
neg()6803 isl::basic_set basic_set::neg() const
6804 {
6805   auto res = isl_basic_set_neg(copy());
6806   return manage(res);
6807 }
6808 
params()6809 isl::basic_set basic_set::params() const
6810 {
6811   auto res = isl_basic_set_params(copy());
6812   return manage(res);
6813 }
6814 
plain_is_empty()6815 boolean basic_set::plain_is_empty() const
6816 {
6817   auto res = isl_basic_set_plain_is_empty(get());
6818   return manage(res);
6819 }
6820 
plain_is_equal(const isl::basic_set & bset2)6821 boolean basic_set::plain_is_equal(const isl::basic_set &bset2) const
6822 {
6823   auto res = isl_basic_set_plain_is_equal(get(), bset2.get());
6824   return manage(res);
6825 }
6826 
plain_is_universe()6827 boolean basic_set::plain_is_universe() const
6828 {
6829   auto res = isl_basic_set_plain_is_universe(get());
6830   return manage(res);
6831 }
6832 
positive_orthant(isl::space space)6833 isl::basic_set basic_set::positive_orthant(isl::space space)
6834 {
6835   auto res = isl_basic_set_positive_orthant(space.release());
6836   return manage(res);
6837 }
6838 
preimage_multi_aff(isl::multi_aff ma)6839 isl::basic_set basic_set::preimage_multi_aff(isl::multi_aff ma) const
6840 {
6841   auto res = isl_basic_set_preimage_multi_aff(copy(), ma.release());
6842   return manage(res);
6843 }
6844 
project_out(isl::dim type,unsigned int first,unsigned int n)6845 isl::basic_set basic_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
6846 {
6847   auto res = isl_basic_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
6848   return manage(res);
6849 }
6850 
reduced_basis()6851 isl::mat basic_set::reduced_basis() const
6852 {
6853   auto res = isl_basic_set_reduced_basis(get());
6854   return manage(res);
6855 }
6856 
remove_dims(isl::dim type,unsigned int first,unsigned int n)6857 isl::basic_set basic_set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
6858 {
6859   auto res = isl_basic_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6860   return manage(res);
6861 }
6862 
remove_divs()6863 isl::basic_set basic_set::remove_divs() const
6864 {
6865   auto res = isl_basic_set_remove_divs(copy());
6866   return manage(res);
6867 }
6868 
remove_divs_involving_dims(isl::dim type,unsigned int first,unsigned int n)6869 isl::basic_set basic_set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
6870 {
6871   auto res = isl_basic_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
6872   return manage(res);
6873 }
6874 
remove_redundancies()6875 isl::basic_set basic_set::remove_redundancies() const
6876 {
6877   auto res = isl_basic_set_remove_redundancies(copy());
6878   return manage(res);
6879 }
6880 
remove_unknown_divs()6881 isl::basic_set basic_set::remove_unknown_divs() const
6882 {
6883   auto res = isl_basic_set_remove_unknown_divs(copy());
6884   return manage(res);
6885 }
6886 
sample()6887 isl::basic_set basic_set::sample() const
6888 {
6889   auto res = isl_basic_set_sample(copy());
6890   return manage(res);
6891 }
6892 
sample_point()6893 isl::point basic_set::sample_point() const
6894 {
6895   auto res = isl_basic_set_sample_point(copy());
6896   return manage(res);
6897 }
6898 
set_tuple_id(isl::id id)6899 isl::basic_set basic_set::set_tuple_id(isl::id id) const
6900 {
6901   auto res = isl_basic_set_set_tuple_id(copy(), id.release());
6902   return manage(res);
6903 }
6904 
set_tuple_name(const std::string & s)6905 isl::basic_set basic_set::set_tuple_name(const std::string &s) const
6906 {
6907   auto res = isl_basic_set_set_tuple_name(copy(), s.c_str());
6908   return manage(res);
6909 }
6910 
solutions()6911 isl::basic_set basic_set::solutions() const
6912 {
6913   auto res = isl_basic_set_solutions(copy());
6914   return manage(res);
6915 }
6916 
unite(isl::basic_set bset2)6917 isl::set basic_set::unite(isl::basic_set bset2) const
6918 {
6919   auto res = isl_basic_set_union(copy(), bset2.release());
6920   return manage(res);
6921 }
6922 
universe(isl::space space)6923 isl::basic_set basic_set::universe(isl::space space)
6924 {
6925   auto res = isl_basic_set_universe(space.release());
6926   return manage(res);
6927 }
6928 
unwrap()6929 isl::basic_map basic_set::unwrap() const
6930 {
6931   auto res = isl_basic_set_unwrap(copy());
6932   return manage(res);
6933 }
6934 
upper_bound_val(isl::dim type,unsigned int pos,isl::val value)6935 isl::basic_set basic_set::upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const
6936 {
6937   auto res = isl_basic_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
6938   return manage(res);
6939 }
6940 
6941 // implementations for isl::basic_set_list
manage(__isl_take isl_basic_set_list * ptr)6942 basic_set_list manage(__isl_take isl_basic_set_list *ptr) {
6943   return basic_set_list(ptr);
6944 }
manage_copy(__isl_keep isl_basic_set_list * ptr)6945 basic_set_list manage_copy(__isl_keep isl_basic_set_list *ptr) {
6946   ptr = isl_basic_set_list_copy(ptr);
6947   return basic_set_list(ptr);
6948 }
6949 
basic_set_list()6950 basic_set_list::basic_set_list()
6951     : ptr(nullptr) {}
6952 
basic_set_list(const basic_set_list & obj)6953 basic_set_list::basic_set_list(const basic_set_list &obj)
6954     : ptr(nullptr)
6955 {
6956   ptr = obj.copy();
6957 }
6958 
6959 
basic_set_list(__isl_take isl_basic_set_list * ptr)6960 basic_set_list::basic_set_list(__isl_take isl_basic_set_list *ptr)
6961     : ptr(ptr) {}
6962 
6963 
6964 basic_set_list &basic_set_list::operator=(basic_set_list obj) {
6965   std::swap(this->ptr, obj.ptr);
6966   return *this;
6967 }
6968 
~basic_set_list()6969 basic_set_list::~basic_set_list() {
6970   if (ptr)
6971     isl_basic_set_list_free(ptr);
6972 }
6973 
copy()6974 __isl_give isl_basic_set_list *basic_set_list::copy() const & {
6975   return isl_basic_set_list_copy(ptr);
6976 }
6977 
get()6978 __isl_keep isl_basic_set_list *basic_set_list::get() const {
6979   return ptr;
6980 }
6981 
release()6982 __isl_give isl_basic_set_list *basic_set_list::release() {
6983   isl_basic_set_list *tmp = ptr;
6984   ptr = nullptr;
6985   return tmp;
6986 }
6987 
is_null()6988 bool basic_set_list::is_null() const {
6989   return ptr == nullptr;
6990 }
6991 
6992 
ctx()6993 isl::ctx basic_set_list::ctx() const {
6994   return isl::ctx(isl_basic_set_list_get_ctx(ptr));
6995 }
6996 
dump()6997 void basic_set_list::dump() const {
6998   isl_basic_set_list_dump(get());
6999 }
7000 
7001 
add(isl::basic_set el)7002 isl::basic_set_list basic_set_list::add(isl::basic_set el) const
7003 {
7004   auto res = isl_basic_set_list_add(copy(), el.release());
7005   return manage(res);
7006 }
7007 
alloc(isl::ctx ctx,int n)7008 isl::basic_set_list basic_set_list::alloc(isl::ctx ctx, int n)
7009 {
7010   auto res = isl_basic_set_list_alloc(ctx.release(), n);
7011   return manage(res);
7012 }
7013 
clear()7014 isl::basic_set_list basic_set_list::clear() const
7015 {
7016   auto res = isl_basic_set_list_clear(copy());
7017   return manage(res);
7018 }
7019 
coefficients()7020 isl::basic_set_list basic_set_list::coefficients() const
7021 {
7022   auto res = isl_basic_set_list_coefficients(copy());
7023   return manage(res);
7024 }
7025 
concat(isl::basic_set_list list2)7026 isl::basic_set_list basic_set_list::concat(isl::basic_set_list list2) const
7027 {
7028   auto res = isl_basic_set_list_concat(copy(), list2.release());
7029   return manage(res);
7030 }
7031 
drop(unsigned int first,unsigned int n)7032 isl::basic_set_list basic_set_list::drop(unsigned int first, unsigned int n) const
7033 {
7034   auto res = isl_basic_set_list_drop(copy(), first, n);
7035   return manage(res);
7036 }
7037 
foreach(const std::function<stat (basic_set)> & fn)7038 stat basic_set_list::foreach(const std::function<stat(basic_set)> &fn) const
7039 {
7040   struct fn_data {
7041     const std::function<stat(basic_set)> *func;
7042   } fn_data = { &fn };
7043   auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
7044     auto *data = static_cast<struct fn_data *>(arg_1);
7045     stat ret = (*data->func)(manage(arg_0));
7046     return ret.release();
7047   };
7048   auto res = isl_basic_set_list_foreach(get(), fn_lambda, &fn_data);
7049   return manage(res);
7050 }
7051 
from_basic_set(isl::basic_set el)7052 isl::basic_set_list basic_set_list::from_basic_set(isl::basic_set el)
7053 {
7054   auto res = isl_basic_set_list_from_basic_set(el.release());
7055   return manage(res);
7056 }
7057 
get_at(int index)7058 isl::basic_set basic_set_list::get_at(int index) const
7059 {
7060   auto res = isl_basic_set_list_get_at(get(), index);
7061   return manage(res);
7062 }
7063 
get_basic_set(int index)7064 isl::basic_set basic_set_list::get_basic_set(int index) const
7065 {
7066   auto res = isl_basic_set_list_get_basic_set(get(), index);
7067   return manage(res);
7068 }
7069 
insert(unsigned int pos,isl::basic_set el)7070 isl::basic_set_list basic_set_list::insert(unsigned int pos, isl::basic_set el) const
7071 {
7072   auto res = isl_basic_set_list_insert(copy(), pos, el.release());
7073   return manage(res);
7074 }
7075 
n_basic_set()7076 isl_size basic_set_list::n_basic_set() const
7077 {
7078   auto res = isl_basic_set_list_n_basic_set(get());
7079   return res;
7080 }
7081 
reverse()7082 isl::basic_set_list basic_set_list::reverse() const
7083 {
7084   auto res = isl_basic_set_list_reverse(copy());
7085   return manage(res);
7086 }
7087 
set_basic_set(int index,isl::basic_set el)7088 isl::basic_set_list basic_set_list::set_basic_set(int index, isl::basic_set el) const
7089 {
7090   auto res = isl_basic_set_list_set_basic_set(copy(), index, el.release());
7091   return manage(res);
7092 }
7093 
size()7094 isl_size basic_set_list::size() const
7095 {
7096   auto res = isl_basic_set_list_size(get());
7097   return res;
7098 }
7099 
swap(unsigned int pos1,unsigned int pos2)7100 isl::basic_set_list basic_set_list::swap(unsigned int pos1, unsigned int pos2) const
7101 {
7102   auto res = isl_basic_set_list_swap(copy(), pos1, pos2);
7103   return manage(res);
7104 }
7105 
7106 // implementations for isl::constraint
manage(__isl_take isl_constraint * ptr)7107 constraint manage(__isl_take isl_constraint *ptr) {
7108   return constraint(ptr);
7109 }
manage_copy(__isl_keep isl_constraint * ptr)7110 constraint manage_copy(__isl_keep isl_constraint *ptr) {
7111   ptr = isl_constraint_copy(ptr);
7112   return constraint(ptr);
7113 }
7114 
constraint()7115 constraint::constraint()
7116     : ptr(nullptr) {}
7117 
constraint(const constraint & obj)7118 constraint::constraint(const constraint &obj)
7119     : ptr(nullptr)
7120 {
7121   ptr = obj.copy();
7122 }
7123 
7124 
constraint(__isl_take isl_constraint * ptr)7125 constraint::constraint(__isl_take isl_constraint *ptr)
7126     : ptr(ptr) {}
7127 
7128 
7129 constraint &constraint::operator=(constraint obj) {
7130   std::swap(this->ptr, obj.ptr);
7131   return *this;
7132 }
7133 
~constraint()7134 constraint::~constraint() {
7135   if (ptr)
7136     isl_constraint_free(ptr);
7137 }
7138 
copy()7139 __isl_give isl_constraint *constraint::copy() const & {
7140   return isl_constraint_copy(ptr);
7141 }
7142 
get()7143 __isl_keep isl_constraint *constraint::get() const {
7144   return ptr;
7145 }
7146 
release()7147 __isl_give isl_constraint *constraint::release() {
7148   isl_constraint *tmp = ptr;
7149   ptr = nullptr;
7150   return tmp;
7151 }
7152 
is_null()7153 bool constraint::is_null() const {
7154   return ptr == nullptr;
7155 }
7156 
7157 
ctx()7158 isl::ctx constraint::ctx() const {
7159   return isl::ctx(isl_constraint_get_ctx(ptr));
7160 }
7161 
dump()7162 void constraint::dump() const {
7163   isl_constraint_dump(get());
7164 }
7165 
7166 
alloc_equality(isl::local_space ls)7167 isl::constraint constraint::alloc_equality(isl::local_space ls)
7168 {
7169   auto res = isl_constraint_alloc_equality(ls.release());
7170   return manage(res);
7171 }
7172 
alloc_inequality(isl::local_space ls)7173 isl::constraint constraint::alloc_inequality(isl::local_space ls)
7174 {
7175   auto res = isl_constraint_alloc_inequality(ls.release());
7176   return manage(res);
7177 }
7178 
cmp_last_non_zero(const isl::constraint & c2)7179 int constraint::cmp_last_non_zero(const isl::constraint &c2) const
7180 {
7181   auto res = isl_constraint_cmp_last_non_zero(get(), c2.get());
7182   return res;
7183 }
7184 
get_aff()7185 isl::aff constraint::get_aff() const
7186 {
7187   auto res = isl_constraint_get_aff(get());
7188   return manage(res);
7189 }
7190 
get_bound(isl::dim type,int pos)7191 isl::aff constraint::get_bound(isl::dim type, int pos) const
7192 {
7193   auto res = isl_constraint_get_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7194   return manage(res);
7195 }
7196 
get_coefficient_val(isl::dim type,int pos)7197 isl::val constraint::get_coefficient_val(isl::dim type, int pos) const
7198 {
7199   auto res = isl_constraint_get_coefficient_val(get(), static_cast<enum isl_dim_type>(type), pos);
7200   return manage(res);
7201 }
7202 
get_constant_val()7203 isl::val constraint::get_constant_val() const
7204 {
7205   auto res = isl_constraint_get_constant_val(get());
7206   return manage(res);
7207 }
7208 
get_dim_name(isl::dim type,unsigned int pos)7209 std::string constraint::get_dim_name(isl::dim type, unsigned int pos) const
7210 {
7211   auto res = isl_constraint_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
7212   std::string tmp(res);
7213   return tmp;
7214 }
7215 
get_div(int pos)7216 isl::aff constraint::get_div(int pos) const
7217 {
7218   auto res = isl_constraint_get_div(get(), pos);
7219   return manage(res);
7220 }
7221 
get_local_space()7222 isl::local_space constraint::get_local_space() const
7223 {
7224   auto res = isl_constraint_get_local_space(get());
7225   return manage(res);
7226 }
7227 
get_space()7228 isl::space constraint::get_space() const
7229 {
7230   auto res = isl_constraint_get_space(get());
7231   return manage(res);
7232 }
7233 
involves_dims(isl::dim type,unsigned int first,unsigned int n)7234 boolean constraint::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
7235 {
7236   auto res = isl_constraint_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
7237   return manage(res);
7238 }
7239 
is_div_constraint()7240 boolean constraint::is_div_constraint() const
7241 {
7242   auto res = isl_constraint_is_div_constraint(get());
7243   return manage(res);
7244 }
7245 
is_lower_bound(isl::dim type,unsigned int pos)7246 boolean constraint::is_lower_bound(isl::dim type, unsigned int pos) const
7247 {
7248   auto res = isl_constraint_is_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7249   return manage(res);
7250 }
7251 
is_upper_bound(isl::dim type,unsigned int pos)7252 boolean constraint::is_upper_bound(isl::dim type, unsigned int pos) const
7253 {
7254   auto res = isl_constraint_is_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
7255   return manage(res);
7256 }
7257 
plain_cmp(const isl::constraint & c2)7258 int constraint::plain_cmp(const isl::constraint &c2) const
7259 {
7260   auto res = isl_constraint_plain_cmp(get(), c2.get());
7261   return res;
7262 }
7263 
set_coefficient_si(isl::dim type,int pos,int v)7264 isl::constraint constraint::set_coefficient_si(isl::dim type, int pos, int v) const
7265 {
7266   auto res = isl_constraint_set_coefficient_si(copy(), static_cast<enum isl_dim_type>(type), pos, v);
7267   return manage(res);
7268 }
7269 
set_coefficient_val(isl::dim type,int pos,isl::val v)7270 isl::constraint constraint::set_coefficient_val(isl::dim type, int pos, isl::val v) const
7271 {
7272   auto res = isl_constraint_set_coefficient_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
7273   return manage(res);
7274 }
7275 
set_constant_si(int v)7276 isl::constraint constraint::set_constant_si(int v) const
7277 {
7278   auto res = isl_constraint_set_constant_si(copy(), v);
7279   return manage(res);
7280 }
7281 
set_constant_val(isl::val v)7282 isl::constraint constraint::set_constant_val(isl::val v) const
7283 {
7284   auto res = isl_constraint_set_constant_val(copy(), v.release());
7285   return manage(res);
7286 }
7287 
7288 // implementations for isl::constraint_list
manage(__isl_take isl_constraint_list * ptr)7289 constraint_list manage(__isl_take isl_constraint_list *ptr) {
7290   return constraint_list(ptr);
7291 }
manage_copy(__isl_keep isl_constraint_list * ptr)7292 constraint_list manage_copy(__isl_keep isl_constraint_list *ptr) {
7293   ptr = isl_constraint_list_copy(ptr);
7294   return constraint_list(ptr);
7295 }
7296 
constraint_list()7297 constraint_list::constraint_list()
7298     : ptr(nullptr) {}
7299 
constraint_list(const constraint_list & obj)7300 constraint_list::constraint_list(const constraint_list &obj)
7301     : ptr(nullptr)
7302 {
7303   ptr = obj.copy();
7304 }
7305 
7306 
constraint_list(__isl_take isl_constraint_list * ptr)7307 constraint_list::constraint_list(__isl_take isl_constraint_list *ptr)
7308     : ptr(ptr) {}
7309 
7310 
7311 constraint_list &constraint_list::operator=(constraint_list obj) {
7312   std::swap(this->ptr, obj.ptr);
7313   return *this;
7314 }
7315 
~constraint_list()7316 constraint_list::~constraint_list() {
7317   if (ptr)
7318     isl_constraint_list_free(ptr);
7319 }
7320 
copy()7321 __isl_give isl_constraint_list *constraint_list::copy() const & {
7322   return isl_constraint_list_copy(ptr);
7323 }
7324 
get()7325 __isl_keep isl_constraint_list *constraint_list::get() const {
7326   return ptr;
7327 }
7328 
release()7329 __isl_give isl_constraint_list *constraint_list::release() {
7330   isl_constraint_list *tmp = ptr;
7331   ptr = nullptr;
7332   return tmp;
7333 }
7334 
is_null()7335 bool constraint_list::is_null() const {
7336   return ptr == nullptr;
7337 }
7338 
7339 
ctx()7340 isl::ctx constraint_list::ctx() const {
7341   return isl::ctx(isl_constraint_list_get_ctx(ptr));
7342 }
7343 
dump()7344 void constraint_list::dump() const {
7345   isl_constraint_list_dump(get());
7346 }
7347 
7348 
add(isl::constraint el)7349 isl::constraint_list constraint_list::add(isl::constraint el) const
7350 {
7351   auto res = isl_constraint_list_add(copy(), el.release());
7352   return manage(res);
7353 }
7354 
alloc(isl::ctx ctx,int n)7355 isl::constraint_list constraint_list::alloc(isl::ctx ctx, int n)
7356 {
7357   auto res = isl_constraint_list_alloc(ctx.release(), n);
7358   return manage(res);
7359 }
7360 
clear()7361 isl::constraint_list constraint_list::clear() const
7362 {
7363   auto res = isl_constraint_list_clear(copy());
7364   return manage(res);
7365 }
7366 
concat(isl::constraint_list list2)7367 isl::constraint_list constraint_list::concat(isl::constraint_list list2) const
7368 {
7369   auto res = isl_constraint_list_concat(copy(), list2.release());
7370   return manage(res);
7371 }
7372 
drop(unsigned int first,unsigned int n)7373 isl::constraint_list constraint_list::drop(unsigned int first, unsigned int n) const
7374 {
7375   auto res = isl_constraint_list_drop(copy(), first, n);
7376   return manage(res);
7377 }
7378 
foreach(const std::function<stat (constraint)> & fn)7379 stat constraint_list::foreach(const std::function<stat(constraint)> &fn) const
7380 {
7381   struct fn_data {
7382     const std::function<stat(constraint)> *func;
7383   } fn_data = { &fn };
7384   auto fn_lambda = [](isl_constraint *arg_0, void *arg_1) -> isl_stat {
7385     auto *data = static_cast<struct fn_data *>(arg_1);
7386     stat ret = (*data->func)(manage(arg_0));
7387     return ret.release();
7388   };
7389   auto res = isl_constraint_list_foreach(get(), fn_lambda, &fn_data);
7390   return manage(res);
7391 }
7392 
from_constraint(isl::constraint el)7393 isl::constraint_list constraint_list::from_constraint(isl::constraint el)
7394 {
7395   auto res = isl_constraint_list_from_constraint(el.release());
7396   return manage(res);
7397 }
7398 
get_at(int index)7399 isl::constraint constraint_list::get_at(int index) const
7400 {
7401   auto res = isl_constraint_list_get_at(get(), index);
7402   return manage(res);
7403 }
7404 
get_constraint(int index)7405 isl::constraint constraint_list::get_constraint(int index) const
7406 {
7407   auto res = isl_constraint_list_get_constraint(get(), index);
7408   return manage(res);
7409 }
7410 
insert(unsigned int pos,isl::constraint el)7411 isl::constraint_list constraint_list::insert(unsigned int pos, isl::constraint el) const
7412 {
7413   auto res = isl_constraint_list_insert(copy(), pos, el.release());
7414   return manage(res);
7415 }
7416 
n_constraint()7417 isl_size constraint_list::n_constraint() const
7418 {
7419   auto res = isl_constraint_list_n_constraint(get());
7420   return res;
7421 }
7422 
reverse()7423 isl::constraint_list constraint_list::reverse() const
7424 {
7425   auto res = isl_constraint_list_reverse(copy());
7426   return manage(res);
7427 }
7428 
set_constraint(int index,isl::constraint el)7429 isl::constraint_list constraint_list::set_constraint(int index, isl::constraint el) const
7430 {
7431   auto res = isl_constraint_list_set_constraint(copy(), index, el.release());
7432   return manage(res);
7433 }
7434 
size()7435 isl_size constraint_list::size() const
7436 {
7437   auto res = isl_constraint_list_size(get());
7438   return res;
7439 }
7440 
swap(unsigned int pos1,unsigned int pos2)7441 isl::constraint_list constraint_list::swap(unsigned int pos1, unsigned int pos2) const
7442 {
7443   auto res = isl_constraint_list_swap(copy(), pos1, pos2);
7444   return manage(res);
7445 }
7446 
7447 // implementations for isl::fixed_box
manage(__isl_take isl_fixed_box * ptr)7448 fixed_box manage(__isl_take isl_fixed_box *ptr) {
7449   return fixed_box(ptr);
7450 }
manage_copy(__isl_keep isl_fixed_box * ptr)7451 fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
7452   ptr = isl_fixed_box_copy(ptr);
7453   return fixed_box(ptr);
7454 }
7455 
fixed_box()7456 fixed_box::fixed_box()
7457     : ptr(nullptr) {}
7458 
fixed_box(const fixed_box & obj)7459 fixed_box::fixed_box(const fixed_box &obj)
7460     : ptr(nullptr)
7461 {
7462   ptr = obj.copy();
7463 }
7464 
7465 
fixed_box(__isl_take isl_fixed_box * ptr)7466 fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
7467     : ptr(ptr) {}
7468 
7469 
7470 fixed_box &fixed_box::operator=(fixed_box obj) {
7471   std::swap(this->ptr, obj.ptr);
7472   return *this;
7473 }
7474 
~fixed_box()7475 fixed_box::~fixed_box() {
7476   if (ptr)
7477     isl_fixed_box_free(ptr);
7478 }
7479 
copy()7480 __isl_give isl_fixed_box *fixed_box::copy() const & {
7481   return isl_fixed_box_copy(ptr);
7482 }
7483 
get()7484 __isl_keep isl_fixed_box *fixed_box::get() const {
7485   return ptr;
7486 }
7487 
release()7488 __isl_give isl_fixed_box *fixed_box::release() {
7489   isl_fixed_box *tmp = ptr;
7490   ptr = nullptr;
7491   return tmp;
7492 }
7493 
is_null()7494 bool fixed_box::is_null() const {
7495   return ptr == nullptr;
7496 }
7497 
7498 
ctx()7499 isl::ctx fixed_box::ctx() const {
7500   return isl::ctx(isl_fixed_box_get_ctx(ptr));
7501 }
7502 
dump()7503 void fixed_box::dump() const {
7504   isl_fixed_box_dump(get());
7505 }
7506 
7507 
get_offset()7508 isl::multi_aff fixed_box::get_offset() const
7509 {
7510   auto res = isl_fixed_box_get_offset(get());
7511   return manage(res);
7512 }
7513 
get_size()7514 isl::multi_val fixed_box::get_size() const
7515 {
7516   auto res = isl_fixed_box_get_size(get());
7517   return manage(res);
7518 }
7519 
get_space()7520 isl::space fixed_box::get_space() const
7521 {
7522   auto res = isl_fixed_box_get_space(get());
7523   return manage(res);
7524 }
7525 
is_valid()7526 boolean fixed_box::is_valid() const
7527 {
7528   auto res = isl_fixed_box_is_valid(get());
7529   return manage(res);
7530 }
7531 
7532 // implementations for isl::id
manage(__isl_take isl_id * ptr)7533 id manage(__isl_take isl_id *ptr) {
7534   return id(ptr);
7535 }
manage_copy(__isl_keep isl_id * ptr)7536 id manage_copy(__isl_keep isl_id *ptr) {
7537   ptr = isl_id_copy(ptr);
7538   return id(ptr);
7539 }
7540 
id()7541 id::id()
7542     : ptr(nullptr) {}
7543 
id(const id & obj)7544 id::id(const id &obj)
7545     : ptr(nullptr)
7546 {
7547   ptr = obj.copy();
7548 }
7549 
7550 
id(__isl_take isl_id * ptr)7551 id::id(__isl_take isl_id *ptr)
7552     : ptr(ptr) {}
7553 
id(isl::ctx ctx,const std::string & str)7554 id::id(isl::ctx ctx, const std::string &str)
7555 {
7556   auto res = isl_id_read_from_str(ctx.release(), str.c_str());
7557   ptr = res;
7558 }
7559 
7560 id &id::operator=(id obj) {
7561   std::swap(this->ptr, obj.ptr);
7562   return *this;
7563 }
7564 
~id()7565 id::~id() {
7566   if (ptr)
7567     isl_id_free(ptr);
7568 }
7569 
copy()7570 __isl_give isl_id *id::copy() const & {
7571   return isl_id_copy(ptr);
7572 }
7573 
get()7574 __isl_keep isl_id *id::get() const {
7575   return ptr;
7576 }
7577 
release()7578 __isl_give isl_id *id::release() {
7579   isl_id *tmp = ptr;
7580   ptr = nullptr;
7581   return tmp;
7582 }
7583 
is_null()7584 bool id::is_null() const {
7585   return ptr == nullptr;
7586 }
7587 
7588 
ctx()7589 isl::ctx id::ctx() const {
7590   return isl::ctx(isl_id_get_ctx(ptr));
7591 }
7592 
dump()7593 void id::dump() const {
7594   isl_id_dump(get());
7595 }
7596 
7597 
alloc(isl::ctx ctx,const std::string & name,void * user)7598 isl::id id::alloc(isl::ctx ctx, const std::string &name, void * user)
7599 {
7600   auto res = isl_id_alloc(ctx.release(), name.c_str(), user);
7601   return manage(res);
7602 }
7603 
get_hash()7604 uint32_t id::get_hash() const
7605 {
7606   auto res = isl_id_get_hash(get());
7607   return res;
7608 }
7609 
get_name()7610 std::string id::get_name() const
7611 {
7612   auto res = isl_id_get_name(get());
7613   std::string tmp(res);
7614   return tmp;
7615 }
7616 
get_user()7617 void * id::get_user() const
7618 {
7619   auto res = isl_id_get_user(get());
7620   return res;
7621 }
7622 
7623 // implementations for isl::id_list
manage(__isl_take isl_id_list * ptr)7624 id_list manage(__isl_take isl_id_list *ptr) {
7625   return id_list(ptr);
7626 }
manage_copy(__isl_keep isl_id_list * ptr)7627 id_list manage_copy(__isl_keep isl_id_list *ptr) {
7628   ptr = isl_id_list_copy(ptr);
7629   return id_list(ptr);
7630 }
7631 
id_list()7632 id_list::id_list()
7633     : ptr(nullptr) {}
7634 
id_list(const id_list & obj)7635 id_list::id_list(const id_list &obj)
7636     : ptr(nullptr)
7637 {
7638   ptr = obj.copy();
7639 }
7640 
7641 
id_list(__isl_take isl_id_list * ptr)7642 id_list::id_list(__isl_take isl_id_list *ptr)
7643     : ptr(ptr) {}
7644 
7645 
7646 id_list &id_list::operator=(id_list obj) {
7647   std::swap(this->ptr, obj.ptr);
7648   return *this;
7649 }
7650 
~id_list()7651 id_list::~id_list() {
7652   if (ptr)
7653     isl_id_list_free(ptr);
7654 }
7655 
copy()7656 __isl_give isl_id_list *id_list::copy() const & {
7657   return isl_id_list_copy(ptr);
7658 }
7659 
get()7660 __isl_keep isl_id_list *id_list::get() const {
7661   return ptr;
7662 }
7663 
release()7664 __isl_give isl_id_list *id_list::release() {
7665   isl_id_list *tmp = ptr;
7666   ptr = nullptr;
7667   return tmp;
7668 }
7669 
is_null()7670 bool id_list::is_null() const {
7671   return ptr == nullptr;
7672 }
7673 
7674 
ctx()7675 isl::ctx id_list::ctx() const {
7676   return isl::ctx(isl_id_list_get_ctx(ptr));
7677 }
7678 
dump()7679 void id_list::dump() const {
7680   isl_id_list_dump(get());
7681 }
7682 
7683 
add(isl::id el)7684 isl::id_list id_list::add(isl::id el) const
7685 {
7686   auto res = isl_id_list_add(copy(), el.release());
7687   return manage(res);
7688 }
7689 
alloc(isl::ctx ctx,int n)7690 isl::id_list id_list::alloc(isl::ctx ctx, int n)
7691 {
7692   auto res = isl_id_list_alloc(ctx.release(), n);
7693   return manage(res);
7694 }
7695 
clear()7696 isl::id_list id_list::clear() const
7697 {
7698   auto res = isl_id_list_clear(copy());
7699   return manage(res);
7700 }
7701 
concat(isl::id_list list2)7702 isl::id_list id_list::concat(isl::id_list list2) const
7703 {
7704   auto res = isl_id_list_concat(copy(), list2.release());
7705   return manage(res);
7706 }
7707 
drop(unsigned int first,unsigned int n)7708 isl::id_list id_list::drop(unsigned int first, unsigned int n) const
7709 {
7710   auto res = isl_id_list_drop(copy(), first, n);
7711   return manage(res);
7712 }
7713 
foreach(const std::function<stat (id)> & fn)7714 stat id_list::foreach(const std::function<stat(id)> &fn) const
7715 {
7716   struct fn_data {
7717     const std::function<stat(id)> *func;
7718   } fn_data = { &fn };
7719   auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
7720     auto *data = static_cast<struct fn_data *>(arg_1);
7721     stat ret = (*data->func)(manage(arg_0));
7722     return ret.release();
7723   };
7724   auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
7725   return manage(res);
7726 }
7727 
from_id(isl::id el)7728 isl::id_list id_list::from_id(isl::id el)
7729 {
7730   auto res = isl_id_list_from_id(el.release());
7731   return manage(res);
7732 }
7733 
get_at(int index)7734 isl::id id_list::get_at(int index) const
7735 {
7736   auto res = isl_id_list_get_at(get(), index);
7737   return manage(res);
7738 }
7739 
get_id(int index)7740 isl::id id_list::get_id(int index) const
7741 {
7742   auto res = isl_id_list_get_id(get(), index);
7743   return manage(res);
7744 }
7745 
insert(unsigned int pos,isl::id el)7746 isl::id_list id_list::insert(unsigned int pos, isl::id el) const
7747 {
7748   auto res = isl_id_list_insert(copy(), pos, el.release());
7749   return manage(res);
7750 }
7751 
n_id()7752 isl_size id_list::n_id() const
7753 {
7754   auto res = isl_id_list_n_id(get());
7755   return res;
7756 }
7757 
reverse()7758 isl::id_list id_list::reverse() const
7759 {
7760   auto res = isl_id_list_reverse(copy());
7761   return manage(res);
7762 }
7763 
set_id(int index,isl::id el)7764 isl::id_list id_list::set_id(int index, isl::id el) const
7765 {
7766   auto res = isl_id_list_set_id(copy(), index, el.release());
7767   return manage(res);
7768 }
7769 
size()7770 isl_size id_list::size() const
7771 {
7772   auto res = isl_id_list_size(get());
7773   return res;
7774 }
7775 
swap(unsigned int pos1,unsigned int pos2)7776 isl::id_list id_list::swap(unsigned int pos1, unsigned int pos2) const
7777 {
7778   auto res = isl_id_list_swap(copy(), pos1, pos2);
7779   return manage(res);
7780 }
7781 
7782 // implementations for isl::id_to_ast_expr
manage(__isl_take isl_id_to_ast_expr * ptr)7783 id_to_ast_expr manage(__isl_take isl_id_to_ast_expr *ptr) {
7784   return id_to_ast_expr(ptr);
7785 }
manage_copy(__isl_keep isl_id_to_ast_expr * ptr)7786 id_to_ast_expr manage_copy(__isl_keep isl_id_to_ast_expr *ptr) {
7787   ptr = isl_id_to_ast_expr_copy(ptr);
7788   return id_to_ast_expr(ptr);
7789 }
7790 
id_to_ast_expr()7791 id_to_ast_expr::id_to_ast_expr()
7792     : ptr(nullptr) {}
7793 
id_to_ast_expr(const id_to_ast_expr & obj)7794 id_to_ast_expr::id_to_ast_expr(const id_to_ast_expr &obj)
7795     : ptr(nullptr)
7796 {
7797   ptr = obj.copy();
7798 }
7799 
7800 
id_to_ast_expr(__isl_take isl_id_to_ast_expr * ptr)7801 id_to_ast_expr::id_to_ast_expr(__isl_take isl_id_to_ast_expr *ptr)
7802     : ptr(ptr) {}
7803 
7804 
7805 id_to_ast_expr &id_to_ast_expr::operator=(id_to_ast_expr obj) {
7806   std::swap(this->ptr, obj.ptr);
7807   return *this;
7808 }
7809 
~id_to_ast_expr()7810 id_to_ast_expr::~id_to_ast_expr() {
7811   if (ptr)
7812     isl_id_to_ast_expr_free(ptr);
7813 }
7814 
copy()7815 __isl_give isl_id_to_ast_expr *id_to_ast_expr::copy() const & {
7816   return isl_id_to_ast_expr_copy(ptr);
7817 }
7818 
get()7819 __isl_keep isl_id_to_ast_expr *id_to_ast_expr::get() const {
7820   return ptr;
7821 }
7822 
release()7823 __isl_give isl_id_to_ast_expr *id_to_ast_expr::release() {
7824   isl_id_to_ast_expr *tmp = ptr;
7825   ptr = nullptr;
7826   return tmp;
7827 }
7828 
is_null()7829 bool id_to_ast_expr::is_null() const {
7830   return ptr == nullptr;
7831 }
7832 
7833 
ctx()7834 isl::ctx id_to_ast_expr::ctx() const {
7835   return isl::ctx(isl_id_to_ast_expr_get_ctx(ptr));
7836 }
7837 
dump()7838 void id_to_ast_expr::dump() const {
7839   isl_id_to_ast_expr_dump(get());
7840 }
7841 
7842 
alloc(isl::ctx ctx,int min_size)7843 isl::id_to_ast_expr id_to_ast_expr::alloc(isl::ctx ctx, int min_size)
7844 {
7845   auto res = isl_id_to_ast_expr_alloc(ctx.release(), min_size);
7846   return manage(res);
7847 }
7848 
drop(isl::id key)7849 isl::id_to_ast_expr id_to_ast_expr::drop(isl::id key) const
7850 {
7851   auto res = isl_id_to_ast_expr_drop(copy(), key.release());
7852   return manage(res);
7853 }
7854 
foreach(const std::function<stat (id,ast_expr)> & fn)7855 stat id_to_ast_expr::foreach(const std::function<stat(id, ast_expr)> &fn) const
7856 {
7857   struct fn_data {
7858     const std::function<stat(id, ast_expr)> *func;
7859   } fn_data = { &fn };
7860   auto fn_lambda = [](isl_id *arg_0, isl_ast_expr *arg_1, void *arg_2) -> isl_stat {
7861     auto *data = static_cast<struct fn_data *>(arg_2);
7862     stat ret = (*data->func)(manage(arg_0), manage(arg_1));
7863     return ret.release();
7864   };
7865   auto res = isl_id_to_ast_expr_foreach(get(), fn_lambda, &fn_data);
7866   return manage(res);
7867 }
7868 
get(isl::id key)7869 isl::ast_expr id_to_ast_expr::get(isl::id key) const
7870 {
7871   auto res = isl_id_to_ast_expr_get(get(), key.release());
7872   return manage(res);
7873 }
7874 
has(const isl::id & key)7875 boolean id_to_ast_expr::has(const isl::id &key) const
7876 {
7877   auto res = isl_id_to_ast_expr_has(get(), key.get());
7878   return manage(res);
7879 }
7880 
set(isl::id key,isl::ast_expr val)7881 isl::id_to_ast_expr id_to_ast_expr::set(isl::id key, isl::ast_expr val) const
7882 {
7883   auto res = isl_id_to_ast_expr_set(copy(), key.release(), val.release());
7884   return manage(res);
7885 }
7886 
7887 // implementations for isl::local_space
manage(__isl_take isl_local_space * ptr)7888 local_space manage(__isl_take isl_local_space *ptr) {
7889   return local_space(ptr);
7890 }
manage_copy(__isl_keep isl_local_space * ptr)7891 local_space manage_copy(__isl_keep isl_local_space *ptr) {
7892   ptr = isl_local_space_copy(ptr);
7893   return local_space(ptr);
7894 }
7895 
local_space()7896 local_space::local_space()
7897     : ptr(nullptr) {}
7898 
local_space(const local_space & obj)7899 local_space::local_space(const local_space &obj)
7900     : ptr(nullptr)
7901 {
7902   ptr = obj.copy();
7903 }
7904 
7905 
local_space(__isl_take isl_local_space * ptr)7906 local_space::local_space(__isl_take isl_local_space *ptr)
7907     : ptr(ptr) {}
7908 
local_space(isl::space space)7909 local_space::local_space(isl::space space)
7910 {
7911   auto res = isl_local_space_from_space(space.release());
7912   ptr = res;
7913 }
7914 
7915 local_space &local_space::operator=(local_space obj) {
7916   std::swap(this->ptr, obj.ptr);
7917   return *this;
7918 }
7919 
~local_space()7920 local_space::~local_space() {
7921   if (ptr)
7922     isl_local_space_free(ptr);
7923 }
7924 
copy()7925 __isl_give isl_local_space *local_space::copy() const & {
7926   return isl_local_space_copy(ptr);
7927 }
7928 
get()7929 __isl_keep isl_local_space *local_space::get() const {
7930   return ptr;
7931 }
7932 
release()7933 __isl_give isl_local_space *local_space::release() {
7934   isl_local_space *tmp = ptr;
7935   ptr = nullptr;
7936   return tmp;
7937 }
7938 
is_null()7939 bool local_space::is_null() const {
7940   return ptr == nullptr;
7941 }
7942 
7943 
ctx()7944 isl::ctx local_space::ctx() const {
7945   return isl::ctx(isl_local_space_get_ctx(ptr));
7946 }
7947 
dump()7948 void local_space::dump() const {
7949   isl_local_space_dump(get());
7950 }
7951 
7952 
add_dims(isl::dim type,unsigned int n)7953 isl::local_space local_space::add_dims(isl::dim type, unsigned int n) const
7954 {
7955   auto res = isl_local_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
7956   return manage(res);
7957 }
7958 
dim(isl::dim type)7959 isl_size local_space::dim(isl::dim type) const
7960 {
7961   auto res = isl_local_space_dim(get(), static_cast<enum isl_dim_type>(type));
7962   return res;
7963 }
7964 
domain()7965 isl::local_space local_space::domain() const
7966 {
7967   auto res = isl_local_space_domain(copy());
7968   return manage(res);
7969 }
7970 
drop_dims(isl::dim type,unsigned int first,unsigned int n)7971 isl::local_space local_space::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
7972 {
7973   auto res = isl_local_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
7974   return manage(res);
7975 }
7976 
find_dim_by_name(isl::dim type,const std::string & name)7977 int local_space::find_dim_by_name(isl::dim type, const std::string &name) const
7978 {
7979   auto res = isl_local_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
7980   return res;
7981 }
7982 
flatten_domain()7983 isl::local_space local_space::flatten_domain() const
7984 {
7985   auto res = isl_local_space_flatten_domain(copy());
7986   return manage(res);
7987 }
7988 
flatten_range()7989 isl::local_space local_space::flatten_range() const
7990 {
7991   auto res = isl_local_space_flatten_range(copy());
7992   return manage(res);
7993 }
7994 
from_domain()7995 isl::local_space local_space::from_domain() const
7996 {
7997   auto res = isl_local_space_from_domain(copy());
7998   return manage(res);
7999 }
8000 
get_dim_id(isl::dim type,unsigned int pos)8001 isl::id local_space::get_dim_id(isl::dim type, unsigned int pos) const
8002 {
8003   auto res = isl_local_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8004   return manage(res);
8005 }
8006 
get_dim_name(isl::dim type,unsigned int pos)8007 std::string local_space::get_dim_name(isl::dim type, unsigned int pos) const
8008 {
8009   auto res = isl_local_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8010   std::string tmp(res);
8011   return tmp;
8012 }
8013 
get_div(int pos)8014 isl::aff local_space::get_div(int pos) const
8015 {
8016   auto res = isl_local_space_get_div(get(), pos);
8017   return manage(res);
8018 }
8019 
get_space()8020 isl::space local_space::get_space() const
8021 {
8022   auto res = isl_local_space_get_space(get());
8023   return manage(res);
8024 }
8025 
has_dim_id(isl::dim type,unsigned int pos)8026 boolean local_space::has_dim_id(isl::dim type, unsigned int pos) const
8027 {
8028   auto res = isl_local_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8029   return manage(res);
8030 }
8031 
has_dim_name(isl::dim type,unsigned int pos)8032 boolean local_space::has_dim_name(isl::dim type, unsigned int pos) const
8033 {
8034   auto res = isl_local_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8035   return manage(res);
8036 }
8037 
insert_dims(isl::dim type,unsigned int first,unsigned int n)8038 isl::local_space local_space::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
8039 {
8040   auto res = isl_local_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8041   return manage(res);
8042 }
8043 
intersect(isl::local_space ls2)8044 isl::local_space local_space::intersect(isl::local_space ls2) const
8045 {
8046   auto res = isl_local_space_intersect(copy(), ls2.release());
8047   return manage(res);
8048 }
8049 
is_equal(const isl::local_space & ls2)8050 boolean local_space::is_equal(const isl::local_space &ls2) const
8051 {
8052   auto res = isl_local_space_is_equal(get(), ls2.get());
8053   return manage(res);
8054 }
8055 
is_params()8056 boolean local_space::is_params() const
8057 {
8058   auto res = isl_local_space_is_params(get());
8059   return manage(res);
8060 }
8061 
is_set()8062 boolean local_space::is_set() const
8063 {
8064   auto res = isl_local_space_is_set(get());
8065   return manage(res);
8066 }
8067 
range()8068 isl::local_space local_space::range() const
8069 {
8070   auto res = isl_local_space_range(copy());
8071   return manage(res);
8072 }
8073 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)8074 isl::local_space local_space::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
8075 {
8076   auto res = isl_local_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
8077   return manage(res);
8078 }
8079 
set_from_params()8080 isl::local_space local_space::set_from_params() const
8081 {
8082   auto res = isl_local_space_set_from_params(copy());
8083   return manage(res);
8084 }
8085 
set_tuple_id(isl::dim type,isl::id id)8086 isl::local_space local_space::set_tuple_id(isl::dim type, isl::id id) const
8087 {
8088   auto res = isl_local_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
8089   return manage(res);
8090 }
8091 
wrap()8092 isl::local_space local_space::wrap() const
8093 {
8094   auto res = isl_local_space_wrap(copy());
8095   return manage(res);
8096 }
8097 
8098 // implementations for isl::map
manage(__isl_take isl_map * ptr)8099 map manage(__isl_take isl_map *ptr) {
8100   return map(ptr);
8101 }
manage_copy(__isl_keep isl_map * ptr)8102 map manage_copy(__isl_keep isl_map *ptr) {
8103   ptr = isl_map_copy(ptr);
8104   return map(ptr);
8105 }
8106 
map()8107 map::map()
8108     : ptr(nullptr) {}
8109 
map(const map & obj)8110 map::map(const map &obj)
8111     : ptr(nullptr)
8112 {
8113   ptr = obj.copy();
8114 }
8115 
8116 
map(__isl_take isl_map * ptr)8117 map::map(__isl_take isl_map *ptr)
8118     : ptr(ptr) {}
8119 
map(isl::basic_map bmap)8120 map::map(isl::basic_map bmap)
8121 {
8122   auto res = isl_map_from_basic_map(bmap.release());
8123   ptr = res;
8124 }
map(isl::ctx ctx,const std::string & str)8125 map::map(isl::ctx ctx, const std::string &str)
8126 {
8127   auto res = isl_map_read_from_str(ctx.release(), str.c_str());
8128   ptr = res;
8129 }
8130 
8131 map &map::operator=(map obj) {
8132   std::swap(this->ptr, obj.ptr);
8133   return *this;
8134 }
8135 
~map()8136 map::~map() {
8137   if (ptr)
8138     isl_map_free(ptr);
8139 }
8140 
copy()8141 __isl_give isl_map *map::copy() const & {
8142   return isl_map_copy(ptr);
8143 }
8144 
get()8145 __isl_keep isl_map *map::get() const {
8146   return ptr;
8147 }
8148 
release()8149 __isl_give isl_map *map::release() {
8150   isl_map *tmp = ptr;
8151   ptr = nullptr;
8152   return tmp;
8153 }
8154 
is_null()8155 bool map::is_null() const {
8156   return ptr == nullptr;
8157 }
8158 
8159 
ctx()8160 isl::ctx map::ctx() const {
8161   return isl::ctx(isl_map_get_ctx(ptr));
8162 }
8163 
dump()8164 void map::dump() const {
8165   isl_map_dump(get());
8166 }
8167 
8168 
add_constraint(isl::constraint constraint)8169 isl::map map::add_constraint(isl::constraint constraint) const
8170 {
8171   auto res = isl_map_add_constraint(copy(), constraint.release());
8172   return manage(res);
8173 }
8174 
add_dims(isl::dim type,unsigned int n)8175 isl::map map::add_dims(isl::dim type, unsigned int n) const
8176 {
8177   auto res = isl_map_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
8178   return manage(res);
8179 }
8180 
affine_hull()8181 isl::basic_map map::affine_hull() const
8182 {
8183   auto res = isl_map_affine_hull(copy());
8184   return manage(res);
8185 }
8186 
align_params(isl::space model)8187 isl::map map::align_params(isl::space model) const
8188 {
8189   auto res = isl_map_align_params(copy(), model.release());
8190   return manage(res);
8191 }
8192 
apply_domain(isl::map map2)8193 isl::map map::apply_domain(isl::map map2) const
8194 {
8195   auto res = isl_map_apply_domain(copy(), map2.release());
8196   return manage(res);
8197 }
8198 
apply_range(isl::map map2)8199 isl::map map::apply_range(isl::map map2) const
8200 {
8201   auto res = isl_map_apply_range(copy(), map2.release());
8202   return manage(res);
8203 }
8204 
bind_domain(isl::multi_id tuple)8205 isl::set map::bind_domain(isl::multi_id tuple) const
8206 {
8207   auto res = isl_map_bind_domain(copy(), tuple.release());
8208   return manage(res);
8209 }
8210 
bind_range(isl::multi_id tuple)8211 isl::set map::bind_range(isl::multi_id tuple) const
8212 {
8213   auto res = isl_map_bind_range(copy(), tuple.release());
8214   return manage(res);
8215 }
8216 
can_curry()8217 boolean map::can_curry() const
8218 {
8219   auto res = isl_map_can_curry(get());
8220   return manage(res);
8221 }
8222 
can_range_curry()8223 boolean map::can_range_curry() const
8224 {
8225   auto res = isl_map_can_range_curry(get());
8226   return manage(res);
8227 }
8228 
can_uncurry()8229 boolean map::can_uncurry() const
8230 {
8231   auto res = isl_map_can_uncurry(get());
8232   return manage(res);
8233 }
8234 
can_zip()8235 boolean map::can_zip() const
8236 {
8237   auto res = isl_map_can_zip(get());
8238   return manage(res);
8239 }
8240 
coalesce()8241 isl::map map::coalesce() const
8242 {
8243   auto res = isl_map_coalesce(copy());
8244   return manage(res);
8245 }
8246 
complement()8247 isl::map map::complement() const
8248 {
8249   auto res = isl_map_complement(copy());
8250   return manage(res);
8251 }
8252 
convex_hull()8253 isl::basic_map map::convex_hull() const
8254 {
8255   auto res = isl_map_convex_hull(copy());
8256   return manage(res);
8257 }
8258 
curry()8259 isl::map map::curry() const
8260 {
8261   auto res = isl_map_curry(copy());
8262   return manage(res);
8263 }
8264 
deltas()8265 isl::set map::deltas() const
8266 {
8267   auto res = isl_map_deltas(copy());
8268   return manage(res);
8269 }
8270 
deltas_map()8271 isl::map map::deltas_map() const
8272 {
8273   auto res = isl_map_deltas_map(copy());
8274   return manage(res);
8275 }
8276 
detect_equalities()8277 isl::map map::detect_equalities() const
8278 {
8279   auto res = isl_map_detect_equalities(copy());
8280   return manage(res);
8281 }
8282 
dim(isl::dim type)8283 isl_size map::dim(isl::dim type) const
8284 {
8285   auto res = isl_map_dim(get(), static_cast<enum isl_dim_type>(type));
8286   return res;
8287 }
8288 
dim_max(int pos)8289 isl::pw_aff map::dim_max(int pos) const
8290 {
8291   auto res = isl_map_dim_max(copy(), pos);
8292   return manage(res);
8293 }
8294 
dim_min(int pos)8295 isl::pw_aff map::dim_min(int pos) const
8296 {
8297   auto res = isl_map_dim_min(copy(), pos);
8298   return manage(res);
8299 }
8300 
domain()8301 isl::set map::domain() const
8302 {
8303   auto res = isl_map_domain(copy());
8304   return manage(res);
8305 }
8306 
domain_factor_domain()8307 isl::map map::domain_factor_domain() const
8308 {
8309   auto res = isl_map_domain_factor_domain(copy());
8310   return manage(res);
8311 }
8312 
domain_factor_range()8313 isl::map map::domain_factor_range() const
8314 {
8315   auto res = isl_map_domain_factor_range(copy());
8316   return manage(res);
8317 }
8318 
domain_is_wrapping()8319 boolean map::domain_is_wrapping() const
8320 {
8321   auto res = isl_map_domain_is_wrapping(get());
8322   return manage(res);
8323 }
8324 
domain_map()8325 isl::map map::domain_map() const
8326 {
8327   auto res = isl_map_domain_map(copy());
8328   return manage(res);
8329 }
8330 
domain_product(isl::map map2)8331 isl::map map::domain_product(isl::map map2) const
8332 {
8333   auto res = isl_map_domain_product(copy(), map2.release());
8334   return manage(res);
8335 }
8336 
domain_tuple_dim()8337 isl_size map::domain_tuple_dim() const
8338 {
8339   auto res = isl_map_domain_tuple_dim(get());
8340   return res;
8341 }
8342 
drop_constraints_involving_dims(isl::dim type,unsigned int first,unsigned int n)8343 isl::map map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8344 {
8345   auto res = isl_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8346   return manage(res);
8347 }
8348 
drop_constraints_not_involving_dims(isl::dim type,unsigned int first,unsigned int n)8349 isl::map map::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
8350 {
8351   auto res = isl_map_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
8352   return manage(res);
8353 }
8354 
drop_unused_params()8355 isl::map map::drop_unused_params() const
8356 {
8357   auto res = isl_map_drop_unused_params(copy());
8358   return manage(res);
8359 }
8360 
eliminate(isl::dim type,unsigned int first,unsigned int n)8361 isl::map map::eliminate(isl::dim type, unsigned int first, unsigned int n) const
8362 {
8363   auto res = isl_map_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
8364   return manage(res);
8365 }
8366 
empty(isl::space space)8367 isl::map map::empty(isl::space space)
8368 {
8369   auto res = isl_map_empty(space.release());
8370   return manage(res);
8371 }
8372 
eq_at(isl::multi_pw_aff mpa)8373 isl::map map::eq_at(isl::multi_pw_aff mpa) const
8374 {
8375   auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
8376   return manage(res);
8377 }
8378 
equate(isl::dim type1,int pos1,isl::dim type2,int pos2)8379 isl::map map::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8380 {
8381   auto res = isl_map_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8382   return manage(res);
8383 }
8384 
factor_domain()8385 isl::map map::factor_domain() const
8386 {
8387   auto res = isl_map_factor_domain(copy());
8388   return manage(res);
8389 }
8390 
factor_range()8391 isl::map map::factor_range() const
8392 {
8393   auto res = isl_map_factor_range(copy());
8394   return manage(res);
8395 }
8396 
find_dim_by_id(isl::dim type,const isl::id & id)8397 int map::find_dim_by_id(isl::dim type, const isl::id &id) const
8398 {
8399   auto res = isl_map_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
8400   return res;
8401 }
8402 
find_dim_by_name(isl::dim type,const std::string & name)8403 int map::find_dim_by_name(isl::dim type, const std::string &name) const
8404 {
8405   auto res = isl_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
8406   return res;
8407 }
8408 
fix_si(isl::dim type,unsigned int pos,int value)8409 isl::map map::fix_si(isl::dim type, unsigned int pos, int value) const
8410 {
8411   auto res = isl_map_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8412   return manage(res);
8413 }
8414 
fix_val(isl::dim type,unsigned int pos,isl::val v)8415 isl::map map::fix_val(isl::dim type, unsigned int pos, isl::val v) const
8416 {
8417   auto res = isl_map_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
8418   return manage(res);
8419 }
8420 
fixed_power_val(isl::val exp)8421 isl::map map::fixed_power_val(isl::val exp) const
8422 {
8423   auto res = isl_map_fixed_power_val(copy(), exp.release());
8424   return manage(res);
8425 }
8426 
flat_domain_product(isl::map map2)8427 isl::map map::flat_domain_product(isl::map map2) const
8428 {
8429   auto res = isl_map_flat_domain_product(copy(), map2.release());
8430   return manage(res);
8431 }
8432 
flat_product(isl::map map2)8433 isl::map map::flat_product(isl::map map2) const
8434 {
8435   auto res = isl_map_flat_product(copy(), map2.release());
8436   return manage(res);
8437 }
8438 
flat_range_product(isl::map map2)8439 isl::map map::flat_range_product(isl::map map2) const
8440 {
8441   auto res = isl_map_flat_range_product(copy(), map2.release());
8442   return manage(res);
8443 }
8444 
flatten()8445 isl::map map::flatten() const
8446 {
8447   auto res = isl_map_flatten(copy());
8448   return manage(res);
8449 }
8450 
flatten_domain()8451 isl::map map::flatten_domain() const
8452 {
8453   auto res = isl_map_flatten_domain(copy());
8454   return manage(res);
8455 }
8456 
flatten_range()8457 isl::map map::flatten_range() const
8458 {
8459   auto res = isl_map_flatten_range(copy());
8460   return manage(res);
8461 }
8462 
floordiv_val(isl::val d)8463 isl::map map::floordiv_val(isl::val d) const
8464 {
8465   auto res = isl_map_floordiv_val(copy(), d.release());
8466   return manage(res);
8467 }
8468 
foreach_basic_map(const std::function<stat (basic_map)> & fn)8469 stat map::foreach_basic_map(const std::function<stat(basic_map)> &fn) const
8470 {
8471   struct fn_data {
8472     const std::function<stat(basic_map)> *func;
8473   } fn_data = { &fn };
8474   auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
8475     auto *data = static_cast<struct fn_data *>(arg_1);
8476     stat ret = (*data->func)(manage(arg_0));
8477     return ret.release();
8478   };
8479   auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
8480   return manage(res);
8481 }
8482 
from_aff(isl::aff aff)8483 isl::map map::from_aff(isl::aff aff)
8484 {
8485   auto res = isl_map_from_aff(aff.release());
8486   return manage(res);
8487 }
8488 
from_domain(isl::set set)8489 isl::map map::from_domain(isl::set set)
8490 {
8491   auto res = isl_map_from_domain(set.release());
8492   return manage(res);
8493 }
8494 
from_domain_and_range(isl::set domain,isl::set range)8495 isl::map map::from_domain_and_range(isl::set domain, isl::set range)
8496 {
8497   auto res = isl_map_from_domain_and_range(domain.release(), range.release());
8498   return manage(res);
8499 }
8500 
from_multi_aff(isl::multi_aff maff)8501 isl::map map::from_multi_aff(isl::multi_aff maff)
8502 {
8503   auto res = isl_map_from_multi_aff(maff.release());
8504   return manage(res);
8505 }
8506 
from_multi_pw_aff(isl::multi_pw_aff mpa)8507 isl::map map::from_multi_pw_aff(isl::multi_pw_aff mpa)
8508 {
8509   auto res = isl_map_from_multi_pw_aff(mpa.release());
8510   return manage(res);
8511 }
8512 
from_pw_aff(isl::pw_aff pwaff)8513 isl::map map::from_pw_aff(isl::pw_aff pwaff)
8514 {
8515   auto res = isl_map_from_pw_aff(pwaff.release());
8516   return manage(res);
8517 }
8518 
from_pw_multi_aff(isl::pw_multi_aff pma)8519 isl::map map::from_pw_multi_aff(isl::pw_multi_aff pma)
8520 {
8521   auto res = isl_map_from_pw_multi_aff(pma.release());
8522   return manage(res);
8523 }
8524 
from_range(isl::set set)8525 isl::map map::from_range(isl::set set)
8526 {
8527   auto res = isl_map_from_range(set.release());
8528   return manage(res);
8529 }
8530 
from_union_map(isl::union_map umap)8531 isl::map map::from_union_map(isl::union_map umap)
8532 {
8533   auto res = isl_map_from_union_map(umap.release());
8534   return manage(res);
8535 }
8536 
get_basic_map_list()8537 isl::basic_map_list map::get_basic_map_list() const
8538 {
8539   auto res = isl_map_get_basic_map_list(get());
8540   return manage(res);
8541 }
8542 
get_dim_id(isl::dim type,unsigned int pos)8543 isl::id map::get_dim_id(isl::dim type, unsigned int pos) const
8544 {
8545   auto res = isl_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8546   return manage(res);
8547 }
8548 
get_dim_name(isl::dim type,unsigned int pos)8549 std::string map::get_dim_name(isl::dim type, unsigned int pos) const
8550 {
8551   auto res = isl_map_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8552   std::string tmp(res);
8553   return tmp;
8554 }
8555 
get_hash()8556 uint32_t map::get_hash() const
8557 {
8558   auto res = isl_map_get_hash(get());
8559   return res;
8560 }
8561 
get_range_simple_fixed_box_hull()8562 isl::fixed_box map::get_range_simple_fixed_box_hull() const
8563 {
8564   auto res = isl_map_get_range_simple_fixed_box_hull(get());
8565   return manage(res);
8566 }
8567 
get_space()8568 isl::space map::get_space() const
8569 {
8570   auto res = isl_map_get_space(get());
8571   return manage(res);
8572 }
8573 
get_tuple_id(isl::dim type)8574 isl::id map::get_tuple_id(isl::dim type) const
8575 {
8576   auto res = isl_map_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8577   return manage(res);
8578 }
8579 
get_tuple_name(isl::dim type)8580 std::string map::get_tuple_name(isl::dim type) const
8581 {
8582   auto res = isl_map_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8583   std::string tmp(res);
8584   return tmp;
8585 }
8586 
gist(isl::map context)8587 isl::map map::gist(isl::map context) const
8588 {
8589   auto res = isl_map_gist(copy(), context.release());
8590   return manage(res);
8591 }
8592 
gist_basic_map(isl::basic_map context)8593 isl::map map::gist_basic_map(isl::basic_map context) const
8594 {
8595   auto res = isl_map_gist_basic_map(copy(), context.release());
8596   return manage(res);
8597 }
8598 
gist_domain(isl::set context)8599 isl::map map::gist_domain(isl::set context) const
8600 {
8601   auto res = isl_map_gist_domain(copy(), context.release());
8602   return manage(res);
8603 }
8604 
gist_params(isl::set context)8605 isl::map map::gist_params(isl::set context) const
8606 {
8607   auto res = isl_map_gist_params(copy(), context.release());
8608   return manage(res);
8609 }
8610 
gist_range(isl::set context)8611 isl::map map::gist_range(isl::set context) const
8612 {
8613   auto res = isl_map_gist_range(copy(), context.release());
8614   return manage(res);
8615 }
8616 
has_dim_id(isl::dim type,unsigned int pos)8617 boolean map::has_dim_id(isl::dim type, unsigned int pos) const
8618 {
8619   auto res = isl_map_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
8620   return manage(res);
8621 }
8622 
has_dim_name(isl::dim type,unsigned int pos)8623 boolean map::has_dim_name(isl::dim type, unsigned int pos) const
8624 {
8625   auto res = isl_map_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
8626   return manage(res);
8627 }
8628 
has_equal_space(const isl::map & map2)8629 boolean map::has_equal_space(const isl::map &map2) const
8630 {
8631   auto res = isl_map_has_equal_space(get(), map2.get());
8632   return manage(res);
8633 }
8634 
has_tuple_id(isl::dim type)8635 boolean map::has_tuple_id(isl::dim type) const
8636 {
8637   auto res = isl_map_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
8638   return manage(res);
8639 }
8640 
has_tuple_name(isl::dim type)8641 boolean map::has_tuple_name(isl::dim type) const
8642 {
8643   auto res = isl_map_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
8644   return manage(res);
8645 }
8646 
identity(isl::space space)8647 isl::map map::identity(isl::space space)
8648 {
8649   auto res = isl_map_identity(space.release());
8650   return manage(res);
8651 }
8652 
insert_dims(isl::dim type,unsigned int pos,unsigned int n)8653 isl::map map::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
8654 {
8655   auto res = isl_map_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
8656   return manage(res);
8657 }
8658 
intersect(isl::map map2)8659 isl::map map::intersect(isl::map map2) const
8660 {
8661   auto res = isl_map_intersect(copy(), map2.release());
8662   return manage(res);
8663 }
8664 
intersect_domain(isl::set set)8665 isl::map map::intersect_domain(isl::set set) const
8666 {
8667   auto res = isl_map_intersect_domain(copy(), set.release());
8668   return manage(res);
8669 }
8670 
intersect_domain_factor_domain(isl::map factor)8671 isl::map map::intersect_domain_factor_domain(isl::map factor) const
8672 {
8673   auto res = isl_map_intersect_domain_factor_domain(copy(), factor.release());
8674   return manage(res);
8675 }
8676 
intersect_domain_factor_range(isl::map factor)8677 isl::map map::intersect_domain_factor_range(isl::map factor) const
8678 {
8679   auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
8680   return manage(res);
8681 }
8682 
intersect_params(isl::set params)8683 isl::map map::intersect_params(isl::set params) const
8684 {
8685   auto res = isl_map_intersect_params(copy(), params.release());
8686   return manage(res);
8687 }
8688 
intersect_range(isl::set set)8689 isl::map map::intersect_range(isl::set set) const
8690 {
8691   auto res = isl_map_intersect_range(copy(), set.release());
8692   return manage(res);
8693 }
8694 
intersect_range_factor_domain(isl::map factor)8695 isl::map map::intersect_range_factor_domain(isl::map factor) const
8696 {
8697   auto res = isl_map_intersect_range_factor_domain(copy(), factor.release());
8698   return manage(res);
8699 }
8700 
intersect_range_factor_range(isl::map factor)8701 isl::map map::intersect_range_factor_range(isl::map factor) const
8702 {
8703   auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
8704   return manage(res);
8705 }
8706 
involves_dims(isl::dim type,unsigned int first,unsigned int n)8707 boolean map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
8708 {
8709   auto res = isl_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
8710   return manage(res);
8711 }
8712 
is_bijective()8713 boolean map::is_bijective() const
8714 {
8715   auto res = isl_map_is_bijective(get());
8716   return manage(res);
8717 }
8718 
is_disjoint(const isl::map & map2)8719 boolean map::is_disjoint(const isl::map &map2) const
8720 {
8721   auto res = isl_map_is_disjoint(get(), map2.get());
8722   return manage(res);
8723 }
8724 
is_empty()8725 boolean map::is_empty() const
8726 {
8727   auto res = isl_map_is_empty(get());
8728   return manage(res);
8729 }
8730 
is_equal(const isl::map & map2)8731 boolean map::is_equal(const isl::map &map2) const
8732 {
8733   auto res = isl_map_is_equal(get(), map2.get());
8734   return manage(res);
8735 }
8736 
is_identity()8737 boolean map::is_identity() const
8738 {
8739   auto res = isl_map_is_identity(get());
8740   return manage(res);
8741 }
8742 
is_injective()8743 boolean map::is_injective() const
8744 {
8745   auto res = isl_map_is_injective(get());
8746   return manage(res);
8747 }
8748 
is_product()8749 boolean map::is_product() const
8750 {
8751   auto res = isl_map_is_product(get());
8752   return manage(res);
8753 }
8754 
is_single_valued()8755 boolean map::is_single_valued() const
8756 {
8757   auto res = isl_map_is_single_valued(get());
8758   return manage(res);
8759 }
8760 
is_strict_subset(const isl::map & map2)8761 boolean map::is_strict_subset(const isl::map &map2) const
8762 {
8763   auto res = isl_map_is_strict_subset(get(), map2.get());
8764   return manage(res);
8765 }
8766 
is_subset(const isl::map & map2)8767 boolean map::is_subset(const isl::map &map2) const
8768 {
8769   auto res = isl_map_is_subset(get(), map2.get());
8770   return manage(res);
8771 }
8772 
is_translation()8773 int map::is_translation() const
8774 {
8775   auto res = isl_map_is_translation(get());
8776   return res;
8777 }
8778 
lex_ge(isl::space set_space)8779 isl::map map::lex_ge(isl::space set_space)
8780 {
8781   auto res = isl_map_lex_ge(set_space.release());
8782   return manage(res);
8783 }
8784 
lex_ge_at(isl::multi_pw_aff mpa)8785 isl::map map::lex_ge_at(isl::multi_pw_aff mpa) const
8786 {
8787   auto res = isl_map_lex_ge_at_multi_pw_aff(copy(), mpa.release());
8788   return manage(res);
8789 }
8790 
lex_ge_first(isl::space space,unsigned int n)8791 isl::map map::lex_ge_first(isl::space space, unsigned int n)
8792 {
8793   auto res = isl_map_lex_ge_first(space.release(), n);
8794   return manage(res);
8795 }
8796 
lex_ge_map(isl::map map2)8797 isl::map map::lex_ge_map(isl::map map2) const
8798 {
8799   auto res = isl_map_lex_ge_map(copy(), map2.release());
8800   return manage(res);
8801 }
8802 
lex_gt(isl::space set_space)8803 isl::map map::lex_gt(isl::space set_space)
8804 {
8805   auto res = isl_map_lex_gt(set_space.release());
8806   return manage(res);
8807 }
8808 
lex_gt_at(isl::multi_pw_aff mpa)8809 isl::map map::lex_gt_at(isl::multi_pw_aff mpa) const
8810 {
8811   auto res = isl_map_lex_gt_at_multi_pw_aff(copy(), mpa.release());
8812   return manage(res);
8813 }
8814 
lex_gt_first(isl::space space,unsigned int n)8815 isl::map map::lex_gt_first(isl::space space, unsigned int n)
8816 {
8817   auto res = isl_map_lex_gt_first(space.release(), n);
8818   return manage(res);
8819 }
8820 
lex_gt_map(isl::map map2)8821 isl::map map::lex_gt_map(isl::map map2) const
8822 {
8823   auto res = isl_map_lex_gt_map(copy(), map2.release());
8824   return manage(res);
8825 }
8826 
lex_le(isl::space set_space)8827 isl::map map::lex_le(isl::space set_space)
8828 {
8829   auto res = isl_map_lex_le(set_space.release());
8830   return manage(res);
8831 }
8832 
lex_le_at(isl::multi_pw_aff mpa)8833 isl::map map::lex_le_at(isl::multi_pw_aff mpa) const
8834 {
8835   auto res = isl_map_lex_le_at_multi_pw_aff(copy(), mpa.release());
8836   return manage(res);
8837 }
8838 
lex_le_first(isl::space space,unsigned int n)8839 isl::map map::lex_le_first(isl::space space, unsigned int n)
8840 {
8841   auto res = isl_map_lex_le_first(space.release(), n);
8842   return manage(res);
8843 }
8844 
lex_le_map(isl::map map2)8845 isl::map map::lex_le_map(isl::map map2) const
8846 {
8847   auto res = isl_map_lex_le_map(copy(), map2.release());
8848   return manage(res);
8849 }
8850 
lex_lt(isl::space set_space)8851 isl::map map::lex_lt(isl::space set_space)
8852 {
8853   auto res = isl_map_lex_lt(set_space.release());
8854   return manage(res);
8855 }
8856 
lex_lt_at(isl::multi_pw_aff mpa)8857 isl::map map::lex_lt_at(isl::multi_pw_aff mpa) const
8858 {
8859   auto res = isl_map_lex_lt_at_multi_pw_aff(copy(), mpa.release());
8860   return manage(res);
8861 }
8862 
lex_lt_first(isl::space space,unsigned int n)8863 isl::map map::lex_lt_first(isl::space space, unsigned int n)
8864 {
8865   auto res = isl_map_lex_lt_first(space.release(), n);
8866   return manage(res);
8867 }
8868 
lex_lt_map(isl::map map2)8869 isl::map map::lex_lt_map(isl::map map2) const
8870 {
8871   auto res = isl_map_lex_lt_map(copy(), map2.release());
8872   return manage(res);
8873 }
8874 
lexmax()8875 isl::map map::lexmax() const
8876 {
8877   auto res = isl_map_lexmax(copy());
8878   return manage(res);
8879 }
8880 
lexmax_pw_multi_aff()8881 isl::pw_multi_aff map::lexmax_pw_multi_aff() const
8882 {
8883   auto res = isl_map_lexmax_pw_multi_aff(copy());
8884   return manage(res);
8885 }
8886 
lexmin()8887 isl::map map::lexmin() const
8888 {
8889   auto res = isl_map_lexmin(copy());
8890   return manage(res);
8891 }
8892 
lexmin_pw_multi_aff()8893 isl::pw_multi_aff map::lexmin_pw_multi_aff() const
8894 {
8895   auto res = isl_map_lexmin_pw_multi_aff(copy());
8896   return manage(res);
8897 }
8898 
lower_bound(isl::multi_pw_aff lower)8899 isl::map map::lower_bound(isl::multi_pw_aff lower) const
8900 {
8901   auto res = isl_map_lower_bound_multi_pw_aff(copy(), lower.release());
8902   return manage(res);
8903 }
8904 
lower_bound_si(isl::dim type,unsigned int pos,int value)8905 isl::map map::lower_bound_si(isl::dim type, unsigned int pos, int value) const
8906 {
8907   auto res = isl_map_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
8908   return manage(res);
8909 }
8910 
lower_bound_val(isl::dim type,unsigned int pos,isl::val value)8911 isl::map map::lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const
8912 {
8913   auto res = isl_map_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
8914   return manage(res);
8915 }
8916 
max_multi_pw_aff()8917 isl::multi_pw_aff map::max_multi_pw_aff() const
8918 {
8919   auto res = isl_map_max_multi_pw_aff(copy());
8920   return manage(res);
8921 }
8922 
min_multi_pw_aff()8923 isl::multi_pw_aff map::min_multi_pw_aff() const
8924 {
8925   auto res = isl_map_min_multi_pw_aff(copy());
8926   return manage(res);
8927 }
8928 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)8929 isl::map map::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
8930 {
8931   auto res = isl_map_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
8932   return manage(res);
8933 }
8934 
n_basic_map()8935 isl_size map::n_basic_map() const
8936 {
8937   auto res = isl_map_n_basic_map(get());
8938   return res;
8939 }
8940 
nat_universe(isl::space space)8941 isl::map map::nat_universe(isl::space space)
8942 {
8943   auto res = isl_map_nat_universe(space.release());
8944   return manage(res);
8945 }
8946 
neg()8947 isl::map map::neg() const
8948 {
8949   auto res = isl_map_neg(copy());
8950   return manage(res);
8951 }
8952 
oppose(isl::dim type1,int pos1,isl::dim type2,int pos2)8953 isl::map map::oppose(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8954 {
8955   auto res = isl_map_oppose(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8956   return manage(res);
8957 }
8958 
order_ge(isl::dim type1,int pos1,isl::dim type2,int pos2)8959 isl::map map::order_ge(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8960 {
8961   auto res = isl_map_order_ge(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8962   return manage(res);
8963 }
8964 
order_gt(isl::dim type1,int pos1,isl::dim type2,int pos2)8965 isl::map map::order_gt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8966 {
8967   auto res = isl_map_order_gt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8968   return manage(res);
8969 }
8970 
order_le(isl::dim type1,int pos1,isl::dim type2,int pos2)8971 isl::map map::order_le(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8972 {
8973   auto res = isl_map_order_le(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8974   return manage(res);
8975 }
8976 
order_lt(isl::dim type1,int pos1,isl::dim type2,int pos2)8977 isl::map map::order_lt(isl::dim type1, int pos1, isl::dim type2, int pos2) const
8978 {
8979   auto res = isl_map_order_lt(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
8980   return manage(res);
8981 }
8982 
params()8983 isl::set map::params() const
8984 {
8985   auto res = isl_map_params(copy());
8986   return manage(res);
8987 }
8988 
plain_get_val_if_fixed(isl::dim type,unsigned int pos)8989 isl::val map::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
8990 {
8991   auto res = isl_map_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
8992   return manage(res);
8993 }
8994 
plain_is_empty()8995 boolean map::plain_is_empty() const
8996 {
8997   auto res = isl_map_plain_is_empty(get());
8998   return manage(res);
8999 }
9000 
plain_is_equal(const isl::map & map2)9001 boolean map::plain_is_equal(const isl::map &map2) const
9002 {
9003   auto res = isl_map_plain_is_equal(get(), map2.get());
9004   return manage(res);
9005 }
9006 
plain_is_injective()9007 boolean map::plain_is_injective() const
9008 {
9009   auto res = isl_map_plain_is_injective(get());
9010   return manage(res);
9011 }
9012 
plain_is_single_valued()9013 boolean map::plain_is_single_valued() const
9014 {
9015   auto res = isl_map_plain_is_single_valued(get());
9016   return manage(res);
9017 }
9018 
plain_is_universe()9019 boolean map::plain_is_universe() const
9020 {
9021   auto res = isl_map_plain_is_universe(get());
9022   return manage(res);
9023 }
9024 
plain_unshifted_simple_hull()9025 isl::basic_map map::plain_unshifted_simple_hull() const
9026 {
9027   auto res = isl_map_plain_unshifted_simple_hull(copy());
9028   return manage(res);
9029 }
9030 
polyhedral_hull()9031 isl::basic_map map::polyhedral_hull() const
9032 {
9033   auto res = isl_map_polyhedral_hull(copy());
9034   return manage(res);
9035 }
9036 
preimage_domain(isl::multi_aff ma)9037 isl::map map::preimage_domain(isl::multi_aff ma) const
9038 {
9039   auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
9040   return manage(res);
9041 }
9042 
preimage_domain(isl::multi_pw_aff mpa)9043 isl::map map::preimage_domain(isl::multi_pw_aff mpa) const
9044 {
9045   auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
9046   return manage(res);
9047 }
9048 
preimage_domain(isl::pw_multi_aff pma)9049 isl::map map::preimage_domain(isl::pw_multi_aff pma) const
9050 {
9051   auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
9052   return manage(res);
9053 }
9054 
preimage_range(isl::multi_aff ma)9055 isl::map map::preimage_range(isl::multi_aff ma) const
9056 {
9057   auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
9058   return manage(res);
9059 }
9060 
preimage_range(isl::pw_multi_aff pma)9061 isl::map map::preimage_range(isl::pw_multi_aff pma) const
9062 {
9063   auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
9064   return manage(res);
9065 }
9066 
product(isl::map map2)9067 isl::map map::product(isl::map map2) const
9068 {
9069   auto res = isl_map_product(copy(), map2.release());
9070   return manage(res);
9071 }
9072 
project_out(isl::dim type,unsigned int first,unsigned int n)9073 isl::map map::project_out(isl::dim type, unsigned int first, unsigned int n) const
9074 {
9075   auto res = isl_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
9076   return manage(res);
9077 }
9078 
project_out_all_params()9079 isl::map map::project_out_all_params() const
9080 {
9081   auto res = isl_map_project_out_all_params(copy());
9082   return manage(res);
9083 }
9084 
range()9085 isl::set map::range() const
9086 {
9087   auto res = isl_map_range(copy());
9088   return manage(res);
9089 }
9090 
range_curry()9091 isl::map map::range_curry() const
9092 {
9093   auto res = isl_map_range_curry(copy());
9094   return manage(res);
9095 }
9096 
range_factor_domain()9097 isl::map map::range_factor_domain() const
9098 {
9099   auto res = isl_map_range_factor_domain(copy());
9100   return manage(res);
9101 }
9102 
range_factor_range()9103 isl::map map::range_factor_range() const
9104 {
9105   auto res = isl_map_range_factor_range(copy());
9106   return manage(res);
9107 }
9108 
range_is_wrapping()9109 boolean map::range_is_wrapping() const
9110 {
9111   auto res = isl_map_range_is_wrapping(get());
9112   return manage(res);
9113 }
9114 
range_map()9115 isl::map map::range_map() const
9116 {
9117   auto res = isl_map_range_map(copy());
9118   return manage(res);
9119 }
9120 
range_product(isl::map map2)9121 isl::map map::range_product(isl::map map2) const
9122 {
9123   auto res = isl_map_range_product(copy(), map2.release());
9124   return manage(res);
9125 }
9126 
range_reverse()9127 isl::map map::range_reverse() const
9128 {
9129   auto res = isl_map_range_reverse(copy());
9130   return manage(res);
9131 }
9132 
range_tuple_dim()9133 isl_size map::range_tuple_dim() const
9134 {
9135   auto res = isl_map_range_tuple_dim(get());
9136   return res;
9137 }
9138 
remove_dims(isl::dim type,unsigned int first,unsigned int n)9139 isl::map map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
9140 {
9141   auto res = isl_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9142   return manage(res);
9143 }
9144 
remove_divs()9145 isl::map map::remove_divs() const
9146 {
9147   auto res = isl_map_remove_divs(copy());
9148   return manage(res);
9149 }
9150 
remove_divs_involving_dims(isl::dim type,unsigned int first,unsigned int n)9151 isl::map map::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
9152 {
9153   auto res = isl_map_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9154   return manage(res);
9155 }
9156 
remove_redundancies()9157 isl::map map::remove_redundancies() const
9158 {
9159   auto res = isl_map_remove_redundancies(copy());
9160   return manage(res);
9161 }
9162 
remove_unknown_divs()9163 isl::map map::remove_unknown_divs() const
9164 {
9165   auto res = isl_map_remove_unknown_divs(copy());
9166   return manage(res);
9167 }
9168 
reset_tuple_id(isl::dim type)9169 isl::map map::reset_tuple_id(isl::dim type) const
9170 {
9171   auto res = isl_map_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
9172   return manage(res);
9173 }
9174 
reset_user()9175 isl::map map::reset_user() const
9176 {
9177   auto res = isl_map_reset_user(copy());
9178   return manage(res);
9179 }
9180 
reverse()9181 isl::map map::reverse() const
9182 {
9183   auto res = isl_map_reverse(copy());
9184   return manage(res);
9185 }
9186 
sample()9187 isl::basic_map map::sample() const
9188 {
9189   auto res = isl_map_sample(copy());
9190   return manage(res);
9191 }
9192 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)9193 isl::map map::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
9194 {
9195   auto res = isl_map_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
9196   return manage(res);
9197 }
9198 
set_tuple_id(isl::dim type,isl::id id)9199 isl::map map::set_tuple_id(isl::dim type, isl::id id) const
9200 {
9201   auto res = isl_map_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
9202   return manage(res);
9203 }
9204 
set_tuple_name(isl::dim type,const std::string & s)9205 isl::map map::set_tuple_name(isl::dim type, const std::string &s) const
9206 {
9207   auto res = isl_map_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
9208   return manage(res);
9209 }
9210 
simple_hull()9211 isl::basic_map map::simple_hull() const
9212 {
9213   auto res = isl_map_simple_hull(copy());
9214   return manage(res);
9215 }
9216 
subtract(isl::map map2)9217 isl::map map::subtract(isl::map map2) const
9218 {
9219   auto res = isl_map_subtract(copy(), map2.release());
9220   return manage(res);
9221 }
9222 
subtract_domain(isl::set dom)9223 isl::map map::subtract_domain(isl::set dom) const
9224 {
9225   auto res = isl_map_subtract_domain(copy(), dom.release());
9226   return manage(res);
9227 }
9228 
subtract_range(isl::set dom)9229 isl::map map::subtract_range(isl::set dom) const
9230 {
9231   auto res = isl_map_subtract_range(copy(), dom.release());
9232   return manage(res);
9233 }
9234 
sum(isl::map map2)9235 isl::map map::sum(isl::map map2) const
9236 {
9237   auto res = isl_map_sum(copy(), map2.release());
9238   return manage(res);
9239 }
9240 
uncurry()9241 isl::map map::uncurry() const
9242 {
9243   auto res = isl_map_uncurry(copy());
9244   return manage(res);
9245 }
9246 
unite(isl::map map2)9247 isl::map map::unite(isl::map map2) const
9248 {
9249   auto res = isl_map_union(copy(), map2.release());
9250   return manage(res);
9251 }
9252 
universe(isl::space space)9253 isl::map map::universe(isl::space space)
9254 {
9255   auto res = isl_map_universe(space.release());
9256   return manage(res);
9257 }
9258 
unshifted_simple_hull()9259 isl::basic_map map::unshifted_simple_hull() const
9260 {
9261   auto res = isl_map_unshifted_simple_hull(copy());
9262   return manage(res);
9263 }
9264 
unshifted_simple_hull_from_map_list(isl::map_list list)9265 isl::basic_map map::unshifted_simple_hull_from_map_list(isl::map_list list) const
9266 {
9267   auto res = isl_map_unshifted_simple_hull_from_map_list(copy(), list.release());
9268   return manage(res);
9269 }
9270 
upper_bound(isl::multi_pw_aff upper)9271 isl::map map::upper_bound(isl::multi_pw_aff upper) const
9272 {
9273   auto res = isl_map_upper_bound_multi_pw_aff(copy(), upper.release());
9274   return manage(res);
9275 }
9276 
upper_bound_si(isl::dim type,unsigned int pos,int value)9277 isl::map map::upper_bound_si(isl::dim type, unsigned int pos, int value) const
9278 {
9279   auto res = isl_map_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
9280   return manage(res);
9281 }
9282 
upper_bound_val(isl::dim type,unsigned int pos,isl::val value)9283 isl::map map::upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const
9284 {
9285   auto res = isl_map_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
9286   return manage(res);
9287 }
9288 
wrap()9289 isl::set map::wrap() const
9290 {
9291   auto res = isl_map_wrap(copy());
9292   return manage(res);
9293 }
9294 
zip()9295 isl::map map::zip() const
9296 {
9297   auto res = isl_map_zip(copy());
9298   return manage(res);
9299 }
9300 
9301 // implementations for isl::map_list
manage(__isl_take isl_map_list * ptr)9302 map_list manage(__isl_take isl_map_list *ptr) {
9303   return map_list(ptr);
9304 }
manage_copy(__isl_keep isl_map_list * ptr)9305 map_list manage_copy(__isl_keep isl_map_list *ptr) {
9306   ptr = isl_map_list_copy(ptr);
9307   return map_list(ptr);
9308 }
9309 
map_list()9310 map_list::map_list()
9311     : ptr(nullptr) {}
9312 
map_list(const map_list & obj)9313 map_list::map_list(const map_list &obj)
9314     : ptr(nullptr)
9315 {
9316   ptr = obj.copy();
9317 }
9318 
9319 
map_list(__isl_take isl_map_list * ptr)9320 map_list::map_list(__isl_take isl_map_list *ptr)
9321     : ptr(ptr) {}
9322 
9323 
9324 map_list &map_list::operator=(map_list obj) {
9325   std::swap(this->ptr, obj.ptr);
9326   return *this;
9327 }
9328 
~map_list()9329 map_list::~map_list() {
9330   if (ptr)
9331     isl_map_list_free(ptr);
9332 }
9333 
copy()9334 __isl_give isl_map_list *map_list::copy() const & {
9335   return isl_map_list_copy(ptr);
9336 }
9337 
get()9338 __isl_keep isl_map_list *map_list::get() const {
9339   return ptr;
9340 }
9341 
release()9342 __isl_give isl_map_list *map_list::release() {
9343   isl_map_list *tmp = ptr;
9344   ptr = nullptr;
9345   return tmp;
9346 }
9347 
is_null()9348 bool map_list::is_null() const {
9349   return ptr == nullptr;
9350 }
9351 
9352 
ctx()9353 isl::ctx map_list::ctx() const {
9354   return isl::ctx(isl_map_list_get_ctx(ptr));
9355 }
9356 
dump()9357 void map_list::dump() const {
9358   isl_map_list_dump(get());
9359 }
9360 
9361 
add(isl::map el)9362 isl::map_list map_list::add(isl::map el) const
9363 {
9364   auto res = isl_map_list_add(copy(), el.release());
9365   return manage(res);
9366 }
9367 
alloc(isl::ctx ctx,int n)9368 isl::map_list map_list::alloc(isl::ctx ctx, int n)
9369 {
9370   auto res = isl_map_list_alloc(ctx.release(), n);
9371   return manage(res);
9372 }
9373 
clear()9374 isl::map_list map_list::clear() const
9375 {
9376   auto res = isl_map_list_clear(copy());
9377   return manage(res);
9378 }
9379 
concat(isl::map_list list2)9380 isl::map_list map_list::concat(isl::map_list list2) const
9381 {
9382   auto res = isl_map_list_concat(copy(), list2.release());
9383   return manage(res);
9384 }
9385 
drop(unsigned int first,unsigned int n)9386 isl::map_list map_list::drop(unsigned int first, unsigned int n) const
9387 {
9388   auto res = isl_map_list_drop(copy(), first, n);
9389   return manage(res);
9390 }
9391 
foreach(const std::function<stat (map)> & fn)9392 stat map_list::foreach(const std::function<stat(map)> &fn) const
9393 {
9394   struct fn_data {
9395     const std::function<stat(map)> *func;
9396   } fn_data = { &fn };
9397   auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
9398     auto *data = static_cast<struct fn_data *>(arg_1);
9399     stat ret = (*data->func)(manage(arg_0));
9400     return ret.release();
9401   };
9402   auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
9403   return manage(res);
9404 }
9405 
from_map(isl::map el)9406 isl::map_list map_list::from_map(isl::map el)
9407 {
9408   auto res = isl_map_list_from_map(el.release());
9409   return manage(res);
9410 }
9411 
get_at(int index)9412 isl::map map_list::get_at(int index) const
9413 {
9414   auto res = isl_map_list_get_at(get(), index);
9415   return manage(res);
9416 }
9417 
get_map(int index)9418 isl::map map_list::get_map(int index) const
9419 {
9420   auto res = isl_map_list_get_map(get(), index);
9421   return manage(res);
9422 }
9423 
insert(unsigned int pos,isl::map el)9424 isl::map_list map_list::insert(unsigned int pos, isl::map el) const
9425 {
9426   auto res = isl_map_list_insert(copy(), pos, el.release());
9427   return manage(res);
9428 }
9429 
n_map()9430 isl_size map_list::n_map() const
9431 {
9432   auto res = isl_map_list_n_map(get());
9433   return res;
9434 }
9435 
reverse()9436 isl::map_list map_list::reverse() const
9437 {
9438   auto res = isl_map_list_reverse(copy());
9439   return manage(res);
9440 }
9441 
set_map(int index,isl::map el)9442 isl::map_list map_list::set_map(int index, isl::map el) const
9443 {
9444   auto res = isl_map_list_set_map(copy(), index, el.release());
9445   return manage(res);
9446 }
9447 
size()9448 isl_size map_list::size() const
9449 {
9450   auto res = isl_map_list_size(get());
9451   return res;
9452 }
9453 
swap(unsigned int pos1,unsigned int pos2)9454 isl::map_list map_list::swap(unsigned int pos1, unsigned int pos2) const
9455 {
9456   auto res = isl_map_list_swap(copy(), pos1, pos2);
9457   return manage(res);
9458 }
9459 
9460 // implementations for isl::mat
manage(__isl_take isl_mat * ptr)9461 mat manage(__isl_take isl_mat *ptr) {
9462   return mat(ptr);
9463 }
manage_copy(__isl_keep isl_mat * ptr)9464 mat manage_copy(__isl_keep isl_mat *ptr) {
9465   ptr = isl_mat_copy(ptr);
9466   return mat(ptr);
9467 }
9468 
mat()9469 mat::mat()
9470     : ptr(nullptr) {}
9471 
mat(const mat & obj)9472 mat::mat(const mat &obj)
9473     : ptr(nullptr)
9474 {
9475   ptr = obj.copy();
9476 }
9477 
9478 
mat(__isl_take isl_mat * ptr)9479 mat::mat(__isl_take isl_mat *ptr)
9480     : ptr(ptr) {}
9481 
9482 
9483 mat &mat::operator=(mat obj) {
9484   std::swap(this->ptr, obj.ptr);
9485   return *this;
9486 }
9487 
~mat()9488 mat::~mat() {
9489   if (ptr)
9490     isl_mat_free(ptr);
9491 }
9492 
copy()9493 __isl_give isl_mat *mat::copy() const & {
9494   return isl_mat_copy(ptr);
9495 }
9496 
get()9497 __isl_keep isl_mat *mat::get() const {
9498   return ptr;
9499 }
9500 
release()9501 __isl_give isl_mat *mat::release() {
9502   isl_mat *tmp = ptr;
9503   ptr = nullptr;
9504   return tmp;
9505 }
9506 
is_null()9507 bool mat::is_null() const {
9508   return ptr == nullptr;
9509 }
9510 
9511 
ctx()9512 isl::ctx mat::ctx() const {
9513   return isl::ctx(isl_mat_get_ctx(ptr));
9514 }
9515 
dump()9516 void mat::dump() const {
9517   isl_mat_dump(get());
9518 }
9519 
9520 
add_rows(unsigned int n)9521 isl::mat mat::add_rows(unsigned int n) const
9522 {
9523   auto res = isl_mat_add_rows(copy(), n);
9524   return manage(res);
9525 }
9526 
add_zero_cols(unsigned int n)9527 isl::mat mat::add_zero_cols(unsigned int n) const
9528 {
9529   auto res = isl_mat_add_zero_cols(copy(), n);
9530   return manage(res);
9531 }
9532 
add_zero_rows(unsigned int n)9533 isl::mat mat::add_zero_rows(unsigned int n) const
9534 {
9535   auto res = isl_mat_add_zero_rows(copy(), n);
9536   return manage(res);
9537 }
9538 
aff_direct_sum(isl::mat right)9539 isl::mat mat::aff_direct_sum(isl::mat right) const
9540 {
9541   auto res = isl_mat_aff_direct_sum(copy(), right.release());
9542   return manage(res);
9543 }
9544 
alloc(isl::ctx ctx,unsigned int n_row,unsigned int n_col)9545 isl::mat mat::alloc(isl::ctx ctx, unsigned int n_row, unsigned int n_col)
9546 {
9547   auto res = isl_mat_alloc(ctx.release(), n_row, n_col);
9548   return manage(res);
9549 }
9550 
cols()9551 isl_size mat::cols() const
9552 {
9553   auto res = isl_mat_cols(get());
9554   return res;
9555 }
9556 
concat(isl::mat bot)9557 isl::mat mat::concat(isl::mat bot) const
9558 {
9559   auto res = isl_mat_concat(copy(), bot.release());
9560   return manage(res);
9561 }
9562 
diagonal(isl::mat mat2)9563 isl::mat mat::diagonal(isl::mat mat2) const
9564 {
9565   auto res = isl_mat_diagonal(copy(), mat2.release());
9566   return manage(res);
9567 }
9568 
drop_cols(unsigned int col,unsigned int n)9569 isl::mat mat::drop_cols(unsigned int col, unsigned int n) const
9570 {
9571   auto res = isl_mat_drop_cols(copy(), col, n);
9572   return manage(res);
9573 }
9574 
drop_rows(unsigned int row,unsigned int n)9575 isl::mat mat::drop_rows(unsigned int row, unsigned int n) const
9576 {
9577   auto res = isl_mat_drop_rows(copy(), row, n);
9578   return manage(res);
9579 }
9580 
from_row_vec(isl::vec vec)9581 isl::mat mat::from_row_vec(isl::vec vec)
9582 {
9583   auto res = isl_mat_from_row_vec(vec.release());
9584   return manage(res);
9585 }
9586 
get_element_val(int row,int col)9587 isl::val mat::get_element_val(int row, int col) const
9588 {
9589   auto res = isl_mat_get_element_val(get(), row, col);
9590   return manage(res);
9591 }
9592 
has_linearly_independent_rows(const isl::mat & mat2)9593 boolean mat::has_linearly_independent_rows(const isl::mat &mat2) const
9594 {
9595   auto res = isl_mat_has_linearly_independent_rows(get(), mat2.get());
9596   return manage(res);
9597 }
9598 
initial_non_zero_cols()9599 int mat::initial_non_zero_cols() const
9600 {
9601   auto res = isl_mat_initial_non_zero_cols(get());
9602   return res;
9603 }
9604 
insert_cols(unsigned int col,unsigned int n)9605 isl::mat mat::insert_cols(unsigned int col, unsigned int n) const
9606 {
9607   auto res = isl_mat_insert_cols(copy(), col, n);
9608   return manage(res);
9609 }
9610 
insert_rows(unsigned int row,unsigned int n)9611 isl::mat mat::insert_rows(unsigned int row, unsigned int n) const
9612 {
9613   auto res = isl_mat_insert_rows(copy(), row, n);
9614   return manage(res);
9615 }
9616 
insert_zero_cols(unsigned int first,unsigned int n)9617 isl::mat mat::insert_zero_cols(unsigned int first, unsigned int n) const
9618 {
9619   auto res = isl_mat_insert_zero_cols(copy(), first, n);
9620   return manage(res);
9621 }
9622 
insert_zero_rows(unsigned int row,unsigned int n)9623 isl::mat mat::insert_zero_rows(unsigned int row, unsigned int n) const
9624 {
9625   auto res = isl_mat_insert_zero_rows(copy(), row, n);
9626   return manage(res);
9627 }
9628 
inverse_product(isl::mat right)9629 isl::mat mat::inverse_product(isl::mat right) const
9630 {
9631   auto res = isl_mat_inverse_product(copy(), right.release());
9632   return manage(res);
9633 }
9634 
is_equal(const isl::mat & mat2)9635 boolean mat::is_equal(const isl::mat &mat2) const
9636 {
9637   auto res = isl_mat_is_equal(get(), mat2.get());
9638   return manage(res);
9639 }
9640 
lin_to_aff()9641 isl::mat mat::lin_to_aff() const
9642 {
9643   auto res = isl_mat_lin_to_aff(copy());
9644   return manage(res);
9645 }
9646 
move_cols(unsigned int dst_col,unsigned int src_col,unsigned int n)9647 isl::mat mat::move_cols(unsigned int dst_col, unsigned int src_col, unsigned int n) const
9648 {
9649   auto res = isl_mat_move_cols(copy(), dst_col, src_col, n);
9650   return manage(res);
9651 }
9652 
normalize()9653 isl::mat mat::normalize() const
9654 {
9655   auto res = isl_mat_normalize(copy());
9656   return manage(res);
9657 }
9658 
normalize_row(int row)9659 isl::mat mat::normalize_row(int row) const
9660 {
9661   auto res = isl_mat_normalize_row(copy(), row);
9662   return manage(res);
9663 }
9664 
product(isl::mat right)9665 isl::mat mat::product(isl::mat right) const
9666 {
9667   auto res = isl_mat_product(copy(), right.release());
9668   return manage(res);
9669 }
9670 
rank()9671 isl_size mat::rank() const
9672 {
9673   auto res = isl_mat_rank(get());
9674   return res;
9675 }
9676 
right_inverse()9677 isl::mat mat::right_inverse() const
9678 {
9679   auto res = isl_mat_right_inverse(copy());
9680   return manage(res);
9681 }
9682 
right_kernel()9683 isl::mat mat::right_kernel() const
9684 {
9685   auto res = isl_mat_right_kernel(copy());
9686   return manage(res);
9687 }
9688 
row_basis()9689 isl::mat mat::row_basis() const
9690 {
9691   auto res = isl_mat_row_basis(copy());
9692   return manage(res);
9693 }
9694 
row_basis_extension(isl::mat mat2)9695 isl::mat mat::row_basis_extension(isl::mat mat2) const
9696 {
9697   auto res = isl_mat_row_basis_extension(copy(), mat2.release());
9698   return manage(res);
9699 }
9700 
rows()9701 isl_size mat::rows() const
9702 {
9703   auto res = isl_mat_rows(get());
9704   return res;
9705 }
9706 
set_element_si(int row,int col,int v)9707 isl::mat mat::set_element_si(int row, int col, int v) const
9708 {
9709   auto res = isl_mat_set_element_si(copy(), row, col, v);
9710   return manage(res);
9711 }
9712 
set_element_val(int row,int col,isl::val v)9713 isl::mat mat::set_element_val(int row, int col, isl::val v) const
9714 {
9715   auto res = isl_mat_set_element_val(copy(), row, col, v.release());
9716   return manage(res);
9717 }
9718 
swap_cols(unsigned int i,unsigned int j)9719 isl::mat mat::swap_cols(unsigned int i, unsigned int j) const
9720 {
9721   auto res = isl_mat_swap_cols(copy(), i, j);
9722   return manage(res);
9723 }
9724 
swap_rows(unsigned int i,unsigned int j)9725 isl::mat mat::swap_rows(unsigned int i, unsigned int j) const
9726 {
9727   auto res = isl_mat_swap_rows(copy(), i, j);
9728   return manage(res);
9729 }
9730 
transpose()9731 isl::mat mat::transpose() const
9732 {
9733   auto res = isl_mat_transpose(copy());
9734   return manage(res);
9735 }
9736 
unimodular_complete(int row)9737 isl::mat mat::unimodular_complete(int row) const
9738 {
9739   auto res = isl_mat_unimodular_complete(copy(), row);
9740   return manage(res);
9741 }
9742 
vec_concat(isl::vec bot)9743 isl::mat mat::vec_concat(isl::vec bot) const
9744 {
9745   auto res = isl_mat_vec_concat(copy(), bot.release());
9746   return manage(res);
9747 }
9748 
vec_inverse_product(isl::vec vec)9749 isl::vec mat::vec_inverse_product(isl::vec vec) const
9750 {
9751   auto res = isl_mat_vec_inverse_product(copy(), vec.release());
9752   return manage(res);
9753 }
9754 
vec_product(isl::vec vec)9755 isl::vec mat::vec_product(isl::vec vec) const
9756 {
9757   auto res = isl_mat_vec_product(copy(), vec.release());
9758   return manage(res);
9759 }
9760 
9761 // implementations for isl::multi_aff
manage(__isl_take isl_multi_aff * ptr)9762 multi_aff manage(__isl_take isl_multi_aff *ptr) {
9763   return multi_aff(ptr);
9764 }
manage_copy(__isl_keep isl_multi_aff * ptr)9765 multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
9766   ptr = isl_multi_aff_copy(ptr);
9767   return multi_aff(ptr);
9768 }
9769 
multi_aff()9770 multi_aff::multi_aff()
9771     : ptr(nullptr) {}
9772 
multi_aff(const multi_aff & obj)9773 multi_aff::multi_aff(const multi_aff &obj)
9774     : ptr(nullptr)
9775 {
9776   ptr = obj.copy();
9777 }
9778 
9779 
multi_aff(__isl_take isl_multi_aff * ptr)9780 multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
9781     : ptr(ptr) {}
9782 
multi_aff(isl::aff aff)9783 multi_aff::multi_aff(isl::aff aff)
9784 {
9785   auto res = isl_multi_aff_from_aff(aff.release());
9786   ptr = res;
9787 }
multi_aff(isl::space space,isl::aff_list list)9788 multi_aff::multi_aff(isl::space space, isl::aff_list list)
9789 {
9790   auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
9791   ptr = res;
9792 }
multi_aff(isl::ctx ctx,const std::string & str)9793 multi_aff::multi_aff(isl::ctx ctx, const std::string &str)
9794 {
9795   auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
9796   ptr = res;
9797 }
9798 
9799 multi_aff &multi_aff::operator=(multi_aff obj) {
9800   std::swap(this->ptr, obj.ptr);
9801   return *this;
9802 }
9803 
~multi_aff()9804 multi_aff::~multi_aff() {
9805   if (ptr)
9806     isl_multi_aff_free(ptr);
9807 }
9808 
copy()9809 __isl_give isl_multi_aff *multi_aff::copy() const & {
9810   return isl_multi_aff_copy(ptr);
9811 }
9812 
get()9813 __isl_keep isl_multi_aff *multi_aff::get() const {
9814   return ptr;
9815 }
9816 
release()9817 __isl_give isl_multi_aff *multi_aff::release() {
9818   isl_multi_aff *tmp = ptr;
9819   ptr = nullptr;
9820   return tmp;
9821 }
9822 
is_null()9823 bool multi_aff::is_null() const {
9824   return ptr == nullptr;
9825 }
9826 
9827 
ctx()9828 isl::ctx multi_aff::ctx() const {
9829   return isl::ctx(isl_multi_aff_get_ctx(ptr));
9830 }
9831 
dump()9832 void multi_aff::dump() const {
9833   isl_multi_aff_dump(get());
9834 }
9835 
9836 
add(isl::multi_aff multi2)9837 isl::multi_aff multi_aff::add(isl::multi_aff multi2) const
9838 {
9839   auto res = isl_multi_aff_add(copy(), multi2.release());
9840   return manage(res);
9841 }
9842 
add_constant(isl::multi_val mv)9843 isl::multi_aff multi_aff::add_constant(isl::multi_val mv) const
9844 {
9845   auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
9846   return manage(res);
9847 }
9848 
add_constant(isl::val v)9849 isl::multi_aff multi_aff::add_constant(isl::val v) const
9850 {
9851   auto res = isl_multi_aff_add_constant_val(copy(), v.release());
9852   return manage(res);
9853 }
9854 
add_dims(isl::dim type,unsigned int n)9855 isl::multi_aff multi_aff::add_dims(isl::dim type, unsigned int n) const
9856 {
9857   auto res = isl_multi_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
9858   return manage(res);
9859 }
9860 
align_params(isl::space model)9861 isl::multi_aff multi_aff::align_params(isl::space model) const
9862 {
9863   auto res = isl_multi_aff_align_params(copy(), model.release());
9864   return manage(res);
9865 }
9866 
bind(isl::multi_id tuple)9867 isl::basic_set multi_aff::bind(isl::multi_id tuple) const
9868 {
9869   auto res = isl_multi_aff_bind(copy(), tuple.release());
9870   return manage(res);
9871 }
9872 
bind_domain(isl::multi_id tuple)9873 isl::multi_aff multi_aff::bind_domain(isl::multi_id tuple) const
9874 {
9875   auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
9876   return manage(res);
9877 }
9878 
bind_domain_wrapped_domain(isl::multi_id tuple)9879 isl::multi_aff multi_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
9880 {
9881   auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
9882   return manage(res);
9883 }
9884 
dim(isl::dim type)9885 isl_size multi_aff::dim(isl::dim type) const
9886 {
9887   auto res = isl_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
9888   return res;
9889 }
9890 
domain_map(isl::space space)9891 isl::multi_aff multi_aff::domain_map(isl::space space)
9892 {
9893   auto res = isl_multi_aff_domain_map(space.release());
9894   return manage(res);
9895 }
9896 
drop_dims(isl::dim type,unsigned int first,unsigned int n)9897 isl::multi_aff multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
9898 {
9899   auto res = isl_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
9900   return manage(res);
9901 }
9902 
factor_range()9903 isl::multi_aff multi_aff::factor_range() const
9904 {
9905   auto res = isl_multi_aff_factor_range(copy());
9906   return manage(res);
9907 }
9908 
find_dim_by_id(isl::dim type,const isl::id & id)9909 int multi_aff::find_dim_by_id(isl::dim type, const isl::id &id) const
9910 {
9911   auto res = isl_multi_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
9912   return res;
9913 }
9914 
find_dim_by_name(isl::dim type,const std::string & name)9915 int multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
9916 {
9917   auto res = isl_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
9918   return res;
9919 }
9920 
flat_range_product(isl::multi_aff multi2)9921 isl::multi_aff multi_aff::flat_range_product(isl::multi_aff multi2) const
9922 {
9923   auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
9924   return manage(res);
9925 }
9926 
flatten_domain()9927 isl::multi_aff multi_aff::flatten_domain() const
9928 {
9929   auto res = isl_multi_aff_flatten_domain(copy());
9930   return manage(res);
9931 }
9932 
flatten_range()9933 isl::multi_aff multi_aff::flatten_range() const
9934 {
9935   auto res = isl_multi_aff_flatten_range(copy());
9936   return manage(res);
9937 }
9938 
floor()9939 isl::multi_aff multi_aff::floor() const
9940 {
9941   auto res = isl_multi_aff_floor(copy());
9942   return manage(res);
9943 }
9944 
from_range()9945 isl::multi_aff multi_aff::from_range() const
9946 {
9947   auto res = isl_multi_aff_from_range(copy());
9948   return manage(res);
9949 }
9950 
get_aff(int pos)9951 isl::aff multi_aff::get_aff(int pos) const
9952 {
9953   auto res = isl_multi_aff_get_aff(get(), pos);
9954   return manage(res);
9955 }
9956 
get_at(int pos)9957 isl::aff multi_aff::get_at(int pos) const
9958 {
9959   auto res = isl_multi_aff_get_at(get(), pos);
9960   return manage(res);
9961 }
9962 
get_constant_multi_val()9963 isl::multi_val multi_aff::get_constant_multi_val() const
9964 {
9965   auto res = isl_multi_aff_get_constant_multi_val(get());
9966   return manage(res);
9967 }
9968 
get_dim_id(isl::dim type,unsigned int pos)9969 isl::id multi_aff::get_dim_id(isl::dim type, unsigned int pos) const
9970 {
9971   auto res = isl_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
9972   return manage(res);
9973 }
9974 
get_domain_space()9975 isl::space multi_aff::get_domain_space() const
9976 {
9977   auto res = isl_multi_aff_get_domain_space(get());
9978   return manage(res);
9979 }
9980 
get_list()9981 isl::aff_list multi_aff::get_list() const
9982 {
9983   auto res = isl_multi_aff_get_list(get());
9984   return manage(res);
9985 }
9986 
get_space()9987 isl::space multi_aff::get_space() const
9988 {
9989   auto res = isl_multi_aff_get_space(get());
9990   return manage(res);
9991 }
9992 
get_tuple_id(isl::dim type)9993 isl::id multi_aff::get_tuple_id(isl::dim type) const
9994 {
9995   auto res = isl_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
9996   return manage(res);
9997 }
9998 
get_tuple_name(isl::dim type)9999 std::string multi_aff::get_tuple_name(isl::dim type) const
10000 {
10001   auto res = isl_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10002   std::string tmp(res);
10003   return tmp;
10004 }
10005 
gist(isl::set context)10006 isl::multi_aff multi_aff::gist(isl::set context) const
10007 {
10008   auto res = isl_multi_aff_gist(copy(), context.release());
10009   return manage(res);
10010 }
10011 
gist_params(isl::set context)10012 isl::multi_aff multi_aff::gist_params(isl::set context) const
10013 {
10014   auto res = isl_multi_aff_gist_params(copy(), context.release());
10015   return manage(res);
10016 }
10017 
has_tuple_id(isl::dim type)10018 boolean multi_aff::has_tuple_id(isl::dim type) const
10019 {
10020   auto res = isl_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10021   return manage(res);
10022 }
10023 
identity(isl::space space)10024 isl::multi_aff multi_aff::identity(isl::space space)
10025 {
10026   auto res = isl_multi_aff_identity(space.release());
10027   return manage(res);
10028 }
10029 
identity()10030 isl::multi_aff multi_aff::identity() const
10031 {
10032   auto res = isl_multi_aff_identity_multi_aff(copy());
10033   return manage(res);
10034 }
10035 
identity_on_domain(isl::space space)10036 isl::multi_aff multi_aff::identity_on_domain(isl::space space)
10037 {
10038   auto res = isl_multi_aff_identity_on_domain_space(space.release());
10039   return manage(res);
10040 }
10041 
insert_dims(isl::dim type,unsigned int first,unsigned int n)10042 isl::multi_aff multi_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
10043 {
10044   auto res = isl_multi_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10045   return manage(res);
10046 }
10047 
insert_domain(isl::space domain)10048 isl::multi_aff multi_aff::insert_domain(isl::space domain) const
10049 {
10050   auto res = isl_multi_aff_insert_domain(copy(), domain.release());
10051   return manage(res);
10052 }
10053 
involves_dims(isl::dim type,unsigned int first,unsigned int n)10054 boolean multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
10055 {
10056   auto res = isl_multi_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
10057   return manage(res);
10058 }
10059 
involves_locals()10060 boolean multi_aff::involves_locals() const
10061 {
10062   auto res = isl_multi_aff_involves_locals(get());
10063   return manage(res);
10064 }
10065 
involves_nan()10066 boolean multi_aff::involves_nan() const
10067 {
10068   auto res = isl_multi_aff_involves_nan(get());
10069   return manage(res);
10070 }
10071 
lex_ge_set(isl::multi_aff ma2)10072 isl::set multi_aff::lex_ge_set(isl::multi_aff ma2) const
10073 {
10074   auto res = isl_multi_aff_lex_ge_set(copy(), ma2.release());
10075   return manage(res);
10076 }
10077 
lex_gt_set(isl::multi_aff ma2)10078 isl::set multi_aff::lex_gt_set(isl::multi_aff ma2) const
10079 {
10080   auto res = isl_multi_aff_lex_gt_set(copy(), ma2.release());
10081   return manage(res);
10082 }
10083 
lex_le_set(isl::multi_aff ma2)10084 isl::set multi_aff::lex_le_set(isl::multi_aff ma2) const
10085 {
10086   auto res = isl_multi_aff_lex_le_set(copy(), ma2.release());
10087   return manage(res);
10088 }
10089 
lex_lt_set(isl::multi_aff ma2)10090 isl::set multi_aff::lex_lt_set(isl::multi_aff ma2) const
10091 {
10092   auto res = isl_multi_aff_lex_lt_set(copy(), ma2.release());
10093   return manage(res);
10094 }
10095 
mod_multi_val(isl::multi_val mv)10096 isl::multi_aff multi_aff::mod_multi_val(isl::multi_val mv) const
10097 {
10098   auto res = isl_multi_aff_mod_multi_val(copy(), mv.release());
10099   return manage(res);
10100 }
10101 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)10102 isl::multi_aff multi_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
10103 {
10104   auto res = isl_multi_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
10105   return manage(res);
10106 }
10107 
multi_val_on_space(isl::space space,isl::multi_val mv)10108 isl::multi_aff multi_aff::multi_val_on_space(isl::space space, isl::multi_val mv)
10109 {
10110   auto res = isl_multi_aff_multi_val_on_space(space.release(), mv.release());
10111   return manage(res);
10112 }
10113 
neg()10114 isl::multi_aff multi_aff::neg() const
10115 {
10116   auto res = isl_multi_aff_neg(copy());
10117   return manage(res);
10118 }
10119 
plain_cmp(const isl::multi_aff & multi2)10120 int multi_aff::plain_cmp(const isl::multi_aff &multi2) const
10121 {
10122   auto res = isl_multi_aff_plain_cmp(get(), multi2.get());
10123   return res;
10124 }
10125 
plain_is_equal(const isl::multi_aff & multi2)10126 boolean multi_aff::plain_is_equal(const isl::multi_aff &multi2) const
10127 {
10128   auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
10129   return manage(res);
10130 }
10131 
product(isl::multi_aff multi2)10132 isl::multi_aff multi_aff::product(isl::multi_aff multi2) const
10133 {
10134   auto res = isl_multi_aff_product(copy(), multi2.release());
10135   return manage(res);
10136 }
10137 
project_domain_on_params()10138 isl::multi_aff multi_aff::project_domain_on_params() const
10139 {
10140   auto res = isl_multi_aff_project_domain_on_params(copy());
10141   return manage(res);
10142 }
10143 
project_out_map(isl::space space,isl::dim type,unsigned int first,unsigned int n)10144 isl::multi_aff multi_aff::project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n)
10145 {
10146   auto res = isl_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
10147   return manage(res);
10148 }
10149 
pullback(isl::multi_aff ma2)10150 isl::multi_aff multi_aff::pullback(isl::multi_aff ma2) const
10151 {
10152   auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
10153   return manage(res);
10154 }
10155 
range_factor_domain()10156 isl::multi_aff multi_aff::range_factor_domain() const
10157 {
10158   auto res = isl_multi_aff_range_factor_domain(copy());
10159   return manage(res);
10160 }
10161 
range_factor_range()10162 isl::multi_aff multi_aff::range_factor_range() const
10163 {
10164   auto res = isl_multi_aff_range_factor_range(copy());
10165   return manage(res);
10166 }
10167 
range_is_wrapping()10168 boolean multi_aff::range_is_wrapping() const
10169 {
10170   auto res = isl_multi_aff_range_is_wrapping(get());
10171   return manage(res);
10172 }
10173 
range_map(isl::space space)10174 isl::multi_aff multi_aff::range_map(isl::space space)
10175 {
10176   auto res = isl_multi_aff_range_map(space.release());
10177   return manage(res);
10178 }
10179 
range_product(isl::multi_aff multi2)10180 isl::multi_aff multi_aff::range_product(isl::multi_aff multi2) const
10181 {
10182   auto res = isl_multi_aff_range_product(copy(), multi2.release());
10183   return manage(res);
10184 }
10185 
range_splice(unsigned int pos,isl::multi_aff multi2)10186 isl::multi_aff multi_aff::range_splice(unsigned int pos, isl::multi_aff multi2) const
10187 {
10188   auto res = isl_multi_aff_range_splice(copy(), pos, multi2.release());
10189   return manage(res);
10190 }
10191 
reset_tuple_id(isl::dim type)10192 isl::multi_aff multi_aff::reset_tuple_id(isl::dim type) const
10193 {
10194   auto res = isl_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
10195   return manage(res);
10196 }
10197 
reset_user()10198 isl::multi_aff multi_aff::reset_user() const
10199 {
10200   auto res = isl_multi_aff_reset_user(copy());
10201   return manage(res);
10202 }
10203 
scale(isl::multi_val mv)10204 isl::multi_aff multi_aff::scale(isl::multi_val mv) const
10205 {
10206   auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
10207   return manage(res);
10208 }
10209 
scale(isl::val v)10210 isl::multi_aff multi_aff::scale(isl::val v) const
10211 {
10212   auto res = isl_multi_aff_scale_val(copy(), v.release());
10213   return manage(res);
10214 }
10215 
scale_down(isl::multi_val mv)10216 isl::multi_aff multi_aff::scale_down(isl::multi_val mv) const
10217 {
10218   auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
10219   return manage(res);
10220 }
10221 
scale_down(isl::val v)10222 isl::multi_aff multi_aff::scale_down(isl::val v) const
10223 {
10224   auto res = isl_multi_aff_scale_down_val(copy(), v.release());
10225   return manage(res);
10226 }
10227 
set_aff(int pos,isl::aff el)10228 isl::multi_aff multi_aff::set_aff(int pos, isl::aff el) const
10229 {
10230   auto res = isl_multi_aff_set_aff(copy(), pos, el.release());
10231   return manage(res);
10232 }
10233 
set_at(int pos,isl::aff el)10234 isl::multi_aff multi_aff::set_at(int pos, isl::aff el) const
10235 {
10236   auto res = isl_multi_aff_set_at(copy(), pos, el.release());
10237   return manage(res);
10238 }
10239 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)10240 isl::multi_aff multi_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
10241 {
10242   auto res = isl_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
10243   return manage(res);
10244 }
10245 
set_tuple_id(isl::dim type,isl::id id)10246 isl::multi_aff multi_aff::set_tuple_id(isl::dim type, isl::id id) const
10247 {
10248   auto res = isl_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
10249   return manage(res);
10250 }
10251 
set_tuple_name(isl::dim type,const std::string & s)10252 isl::multi_aff multi_aff::set_tuple_name(isl::dim type, const std::string &s) const
10253 {
10254   auto res = isl_multi_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
10255   return manage(res);
10256 }
10257 
size()10258 isl_size multi_aff::size() const
10259 {
10260   auto res = isl_multi_aff_size(get());
10261   return res;
10262 }
10263 
splice(unsigned int in_pos,unsigned int out_pos,isl::multi_aff multi2)10264 isl::multi_aff multi_aff::splice(unsigned int in_pos, unsigned int out_pos, isl::multi_aff multi2) const
10265 {
10266   auto res = isl_multi_aff_splice(copy(), in_pos, out_pos, multi2.release());
10267   return manage(res);
10268 }
10269 
sub(isl::multi_aff multi2)10270 isl::multi_aff multi_aff::sub(isl::multi_aff multi2) const
10271 {
10272   auto res = isl_multi_aff_sub(copy(), multi2.release());
10273   return manage(res);
10274 }
10275 
unbind_params_insert_domain(isl::multi_id domain)10276 isl::multi_aff multi_aff::unbind_params_insert_domain(isl::multi_id domain) const
10277 {
10278   auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
10279   return manage(res);
10280 }
10281 
zero(isl::space space)10282 isl::multi_aff multi_aff::zero(isl::space space)
10283 {
10284   auto res = isl_multi_aff_zero(space.release());
10285   return manage(res);
10286 }
10287 
10288 // implementations for isl::multi_id
manage(__isl_take isl_multi_id * ptr)10289 multi_id manage(__isl_take isl_multi_id *ptr) {
10290   return multi_id(ptr);
10291 }
manage_copy(__isl_keep isl_multi_id * ptr)10292 multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
10293   ptr = isl_multi_id_copy(ptr);
10294   return multi_id(ptr);
10295 }
10296 
multi_id()10297 multi_id::multi_id()
10298     : ptr(nullptr) {}
10299 
multi_id(const multi_id & obj)10300 multi_id::multi_id(const multi_id &obj)
10301     : ptr(nullptr)
10302 {
10303   ptr = obj.copy();
10304 }
10305 
10306 
multi_id(__isl_take isl_multi_id * ptr)10307 multi_id::multi_id(__isl_take isl_multi_id *ptr)
10308     : ptr(ptr) {}
10309 
multi_id(isl::space space,isl::id_list list)10310 multi_id::multi_id(isl::space space, isl::id_list list)
10311 {
10312   auto res = isl_multi_id_from_id_list(space.release(), list.release());
10313   ptr = res;
10314 }
multi_id(isl::ctx ctx,const std::string & str)10315 multi_id::multi_id(isl::ctx ctx, const std::string &str)
10316 {
10317   auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
10318   ptr = res;
10319 }
10320 
10321 multi_id &multi_id::operator=(multi_id obj) {
10322   std::swap(this->ptr, obj.ptr);
10323   return *this;
10324 }
10325 
~multi_id()10326 multi_id::~multi_id() {
10327   if (ptr)
10328     isl_multi_id_free(ptr);
10329 }
10330 
copy()10331 __isl_give isl_multi_id *multi_id::copy() const & {
10332   return isl_multi_id_copy(ptr);
10333 }
10334 
get()10335 __isl_keep isl_multi_id *multi_id::get() const {
10336   return ptr;
10337 }
10338 
release()10339 __isl_give isl_multi_id *multi_id::release() {
10340   isl_multi_id *tmp = ptr;
10341   ptr = nullptr;
10342   return tmp;
10343 }
10344 
is_null()10345 bool multi_id::is_null() const {
10346   return ptr == nullptr;
10347 }
10348 
10349 
ctx()10350 isl::ctx multi_id::ctx() const {
10351   return isl::ctx(isl_multi_id_get_ctx(ptr));
10352 }
10353 
dump()10354 void multi_id::dump() const {
10355   isl_multi_id_dump(get());
10356 }
10357 
10358 
align_params(isl::space model)10359 isl::multi_id multi_id::align_params(isl::space model) const
10360 {
10361   auto res = isl_multi_id_align_params(copy(), model.release());
10362   return manage(res);
10363 }
10364 
factor_range()10365 isl::multi_id multi_id::factor_range() const
10366 {
10367   auto res = isl_multi_id_factor_range(copy());
10368   return manage(res);
10369 }
10370 
flat_range_product(isl::multi_id multi2)10371 isl::multi_id multi_id::flat_range_product(isl::multi_id multi2) const
10372 {
10373   auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
10374   return manage(res);
10375 }
10376 
flatten_range()10377 isl::multi_id multi_id::flatten_range() const
10378 {
10379   auto res = isl_multi_id_flatten_range(copy());
10380   return manage(res);
10381 }
10382 
from_range()10383 isl::multi_id multi_id::from_range() const
10384 {
10385   auto res = isl_multi_id_from_range(copy());
10386   return manage(res);
10387 }
10388 
get_at(int pos)10389 isl::id multi_id::get_at(int pos) const
10390 {
10391   auto res = isl_multi_id_get_at(get(), pos);
10392   return manage(res);
10393 }
10394 
get_domain_space()10395 isl::space multi_id::get_domain_space() const
10396 {
10397   auto res = isl_multi_id_get_domain_space(get());
10398   return manage(res);
10399 }
10400 
get_id(int pos)10401 isl::id multi_id::get_id(int pos) const
10402 {
10403   auto res = isl_multi_id_get_id(get(), pos);
10404   return manage(res);
10405 }
10406 
get_list()10407 isl::id_list multi_id::get_list() const
10408 {
10409   auto res = isl_multi_id_get_list(get());
10410   return manage(res);
10411 }
10412 
get_space()10413 isl::space multi_id::get_space() const
10414 {
10415   auto res = isl_multi_id_get_space(get());
10416   return manage(res);
10417 }
10418 
plain_is_equal(const isl::multi_id & multi2)10419 boolean multi_id::plain_is_equal(const isl::multi_id &multi2) const
10420 {
10421   auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
10422   return manage(res);
10423 }
10424 
range_factor_domain()10425 isl::multi_id multi_id::range_factor_domain() const
10426 {
10427   auto res = isl_multi_id_range_factor_domain(copy());
10428   return manage(res);
10429 }
10430 
range_factor_range()10431 isl::multi_id multi_id::range_factor_range() const
10432 {
10433   auto res = isl_multi_id_range_factor_range(copy());
10434   return manage(res);
10435 }
10436 
range_is_wrapping()10437 boolean multi_id::range_is_wrapping() const
10438 {
10439   auto res = isl_multi_id_range_is_wrapping(get());
10440   return manage(res);
10441 }
10442 
range_product(isl::multi_id multi2)10443 isl::multi_id multi_id::range_product(isl::multi_id multi2) const
10444 {
10445   auto res = isl_multi_id_range_product(copy(), multi2.release());
10446   return manage(res);
10447 }
10448 
range_splice(unsigned int pos,isl::multi_id multi2)10449 isl::multi_id multi_id::range_splice(unsigned int pos, isl::multi_id multi2) const
10450 {
10451   auto res = isl_multi_id_range_splice(copy(), pos, multi2.release());
10452   return manage(res);
10453 }
10454 
reset_user()10455 isl::multi_id multi_id::reset_user() const
10456 {
10457   auto res = isl_multi_id_reset_user(copy());
10458   return manage(res);
10459 }
10460 
set_at(int pos,isl::id el)10461 isl::multi_id multi_id::set_at(int pos, isl::id el) const
10462 {
10463   auto res = isl_multi_id_set_at(copy(), pos, el.release());
10464   return manage(res);
10465 }
10466 
set_id(int pos,isl::id el)10467 isl::multi_id multi_id::set_id(int pos, isl::id el) const
10468 {
10469   auto res = isl_multi_id_set_id(copy(), pos, el.release());
10470   return manage(res);
10471 }
10472 
size()10473 isl_size multi_id::size() const
10474 {
10475   auto res = isl_multi_id_size(get());
10476   return res;
10477 }
10478 
10479 // implementations for isl::multi_pw_aff
manage(__isl_take isl_multi_pw_aff * ptr)10480 multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
10481   return multi_pw_aff(ptr);
10482 }
manage_copy(__isl_keep isl_multi_pw_aff * ptr)10483 multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
10484   ptr = isl_multi_pw_aff_copy(ptr);
10485   return multi_pw_aff(ptr);
10486 }
10487 
multi_pw_aff()10488 multi_pw_aff::multi_pw_aff()
10489     : ptr(nullptr) {}
10490 
multi_pw_aff(const multi_pw_aff & obj)10491 multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
10492     : ptr(nullptr)
10493 {
10494   ptr = obj.copy();
10495 }
10496 
10497 
multi_pw_aff(__isl_take isl_multi_pw_aff * ptr)10498 multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
10499     : ptr(ptr) {}
10500 
multi_pw_aff(isl::aff aff)10501 multi_pw_aff::multi_pw_aff(isl::aff aff)
10502 {
10503   auto res = isl_multi_pw_aff_from_aff(aff.release());
10504   ptr = res;
10505 }
multi_pw_aff(isl::multi_aff ma)10506 multi_pw_aff::multi_pw_aff(isl::multi_aff ma)
10507 {
10508   auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
10509   ptr = res;
10510 }
multi_pw_aff(isl::pw_aff pa)10511 multi_pw_aff::multi_pw_aff(isl::pw_aff pa)
10512 {
10513   auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
10514   ptr = res;
10515 }
multi_pw_aff(isl::space space,isl::pw_aff_list list)10516 multi_pw_aff::multi_pw_aff(isl::space space, isl::pw_aff_list list)
10517 {
10518   auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
10519   ptr = res;
10520 }
multi_pw_aff(isl::pw_multi_aff pma)10521 multi_pw_aff::multi_pw_aff(isl::pw_multi_aff pma)
10522 {
10523   auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
10524   ptr = res;
10525 }
multi_pw_aff(isl::ctx ctx,const std::string & str)10526 multi_pw_aff::multi_pw_aff(isl::ctx ctx, const std::string &str)
10527 {
10528   auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
10529   ptr = res;
10530 }
10531 
10532 multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
10533   std::swap(this->ptr, obj.ptr);
10534   return *this;
10535 }
10536 
~multi_pw_aff()10537 multi_pw_aff::~multi_pw_aff() {
10538   if (ptr)
10539     isl_multi_pw_aff_free(ptr);
10540 }
10541 
copy()10542 __isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
10543   return isl_multi_pw_aff_copy(ptr);
10544 }
10545 
get()10546 __isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
10547   return ptr;
10548 }
10549 
release()10550 __isl_give isl_multi_pw_aff *multi_pw_aff::release() {
10551   isl_multi_pw_aff *tmp = ptr;
10552   ptr = nullptr;
10553   return tmp;
10554 }
10555 
is_null()10556 bool multi_pw_aff::is_null() const {
10557   return ptr == nullptr;
10558 }
10559 
10560 
ctx()10561 isl::ctx multi_pw_aff::ctx() const {
10562   return isl::ctx(isl_multi_pw_aff_get_ctx(ptr));
10563 }
10564 
dump()10565 void multi_pw_aff::dump() const {
10566   isl_multi_pw_aff_dump(get());
10567 }
10568 
10569 
add(isl::multi_pw_aff multi2)10570 isl::multi_pw_aff multi_pw_aff::add(isl::multi_pw_aff multi2) const
10571 {
10572   auto res = isl_multi_pw_aff_add(copy(), multi2.release());
10573   return manage(res);
10574 }
10575 
add_constant(isl::multi_val mv)10576 isl::multi_pw_aff multi_pw_aff::add_constant(isl::multi_val mv) const
10577 {
10578   auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
10579   return manage(res);
10580 }
10581 
add_constant(isl::val v)10582 isl::multi_pw_aff multi_pw_aff::add_constant(isl::val v) const
10583 {
10584   auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
10585   return manage(res);
10586 }
10587 
add_dims(isl::dim type,unsigned int n)10588 isl::multi_pw_aff multi_pw_aff::add_dims(isl::dim type, unsigned int n) const
10589 {
10590   auto res = isl_multi_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
10591   return manage(res);
10592 }
10593 
align_params(isl::space model)10594 isl::multi_pw_aff multi_pw_aff::align_params(isl::space model) const
10595 {
10596   auto res = isl_multi_pw_aff_align_params(copy(), model.release());
10597   return manage(res);
10598 }
10599 
bind(isl::multi_id tuple)10600 isl::set multi_pw_aff::bind(isl::multi_id tuple) const
10601 {
10602   auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
10603   return manage(res);
10604 }
10605 
bind_domain(isl::multi_id tuple)10606 isl::multi_pw_aff multi_pw_aff::bind_domain(isl::multi_id tuple) const
10607 {
10608   auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
10609   return manage(res);
10610 }
10611 
bind_domain_wrapped_domain(isl::multi_id tuple)10612 isl::multi_pw_aff multi_pw_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
10613 {
10614   auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
10615   return manage(res);
10616 }
10617 
coalesce()10618 isl::multi_pw_aff multi_pw_aff::coalesce() const
10619 {
10620   auto res = isl_multi_pw_aff_coalesce(copy());
10621   return manage(res);
10622 }
10623 
dim(isl::dim type)10624 isl_size multi_pw_aff::dim(isl::dim type) const
10625 {
10626   auto res = isl_multi_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
10627   return res;
10628 }
10629 
domain()10630 isl::set multi_pw_aff::domain() const
10631 {
10632   auto res = isl_multi_pw_aff_domain(copy());
10633   return manage(res);
10634 }
10635 
drop_dims(isl::dim type,unsigned int first,unsigned int n)10636 isl::multi_pw_aff multi_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
10637 {
10638   auto res = isl_multi_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10639   return manage(res);
10640 }
10641 
eq_map(isl::multi_pw_aff mpa2)10642 isl::map multi_pw_aff::eq_map(isl::multi_pw_aff mpa2) const
10643 {
10644   auto res = isl_multi_pw_aff_eq_map(copy(), mpa2.release());
10645   return manage(res);
10646 }
10647 
factor_range()10648 isl::multi_pw_aff multi_pw_aff::factor_range() const
10649 {
10650   auto res = isl_multi_pw_aff_factor_range(copy());
10651   return manage(res);
10652 }
10653 
find_dim_by_id(isl::dim type,const isl::id & id)10654 int multi_pw_aff::find_dim_by_id(isl::dim type, const isl::id &id) const
10655 {
10656   auto res = isl_multi_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
10657   return res;
10658 }
10659 
find_dim_by_name(isl::dim type,const std::string & name)10660 int multi_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
10661 {
10662   auto res = isl_multi_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
10663   return res;
10664 }
10665 
flat_range_product(isl::multi_pw_aff multi2)10666 isl::multi_pw_aff multi_pw_aff::flat_range_product(isl::multi_pw_aff multi2) const
10667 {
10668   auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
10669   return manage(res);
10670 }
10671 
flatten_range()10672 isl::multi_pw_aff multi_pw_aff::flatten_range() const
10673 {
10674   auto res = isl_multi_pw_aff_flatten_range(copy());
10675   return manage(res);
10676 }
10677 
from_range()10678 isl::multi_pw_aff multi_pw_aff::from_range() const
10679 {
10680   auto res = isl_multi_pw_aff_from_range(copy());
10681   return manage(res);
10682 }
10683 
get_at(int pos)10684 isl::pw_aff multi_pw_aff::get_at(int pos) const
10685 {
10686   auto res = isl_multi_pw_aff_get_at(get(), pos);
10687   return manage(res);
10688 }
10689 
get_dim_id(isl::dim type,unsigned int pos)10690 isl::id multi_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
10691 {
10692   auto res = isl_multi_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
10693   return manage(res);
10694 }
10695 
get_domain_space()10696 isl::space multi_pw_aff::get_domain_space() const
10697 {
10698   auto res = isl_multi_pw_aff_get_domain_space(get());
10699   return manage(res);
10700 }
10701 
get_hash()10702 uint32_t multi_pw_aff::get_hash() const
10703 {
10704   auto res = isl_multi_pw_aff_get_hash(get());
10705   return res;
10706 }
10707 
get_list()10708 isl::pw_aff_list multi_pw_aff::get_list() const
10709 {
10710   auto res = isl_multi_pw_aff_get_list(get());
10711   return manage(res);
10712 }
10713 
get_pw_aff(int pos)10714 isl::pw_aff multi_pw_aff::get_pw_aff(int pos) const
10715 {
10716   auto res = isl_multi_pw_aff_get_pw_aff(get(), pos);
10717   return manage(res);
10718 }
10719 
get_space()10720 isl::space multi_pw_aff::get_space() const
10721 {
10722   auto res = isl_multi_pw_aff_get_space(get());
10723   return manage(res);
10724 }
10725 
get_tuple_id(isl::dim type)10726 isl::id multi_pw_aff::get_tuple_id(isl::dim type) const
10727 {
10728   auto res = isl_multi_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10729   return manage(res);
10730 }
10731 
get_tuple_name(isl::dim type)10732 std::string multi_pw_aff::get_tuple_name(isl::dim type) const
10733 {
10734   auto res = isl_multi_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
10735   std::string tmp(res);
10736   return tmp;
10737 }
10738 
gist(isl::set set)10739 isl::multi_pw_aff multi_pw_aff::gist(isl::set set) const
10740 {
10741   auto res = isl_multi_pw_aff_gist(copy(), set.release());
10742   return manage(res);
10743 }
10744 
gist_params(isl::set set)10745 isl::multi_pw_aff multi_pw_aff::gist_params(isl::set set) const
10746 {
10747   auto res = isl_multi_pw_aff_gist_params(copy(), set.release());
10748   return manage(res);
10749 }
10750 
has_tuple_id(isl::dim type)10751 boolean multi_pw_aff::has_tuple_id(isl::dim type) const
10752 {
10753   auto res = isl_multi_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
10754   return manage(res);
10755 }
10756 
identity(isl::space space)10757 isl::multi_pw_aff multi_pw_aff::identity(isl::space space)
10758 {
10759   auto res = isl_multi_pw_aff_identity(space.release());
10760   return manage(res);
10761 }
10762 
identity()10763 isl::multi_pw_aff multi_pw_aff::identity() const
10764 {
10765   auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
10766   return manage(res);
10767 }
10768 
identity_on_domain(isl::space space)10769 isl::multi_pw_aff multi_pw_aff::identity_on_domain(isl::space space)
10770 {
10771   auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
10772   return manage(res);
10773 }
10774 
insert_dims(isl::dim type,unsigned int first,unsigned int n)10775 isl::multi_pw_aff multi_pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
10776 {
10777   auto res = isl_multi_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
10778   return manage(res);
10779 }
10780 
insert_domain(isl::space domain)10781 isl::multi_pw_aff multi_pw_aff::insert_domain(isl::space domain) const
10782 {
10783   auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
10784   return manage(res);
10785 }
10786 
intersect_domain(isl::set domain)10787 isl::multi_pw_aff multi_pw_aff::intersect_domain(isl::set domain) const
10788 {
10789   auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
10790   return manage(res);
10791 }
10792 
intersect_params(isl::set set)10793 isl::multi_pw_aff multi_pw_aff::intersect_params(isl::set set) const
10794 {
10795   auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
10796   return manage(res);
10797 }
10798 
involves_dims(isl::dim type,unsigned int first,unsigned int n)10799 boolean multi_pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
10800 {
10801   auto res = isl_multi_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
10802   return manage(res);
10803 }
10804 
involves_nan()10805 boolean multi_pw_aff::involves_nan() const
10806 {
10807   auto res = isl_multi_pw_aff_involves_nan(get());
10808   return manage(res);
10809 }
10810 
involves_param(const isl::id & id)10811 boolean multi_pw_aff::involves_param(const isl::id &id) const
10812 {
10813   auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
10814   return manage(res);
10815 }
10816 
involves_param(const isl::id_list & list)10817 boolean multi_pw_aff::involves_param(const isl::id_list &list) const
10818 {
10819   auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
10820   return manage(res);
10821 }
10822 
is_cst()10823 boolean multi_pw_aff::is_cst() const
10824 {
10825   auto res = isl_multi_pw_aff_is_cst(get());
10826   return manage(res);
10827 }
10828 
is_equal(const isl::multi_pw_aff & mpa2)10829 boolean multi_pw_aff::is_equal(const isl::multi_pw_aff &mpa2) const
10830 {
10831   auto res = isl_multi_pw_aff_is_equal(get(), mpa2.get());
10832   return manage(res);
10833 }
10834 
lex_ge_map(isl::multi_pw_aff mpa2)10835 isl::map multi_pw_aff::lex_ge_map(isl::multi_pw_aff mpa2) const
10836 {
10837   auto res = isl_multi_pw_aff_lex_ge_map(copy(), mpa2.release());
10838   return manage(res);
10839 }
10840 
lex_gt_map(isl::multi_pw_aff mpa2)10841 isl::map multi_pw_aff::lex_gt_map(isl::multi_pw_aff mpa2) const
10842 {
10843   auto res = isl_multi_pw_aff_lex_gt_map(copy(), mpa2.release());
10844   return manage(res);
10845 }
10846 
lex_le_map(isl::multi_pw_aff mpa2)10847 isl::map multi_pw_aff::lex_le_map(isl::multi_pw_aff mpa2) const
10848 {
10849   auto res = isl_multi_pw_aff_lex_le_map(copy(), mpa2.release());
10850   return manage(res);
10851 }
10852 
lex_lt_map(isl::multi_pw_aff mpa2)10853 isl::map multi_pw_aff::lex_lt_map(isl::multi_pw_aff mpa2) const
10854 {
10855   auto res = isl_multi_pw_aff_lex_lt_map(copy(), mpa2.release());
10856   return manage(res);
10857 }
10858 
max(isl::multi_pw_aff multi2)10859 isl::multi_pw_aff multi_pw_aff::max(isl::multi_pw_aff multi2) const
10860 {
10861   auto res = isl_multi_pw_aff_max(copy(), multi2.release());
10862   return manage(res);
10863 }
10864 
max_multi_val()10865 isl::multi_val multi_pw_aff::max_multi_val() const
10866 {
10867   auto res = isl_multi_pw_aff_max_multi_val(copy());
10868   return manage(res);
10869 }
10870 
min(isl::multi_pw_aff multi2)10871 isl::multi_pw_aff multi_pw_aff::min(isl::multi_pw_aff multi2) const
10872 {
10873   auto res = isl_multi_pw_aff_min(copy(), multi2.release());
10874   return manage(res);
10875 }
10876 
min_multi_val()10877 isl::multi_val multi_pw_aff::min_multi_val() const
10878 {
10879   auto res = isl_multi_pw_aff_min_multi_val(copy());
10880   return manage(res);
10881 }
10882 
mod_multi_val(isl::multi_val mv)10883 isl::multi_pw_aff multi_pw_aff::mod_multi_val(isl::multi_val mv) const
10884 {
10885   auto res = isl_multi_pw_aff_mod_multi_val(copy(), mv.release());
10886   return manage(res);
10887 }
10888 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)10889 isl::multi_pw_aff multi_pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
10890 {
10891   auto res = isl_multi_pw_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
10892   return manage(res);
10893 }
10894 
neg()10895 isl::multi_pw_aff multi_pw_aff::neg() const
10896 {
10897   auto res = isl_multi_pw_aff_neg(copy());
10898   return manage(res);
10899 }
10900 
plain_is_equal(const isl::multi_pw_aff & multi2)10901 boolean multi_pw_aff::plain_is_equal(const isl::multi_pw_aff &multi2) const
10902 {
10903   auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
10904   return manage(res);
10905 }
10906 
product(isl::multi_pw_aff multi2)10907 isl::multi_pw_aff multi_pw_aff::product(isl::multi_pw_aff multi2) const
10908 {
10909   auto res = isl_multi_pw_aff_product(copy(), multi2.release());
10910   return manage(res);
10911 }
10912 
project_domain_on_params()10913 isl::multi_pw_aff multi_pw_aff::project_domain_on_params() const
10914 {
10915   auto res = isl_multi_pw_aff_project_domain_on_params(copy());
10916   return manage(res);
10917 }
10918 
pullback(isl::multi_aff ma)10919 isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_aff ma) const
10920 {
10921   auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
10922   return manage(res);
10923 }
10924 
pullback(isl::multi_pw_aff mpa2)10925 isl::multi_pw_aff multi_pw_aff::pullback(isl::multi_pw_aff mpa2) const
10926 {
10927   auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
10928   return manage(res);
10929 }
10930 
pullback(isl::pw_multi_aff pma)10931 isl::multi_pw_aff multi_pw_aff::pullback(isl::pw_multi_aff pma) const
10932 {
10933   auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
10934   return manage(res);
10935 }
10936 
range_factor_domain()10937 isl::multi_pw_aff multi_pw_aff::range_factor_domain() const
10938 {
10939   auto res = isl_multi_pw_aff_range_factor_domain(copy());
10940   return manage(res);
10941 }
10942 
range_factor_range()10943 isl::multi_pw_aff multi_pw_aff::range_factor_range() const
10944 {
10945   auto res = isl_multi_pw_aff_range_factor_range(copy());
10946   return manage(res);
10947 }
10948 
range_is_wrapping()10949 boolean multi_pw_aff::range_is_wrapping() const
10950 {
10951   auto res = isl_multi_pw_aff_range_is_wrapping(get());
10952   return manage(res);
10953 }
10954 
range_product(isl::multi_pw_aff multi2)10955 isl::multi_pw_aff multi_pw_aff::range_product(isl::multi_pw_aff multi2) const
10956 {
10957   auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
10958   return manage(res);
10959 }
10960 
range_splice(unsigned int pos,isl::multi_pw_aff multi2)10961 isl::multi_pw_aff multi_pw_aff::range_splice(unsigned int pos, isl::multi_pw_aff multi2) const
10962 {
10963   auto res = isl_multi_pw_aff_range_splice(copy(), pos, multi2.release());
10964   return manage(res);
10965 }
10966 
reset_tuple_id(isl::dim type)10967 isl::multi_pw_aff multi_pw_aff::reset_tuple_id(isl::dim type) const
10968 {
10969   auto res = isl_multi_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
10970   return manage(res);
10971 }
10972 
reset_user()10973 isl::multi_pw_aff multi_pw_aff::reset_user() const
10974 {
10975   auto res = isl_multi_pw_aff_reset_user(copy());
10976   return manage(res);
10977 }
10978 
scale(isl::multi_val mv)10979 isl::multi_pw_aff multi_pw_aff::scale(isl::multi_val mv) const
10980 {
10981   auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
10982   return manage(res);
10983 }
10984 
scale(isl::val v)10985 isl::multi_pw_aff multi_pw_aff::scale(isl::val v) const
10986 {
10987   auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
10988   return manage(res);
10989 }
10990 
scale_down(isl::multi_val mv)10991 isl::multi_pw_aff multi_pw_aff::scale_down(isl::multi_val mv) const
10992 {
10993   auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
10994   return manage(res);
10995 }
10996 
scale_down(isl::val v)10997 isl::multi_pw_aff multi_pw_aff::scale_down(isl::val v) const
10998 {
10999   auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
11000   return manage(res);
11001 }
11002 
set_at(int pos,isl::pw_aff el)11003 isl::multi_pw_aff multi_pw_aff::set_at(int pos, isl::pw_aff el) const
11004 {
11005   auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
11006   return manage(res);
11007 }
11008 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)11009 isl::multi_pw_aff multi_pw_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
11010 {
11011   auto res = isl_multi_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
11012   return manage(res);
11013 }
11014 
set_pw_aff(int pos,isl::pw_aff el)11015 isl::multi_pw_aff multi_pw_aff::set_pw_aff(int pos, isl::pw_aff el) const
11016 {
11017   auto res = isl_multi_pw_aff_set_pw_aff(copy(), pos, el.release());
11018   return manage(res);
11019 }
11020 
set_tuple_id(isl::dim type,isl::id id)11021 isl::multi_pw_aff multi_pw_aff::set_tuple_id(isl::dim type, isl::id id) const
11022 {
11023   auto res = isl_multi_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11024   return manage(res);
11025 }
11026 
set_tuple_name(isl::dim type,const std::string & s)11027 isl::multi_pw_aff multi_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const
11028 {
11029   auto res = isl_multi_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
11030   return manage(res);
11031 }
11032 
size()11033 isl_size multi_pw_aff::size() const
11034 {
11035   auto res = isl_multi_pw_aff_size(get());
11036   return res;
11037 }
11038 
splice(unsigned int in_pos,unsigned int out_pos,isl::multi_pw_aff multi2)11039 isl::multi_pw_aff multi_pw_aff::splice(unsigned int in_pos, unsigned int out_pos, isl::multi_pw_aff multi2) const
11040 {
11041   auto res = isl_multi_pw_aff_splice(copy(), in_pos, out_pos, multi2.release());
11042   return manage(res);
11043 }
11044 
sub(isl::multi_pw_aff multi2)11045 isl::multi_pw_aff multi_pw_aff::sub(isl::multi_pw_aff multi2) const
11046 {
11047   auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
11048   return manage(res);
11049 }
11050 
unbind_params_insert_domain(isl::multi_id domain)11051 isl::multi_pw_aff multi_pw_aff::unbind_params_insert_domain(isl::multi_id domain) const
11052 {
11053   auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
11054   return manage(res);
11055 }
11056 
union_add(isl::multi_pw_aff mpa2)11057 isl::multi_pw_aff multi_pw_aff::union_add(isl::multi_pw_aff mpa2) const
11058 {
11059   auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
11060   return manage(res);
11061 }
11062 
zero(isl::space space)11063 isl::multi_pw_aff multi_pw_aff::zero(isl::space space)
11064 {
11065   auto res = isl_multi_pw_aff_zero(space.release());
11066   return manage(res);
11067 }
11068 
11069 // implementations for isl::multi_union_pw_aff
manage(__isl_take isl_multi_union_pw_aff * ptr)11070 multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
11071   return multi_union_pw_aff(ptr);
11072 }
manage_copy(__isl_keep isl_multi_union_pw_aff * ptr)11073 multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
11074   ptr = isl_multi_union_pw_aff_copy(ptr);
11075   return multi_union_pw_aff(ptr);
11076 }
11077 
multi_union_pw_aff()11078 multi_union_pw_aff::multi_union_pw_aff()
11079     : ptr(nullptr) {}
11080 
multi_union_pw_aff(const multi_union_pw_aff & obj)11081 multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
11082     : ptr(nullptr)
11083 {
11084   ptr = obj.copy();
11085 }
11086 
11087 
multi_union_pw_aff(__isl_take isl_multi_union_pw_aff * ptr)11088 multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
11089     : ptr(ptr) {}
11090 
multi_union_pw_aff(isl::multi_pw_aff mpa)11091 multi_union_pw_aff::multi_union_pw_aff(isl::multi_pw_aff mpa)
11092 {
11093   auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
11094   ptr = res;
11095 }
multi_union_pw_aff(isl::union_pw_aff upa)11096 multi_union_pw_aff::multi_union_pw_aff(isl::union_pw_aff upa)
11097 {
11098   auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
11099   ptr = res;
11100 }
multi_union_pw_aff(isl::space space,isl::union_pw_aff_list list)11101 multi_union_pw_aff::multi_union_pw_aff(isl::space space, isl::union_pw_aff_list list)
11102 {
11103   auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
11104   ptr = res;
11105 }
multi_union_pw_aff(isl::union_pw_multi_aff upma)11106 multi_union_pw_aff::multi_union_pw_aff(isl::union_pw_multi_aff upma)
11107 {
11108   auto res = isl_multi_union_pw_aff_from_union_pw_multi_aff(upma.release());
11109   ptr = res;
11110 }
multi_union_pw_aff(isl::ctx ctx,const std::string & str)11111 multi_union_pw_aff::multi_union_pw_aff(isl::ctx ctx, const std::string &str)
11112 {
11113   auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
11114   ptr = res;
11115 }
11116 
11117 multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
11118   std::swap(this->ptr, obj.ptr);
11119   return *this;
11120 }
11121 
~multi_union_pw_aff()11122 multi_union_pw_aff::~multi_union_pw_aff() {
11123   if (ptr)
11124     isl_multi_union_pw_aff_free(ptr);
11125 }
11126 
copy()11127 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
11128   return isl_multi_union_pw_aff_copy(ptr);
11129 }
11130 
get()11131 __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
11132   return ptr;
11133 }
11134 
release()11135 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
11136   isl_multi_union_pw_aff *tmp = ptr;
11137   ptr = nullptr;
11138   return tmp;
11139 }
11140 
is_null()11141 bool multi_union_pw_aff::is_null() const {
11142   return ptr == nullptr;
11143 }
11144 
11145 
ctx()11146 isl::ctx multi_union_pw_aff::ctx() const {
11147   return isl::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
11148 }
11149 
dump()11150 void multi_union_pw_aff::dump() const {
11151   isl_multi_union_pw_aff_dump(get());
11152 }
11153 
11154 
add(isl::multi_union_pw_aff multi2)11155 isl::multi_union_pw_aff multi_union_pw_aff::add(isl::multi_union_pw_aff multi2) const
11156 {
11157   auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
11158   return manage(res);
11159 }
11160 
align_params(isl::space model)11161 isl::multi_union_pw_aff multi_union_pw_aff::align_params(isl::space model) const
11162 {
11163   auto res = isl_multi_union_pw_aff_align_params(copy(), model.release());
11164   return manage(res);
11165 }
11166 
apply_aff(isl::aff aff)11167 isl::union_pw_aff multi_union_pw_aff::apply_aff(isl::aff aff) const
11168 {
11169   auto res = isl_multi_union_pw_aff_apply_aff(copy(), aff.release());
11170   return manage(res);
11171 }
11172 
apply_pw_aff(isl::pw_aff pa)11173 isl::union_pw_aff multi_union_pw_aff::apply_pw_aff(isl::pw_aff pa) const
11174 {
11175   auto res = isl_multi_union_pw_aff_apply_pw_aff(copy(), pa.release());
11176   return manage(res);
11177 }
11178 
apply_pw_multi_aff(isl::pw_multi_aff pma)11179 isl::multi_union_pw_aff multi_union_pw_aff::apply_pw_multi_aff(isl::pw_multi_aff pma) const
11180 {
11181   auto res = isl_multi_union_pw_aff_apply_pw_multi_aff(copy(), pma.release());
11182   return manage(res);
11183 }
11184 
bind(isl::multi_id tuple)11185 isl::union_set multi_union_pw_aff::bind(isl::multi_id tuple) const
11186 {
11187   auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
11188   return manage(res);
11189 }
11190 
coalesce()11191 isl::multi_union_pw_aff multi_union_pw_aff::coalesce() const
11192 {
11193   auto res = isl_multi_union_pw_aff_coalesce(copy());
11194   return manage(res);
11195 }
11196 
dim(isl::dim type)11197 isl_size multi_union_pw_aff::dim(isl::dim type) const
11198 {
11199   auto res = isl_multi_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
11200   return res;
11201 }
11202 
domain()11203 isl::union_set multi_union_pw_aff::domain() const
11204 {
11205   auto res = isl_multi_union_pw_aff_domain(copy());
11206   return manage(res);
11207 }
11208 
drop_dims(isl::dim type,unsigned int first,unsigned int n)11209 isl::multi_union_pw_aff multi_union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
11210 {
11211   auto res = isl_multi_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11212   return manage(res);
11213 }
11214 
extract_multi_pw_aff(isl::space space)11215 isl::multi_pw_aff multi_union_pw_aff::extract_multi_pw_aff(isl::space space) const
11216 {
11217   auto res = isl_multi_union_pw_aff_extract_multi_pw_aff(get(), space.release());
11218   return manage(res);
11219 }
11220 
factor_range()11221 isl::multi_union_pw_aff multi_union_pw_aff::factor_range() const
11222 {
11223   auto res = isl_multi_union_pw_aff_factor_range(copy());
11224   return manage(res);
11225 }
11226 
find_dim_by_id(isl::dim type,const isl::id & id)11227 int multi_union_pw_aff::find_dim_by_id(isl::dim type, const isl::id &id) const
11228 {
11229   auto res = isl_multi_union_pw_aff_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
11230   return res;
11231 }
11232 
find_dim_by_name(isl::dim type,const std::string & name)11233 int multi_union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
11234 {
11235   auto res = isl_multi_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
11236   return res;
11237 }
11238 
flat_range_product(isl::multi_union_pw_aff multi2)11239 isl::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::multi_union_pw_aff multi2) const
11240 {
11241   auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
11242   return manage(res);
11243 }
11244 
flatten_range()11245 isl::multi_union_pw_aff multi_union_pw_aff::flatten_range() const
11246 {
11247   auto res = isl_multi_union_pw_aff_flatten_range(copy());
11248   return manage(res);
11249 }
11250 
floor()11251 isl::multi_union_pw_aff multi_union_pw_aff::floor() const
11252 {
11253   auto res = isl_multi_union_pw_aff_floor(copy());
11254   return manage(res);
11255 }
11256 
from_multi_aff(isl::multi_aff ma)11257 isl::multi_union_pw_aff multi_union_pw_aff::from_multi_aff(isl::multi_aff ma)
11258 {
11259   auto res = isl_multi_union_pw_aff_from_multi_aff(ma.release());
11260   return manage(res);
11261 }
11262 
from_range()11263 isl::multi_union_pw_aff multi_union_pw_aff::from_range() const
11264 {
11265   auto res = isl_multi_union_pw_aff_from_range(copy());
11266   return manage(res);
11267 }
11268 
from_union_map(isl::union_map umap)11269 isl::multi_union_pw_aff multi_union_pw_aff::from_union_map(isl::union_map umap)
11270 {
11271   auto res = isl_multi_union_pw_aff_from_union_map(umap.release());
11272   return manage(res);
11273 }
11274 
get_at(int pos)11275 isl::union_pw_aff multi_union_pw_aff::get_at(int pos) const
11276 {
11277   auto res = isl_multi_union_pw_aff_get_at(get(), pos);
11278   return manage(res);
11279 }
11280 
get_dim_id(isl::dim type,unsigned int pos)11281 isl::id multi_union_pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
11282 {
11283   auto res = isl_multi_union_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11284   return manage(res);
11285 }
11286 
get_domain_space()11287 isl::space multi_union_pw_aff::get_domain_space() const
11288 {
11289   auto res = isl_multi_union_pw_aff_get_domain_space(get());
11290   return manage(res);
11291 }
11292 
get_list()11293 isl::union_pw_aff_list multi_union_pw_aff::get_list() const
11294 {
11295   auto res = isl_multi_union_pw_aff_get_list(get());
11296   return manage(res);
11297 }
11298 
get_space()11299 isl::space multi_union_pw_aff::get_space() const
11300 {
11301   auto res = isl_multi_union_pw_aff_get_space(get());
11302   return manage(res);
11303 }
11304 
get_tuple_id(isl::dim type)11305 isl::id multi_union_pw_aff::get_tuple_id(isl::dim type) const
11306 {
11307   auto res = isl_multi_union_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11308   return manage(res);
11309 }
11310 
get_tuple_name(isl::dim type)11311 std::string multi_union_pw_aff::get_tuple_name(isl::dim type) const
11312 {
11313   auto res = isl_multi_union_pw_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
11314   std::string tmp(res);
11315   return tmp;
11316 }
11317 
get_union_pw_aff(int pos)11318 isl::union_pw_aff multi_union_pw_aff::get_union_pw_aff(int pos) const
11319 {
11320   auto res = isl_multi_union_pw_aff_get_union_pw_aff(get(), pos);
11321   return manage(res);
11322 }
11323 
gist(isl::union_set context)11324 isl::multi_union_pw_aff multi_union_pw_aff::gist(isl::union_set context) const
11325 {
11326   auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
11327   return manage(res);
11328 }
11329 
gist_params(isl::set context)11330 isl::multi_union_pw_aff multi_union_pw_aff::gist_params(isl::set context) const
11331 {
11332   auto res = isl_multi_union_pw_aff_gist_params(copy(), context.release());
11333   return manage(res);
11334 }
11335 
has_tuple_id(isl::dim type)11336 boolean multi_union_pw_aff::has_tuple_id(isl::dim type) const
11337 {
11338   auto res = isl_multi_union_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11339   return manage(res);
11340 }
11341 
intersect_domain(isl::union_set uset)11342 isl::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::union_set uset) const
11343 {
11344   auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
11345   return manage(res);
11346 }
11347 
intersect_params(isl::set params)11348 isl::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::set params) const
11349 {
11350   auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
11351   return manage(res);
11352 }
11353 
intersect_range(isl::set set)11354 isl::multi_union_pw_aff multi_union_pw_aff::intersect_range(isl::set set) const
11355 {
11356   auto res = isl_multi_union_pw_aff_intersect_range(copy(), set.release());
11357   return manage(res);
11358 }
11359 
involves_nan()11360 boolean multi_union_pw_aff::involves_nan() const
11361 {
11362   auto res = isl_multi_union_pw_aff_involves_nan(get());
11363   return manage(res);
11364 }
11365 
max_multi_val()11366 isl::multi_val multi_union_pw_aff::max_multi_val() const
11367 {
11368   auto res = isl_multi_union_pw_aff_max_multi_val(copy());
11369   return manage(res);
11370 }
11371 
min_multi_val()11372 isl::multi_val multi_union_pw_aff::min_multi_val() const
11373 {
11374   auto res = isl_multi_union_pw_aff_min_multi_val(copy());
11375   return manage(res);
11376 }
11377 
mod_multi_val(isl::multi_val mv)11378 isl::multi_union_pw_aff multi_union_pw_aff::mod_multi_val(isl::multi_val mv) const
11379 {
11380   auto res = isl_multi_union_pw_aff_mod_multi_val(copy(), mv.release());
11381   return manage(res);
11382 }
11383 
multi_aff_on_domain(isl::union_set domain,isl::multi_aff ma)11384 isl::multi_union_pw_aff multi_union_pw_aff::multi_aff_on_domain(isl::union_set domain, isl::multi_aff ma)
11385 {
11386   auto res = isl_multi_union_pw_aff_multi_aff_on_domain(domain.release(), ma.release());
11387   return manage(res);
11388 }
11389 
multi_val_on_domain(isl::union_set domain,isl::multi_val mv)11390 isl::multi_union_pw_aff multi_union_pw_aff::multi_val_on_domain(isl::union_set domain, isl::multi_val mv)
11391 {
11392   auto res = isl_multi_union_pw_aff_multi_val_on_domain(domain.release(), mv.release());
11393   return manage(res);
11394 }
11395 
neg()11396 isl::multi_union_pw_aff multi_union_pw_aff::neg() const
11397 {
11398   auto res = isl_multi_union_pw_aff_neg(copy());
11399   return manage(res);
11400 }
11401 
plain_is_equal(const isl::multi_union_pw_aff & multi2)11402 boolean multi_union_pw_aff::plain_is_equal(const isl::multi_union_pw_aff &multi2) const
11403 {
11404   auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
11405   return manage(res);
11406 }
11407 
pullback(isl::union_pw_multi_aff upma)11408 isl::multi_union_pw_aff multi_union_pw_aff::pullback(isl::union_pw_multi_aff upma) const
11409 {
11410   auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
11411   return manage(res);
11412 }
11413 
pw_multi_aff_on_domain(isl::union_set domain,isl::pw_multi_aff pma)11414 isl::multi_union_pw_aff multi_union_pw_aff::pw_multi_aff_on_domain(isl::union_set domain, isl::pw_multi_aff pma)
11415 {
11416   auto res = isl_multi_union_pw_aff_pw_multi_aff_on_domain(domain.release(), pma.release());
11417   return manage(res);
11418 }
11419 
range_factor_domain()11420 isl::multi_union_pw_aff multi_union_pw_aff::range_factor_domain() const
11421 {
11422   auto res = isl_multi_union_pw_aff_range_factor_domain(copy());
11423   return manage(res);
11424 }
11425 
range_factor_range()11426 isl::multi_union_pw_aff multi_union_pw_aff::range_factor_range() const
11427 {
11428   auto res = isl_multi_union_pw_aff_range_factor_range(copy());
11429   return manage(res);
11430 }
11431 
range_is_wrapping()11432 boolean multi_union_pw_aff::range_is_wrapping() const
11433 {
11434   auto res = isl_multi_union_pw_aff_range_is_wrapping(get());
11435   return manage(res);
11436 }
11437 
range_product(isl::multi_union_pw_aff multi2)11438 isl::multi_union_pw_aff multi_union_pw_aff::range_product(isl::multi_union_pw_aff multi2) const
11439 {
11440   auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
11441   return manage(res);
11442 }
11443 
range_splice(unsigned int pos,isl::multi_union_pw_aff multi2)11444 isl::multi_union_pw_aff multi_union_pw_aff::range_splice(unsigned int pos, isl::multi_union_pw_aff multi2) const
11445 {
11446   auto res = isl_multi_union_pw_aff_range_splice(copy(), pos, multi2.release());
11447   return manage(res);
11448 }
11449 
reset_tuple_id(isl::dim type)11450 isl::multi_union_pw_aff multi_union_pw_aff::reset_tuple_id(isl::dim type) const
11451 {
11452   auto res = isl_multi_union_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
11453   return manage(res);
11454 }
11455 
reset_user()11456 isl::multi_union_pw_aff multi_union_pw_aff::reset_user() const
11457 {
11458   auto res = isl_multi_union_pw_aff_reset_user(copy());
11459   return manage(res);
11460 }
11461 
scale(isl::multi_val mv)11462 isl::multi_union_pw_aff multi_union_pw_aff::scale(isl::multi_val mv) const
11463 {
11464   auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
11465   return manage(res);
11466 }
11467 
scale(isl::val v)11468 isl::multi_union_pw_aff multi_union_pw_aff::scale(isl::val v) const
11469 {
11470   auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
11471   return manage(res);
11472 }
11473 
scale_down(isl::multi_val mv)11474 isl::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::multi_val mv) const
11475 {
11476   auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
11477   return manage(res);
11478 }
11479 
scale_down(isl::val v)11480 isl::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::val v) const
11481 {
11482   auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
11483   return manage(res);
11484 }
11485 
set_at(int pos,isl::union_pw_aff el)11486 isl::multi_union_pw_aff multi_union_pw_aff::set_at(int pos, isl::union_pw_aff el) const
11487 {
11488   auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
11489   return manage(res);
11490 }
11491 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)11492 isl::multi_union_pw_aff multi_union_pw_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
11493 {
11494   auto res = isl_multi_union_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
11495   return manage(res);
11496 }
11497 
set_tuple_id(isl::dim type,isl::id id)11498 isl::multi_union_pw_aff multi_union_pw_aff::set_tuple_id(isl::dim type, isl::id id) const
11499 {
11500   auto res = isl_multi_union_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11501   return manage(res);
11502 }
11503 
set_tuple_name(isl::dim type,const std::string & s)11504 isl::multi_union_pw_aff multi_union_pw_aff::set_tuple_name(isl::dim type, const std::string &s) const
11505 {
11506   auto res = isl_multi_union_pw_aff_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
11507   return manage(res);
11508 }
11509 
set_union_pw_aff(int pos,isl::union_pw_aff el)11510 isl::multi_union_pw_aff multi_union_pw_aff::set_union_pw_aff(int pos, isl::union_pw_aff el) const
11511 {
11512   auto res = isl_multi_union_pw_aff_set_union_pw_aff(copy(), pos, el.release());
11513   return manage(res);
11514 }
11515 
size()11516 isl_size multi_union_pw_aff::size() const
11517 {
11518   auto res = isl_multi_union_pw_aff_size(get());
11519   return res;
11520 }
11521 
sub(isl::multi_union_pw_aff multi2)11522 isl::multi_union_pw_aff multi_union_pw_aff::sub(isl::multi_union_pw_aff multi2) const
11523 {
11524   auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
11525   return manage(res);
11526 }
11527 
union_add(isl::multi_union_pw_aff mupa2)11528 isl::multi_union_pw_aff multi_union_pw_aff::union_add(isl::multi_union_pw_aff mupa2) const
11529 {
11530   auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
11531   return manage(res);
11532 }
11533 
zero(isl::space space)11534 isl::multi_union_pw_aff multi_union_pw_aff::zero(isl::space space)
11535 {
11536   auto res = isl_multi_union_pw_aff_zero(space.release());
11537   return manage(res);
11538 }
11539 
zero_union_set()11540 isl::union_set multi_union_pw_aff::zero_union_set() const
11541 {
11542   auto res = isl_multi_union_pw_aff_zero_union_set(copy());
11543   return manage(res);
11544 }
11545 
11546 // implementations for isl::multi_val
manage(__isl_take isl_multi_val * ptr)11547 multi_val manage(__isl_take isl_multi_val *ptr) {
11548   return multi_val(ptr);
11549 }
manage_copy(__isl_keep isl_multi_val * ptr)11550 multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
11551   ptr = isl_multi_val_copy(ptr);
11552   return multi_val(ptr);
11553 }
11554 
multi_val()11555 multi_val::multi_val()
11556     : ptr(nullptr) {}
11557 
multi_val(const multi_val & obj)11558 multi_val::multi_val(const multi_val &obj)
11559     : ptr(nullptr)
11560 {
11561   ptr = obj.copy();
11562 }
11563 
11564 
multi_val(__isl_take isl_multi_val * ptr)11565 multi_val::multi_val(__isl_take isl_multi_val *ptr)
11566     : ptr(ptr) {}
11567 
multi_val(isl::space space,isl::val_list list)11568 multi_val::multi_val(isl::space space, isl::val_list list)
11569 {
11570   auto res = isl_multi_val_from_val_list(space.release(), list.release());
11571   ptr = res;
11572 }
multi_val(isl::ctx ctx,const std::string & str)11573 multi_val::multi_val(isl::ctx ctx, const std::string &str)
11574 {
11575   auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
11576   ptr = res;
11577 }
11578 
11579 multi_val &multi_val::operator=(multi_val obj) {
11580   std::swap(this->ptr, obj.ptr);
11581   return *this;
11582 }
11583 
~multi_val()11584 multi_val::~multi_val() {
11585   if (ptr)
11586     isl_multi_val_free(ptr);
11587 }
11588 
copy()11589 __isl_give isl_multi_val *multi_val::copy() const & {
11590   return isl_multi_val_copy(ptr);
11591 }
11592 
get()11593 __isl_keep isl_multi_val *multi_val::get() const {
11594   return ptr;
11595 }
11596 
release()11597 __isl_give isl_multi_val *multi_val::release() {
11598   isl_multi_val *tmp = ptr;
11599   ptr = nullptr;
11600   return tmp;
11601 }
11602 
is_null()11603 bool multi_val::is_null() const {
11604   return ptr == nullptr;
11605 }
11606 
11607 
ctx()11608 isl::ctx multi_val::ctx() const {
11609   return isl::ctx(isl_multi_val_get_ctx(ptr));
11610 }
11611 
dump()11612 void multi_val::dump() const {
11613   isl_multi_val_dump(get());
11614 }
11615 
11616 
add(isl::multi_val multi2)11617 isl::multi_val multi_val::add(isl::multi_val multi2) const
11618 {
11619   auto res = isl_multi_val_add(copy(), multi2.release());
11620   return manage(res);
11621 }
11622 
add(isl::val v)11623 isl::multi_val multi_val::add(isl::val v) const
11624 {
11625   auto res = isl_multi_val_add_val(copy(), v.release());
11626   return manage(res);
11627 }
11628 
add_dims(isl::dim type,unsigned int n)11629 isl::multi_val multi_val::add_dims(isl::dim type, unsigned int n) const
11630 {
11631   auto res = isl_multi_val_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
11632   return manage(res);
11633 }
11634 
align_params(isl::space model)11635 isl::multi_val multi_val::align_params(isl::space model) const
11636 {
11637   auto res = isl_multi_val_align_params(copy(), model.release());
11638   return manage(res);
11639 }
11640 
dim(isl::dim type)11641 isl_size multi_val::dim(isl::dim type) const
11642 {
11643   auto res = isl_multi_val_dim(get(), static_cast<enum isl_dim_type>(type));
11644   return res;
11645 }
11646 
drop_dims(isl::dim type,unsigned int first,unsigned int n)11647 isl::multi_val multi_val::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
11648 {
11649   auto res = isl_multi_val_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11650   return manage(res);
11651 }
11652 
factor_range()11653 isl::multi_val multi_val::factor_range() const
11654 {
11655   auto res = isl_multi_val_factor_range(copy());
11656   return manage(res);
11657 }
11658 
find_dim_by_id(isl::dim type,const isl::id & id)11659 int multi_val::find_dim_by_id(isl::dim type, const isl::id &id) const
11660 {
11661   auto res = isl_multi_val_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
11662   return res;
11663 }
11664 
find_dim_by_name(isl::dim type,const std::string & name)11665 int multi_val::find_dim_by_name(isl::dim type, const std::string &name) const
11666 {
11667   auto res = isl_multi_val_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
11668   return res;
11669 }
11670 
flat_range_product(isl::multi_val multi2)11671 isl::multi_val multi_val::flat_range_product(isl::multi_val multi2) const
11672 {
11673   auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
11674   return manage(res);
11675 }
11676 
flatten_range()11677 isl::multi_val multi_val::flatten_range() const
11678 {
11679   auto res = isl_multi_val_flatten_range(copy());
11680   return manage(res);
11681 }
11682 
from_range()11683 isl::multi_val multi_val::from_range() const
11684 {
11685   auto res = isl_multi_val_from_range(copy());
11686   return manage(res);
11687 }
11688 
get_at(int pos)11689 isl::val multi_val::get_at(int pos) const
11690 {
11691   auto res = isl_multi_val_get_at(get(), pos);
11692   return manage(res);
11693 }
11694 
get_dim_id(isl::dim type,unsigned int pos)11695 isl::id multi_val::get_dim_id(isl::dim type, unsigned int pos) const
11696 {
11697   auto res = isl_multi_val_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
11698   return manage(res);
11699 }
11700 
get_domain_space()11701 isl::space multi_val::get_domain_space() const
11702 {
11703   auto res = isl_multi_val_get_domain_space(get());
11704   return manage(res);
11705 }
11706 
get_list()11707 isl::val_list multi_val::get_list() const
11708 {
11709   auto res = isl_multi_val_get_list(get());
11710   return manage(res);
11711 }
11712 
get_space()11713 isl::space multi_val::get_space() const
11714 {
11715   auto res = isl_multi_val_get_space(get());
11716   return manage(res);
11717 }
11718 
get_tuple_id(isl::dim type)11719 isl::id multi_val::get_tuple_id(isl::dim type) const
11720 {
11721   auto res = isl_multi_val_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11722   return manage(res);
11723 }
11724 
get_tuple_name(isl::dim type)11725 std::string multi_val::get_tuple_name(isl::dim type) const
11726 {
11727   auto res = isl_multi_val_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
11728   std::string tmp(res);
11729   return tmp;
11730 }
11731 
get_val(int pos)11732 isl::val multi_val::get_val(int pos) const
11733 {
11734   auto res = isl_multi_val_get_val(get(), pos);
11735   return manage(res);
11736 }
11737 
has_tuple_id(isl::dim type)11738 boolean multi_val::has_tuple_id(isl::dim type) const
11739 {
11740   auto res = isl_multi_val_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
11741   return manage(res);
11742 }
11743 
insert_dims(isl::dim type,unsigned int first,unsigned int n)11744 isl::multi_val multi_val::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
11745 {
11746   auto res = isl_multi_val_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
11747   return manage(res);
11748 }
11749 
involves_dims(isl::dim type,unsigned int first,unsigned int n)11750 boolean multi_val::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
11751 {
11752   auto res = isl_multi_val_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
11753   return manage(res);
11754 }
11755 
involves_nan()11756 boolean multi_val::involves_nan() const
11757 {
11758   auto res = isl_multi_val_involves_nan(get());
11759   return manage(res);
11760 }
11761 
is_zero()11762 boolean multi_val::is_zero() const
11763 {
11764   auto res = isl_multi_val_is_zero(get());
11765   return manage(res);
11766 }
11767 
max(isl::multi_val multi2)11768 isl::multi_val multi_val::max(isl::multi_val multi2) const
11769 {
11770   auto res = isl_multi_val_max(copy(), multi2.release());
11771   return manage(res);
11772 }
11773 
min(isl::multi_val multi2)11774 isl::multi_val multi_val::min(isl::multi_val multi2) const
11775 {
11776   auto res = isl_multi_val_min(copy(), multi2.release());
11777   return manage(res);
11778 }
11779 
mod_multi_val(isl::multi_val mv)11780 isl::multi_val multi_val::mod_multi_val(isl::multi_val mv) const
11781 {
11782   auto res = isl_multi_val_mod_multi_val(copy(), mv.release());
11783   return manage(res);
11784 }
11785 
mod_val(isl::val v)11786 isl::multi_val multi_val::mod_val(isl::val v) const
11787 {
11788   auto res = isl_multi_val_mod_val(copy(), v.release());
11789   return manage(res);
11790 }
11791 
neg()11792 isl::multi_val multi_val::neg() const
11793 {
11794   auto res = isl_multi_val_neg(copy());
11795   return manage(res);
11796 }
11797 
plain_is_equal(const isl::multi_val & multi2)11798 boolean multi_val::plain_is_equal(const isl::multi_val &multi2) const
11799 {
11800   auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
11801   return manage(res);
11802 }
11803 
product(isl::multi_val multi2)11804 isl::multi_val multi_val::product(isl::multi_val multi2) const
11805 {
11806   auto res = isl_multi_val_product(copy(), multi2.release());
11807   return manage(res);
11808 }
11809 
project_domain_on_params()11810 isl::multi_val multi_val::project_domain_on_params() const
11811 {
11812   auto res = isl_multi_val_project_domain_on_params(copy());
11813   return manage(res);
11814 }
11815 
range_factor_domain()11816 isl::multi_val multi_val::range_factor_domain() const
11817 {
11818   auto res = isl_multi_val_range_factor_domain(copy());
11819   return manage(res);
11820 }
11821 
range_factor_range()11822 isl::multi_val multi_val::range_factor_range() const
11823 {
11824   auto res = isl_multi_val_range_factor_range(copy());
11825   return manage(res);
11826 }
11827 
range_is_wrapping()11828 boolean multi_val::range_is_wrapping() const
11829 {
11830   auto res = isl_multi_val_range_is_wrapping(get());
11831   return manage(res);
11832 }
11833 
range_product(isl::multi_val multi2)11834 isl::multi_val multi_val::range_product(isl::multi_val multi2) const
11835 {
11836   auto res = isl_multi_val_range_product(copy(), multi2.release());
11837   return manage(res);
11838 }
11839 
range_splice(unsigned int pos,isl::multi_val multi2)11840 isl::multi_val multi_val::range_splice(unsigned int pos, isl::multi_val multi2) const
11841 {
11842   auto res = isl_multi_val_range_splice(copy(), pos, multi2.release());
11843   return manage(res);
11844 }
11845 
reset_tuple_id(isl::dim type)11846 isl::multi_val multi_val::reset_tuple_id(isl::dim type) const
11847 {
11848   auto res = isl_multi_val_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
11849   return manage(res);
11850 }
11851 
reset_user()11852 isl::multi_val multi_val::reset_user() const
11853 {
11854   auto res = isl_multi_val_reset_user(copy());
11855   return manage(res);
11856 }
11857 
scale(isl::multi_val mv)11858 isl::multi_val multi_val::scale(isl::multi_val mv) const
11859 {
11860   auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
11861   return manage(res);
11862 }
11863 
scale(isl::val v)11864 isl::multi_val multi_val::scale(isl::val v) const
11865 {
11866   auto res = isl_multi_val_scale_val(copy(), v.release());
11867   return manage(res);
11868 }
11869 
scale_down(isl::multi_val mv)11870 isl::multi_val multi_val::scale_down(isl::multi_val mv) const
11871 {
11872   auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
11873   return manage(res);
11874 }
11875 
scale_down(isl::val v)11876 isl::multi_val multi_val::scale_down(isl::val v) const
11877 {
11878   auto res = isl_multi_val_scale_down_val(copy(), v.release());
11879   return manage(res);
11880 }
11881 
set_at(int pos,isl::val el)11882 isl::multi_val multi_val::set_at(int pos, isl::val el) const
11883 {
11884   auto res = isl_multi_val_set_at(copy(), pos, el.release());
11885   return manage(res);
11886 }
11887 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)11888 isl::multi_val multi_val::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
11889 {
11890   auto res = isl_multi_val_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
11891   return manage(res);
11892 }
11893 
set_tuple_id(isl::dim type,isl::id id)11894 isl::multi_val multi_val::set_tuple_id(isl::dim type, isl::id id) const
11895 {
11896   auto res = isl_multi_val_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
11897   return manage(res);
11898 }
11899 
set_tuple_name(isl::dim type,const std::string & s)11900 isl::multi_val multi_val::set_tuple_name(isl::dim type, const std::string &s) const
11901 {
11902   auto res = isl_multi_val_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
11903   return manage(res);
11904 }
11905 
set_val(int pos,isl::val el)11906 isl::multi_val multi_val::set_val(int pos, isl::val el) const
11907 {
11908   auto res = isl_multi_val_set_val(copy(), pos, el.release());
11909   return manage(res);
11910 }
11911 
size()11912 isl_size multi_val::size() const
11913 {
11914   auto res = isl_multi_val_size(get());
11915   return res;
11916 }
11917 
splice(unsigned int in_pos,unsigned int out_pos,isl::multi_val multi2)11918 isl::multi_val multi_val::splice(unsigned int in_pos, unsigned int out_pos, isl::multi_val multi2) const
11919 {
11920   auto res = isl_multi_val_splice(copy(), in_pos, out_pos, multi2.release());
11921   return manage(res);
11922 }
11923 
sub(isl::multi_val multi2)11924 isl::multi_val multi_val::sub(isl::multi_val multi2) const
11925 {
11926   auto res = isl_multi_val_sub(copy(), multi2.release());
11927   return manage(res);
11928 }
11929 
zero(isl::space space)11930 isl::multi_val multi_val::zero(isl::space space)
11931 {
11932   auto res = isl_multi_val_zero(space.release());
11933   return manage(res);
11934 }
11935 
11936 // implementations for isl::point
manage(__isl_take isl_point * ptr)11937 point manage(__isl_take isl_point *ptr) {
11938   return point(ptr);
11939 }
manage_copy(__isl_keep isl_point * ptr)11940 point manage_copy(__isl_keep isl_point *ptr) {
11941   ptr = isl_point_copy(ptr);
11942   return point(ptr);
11943 }
11944 
point()11945 point::point()
11946     : ptr(nullptr) {}
11947 
point(const point & obj)11948 point::point(const point &obj)
11949     : ptr(nullptr)
11950 {
11951   ptr = obj.copy();
11952 }
11953 
11954 
point(__isl_take isl_point * ptr)11955 point::point(__isl_take isl_point *ptr)
11956     : ptr(ptr) {}
11957 
point(isl::space dim)11958 point::point(isl::space dim)
11959 {
11960   auto res = isl_point_zero(dim.release());
11961   ptr = res;
11962 }
11963 
11964 point &point::operator=(point obj) {
11965   std::swap(this->ptr, obj.ptr);
11966   return *this;
11967 }
11968 
~point()11969 point::~point() {
11970   if (ptr)
11971     isl_point_free(ptr);
11972 }
11973 
copy()11974 __isl_give isl_point *point::copy() const & {
11975   return isl_point_copy(ptr);
11976 }
11977 
get()11978 __isl_keep isl_point *point::get() const {
11979   return ptr;
11980 }
11981 
release()11982 __isl_give isl_point *point::release() {
11983   isl_point *tmp = ptr;
11984   ptr = nullptr;
11985   return tmp;
11986 }
11987 
is_null()11988 bool point::is_null() const {
11989   return ptr == nullptr;
11990 }
11991 
11992 
ctx()11993 isl::ctx point::ctx() const {
11994   return isl::ctx(isl_point_get_ctx(ptr));
11995 }
11996 
dump()11997 void point::dump() const {
11998   isl_point_dump(get());
11999 }
12000 
12001 
add_ui(isl::dim type,int pos,unsigned int val)12002 isl::point point::add_ui(isl::dim type, int pos, unsigned int val) const
12003 {
12004   auto res = isl_point_add_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
12005   return manage(res);
12006 }
12007 
get_coordinate_val(isl::dim type,int pos)12008 isl::val point::get_coordinate_val(isl::dim type, int pos) const
12009 {
12010   auto res = isl_point_get_coordinate_val(get(), static_cast<enum isl_dim_type>(type), pos);
12011   return manage(res);
12012 }
12013 
get_multi_val()12014 isl::multi_val point::get_multi_val() const
12015 {
12016   auto res = isl_point_get_multi_val(get());
12017   return manage(res);
12018 }
12019 
get_space()12020 isl::space point::get_space() const
12021 {
12022   auto res = isl_point_get_space(get());
12023   return manage(res);
12024 }
12025 
set_coordinate_val(isl::dim type,int pos,isl::val v)12026 isl::point point::set_coordinate_val(isl::dim type, int pos, isl::val v) const
12027 {
12028   auto res = isl_point_set_coordinate_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
12029   return manage(res);
12030 }
12031 
sub_ui(isl::dim type,int pos,unsigned int val)12032 isl::point point::sub_ui(isl::dim type, int pos, unsigned int val) const
12033 {
12034   auto res = isl_point_sub_ui(copy(), static_cast<enum isl_dim_type>(type), pos, val);
12035   return manage(res);
12036 }
12037 
12038 // implementations for isl::pw_aff
manage(__isl_take isl_pw_aff * ptr)12039 pw_aff manage(__isl_take isl_pw_aff *ptr) {
12040   return pw_aff(ptr);
12041 }
manage_copy(__isl_keep isl_pw_aff * ptr)12042 pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
12043   ptr = isl_pw_aff_copy(ptr);
12044   return pw_aff(ptr);
12045 }
12046 
pw_aff()12047 pw_aff::pw_aff()
12048     : ptr(nullptr) {}
12049 
pw_aff(const pw_aff & obj)12050 pw_aff::pw_aff(const pw_aff &obj)
12051     : ptr(nullptr)
12052 {
12053   ptr = obj.copy();
12054 }
12055 
12056 
pw_aff(__isl_take isl_pw_aff * ptr)12057 pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
12058     : ptr(ptr) {}
12059 
pw_aff(isl::aff aff)12060 pw_aff::pw_aff(isl::aff aff)
12061 {
12062   auto res = isl_pw_aff_from_aff(aff.release());
12063   ptr = res;
12064 }
pw_aff(isl::ctx ctx,const std::string & str)12065 pw_aff::pw_aff(isl::ctx ctx, const std::string &str)
12066 {
12067   auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
12068   ptr = res;
12069 }
pw_aff(isl::set domain,isl::val v)12070 pw_aff::pw_aff(isl::set domain, isl::val v)
12071 {
12072   auto res = isl_pw_aff_val_on_domain(domain.release(), v.release());
12073   ptr = res;
12074 }
pw_aff(isl::local_space ls)12075 pw_aff::pw_aff(isl::local_space ls)
12076 {
12077   auto res = isl_pw_aff_zero_on_domain(ls.release());
12078   ptr = res;
12079 }
12080 
12081 pw_aff &pw_aff::operator=(pw_aff obj) {
12082   std::swap(this->ptr, obj.ptr);
12083   return *this;
12084 }
12085 
~pw_aff()12086 pw_aff::~pw_aff() {
12087   if (ptr)
12088     isl_pw_aff_free(ptr);
12089 }
12090 
copy()12091 __isl_give isl_pw_aff *pw_aff::copy() const & {
12092   return isl_pw_aff_copy(ptr);
12093 }
12094 
get()12095 __isl_keep isl_pw_aff *pw_aff::get() const {
12096   return ptr;
12097 }
12098 
release()12099 __isl_give isl_pw_aff *pw_aff::release() {
12100   isl_pw_aff *tmp = ptr;
12101   ptr = nullptr;
12102   return tmp;
12103 }
12104 
is_null()12105 bool pw_aff::is_null() const {
12106   return ptr == nullptr;
12107 }
12108 
12109 
ctx()12110 isl::ctx pw_aff::ctx() const {
12111   return isl::ctx(isl_pw_aff_get_ctx(ptr));
12112 }
12113 
dump()12114 void pw_aff::dump() const {
12115   isl_pw_aff_dump(get());
12116 }
12117 
12118 
add(isl::pw_aff pwaff2)12119 isl::pw_aff pw_aff::add(isl::pw_aff pwaff2) const
12120 {
12121   auto res = isl_pw_aff_add(copy(), pwaff2.release());
12122   return manage(res);
12123 }
12124 
add_constant(isl::val v)12125 isl::pw_aff pw_aff::add_constant(isl::val v) const
12126 {
12127   auto res = isl_pw_aff_add_constant_val(copy(), v.release());
12128   return manage(res);
12129 }
12130 
add_dims(isl::dim type,unsigned int n)12131 isl::pw_aff pw_aff::add_dims(isl::dim type, unsigned int n) const
12132 {
12133   auto res = isl_pw_aff_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
12134   return manage(res);
12135 }
12136 
align_params(isl::space model)12137 isl::pw_aff pw_aff::align_params(isl::space model) const
12138 {
12139   auto res = isl_pw_aff_align_params(copy(), model.release());
12140   return manage(res);
12141 }
12142 
alloc(isl::set set,isl::aff aff)12143 isl::pw_aff pw_aff::alloc(isl::set set, isl::aff aff)
12144 {
12145   auto res = isl_pw_aff_alloc(set.release(), aff.release());
12146   return manage(res);
12147 }
12148 
as_aff()12149 isl::aff pw_aff::as_aff() const
12150 {
12151   auto res = isl_pw_aff_as_aff(copy());
12152   return manage(res);
12153 }
12154 
bind(isl::id id)12155 isl::set pw_aff::bind(isl::id id) const
12156 {
12157   auto res = isl_pw_aff_bind_id(copy(), id.release());
12158   return manage(res);
12159 }
12160 
bind_domain(isl::multi_id tuple)12161 isl::pw_aff pw_aff::bind_domain(isl::multi_id tuple) const
12162 {
12163   auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
12164   return manage(res);
12165 }
12166 
bind_domain_wrapped_domain(isl::multi_id tuple)12167 isl::pw_aff pw_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
12168 {
12169   auto res = isl_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
12170   return manage(res);
12171 }
12172 
ceil()12173 isl::pw_aff pw_aff::ceil() const
12174 {
12175   auto res = isl_pw_aff_ceil(copy());
12176   return manage(res);
12177 }
12178 
coalesce()12179 isl::pw_aff pw_aff::coalesce() const
12180 {
12181   auto res = isl_pw_aff_coalesce(copy());
12182   return manage(res);
12183 }
12184 
cond(isl::pw_aff pwaff_true,isl::pw_aff pwaff_false)12185 isl::pw_aff pw_aff::cond(isl::pw_aff pwaff_true, isl::pw_aff pwaff_false) const
12186 {
12187   auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
12188   return manage(res);
12189 }
12190 
dim(isl::dim type)12191 isl_size pw_aff::dim(isl::dim type) const
12192 {
12193   auto res = isl_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
12194   return res;
12195 }
12196 
div(isl::pw_aff pa2)12197 isl::pw_aff pw_aff::div(isl::pw_aff pa2) const
12198 {
12199   auto res = isl_pw_aff_div(copy(), pa2.release());
12200   return manage(res);
12201 }
12202 
domain()12203 isl::set pw_aff::domain() const
12204 {
12205   auto res = isl_pw_aff_domain(copy());
12206   return manage(res);
12207 }
12208 
drop_dims(isl::dim type,unsigned int first,unsigned int n)12209 isl::pw_aff pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
12210 {
12211   auto res = isl_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12212   return manage(res);
12213 }
12214 
drop_unused_params()12215 isl::pw_aff pw_aff::drop_unused_params() const
12216 {
12217   auto res = isl_pw_aff_drop_unused_params(copy());
12218   return manage(res);
12219 }
12220 
empty(isl::space space)12221 isl::pw_aff pw_aff::empty(isl::space space)
12222 {
12223   auto res = isl_pw_aff_empty(space.release());
12224   return manage(res);
12225 }
12226 
eq_map(isl::pw_aff pa2)12227 isl::map pw_aff::eq_map(isl::pw_aff pa2) const
12228 {
12229   auto res = isl_pw_aff_eq_map(copy(), pa2.release());
12230   return manage(res);
12231 }
12232 
eq_set(isl::pw_aff pwaff2)12233 isl::set pw_aff::eq_set(isl::pw_aff pwaff2) const
12234 {
12235   auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
12236   return manage(res);
12237 }
12238 
eval(isl::point pnt)12239 isl::val pw_aff::eval(isl::point pnt) const
12240 {
12241   auto res = isl_pw_aff_eval(copy(), pnt.release());
12242   return manage(res);
12243 }
12244 
find_dim_by_name(isl::dim type,const std::string & name)12245 int pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
12246 {
12247   auto res = isl_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
12248   return res;
12249 }
12250 
floor()12251 isl::pw_aff pw_aff::floor() const
12252 {
12253   auto res = isl_pw_aff_floor(copy());
12254   return manage(res);
12255 }
12256 
foreach_piece(const std::function<stat (set,aff)> & fn)12257 stat pw_aff::foreach_piece(const std::function<stat(set, aff)> &fn) const
12258 {
12259   struct fn_data {
12260     const std::function<stat(set, aff)> *func;
12261   } fn_data = { &fn };
12262   auto fn_lambda = [](isl_set *arg_0, isl_aff *arg_1, void *arg_2) -> isl_stat {
12263     auto *data = static_cast<struct fn_data *>(arg_2);
12264     stat ret = (*data->func)(manage(arg_0), manage(arg_1));
12265     return ret.release();
12266   };
12267   auto res = isl_pw_aff_foreach_piece(get(), fn_lambda, &fn_data);
12268   return manage(res);
12269 }
12270 
from_range()12271 isl::pw_aff pw_aff::from_range() const
12272 {
12273   auto res = isl_pw_aff_from_range(copy());
12274   return manage(res);
12275 }
12276 
ge_map(isl::pw_aff pa2)12277 isl::map pw_aff::ge_map(isl::pw_aff pa2) const
12278 {
12279   auto res = isl_pw_aff_ge_map(copy(), pa2.release());
12280   return manage(res);
12281 }
12282 
ge_set(isl::pw_aff pwaff2)12283 isl::set pw_aff::ge_set(isl::pw_aff pwaff2) const
12284 {
12285   auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
12286   return manage(res);
12287 }
12288 
get_dim_id(isl::dim type,unsigned int pos)12289 isl::id pw_aff::get_dim_id(isl::dim type, unsigned int pos) const
12290 {
12291   auto res = isl_pw_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12292   return manage(res);
12293 }
12294 
get_dim_name(isl::dim type,unsigned int pos)12295 std::string pw_aff::get_dim_name(isl::dim type, unsigned int pos) const
12296 {
12297   auto res = isl_pw_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
12298   std::string tmp(res);
12299   return tmp;
12300 }
12301 
get_domain_space()12302 isl::space pw_aff::get_domain_space() const
12303 {
12304   auto res = isl_pw_aff_get_domain_space(get());
12305   return manage(res);
12306 }
12307 
get_hash()12308 uint32_t pw_aff::get_hash() const
12309 {
12310   auto res = isl_pw_aff_get_hash(get());
12311   return res;
12312 }
12313 
get_space()12314 isl::space pw_aff::get_space() const
12315 {
12316   auto res = isl_pw_aff_get_space(get());
12317   return manage(res);
12318 }
12319 
get_tuple_id(isl::dim type)12320 isl::id pw_aff::get_tuple_id(isl::dim type) const
12321 {
12322   auto res = isl_pw_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12323   return manage(res);
12324 }
12325 
gist(isl::set context)12326 isl::pw_aff pw_aff::gist(isl::set context) const
12327 {
12328   auto res = isl_pw_aff_gist(copy(), context.release());
12329   return manage(res);
12330 }
12331 
gist_params(isl::set context)12332 isl::pw_aff pw_aff::gist_params(isl::set context) const
12333 {
12334   auto res = isl_pw_aff_gist_params(copy(), context.release());
12335   return manage(res);
12336 }
12337 
gt_map(isl::pw_aff pa2)12338 isl::map pw_aff::gt_map(isl::pw_aff pa2) const
12339 {
12340   auto res = isl_pw_aff_gt_map(copy(), pa2.release());
12341   return manage(res);
12342 }
12343 
gt_set(isl::pw_aff pwaff2)12344 isl::set pw_aff::gt_set(isl::pw_aff pwaff2) const
12345 {
12346   auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
12347   return manage(res);
12348 }
12349 
has_dim_id(isl::dim type,unsigned int pos)12350 boolean pw_aff::has_dim_id(isl::dim type, unsigned int pos) const
12351 {
12352   auto res = isl_pw_aff_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
12353   return manage(res);
12354 }
12355 
has_tuple_id(isl::dim type)12356 boolean pw_aff::has_tuple_id(isl::dim type) const
12357 {
12358   auto res = isl_pw_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
12359   return manage(res);
12360 }
12361 
insert_dims(isl::dim type,unsigned int first,unsigned int n)12362 isl::pw_aff pw_aff::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
12363 {
12364   auto res = isl_pw_aff_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
12365   return manage(res);
12366 }
12367 
insert_domain(isl::space domain)12368 isl::pw_aff pw_aff::insert_domain(isl::space domain) const
12369 {
12370   auto res = isl_pw_aff_insert_domain(copy(), domain.release());
12371   return manage(res);
12372 }
12373 
intersect_domain(isl::set set)12374 isl::pw_aff pw_aff::intersect_domain(isl::set set) const
12375 {
12376   auto res = isl_pw_aff_intersect_domain(copy(), set.release());
12377   return manage(res);
12378 }
12379 
intersect_domain_wrapped_domain(isl::set set)12380 isl::pw_aff pw_aff::intersect_domain_wrapped_domain(isl::set set) const
12381 {
12382   auto res = isl_pw_aff_intersect_domain_wrapped_domain(copy(), set.release());
12383   return manage(res);
12384 }
12385 
intersect_domain_wrapped_range(isl::set set)12386 isl::pw_aff pw_aff::intersect_domain_wrapped_range(isl::set set) const
12387 {
12388   auto res = isl_pw_aff_intersect_domain_wrapped_range(copy(), set.release());
12389   return manage(res);
12390 }
12391 
intersect_params(isl::set set)12392 isl::pw_aff pw_aff::intersect_params(isl::set set) const
12393 {
12394   auto res = isl_pw_aff_intersect_params(copy(), set.release());
12395   return manage(res);
12396 }
12397 
involves_dims(isl::dim type,unsigned int first,unsigned int n)12398 boolean pw_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
12399 {
12400   auto res = isl_pw_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
12401   return manage(res);
12402 }
12403 
involves_nan()12404 boolean pw_aff::involves_nan() const
12405 {
12406   auto res = isl_pw_aff_involves_nan(get());
12407   return manage(res);
12408 }
12409 
involves_param_id(const isl::id & id)12410 boolean pw_aff::involves_param_id(const isl::id &id) const
12411 {
12412   auto res = isl_pw_aff_involves_param_id(get(), id.get());
12413   return manage(res);
12414 }
12415 
is_cst()12416 boolean pw_aff::is_cst() const
12417 {
12418   auto res = isl_pw_aff_is_cst(get());
12419   return manage(res);
12420 }
12421 
is_empty()12422 boolean pw_aff::is_empty() const
12423 {
12424   auto res = isl_pw_aff_is_empty(get());
12425   return manage(res);
12426 }
12427 
is_equal(const isl::pw_aff & pa2)12428 boolean pw_aff::is_equal(const isl::pw_aff &pa2) const
12429 {
12430   auto res = isl_pw_aff_is_equal(get(), pa2.get());
12431   return manage(res);
12432 }
12433 
isa_aff()12434 boolean pw_aff::isa_aff() const
12435 {
12436   auto res = isl_pw_aff_isa_aff(get());
12437   return manage(res);
12438 }
12439 
le_map(isl::pw_aff pa2)12440 isl::map pw_aff::le_map(isl::pw_aff pa2) const
12441 {
12442   auto res = isl_pw_aff_le_map(copy(), pa2.release());
12443   return manage(res);
12444 }
12445 
le_set(isl::pw_aff pwaff2)12446 isl::set pw_aff::le_set(isl::pw_aff pwaff2) const
12447 {
12448   auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
12449   return manage(res);
12450 }
12451 
lt_map(isl::pw_aff pa2)12452 isl::map pw_aff::lt_map(isl::pw_aff pa2) const
12453 {
12454   auto res = isl_pw_aff_lt_map(copy(), pa2.release());
12455   return manage(res);
12456 }
12457 
lt_set(isl::pw_aff pwaff2)12458 isl::set pw_aff::lt_set(isl::pw_aff pwaff2) const
12459 {
12460   auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
12461   return manage(res);
12462 }
12463 
max(isl::pw_aff pwaff2)12464 isl::pw_aff pw_aff::max(isl::pw_aff pwaff2) const
12465 {
12466   auto res = isl_pw_aff_max(copy(), pwaff2.release());
12467   return manage(res);
12468 }
12469 
min(isl::pw_aff pwaff2)12470 isl::pw_aff pw_aff::min(isl::pw_aff pwaff2) const
12471 {
12472   auto res = isl_pw_aff_min(copy(), pwaff2.release());
12473   return manage(res);
12474 }
12475 
mod(isl::val mod)12476 isl::pw_aff pw_aff::mod(isl::val mod) const
12477 {
12478   auto res = isl_pw_aff_mod_val(copy(), mod.release());
12479   return manage(res);
12480 }
12481 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)12482 isl::pw_aff pw_aff::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
12483 {
12484   auto res = isl_pw_aff_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
12485   return manage(res);
12486 }
12487 
mul(isl::pw_aff pwaff2)12488 isl::pw_aff pw_aff::mul(isl::pw_aff pwaff2) const
12489 {
12490   auto res = isl_pw_aff_mul(copy(), pwaff2.release());
12491   return manage(res);
12492 }
12493 
n_piece()12494 isl_size pw_aff::n_piece() const
12495 {
12496   auto res = isl_pw_aff_n_piece(get());
12497   return res;
12498 }
12499 
nan_on_domain(isl::local_space ls)12500 isl::pw_aff pw_aff::nan_on_domain(isl::local_space ls)
12501 {
12502   auto res = isl_pw_aff_nan_on_domain(ls.release());
12503   return manage(res);
12504 }
12505 
nan_on_domain_space(isl::space space)12506 isl::pw_aff pw_aff::nan_on_domain_space(isl::space space)
12507 {
12508   auto res = isl_pw_aff_nan_on_domain_space(space.release());
12509   return manage(res);
12510 }
12511 
ne_set(isl::pw_aff pwaff2)12512 isl::set pw_aff::ne_set(isl::pw_aff pwaff2) const
12513 {
12514   auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
12515   return manage(res);
12516 }
12517 
neg()12518 isl::pw_aff pw_aff::neg() const
12519 {
12520   auto res = isl_pw_aff_neg(copy());
12521   return manage(res);
12522 }
12523 
non_zero_set()12524 isl::set pw_aff::non_zero_set() const
12525 {
12526   auto res = isl_pw_aff_non_zero_set(copy());
12527   return manage(res);
12528 }
12529 
nonneg_set()12530 isl::set pw_aff::nonneg_set() const
12531 {
12532   auto res = isl_pw_aff_nonneg_set(copy());
12533   return manage(res);
12534 }
12535 
param_on_domain(isl::set domain,isl::id id)12536 isl::pw_aff pw_aff::param_on_domain(isl::set domain, isl::id id)
12537 {
12538   auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
12539   return manage(res);
12540 }
12541 
params()12542 isl::set pw_aff::params() const
12543 {
12544   auto res = isl_pw_aff_params(copy());
12545   return manage(res);
12546 }
12547 
plain_cmp(const isl::pw_aff & pa2)12548 int pw_aff::plain_cmp(const isl::pw_aff &pa2) const
12549 {
12550   auto res = isl_pw_aff_plain_cmp(get(), pa2.get());
12551   return res;
12552 }
12553 
plain_is_equal(const isl::pw_aff & pwaff2)12554 boolean pw_aff::plain_is_equal(const isl::pw_aff &pwaff2) const
12555 {
12556   auto res = isl_pw_aff_plain_is_equal(get(), pwaff2.get());
12557   return manage(res);
12558 }
12559 
pos_set()12560 isl::set pw_aff::pos_set() const
12561 {
12562   auto res = isl_pw_aff_pos_set(copy());
12563   return manage(res);
12564 }
12565 
project_domain_on_params()12566 isl::pw_aff pw_aff::project_domain_on_params() const
12567 {
12568   auto res = isl_pw_aff_project_domain_on_params(copy());
12569   return manage(res);
12570 }
12571 
pullback(isl::multi_aff ma)12572 isl::pw_aff pw_aff::pullback(isl::multi_aff ma) const
12573 {
12574   auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
12575   return manage(res);
12576 }
12577 
pullback(isl::multi_pw_aff mpa)12578 isl::pw_aff pw_aff::pullback(isl::multi_pw_aff mpa) const
12579 {
12580   auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
12581   return manage(res);
12582 }
12583 
pullback(isl::pw_multi_aff pma)12584 isl::pw_aff pw_aff::pullback(isl::pw_multi_aff pma) const
12585 {
12586   auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
12587   return manage(res);
12588 }
12589 
reset_tuple_id(isl::dim type)12590 isl::pw_aff pw_aff::reset_tuple_id(isl::dim type) const
12591 {
12592   auto res = isl_pw_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
12593   return manage(res);
12594 }
12595 
reset_user()12596 isl::pw_aff pw_aff::reset_user() const
12597 {
12598   auto res = isl_pw_aff_reset_user(copy());
12599   return manage(res);
12600 }
12601 
scale(isl::val v)12602 isl::pw_aff pw_aff::scale(isl::val v) const
12603 {
12604   auto res = isl_pw_aff_scale_val(copy(), v.release());
12605   return manage(res);
12606 }
12607 
scale_down(isl::val f)12608 isl::pw_aff pw_aff::scale_down(isl::val f) const
12609 {
12610   auto res = isl_pw_aff_scale_down_val(copy(), f.release());
12611   return manage(res);
12612 }
12613 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)12614 isl::pw_aff pw_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
12615 {
12616   auto res = isl_pw_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
12617   return manage(res);
12618 }
12619 
set_tuple_id(isl::dim type,isl::id id)12620 isl::pw_aff pw_aff::set_tuple_id(isl::dim type, isl::id id) const
12621 {
12622   auto res = isl_pw_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
12623   return manage(res);
12624 }
12625 
sub(isl::pw_aff pwaff2)12626 isl::pw_aff pw_aff::sub(isl::pw_aff pwaff2) const
12627 {
12628   auto res = isl_pw_aff_sub(copy(), pwaff2.release());
12629   return manage(res);
12630 }
12631 
subtract_domain(isl::set set)12632 isl::pw_aff pw_aff::subtract_domain(isl::set set) const
12633 {
12634   auto res = isl_pw_aff_subtract_domain(copy(), set.release());
12635   return manage(res);
12636 }
12637 
tdiv_q(isl::pw_aff pa2)12638 isl::pw_aff pw_aff::tdiv_q(isl::pw_aff pa2) const
12639 {
12640   auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
12641   return manage(res);
12642 }
12643 
tdiv_r(isl::pw_aff pa2)12644 isl::pw_aff pw_aff::tdiv_r(isl::pw_aff pa2) const
12645 {
12646   auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
12647   return manage(res);
12648 }
12649 
union_add(isl::pw_aff pwaff2)12650 isl::pw_aff pw_aff::union_add(isl::pw_aff pwaff2) const
12651 {
12652   auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
12653   return manage(res);
12654 }
12655 
union_max(isl::pw_aff pwaff2)12656 isl::pw_aff pw_aff::union_max(isl::pw_aff pwaff2) const
12657 {
12658   auto res = isl_pw_aff_union_max(copy(), pwaff2.release());
12659   return manage(res);
12660 }
12661 
union_min(isl::pw_aff pwaff2)12662 isl::pw_aff pw_aff::union_min(isl::pw_aff pwaff2) const
12663 {
12664   auto res = isl_pw_aff_union_min(copy(), pwaff2.release());
12665   return manage(res);
12666 }
12667 
var_on_domain(isl::local_space ls,isl::dim type,unsigned int pos)12668 isl::pw_aff pw_aff::var_on_domain(isl::local_space ls, isl::dim type, unsigned int pos)
12669 {
12670   auto res = isl_pw_aff_var_on_domain(ls.release(), static_cast<enum isl_dim_type>(type), pos);
12671   return manage(res);
12672 }
12673 
zero_set()12674 isl::set pw_aff::zero_set() const
12675 {
12676   auto res = isl_pw_aff_zero_set(copy());
12677   return manage(res);
12678 }
12679 
12680 // implementations for isl::pw_aff_list
manage(__isl_take isl_pw_aff_list * ptr)12681 pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
12682   return pw_aff_list(ptr);
12683 }
manage_copy(__isl_keep isl_pw_aff_list * ptr)12684 pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
12685   ptr = isl_pw_aff_list_copy(ptr);
12686   return pw_aff_list(ptr);
12687 }
12688 
pw_aff_list()12689 pw_aff_list::pw_aff_list()
12690     : ptr(nullptr) {}
12691 
pw_aff_list(const pw_aff_list & obj)12692 pw_aff_list::pw_aff_list(const pw_aff_list &obj)
12693     : ptr(nullptr)
12694 {
12695   ptr = obj.copy();
12696 }
12697 
12698 
pw_aff_list(__isl_take isl_pw_aff_list * ptr)12699 pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
12700     : ptr(ptr) {}
12701 
12702 
12703 pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
12704   std::swap(this->ptr, obj.ptr);
12705   return *this;
12706 }
12707 
~pw_aff_list()12708 pw_aff_list::~pw_aff_list() {
12709   if (ptr)
12710     isl_pw_aff_list_free(ptr);
12711 }
12712 
copy()12713 __isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
12714   return isl_pw_aff_list_copy(ptr);
12715 }
12716 
get()12717 __isl_keep isl_pw_aff_list *pw_aff_list::get() const {
12718   return ptr;
12719 }
12720 
release()12721 __isl_give isl_pw_aff_list *pw_aff_list::release() {
12722   isl_pw_aff_list *tmp = ptr;
12723   ptr = nullptr;
12724   return tmp;
12725 }
12726 
is_null()12727 bool pw_aff_list::is_null() const {
12728   return ptr == nullptr;
12729 }
12730 
12731 
ctx()12732 isl::ctx pw_aff_list::ctx() const {
12733   return isl::ctx(isl_pw_aff_list_get_ctx(ptr));
12734 }
12735 
dump()12736 void pw_aff_list::dump() const {
12737   isl_pw_aff_list_dump(get());
12738 }
12739 
12740 
add(isl::pw_aff el)12741 isl::pw_aff_list pw_aff_list::add(isl::pw_aff el) const
12742 {
12743   auto res = isl_pw_aff_list_add(copy(), el.release());
12744   return manage(res);
12745 }
12746 
alloc(isl::ctx ctx,int n)12747 isl::pw_aff_list pw_aff_list::alloc(isl::ctx ctx, int n)
12748 {
12749   auto res = isl_pw_aff_list_alloc(ctx.release(), n);
12750   return manage(res);
12751 }
12752 
clear()12753 isl::pw_aff_list pw_aff_list::clear() const
12754 {
12755   auto res = isl_pw_aff_list_clear(copy());
12756   return manage(res);
12757 }
12758 
concat(isl::pw_aff_list list2)12759 isl::pw_aff_list pw_aff_list::concat(isl::pw_aff_list list2) const
12760 {
12761   auto res = isl_pw_aff_list_concat(copy(), list2.release());
12762   return manage(res);
12763 }
12764 
drop(unsigned int first,unsigned int n)12765 isl::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
12766 {
12767   auto res = isl_pw_aff_list_drop(copy(), first, n);
12768   return manage(res);
12769 }
12770 
eq_set(isl::pw_aff_list list2)12771 isl::set pw_aff_list::eq_set(isl::pw_aff_list list2) const
12772 {
12773   auto res = isl_pw_aff_list_eq_set(copy(), list2.release());
12774   return manage(res);
12775 }
12776 
foreach(const std::function<stat (pw_aff)> & fn)12777 stat pw_aff_list::foreach(const std::function<stat(pw_aff)> &fn) const
12778 {
12779   struct fn_data {
12780     const std::function<stat(pw_aff)> *func;
12781   } fn_data = { &fn };
12782   auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
12783     auto *data = static_cast<struct fn_data *>(arg_1);
12784     stat ret = (*data->func)(manage(arg_0));
12785     return ret.release();
12786   };
12787   auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
12788   return manage(res);
12789 }
12790 
from_pw_aff(isl::pw_aff el)12791 isl::pw_aff_list pw_aff_list::from_pw_aff(isl::pw_aff el)
12792 {
12793   auto res = isl_pw_aff_list_from_pw_aff(el.release());
12794   return manage(res);
12795 }
12796 
ge_set(isl::pw_aff_list list2)12797 isl::set pw_aff_list::ge_set(isl::pw_aff_list list2) const
12798 {
12799   auto res = isl_pw_aff_list_ge_set(copy(), list2.release());
12800   return manage(res);
12801 }
12802 
get_at(int index)12803 isl::pw_aff pw_aff_list::get_at(int index) const
12804 {
12805   auto res = isl_pw_aff_list_get_at(get(), index);
12806   return manage(res);
12807 }
12808 
get_pw_aff(int index)12809 isl::pw_aff pw_aff_list::get_pw_aff(int index) const
12810 {
12811   auto res = isl_pw_aff_list_get_pw_aff(get(), index);
12812   return manage(res);
12813 }
12814 
gt_set(isl::pw_aff_list list2)12815 isl::set pw_aff_list::gt_set(isl::pw_aff_list list2) const
12816 {
12817   auto res = isl_pw_aff_list_gt_set(copy(), list2.release());
12818   return manage(res);
12819 }
12820 
insert(unsigned int pos,isl::pw_aff el)12821 isl::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::pw_aff el) const
12822 {
12823   auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
12824   return manage(res);
12825 }
12826 
le_set(isl::pw_aff_list list2)12827 isl::set pw_aff_list::le_set(isl::pw_aff_list list2) const
12828 {
12829   auto res = isl_pw_aff_list_le_set(copy(), list2.release());
12830   return manage(res);
12831 }
12832 
lt_set(isl::pw_aff_list list2)12833 isl::set pw_aff_list::lt_set(isl::pw_aff_list list2) const
12834 {
12835   auto res = isl_pw_aff_list_lt_set(copy(), list2.release());
12836   return manage(res);
12837 }
12838 
max()12839 isl::pw_aff pw_aff_list::max() const
12840 {
12841   auto res = isl_pw_aff_list_max(copy());
12842   return manage(res);
12843 }
12844 
min()12845 isl::pw_aff pw_aff_list::min() const
12846 {
12847   auto res = isl_pw_aff_list_min(copy());
12848   return manage(res);
12849 }
12850 
n_pw_aff()12851 isl_size pw_aff_list::n_pw_aff() const
12852 {
12853   auto res = isl_pw_aff_list_n_pw_aff(get());
12854   return res;
12855 }
12856 
ne_set(isl::pw_aff_list list2)12857 isl::set pw_aff_list::ne_set(isl::pw_aff_list list2) const
12858 {
12859   auto res = isl_pw_aff_list_ne_set(copy(), list2.release());
12860   return manage(res);
12861 }
12862 
reverse()12863 isl::pw_aff_list pw_aff_list::reverse() const
12864 {
12865   auto res = isl_pw_aff_list_reverse(copy());
12866   return manage(res);
12867 }
12868 
set_pw_aff(int index,isl::pw_aff el)12869 isl::pw_aff_list pw_aff_list::set_pw_aff(int index, isl::pw_aff el) const
12870 {
12871   auto res = isl_pw_aff_list_set_pw_aff(copy(), index, el.release());
12872   return manage(res);
12873 }
12874 
size()12875 isl_size pw_aff_list::size() const
12876 {
12877   auto res = isl_pw_aff_list_size(get());
12878   return res;
12879 }
12880 
swap(unsigned int pos1,unsigned int pos2)12881 isl::pw_aff_list pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const
12882 {
12883   auto res = isl_pw_aff_list_swap(copy(), pos1, pos2);
12884   return manage(res);
12885 }
12886 
12887 // implementations for isl::pw_multi_aff
manage(__isl_take isl_pw_multi_aff * ptr)12888 pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
12889   return pw_multi_aff(ptr);
12890 }
manage_copy(__isl_keep isl_pw_multi_aff * ptr)12891 pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
12892   ptr = isl_pw_multi_aff_copy(ptr);
12893   return pw_multi_aff(ptr);
12894 }
12895 
pw_multi_aff()12896 pw_multi_aff::pw_multi_aff()
12897     : ptr(nullptr) {}
12898 
pw_multi_aff(const pw_multi_aff & obj)12899 pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
12900     : ptr(nullptr)
12901 {
12902   ptr = obj.copy();
12903 }
12904 
12905 
pw_multi_aff(__isl_take isl_pw_multi_aff * ptr)12906 pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
12907     : ptr(ptr) {}
12908 
pw_multi_aff(isl::multi_aff ma)12909 pw_multi_aff::pw_multi_aff(isl::multi_aff ma)
12910 {
12911   auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
12912   ptr = res;
12913 }
pw_multi_aff(isl::pw_aff pa)12914 pw_multi_aff::pw_multi_aff(isl::pw_aff pa)
12915 {
12916   auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
12917   ptr = res;
12918 }
pw_multi_aff(isl::ctx ctx,const std::string & str)12919 pw_multi_aff::pw_multi_aff(isl::ctx ctx, const std::string &str)
12920 {
12921   auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
12922   ptr = res;
12923 }
12924 
12925 pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
12926   std::swap(this->ptr, obj.ptr);
12927   return *this;
12928 }
12929 
~pw_multi_aff()12930 pw_multi_aff::~pw_multi_aff() {
12931   if (ptr)
12932     isl_pw_multi_aff_free(ptr);
12933 }
12934 
copy()12935 __isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
12936   return isl_pw_multi_aff_copy(ptr);
12937 }
12938 
get()12939 __isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
12940   return ptr;
12941 }
12942 
release()12943 __isl_give isl_pw_multi_aff *pw_multi_aff::release() {
12944   isl_pw_multi_aff *tmp = ptr;
12945   ptr = nullptr;
12946   return tmp;
12947 }
12948 
is_null()12949 bool pw_multi_aff::is_null() const {
12950   return ptr == nullptr;
12951 }
12952 
12953 
ctx()12954 isl::ctx pw_multi_aff::ctx() const {
12955   return isl::ctx(isl_pw_multi_aff_get_ctx(ptr));
12956 }
12957 
dump()12958 void pw_multi_aff::dump() const {
12959   isl_pw_multi_aff_dump(get());
12960 }
12961 
12962 
add(isl::pw_multi_aff pma2)12963 isl::pw_multi_aff pw_multi_aff::add(isl::pw_multi_aff pma2) const
12964 {
12965   auto res = isl_pw_multi_aff_add(copy(), pma2.release());
12966   return manage(res);
12967 }
12968 
add_constant(isl::multi_val mv)12969 isl::pw_multi_aff pw_multi_aff::add_constant(isl::multi_val mv) const
12970 {
12971   auto res = isl_pw_multi_aff_add_constant_multi_val(copy(), mv.release());
12972   return manage(res);
12973 }
12974 
add_constant(isl::val v)12975 isl::pw_multi_aff pw_multi_aff::add_constant(isl::val v) const
12976 {
12977   auto res = isl_pw_multi_aff_add_constant_val(copy(), v.release());
12978   return manage(res);
12979 }
12980 
align_params(isl::space model)12981 isl::pw_multi_aff pw_multi_aff::align_params(isl::space model) const
12982 {
12983   auto res = isl_pw_multi_aff_align_params(copy(), model.release());
12984   return manage(res);
12985 }
12986 
alloc(isl::set set,isl::multi_aff maff)12987 isl::pw_multi_aff pw_multi_aff::alloc(isl::set set, isl::multi_aff maff)
12988 {
12989   auto res = isl_pw_multi_aff_alloc(set.release(), maff.release());
12990   return manage(res);
12991 }
12992 
as_multi_aff()12993 isl::multi_aff pw_multi_aff::as_multi_aff() const
12994 {
12995   auto res = isl_pw_multi_aff_as_multi_aff(copy());
12996   return manage(res);
12997 }
12998 
bind_domain(isl::multi_id tuple)12999 isl::pw_multi_aff pw_multi_aff::bind_domain(isl::multi_id tuple) const
13000 {
13001   auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
13002   return manage(res);
13003 }
13004 
bind_domain_wrapped_domain(isl::multi_id tuple)13005 isl::pw_multi_aff pw_multi_aff::bind_domain_wrapped_domain(isl::multi_id tuple) const
13006 {
13007   auto res = isl_pw_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
13008   return manage(res);
13009 }
13010 
coalesce()13011 isl::pw_multi_aff pw_multi_aff::coalesce() const
13012 {
13013   auto res = isl_pw_multi_aff_coalesce(copy());
13014   return manage(res);
13015 }
13016 
dim(isl::dim type)13017 isl_size pw_multi_aff::dim(isl::dim type) const
13018 {
13019   auto res = isl_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
13020   return res;
13021 }
13022 
domain()13023 isl::set pw_multi_aff::domain() const
13024 {
13025   auto res = isl_pw_multi_aff_domain(copy());
13026   return manage(res);
13027 }
13028 
domain_map(isl::space space)13029 isl::pw_multi_aff pw_multi_aff::domain_map(isl::space space)
13030 {
13031   auto res = isl_pw_multi_aff_domain_map(space.release());
13032   return manage(res);
13033 }
13034 
drop_dims(isl::dim type,unsigned int first,unsigned int n)13035 isl::pw_multi_aff pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
13036 {
13037   auto res = isl_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13038   return manage(res);
13039 }
13040 
drop_unused_params()13041 isl::pw_multi_aff pw_multi_aff::drop_unused_params() const
13042 {
13043   auto res = isl_pw_multi_aff_drop_unused_params(copy());
13044   return manage(res);
13045 }
13046 
empty(isl::space space)13047 isl::pw_multi_aff pw_multi_aff::empty(isl::space space)
13048 {
13049   auto res = isl_pw_multi_aff_empty(space.release());
13050   return manage(res);
13051 }
13052 
find_dim_by_name(isl::dim type,const std::string & name)13053 int pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
13054 {
13055   auto res = isl_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
13056   return res;
13057 }
13058 
fix_si(isl::dim type,unsigned int pos,int value)13059 isl::pw_multi_aff pw_multi_aff::fix_si(isl::dim type, unsigned int pos, int value) const
13060 {
13061   auto res = isl_pw_multi_aff_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
13062   return manage(res);
13063 }
13064 
flat_range_product(isl::pw_multi_aff pma2)13065 isl::pw_multi_aff pw_multi_aff::flat_range_product(isl::pw_multi_aff pma2) const
13066 {
13067   auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
13068   return manage(res);
13069 }
13070 
foreach_piece(const std::function<stat (set,multi_aff)> & fn)13071 stat pw_multi_aff::foreach_piece(const std::function<stat(set, multi_aff)> &fn) const
13072 {
13073   struct fn_data {
13074     const std::function<stat(set, multi_aff)> *func;
13075   } fn_data = { &fn };
13076   auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
13077     auto *data = static_cast<struct fn_data *>(arg_2);
13078     stat ret = (*data->func)(manage(arg_0), manage(arg_1));
13079     return ret.release();
13080   };
13081   auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
13082   return manage(res);
13083 }
13084 
from_domain(isl::set set)13085 isl::pw_multi_aff pw_multi_aff::from_domain(isl::set set)
13086 {
13087   auto res = isl_pw_multi_aff_from_domain(set.release());
13088   return manage(res);
13089 }
13090 
from_map(isl::map map)13091 isl::pw_multi_aff pw_multi_aff::from_map(isl::map map)
13092 {
13093   auto res = isl_pw_multi_aff_from_map(map.release());
13094   return manage(res);
13095 }
13096 
from_multi_pw_aff(isl::multi_pw_aff mpa)13097 isl::pw_multi_aff pw_multi_aff::from_multi_pw_aff(isl::multi_pw_aff mpa)
13098 {
13099   auto res = isl_pw_multi_aff_from_multi_pw_aff(mpa.release());
13100   return manage(res);
13101 }
13102 
from_set(isl::set set)13103 isl::pw_multi_aff pw_multi_aff::from_set(isl::set set)
13104 {
13105   auto res = isl_pw_multi_aff_from_set(set.release());
13106   return manage(res);
13107 }
13108 
get_dim_id(isl::dim type,unsigned int pos)13109 isl::id pw_multi_aff::get_dim_id(isl::dim type, unsigned int pos) const
13110 {
13111   auto res = isl_pw_multi_aff_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
13112   return manage(res);
13113 }
13114 
get_dim_name(isl::dim type,unsigned int pos)13115 std::string pw_multi_aff::get_dim_name(isl::dim type, unsigned int pos) const
13116 {
13117   auto res = isl_pw_multi_aff_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
13118   std::string tmp(res);
13119   return tmp;
13120 }
13121 
get_domain_space()13122 isl::space pw_multi_aff::get_domain_space() const
13123 {
13124   auto res = isl_pw_multi_aff_get_domain_space(get());
13125   return manage(res);
13126 }
13127 
get_pw_aff(int pos)13128 isl::pw_aff pw_multi_aff::get_pw_aff(int pos) const
13129 {
13130   auto res = isl_pw_multi_aff_get_pw_aff(get(), pos);
13131   return manage(res);
13132 }
13133 
get_space()13134 isl::space pw_multi_aff::get_space() const
13135 {
13136   auto res = isl_pw_multi_aff_get_space(get());
13137   return manage(res);
13138 }
13139 
get_tuple_id(isl::dim type)13140 isl::id pw_multi_aff::get_tuple_id(isl::dim type) const
13141 {
13142   auto res = isl_pw_multi_aff_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
13143   return manage(res);
13144 }
13145 
get_tuple_name(isl::dim type)13146 std::string pw_multi_aff::get_tuple_name(isl::dim type) const
13147 {
13148   auto res = isl_pw_multi_aff_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
13149   std::string tmp(res);
13150   return tmp;
13151 }
13152 
gist(isl::set set)13153 isl::pw_multi_aff pw_multi_aff::gist(isl::set set) const
13154 {
13155   auto res = isl_pw_multi_aff_gist(copy(), set.release());
13156   return manage(res);
13157 }
13158 
gist_params(isl::set set)13159 isl::pw_multi_aff pw_multi_aff::gist_params(isl::set set) const
13160 {
13161   auto res = isl_pw_multi_aff_gist_params(copy(), set.release());
13162   return manage(res);
13163 }
13164 
has_tuple_id(isl::dim type)13165 boolean pw_multi_aff::has_tuple_id(isl::dim type) const
13166 {
13167   auto res = isl_pw_multi_aff_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
13168   return manage(res);
13169 }
13170 
has_tuple_name(isl::dim type)13171 boolean pw_multi_aff::has_tuple_name(isl::dim type) const
13172 {
13173   auto res = isl_pw_multi_aff_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
13174   return manage(res);
13175 }
13176 
identity(isl::space space)13177 isl::pw_multi_aff pw_multi_aff::identity(isl::space space)
13178 {
13179   auto res = isl_pw_multi_aff_identity(space.release());
13180   return manage(res);
13181 }
13182 
identity_on_domain(isl::space space)13183 isl::pw_multi_aff pw_multi_aff::identity_on_domain(isl::space space)
13184 {
13185   auto res = isl_pw_multi_aff_identity_on_domain_space(space.release());
13186   return manage(res);
13187 }
13188 
insert_domain(isl::space domain)13189 isl::pw_multi_aff pw_multi_aff::insert_domain(isl::space domain) const
13190 {
13191   auto res = isl_pw_multi_aff_insert_domain(copy(), domain.release());
13192   return manage(res);
13193 }
13194 
intersect_domain(isl::set set)13195 isl::pw_multi_aff pw_multi_aff::intersect_domain(isl::set set) const
13196 {
13197   auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
13198   return manage(res);
13199 }
13200 
intersect_domain_wrapped_domain(isl::set set)13201 isl::pw_multi_aff pw_multi_aff::intersect_domain_wrapped_domain(isl::set set) const
13202 {
13203   auto res = isl_pw_multi_aff_intersect_domain_wrapped_domain(copy(), set.release());
13204   return manage(res);
13205 }
13206 
intersect_domain_wrapped_range(isl::set set)13207 isl::pw_multi_aff pw_multi_aff::intersect_domain_wrapped_range(isl::set set) const
13208 {
13209   auto res = isl_pw_multi_aff_intersect_domain_wrapped_range(copy(), set.release());
13210   return manage(res);
13211 }
13212 
intersect_params(isl::set set)13213 isl::pw_multi_aff pw_multi_aff::intersect_params(isl::set set) const
13214 {
13215   auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
13216   return manage(res);
13217 }
13218 
involves_dims(isl::dim type,unsigned int first,unsigned int n)13219 boolean pw_multi_aff::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
13220 {
13221   auto res = isl_pw_multi_aff_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
13222   return manage(res);
13223 }
13224 
involves_locals()13225 boolean pw_multi_aff::involves_locals() const
13226 {
13227   auto res = isl_pw_multi_aff_involves_locals(get());
13228   return manage(res);
13229 }
13230 
involves_nan()13231 boolean pw_multi_aff::involves_nan() const
13232 {
13233   auto res = isl_pw_multi_aff_involves_nan(get());
13234   return manage(res);
13235 }
13236 
involves_param_id(const isl::id & id)13237 boolean pw_multi_aff::involves_param_id(const isl::id &id) const
13238 {
13239   auto res = isl_pw_multi_aff_involves_param_id(get(), id.get());
13240   return manage(res);
13241 }
13242 
is_equal(const isl::pw_multi_aff & pma2)13243 boolean pw_multi_aff::is_equal(const isl::pw_multi_aff &pma2) const
13244 {
13245   auto res = isl_pw_multi_aff_is_equal(get(), pma2.get());
13246   return manage(res);
13247 }
13248 
isa_multi_aff()13249 boolean pw_multi_aff::isa_multi_aff() const
13250 {
13251   auto res = isl_pw_multi_aff_isa_multi_aff(get());
13252   return manage(res);
13253 }
13254 
max_multi_val()13255 isl::multi_val pw_multi_aff::max_multi_val() const
13256 {
13257   auto res = isl_pw_multi_aff_max_multi_val(copy());
13258   return manage(res);
13259 }
13260 
min_multi_val()13261 isl::multi_val pw_multi_aff::min_multi_val() const
13262 {
13263   auto res = isl_pw_multi_aff_min_multi_val(copy());
13264   return manage(res);
13265 }
13266 
multi_val_on_domain(isl::set domain,isl::multi_val mv)13267 isl::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::set domain, isl::multi_val mv)
13268 {
13269   auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
13270   return manage(res);
13271 }
13272 
n_piece()13273 isl_size pw_multi_aff::n_piece() const
13274 {
13275   auto res = isl_pw_multi_aff_n_piece(get());
13276   return res;
13277 }
13278 
neg()13279 isl::pw_multi_aff pw_multi_aff::neg() const
13280 {
13281   auto res = isl_pw_multi_aff_neg(copy());
13282   return manage(res);
13283 }
13284 
plain_is_equal(const isl::pw_multi_aff & pma2)13285 boolean pw_multi_aff::plain_is_equal(const isl::pw_multi_aff &pma2) const
13286 {
13287   auto res = isl_pw_multi_aff_plain_is_equal(get(), pma2.get());
13288   return manage(res);
13289 }
13290 
preimage_domain_wrapped_domain(isl::pw_multi_aff pma2)13291 isl::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(isl::pw_multi_aff pma2) const
13292 {
13293   auto res = isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(copy(), pma2.release());
13294   return manage(res);
13295 }
13296 
product(isl::pw_multi_aff pma2)13297 isl::pw_multi_aff pw_multi_aff::product(isl::pw_multi_aff pma2) const
13298 {
13299   auto res = isl_pw_multi_aff_product(copy(), pma2.release());
13300   return manage(res);
13301 }
13302 
project_domain_on_params()13303 isl::pw_multi_aff pw_multi_aff::project_domain_on_params() const
13304 {
13305   auto res = isl_pw_multi_aff_project_domain_on_params(copy());
13306   return manage(res);
13307 }
13308 
project_out_map(isl::space space,isl::dim type,unsigned int first,unsigned int n)13309 isl::pw_multi_aff pw_multi_aff::project_out_map(isl::space space, isl::dim type, unsigned int first, unsigned int n)
13310 {
13311   auto res = isl_pw_multi_aff_project_out_map(space.release(), static_cast<enum isl_dim_type>(type), first, n);
13312   return manage(res);
13313 }
13314 
pullback(isl::multi_aff ma)13315 isl::pw_multi_aff pw_multi_aff::pullback(isl::multi_aff ma) const
13316 {
13317   auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
13318   return manage(res);
13319 }
13320 
pullback(isl::pw_multi_aff pma2)13321 isl::pw_multi_aff pw_multi_aff::pullback(isl::pw_multi_aff pma2) const
13322 {
13323   auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
13324   return manage(res);
13325 }
13326 
range_factor_domain()13327 isl::pw_multi_aff pw_multi_aff::range_factor_domain() const
13328 {
13329   auto res = isl_pw_multi_aff_range_factor_domain(copy());
13330   return manage(res);
13331 }
13332 
range_factor_range()13333 isl::pw_multi_aff pw_multi_aff::range_factor_range() const
13334 {
13335   auto res = isl_pw_multi_aff_range_factor_range(copy());
13336   return manage(res);
13337 }
13338 
range_map(isl::space space)13339 isl::pw_multi_aff pw_multi_aff::range_map(isl::space space)
13340 {
13341   auto res = isl_pw_multi_aff_range_map(space.release());
13342   return manage(res);
13343 }
13344 
range_product(isl::pw_multi_aff pma2)13345 isl::pw_multi_aff pw_multi_aff::range_product(isl::pw_multi_aff pma2) const
13346 {
13347   auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
13348   return manage(res);
13349 }
13350 
reset_tuple_id(isl::dim type)13351 isl::pw_multi_aff pw_multi_aff::reset_tuple_id(isl::dim type) const
13352 {
13353   auto res = isl_pw_multi_aff_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
13354   return manage(res);
13355 }
13356 
reset_user()13357 isl::pw_multi_aff pw_multi_aff::reset_user() const
13358 {
13359   auto res = isl_pw_multi_aff_reset_user(copy());
13360   return manage(res);
13361 }
13362 
scale(isl::val v)13363 isl::pw_multi_aff pw_multi_aff::scale(isl::val v) const
13364 {
13365   auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
13366   return manage(res);
13367 }
13368 
scale_down(isl::val v)13369 isl::pw_multi_aff pw_multi_aff::scale_down(isl::val v) const
13370 {
13371   auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
13372   return manage(res);
13373 }
13374 
scale_multi_val(isl::multi_val mv)13375 isl::pw_multi_aff pw_multi_aff::scale_multi_val(isl::multi_val mv) const
13376 {
13377   auto res = isl_pw_multi_aff_scale_multi_val(copy(), mv.release());
13378   return manage(res);
13379 }
13380 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)13381 isl::pw_multi_aff pw_multi_aff::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
13382 {
13383   auto res = isl_pw_multi_aff_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
13384   return manage(res);
13385 }
13386 
set_pw_aff(unsigned int pos,isl::pw_aff pa)13387 isl::pw_multi_aff pw_multi_aff::set_pw_aff(unsigned int pos, isl::pw_aff pa) const
13388 {
13389   auto res = isl_pw_multi_aff_set_pw_aff(copy(), pos, pa.release());
13390   return manage(res);
13391 }
13392 
set_tuple_id(isl::dim type,isl::id id)13393 isl::pw_multi_aff pw_multi_aff::set_tuple_id(isl::dim type, isl::id id) const
13394 {
13395   auto res = isl_pw_multi_aff_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
13396   return manage(res);
13397 }
13398 
sub(isl::pw_multi_aff pma2)13399 isl::pw_multi_aff pw_multi_aff::sub(isl::pw_multi_aff pma2) const
13400 {
13401   auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
13402   return manage(res);
13403 }
13404 
subtract_domain(isl::set set)13405 isl::pw_multi_aff pw_multi_aff::subtract_domain(isl::set set) const
13406 {
13407   auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
13408   return manage(res);
13409 }
13410 
union_add(isl::pw_multi_aff pma2)13411 isl::pw_multi_aff pw_multi_aff::union_add(isl::pw_multi_aff pma2) const
13412 {
13413   auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
13414   return manage(res);
13415 }
13416 
union_lexmax(isl::pw_multi_aff pma2)13417 isl::pw_multi_aff pw_multi_aff::union_lexmax(isl::pw_multi_aff pma2) const
13418 {
13419   auto res = isl_pw_multi_aff_union_lexmax(copy(), pma2.release());
13420   return manage(res);
13421 }
13422 
union_lexmin(isl::pw_multi_aff pma2)13423 isl::pw_multi_aff pw_multi_aff::union_lexmin(isl::pw_multi_aff pma2) const
13424 {
13425   auto res = isl_pw_multi_aff_union_lexmin(copy(), pma2.release());
13426   return manage(res);
13427 }
13428 
zero(isl::space space)13429 isl::pw_multi_aff pw_multi_aff::zero(isl::space space)
13430 {
13431   auto res = isl_pw_multi_aff_zero(space.release());
13432   return manage(res);
13433 }
13434 
13435 // implementations for isl::pw_multi_aff_list
manage(__isl_take isl_pw_multi_aff_list * ptr)13436 pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
13437   return pw_multi_aff_list(ptr);
13438 }
manage_copy(__isl_keep isl_pw_multi_aff_list * ptr)13439 pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
13440   ptr = isl_pw_multi_aff_list_copy(ptr);
13441   return pw_multi_aff_list(ptr);
13442 }
13443 
pw_multi_aff_list()13444 pw_multi_aff_list::pw_multi_aff_list()
13445     : ptr(nullptr) {}
13446 
pw_multi_aff_list(const pw_multi_aff_list & obj)13447 pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
13448     : ptr(nullptr)
13449 {
13450   ptr = obj.copy();
13451 }
13452 
13453 
pw_multi_aff_list(__isl_take isl_pw_multi_aff_list * ptr)13454 pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
13455     : ptr(ptr) {}
13456 
13457 
13458 pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
13459   std::swap(this->ptr, obj.ptr);
13460   return *this;
13461 }
13462 
~pw_multi_aff_list()13463 pw_multi_aff_list::~pw_multi_aff_list() {
13464   if (ptr)
13465     isl_pw_multi_aff_list_free(ptr);
13466 }
13467 
copy()13468 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
13469   return isl_pw_multi_aff_list_copy(ptr);
13470 }
13471 
get()13472 __isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
13473   return ptr;
13474 }
13475 
release()13476 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
13477   isl_pw_multi_aff_list *tmp = ptr;
13478   ptr = nullptr;
13479   return tmp;
13480 }
13481 
is_null()13482 bool pw_multi_aff_list::is_null() const {
13483   return ptr == nullptr;
13484 }
13485 
13486 
ctx()13487 isl::ctx pw_multi_aff_list::ctx() const {
13488   return isl::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
13489 }
13490 
dump()13491 void pw_multi_aff_list::dump() const {
13492   isl_pw_multi_aff_list_dump(get());
13493 }
13494 
13495 
add(isl::pw_multi_aff el)13496 isl::pw_multi_aff_list pw_multi_aff_list::add(isl::pw_multi_aff el) const
13497 {
13498   auto res = isl_pw_multi_aff_list_add(copy(), el.release());
13499   return manage(res);
13500 }
13501 
alloc(isl::ctx ctx,int n)13502 isl::pw_multi_aff_list pw_multi_aff_list::alloc(isl::ctx ctx, int n)
13503 {
13504   auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
13505   return manage(res);
13506 }
13507 
clear()13508 isl::pw_multi_aff_list pw_multi_aff_list::clear() const
13509 {
13510   auto res = isl_pw_multi_aff_list_clear(copy());
13511   return manage(res);
13512 }
13513 
concat(isl::pw_multi_aff_list list2)13514 isl::pw_multi_aff_list pw_multi_aff_list::concat(isl::pw_multi_aff_list list2) const
13515 {
13516   auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
13517   return manage(res);
13518 }
13519 
drop(unsigned int first,unsigned int n)13520 isl::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
13521 {
13522   auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
13523   return manage(res);
13524 }
13525 
foreach(const std::function<stat (pw_multi_aff)> & fn)13526 stat pw_multi_aff_list::foreach(const std::function<stat(pw_multi_aff)> &fn) const
13527 {
13528   struct fn_data {
13529     const std::function<stat(pw_multi_aff)> *func;
13530   } fn_data = { &fn };
13531   auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
13532     auto *data = static_cast<struct fn_data *>(arg_1);
13533     stat ret = (*data->func)(manage(arg_0));
13534     return ret.release();
13535   };
13536   auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
13537   return manage(res);
13538 }
13539 
from_pw_multi_aff(isl::pw_multi_aff el)13540 isl::pw_multi_aff_list pw_multi_aff_list::from_pw_multi_aff(isl::pw_multi_aff el)
13541 {
13542   auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
13543   return manage(res);
13544 }
13545 
get_at(int index)13546 isl::pw_multi_aff pw_multi_aff_list::get_at(int index) const
13547 {
13548   auto res = isl_pw_multi_aff_list_get_at(get(), index);
13549   return manage(res);
13550 }
13551 
get_pw_multi_aff(int index)13552 isl::pw_multi_aff pw_multi_aff_list::get_pw_multi_aff(int index) const
13553 {
13554   auto res = isl_pw_multi_aff_list_get_pw_multi_aff(get(), index);
13555   return manage(res);
13556 }
13557 
insert(unsigned int pos,isl::pw_multi_aff el)13558 isl::pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, isl::pw_multi_aff el) const
13559 {
13560   auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
13561   return manage(res);
13562 }
13563 
n_pw_multi_aff()13564 isl_size pw_multi_aff_list::n_pw_multi_aff() const
13565 {
13566   auto res = isl_pw_multi_aff_list_n_pw_multi_aff(get());
13567   return res;
13568 }
13569 
reverse()13570 isl::pw_multi_aff_list pw_multi_aff_list::reverse() const
13571 {
13572   auto res = isl_pw_multi_aff_list_reverse(copy());
13573   return manage(res);
13574 }
13575 
set_pw_multi_aff(int index,isl::pw_multi_aff el)13576 isl::pw_multi_aff_list pw_multi_aff_list::set_pw_multi_aff(int index, isl::pw_multi_aff el) const
13577 {
13578   auto res = isl_pw_multi_aff_list_set_pw_multi_aff(copy(), index, el.release());
13579   return manage(res);
13580 }
13581 
size()13582 isl_size pw_multi_aff_list::size() const
13583 {
13584   auto res = isl_pw_multi_aff_list_size(get());
13585   return res;
13586 }
13587 
swap(unsigned int pos1,unsigned int pos2)13588 isl::pw_multi_aff_list pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const
13589 {
13590   auto res = isl_pw_multi_aff_list_swap(copy(), pos1, pos2);
13591   return manage(res);
13592 }
13593 
13594 // implementations for isl::pw_qpolynomial
manage(__isl_take isl_pw_qpolynomial * ptr)13595 pw_qpolynomial manage(__isl_take isl_pw_qpolynomial *ptr) {
13596   return pw_qpolynomial(ptr);
13597 }
manage_copy(__isl_keep isl_pw_qpolynomial * ptr)13598 pw_qpolynomial manage_copy(__isl_keep isl_pw_qpolynomial *ptr) {
13599   ptr = isl_pw_qpolynomial_copy(ptr);
13600   return pw_qpolynomial(ptr);
13601 }
13602 
pw_qpolynomial()13603 pw_qpolynomial::pw_qpolynomial()
13604     : ptr(nullptr) {}
13605 
pw_qpolynomial(const pw_qpolynomial & obj)13606 pw_qpolynomial::pw_qpolynomial(const pw_qpolynomial &obj)
13607     : ptr(nullptr)
13608 {
13609   ptr = obj.copy();
13610 }
13611 
13612 
pw_qpolynomial(__isl_take isl_pw_qpolynomial * ptr)13613 pw_qpolynomial::pw_qpolynomial(__isl_take isl_pw_qpolynomial *ptr)
13614     : ptr(ptr) {}
13615 
pw_qpolynomial(isl::ctx ctx,const std::string & str)13616 pw_qpolynomial::pw_qpolynomial(isl::ctx ctx, const std::string &str)
13617 {
13618   auto res = isl_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
13619   ptr = res;
13620 }
13621 
13622 pw_qpolynomial &pw_qpolynomial::operator=(pw_qpolynomial obj) {
13623   std::swap(this->ptr, obj.ptr);
13624   return *this;
13625 }
13626 
~pw_qpolynomial()13627 pw_qpolynomial::~pw_qpolynomial() {
13628   if (ptr)
13629     isl_pw_qpolynomial_free(ptr);
13630 }
13631 
copy()13632 __isl_give isl_pw_qpolynomial *pw_qpolynomial::copy() const & {
13633   return isl_pw_qpolynomial_copy(ptr);
13634 }
13635 
get()13636 __isl_keep isl_pw_qpolynomial *pw_qpolynomial::get() const {
13637   return ptr;
13638 }
13639 
release()13640 __isl_give isl_pw_qpolynomial *pw_qpolynomial::release() {
13641   isl_pw_qpolynomial *tmp = ptr;
13642   ptr = nullptr;
13643   return tmp;
13644 }
13645 
is_null()13646 bool pw_qpolynomial::is_null() const {
13647   return ptr == nullptr;
13648 }
13649 
13650 
ctx()13651 isl::ctx pw_qpolynomial::ctx() const {
13652   return isl::ctx(isl_pw_qpolynomial_get_ctx(ptr));
13653 }
13654 
dump()13655 void pw_qpolynomial::dump() const {
13656   isl_pw_qpolynomial_dump(get());
13657 }
13658 
13659 
add(isl::pw_qpolynomial pwqp2)13660 isl::pw_qpolynomial pw_qpolynomial::add(isl::pw_qpolynomial pwqp2) const
13661 {
13662   auto res = isl_pw_qpolynomial_add(copy(), pwqp2.release());
13663   return manage(res);
13664 }
13665 
add_dims(isl::dim type,unsigned int n)13666 isl::pw_qpolynomial pw_qpolynomial::add_dims(isl::dim type, unsigned int n) const
13667 {
13668   auto res = isl_pw_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
13669   return manage(res);
13670 }
13671 
alloc(isl::set set,isl::qpolynomial qp)13672 isl::pw_qpolynomial pw_qpolynomial::alloc(isl::set set, isl::qpolynomial qp)
13673 {
13674   auto res = isl_pw_qpolynomial_alloc(set.release(), qp.release());
13675   return manage(res);
13676 }
13677 
as_qpolynomial()13678 isl::qpolynomial pw_qpolynomial::as_qpolynomial() const
13679 {
13680   auto res = isl_pw_qpolynomial_as_qpolynomial(copy());
13681   return manage(res);
13682 }
13683 
coalesce()13684 isl::pw_qpolynomial pw_qpolynomial::coalesce() const
13685 {
13686   auto res = isl_pw_qpolynomial_coalesce(copy());
13687   return manage(res);
13688 }
13689 
dim(isl::dim type)13690 isl_size pw_qpolynomial::dim(isl::dim type) const
13691 {
13692   auto res = isl_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
13693   return res;
13694 }
13695 
domain()13696 isl::set pw_qpolynomial::domain() const
13697 {
13698   auto res = isl_pw_qpolynomial_domain(copy());
13699   return manage(res);
13700 }
13701 
drop_dims(isl::dim type,unsigned int first,unsigned int n)13702 isl::pw_qpolynomial pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
13703 {
13704   auto res = isl_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13705   return manage(res);
13706 }
13707 
drop_unused_params()13708 isl::pw_qpolynomial pw_qpolynomial::drop_unused_params() const
13709 {
13710   auto res = isl_pw_qpolynomial_drop_unused_params(copy());
13711   return manage(res);
13712 }
13713 
eval(isl::point pnt)13714 isl::val pw_qpolynomial::eval(isl::point pnt) const
13715 {
13716   auto res = isl_pw_qpolynomial_eval(copy(), pnt.release());
13717   return manage(res);
13718 }
13719 
find_dim_by_name(isl::dim type,const std::string & name)13720 int pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const
13721 {
13722   auto res = isl_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
13723   return res;
13724 }
13725 
fix_val(isl::dim type,unsigned int n,isl::val v)13726 isl::pw_qpolynomial pw_qpolynomial::fix_val(isl::dim type, unsigned int n, isl::val v) const
13727 {
13728   auto res = isl_pw_qpolynomial_fix_val(copy(), static_cast<enum isl_dim_type>(type), n, v.release());
13729   return manage(res);
13730 }
13731 
foreach_piece(const std::function<stat (set,qpolynomial)> & fn)13732 stat pw_qpolynomial::foreach_piece(const std::function<stat(set, qpolynomial)> &fn) const
13733 {
13734   struct fn_data {
13735     const std::function<stat(set, qpolynomial)> *func;
13736   } fn_data = { &fn };
13737   auto fn_lambda = [](isl_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
13738     auto *data = static_cast<struct fn_data *>(arg_2);
13739     stat ret = (*data->func)(manage(arg_0), manage(arg_1));
13740     return ret.release();
13741   };
13742   auto res = isl_pw_qpolynomial_foreach_piece(get(), fn_lambda, &fn_data);
13743   return manage(res);
13744 }
13745 
from_pw_aff(isl::pw_aff pwaff)13746 isl::pw_qpolynomial pw_qpolynomial::from_pw_aff(isl::pw_aff pwaff)
13747 {
13748   auto res = isl_pw_qpolynomial_from_pw_aff(pwaff.release());
13749   return manage(res);
13750 }
13751 
from_qpolynomial(isl::qpolynomial qp)13752 isl::pw_qpolynomial pw_qpolynomial::from_qpolynomial(isl::qpolynomial qp)
13753 {
13754   auto res = isl_pw_qpolynomial_from_qpolynomial(qp.release());
13755   return manage(res);
13756 }
13757 
from_range()13758 isl::pw_qpolynomial pw_qpolynomial::from_range() const
13759 {
13760   auto res = isl_pw_qpolynomial_from_range(copy());
13761   return manage(res);
13762 }
13763 
get_domain_space()13764 isl::space pw_qpolynomial::get_domain_space() const
13765 {
13766   auto res = isl_pw_qpolynomial_get_domain_space(get());
13767   return manage(res);
13768 }
13769 
get_space()13770 isl::space pw_qpolynomial::get_space() const
13771 {
13772   auto res = isl_pw_qpolynomial_get_space(get());
13773   return manage(res);
13774 }
13775 
gist(isl::set context)13776 isl::pw_qpolynomial pw_qpolynomial::gist(isl::set context) const
13777 {
13778   auto res = isl_pw_qpolynomial_gist(copy(), context.release());
13779   return manage(res);
13780 }
13781 
gist_params(isl::set context)13782 isl::pw_qpolynomial pw_qpolynomial::gist_params(isl::set context) const
13783 {
13784   auto res = isl_pw_qpolynomial_gist_params(copy(), context.release());
13785   return manage(res);
13786 }
13787 
has_equal_space(const isl::pw_qpolynomial & pwqp2)13788 boolean pw_qpolynomial::has_equal_space(const isl::pw_qpolynomial &pwqp2) const
13789 {
13790   auto res = isl_pw_qpolynomial_has_equal_space(get(), pwqp2.get());
13791   return manage(res);
13792 }
13793 
insert_dims(isl::dim type,unsigned int first,unsigned int n)13794 isl::pw_qpolynomial pw_qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
13795 {
13796   auto res = isl_pw_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13797   return manage(res);
13798 }
13799 
intersect_domain(isl::set set)13800 isl::pw_qpolynomial pw_qpolynomial::intersect_domain(isl::set set) const
13801 {
13802   auto res = isl_pw_qpolynomial_intersect_domain(copy(), set.release());
13803   return manage(res);
13804 }
13805 
intersect_domain_wrapped_domain(isl::set set)13806 isl::pw_qpolynomial pw_qpolynomial::intersect_domain_wrapped_domain(isl::set set) const
13807 {
13808   auto res = isl_pw_qpolynomial_intersect_domain_wrapped_domain(copy(), set.release());
13809   return manage(res);
13810 }
13811 
intersect_domain_wrapped_range(isl::set set)13812 isl::pw_qpolynomial pw_qpolynomial::intersect_domain_wrapped_range(isl::set set) const
13813 {
13814   auto res = isl_pw_qpolynomial_intersect_domain_wrapped_range(copy(), set.release());
13815   return manage(res);
13816 }
13817 
intersect_params(isl::set set)13818 isl::pw_qpolynomial pw_qpolynomial::intersect_params(isl::set set) const
13819 {
13820   auto res = isl_pw_qpolynomial_intersect_params(copy(), set.release());
13821   return manage(res);
13822 }
13823 
involves_dims(isl::dim type,unsigned int first,unsigned int n)13824 boolean pw_qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
13825 {
13826   auto res = isl_pw_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
13827   return manage(res);
13828 }
13829 
involves_nan()13830 boolean pw_qpolynomial::involves_nan() const
13831 {
13832   auto res = isl_pw_qpolynomial_involves_nan(get());
13833   return manage(res);
13834 }
13835 
involves_param_id(const isl::id & id)13836 boolean pw_qpolynomial::involves_param_id(const isl::id &id) const
13837 {
13838   auto res = isl_pw_qpolynomial_involves_param_id(get(), id.get());
13839   return manage(res);
13840 }
13841 
is_zero()13842 boolean pw_qpolynomial::is_zero() const
13843 {
13844   auto res = isl_pw_qpolynomial_is_zero(get());
13845   return manage(res);
13846 }
13847 
isa_qpolynomial()13848 boolean pw_qpolynomial::isa_qpolynomial() const
13849 {
13850   auto res = isl_pw_qpolynomial_isa_qpolynomial(get());
13851   return manage(res);
13852 }
13853 
max()13854 isl::val pw_qpolynomial::max() const
13855 {
13856   auto res = isl_pw_qpolynomial_max(copy());
13857   return manage(res);
13858 }
13859 
min()13860 isl::val pw_qpolynomial::min() const
13861 {
13862   auto res = isl_pw_qpolynomial_min(copy());
13863   return manage(res);
13864 }
13865 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)13866 isl::pw_qpolynomial pw_qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
13867 {
13868   auto res = isl_pw_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
13869   return manage(res);
13870 }
13871 
mul(isl::pw_qpolynomial pwqp2)13872 isl::pw_qpolynomial pw_qpolynomial::mul(isl::pw_qpolynomial pwqp2) const
13873 {
13874   auto res = isl_pw_qpolynomial_mul(copy(), pwqp2.release());
13875   return manage(res);
13876 }
13877 
n_piece()13878 isl_size pw_qpolynomial::n_piece() const
13879 {
13880   auto res = isl_pw_qpolynomial_n_piece(get());
13881   return res;
13882 }
13883 
neg()13884 isl::pw_qpolynomial pw_qpolynomial::neg() const
13885 {
13886   auto res = isl_pw_qpolynomial_neg(copy());
13887   return manage(res);
13888 }
13889 
plain_is_equal(const isl::pw_qpolynomial & pwqp2)13890 boolean pw_qpolynomial::plain_is_equal(const isl::pw_qpolynomial &pwqp2) const
13891 {
13892   auto res = isl_pw_qpolynomial_plain_is_equal(get(), pwqp2.get());
13893   return manage(res);
13894 }
13895 
pow(unsigned int exponent)13896 isl::pw_qpolynomial pw_qpolynomial::pow(unsigned int exponent) const
13897 {
13898   auto res = isl_pw_qpolynomial_pow(copy(), exponent);
13899   return manage(res);
13900 }
13901 
project_domain_on_params()13902 isl::pw_qpolynomial pw_qpolynomial::project_domain_on_params() const
13903 {
13904   auto res = isl_pw_qpolynomial_project_domain_on_params(copy());
13905   return manage(res);
13906 }
13907 
reset_domain_space(isl::space space)13908 isl::pw_qpolynomial pw_qpolynomial::reset_domain_space(isl::space space) const
13909 {
13910   auto res = isl_pw_qpolynomial_reset_domain_space(copy(), space.release());
13911   return manage(res);
13912 }
13913 
reset_user()13914 isl::pw_qpolynomial pw_qpolynomial::reset_user() const
13915 {
13916   auto res = isl_pw_qpolynomial_reset_user(copy());
13917   return manage(res);
13918 }
13919 
scale_down_val(isl::val v)13920 isl::pw_qpolynomial pw_qpolynomial::scale_down_val(isl::val v) const
13921 {
13922   auto res = isl_pw_qpolynomial_scale_down_val(copy(), v.release());
13923   return manage(res);
13924 }
13925 
scale_val(isl::val v)13926 isl::pw_qpolynomial pw_qpolynomial::scale_val(isl::val v) const
13927 {
13928   auto res = isl_pw_qpolynomial_scale_val(copy(), v.release());
13929   return manage(res);
13930 }
13931 
split_dims(isl::dim type,unsigned int first,unsigned int n)13932 isl::pw_qpolynomial pw_qpolynomial::split_dims(isl::dim type, unsigned int first, unsigned int n) const
13933 {
13934   auto res = isl_pw_qpolynomial_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
13935   return manage(res);
13936 }
13937 
split_periods(int max_periods)13938 isl::pw_qpolynomial pw_qpolynomial::split_periods(int max_periods) const
13939 {
13940   auto res = isl_pw_qpolynomial_split_periods(copy(), max_periods);
13941   return manage(res);
13942 }
13943 
sub(isl::pw_qpolynomial pwqp2)13944 isl::pw_qpolynomial pw_qpolynomial::sub(isl::pw_qpolynomial pwqp2) const
13945 {
13946   auto res = isl_pw_qpolynomial_sub(copy(), pwqp2.release());
13947   return manage(res);
13948 }
13949 
subtract_domain(isl::set set)13950 isl::pw_qpolynomial pw_qpolynomial::subtract_domain(isl::set set) const
13951 {
13952   auto res = isl_pw_qpolynomial_subtract_domain(copy(), set.release());
13953   return manage(res);
13954 }
13955 
to_polynomial(int sign)13956 isl::pw_qpolynomial pw_qpolynomial::to_polynomial(int sign) const
13957 {
13958   auto res = isl_pw_qpolynomial_to_polynomial(copy(), sign);
13959   return manage(res);
13960 }
13961 
zero(isl::space space)13962 isl::pw_qpolynomial pw_qpolynomial::zero(isl::space space)
13963 {
13964   auto res = isl_pw_qpolynomial_zero(space.release());
13965   return manage(res);
13966 }
13967 
13968 // implementations for isl::pw_qpolynomial_fold_list
manage(__isl_take isl_pw_qpolynomial_fold_list * ptr)13969 pw_qpolynomial_fold_list manage(__isl_take isl_pw_qpolynomial_fold_list *ptr) {
13970   return pw_qpolynomial_fold_list(ptr);
13971 }
manage_copy(__isl_keep isl_pw_qpolynomial_fold_list * ptr)13972 pw_qpolynomial_fold_list manage_copy(__isl_keep isl_pw_qpolynomial_fold_list *ptr) {
13973   ptr = isl_pw_qpolynomial_fold_list_copy(ptr);
13974   return pw_qpolynomial_fold_list(ptr);
13975 }
13976 
pw_qpolynomial_fold_list()13977 pw_qpolynomial_fold_list::pw_qpolynomial_fold_list()
13978     : ptr(nullptr) {}
13979 
pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list & obj)13980 pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(const pw_qpolynomial_fold_list &obj)
13981     : ptr(nullptr)
13982 {
13983   ptr = obj.copy();
13984 }
13985 
13986 
pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list * ptr)13987 pw_qpolynomial_fold_list::pw_qpolynomial_fold_list(__isl_take isl_pw_qpolynomial_fold_list *ptr)
13988     : ptr(ptr) {}
13989 
13990 
13991 pw_qpolynomial_fold_list &pw_qpolynomial_fold_list::operator=(pw_qpolynomial_fold_list obj) {
13992   std::swap(this->ptr, obj.ptr);
13993   return *this;
13994 }
13995 
~pw_qpolynomial_fold_list()13996 pw_qpolynomial_fold_list::~pw_qpolynomial_fold_list() {
13997   if (ptr)
13998     isl_pw_qpolynomial_fold_list_free(ptr);
13999 }
14000 
copy()14001 __isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::copy() const & {
14002   return isl_pw_qpolynomial_fold_list_copy(ptr);
14003 }
14004 
get()14005 __isl_keep isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::get() const {
14006   return ptr;
14007 }
14008 
release()14009 __isl_give isl_pw_qpolynomial_fold_list *pw_qpolynomial_fold_list::release() {
14010   isl_pw_qpolynomial_fold_list *tmp = ptr;
14011   ptr = nullptr;
14012   return tmp;
14013 }
14014 
is_null()14015 bool pw_qpolynomial_fold_list::is_null() const {
14016   return ptr == nullptr;
14017 }
14018 
14019 
ctx()14020 isl::ctx pw_qpolynomial_fold_list::ctx() const {
14021   return isl::ctx(isl_pw_qpolynomial_fold_list_get_ctx(ptr));
14022 }
14023 
dump()14024 void pw_qpolynomial_fold_list::dump() const {
14025   isl_pw_qpolynomial_fold_list_dump(get());
14026 }
14027 
14028 
14029 
14030 // implementations for isl::pw_qpolynomial_list
manage(__isl_take isl_pw_qpolynomial_list * ptr)14031 pw_qpolynomial_list manage(__isl_take isl_pw_qpolynomial_list *ptr) {
14032   return pw_qpolynomial_list(ptr);
14033 }
manage_copy(__isl_keep isl_pw_qpolynomial_list * ptr)14034 pw_qpolynomial_list manage_copy(__isl_keep isl_pw_qpolynomial_list *ptr) {
14035   ptr = isl_pw_qpolynomial_list_copy(ptr);
14036   return pw_qpolynomial_list(ptr);
14037 }
14038 
pw_qpolynomial_list()14039 pw_qpolynomial_list::pw_qpolynomial_list()
14040     : ptr(nullptr) {}
14041 
pw_qpolynomial_list(const pw_qpolynomial_list & obj)14042 pw_qpolynomial_list::pw_qpolynomial_list(const pw_qpolynomial_list &obj)
14043     : ptr(nullptr)
14044 {
14045   ptr = obj.copy();
14046 }
14047 
14048 
pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list * ptr)14049 pw_qpolynomial_list::pw_qpolynomial_list(__isl_take isl_pw_qpolynomial_list *ptr)
14050     : ptr(ptr) {}
14051 
14052 
14053 pw_qpolynomial_list &pw_qpolynomial_list::operator=(pw_qpolynomial_list obj) {
14054   std::swap(this->ptr, obj.ptr);
14055   return *this;
14056 }
14057 
~pw_qpolynomial_list()14058 pw_qpolynomial_list::~pw_qpolynomial_list() {
14059   if (ptr)
14060     isl_pw_qpolynomial_list_free(ptr);
14061 }
14062 
copy()14063 __isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::copy() const & {
14064   return isl_pw_qpolynomial_list_copy(ptr);
14065 }
14066 
get()14067 __isl_keep isl_pw_qpolynomial_list *pw_qpolynomial_list::get() const {
14068   return ptr;
14069 }
14070 
release()14071 __isl_give isl_pw_qpolynomial_list *pw_qpolynomial_list::release() {
14072   isl_pw_qpolynomial_list *tmp = ptr;
14073   ptr = nullptr;
14074   return tmp;
14075 }
14076 
is_null()14077 bool pw_qpolynomial_list::is_null() const {
14078   return ptr == nullptr;
14079 }
14080 
14081 
ctx()14082 isl::ctx pw_qpolynomial_list::ctx() const {
14083   return isl::ctx(isl_pw_qpolynomial_list_get_ctx(ptr));
14084 }
14085 
dump()14086 void pw_qpolynomial_list::dump() const {
14087   isl_pw_qpolynomial_list_dump(get());
14088 }
14089 
14090 
add(isl::pw_qpolynomial el)14091 isl::pw_qpolynomial_list pw_qpolynomial_list::add(isl::pw_qpolynomial el) const
14092 {
14093   auto res = isl_pw_qpolynomial_list_add(copy(), el.release());
14094   return manage(res);
14095 }
14096 
alloc(isl::ctx ctx,int n)14097 isl::pw_qpolynomial_list pw_qpolynomial_list::alloc(isl::ctx ctx, int n)
14098 {
14099   auto res = isl_pw_qpolynomial_list_alloc(ctx.release(), n);
14100   return manage(res);
14101 }
14102 
clear()14103 isl::pw_qpolynomial_list pw_qpolynomial_list::clear() const
14104 {
14105   auto res = isl_pw_qpolynomial_list_clear(copy());
14106   return manage(res);
14107 }
14108 
concat(isl::pw_qpolynomial_list list2)14109 isl::pw_qpolynomial_list pw_qpolynomial_list::concat(isl::pw_qpolynomial_list list2) const
14110 {
14111   auto res = isl_pw_qpolynomial_list_concat(copy(), list2.release());
14112   return manage(res);
14113 }
14114 
drop(unsigned int first,unsigned int n)14115 isl::pw_qpolynomial_list pw_qpolynomial_list::drop(unsigned int first, unsigned int n) const
14116 {
14117   auto res = isl_pw_qpolynomial_list_drop(copy(), first, n);
14118   return manage(res);
14119 }
14120 
foreach(const std::function<stat (pw_qpolynomial)> & fn)14121 stat pw_qpolynomial_list::foreach(const std::function<stat(pw_qpolynomial)> &fn) const
14122 {
14123   struct fn_data {
14124     const std::function<stat(pw_qpolynomial)> *func;
14125   } fn_data = { &fn };
14126   auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat {
14127     auto *data = static_cast<struct fn_data *>(arg_1);
14128     stat ret = (*data->func)(manage(arg_0));
14129     return ret.release();
14130   };
14131   auto res = isl_pw_qpolynomial_list_foreach(get(), fn_lambda, &fn_data);
14132   return manage(res);
14133 }
14134 
from_pw_qpolynomial(isl::pw_qpolynomial el)14135 isl::pw_qpolynomial_list pw_qpolynomial_list::from_pw_qpolynomial(isl::pw_qpolynomial el)
14136 {
14137   auto res = isl_pw_qpolynomial_list_from_pw_qpolynomial(el.release());
14138   return manage(res);
14139 }
14140 
get_at(int index)14141 isl::pw_qpolynomial pw_qpolynomial_list::get_at(int index) const
14142 {
14143   auto res = isl_pw_qpolynomial_list_get_at(get(), index);
14144   return manage(res);
14145 }
14146 
get_pw_qpolynomial(int index)14147 isl::pw_qpolynomial pw_qpolynomial_list::get_pw_qpolynomial(int index) const
14148 {
14149   auto res = isl_pw_qpolynomial_list_get_pw_qpolynomial(get(), index);
14150   return manage(res);
14151 }
14152 
insert(unsigned int pos,isl::pw_qpolynomial el)14153 isl::pw_qpolynomial_list pw_qpolynomial_list::insert(unsigned int pos, isl::pw_qpolynomial el) const
14154 {
14155   auto res = isl_pw_qpolynomial_list_insert(copy(), pos, el.release());
14156   return manage(res);
14157 }
14158 
n_pw_qpolynomial()14159 isl_size pw_qpolynomial_list::n_pw_qpolynomial() const
14160 {
14161   auto res = isl_pw_qpolynomial_list_n_pw_qpolynomial(get());
14162   return res;
14163 }
14164 
reverse()14165 isl::pw_qpolynomial_list pw_qpolynomial_list::reverse() const
14166 {
14167   auto res = isl_pw_qpolynomial_list_reverse(copy());
14168   return manage(res);
14169 }
14170 
set_pw_qpolynomial(int index,isl::pw_qpolynomial el)14171 isl::pw_qpolynomial_list pw_qpolynomial_list::set_pw_qpolynomial(int index, isl::pw_qpolynomial el) const
14172 {
14173   auto res = isl_pw_qpolynomial_list_set_pw_qpolynomial(copy(), index, el.release());
14174   return manage(res);
14175 }
14176 
size()14177 isl_size pw_qpolynomial_list::size() const
14178 {
14179   auto res = isl_pw_qpolynomial_list_size(get());
14180   return res;
14181 }
14182 
swap(unsigned int pos1,unsigned int pos2)14183 isl::pw_qpolynomial_list pw_qpolynomial_list::swap(unsigned int pos1, unsigned int pos2) const
14184 {
14185   auto res = isl_pw_qpolynomial_list_swap(copy(), pos1, pos2);
14186   return manage(res);
14187 }
14188 
14189 // implementations for isl::qpolynomial
manage(__isl_take isl_qpolynomial * ptr)14190 qpolynomial manage(__isl_take isl_qpolynomial *ptr) {
14191   return qpolynomial(ptr);
14192 }
manage_copy(__isl_keep isl_qpolynomial * ptr)14193 qpolynomial manage_copy(__isl_keep isl_qpolynomial *ptr) {
14194   ptr = isl_qpolynomial_copy(ptr);
14195   return qpolynomial(ptr);
14196 }
14197 
qpolynomial()14198 qpolynomial::qpolynomial()
14199     : ptr(nullptr) {}
14200 
qpolynomial(const qpolynomial & obj)14201 qpolynomial::qpolynomial(const qpolynomial &obj)
14202     : ptr(nullptr)
14203 {
14204   ptr = obj.copy();
14205 }
14206 
14207 
qpolynomial(__isl_take isl_qpolynomial * ptr)14208 qpolynomial::qpolynomial(__isl_take isl_qpolynomial *ptr)
14209     : ptr(ptr) {}
14210 
14211 
14212 qpolynomial &qpolynomial::operator=(qpolynomial obj) {
14213   std::swap(this->ptr, obj.ptr);
14214   return *this;
14215 }
14216 
~qpolynomial()14217 qpolynomial::~qpolynomial() {
14218   if (ptr)
14219     isl_qpolynomial_free(ptr);
14220 }
14221 
copy()14222 __isl_give isl_qpolynomial *qpolynomial::copy() const & {
14223   return isl_qpolynomial_copy(ptr);
14224 }
14225 
get()14226 __isl_keep isl_qpolynomial *qpolynomial::get() const {
14227   return ptr;
14228 }
14229 
release()14230 __isl_give isl_qpolynomial *qpolynomial::release() {
14231   isl_qpolynomial *tmp = ptr;
14232   ptr = nullptr;
14233   return tmp;
14234 }
14235 
is_null()14236 bool qpolynomial::is_null() const {
14237   return ptr == nullptr;
14238 }
14239 
14240 
ctx()14241 isl::ctx qpolynomial::ctx() const {
14242   return isl::ctx(isl_qpolynomial_get_ctx(ptr));
14243 }
14244 
dump()14245 void qpolynomial::dump() const {
14246   isl_qpolynomial_dump(get());
14247 }
14248 
14249 
add(isl::qpolynomial qp2)14250 isl::qpolynomial qpolynomial::add(isl::qpolynomial qp2) const
14251 {
14252   auto res = isl_qpolynomial_add(copy(), qp2.release());
14253   return manage(res);
14254 }
14255 
add_dims(isl::dim type,unsigned int n)14256 isl::qpolynomial qpolynomial::add_dims(isl::dim type, unsigned int n) const
14257 {
14258   auto res = isl_qpolynomial_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
14259   return manage(res);
14260 }
14261 
align_params(isl::space model)14262 isl::qpolynomial qpolynomial::align_params(isl::space model) const
14263 {
14264   auto res = isl_qpolynomial_align_params(copy(), model.release());
14265   return manage(res);
14266 }
14267 
as_polynomial_on_domain(const isl::basic_set & bset,const std::function<stat (basic_set,qpolynomial)> & fn)14268 stat qpolynomial::as_polynomial_on_domain(const isl::basic_set &bset, const std::function<stat(basic_set, qpolynomial)> &fn) const
14269 {
14270   struct fn_data {
14271     const std::function<stat(basic_set, qpolynomial)> *func;
14272   } fn_data = { &fn };
14273   auto fn_lambda = [](isl_basic_set *arg_0, isl_qpolynomial *arg_1, void *arg_2) -> isl_stat {
14274     auto *data = static_cast<struct fn_data *>(arg_2);
14275     stat ret = (*data->func)(manage(arg_0), manage(arg_1));
14276     return ret.release();
14277   };
14278   auto res = isl_qpolynomial_as_polynomial_on_domain(get(), bset.get(), fn_lambda, &fn_data);
14279   return manage(res);
14280 }
14281 
dim(isl::dim type)14282 isl_size qpolynomial::dim(isl::dim type) const
14283 {
14284   auto res = isl_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
14285   return res;
14286 }
14287 
drop_dims(isl::dim type,unsigned int first,unsigned int n)14288 isl::qpolynomial qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
14289 {
14290   auto res = isl_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14291   return manage(res);
14292 }
14293 
eval(isl::point pnt)14294 isl::val qpolynomial::eval(isl::point pnt) const
14295 {
14296   auto res = isl_qpolynomial_eval(copy(), pnt.release());
14297   return manage(res);
14298 }
14299 
foreach_term(const std::function<stat (term)> & fn)14300 stat qpolynomial::foreach_term(const std::function<stat(term)> &fn) const
14301 {
14302   struct fn_data {
14303     const std::function<stat(term)> *func;
14304   } fn_data = { &fn };
14305   auto fn_lambda = [](isl_term *arg_0, void *arg_1) -> isl_stat {
14306     auto *data = static_cast<struct fn_data *>(arg_1);
14307     stat ret = (*data->func)(manage(arg_0));
14308     return ret.release();
14309   };
14310   auto res = isl_qpolynomial_foreach_term(get(), fn_lambda, &fn_data);
14311   return manage(res);
14312 }
14313 
from_aff(isl::aff aff)14314 isl::qpolynomial qpolynomial::from_aff(isl::aff aff)
14315 {
14316   auto res = isl_qpolynomial_from_aff(aff.release());
14317   return manage(res);
14318 }
14319 
from_constraint(isl::constraint c,isl::dim type,unsigned int pos)14320 isl::qpolynomial qpolynomial::from_constraint(isl::constraint c, isl::dim type, unsigned int pos)
14321 {
14322   auto res = isl_qpolynomial_from_constraint(c.release(), static_cast<enum isl_dim_type>(type), pos);
14323   return manage(res);
14324 }
14325 
from_term(isl::term term)14326 isl::qpolynomial qpolynomial::from_term(isl::term term)
14327 {
14328   auto res = isl_qpolynomial_from_term(term.release());
14329   return manage(res);
14330 }
14331 
get_constant_val()14332 isl::val qpolynomial::get_constant_val() const
14333 {
14334   auto res = isl_qpolynomial_get_constant_val(get());
14335   return manage(res);
14336 }
14337 
get_domain_space()14338 isl::space qpolynomial::get_domain_space() const
14339 {
14340   auto res = isl_qpolynomial_get_domain_space(get());
14341   return manage(res);
14342 }
14343 
get_space()14344 isl::space qpolynomial::get_space() const
14345 {
14346   auto res = isl_qpolynomial_get_space(get());
14347   return manage(res);
14348 }
14349 
gist(isl::set context)14350 isl::qpolynomial qpolynomial::gist(isl::set context) const
14351 {
14352   auto res = isl_qpolynomial_gist(copy(), context.release());
14353   return manage(res);
14354 }
14355 
gist_params(isl::set context)14356 isl::qpolynomial qpolynomial::gist_params(isl::set context) const
14357 {
14358   auto res = isl_qpolynomial_gist_params(copy(), context.release());
14359   return manage(res);
14360 }
14361 
homogenize()14362 isl::qpolynomial qpolynomial::homogenize() const
14363 {
14364   auto res = isl_qpolynomial_homogenize(copy());
14365   return manage(res);
14366 }
14367 
infty_on_domain(isl::space domain)14368 isl::qpolynomial qpolynomial::infty_on_domain(isl::space domain)
14369 {
14370   auto res = isl_qpolynomial_infty_on_domain(domain.release());
14371   return manage(res);
14372 }
14373 
insert_dims(isl::dim type,unsigned int first,unsigned int n)14374 isl::qpolynomial qpolynomial::insert_dims(isl::dim type, unsigned int first, unsigned int n) const
14375 {
14376   auto res = isl_qpolynomial_insert_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
14377   return manage(res);
14378 }
14379 
involves_dims(isl::dim type,unsigned int first,unsigned int n)14380 boolean qpolynomial::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
14381 {
14382   auto res = isl_qpolynomial_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
14383   return manage(res);
14384 }
14385 
is_infty()14386 boolean qpolynomial::is_infty() const
14387 {
14388   auto res = isl_qpolynomial_is_infty(get());
14389   return manage(res);
14390 }
14391 
is_nan()14392 boolean qpolynomial::is_nan() const
14393 {
14394   auto res = isl_qpolynomial_is_nan(get());
14395   return manage(res);
14396 }
14397 
is_neginfty()14398 boolean qpolynomial::is_neginfty() const
14399 {
14400   auto res = isl_qpolynomial_is_neginfty(get());
14401   return manage(res);
14402 }
14403 
is_zero()14404 boolean qpolynomial::is_zero() const
14405 {
14406   auto res = isl_qpolynomial_is_zero(get());
14407   return manage(res);
14408 }
14409 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)14410 isl::qpolynomial qpolynomial::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
14411 {
14412   auto res = isl_qpolynomial_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
14413   return manage(res);
14414 }
14415 
mul(isl::qpolynomial qp2)14416 isl::qpolynomial qpolynomial::mul(isl::qpolynomial qp2) const
14417 {
14418   auto res = isl_qpolynomial_mul(copy(), qp2.release());
14419   return manage(res);
14420 }
14421 
nan_on_domain(isl::space domain)14422 isl::qpolynomial qpolynomial::nan_on_domain(isl::space domain)
14423 {
14424   auto res = isl_qpolynomial_nan_on_domain(domain.release());
14425   return manage(res);
14426 }
14427 
neg()14428 isl::qpolynomial qpolynomial::neg() const
14429 {
14430   auto res = isl_qpolynomial_neg(copy());
14431   return manage(res);
14432 }
14433 
neginfty_on_domain(isl::space domain)14434 isl::qpolynomial qpolynomial::neginfty_on_domain(isl::space domain)
14435 {
14436   auto res = isl_qpolynomial_neginfty_on_domain(domain.release());
14437   return manage(res);
14438 }
14439 
one_on_domain(isl::space domain)14440 isl::qpolynomial qpolynomial::one_on_domain(isl::space domain)
14441 {
14442   auto res = isl_qpolynomial_one_on_domain(domain.release());
14443   return manage(res);
14444 }
14445 
plain_is_equal(const isl::qpolynomial & qp2)14446 boolean qpolynomial::plain_is_equal(const isl::qpolynomial &qp2) const
14447 {
14448   auto res = isl_qpolynomial_plain_is_equal(get(), qp2.get());
14449   return manage(res);
14450 }
14451 
pow(unsigned int power)14452 isl::qpolynomial qpolynomial::pow(unsigned int power) const
14453 {
14454   auto res = isl_qpolynomial_pow(copy(), power);
14455   return manage(res);
14456 }
14457 
project_domain_on_params()14458 isl::qpolynomial qpolynomial::project_domain_on_params() const
14459 {
14460   auto res = isl_qpolynomial_project_domain_on_params(copy());
14461   return manage(res);
14462 }
14463 
scale_down_val(isl::val v)14464 isl::qpolynomial qpolynomial::scale_down_val(isl::val v) const
14465 {
14466   auto res = isl_qpolynomial_scale_down_val(copy(), v.release());
14467   return manage(res);
14468 }
14469 
scale_val(isl::val v)14470 isl::qpolynomial qpolynomial::scale_val(isl::val v) const
14471 {
14472   auto res = isl_qpolynomial_scale_val(copy(), v.release());
14473   return manage(res);
14474 }
14475 
sgn()14476 int qpolynomial::sgn() const
14477 {
14478   auto res = isl_qpolynomial_sgn(get());
14479   return res;
14480 }
14481 
sub(isl::qpolynomial qp2)14482 isl::qpolynomial qpolynomial::sub(isl::qpolynomial qp2) const
14483 {
14484   auto res = isl_qpolynomial_sub(copy(), qp2.release());
14485   return manage(res);
14486 }
14487 
val_on_domain(isl::space space,isl::val val)14488 isl::qpolynomial qpolynomial::val_on_domain(isl::space space, isl::val val)
14489 {
14490   auto res = isl_qpolynomial_val_on_domain(space.release(), val.release());
14491   return manage(res);
14492 }
14493 
var_on_domain(isl::space domain,isl::dim type,unsigned int pos)14494 isl::qpolynomial qpolynomial::var_on_domain(isl::space domain, isl::dim type, unsigned int pos)
14495 {
14496   auto res = isl_qpolynomial_var_on_domain(domain.release(), static_cast<enum isl_dim_type>(type), pos);
14497   return manage(res);
14498 }
14499 
zero_on_domain(isl::space domain)14500 isl::qpolynomial qpolynomial::zero_on_domain(isl::space domain)
14501 {
14502   auto res = isl_qpolynomial_zero_on_domain(domain.release());
14503   return manage(res);
14504 }
14505 
14506 // implementations for isl::qpolynomial_list
manage(__isl_take isl_qpolynomial_list * ptr)14507 qpolynomial_list manage(__isl_take isl_qpolynomial_list *ptr) {
14508   return qpolynomial_list(ptr);
14509 }
manage_copy(__isl_keep isl_qpolynomial_list * ptr)14510 qpolynomial_list manage_copy(__isl_keep isl_qpolynomial_list *ptr) {
14511   ptr = isl_qpolynomial_list_copy(ptr);
14512   return qpolynomial_list(ptr);
14513 }
14514 
qpolynomial_list()14515 qpolynomial_list::qpolynomial_list()
14516     : ptr(nullptr) {}
14517 
qpolynomial_list(const qpolynomial_list & obj)14518 qpolynomial_list::qpolynomial_list(const qpolynomial_list &obj)
14519     : ptr(nullptr)
14520 {
14521   ptr = obj.copy();
14522 }
14523 
14524 
qpolynomial_list(__isl_take isl_qpolynomial_list * ptr)14525 qpolynomial_list::qpolynomial_list(__isl_take isl_qpolynomial_list *ptr)
14526     : ptr(ptr) {}
14527 
14528 
14529 qpolynomial_list &qpolynomial_list::operator=(qpolynomial_list obj) {
14530   std::swap(this->ptr, obj.ptr);
14531   return *this;
14532 }
14533 
~qpolynomial_list()14534 qpolynomial_list::~qpolynomial_list() {
14535   if (ptr)
14536     isl_qpolynomial_list_free(ptr);
14537 }
14538 
copy()14539 __isl_give isl_qpolynomial_list *qpolynomial_list::copy() const & {
14540   return isl_qpolynomial_list_copy(ptr);
14541 }
14542 
get()14543 __isl_keep isl_qpolynomial_list *qpolynomial_list::get() const {
14544   return ptr;
14545 }
14546 
release()14547 __isl_give isl_qpolynomial_list *qpolynomial_list::release() {
14548   isl_qpolynomial_list *tmp = ptr;
14549   ptr = nullptr;
14550   return tmp;
14551 }
14552 
is_null()14553 bool qpolynomial_list::is_null() const {
14554   return ptr == nullptr;
14555 }
14556 
14557 
ctx()14558 isl::ctx qpolynomial_list::ctx() const {
14559   return isl::ctx(isl_qpolynomial_list_get_ctx(ptr));
14560 }
14561 
dump()14562 void qpolynomial_list::dump() const {
14563   isl_qpolynomial_list_dump(get());
14564 }
14565 
14566 
add(isl::qpolynomial el)14567 isl::qpolynomial_list qpolynomial_list::add(isl::qpolynomial el) const
14568 {
14569   auto res = isl_qpolynomial_list_add(copy(), el.release());
14570   return manage(res);
14571 }
14572 
alloc(isl::ctx ctx,int n)14573 isl::qpolynomial_list qpolynomial_list::alloc(isl::ctx ctx, int n)
14574 {
14575   auto res = isl_qpolynomial_list_alloc(ctx.release(), n);
14576   return manage(res);
14577 }
14578 
clear()14579 isl::qpolynomial_list qpolynomial_list::clear() const
14580 {
14581   auto res = isl_qpolynomial_list_clear(copy());
14582   return manage(res);
14583 }
14584 
concat(isl::qpolynomial_list list2)14585 isl::qpolynomial_list qpolynomial_list::concat(isl::qpolynomial_list list2) const
14586 {
14587   auto res = isl_qpolynomial_list_concat(copy(), list2.release());
14588   return manage(res);
14589 }
14590 
drop(unsigned int first,unsigned int n)14591 isl::qpolynomial_list qpolynomial_list::drop(unsigned int first, unsigned int n) const
14592 {
14593   auto res = isl_qpolynomial_list_drop(copy(), first, n);
14594   return manage(res);
14595 }
14596 
foreach(const std::function<stat (qpolynomial)> & fn)14597 stat qpolynomial_list::foreach(const std::function<stat(qpolynomial)> &fn) const
14598 {
14599   struct fn_data {
14600     const std::function<stat(qpolynomial)> *func;
14601   } fn_data = { &fn };
14602   auto fn_lambda = [](isl_qpolynomial *arg_0, void *arg_1) -> isl_stat {
14603     auto *data = static_cast<struct fn_data *>(arg_1);
14604     stat ret = (*data->func)(manage(arg_0));
14605     return ret.release();
14606   };
14607   auto res = isl_qpolynomial_list_foreach(get(), fn_lambda, &fn_data);
14608   return manage(res);
14609 }
14610 
from_qpolynomial(isl::qpolynomial el)14611 isl::qpolynomial_list qpolynomial_list::from_qpolynomial(isl::qpolynomial el)
14612 {
14613   auto res = isl_qpolynomial_list_from_qpolynomial(el.release());
14614   return manage(res);
14615 }
14616 
get_at(int index)14617 isl::qpolynomial qpolynomial_list::get_at(int index) const
14618 {
14619   auto res = isl_qpolynomial_list_get_at(get(), index);
14620   return manage(res);
14621 }
14622 
get_qpolynomial(int index)14623 isl::qpolynomial qpolynomial_list::get_qpolynomial(int index) const
14624 {
14625   auto res = isl_qpolynomial_list_get_qpolynomial(get(), index);
14626   return manage(res);
14627 }
14628 
insert(unsigned int pos,isl::qpolynomial el)14629 isl::qpolynomial_list qpolynomial_list::insert(unsigned int pos, isl::qpolynomial el) const
14630 {
14631   auto res = isl_qpolynomial_list_insert(copy(), pos, el.release());
14632   return manage(res);
14633 }
14634 
n_qpolynomial()14635 isl_size qpolynomial_list::n_qpolynomial() const
14636 {
14637   auto res = isl_qpolynomial_list_n_qpolynomial(get());
14638   return res;
14639 }
14640 
reverse()14641 isl::qpolynomial_list qpolynomial_list::reverse() const
14642 {
14643   auto res = isl_qpolynomial_list_reverse(copy());
14644   return manage(res);
14645 }
14646 
set_qpolynomial(int index,isl::qpolynomial el)14647 isl::qpolynomial_list qpolynomial_list::set_qpolynomial(int index, isl::qpolynomial el) const
14648 {
14649   auto res = isl_qpolynomial_list_set_qpolynomial(copy(), index, el.release());
14650   return manage(res);
14651 }
14652 
size()14653 isl_size qpolynomial_list::size() const
14654 {
14655   auto res = isl_qpolynomial_list_size(get());
14656   return res;
14657 }
14658 
swap(unsigned int pos1,unsigned int pos2)14659 isl::qpolynomial_list qpolynomial_list::swap(unsigned int pos1, unsigned int pos2) const
14660 {
14661   auto res = isl_qpolynomial_list_swap(copy(), pos1, pos2);
14662   return manage(res);
14663 }
14664 
14665 // implementations for isl::schedule
manage(__isl_take isl_schedule * ptr)14666 schedule manage(__isl_take isl_schedule *ptr) {
14667   return schedule(ptr);
14668 }
manage_copy(__isl_keep isl_schedule * ptr)14669 schedule manage_copy(__isl_keep isl_schedule *ptr) {
14670   ptr = isl_schedule_copy(ptr);
14671   return schedule(ptr);
14672 }
14673 
schedule()14674 schedule::schedule()
14675     : ptr(nullptr) {}
14676 
schedule(const schedule & obj)14677 schedule::schedule(const schedule &obj)
14678     : ptr(nullptr)
14679 {
14680   ptr = obj.copy();
14681 }
14682 
14683 
schedule(__isl_take isl_schedule * ptr)14684 schedule::schedule(__isl_take isl_schedule *ptr)
14685     : ptr(ptr) {}
14686 
schedule(isl::ctx ctx,const std::string & str)14687 schedule::schedule(isl::ctx ctx, const std::string &str)
14688 {
14689   auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
14690   ptr = res;
14691 }
14692 
14693 schedule &schedule::operator=(schedule obj) {
14694   std::swap(this->ptr, obj.ptr);
14695   return *this;
14696 }
14697 
~schedule()14698 schedule::~schedule() {
14699   if (ptr)
14700     isl_schedule_free(ptr);
14701 }
14702 
copy()14703 __isl_give isl_schedule *schedule::copy() const & {
14704   return isl_schedule_copy(ptr);
14705 }
14706 
get()14707 __isl_keep isl_schedule *schedule::get() const {
14708   return ptr;
14709 }
14710 
release()14711 __isl_give isl_schedule *schedule::release() {
14712   isl_schedule *tmp = ptr;
14713   ptr = nullptr;
14714   return tmp;
14715 }
14716 
is_null()14717 bool schedule::is_null() const {
14718   return ptr == nullptr;
14719 }
14720 
14721 
ctx()14722 isl::ctx schedule::ctx() const {
14723   return isl::ctx(isl_schedule_get_ctx(ptr));
14724 }
14725 
dump()14726 void schedule::dump() const {
14727   isl_schedule_dump(get());
14728 }
14729 
14730 
align_params(isl::space space)14731 isl::schedule schedule::align_params(isl::space space) const
14732 {
14733   auto res = isl_schedule_align_params(copy(), space.release());
14734   return manage(res);
14735 }
14736 
empty(isl::space space)14737 isl::schedule schedule::empty(isl::space space)
14738 {
14739   auto res = isl_schedule_empty(space.release());
14740   return manage(res);
14741 }
14742 
from_domain(isl::union_set domain)14743 isl::schedule schedule::from_domain(isl::union_set domain)
14744 {
14745   auto res = isl_schedule_from_domain(domain.release());
14746   return manage(res);
14747 }
14748 
get_domain()14749 isl::union_set schedule::get_domain() const
14750 {
14751   auto res = isl_schedule_get_domain(get());
14752   return manage(res);
14753 }
14754 
get_map()14755 isl::union_map schedule::get_map() const
14756 {
14757   auto res = isl_schedule_get_map(get());
14758   return manage(res);
14759 }
14760 
get_root()14761 isl::schedule_node schedule::get_root() const
14762 {
14763   auto res = isl_schedule_get_root(get());
14764   return manage(res);
14765 }
14766 
gist_domain_params(isl::set context)14767 isl::schedule schedule::gist_domain_params(isl::set context) const
14768 {
14769   auto res = isl_schedule_gist_domain_params(copy(), context.release());
14770   return manage(res);
14771 }
14772 
insert_context(isl::set context)14773 isl::schedule schedule::insert_context(isl::set context) const
14774 {
14775   auto res = isl_schedule_insert_context(copy(), context.release());
14776   return manage(res);
14777 }
14778 
insert_guard(isl::set guard)14779 isl::schedule schedule::insert_guard(isl::set guard) const
14780 {
14781   auto res = isl_schedule_insert_guard(copy(), guard.release());
14782   return manage(res);
14783 }
14784 
insert_partial_schedule(isl::multi_union_pw_aff partial)14785 isl::schedule schedule::insert_partial_schedule(isl::multi_union_pw_aff partial) const
14786 {
14787   auto res = isl_schedule_insert_partial_schedule(copy(), partial.release());
14788   return manage(res);
14789 }
14790 
intersect_domain(isl::union_set domain)14791 isl::schedule schedule::intersect_domain(isl::union_set domain) const
14792 {
14793   auto res = isl_schedule_intersect_domain(copy(), domain.release());
14794   return manage(res);
14795 }
14796 
plain_is_equal(const isl::schedule & schedule2)14797 boolean schedule::plain_is_equal(const isl::schedule &schedule2) const
14798 {
14799   auto res = isl_schedule_plain_is_equal(get(), schedule2.get());
14800   return manage(res);
14801 }
14802 
pullback(isl::union_pw_multi_aff upma)14803 isl::schedule schedule::pullback(isl::union_pw_multi_aff upma) const
14804 {
14805   auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
14806   return manage(res);
14807 }
14808 
reset_user()14809 isl::schedule schedule::reset_user() const
14810 {
14811   auto res = isl_schedule_reset_user(copy());
14812   return manage(res);
14813 }
14814 
sequence(isl::schedule schedule2)14815 isl::schedule schedule::sequence(isl::schedule schedule2) const
14816 {
14817   auto res = isl_schedule_sequence(copy(), schedule2.release());
14818   return manage(res);
14819 }
14820 
14821 // implementations for isl::schedule_constraints
manage(__isl_take isl_schedule_constraints * ptr)14822 schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
14823   return schedule_constraints(ptr);
14824 }
manage_copy(__isl_keep isl_schedule_constraints * ptr)14825 schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
14826   ptr = isl_schedule_constraints_copy(ptr);
14827   return schedule_constraints(ptr);
14828 }
14829 
schedule_constraints()14830 schedule_constraints::schedule_constraints()
14831     : ptr(nullptr) {}
14832 
schedule_constraints(const schedule_constraints & obj)14833 schedule_constraints::schedule_constraints(const schedule_constraints &obj)
14834     : ptr(nullptr)
14835 {
14836   ptr = obj.copy();
14837 }
14838 
14839 
schedule_constraints(__isl_take isl_schedule_constraints * ptr)14840 schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
14841     : ptr(ptr) {}
14842 
schedule_constraints(isl::ctx ctx,const std::string & str)14843 schedule_constraints::schedule_constraints(isl::ctx ctx, const std::string &str)
14844 {
14845   auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
14846   ptr = res;
14847 }
14848 
14849 schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
14850   std::swap(this->ptr, obj.ptr);
14851   return *this;
14852 }
14853 
~schedule_constraints()14854 schedule_constraints::~schedule_constraints() {
14855   if (ptr)
14856     isl_schedule_constraints_free(ptr);
14857 }
14858 
copy()14859 __isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
14860   return isl_schedule_constraints_copy(ptr);
14861 }
14862 
get()14863 __isl_keep isl_schedule_constraints *schedule_constraints::get() const {
14864   return ptr;
14865 }
14866 
release()14867 __isl_give isl_schedule_constraints *schedule_constraints::release() {
14868   isl_schedule_constraints *tmp = ptr;
14869   ptr = nullptr;
14870   return tmp;
14871 }
14872 
is_null()14873 bool schedule_constraints::is_null() const {
14874   return ptr == nullptr;
14875 }
14876 
14877 
ctx()14878 isl::ctx schedule_constraints::ctx() const {
14879   return isl::ctx(isl_schedule_constraints_get_ctx(ptr));
14880 }
14881 
dump()14882 void schedule_constraints::dump() const {
14883   isl_schedule_constraints_dump(get());
14884 }
14885 
14886 
apply(isl::union_map umap)14887 isl::schedule_constraints schedule_constraints::apply(isl::union_map umap) const
14888 {
14889   auto res = isl_schedule_constraints_apply(copy(), umap.release());
14890   return manage(res);
14891 }
14892 
compute_schedule()14893 isl::schedule schedule_constraints::compute_schedule() const
14894 {
14895   auto res = isl_schedule_constraints_compute_schedule(copy());
14896   return manage(res);
14897 }
14898 
get_coincidence()14899 isl::union_map schedule_constraints::get_coincidence() const
14900 {
14901   auto res = isl_schedule_constraints_get_coincidence(get());
14902   return manage(res);
14903 }
14904 
get_conditional_validity()14905 isl::union_map schedule_constraints::get_conditional_validity() const
14906 {
14907   auto res = isl_schedule_constraints_get_conditional_validity(get());
14908   return manage(res);
14909 }
14910 
get_conditional_validity_condition()14911 isl::union_map schedule_constraints::get_conditional_validity_condition() const
14912 {
14913   auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
14914   return manage(res);
14915 }
14916 
get_context()14917 isl::set schedule_constraints::get_context() const
14918 {
14919   auto res = isl_schedule_constraints_get_context(get());
14920   return manage(res);
14921 }
14922 
get_domain()14923 isl::union_set schedule_constraints::get_domain() const
14924 {
14925   auto res = isl_schedule_constraints_get_domain(get());
14926   return manage(res);
14927 }
14928 
get_proximity()14929 isl::union_map schedule_constraints::get_proximity() const
14930 {
14931   auto res = isl_schedule_constraints_get_proximity(get());
14932   return manage(res);
14933 }
14934 
get_validity()14935 isl::union_map schedule_constraints::get_validity() const
14936 {
14937   auto res = isl_schedule_constraints_get_validity(get());
14938   return manage(res);
14939 }
14940 
on_domain(isl::union_set domain)14941 isl::schedule_constraints schedule_constraints::on_domain(isl::union_set domain)
14942 {
14943   auto res = isl_schedule_constraints_on_domain(domain.release());
14944   return manage(res);
14945 }
14946 
set_coincidence(isl::union_map coincidence)14947 isl::schedule_constraints schedule_constraints::set_coincidence(isl::union_map coincidence) const
14948 {
14949   auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
14950   return manage(res);
14951 }
14952 
set_conditional_validity(isl::union_map condition,isl::union_map validity)14953 isl::schedule_constraints schedule_constraints::set_conditional_validity(isl::union_map condition, isl::union_map validity) const
14954 {
14955   auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
14956   return manage(res);
14957 }
14958 
set_context(isl::set context)14959 isl::schedule_constraints schedule_constraints::set_context(isl::set context) const
14960 {
14961   auto res = isl_schedule_constraints_set_context(copy(), context.release());
14962   return manage(res);
14963 }
14964 
set_proximity(isl::union_map proximity)14965 isl::schedule_constraints schedule_constraints::set_proximity(isl::union_map proximity) const
14966 {
14967   auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
14968   return manage(res);
14969 }
14970 
set_validity(isl::union_map validity)14971 isl::schedule_constraints schedule_constraints::set_validity(isl::union_map validity) const
14972 {
14973   auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
14974   return manage(res);
14975 }
14976 
14977 // implementations for isl::schedule_node
manage(__isl_take isl_schedule_node * ptr)14978 schedule_node manage(__isl_take isl_schedule_node *ptr) {
14979   return schedule_node(ptr);
14980 }
manage_copy(__isl_keep isl_schedule_node * ptr)14981 schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
14982   ptr = isl_schedule_node_copy(ptr);
14983   return schedule_node(ptr);
14984 }
14985 
schedule_node()14986 schedule_node::schedule_node()
14987     : ptr(nullptr) {}
14988 
schedule_node(const schedule_node & obj)14989 schedule_node::schedule_node(const schedule_node &obj)
14990     : ptr(nullptr)
14991 {
14992   ptr = obj.copy();
14993 }
14994 
14995 
schedule_node(__isl_take isl_schedule_node * ptr)14996 schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
14997     : ptr(ptr) {}
14998 
14999 
15000 schedule_node &schedule_node::operator=(schedule_node obj) {
15001   std::swap(this->ptr, obj.ptr);
15002   return *this;
15003 }
15004 
~schedule_node()15005 schedule_node::~schedule_node() {
15006   if (ptr)
15007     isl_schedule_node_free(ptr);
15008 }
15009 
copy()15010 __isl_give isl_schedule_node *schedule_node::copy() const & {
15011   return isl_schedule_node_copy(ptr);
15012 }
15013 
get()15014 __isl_keep isl_schedule_node *schedule_node::get() const {
15015   return ptr;
15016 }
15017 
release()15018 __isl_give isl_schedule_node *schedule_node::release() {
15019   isl_schedule_node *tmp = ptr;
15020   ptr = nullptr;
15021   return tmp;
15022 }
15023 
is_null()15024 bool schedule_node::is_null() const {
15025   return ptr == nullptr;
15026 }
15027 
15028 
ctx()15029 isl::ctx schedule_node::ctx() const {
15030   return isl::ctx(isl_schedule_node_get_ctx(ptr));
15031 }
15032 
dump()15033 void schedule_node::dump() const {
15034   isl_schedule_node_dump(get());
15035 }
15036 
15037 
align_params(isl::space space)15038 isl::schedule_node schedule_node::align_params(isl::space space) const
15039 {
15040   auto res = isl_schedule_node_align_params(copy(), space.release());
15041   return manage(res);
15042 }
15043 
ancestor(int generation)15044 isl::schedule_node schedule_node::ancestor(int generation) const
15045 {
15046   auto res = isl_schedule_node_ancestor(copy(), generation);
15047   return manage(res);
15048 }
15049 
band_member_get_coincident(int pos)15050 boolean schedule_node::band_member_get_coincident(int pos) const
15051 {
15052   auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
15053   return manage(res);
15054 }
15055 
band_member_set_coincident(int pos,int coincident)15056 isl::schedule_node schedule_node::band_member_set_coincident(int pos, int coincident) const
15057 {
15058   auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
15059   return manage(res);
15060 }
15061 
band_set_ast_build_options(isl::union_set options)15062 isl::schedule_node schedule_node::band_set_ast_build_options(isl::union_set options) const
15063 {
15064   auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
15065   return manage(res);
15066 }
15067 
child(int pos)15068 isl::schedule_node schedule_node::child(int pos) const
15069 {
15070   auto res = isl_schedule_node_child(copy(), pos);
15071   return manage(res);
15072 }
15073 
context_get_context()15074 isl::set schedule_node::context_get_context() const
15075 {
15076   auto res = isl_schedule_node_context_get_context(get());
15077   return manage(res);
15078 }
15079 
cut()15080 isl::schedule_node schedule_node::cut() const
15081 {
15082   auto res = isl_schedule_node_cut(copy());
15083   return manage(res);
15084 }
15085 
domain_get_domain()15086 isl::union_set schedule_node::domain_get_domain() const
15087 {
15088   auto res = isl_schedule_node_domain_get_domain(get());
15089   return manage(res);
15090 }
15091 
expansion_get_contraction()15092 isl::union_pw_multi_aff schedule_node::expansion_get_contraction() const
15093 {
15094   auto res = isl_schedule_node_expansion_get_contraction(get());
15095   return manage(res);
15096 }
15097 
expansion_get_expansion()15098 isl::union_map schedule_node::expansion_get_expansion() const
15099 {
15100   auto res = isl_schedule_node_expansion_get_expansion(get());
15101   return manage(res);
15102 }
15103 
extension_get_extension()15104 isl::union_map schedule_node::extension_get_extension() const
15105 {
15106   auto res = isl_schedule_node_extension_get_extension(get());
15107   return manage(res);
15108 }
15109 
filter_get_filter()15110 isl::union_set schedule_node::filter_get_filter() const
15111 {
15112   auto res = isl_schedule_node_filter_get_filter(get());
15113   return manage(res);
15114 }
15115 
first_child()15116 isl::schedule_node schedule_node::first_child() const
15117 {
15118   auto res = isl_schedule_node_first_child(copy());
15119   return manage(res);
15120 }
15121 
foreach_ancestor_top_down(const std::function<stat (schedule_node)> & fn)15122 stat schedule_node::foreach_ancestor_top_down(const std::function<stat(schedule_node)> &fn) const
15123 {
15124   struct fn_data {
15125     const std::function<stat(schedule_node)> *func;
15126   } fn_data = { &fn };
15127   auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
15128     auto *data = static_cast<struct fn_data *>(arg_1);
15129     stat ret = (*data->func)(manage_copy(arg_0));
15130     return ret.release();
15131   };
15132   auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
15133   return manage(res);
15134 }
15135 
from_domain(isl::union_set domain)15136 isl::schedule_node schedule_node::from_domain(isl::union_set domain)
15137 {
15138   auto res = isl_schedule_node_from_domain(domain.release());
15139   return manage(res);
15140 }
15141 
from_extension(isl::union_map extension)15142 isl::schedule_node schedule_node::from_extension(isl::union_map extension)
15143 {
15144   auto res = isl_schedule_node_from_extension(extension.release());
15145   return manage(res);
15146 }
15147 
get_ancestor_child_position(const isl::schedule_node & ancestor)15148 isl_size schedule_node::get_ancestor_child_position(const isl::schedule_node &ancestor) const
15149 {
15150   auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
15151   return res;
15152 }
15153 
get_child(int pos)15154 isl::schedule_node schedule_node::get_child(int pos) const
15155 {
15156   auto res = isl_schedule_node_get_child(get(), pos);
15157   return manage(res);
15158 }
15159 
get_child_position()15160 isl_size schedule_node::get_child_position() const
15161 {
15162   auto res = isl_schedule_node_get_child_position(get());
15163   return res;
15164 }
15165 
get_domain()15166 isl::union_set schedule_node::get_domain() const
15167 {
15168   auto res = isl_schedule_node_get_domain(get());
15169   return manage(res);
15170 }
15171 
get_prefix_schedule_multi_union_pw_aff()15172 isl::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
15173 {
15174   auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
15175   return manage(res);
15176 }
15177 
get_prefix_schedule_relation()15178 isl::union_map schedule_node::get_prefix_schedule_relation() const
15179 {
15180   auto res = isl_schedule_node_get_prefix_schedule_relation(get());
15181   return manage(res);
15182 }
15183 
get_prefix_schedule_union_map()15184 isl::union_map schedule_node::get_prefix_schedule_union_map() const
15185 {
15186   auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
15187   return manage(res);
15188 }
15189 
get_prefix_schedule_union_pw_multi_aff()15190 isl::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
15191 {
15192   auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
15193   return manage(res);
15194 }
15195 
get_schedule()15196 isl::schedule schedule_node::get_schedule() const
15197 {
15198   auto res = isl_schedule_node_get_schedule(get());
15199   return manage(res);
15200 }
15201 
get_schedule_depth()15202 isl_size schedule_node::get_schedule_depth() const
15203 {
15204   auto res = isl_schedule_node_get_schedule_depth(get());
15205   return res;
15206 }
15207 
get_shared_ancestor(const isl::schedule_node & node2)15208 isl::schedule_node schedule_node::get_shared_ancestor(const isl::schedule_node &node2) const
15209 {
15210   auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
15211   return manage(res);
15212 }
15213 
get_subtree_contraction()15214 isl::union_pw_multi_aff schedule_node::get_subtree_contraction() const
15215 {
15216   auto res = isl_schedule_node_get_subtree_contraction(get());
15217   return manage(res);
15218 }
15219 
get_subtree_expansion()15220 isl::union_map schedule_node::get_subtree_expansion() const
15221 {
15222   auto res = isl_schedule_node_get_subtree_expansion(get());
15223   return manage(res);
15224 }
15225 
get_subtree_schedule_union_map()15226 isl::union_map schedule_node::get_subtree_schedule_union_map() const
15227 {
15228   auto res = isl_schedule_node_get_subtree_schedule_union_map(get());
15229   return manage(res);
15230 }
15231 
get_tree_depth()15232 isl_size schedule_node::get_tree_depth() const
15233 {
15234   auto res = isl_schedule_node_get_tree_depth(get());
15235   return res;
15236 }
15237 
get_universe_domain()15238 isl::union_set schedule_node::get_universe_domain() const
15239 {
15240   auto res = isl_schedule_node_get_universe_domain(get());
15241   return manage(res);
15242 }
15243 
graft_after(isl::schedule_node graft)15244 isl::schedule_node schedule_node::graft_after(isl::schedule_node graft) const
15245 {
15246   auto res = isl_schedule_node_graft_after(copy(), graft.release());
15247   return manage(res);
15248 }
15249 
graft_before(isl::schedule_node graft)15250 isl::schedule_node schedule_node::graft_before(isl::schedule_node graft) const
15251 {
15252   auto res = isl_schedule_node_graft_before(copy(), graft.release());
15253   return manage(res);
15254 }
15255 
group(isl::id group_id)15256 isl::schedule_node schedule_node::group(isl::id group_id) const
15257 {
15258   auto res = isl_schedule_node_group(copy(), group_id.release());
15259   return manage(res);
15260 }
15261 
guard_get_guard()15262 isl::set schedule_node::guard_get_guard() const
15263 {
15264   auto res = isl_schedule_node_guard_get_guard(get());
15265   return manage(res);
15266 }
15267 
has_children()15268 boolean schedule_node::has_children() const
15269 {
15270   auto res = isl_schedule_node_has_children(get());
15271   return manage(res);
15272 }
15273 
has_next_sibling()15274 boolean schedule_node::has_next_sibling() const
15275 {
15276   auto res = isl_schedule_node_has_next_sibling(get());
15277   return manage(res);
15278 }
15279 
has_parent()15280 boolean schedule_node::has_parent() const
15281 {
15282   auto res = isl_schedule_node_has_parent(get());
15283   return manage(res);
15284 }
15285 
has_previous_sibling()15286 boolean schedule_node::has_previous_sibling() const
15287 {
15288   auto res = isl_schedule_node_has_previous_sibling(get());
15289   return manage(res);
15290 }
15291 
insert_context(isl::set context)15292 isl::schedule_node schedule_node::insert_context(isl::set context) const
15293 {
15294   auto res = isl_schedule_node_insert_context(copy(), context.release());
15295   return manage(res);
15296 }
15297 
insert_filter(isl::union_set filter)15298 isl::schedule_node schedule_node::insert_filter(isl::union_set filter) const
15299 {
15300   auto res = isl_schedule_node_insert_filter(copy(), filter.release());
15301   return manage(res);
15302 }
15303 
insert_guard(isl::set context)15304 isl::schedule_node schedule_node::insert_guard(isl::set context) const
15305 {
15306   auto res = isl_schedule_node_insert_guard(copy(), context.release());
15307   return manage(res);
15308 }
15309 
insert_mark(isl::id mark)15310 isl::schedule_node schedule_node::insert_mark(isl::id mark) const
15311 {
15312   auto res = isl_schedule_node_insert_mark(copy(), mark.release());
15313   return manage(res);
15314 }
15315 
insert_partial_schedule(isl::multi_union_pw_aff schedule)15316 isl::schedule_node schedule_node::insert_partial_schedule(isl::multi_union_pw_aff schedule) const
15317 {
15318   auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
15319   return manage(res);
15320 }
15321 
insert_sequence(isl::union_set_list filters)15322 isl::schedule_node schedule_node::insert_sequence(isl::union_set_list filters) const
15323 {
15324   auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
15325   return manage(res);
15326 }
15327 
insert_set(isl::union_set_list filters)15328 isl::schedule_node schedule_node::insert_set(isl::union_set_list filters) const
15329 {
15330   auto res = isl_schedule_node_insert_set(copy(), filters.release());
15331   return manage(res);
15332 }
15333 
is_equal(const isl::schedule_node & node2)15334 boolean schedule_node::is_equal(const isl::schedule_node &node2) const
15335 {
15336   auto res = isl_schedule_node_is_equal(get(), node2.get());
15337   return manage(res);
15338 }
15339 
is_subtree_anchored()15340 boolean schedule_node::is_subtree_anchored() const
15341 {
15342   auto res = isl_schedule_node_is_subtree_anchored(get());
15343   return manage(res);
15344 }
15345 
mark_get_id()15346 isl::id schedule_node::mark_get_id() const
15347 {
15348   auto res = isl_schedule_node_mark_get_id(get());
15349   return manage(res);
15350 }
15351 
n_children()15352 isl_size schedule_node::n_children() const
15353 {
15354   auto res = isl_schedule_node_n_children(get());
15355   return res;
15356 }
15357 
next_sibling()15358 isl::schedule_node schedule_node::next_sibling() const
15359 {
15360   auto res = isl_schedule_node_next_sibling(copy());
15361   return manage(res);
15362 }
15363 
order_after(isl::union_set filter)15364 isl::schedule_node schedule_node::order_after(isl::union_set filter) const
15365 {
15366   auto res = isl_schedule_node_order_after(copy(), filter.release());
15367   return manage(res);
15368 }
15369 
order_before(isl::union_set filter)15370 isl::schedule_node schedule_node::order_before(isl::union_set filter) const
15371 {
15372   auto res = isl_schedule_node_order_before(copy(), filter.release());
15373   return manage(res);
15374 }
15375 
parent()15376 isl::schedule_node schedule_node::parent() const
15377 {
15378   auto res = isl_schedule_node_parent(copy());
15379   return manage(res);
15380 }
15381 
previous_sibling()15382 isl::schedule_node schedule_node::previous_sibling() const
15383 {
15384   auto res = isl_schedule_node_previous_sibling(copy());
15385   return manage(res);
15386 }
15387 
reset_user()15388 isl::schedule_node schedule_node::reset_user() const
15389 {
15390   auto res = isl_schedule_node_reset_user(copy());
15391   return manage(res);
15392 }
15393 
root()15394 isl::schedule_node schedule_node::root() const
15395 {
15396   auto res = isl_schedule_node_root(copy());
15397   return manage(res);
15398 }
15399 
sequence_splice_child(int pos)15400 isl::schedule_node schedule_node::sequence_splice_child(int pos) const
15401 {
15402   auto res = isl_schedule_node_sequence_splice_child(copy(), pos);
15403   return manage(res);
15404 }
15405 
15406 // implementations for isl::set
manage(__isl_take isl_set * ptr)15407 set manage(__isl_take isl_set *ptr) {
15408   return set(ptr);
15409 }
manage_copy(__isl_keep isl_set * ptr)15410 set manage_copy(__isl_keep isl_set *ptr) {
15411   ptr = isl_set_copy(ptr);
15412   return set(ptr);
15413 }
15414 
set()15415 set::set()
15416     : ptr(nullptr) {}
15417 
set(const set & obj)15418 set::set(const set &obj)
15419     : ptr(nullptr)
15420 {
15421   ptr = obj.copy();
15422 }
15423 
15424 
set(__isl_take isl_set * ptr)15425 set::set(__isl_take isl_set *ptr)
15426     : ptr(ptr) {}
15427 
set(isl::basic_set bset)15428 set::set(isl::basic_set bset)
15429 {
15430   auto res = isl_set_from_basic_set(bset.release());
15431   ptr = res;
15432 }
set(isl::point pnt)15433 set::set(isl::point pnt)
15434 {
15435   auto res = isl_set_from_point(pnt.release());
15436   ptr = res;
15437 }
set(isl::union_set uset)15438 set::set(isl::union_set uset)
15439 {
15440   auto res = isl_set_from_union_set(uset.release());
15441   ptr = res;
15442 }
set(isl::ctx ctx,const std::string & str)15443 set::set(isl::ctx ctx, const std::string &str)
15444 {
15445   auto res = isl_set_read_from_str(ctx.release(), str.c_str());
15446   ptr = res;
15447 }
15448 
15449 set &set::operator=(set obj) {
15450   std::swap(this->ptr, obj.ptr);
15451   return *this;
15452 }
15453 
~set()15454 set::~set() {
15455   if (ptr)
15456     isl_set_free(ptr);
15457 }
15458 
copy()15459 __isl_give isl_set *set::copy() const & {
15460   return isl_set_copy(ptr);
15461 }
15462 
get()15463 __isl_keep isl_set *set::get() const {
15464   return ptr;
15465 }
15466 
release()15467 __isl_give isl_set *set::release() {
15468   isl_set *tmp = ptr;
15469   ptr = nullptr;
15470   return tmp;
15471 }
15472 
is_null()15473 bool set::is_null() const {
15474   return ptr == nullptr;
15475 }
15476 
15477 
ctx()15478 isl::ctx set::ctx() const {
15479   return isl::ctx(isl_set_get_ctx(ptr));
15480 }
15481 
dump()15482 void set::dump() const {
15483   isl_set_dump(get());
15484 }
15485 
15486 
add_constraint(isl::constraint constraint)15487 isl::set set::add_constraint(isl::constraint constraint) const
15488 {
15489   auto res = isl_set_add_constraint(copy(), constraint.release());
15490   return manage(res);
15491 }
15492 
add_dims(isl::dim type,unsigned int n)15493 isl::set set::add_dims(isl::dim type, unsigned int n) const
15494 {
15495   auto res = isl_set_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
15496   return manage(res);
15497 }
15498 
affine_hull()15499 isl::basic_set set::affine_hull() const
15500 {
15501   auto res = isl_set_affine_hull(copy());
15502   return manage(res);
15503 }
15504 
align_params(isl::space model)15505 isl::set set::align_params(isl::space model) const
15506 {
15507   auto res = isl_set_align_params(copy(), model.release());
15508   return manage(res);
15509 }
15510 
apply(isl::map map)15511 isl::set set::apply(isl::map map) const
15512 {
15513   auto res = isl_set_apply(copy(), map.release());
15514   return manage(res);
15515 }
15516 
bind(isl::multi_id tuple)15517 isl::set set::bind(isl::multi_id tuple) const
15518 {
15519   auto res = isl_set_bind(copy(), tuple.release());
15520   return manage(res);
15521 }
15522 
bounded_simple_hull()15523 isl::basic_set set::bounded_simple_hull() const
15524 {
15525   auto res = isl_set_bounded_simple_hull(copy());
15526   return manage(res);
15527 }
15528 
box_from_points(isl::point pnt1,isl::point pnt2)15529 isl::set set::box_from_points(isl::point pnt1, isl::point pnt2)
15530 {
15531   auto res = isl_set_box_from_points(pnt1.release(), pnt2.release());
15532   return manage(res);
15533 }
15534 
coalesce()15535 isl::set set::coalesce() const
15536 {
15537   auto res = isl_set_coalesce(copy());
15538   return manage(res);
15539 }
15540 
coefficients()15541 isl::basic_set set::coefficients() const
15542 {
15543   auto res = isl_set_coefficients(copy());
15544   return manage(res);
15545 }
15546 
complement()15547 isl::set set::complement() const
15548 {
15549   auto res = isl_set_complement(copy());
15550   return manage(res);
15551 }
15552 
convex_hull()15553 isl::basic_set set::convex_hull() const
15554 {
15555   auto res = isl_set_convex_hull(copy());
15556   return manage(res);
15557 }
15558 
count_val()15559 isl::val set::count_val() const
15560 {
15561   auto res = isl_set_count_val(get());
15562   return manage(res);
15563 }
15564 
detect_equalities()15565 isl::set set::detect_equalities() const
15566 {
15567   auto res = isl_set_detect_equalities(copy());
15568   return manage(res);
15569 }
15570 
dim(isl::dim type)15571 isl_size set::dim(isl::dim type) const
15572 {
15573   auto res = isl_set_dim(get(), static_cast<enum isl_dim_type>(type));
15574   return res;
15575 }
15576 
dim_has_any_lower_bound(isl::dim type,unsigned int pos)15577 boolean set::dim_has_any_lower_bound(isl::dim type, unsigned int pos) const
15578 {
15579   auto res = isl_set_dim_has_any_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
15580   return manage(res);
15581 }
15582 
dim_has_any_upper_bound(isl::dim type,unsigned int pos)15583 boolean set::dim_has_any_upper_bound(isl::dim type, unsigned int pos) const
15584 {
15585   auto res = isl_set_dim_has_any_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
15586   return manage(res);
15587 }
15588 
dim_has_lower_bound(isl::dim type,unsigned int pos)15589 boolean set::dim_has_lower_bound(isl::dim type, unsigned int pos) const
15590 {
15591   auto res = isl_set_dim_has_lower_bound(get(), static_cast<enum isl_dim_type>(type), pos);
15592   return manage(res);
15593 }
15594 
dim_has_upper_bound(isl::dim type,unsigned int pos)15595 boolean set::dim_has_upper_bound(isl::dim type, unsigned int pos) const
15596 {
15597   auto res = isl_set_dim_has_upper_bound(get(), static_cast<enum isl_dim_type>(type), pos);
15598   return manage(res);
15599 }
15600 
dim_is_bounded(isl::dim type,unsigned int pos)15601 boolean set::dim_is_bounded(isl::dim type, unsigned int pos) const
15602 {
15603   auto res = isl_set_dim_is_bounded(get(), static_cast<enum isl_dim_type>(type), pos);
15604   return manage(res);
15605 }
15606 
dim_max(int pos)15607 isl::pw_aff set::dim_max(int pos) const
15608 {
15609   auto res = isl_set_dim_max(copy(), pos);
15610   return manage(res);
15611 }
15612 
dim_max_val(int pos)15613 isl::val set::dim_max_val(int pos) const
15614 {
15615   auto res = isl_set_dim_max_val(copy(), pos);
15616   return manage(res);
15617 }
15618 
dim_min(int pos)15619 isl::pw_aff set::dim_min(int pos) const
15620 {
15621   auto res = isl_set_dim_min(copy(), pos);
15622   return manage(res);
15623 }
15624 
dim_min_val(int pos)15625 isl::val set::dim_min_val(int pos) const
15626 {
15627   auto res = isl_set_dim_min_val(copy(), pos);
15628   return manage(res);
15629 }
15630 
drop_constraints_involving_dims(isl::dim type,unsigned int first,unsigned int n)15631 isl::set set::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
15632 {
15633   auto res = isl_set_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15634   return manage(res);
15635 }
15636 
drop_constraints_not_involving_dims(isl::dim type,unsigned int first,unsigned int n)15637 isl::set set::drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
15638 {
15639   auto res = isl_set_drop_constraints_not_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
15640   return manage(res);
15641 }
15642 
drop_unused_params()15643 isl::set set::drop_unused_params() const
15644 {
15645   auto res = isl_set_drop_unused_params(copy());
15646   return manage(res);
15647 }
15648 
eliminate(isl::dim type,unsigned int first,unsigned int n)15649 isl::set set::eliminate(isl::dim type, unsigned int first, unsigned int n) const
15650 {
15651   auto res = isl_set_eliminate(copy(), static_cast<enum isl_dim_type>(type), first, n);
15652   return manage(res);
15653 }
15654 
empty(isl::space space)15655 isl::set set::empty(isl::space space)
15656 {
15657   auto res = isl_set_empty(space.release());
15658   return manage(res);
15659 }
15660 
equate(isl::dim type1,int pos1,isl::dim type2,int pos2)15661 isl::set set::equate(isl::dim type1, int pos1, isl::dim type2, int pos2) const
15662 {
15663   auto res = isl_set_equate(copy(), static_cast<enum isl_dim_type>(type1), pos1, static_cast<enum isl_dim_type>(type2), pos2);
15664   return manage(res);
15665 }
15666 
find_dim_by_id(isl::dim type,const isl::id & id)15667 int set::find_dim_by_id(isl::dim type, const isl::id &id) const
15668 {
15669   auto res = isl_set_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
15670   return res;
15671 }
15672 
find_dim_by_name(isl::dim type,const std::string & name)15673 int set::find_dim_by_name(isl::dim type, const std::string &name) const
15674 {
15675   auto res = isl_set_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
15676   return res;
15677 }
15678 
fix_si(isl::dim type,unsigned int pos,int value)15679 isl::set set::fix_si(isl::dim type, unsigned int pos, int value) const
15680 {
15681   auto res = isl_set_fix_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
15682   return manage(res);
15683 }
15684 
fix_val(isl::dim type,unsigned int pos,isl::val v)15685 isl::set set::fix_val(isl::dim type, unsigned int pos, isl::val v) const
15686 {
15687   auto res = isl_set_fix_val(copy(), static_cast<enum isl_dim_type>(type), pos, v.release());
15688   return manage(res);
15689 }
15690 
flat_product(isl::set set2)15691 isl::set set::flat_product(isl::set set2) const
15692 {
15693   auto res = isl_set_flat_product(copy(), set2.release());
15694   return manage(res);
15695 }
15696 
flatten()15697 isl::set set::flatten() const
15698 {
15699   auto res = isl_set_flatten(copy());
15700   return manage(res);
15701 }
15702 
flatten_map()15703 isl::map set::flatten_map() const
15704 {
15705   auto res = isl_set_flatten_map(copy());
15706   return manage(res);
15707 }
15708 
follows_at(const isl::set & set2,int pos)15709 int set::follows_at(const isl::set &set2, int pos) const
15710 {
15711   auto res = isl_set_follows_at(get(), set2.get(), pos);
15712   return res;
15713 }
15714 
foreach_basic_set(const std::function<stat (basic_set)> & fn)15715 stat set::foreach_basic_set(const std::function<stat(basic_set)> &fn) const
15716 {
15717   struct fn_data {
15718     const std::function<stat(basic_set)> *func;
15719   } fn_data = { &fn };
15720   auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
15721     auto *data = static_cast<struct fn_data *>(arg_1);
15722     stat ret = (*data->func)(manage(arg_0));
15723     return ret.release();
15724   };
15725   auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
15726   return manage(res);
15727 }
15728 
foreach_point(const std::function<stat (point)> & fn)15729 stat set::foreach_point(const std::function<stat(point)> &fn) const
15730 {
15731   struct fn_data {
15732     const std::function<stat(point)> *func;
15733   } fn_data = { &fn };
15734   auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
15735     auto *data = static_cast<struct fn_data *>(arg_1);
15736     stat ret = (*data->func)(manage(arg_0));
15737     return ret.release();
15738   };
15739   auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
15740   return manage(res);
15741 }
15742 
from_multi_aff(isl::multi_aff ma)15743 isl::set set::from_multi_aff(isl::multi_aff ma)
15744 {
15745   auto res = isl_set_from_multi_aff(ma.release());
15746   return manage(res);
15747 }
15748 
from_multi_pw_aff(isl::multi_pw_aff mpa)15749 isl::set set::from_multi_pw_aff(isl::multi_pw_aff mpa)
15750 {
15751   auto res = isl_set_from_multi_pw_aff(mpa.release());
15752   return manage(res);
15753 }
15754 
from_params()15755 isl::set set::from_params() const
15756 {
15757   auto res = isl_set_from_params(copy());
15758   return manage(res);
15759 }
15760 
from_pw_aff(isl::pw_aff pwaff)15761 isl::set set::from_pw_aff(isl::pw_aff pwaff)
15762 {
15763   auto res = isl_set_from_pw_aff(pwaff.release());
15764   return manage(res);
15765 }
15766 
from_pw_multi_aff(isl::pw_multi_aff pma)15767 isl::set set::from_pw_multi_aff(isl::pw_multi_aff pma)
15768 {
15769   auto res = isl_set_from_pw_multi_aff(pma.release());
15770   return manage(res);
15771 }
15772 
get_basic_set_list()15773 isl::basic_set_list set::get_basic_set_list() const
15774 {
15775   auto res = isl_set_get_basic_set_list(get());
15776   return manage(res);
15777 }
15778 
get_dim_id(isl::dim type,unsigned int pos)15779 isl::id set::get_dim_id(isl::dim type, unsigned int pos) const
15780 {
15781   auto res = isl_set_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15782   return manage(res);
15783 }
15784 
get_dim_name(isl::dim type,unsigned int pos)15785 std::string set::get_dim_name(isl::dim type, unsigned int pos) const
15786 {
15787   auto res = isl_set_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
15788   std::string tmp(res);
15789   return tmp;
15790 }
15791 
get_plain_multi_val_if_fixed()15792 isl::multi_val set::get_plain_multi_val_if_fixed() const
15793 {
15794   auto res = isl_set_get_plain_multi_val_if_fixed(get());
15795   return manage(res);
15796 }
15797 
get_simple_fixed_box_hull()15798 isl::fixed_box set::get_simple_fixed_box_hull() const
15799 {
15800   auto res = isl_set_get_simple_fixed_box_hull(get());
15801   return manage(res);
15802 }
15803 
get_space()15804 isl::space set::get_space() const
15805 {
15806   auto res = isl_set_get_space(get());
15807   return manage(res);
15808 }
15809 
get_stride(int pos)15810 isl::val set::get_stride(int pos) const
15811 {
15812   auto res = isl_set_get_stride(get(), pos);
15813   return manage(res);
15814 }
15815 
get_tuple_id()15816 isl::id set::get_tuple_id() const
15817 {
15818   auto res = isl_set_get_tuple_id(get());
15819   return manage(res);
15820 }
15821 
get_tuple_name()15822 std::string set::get_tuple_name() const
15823 {
15824   auto res = isl_set_get_tuple_name(get());
15825   std::string tmp(res);
15826   return tmp;
15827 }
15828 
gist(isl::set context)15829 isl::set set::gist(isl::set context) const
15830 {
15831   auto res = isl_set_gist(copy(), context.release());
15832   return manage(res);
15833 }
15834 
gist_basic_set(isl::basic_set context)15835 isl::set set::gist_basic_set(isl::basic_set context) const
15836 {
15837   auto res = isl_set_gist_basic_set(copy(), context.release());
15838   return manage(res);
15839 }
15840 
gist_params(isl::set context)15841 isl::set set::gist_params(isl::set context) const
15842 {
15843   auto res = isl_set_gist_params(copy(), context.release());
15844   return manage(res);
15845 }
15846 
has_dim_id(isl::dim type,unsigned int pos)15847 boolean set::has_dim_id(isl::dim type, unsigned int pos) const
15848 {
15849   auto res = isl_set_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
15850   return manage(res);
15851 }
15852 
has_dim_name(isl::dim type,unsigned int pos)15853 boolean set::has_dim_name(isl::dim type, unsigned int pos) const
15854 {
15855   auto res = isl_set_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
15856   return manage(res);
15857 }
15858 
has_equal_space(const isl::set & set2)15859 boolean set::has_equal_space(const isl::set &set2) const
15860 {
15861   auto res = isl_set_has_equal_space(get(), set2.get());
15862   return manage(res);
15863 }
15864 
has_tuple_id()15865 boolean set::has_tuple_id() const
15866 {
15867   auto res = isl_set_has_tuple_id(get());
15868   return manage(res);
15869 }
15870 
has_tuple_name()15871 boolean set::has_tuple_name() const
15872 {
15873   auto res = isl_set_has_tuple_name(get());
15874   return manage(res);
15875 }
15876 
identity()15877 isl::map set::identity() const
15878 {
15879   auto res = isl_set_identity(copy());
15880   return manage(res);
15881 }
15882 
indicator_function()15883 isl::pw_aff set::indicator_function() const
15884 {
15885   auto res = isl_set_indicator_function(copy());
15886   return manage(res);
15887 }
15888 
insert_dims(isl::dim type,unsigned int pos,unsigned int n)15889 isl::set set::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
15890 {
15891   auto res = isl_set_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
15892   return manage(res);
15893 }
15894 
insert_domain(isl::space domain)15895 isl::map set::insert_domain(isl::space domain) const
15896 {
15897   auto res = isl_set_insert_domain(copy(), domain.release());
15898   return manage(res);
15899 }
15900 
intersect(isl::set set2)15901 isl::set set::intersect(isl::set set2) const
15902 {
15903   auto res = isl_set_intersect(copy(), set2.release());
15904   return manage(res);
15905 }
15906 
intersect_factor_domain(isl::set domain)15907 isl::set set::intersect_factor_domain(isl::set domain) const
15908 {
15909   auto res = isl_set_intersect_factor_domain(copy(), domain.release());
15910   return manage(res);
15911 }
15912 
intersect_factor_range(isl::set range)15913 isl::set set::intersect_factor_range(isl::set range) const
15914 {
15915   auto res = isl_set_intersect_factor_range(copy(), range.release());
15916   return manage(res);
15917 }
15918 
intersect_params(isl::set params)15919 isl::set set::intersect_params(isl::set params) const
15920 {
15921   auto res = isl_set_intersect_params(copy(), params.release());
15922   return manage(res);
15923 }
15924 
involves_dims(isl::dim type,unsigned int first,unsigned int n)15925 boolean set::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
15926 {
15927   auto res = isl_set_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
15928   return manage(res);
15929 }
15930 
involves_locals()15931 boolean set::involves_locals() const
15932 {
15933   auto res = isl_set_involves_locals(get());
15934   return manage(res);
15935 }
15936 
is_bounded()15937 boolean set::is_bounded() const
15938 {
15939   auto res = isl_set_is_bounded(get());
15940   return manage(res);
15941 }
15942 
is_box()15943 boolean set::is_box() const
15944 {
15945   auto res = isl_set_is_box(get());
15946   return manage(res);
15947 }
15948 
is_disjoint(const isl::set & set2)15949 boolean set::is_disjoint(const isl::set &set2) const
15950 {
15951   auto res = isl_set_is_disjoint(get(), set2.get());
15952   return manage(res);
15953 }
15954 
is_empty()15955 boolean set::is_empty() const
15956 {
15957   auto res = isl_set_is_empty(get());
15958   return manage(res);
15959 }
15960 
is_equal(const isl::set & set2)15961 boolean set::is_equal(const isl::set &set2) const
15962 {
15963   auto res = isl_set_is_equal(get(), set2.get());
15964   return manage(res);
15965 }
15966 
is_params()15967 boolean set::is_params() const
15968 {
15969   auto res = isl_set_is_params(get());
15970   return manage(res);
15971 }
15972 
is_singleton()15973 boolean set::is_singleton() const
15974 {
15975   auto res = isl_set_is_singleton(get());
15976   return manage(res);
15977 }
15978 
is_strict_subset(const isl::set & set2)15979 boolean set::is_strict_subset(const isl::set &set2) const
15980 {
15981   auto res = isl_set_is_strict_subset(get(), set2.get());
15982   return manage(res);
15983 }
15984 
is_subset(const isl::set & set2)15985 boolean set::is_subset(const isl::set &set2) const
15986 {
15987   auto res = isl_set_is_subset(get(), set2.get());
15988   return manage(res);
15989 }
15990 
is_wrapping()15991 boolean set::is_wrapping() const
15992 {
15993   auto res = isl_set_is_wrapping(get());
15994   return manage(res);
15995 }
15996 
lex_ge_set(isl::set set2)15997 isl::map set::lex_ge_set(isl::set set2) const
15998 {
15999   auto res = isl_set_lex_ge_set(copy(), set2.release());
16000   return manage(res);
16001 }
16002 
lex_gt_set(isl::set set2)16003 isl::map set::lex_gt_set(isl::set set2) const
16004 {
16005   auto res = isl_set_lex_gt_set(copy(), set2.release());
16006   return manage(res);
16007 }
16008 
lex_lt_set(isl::set set2)16009 isl::map set::lex_lt_set(isl::set set2) const
16010 {
16011   auto res = isl_set_lex_lt_set(copy(), set2.release());
16012   return manage(res);
16013 }
16014 
lexmax()16015 isl::set set::lexmax() const
16016 {
16017   auto res = isl_set_lexmax(copy());
16018   return manage(res);
16019 }
16020 
lexmax_pw_multi_aff()16021 isl::pw_multi_aff set::lexmax_pw_multi_aff() const
16022 {
16023   auto res = isl_set_lexmax_pw_multi_aff(copy());
16024   return manage(res);
16025 }
16026 
lexmin()16027 isl::set set::lexmin() const
16028 {
16029   auto res = isl_set_lexmin(copy());
16030   return manage(res);
16031 }
16032 
lexmin_pw_multi_aff()16033 isl::pw_multi_aff set::lexmin_pw_multi_aff() const
16034 {
16035   auto res = isl_set_lexmin_pw_multi_aff(copy());
16036   return manage(res);
16037 }
16038 
lower_bound(isl::multi_pw_aff lower)16039 isl::set set::lower_bound(isl::multi_pw_aff lower) const
16040 {
16041   auto res = isl_set_lower_bound_multi_pw_aff(copy(), lower.release());
16042   return manage(res);
16043 }
16044 
lower_bound(isl::multi_val lower)16045 isl::set set::lower_bound(isl::multi_val lower) const
16046 {
16047   auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
16048   return manage(res);
16049 }
16050 
lower_bound_si(isl::dim type,unsigned int pos,int value)16051 isl::set set::lower_bound_si(isl::dim type, unsigned int pos, int value) const
16052 {
16053   auto res = isl_set_lower_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
16054   return manage(res);
16055 }
16056 
lower_bound_val(isl::dim type,unsigned int pos,isl::val value)16057 isl::set set::lower_bound_val(isl::dim type, unsigned int pos, isl::val value) const
16058 {
16059   auto res = isl_set_lower_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
16060   return manage(res);
16061 }
16062 
max_multi_pw_aff()16063 isl::multi_pw_aff set::max_multi_pw_aff() const
16064 {
16065   auto res = isl_set_max_multi_pw_aff(copy());
16066   return manage(res);
16067 }
16068 
max_val(const isl::aff & obj)16069 isl::val set::max_val(const isl::aff &obj) const
16070 {
16071   auto res = isl_set_max_val(get(), obj.get());
16072   return manage(res);
16073 }
16074 
min_multi_pw_aff()16075 isl::multi_pw_aff set::min_multi_pw_aff() const
16076 {
16077   auto res = isl_set_min_multi_pw_aff(copy());
16078   return manage(res);
16079 }
16080 
min_val(const isl::aff & obj)16081 isl::val set::min_val(const isl::aff &obj) const
16082 {
16083   auto res = isl_set_min_val(get(), obj.get());
16084   return manage(res);
16085 }
16086 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)16087 isl::set set::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
16088 {
16089   auto res = isl_set_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
16090   return manage(res);
16091 }
16092 
n_basic_set()16093 isl_size set::n_basic_set() const
16094 {
16095   auto res = isl_set_n_basic_set(get());
16096   return res;
16097 }
16098 
n_dim()16099 isl_size set::n_dim() const
16100 {
16101   auto res = isl_set_n_dim(get());
16102   return res;
16103 }
16104 
nat_universe(isl::space space)16105 isl::set set::nat_universe(isl::space space)
16106 {
16107   auto res = isl_set_nat_universe(space.release());
16108   return manage(res);
16109 }
16110 
neg()16111 isl::set set::neg() const
16112 {
16113   auto res = isl_set_neg(copy());
16114   return manage(res);
16115 }
16116 
params()16117 isl::set set::params() const
16118 {
16119   auto res = isl_set_params(copy());
16120   return manage(res);
16121 }
16122 
plain_cmp(const isl::set & set2)16123 int set::plain_cmp(const isl::set &set2) const
16124 {
16125   auto res = isl_set_plain_cmp(get(), set2.get());
16126   return res;
16127 }
16128 
plain_get_val_if_fixed(isl::dim type,unsigned int pos)16129 isl::val set::plain_get_val_if_fixed(isl::dim type, unsigned int pos) const
16130 {
16131   auto res = isl_set_plain_get_val_if_fixed(get(), static_cast<enum isl_dim_type>(type), pos);
16132   return manage(res);
16133 }
16134 
plain_is_disjoint(const isl::set & set2)16135 boolean set::plain_is_disjoint(const isl::set &set2) const
16136 {
16137   auto res = isl_set_plain_is_disjoint(get(), set2.get());
16138   return manage(res);
16139 }
16140 
plain_is_empty()16141 boolean set::plain_is_empty() const
16142 {
16143   auto res = isl_set_plain_is_empty(get());
16144   return manage(res);
16145 }
16146 
plain_is_equal(const isl::set & set2)16147 boolean set::plain_is_equal(const isl::set &set2) const
16148 {
16149   auto res = isl_set_plain_is_equal(get(), set2.get());
16150   return manage(res);
16151 }
16152 
plain_is_universe()16153 boolean set::plain_is_universe() const
16154 {
16155   auto res = isl_set_plain_is_universe(get());
16156   return manage(res);
16157 }
16158 
plain_unshifted_simple_hull()16159 isl::basic_set set::plain_unshifted_simple_hull() const
16160 {
16161   auto res = isl_set_plain_unshifted_simple_hull(copy());
16162   return manage(res);
16163 }
16164 
polyhedral_hull()16165 isl::basic_set set::polyhedral_hull() const
16166 {
16167   auto res = isl_set_polyhedral_hull(copy());
16168   return manage(res);
16169 }
16170 
preimage(isl::multi_aff ma)16171 isl::set set::preimage(isl::multi_aff ma) const
16172 {
16173   auto res = isl_set_preimage_multi_aff(copy(), ma.release());
16174   return manage(res);
16175 }
16176 
preimage(isl::multi_pw_aff mpa)16177 isl::set set::preimage(isl::multi_pw_aff mpa) const
16178 {
16179   auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
16180   return manage(res);
16181 }
16182 
preimage(isl::pw_multi_aff pma)16183 isl::set set::preimage(isl::pw_multi_aff pma) const
16184 {
16185   auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
16186   return manage(res);
16187 }
16188 
product(isl::set set2)16189 isl::set set::product(isl::set set2) const
16190 {
16191   auto res = isl_set_product(copy(), set2.release());
16192   return manage(res);
16193 }
16194 
project_onto_map(isl::dim type,unsigned int first,unsigned int n)16195 isl::map set::project_onto_map(isl::dim type, unsigned int first, unsigned int n) const
16196 {
16197   auto res = isl_set_project_onto_map(copy(), static_cast<enum isl_dim_type>(type), first, n);
16198   return manage(res);
16199 }
16200 
project_out(isl::dim type,unsigned int first,unsigned int n)16201 isl::set set::project_out(isl::dim type, unsigned int first, unsigned int n) const
16202 {
16203   auto res = isl_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
16204   return manage(res);
16205 }
16206 
project_out_all_params()16207 isl::set set::project_out_all_params() const
16208 {
16209   auto res = isl_set_project_out_all_params(copy());
16210   return manage(res);
16211 }
16212 
project_out_param(isl::id id)16213 isl::set set::project_out_param(isl::id id) const
16214 {
16215   auto res = isl_set_project_out_param_id(copy(), id.release());
16216   return manage(res);
16217 }
16218 
project_out_param(isl::id_list list)16219 isl::set set::project_out_param(isl::id_list list) const
16220 {
16221   auto res = isl_set_project_out_param_id_list(copy(), list.release());
16222   return manage(res);
16223 }
16224 
remove_dims(isl::dim type,unsigned int first,unsigned int n)16225 isl::set set::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
16226 {
16227   auto res = isl_set_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
16228   return manage(res);
16229 }
16230 
remove_divs()16231 isl::set set::remove_divs() const
16232 {
16233   auto res = isl_set_remove_divs(copy());
16234   return manage(res);
16235 }
16236 
remove_divs_involving_dims(isl::dim type,unsigned int first,unsigned int n)16237 isl::set set::remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
16238 {
16239   auto res = isl_set_remove_divs_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
16240   return manage(res);
16241 }
16242 
remove_redundancies()16243 isl::set set::remove_redundancies() const
16244 {
16245   auto res = isl_set_remove_redundancies(copy());
16246   return manage(res);
16247 }
16248 
remove_unknown_divs()16249 isl::set set::remove_unknown_divs() const
16250 {
16251   auto res = isl_set_remove_unknown_divs(copy());
16252   return manage(res);
16253 }
16254 
reset_space(isl::space space)16255 isl::set set::reset_space(isl::space space) const
16256 {
16257   auto res = isl_set_reset_space(copy(), space.release());
16258   return manage(res);
16259 }
16260 
reset_tuple_id()16261 isl::set set::reset_tuple_id() const
16262 {
16263   auto res = isl_set_reset_tuple_id(copy());
16264   return manage(res);
16265 }
16266 
reset_user()16267 isl::set set::reset_user() const
16268 {
16269   auto res = isl_set_reset_user(copy());
16270   return manage(res);
16271 }
16272 
sample()16273 isl::basic_set set::sample() const
16274 {
16275   auto res = isl_set_sample(copy());
16276   return manage(res);
16277 }
16278 
sample_point()16279 isl::point set::sample_point() const
16280 {
16281   auto res = isl_set_sample_point(copy());
16282   return manage(res);
16283 }
16284 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)16285 isl::set set::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
16286 {
16287   auto res = isl_set_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
16288   return manage(res);
16289 }
16290 
set_tuple_id(isl::id id)16291 isl::set set::set_tuple_id(isl::id id) const
16292 {
16293   auto res = isl_set_set_tuple_id(copy(), id.release());
16294   return manage(res);
16295 }
16296 
set_tuple_name(const std::string & s)16297 isl::set set::set_tuple_name(const std::string &s) const
16298 {
16299   auto res = isl_set_set_tuple_name(copy(), s.c_str());
16300   return manage(res);
16301 }
16302 
simple_hull()16303 isl::basic_set set::simple_hull() const
16304 {
16305   auto res = isl_set_simple_hull(copy());
16306   return manage(res);
16307 }
16308 
size()16309 int set::size() const
16310 {
16311   auto res = isl_set_size(get());
16312   return res;
16313 }
16314 
solutions()16315 isl::basic_set set::solutions() const
16316 {
16317   auto res = isl_set_solutions(copy());
16318   return manage(res);
16319 }
16320 
split_dims(isl::dim type,unsigned int first,unsigned int n)16321 isl::set set::split_dims(isl::dim type, unsigned int first, unsigned int n) const
16322 {
16323   auto res = isl_set_split_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
16324   return manage(res);
16325 }
16326 
subtract(isl::set set2)16327 isl::set set::subtract(isl::set set2) const
16328 {
16329   auto res = isl_set_subtract(copy(), set2.release());
16330   return manage(res);
16331 }
16332 
sum(isl::set set2)16333 isl::set set::sum(isl::set set2) const
16334 {
16335   auto res = isl_set_sum(copy(), set2.release());
16336   return manage(res);
16337 }
16338 
translation()16339 isl::map set::translation() const
16340 {
16341   auto res = isl_set_translation(copy());
16342   return manage(res);
16343 }
16344 
tuple_dim()16345 isl_size set::tuple_dim() const
16346 {
16347   auto res = isl_set_tuple_dim(get());
16348   return res;
16349 }
16350 
unbind_params(isl::multi_id tuple)16351 isl::set set::unbind_params(isl::multi_id tuple) const
16352 {
16353   auto res = isl_set_unbind_params(copy(), tuple.release());
16354   return manage(res);
16355 }
16356 
unbind_params_insert_domain(isl::multi_id domain)16357 isl::map set::unbind_params_insert_domain(isl::multi_id domain) const
16358 {
16359   auto res = isl_set_unbind_params_insert_domain(copy(), domain.release());
16360   return manage(res);
16361 }
16362 
unite(isl::set set2)16363 isl::set set::unite(isl::set set2) const
16364 {
16365   auto res = isl_set_union(copy(), set2.release());
16366   return manage(res);
16367 }
16368 
universe(isl::space space)16369 isl::set set::universe(isl::space space)
16370 {
16371   auto res = isl_set_universe(space.release());
16372   return manage(res);
16373 }
16374 
unshifted_simple_hull()16375 isl::basic_set set::unshifted_simple_hull() const
16376 {
16377   auto res = isl_set_unshifted_simple_hull(copy());
16378   return manage(res);
16379 }
16380 
unshifted_simple_hull_from_set_list(isl::set_list list)16381 isl::basic_set set::unshifted_simple_hull_from_set_list(isl::set_list list) const
16382 {
16383   auto res = isl_set_unshifted_simple_hull_from_set_list(copy(), list.release());
16384   return manage(res);
16385 }
16386 
unwrap()16387 isl::map set::unwrap() const
16388 {
16389   auto res = isl_set_unwrap(copy());
16390   return manage(res);
16391 }
16392 
upper_bound(isl::multi_pw_aff upper)16393 isl::set set::upper_bound(isl::multi_pw_aff upper) const
16394 {
16395   auto res = isl_set_upper_bound_multi_pw_aff(copy(), upper.release());
16396   return manage(res);
16397 }
16398 
upper_bound(isl::multi_val upper)16399 isl::set set::upper_bound(isl::multi_val upper) const
16400 {
16401   auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
16402   return manage(res);
16403 }
16404 
upper_bound_si(isl::dim type,unsigned int pos,int value)16405 isl::set set::upper_bound_si(isl::dim type, unsigned int pos, int value) const
16406 {
16407   auto res = isl_set_upper_bound_si(copy(), static_cast<enum isl_dim_type>(type), pos, value);
16408   return manage(res);
16409 }
16410 
upper_bound_val(isl::dim type,unsigned int pos,isl::val value)16411 isl::set set::upper_bound_val(isl::dim type, unsigned int pos, isl::val value) const
16412 {
16413   auto res = isl_set_upper_bound_val(copy(), static_cast<enum isl_dim_type>(type), pos, value.release());
16414   return manage(res);
16415 }
16416 
wrapped_domain_map()16417 isl::map set::wrapped_domain_map() const
16418 {
16419   auto res = isl_set_wrapped_domain_map(copy());
16420   return manage(res);
16421 }
16422 
16423 // implementations for isl::set_list
manage(__isl_take isl_set_list * ptr)16424 set_list manage(__isl_take isl_set_list *ptr) {
16425   return set_list(ptr);
16426 }
manage_copy(__isl_keep isl_set_list * ptr)16427 set_list manage_copy(__isl_keep isl_set_list *ptr) {
16428   ptr = isl_set_list_copy(ptr);
16429   return set_list(ptr);
16430 }
16431 
set_list()16432 set_list::set_list()
16433     : ptr(nullptr) {}
16434 
set_list(const set_list & obj)16435 set_list::set_list(const set_list &obj)
16436     : ptr(nullptr)
16437 {
16438   ptr = obj.copy();
16439 }
16440 
16441 
set_list(__isl_take isl_set_list * ptr)16442 set_list::set_list(__isl_take isl_set_list *ptr)
16443     : ptr(ptr) {}
16444 
16445 
16446 set_list &set_list::operator=(set_list obj) {
16447   std::swap(this->ptr, obj.ptr);
16448   return *this;
16449 }
16450 
~set_list()16451 set_list::~set_list() {
16452   if (ptr)
16453     isl_set_list_free(ptr);
16454 }
16455 
copy()16456 __isl_give isl_set_list *set_list::copy() const & {
16457   return isl_set_list_copy(ptr);
16458 }
16459 
get()16460 __isl_keep isl_set_list *set_list::get() const {
16461   return ptr;
16462 }
16463 
release()16464 __isl_give isl_set_list *set_list::release() {
16465   isl_set_list *tmp = ptr;
16466   ptr = nullptr;
16467   return tmp;
16468 }
16469 
is_null()16470 bool set_list::is_null() const {
16471   return ptr == nullptr;
16472 }
16473 
16474 
ctx()16475 isl::ctx set_list::ctx() const {
16476   return isl::ctx(isl_set_list_get_ctx(ptr));
16477 }
16478 
dump()16479 void set_list::dump() const {
16480   isl_set_list_dump(get());
16481 }
16482 
16483 
add(isl::set el)16484 isl::set_list set_list::add(isl::set el) const
16485 {
16486   auto res = isl_set_list_add(copy(), el.release());
16487   return manage(res);
16488 }
16489 
alloc(isl::ctx ctx,int n)16490 isl::set_list set_list::alloc(isl::ctx ctx, int n)
16491 {
16492   auto res = isl_set_list_alloc(ctx.release(), n);
16493   return manage(res);
16494 }
16495 
clear()16496 isl::set_list set_list::clear() const
16497 {
16498   auto res = isl_set_list_clear(copy());
16499   return manage(res);
16500 }
16501 
concat(isl::set_list list2)16502 isl::set_list set_list::concat(isl::set_list list2) const
16503 {
16504   auto res = isl_set_list_concat(copy(), list2.release());
16505   return manage(res);
16506 }
16507 
drop(unsigned int first,unsigned int n)16508 isl::set_list set_list::drop(unsigned int first, unsigned int n) const
16509 {
16510   auto res = isl_set_list_drop(copy(), first, n);
16511   return manage(res);
16512 }
16513 
foreach(const std::function<stat (set)> & fn)16514 stat set_list::foreach(const std::function<stat(set)> &fn) const
16515 {
16516   struct fn_data {
16517     const std::function<stat(set)> *func;
16518   } fn_data = { &fn };
16519   auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
16520     auto *data = static_cast<struct fn_data *>(arg_1);
16521     stat ret = (*data->func)(manage(arg_0));
16522     return ret.release();
16523   };
16524   auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
16525   return manage(res);
16526 }
16527 
from_set(isl::set el)16528 isl::set_list set_list::from_set(isl::set el)
16529 {
16530   auto res = isl_set_list_from_set(el.release());
16531   return manage(res);
16532 }
16533 
get_at(int index)16534 isl::set set_list::get_at(int index) const
16535 {
16536   auto res = isl_set_list_get_at(get(), index);
16537   return manage(res);
16538 }
16539 
get_set(int index)16540 isl::set set_list::get_set(int index) const
16541 {
16542   auto res = isl_set_list_get_set(get(), index);
16543   return manage(res);
16544 }
16545 
insert(unsigned int pos,isl::set el)16546 isl::set_list set_list::insert(unsigned int pos, isl::set el) const
16547 {
16548   auto res = isl_set_list_insert(copy(), pos, el.release());
16549   return manage(res);
16550 }
16551 
n_set()16552 isl_size set_list::n_set() const
16553 {
16554   auto res = isl_set_list_n_set(get());
16555   return res;
16556 }
16557 
reverse()16558 isl::set_list set_list::reverse() const
16559 {
16560   auto res = isl_set_list_reverse(copy());
16561   return manage(res);
16562 }
16563 
set_set(int index,isl::set el)16564 isl::set_list set_list::set_set(int index, isl::set el) const
16565 {
16566   auto res = isl_set_list_set_set(copy(), index, el.release());
16567   return manage(res);
16568 }
16569 
size()16570 isl_size set_list::size() const
16571 {
16572   auto res = isl_set_list_size(get());
16573   return res;
16574 }
16575 
swap(unsigned int pos1,unsigned int pos2)16576 isl::set_list set_list::swap(unsigned int pos1, unsigned int pos2) const
16577 {
16578   auto res = isl_set_list_swap(copy(), pos1, pos2);
16579   return manage(res);
16580 }
16581 
unite()16582 isl::set set_list::unite() const
16583 {
16584   auto res = isl_set_list_union(copy());
16585   return manage(res);
16586 }
16587 
16588 // implementations for isl::space
manage(__isl_take isl_space * ptr)16589 space manage(__isl_take isl_space *ptr) {
16590   return space(ptr);
16591 }
manage_copy(__isl_keep isl_space * ptr)16592 space manage_copy(__isl_keep isl_space *ptr) {
16593   ptr = isl_space_copy(ptr);
16594   return space(ptr);
16595 }
16596 
space()16597 space::space()
16598     : ptr(nullptr) {}
16599 
space(const space & obj)16600 space::space(const space &obj)
16601     : ptr(nullptr)
16602 {
16603   ptr = obj.copy();
16604 }
16605 
16606 
space(__isl_take isl_space * ptr)16607 space::space(__isl_take isl_space *ptr)
16608     : ptr(ptr) {}
16609 
space(isl::ctx ctx,unsigned int nparam,unsigned int n_in,unsigned int n_out)16610 space::space(isl::ctx ctx, unsigned int nparam, unsigned int n_in, unsigned int n_out)
16611 {
16612   auto res = isl_space_alloc(ctx.release(), nparam, n_in, n_out);
16613   ptr = res;
16614 }
space(isl::ctx ctx,unsigned int nparam,unsigned int dim)16615 space::space(isl::ctx ctx, unsigned int nparam, unsigned int dim)
16616 {
16617   auto res = isl_space_set_alloc(ctx.release(), nparam, dim);
16618   ptr = res;
16619 }
16620 
16621 space &space::operator=(space obj) {
16622   std::swap(this->ptr, obj.ptr);
16623   return *this;
16624 }
16625 
~space()16626 space::~space() {
16627   if (ptr)
16628     isl_space_free(ptr);
16629 }
16630 
copy()16631 __isl_give isl_space *space::copy() const & {
16632   return isl_space_copy(ptr);
16633 }
16634 
get()16635 __isl_keep isl_space *space::get() const {
16636   return ptr;
16637 }
16638 
release()16639 __isl_give isl_space *space::release() {
16640   isl_space *tmp = ptr;
16641   ptr = nullptr;
16642   return tmp;
16643 }
16644 
is_null()16645 bool space::is_null() const {
16646   return ptr == nullptr;
16647 }
16648 
16649 
ctx()16650 isl::ctx space::ctx() const {
16651   return isl::ctx(isl_space_get_ctx(ptr));
16652 }
16653 
dump()16654 void space::dump() const {
16655   isl_space_dump(get());
16656 }
16657 
16658 
add_dims(isl::dim type,unsigned int n)16659 isl::space space::add_dims(isl::dim type, unsigned int n) const
16660 {
16661   auto res = isl_space_add_dims(copy(), static_cast<enum isl_dim_type>(type), n);
16662   return manage(res);
16663 }
16664 
add_named_tuple(isl::id tuple_id,unsigned int dim)16665 isl::space space::add_named_tuple(isl::id tuple_id, unsigned int dim) const
16666 {
16667   auto res = isl_space_add_named_tuple_id_ui(copy(), tuple_id.release(), dim);
16668   return manage(res);
16669 }
16670 
add_param_id(isl::id id)16671 isl::space space::add_param_id(isl::id id) const
16672 {
16673   auto res = isl_space_add_param_id(copy(), id.release());
16674   return manage(res);
16675 }
16676 
add_unnamed_tuple(unsigned int dim)16677 isl::space space::add_unnamed_tuple(unsigned int dim) const
16678 {
16679   auto res = isl_space_add_unnamed_tuple_ui(copy(), dim);
16680   return manage(res);
16681 }
16682 
align_params(isl::space space2)16683 isl::space space::align_params(isl::space space2) const
16684 {
16685   auto res = isl_space_align_params(copy(), space2.release());
16686   return manage(res);
16687 }
16688 
can_curry()16689 boolean space::can_curry() const
16690 {
16691   auto res = isl_space_can_curry(get());
16692   return manage(res);
16693 }
16694 
can_range_curry()16695 boolean space::can_range_curry() const
16696 {
16697   auto res = isl_space_can_range_curry(get());
16698   return manage(res);
16699 }
16700 
can_uncurry()16701 boolean space::can_uncurry() const
16702 {
16703   auto res = isl_space_can_uncurry(get());
16704   return manage(res);
16705 }
16706 
can_zip()16707 boolean space::can_zip() const
16708 {
16709   auto res = isl_space_can_zip(get());
16710   return manage(res);
16711 }
16712 
curry()16713 isl::space space::curry() const
16714 {
16715   auto res = isl_space_curry(copy());
16716   return manage(res);
16717 }
16718 
dim(isl::dim type)16719 isl_size space::dim(isl::dim type) const
16720 {
16721   auto res = isl_space_dim(get(), static_cast<enum isl_dim_type>(type));
16722   return res;
16723 }
16724 
domain()16725 isl::space space::domain() const
16726 {
16727   auto res = isl_space_domain(copy());
16728   return manage(res);
16729 }
16730 
domain_factor_domain()16731 isl::space space::domain_factor_domain() const
16732 {
16733   auto res = isl_space_domain_factor_domain(copy());
16734   return manage(res);
16735 }
16736 
domain_factor_range()16737 isl::space space::domain_factor_range() const
16738 {
16739   auto res = isl_space_domain_factor_range(copy());
16740   return manage(res);
16741 }
16742 
domain_is_wrapping()16743 boolean space::domain_is_wrapping() const
16744 {
16745   auto res = isl_space_domain_is_wrapping(get());
16746   return manage(res);
16747 }
16748 
domain_map()16749 isl::space space::domain_map() const
16750 {
16751   auto res = isl_space_domain_map(copy());
16752   return manage(res);
16753 }
16754 
domain_product(isl::space right)16755 isl::space space::domain_product(isl::space right) const
16756 {
16757   auto res = isl_space_domain_product(copy(), right.release());
16758   return manage(res);
16759 }
16760 
drop_all_params()16761 isl::space space::drop_all_params() const
16762 {
16763   auto res = isl_space_drop_all_params(copy());
16764   return manage(res);
16765 }
16766 
drop_dims(isl::dim type,unsigned int first,unsigned int num)16767 isl::space space::drop_dims(isl::dim type, unsigned int first, unsigned int num) const
16768 {
16769   auto res = isl_space_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, num);
16770   return manage(res);
16771 }
16772 
factor_domain()16773 isl::space space::factor_domain() const
16774 {
16775   auto res = isl_space_factor_domain(copy());
16776   return manage(res);
16777 }
16778 
factor_range()16779 isl::space space::factor_range() const
16780 {
16781   auto res = isl_space_factor_range(copy());
16782   return manage(res);
16783 }
16784 
find_dim_by_id(isl::dim type,const isl::id & id)16785 int space::find_dim_by_id(isl::dim type, const isl::id &id) const
16786 {
16787   auto res = isl_space_find_dim_by_id(get(), static_cast<enum isl_dim_type>(type), id.get());
16788   return res;
16789 }
16790 
find_dim_by_name(isl::dim type,const std::string & name)16791 int space::find_dim_by_name(isl::dim type, const std::string &name) const
16792 {
16793   auto res = isl_space_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
16794   return res;
16795 }
16796 
flatten_domain()16797 isl::space space::flatten_domain() const
16798 {
16799   auto res = isl_space_flatten_domain(copy());
16800   return manage(res);
16801 }
16802 
flatten_range()16803 isl::space space::flatten_range() const
16804 {
16805   auto res = isl_space_flatten_range(copy());
16806   return manage(res);
16807 }
16808 
from_domain()16809 isl::space space::from_domain() const
16810 {
16811   auto res = isl_space_from_domain(copy());
16812   return manage(res);
16813 }
16814 
from_range()16815 isl::space space::from_range() const
16816 {
16817   auto res = isl_space_from_range(copy());
16818   return manage(res);
16819 }
16820 
get_dim_id(isl::dim type,unsigned int pos)16821 isl::id space::get_dim_id(isl::dim type, unsigned int pos) const
16822 {
16823   auto res = isl_space_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
16824   return manage(res);
16825 }
16826 
get_dim_name(isl::dim type,unsigned int pos)16827 std::string space::get_dim_name(isl::dim type, unsigned int pos) const
16828 {
16829   auto res = isl_space_get_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
16830   std::string tmp(res);
16831   return tmp;
16832 }
16833 
get_tuple_id(isl::dim type)16834 isl::id space::get_tuple_id(isl::dim type) const
16835 {
16836   auto res = isl_space_get_tuple_id(get(), static_cast<enum isl_dim_type>(type));
16837   return manage(res);
16838 }
16839 
get_tuple_name(isl::dim type)16840 std::string space::get_tuple_name(isl::dim type) const
16841 {
16842   auto res = isl_space_get_tuple_name(get(), static_cast<enum isl_dim_type>(type));
16843   std::string tmp(res);
16844   return tmp;
16845 }
16846 
has_dim_id(isl::dim type,unsigned int pos)16847 boolean space::has_dim_id(isl::dim type, unsigned int pos) const
16848 {
16849   auto res = isl_space_has_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
16850   return manage(res);
16851 }
16852 
has_dim_name(isl::dim type,unsigned int pos)16853 boolean space::has_dim_name(isl::dim type, unsigned int pos) const
16854 {
16855   auto res = isl_space_has_dim_name(get(), static_cast<enum isl_dim_type>(type), pos);
16856   return manage(res);
16857 }
16858 
has_equal_params(const isl::space & space2)16859 boolean space::has_equal_params(const isl::space &space2) const
16860 {
16861   auto res = isl_space_has_equal_params(get(), space2.get());
16862   return manage(res);
16863 }
16864 
has_equal_tuples(const isl::space & space2)16865 boolean space::has_equal_tuples(const isl::space &space2) const
16866 {
16867   auto res = isl_space_has_equal_tuples(get(), space2.get());
16868   return manage(res);
16869 }
16870 
has_tuple_id(isl::dim type)16871 boolean space::has_tuple_id(isl::dim type) const
16872 {
16873   auto res = isl_space_has_tuple_id(get(), static_cast<enum isl_dim_type>(type));
16874   return manage(res);
16875 }
16876 
has_tuple_name(isl::dim type)16877 boolean space::has_tuple_name(isl::dim type) const
16878 {
16879   auto res = isl_space_has_tuple_name(get(), static_cast<enum isl_dim_type>(type));
16880   return manage(res);
16881 }
16882 
insert_dims(isl::dim type,unsigned int pos,unsigned int n)16883 isl::space space::insert_dims(isl::dim type, unsigned int pos, unsigned int n) const
16884 {
16885   auto res = isl_space_insert_dims(copy(), static_cast<enum isl_dim_type>(type), pos, n);
16886   return manage(res);
16887 }
16888 
is_domain(const isl::space & space2)16889 boolean space::is_domain(const isl::space &space2) const
16890 {
16891   auto res = isl_space_is_domain(get(), space2.get());
16892   return manage(res);
16893 }
16894 
is_equal(const isl::space & space2)16895 boolean space::is_equal(const isl::space &space2) const
16896 {
16897   auto res = isl_space_is_equal(get(), space2.get());
16898   return manage(res);
16899 }
16900 
is_map()16901 boolean space::is_map() const
16902 {
16903   auto res = isl_space_is_map(get());
16904   return manage(res);
16905 }
16906 
is_params()16907 boolean space::is_params() const
16908 {
16909   auto res = isl_space_is_params(get());
16910   return manage(res);
16911 }
16912 
is_product()16913 boolean space::is_product() const
16914 {
16915   auto res = isl_space_is_product(get());
16916   return manage(res);
16917 }
16918 
is_range(const isl::space & space2)16919 boolean space::is_range(const isl::space &space2) const
16920 {
16921   auto res = isl_space_is_range(get(), space2.get());
16922   return manage(res);
16923 }
16924 
is_set()16925 boolean space::is_set() const
16926 {
16927   auto res = isl_space_is_set(get());
16928   return manage(res);
16929 }
16930 
is_wrapping()16931 boolean space::is_wrapping() const
16932 {
16933   auto res = isl_space_is_wrapping(get());
16934   return manage(res);
16935 }
16936 
join(isl::space right)16937 isl::space space::join(isl::space right) const
16938 {
16939   auto res = isl_space_join(copy(), right.release());
16940   return manage(res);
16941 }
16942 
map_from_domain_and_range(isl::space range)16943 isl::space space::map_from_domain_and_range(isl::space range) const
16944 {
16945   auto res = isl_space_map_from_domain_and_range(copy(), range.release());
16946   return manage(res);
16947 }
16948 
map_from_set()16949 isl::space space::map_from_set() const
16950 {
16951   auto res = isl_space_map_from_set(copy());
16952   return manage(res);
16953 }
16954 
move_dims(isl::dim dst_type,unsigned int dst_pos,isl::dim src_type,unsigned int src_pos,unsigned int n)16955 isl::space space::move_dims(isl::dim dst_type, unsigned int dst_pos, isl::dim src_type, unsigned int src_pos, unsigned int n) const
16956 {
16957   auto res = isl_space_move_dims(copy(), static_cast<enum isl_dim_type>(dst_type), dst_pos, static_cast<enum isl_dim_type>(src_type), src_pos, n);
16958   return manage(res);
16959 }
16960 
params()16961 isl::space space::params() const
16962 {
16963   auto res = isl_space_params(copy());
16964   return manage(res);
16965 }
16966 
params_alloc(isl::ctx ctx,unsigned int nparam)16967 isl::space space::params_alloc(isl::ctx ctx, unsigned int nparam)
16968 {
16969   auto res = isl_space_params_alloc(ctx.release(), nparam);
16970   return manage(res);
16971 }
16972 
product(isl::space right)16973 isl::space space::product(isl::space right) const
16974 {
16975   auto res = isl_space_product(copy(), right.release());
16976   return manage(res);
16977 }
16978 
range()16979 isl::space space::range() const
16980 {
16981   auto res = isl_space_range(copy());
16982   return manage(res);
16983 }
16984 
range_curry()16985 isl::space space::range_curry() const
16986 {
16987   auto res = isl_space_range_curry(copy());
16988   return manage(res);
16989 }
16990 
range_factor_domain()16991 isl::space space::range_factor_domain() const
16992 {
16993   auto res = isl_space_range_factor_domain(copy());
16994   return manage(res);
16995 }
16996 
range_factor_range()16997 isl::space space::range_factor_range() const
16998 {
16999   auto res = isl_space_range_factor_range(copy());
17000   return manage(res);
17001 }
17002 
range_is_wrapping()17003 boolean space::range_is_wrapping() const
17004 {
17005   auto res = isl_space_range_is_wrapping(get());
17006   return manage(res);
17007 }
17008 
range_map()17009 isl::space space::range_map() const
17010 {
17011   auto res = isl_space_range_map(copy());
17012   return manage(res);
17013 }
17014 
range_product(isl::space right)17015 isl::space space::range_product(isl::space right) const
17016 {
17017   auto res = isl_space_range_product(copy(), right.release());
17018   return manage(res);
17019 }
17020 
range_reverse()17021 isl::space space::range_reverse() const
17022 {
17023   auto res = isl_space_range_reverse(copy());
17024   return manage(res);
17025 }
17026 
reset_tuple_id(isl::dim type)17027 isl::space space::reset_tuple_id(isl::dim type) const
17028 {
17029   auto res = isl_space_reset_tuple_id(copy(), static_cast<enum isl_dim_type>(type));
17030   return manage(res);
17031 }
17032 
reset_user()17033 isl::space space::reset_user() const
17034 {
17035   auto res = isl_space_reset_user(copy());
17036   return manage(res);
17037 }
17038 
reverse()17039 isl::space space::reverse() const
17040 {
17041   auto res = isl_space_reverse(copy());
17042   return manage(res);
17043 }
17044 
set_dim_id(isl::dim type,unsigned int pos,isl::id id)17045 isl::space space::set_dim_id(isl::dim type, unsigned int pos, isl::id id) const
17046 {
17047   auto res = isl_space_set_dim_id(copy(), static_cast<enum isl_dim_type>(type), pos, id.release());
17048   return manage(res);
17049 }
17050 
set_from_params()17051 isl::space space::set_from_params() const
17052 {
17053   auto res = isl_space_set_from_params(copy());
17054   return manage(res);
17055 }
17056 
set_tuple_id(isl::dim type,isl::id id)17057 isl::space space::set_tuple_id(isl::dim type, isl::id id) const
17058 {
17059   auto res = isl_space_set_tuple_id(copy(), static_cast<enum isl_dim_type>(type), id.release());
17060   return manage(res);
17061 }
17062 
set_tuple_name(isl::dim type,const std::string & s)17063 isl::space space::set_tuple_name(isl::dim type, const std::string &s) const
17064 {
17065   auto res = isl_space_set_tuple_name(copy(), static_cast<enum isl_dim_type>(type), s.c_str());
17066   return manage(res);
17067 }
17068 
tuple_is_equal(isl::dim type1,const isl::space & space2,isl::dim type2)17069 boolean space::tuple_is_equal(isl::dim type1, const isl::space &space2, isl::dim type2) const
17070 {
17071   auto res = isl_space_tuple_is_equal(get(), static_cast<enum isl_dim_type>(type1), space2.get(), static_cast<enum isl_dim_type>(type2));
17072   return manage(res);
17073 }
17074 
uncurry()17075 isl::space space::uncurry() const
17076 {
17077   auto res = isl_space_uncurry(copy());
17078   return manage(res);
17079 }
17080 
unit(isl::ctx ctx)17081 isl::space space::unit(isl::ctx ctx)
17082 {
17083   auto res = isl_space_unit(ctx.release());
17084   return manage(res);
17085 }
17086 
unwrap()17087 isl::space space::unwrap() const
17088 {
17089   auto res = isl_space_unwrap(copy());
17090   return manage(res);
17091 }
17092 
wrap()17093 isl::space space::wrap() const
17094 {
17095   auto res = isl_space_wrap(copy());
17096   return manage(res);
17097 }
17098 
zip()17099 isl::space space::zip() const
17100 {
17101   auto res = isl_space_zip(copy());
17102   return manage(res);
17103 }
17104 
17105 // implementations for isl::term
manage(__isl_take isl_term * ptr)17106 term manage(__isl_take isl_term *ptr) {
17107   return term(ptr);
17108 }
manage_copy(__isl_keep isl_term * ptr)17109 term manage_copy(__isl_keep isl_term *ptr) {
17110   ptr = isl_term_copy(ptr);
17111   return term(ptr);
17112 }
17113 
term()17114 term::term()
17115     : ptr(nullptr) {}
17116 
term(const term & obj)17117 term::term(const term &obj)
17118     : ptr(nullptr)
17119 {
17120   ptr = obj.copy();
17121 }
17122 
17123 
term(__isl_take isl_term * ptr)17124 term::term(__isl_take isl_term *ptr)
17125     : ptr(ptr) {}
17126 
17127 
17128 term &term::operator=(term obj) {
17129   std::swap(this->ptr, obj.ptr);
17130   return *this;
17131 }
17132 
~term()17133 term::~term() {
17134   if (ptr)
17135     isl_term_free(ptr);
17136 }
17137 
copy()17138 __isl_give isl_term *term::copy() const & {
17139   return isl_term_copy(ptr);
17140 }
17141 
get()17142 __isl_keep isl_term *term::get() const {
17143   return ptr;
17144 }
17145 
release()17146 __isl_give isl_term *term::release() {
17147   isl_term *tmp = ptr;
17148   ptr = nullptr;
17149   return tmp;
17150 }
17151 
is_null()17152 bool term::is_null() const {
17153   return ptr == nullptr;
17154 }
17155 
17156 
ctx()17157 isl::ctx term::ctx() const {
17158   return isl::ctx(isl_term_get_ctx(ptr));
17159 }
17160 
17161 
dim(isl::dim type)17162 isl_size term::dim(isl::dim type) const
17163 {
17164   auto res = isl_term_dim(get(), static_cast<enum isl_dim_type>(type));
17165   return res;
17166 }
17167 
get_coefficient_val()17168 isl::val term::get_coefficient_val() const
17169 {
17170   auto res = isl_term_get_coefficient_val(get());
17171   return manage(res);
17172 }
17173 
get_div(unsigned int pos)17174 isl::aff term::get_div(unsigned int pos) const
17175 {
17176   auto res = isl_term_get_div(get(), pos);
17177   return manage(res);
17178 }
17179 
get_exp(isl::dim type,unsigned int pos)17180 isl_size term::get_exp(isl::dim type, unsigned int pos) const
17181 {
17182   auto res = isl_term_get_exp(get(), static_cast<enum isl_dim_type>(type), pos);
17183   return res;
17184 }
17185 
17186 // implementations for isl::union_access_info
manage(__isl_take isl_union_access_info * ptr)17187 union_access_info manage(__isl_take isl_union_access_info *ptr) {
17188   return union_access_info(ptr);
17189 }
manage_copy(__isl_keep isl_union_access_info * ptr)17190 union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
17191   ptr = isl_union_access_info_copy(ptr);
17192   return union_access_info(ptr);
17193 }
17194 
union_access_info()17195 union_access_info::union_access_info()
17196     : ptr(nullptr) {}
17197 
union_access_info(const union_access_info & obj)17198 union_access_info::union_access_info(const union_access_info &obj)
17199     : ptr(nullptr)
17200 {
17201   ptr = obj.copy();
17202 }
17203 
17204 
union_access_info(__isl_take isl_union_access_info * ptr)17205 union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
17206     : ptr(ptr) {}
17207 
union_access_info(isl::union_map sink)17208 union_access_info::union_access_info(isl::union_map sink)
17209 {
17210   auto res = isl_union_access_info_from_sink(sink.release());
17211   ptr = res;
17212 }
17213 
17214 union_access_info &union_access_info::operator=(union_access_info obj) {
17215   std::swap(this->ptr, obj.ptr);
17216   return *this;
17217 }
17218 
~union_access_info()17219 union_access_info::~union_access_info() {
17220   if (ptr)
17221     isl_union_access_info_free(ptr);
17222 }
17223 
copy()17224 __isl_give isl_union_access_info *union_access_info::copy() const & {
17225   return isl_union_access_info_copy(ptr);
17226 }
17227 
get()17228 __isl_keep isl_union_access_info *union_access_info::get() const {
17229   return ptr;
17230 }
17231 
release()17232 __isl_give isl_union_access_info *union_access_info::release() {
17233   isl_union_access_info *tmp = ptr;
17234   ptr = nullptr;
17235   return tmp;
17236 }
17237 
is_null()17238 bool union_access_info::is_null() const {
17239   return ptr == nullptr;
17240 }
17241 
17242 
ctx()17243 isl::ctx union_access_info::ctx() const {
17244   return isl::ctx(isl_union_access_info_get_ctx(ptr));
17245 }
17246 
17247 
compute_flow()17248 isl::union_flow union_access_info::compute_flow() const
17249 {
17250   auto res = isl_union_access_info_compute_flow(copy());
17251   return manage(res);
17252 }
17253 
set_kill(isl::union_map kill)17254 isl::union_access_info union_access_info::set_kill(isl::union_map kill) const
17255 {
17256   auto res = isl_union_access_info_set_kill(copy(), kill.release());
17257   return manage(res);
17258 }
17259 
set_may_source(isl::union_map may_source)17260 isl::union_access_info union_access_info::set_may_source(isl::union_map may_source) const
17261 {
17262   auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
17263   return manage(res);
17264 }
17265 
set_must_source(isl::union_map must_source)17266 isl::union_access_info union_access_info::set_must_source(isl::union_map must_source) const
17267 {
17268   auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
17269   return manage(res);
17270 }
17271 
set_schedule(isl::schedule schedule)17272 isl::union_access_info union_access_info::set_schedule(isl::schedule schedule) const
17273 {
17274   auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
17275   return manage(res);
17276 }
17277 
set_schedule_map(isl::union_map schedule_map)17278 isl::union_access_info union_access_info::set_schedule_map(isl::union_map schedule_map) const
17279 {
17280   auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
17281   return manage(res);
17282 }
17283 
17284 // implementations for isl::union_flow
manage(__isl_take isl_union_flow * ptr)17285 union_flow manage(__isl_take isl_union_flow *ptr) {
17286   return union_flow(ptr);
17287 }
manage_copy(__isl_keep isl_union_flow * ptr)17288 union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
17289   ptr = isl_union_flow_copy(ptr);
17290   return union_flow(ptr);
17291 }
17292 
union_flow()17293 union_flow::union_flow()
17294     : ptr(nullptr) {}
17295 
union_flow(const union_flow & obj)17296 union_flow::union_flow(const union_flow &obj)
17297     : ptr(nullptr)
17298 {
17299   ptr = obj.copy();
17300 }
17301 
17302 
union_flow(__isl_take isl_union_flow * ptr)17303 union_flow::union_flow(__isl_take isl_union_flow *ptr)
17304     : ptr(ptr) {}
17305 
17306 
17307 union_flow &union_flow::operator=(union_flow obj) {
17308   std::swap(this->ptr, obj.ptr);
17309   return *this;
17310 }
17311 
~union_flow()17312 union_flow::~union_flow() {
17313   if (ptr)
17314     isl_union_flow_free(ptr);
17315 }
17316 
copy()17317 __isl_give isl_union_flow *union_flow::copy() const & {
17318   return isl_union_flow_copy(ptr);
17319 }
17320 
get()17321 __isl_keep isl_union_flow *union_flow::get() const {
17322   return ptr;
17323 }
17324 
release()17325 __isl_give isl_union_flow *union_flow::release() {
17326   isl_union_flow *tmp = ptr;
17327   ptr = nullptr;
17328   return tmp;
17329 }
17330 
is_null()17331 bool union_flow::is_null() const {
17332   return ptr == nullptr;
17333 }
17334 
17335 
ctx()17336 isl::ctx union_flow::ctx() const {
17337   return isl::ctx(isl_union_flow_get_ctx(ptr));
17338 }
17339 
17340 
get_full_may_dependence()17341 isl::union_map union_flow::get_full_may_dependence() const
17342 {
17343   auto res = isl_union_flow_get_full_may_dependence(get());
17344   return manage(res);
17345 }
17346 
get_full_must_dependence()17347 isl::union_map union_flow::get_full_must_dependence() const
17348 {
17349   auto res = isl_union_flow_get_full_must_dependence(get());
17350   return manage(res);
17351 }
17352 
get_may_dependence()17353 isl::union_map union_flow::get_may_dependence() const
17354 {
17355   auto res = isl_union_flow_get_may_dependence(get());
17356   return manage(res);
17357 }
17358 
get_may_no_source()17359 isl::union_map union_flow::get_may_no_source() const
17360 {
17361   auto res = isl_union_flow_get_may_no_source(get());
17362   return manage(res);
17363 }
17364 
get_must_dependence()17365 isl::union_map union_flow::get_must_dependence() const
17366 {
17367   auto res = isl_union_flow_get_must_dependence(get());
17368   return manage(res);
17369 }
17370 
get_must_no_source()17371 isl::union_map union_flow::get_must_no_source() const
17372 {
17373   auto res = isl_union_flow_get_must_no_source(get());
17374   return manage(res);
17375 }
17376 
17377 // implementations for isl::union_map
manage(__isl_take isl_union_map * ptr)17378 union_map manage(__isl_take isl_union_map *ptr) {
17379   return union_map(ptr);
17380 }
manage_copy(__isl_keep isl_union_map * ptr)17381 union_map manage_copy(__isl_keep isl_union_map *ptr) {
17382   ptr = isl_union_map_copy(ptr);
17383   return union_map(ptr);
17384 }
17385 
union_map()17386 union_map::union_map()
17387     : ptr(nullptr) {}
17388 
union_map(const union_map & obj)17389 union_map::union_map(const union_map &obj)
17390     : ptr(nullptr)
17391 {
17392   ptr = obj.copy();
17393 }
17394 
17395 
union_map(__isl_take isl_union_map * ptr)17396 union_map::union_map(__isl_take isl_union_map *ptr)
17397     : ptr(ptr) {}
17398 
union_map(isl::basic_map bmap)17399 union_map::union_map(isl::basic_map bmap)
17400 {
17401   auto res = isl_union_map_from_basic_map(bmap.release());
17402   ptr = res;
17403 }
union_map(isl::map map)17404 union_map::union_map(isl::map map)
17405 {
17406   auto res = isl_union_map_from_map(map.release());
17407   ptr = res;
17408 }
union_map(isl::union_pw_multi_aff upma)17409 union_map::union_map(isl::union_pw_multi_aff upma)
17410 {
17411   auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
17412   ptr = res;
17413 }
union_map(isl::ctx ctx,const std::string & str)17414 union_map::union_map(isl::ctx ctx, const std::string &str)
17415 {
17416   auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
17417   ptr = res;
17418 }
17419 
17420 union_map &union_map::operator=(union_map obj) {
17421   std::swap(this->ptr, obj.ptr);
17422   return *this;
17423 }
17424 
~union_map()17425 union_map::~union_map() {
17426   if (ptr)
17427     isl_union_map_free(ptr);
17428 }
17429 
copy()17430 __isl_give isl_union_map *union_map::copy() const & {
17431   return isl_union_map_copy(ptr);
17432 }
17433 
get()17434 __isl_keep isl_union_map *union_map::get() const {
17435   return ptr;
17436 }
17437 
release()17438 __isl_give isl_union_map *union_map::release() {
17439   isl_union_map *tmp = ptr;
17440   ptr = nullptr;
17441   return tmp;
17442 }
17443 
is_null()17444 bool union_map::is_null() const {
17445   return ptr == nullptr;
17446 }
17447 
17448 
ctx()17449 isl::ctx union_map::ctx() const {
17450   return isl::ctx(isl_union_map_get_ctx(ptr));
17451 }
17452 
dump()17453 void union_map::dump() const {
17454   isl_union_map_dump(get());
17455 }
17456 
17457 
affine_hull()17458 isl::union_map union_map::affine_hull() const
17459 {
17460   auto res = isl_union_map_affine_hull(copy());
17461   return manage(res);
17462 }
17463 
align_params(isl::space model)17464 isl::union_map union_map::align_params(isl::space model) const
17465 {
17466   auto res = isl_union_map_align_params(copy(), model.release());
17467   return manage(res);
17468 }
17469 
apply_domain(isl::union_map umap2)17470 isl::union_map union_map::apply_domain(isl::union_map umap2) const
17471 {
17472   auto res = isl_union_map_apply_domain(copy(), umap2.release());
17473   return manage(res);
17474 }
17475 
apply_range(isl::union_map umap2)17476 isl::union_map union_map::apply_range(isl::union_map umap2) const
17477 {
17478   auto res = isl_union_map_apply_range(copy(), umap2.release());
17479   return manage(res);
17480 }
17481 
bind_range(isl::multi_id tuple)17482 isl::union_set union_map::bind_range(isl::multi_id tuple) const
17483 {
17484   auto res = isl_union_map_bind_range(copy(), tuple.release());
17485   return manage(res);
17486 }
17487 
coalesce()17488 isl::union_map union_map::coalesce() const
17489 {
17490   auto res = isl_union_map_coalesce(copy());
17491   return manage(res);
17492 }
17493 
contains(const isl::space & space)17494 boolean union_map::contains(const isl::space &space) const
17495 {
17496   auto res = isl_union_map_contains(get(), space.get());
17497   return manage(res);
17498 }
17499 
curry()17500 isl::union_map union_map::curry() const
17501 {
17502   auto res = isl_union_map_curry(copy());
17503   return manage(res);
17504 }
17505 
deltas()17506 isl::union_set union_map::deltas() const
17507 {
17508   auto res = isl_union_map_deltas(copy());
17509   return manage(res);
17510 }
17511 
deltas_map()17512 isl::union_map union_map::deltas_map() const
17513 {
17514   auto res = isl_union_map_deltas_map(copy());
17515   return manage(res);
17516 }
17517 
detect_equalities()17518 isl::union_map union_map::detect_equalities() const
17519 {
17520   auto res = isl_union_map_detect_equalities(copy());
17521   return manage(res);
17522 }
17523 
dim(isl::dim type)17524 isl_size union_map::dim(isl::dim type) const
17525 {
17526   auto res = isl_union_map_dim(get(), static_cast<enum isl_dim_type>(type));
17527   return res;
17528 }
17529 
domain()17530 isl::union_set union_map::domain() const
17531 {
17532   auto res = isl_union_map_domain(copy());
17533   return manage(res);
17534 }
17535 
domain_factor_domain()17536 isl::union_map union_map::domain_factor_domain() const
17537 {
17538   auto res = isl_union_map_domain_factor_domain(copy());
17539   return manage(res);
17540 }
17541 
domain_factor_range()17542 isl::union_map union_map::domain_factor_range() const
17543 {
17544   auto res = isl_union_map_domain_factor_range(copy());
17545   return manage(res);
17546 }
17547 
domain_map()17548 isl::union_map union_map::domain_map() const
17549 {
17550   auto res = isl_union_map_domain_map(copy());
17551   return manage(res);
17552 }
17553 
domain_map_union_pw_multi_aff()17554 isl::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
17555 {
17556   auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
17557   return manage(res);
17558 }
17559 
domain_product(isl::union_map umap2)17560 isl::union_map union_map::domain_product(isl::union_map umap2) const
17561 {
17562   auto res = isl_union_map_domain_product(copy(), umap2.release());
17563   return manage(res);
17564 }
17565 
empty(isl::ctx ctx)17566 isl::union_map union_map::empty(isl::ctx ctx)
17567 {
17568   auto res = isl_union_map_empty_ctx(ctx.release());
17569   return manage(res);
17570 }
17571 
eq_at(isl::multi_union_pw_aff mupa)17572 isl::union_map union_map::eq_at(isl::multi_union_pw_aff mupa) const
17573 {
17574   auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
17575   return manage(res);
17576 }
17577 
extract_map(isl::space space)17578 isl::map union_map::extract_map(isl::space space) const
17579 {
17580   auto res = isl_union_map_extract_map(get(), space.release());
17581   return manage(res);
17582 }
17583 
factor_domain()17584 isl::union_map union_map::factor_domain() const
17585 {
17586   auto res = isl_union_map_factor_domain(copy());
17587   return manage(res);
17588 }
17589 
factor_range()17590 isl::union_map union_map::factor_range() const
17591 {
17592   auto res = isl_union_map_factor_range(copy());
17593   return manage(res);
17594 }
17595 
find_dim_by_name(isl::dim type,const std::string & name)17596 int union_map::find_dim_by_name(isl::dim type, const std::string &name) const
17597 {
17598   auto res = isl_union_map_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
17599   return res;
17600 }
17601 
fixed_power(isl::val exp)17602 isl::union_map union_map::fixed_power(isl::val exp) const
17603 {
17604   auto res = isl_union_map_fixed_power_val(copy(), exp.release());
17605   return manage(res);
17606 }
17607 
flat_domain_product(isl::union_map umap2)17608 isl::union_map union_map::flat_domain_product(isl::union_map umap2) const
17609 {
17610   auto res = isl_union_map_flat_domain_product(copy(), umap2.release());
17611   return manage(res);
17612 }
17613 
flat_range_product(isl::union_map umap2)17614 isl::union_map union_map::flat_range_product(isl::union_map umap2) const
17615 {
17616   auto res = isl_union_map_flat_range_product(copy(), umap2.release());
17617   return manage(res);
17618 }
17619 
foreach_map(const std::function<stat (map)> & fn)17620 stat union_map::foreach_map(const std::function<stat(map)> &fn) const
17621 {
17622   struct fn_data {
17623     const std::function<stat(map)> *func;
17624   } fn_data = { &fn };
17625   auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
17626     auto *data = static_cast<struct fn_data *>(arg_1);
17627     stat ret = (*data->func)(manage(arg_0));
17628     return ret.release();
17629   };
17630   auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
17631   return manage(res);
17632 }
17633 
from(isl::multi_union_pw_aff mupa)17634 isl::union_map union_map::from(isl::multi_union_pw_aff mupa)
17635 {
17636   auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
17637   return manage(res);
17638 }
17639 
from_domain(isl::union_set uset)17640 isl::union_map union_map::from_domain(isl::union_set uset)
17641 {
17642   auto res = isl_union_map_from_domain(uset.release());
17643   return manage(res);
17644 }
17645 
from_domain_and_range(isl::union_set domain,isl::union_set range)17646 isl::union_map union_map::from_domain_and_range(isl::union_set domain, isl::union_set range)
17647 {
17648   auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
17649   return manage(res);
17650 }
17651 
from_range(isl::union_set uset)17652 isl::union_map union_map::from_range(isl::union_set uset)
17653 {
17654   auto res = isl_union_map_from_range(uset.release());
17655   return manage(res);
17656 }
17657 
from_union_pw_aff(isl::union_pw_aff upa)17658 isl::union_map union_map::from_union_pw_aff(isl::union_pw_aff upa)
17659 {
17660   auto res = isl_union_map_from_union_pw_aff(upa.release());
17661   return manage(res);
17662 }
17663 
get_dim_id(isl::dim type,unsigned int pos)17664 isl::id union_map::get_dim_id(isl::dim type, unsigned int pos) const
17665 {
17666   auto res = isl_union_map_get_dim_id(get(), static_cast<enum isl_dim_type>(type), pos);
17667   return manage(res);
17668 }
17669 
get_hash()17670 uint32_t union_map::get_hash() const
17671 {
17672   auto res = isl_union_map_get_hash(get());
17673   return res;
17674 }
17675 
get_map_list()17676 isl::map_list union_map::get_map_list() const
17677 {
17678   auto res = isl_union_map_get_map_list(get());
17679   return manage(res);
17680 }
17681 
get_space()17682 isl::space union_map::get_space() const
17683 {
17684   auto res = isl_union_map_get_space(get());
17685   return manage(res);
17686 }
17687 
gist(isl::union_map context)17688 isl::union_map union_map::gist(isl::union_map context) const
17689 {
17690   auto res = isl_union_map_gist(copy(), context.release());
17691   return manage(res);
17692 }
17693 
gist_domain(isl::union_set uset)17694 isl::union_map union_map::gist_domain(isl::union_set uset) const
17695 {
17696   auto res = isl_union_map_gist_domain(copy(), uset.release());
17697   return manage(res);
17698 }
17699 
gist_params(isl::set set)17700 isl::union_map union_map::gist_params(isl::set set) const
17701 {
17702   auto res = isl_union_map_gist_params(copy(), set.release());
17703   return manage(res);
17704 }
17705 
gist_range(isl::union_set uset)17706 isl::union_map union_map::gist_range(isl::union_set uset) const
17707 {
17708   auto res = isl_union_map_gist_range(copy(), uset.release());
17709   return manage(res);
17710 }
17711 
intersect(isl::union_map umap2)17712 isl::union_map union_map::intersect(isl::union_map umap2) const
17713 {
17714   auto res = isl_union_map_intersect(copy(), umap2.release());
17715   return manage(res);
17716 }
17717 
intersect_domain(isl::space space)17718 isl::union_map union_map::intersect_domain(isl::space space) const
17719 {
17720   auto res = isl_union_map_intersect_domain_space(copy(), space.release());
17721   return manage(res);
17722 }
17723 
intersect_domain(isl::union_set uset)17724 isl::union_map union_map::intersect_domain(isl::union_set uset) const
17725 {
17726   auto res = isl_union_map_intersect_domain_union_set(copy(), uset.release());
17727   return manage(res);
17728 }
17729 
intersect_domain_factor_domain(isl::union_map factor)17730 isl::union_map union_map::intersect_domain_factor_domain(isl::union_map factor) const
17731 {
17732   auto res = isl_union_map_intersect_domain_factor_domain(copy(), factor.release());
17733   return manage(res);
17734 }
17735 
intersect_domain_factor_range(isl::union_map factor)17736 isl::union_map union_map::intersect_domain_factor_range(isl::union_map factor) const
17737 {
17738   auto res = isl_union_map_intersect_domain_factor_range(copy(), factor.release());
17739   return manage(res);
17740 }
17741 
intersect_params(isl::set set)17742 isl::union_map union_map::intersect_params(isl::set set) const
17743 {
17744   auto res = isl_union_map_intersect_params(copy(), set.release());
17745   return manage(res);
17746 }
17747 
intersect_range(isl::space space)17748 isl::union_map union_map::intersect_range(isl::space space) const
17749 {
17750   auto res = isl_union_map_intersect_range_space(copy(), space.release());
17751   return manage(res);
17752 }
17753 
intersect_range(isl::union_set uset)17754 isl::union_map union_map::intersect_range(isl::union_set uset) const
17755 {
17756   auto res = isl_union_map_intersect_range_union_set(copy(), uset.release());
17757   return manage(res);
17758 }
17759 
intersect_range_factor_domain(isl::union_map factor)17760 isl::union_map union_map::intersect_range_factor_domain(isl::union_map factor) const
17761 {
17762   auto res = isl_union_map_intersect_range_factor_domain(copy(), factor.release());
17763   return manage(res);
17764 }
17765 
intersect_range_factor_range(isl::union_map factor)17766 isl::union_map union_map::intersect_range_factor_range(isl::union_map factor) const
17767 {
17768   auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
17769   return manage(res);
17770 }
17771 
involves_dims(isl::dim type,unsigned int first,unsigned int n)17772 boolean union_map::involves_dims(isl::dim type, unsigned int first, unsigned int n) const
17773 {
17774   auto res = isl_union_map_involves_dims(get(), static_cast<enum isl_dim_type>(type), first, n);
17775   return manage(res);
17776 }
17777 
is_bijective()17778 boolean union_map::is_bijective() const
17779 {
17780   auto res = isl_union_map_is_bijective(get());
17781   return manage(res);
17782 }
17783 
is_disjoint(const isl::union_map & umap2)17784 boolean union_map::is_disjoint(const isl::union_map &umap2) const
17785 {
17786   auto res = isl_union_map_is_disjoint(get(), umap2.get());
17787   return manage(res);
17788 }
17789 
is_empty()17790 boolean union_map::is_empty() const
17791 {
17792   auto res = isl_union_map_is_empty(get());
17793   return manage(res);
17794 }
17795 
is_equal(const isl::union_map & umap2)17796 boolean union_map::is_equal(const isl::union_map &umap2) const
17797 {
17798   auto res = isl_union_map_is_equal(get(), umap2.get());
17799   return manage(res);
17800 }
17801 
is_identity()17802 boolean union_map::is_identity() const
17803 {
17804   auto res = isl_union_map_is_identity(get());
17805   return manage(res);
17806 }
17807 
is_injective()17808 boolean union_map::is_injective() const
17809 {
17810   auto res = isl_union_map_is_injective(get());
17811   return manage(res);
17812 }
17813 
is_single_valued()17814 boolean union_map::is_single_valued() const
17815 {
17816   auto res = isl_union_map_is_single_valued(get());
17817   return manage(res);
17818 }
17819 
is_strict_subset(const isl::union_map & umap2)17820 boolean union_map::is_strict_subset(const isl::union_map &umap2) const
17821 {
17822   auto res = isl_union_map_is_strict_subset(get(), umap2.get());
17823   return manage(res);
17824 }
17825 
is_subset(const isl::union_map & umap2)17826 boolean union_map::is_subset(const isl::union_map &umap2) const
17827 {
17828   auto res = isl_union_map_is_subset(get(), umap2.get());
17829   return manage(res);
17830 }
17831 
isa_map()17832 boolean union_map::isa_map() const
17833 {
17834   auto res = isl_union_map_isa_map(get());
17835   return manage(res);
17836 }
17837 
lex_ge_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa)17838 isl::union_map union_map::lex_ge_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const
17839 {
17840   auto res = isl_union_map_lex_ge_at_multi_union_pw_aff(copy(), mupa.release());
17841   return manage(res);
17842 }
17843 
lex_ge_union_map(isl::union_map umap2)17844 isl::union_map union_map::lex_ge_union_map(isl::union_map umap2) const
17845 {
17846   auto res = isl_union_map_lex_ge_union_map(copy(), umap2.release());
17847   return manage(res);
17848 }
17849 
lex_gt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa)17850 isl::union_map union_map::lex_gt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const
17851 {
17852   auto res = isl_union_map_lex_gt_at_multi_union_pw_aff(copy(), mupa.release());
17853   return manage(res);
17854 }
17855 
lex_gt_union_map(isl::union_map umap2)17856 isl::union_map union_map::lex_gt_union_map(isl::union_map umap2) const
17857 {
17858   auto res = isl_union_map_lex_gt_union_map(copy(), umap2.release());
17859   return manage(res);
17860 }
17861 
lex_le_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa)17862 isl::union_map union_map::lex_le_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const
17863 {
17864   auto res = isl_union_map_lex_le_at_multi_union_pw_aff(copy(), mupa.release());
17865   return manage(res);
17866 }
17867 
lex_le_union_map(isl::union_map umap2)17868 isl::union_map union_map::lex_le_union_map(isl::union_map umap2) const
17869 {
17870   auto res = isl_union_map_lex_le_union_map(copy(), umap2.release());
17871   return manage(res);
17872 }
17873 
lex_lt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa)17874 isl::union_map union_map::lex_lt_at_multi_union_pw_aff(isl::multi_union_pw_aff mupa) const
17875 {
17876   auto res = isl_union_map_lex_lt_at_multi_union_pw_aff(copy(), mupa.release());
17877   return manage(res);
17878 }
17879 
lex_lt_union_map(isl::union_map umap2)17880 isl::union_map union_map::lex_lt_union_map(isl::union_map umap2) const
17881 {
17882   auto res = isl_union_map_lex_lt_union_map(copy(), umap2.release());
17883   return manage(res);
17884 }
17885 
lexmax()17886 isl::union_map union_map::lexmax() const
17887 {
17888   auto res = isl_union_map_lexmax(copy());
17889   return manage(res);
17890 }
17891 
lexmin()17892 isl::union_map union_map::lexmin() const
17893 {
17894   auto res = isl_union_map_lexmin(copy());
17895   return manage(res);
17896 }
17897 
n_map()17898 isl_size union_map::n_map() const
17899 {
17900   auto res = isl_union_map_n_map(get());
17901   return res;
17902 }
17903 
params()17904 isl::set union_map::params() const
17905 {
17906   auto res = isl_union_map_params(copy());
17907   return manage(res);
17908 }
17909 
plain_is_empty()17910 boolean union_map::plain_is_empty() const
17911 {
17912   auto res = isl_union_map_plain_is_empty(get());
17913   return manage(res);
17914 }
17915 
plain_is_injective()17916 boolean union_map::plain_is_injective() const
17917 {
17918   auto res = isl_union_map_plain_is_injective(get());
17919   return manage(res);
17920 }
17921 
polyhedral_hull()17922 isl::union_map union_map::polyhedral_hull() const
17923 {
17924   auto res = isl_union_map_polyhedral_hull(copy());
17925   return manage(res);
17926 }
17927 
preimage_domain(isl::multi_aff ma)17928 isl::union_map union_map::preimage_domain(isl::multi_aff ma) const
17929 {
17930   auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
17931   return manage(res);
17932 }
17933 
preimage_domain(isl::multi_pw_aff mpa)17934 isl::union_map union_map::preimage_domain(isl::multi_pw_aff mpa) const
17935 {
17936   auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
17937   return manage(res);
17938 }
17939 
preimage_domain(isl::pw_multi_aff pma)17940 isl::union_map union_map::preimage_domain(isl::pw_multi_aff pma) const
17941 {
17942   auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
17943   return manage(res);
17944 }
17945 
preimage_domain(isl::union_pw_multi_aff upma)17946 isl::union_map union_map::preimage_domain(isl::union_pw_multi_aff upma) const
17947 {
17948   auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
17949   return manage(res);
17950 }
17951 
preimage_range(isl::multi_aff ma)17952 isl::union_map union_map::preimage_range(isl::multi_aff ma) const
17953 {
17954   auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
17955   return manage(res);
17956 }
17957 
preimage_range(isl::pw_multi_aff pma)17958 isl::union_map union_map::preimage_range(isl::pw_multi_aff pma) const
17959 {
17960   auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
17961   return manage(res);
17962 }
17963 
preimage_range(isl::union_pw_multi_aff upma)17964 isl::union_map union_map::preimage_range(isl::union_pw_multi_aff upma) const
17965 {
17966   auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
17967   return manage(res);
17968 }
17969 
product(isl::union_map umap2)17970 isl::union_map union_map::product(isl::union_map umap2) const
17971 {
17972   auto res = isl_union_map_product(copy(), umap2.release());
17973   return manage(res);
17974 }
17975 
project_out(isl::dim type,unsigned int first,unsigned int n)17976 isl::union_map union_map::project_out(isl::dim type, unsigned int first, unsigned int n) const
17977 {
17978   auto res = isl_union_map_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
17979   return manage(res);
17980 }
17981 
project_out_all_params()17982 isl::union_map union_map::project_out_all_params() const
17983 {
17984   auto res = isl_union_map_project_out_all_params(copy());
17985   return manage(res);
17986 }
17987 
range()17988 isl::union_set union_map::range() const
17989 {
17990   auto res = isl_union_map_range(copy());
17991   return manage(res);
17992 }
17993 
range_curry()17994 isl::union_map union_map::range_curry() const
17995 {
17996   auto res = isl_union_map_range_curry(copy());
17997   return manage(res);
17998 }
17999 
range_factor_domain()18000 isl::union_map union_map::range_factor_domain() const
18001 {
18002   auto res = isl_union_map_range_factor_domain(copy());
18003   return manage(res);
18004 }
18005 
range_factor_range()18006 isl::union_map union_map::range_factor_range() const
18007 {
18008   auto res = isl_union_map_range_factor_range(copy());
18009   return manage(res);
18010 }
18011 
range_map()18012 isl::union_map union_map::range_map() const
18013 {
18014   auto res = isl_union_map_range_map(copy());
18015   return manage(res);
18016 }
18017 
range_product(isl::union_map umap2)18018 isl::union_map union_map::range_product(isl::union_map umap2) const
18019 {
18020   auto res = isl_union_map_range_product(copy(), umap2.release());
18021   return manage(res);
18022 }
18023 
range_reverse()18024 isl::union_map union_map::range_reverse() const
18025 {
18026   auto res = isl_union_map_range_reverse(copy());
18027   return manage(res);
18028 }
18029 
remove_divs()18030 isl::union_map union_map::remove_divs() const
18031 {
18032   auto res = isl_union_map_remove_divs(copy());
18033   return manage(res);
18034 }
18035 
remove_redundancies()18036 isl::union_map union_map::remove_redundancies() const
18037 {
18038   auto res = isl_union_map_remove_redundancies(copy());
18039   return manage(res);
18040 }
18041 
reset_user()18042 isl::union_map union_map::reset_user() const
18043 {
18044   auto res = isl_union_map_reset_user(copy());
18045   return manage(res);
18046 }
18047 
reverse()18048 isl::union_map union_map::reverse() const
18049 {
18050   auto res = isl_union_map_reverse(copy());
18051   return manage(res);
18052 }
18053 
sample()18054 isl::basic_map union_map::sample() const
18055 {
18056   auto res = isl_union_map_sample(copy());
18057   return manage(res);
18058 }
18059 
simple_hull()18060 isl::union_map union_map::simple_hull() const
18061 {
18062   auto res = isl_union_map_simple_hull(copy());
18063   return manage(res);
18064 }
18065 
subtract(isl::union_map umap2)18066 isl::union_map union_map::subtract(isl::union_map umap2) const
18067 {
18068   auto res = isl_union_map_subtract(copy(), umap2.release());
18069   return manage(res);
18070 }
18071 
subtract_domain(isl::union_set dom)18072 isl::union_map union_map::subtract_domain(isl::union_set dom) const
18073 {
18074   auto res = isl_union_map_subtract_domain(copy(), dom.release());
18075   return manage(res);
18076 }
18077 
subtract_range(isl::union_set dom)18078 isl::union_map union_map::subtract_range(isl::union_set dom) const
18079 {
18080   auto res = isl_union_map_subtract_range(copy(), dom.release());
18081   return manage(res);
18082 }
18083 
uncurry()18084 isl::union_map union_map::uncurry() const
18085 {
18086   auto res = isl_union_map_uncurry(copy());
18087   return manage(res);
18088 }
18089 
unite(isl::union_map umap2)18090 isl::union_map union_map::unite(isl::union_map umap2) const
18091 {
18092   auto res = isl_union_map_union(copy(), umap2.release());
18093   return manage(res);
18094 }
18095 
universe()18096 isl::union_map union_map::universe() const
18097 {
18098   auto res = isl_union_map_universe(copy());
18099   return manage(res);
18100 }
18101 
wrap()18102 isl::union_set union_map::wrap() const
18103 {
18104   auto res = isl_union_map_wrap(copy());
18105   return manage(res);
18106 }
18107 
zip()18108 isl::union_map union_map::zip() const
18109 {
18110   auto res = isl_union_map_zip(copy());
18111   return manage(res);
18112 }
18113 
18114 // implementations for isl::union_map_list
manage(__isl_take isl_union_map_list * ptr)18115 union_map_list manage(__isl_take isl_union_map_list *ptr) {
18116   return union_map_list(ptr);
18117 }
manage_copy(__isl_keep isl_union_map_list * ptr)18118 union_map_list manage_copy(__isl_keep isl_union_map_list *ptr) {
18119   ptr = isl_union_map_list_copy(ptr);
18120   return union_map_list(ptr);
18121 }
18122 
union_map_list()18123 union_map_list::union_map_list()
18124     : ptr(nullptr) {}
18125 
union_map_list(const union_map_list & obj)18126 union_map_list::union_map_list(const union_map_list &obj)
18127     : ptr(nullptr)
18128 {
18129   ptr = obj.copy();
18130 }
18131 
18132 
union_map_list(__isl_take isl_union_map_list * ptr)18133 union_map_list::union_map_list(__isl_take isl_union_map_list *ptr)
18134     : ptr(ptr) {}
18135 
18136 
18137 union_map_list &union_map_list::operator=(union_map_list obj) {
18138   std::swap(this->ptr, obj.ptr);
18139   return *this;
18140 }
18141 
~union_map_list()18142 union_map_list::~union_map_list() {
18143   if (ptr)
18144     isl_union_map_list_free(ptr);
18145 }
18146 
copy()18147 __isl_give isl_union_map_list *union_map_list::copy() const & {
18148   return isl_union_map_list_copy(ptr);
18149 }
18150 
get()18151 __isl_keep isl_union_map_list *union_map_list::get() const {
18152   return ptr;
18153 }
18154 
release()18155 __isl_give isl_union_map_list *union_map_list::release() {
18156   isl_union_map_list *tmp = ptr;
18157   ptr = nullptr;
18158   return tmp;
18159 }
18160 
is_null()18161 bool union_map_list::is_null() const {
18162   return ptr == nullptr;
18163 }
18164 
18165 
ctx()18166 isl::ctx union_map_list::ctx() const {
18167   return isl::ctx(isl_union_map_list_get_ctx(ptr));
18168 }
18169 
dump()18170 void union_map_list::dump() const {
18171   isl_union_map_list_dump(get());
18172 }
18173 
18174 
add(isl::union_map el)18175 isl::union_map_list union_map_list::add(isl::union_map el) const
18176 {
18177   auto res = isl_union_map_list_add(copy(), el.release());
18178   return manage(res);
18179 }
18180 
alloc(isl::ctx ctx,int n)18181 isl::union_map_list union_map_list::alloc(isl::ctx ctx, int n)
18182 {
18183   auto res = isl_union_map_list_alloc(ctx.release(), n);
18184   return manage(res);
18185 }
18186 
clear()18187 isl::union_map_list union_map_list::clear() const
18188 {
18189   auto res = isl_union_map_list_clear(copy());
18190   return manage(res);
18191 }
18192 
concat(isl::union_map_list list2)18193 isl::union_map_list union_map_list::concat(isl::union_map_list list2) const
18194 {
18195   auto res = isl_union_map_list_concat(copy(), list2.release());
18196   return manage(res);
18197 }
18198 
drop(unsigned int first,unsigned int n)18199 isl::union_map_list union_map_list::drop(unsigned int first, unsigned int n) const
18200 {
18201   auto res = isl_union_map_list_drop(copy(), first, n);
18202   return manage(res);
18203 }
18204 
foreach(const std::function<stat (union_map)> & fn)18205 stat union_map_list::foreach(const std::function<stat(union_map)> &fn) const
18206 {
18207   struct fn_data {
18208     const std::function<stat(union_map)> *func;
18209   } fn_data = { &fn };
18210   auto fn_lambda = [](isl_union_map *arg_0, void *arg_1) -> isl_stat {
18211     auto *data = static_cast<struct fn_data *>(arg_1);
18212     stat ret = (*data->func)(manage(arg_0));
18213     return ret.release();
18214   };
18215   auto res = isl_union_map_list_foreach(get(), fn_lambda, &fn_data);
18216   return manage(res);
18217 }
18218 
from_union_map(isl::union_map el)18219 isl::union_map_list union_map_list::from_union_map(isl::union_map el)
18220 {
18221   auto res = isl_union_map_list_from_union_map(el.release());
18222   return manage(res);
18223 }
18224 
get_at(int index)18225 isl::union_map union_map_list::get_at(int index) const
18226 {
18227   auto res = isl_union_map_list_get_at(get(), index);
18228   return manage(res);
18229 }
18230 
get_union_map(int index)18231 isl::union_map union_map_list::get_union_map(int index) const
18232 {
18233   auto res = isl_union_map_list_get_union_map(get(), index);
18234   return manage(res);
18235 }
18236 
insert(unsigned int pos,isl::union_map el)18237 isl::union_map_list union_map_list::insert(unsigned int pos, isl::union_map el) const
18238 {
18239   auto res = isl_union_map_list_insert(copy(), pos, el.release());
18240   return manage(res);
18241 }
18242 
n_union_map()18243 isl_size union_map_list::n_union_map() const
18244 {
18245   auto res = isl_union_map_list_n_union_map(get());
18246   return res;
18247 }
18248 
reverse()18249 isl::union_map_list union_map_list::reverse() const
18250 {
18251   auto res = isl_union_map_list_reverse(copy());
18252   return manage(res);
18253 }
18254 
set_union_map(int index,isl::union_map el)18255 isl::union_map_list union_map_list::set_union_map(int index, isl::union_map el) const
18256 {
18257   auto res = isl_union_map_list_set_union_map(copy(), index, el.release());
18258   return manage(res);
18259 }
18260 
size()18261 isl_size union_map_list::size() const
18262 {
18263   auto res = isl_union_map_list_size(get());
18264   return res;
18265 }
18266 
swap(unsigned int pos1,unsigned int pos2)18267 isl::union_map_list union_map_list::swap(unsigned int pos1, unsigned int pos2) const
18268 {
18269   auto res = isl_union_map_list_swap(copy(), pos1, pos2);
18270   return manage(res);
18271 }
18272 
18273 // implementations for isl::union_pw_aff
manage(__isl_take isl_union_pw_aff * ptr)18274 union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
18275   return union_pw_aff(ptr);
18276 }
manage_copy(__isl_keep isl_union_pw_aff * ptr)18277 union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
18278   ptr = isl_union_pw_aff_copy(ptr);
18279   return union_pw_aff(ptr);
18280 }
18281 
union_pw_aff()18282 union_pw_aff::union_pw_aff()
18283     : ptr(nullptr) {}
18284 
union_pw_aff(const union_pw_aff & obj)18285 union_pw_aff::union_pw_aff(const union_pw_aff &obj)
18286     : ptr(nullptr)
18287 {
18288   ptr = obj.copy();
18289 }
18290 
18291 
union_pw_aff(__isl_take isl_union_pw_aff * ptr)18292 union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
18293     : ptr(ptr) {}
18294 
union_pw_aff(isl::aff aff)18295 union_pw_aff::union_pw_aff(isl::aff aff)
18296 {
18297   auto res = isl_union_pw_aff_from_aff(aff.release());
18298   ptr = res;
18299 }
union_pw_aff(isl::pw_aff pa)18300 union_pw_aff::union_pw_aff(isl::pw_aff pa)
18301 {
18302   auto res = isl_union_pw_aff_from_pw_aff(pa.release());
18303   ptr = res;
18304 }
union_pw_aff(isl::ctx ctx,const std::string & str)18305 union_pw_aff::union_pw_aff(isl::ctx ctx, const std::string &str)
18306 {
18307   auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
18308   ptr = res;
18309 }
union_pw_aff(isl::union_set domain,isl::val v)18310 union_pw_aff::union_pw_aff(isl::union_set domain, isl::val v)
18311 {
18312   auto res = isl_union_pw_aff_val_on_domain(domain.release(), v.release());
18313   ptr = res;
18314 }
18315 
18316 union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
18317   std::swap(this->ptr, obj.ptr);
18318   return *this;
18319 }
18320 
~union_pw_aff()18321 union_pw_aff::~union_pw_aff() {
18322   if (ptr)
18323     isl_union_pw_aff_free(ptr);
18324 }
18325 
copy()18326 __isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
18327   return isl_union_pw_aff_copy(ptr);
18328 }
18329 
get()18330 __isl_keep isl_union_pw_aff *union_pw_aff::get() const {
18331   return ptr;
18332 }
18333 
release()18334 __isl_give isl_union_pw_aff *union_pw_aff::release() {
18335   isl_union_pw_aff *tmp = ptr;
18336   ptr = nullptr;
18337   return tmp;
18338 }
18339 
is_null()18340 bool union_pw_aff::is_null() const {
18341   return ptr == nullptr;
18342 }
18343 
18344 
ctx()18345 isl::ctx union_pw_aff::ctx() const {
18346   return isl::ctx(isl_union_pw_aff_get_ctx(ptr));
18347 }
18348 
dump()18349 void union_pw_aff::dump() const {
18350   isl_union_pw_aff_dump(get());
18351 }
18352 
18353 
add(isl::union_pw_aff upa2)18354 isl::union_pw_aff union_pw_aff::add(isl::union_pw_aff upa2) const
18355 {
18356   auto res = isl_union_pw_aff_add(copy(), upa2.release());
18357   return manage(res);
18358 }
18359 
add_pw_aff(isl::pw_aff pa)18360 isl::union_pw_aff union_pw_aff::add_pw_aff(isl::pw_aff pa) const
18361 {
18362   auto res = isl_union_pw_aff_add_pw_aff(copy(), pa.release());
18363   return manage(res);
18364 }
18365 
aff_on_domain(isl::union_set domain,isl::aff aff)18366 isl::union_pw_aff union_pw_aff::aff_on_domain(isl::union_set domain, isl::aff aff)
18367 {
18368   auto res = isl_union_pw_aff_aff_on_domain(domain.release(), aff.release());
18369   return manage(res);
18370 }
18371 
align_params(isl::space model)18372 isl::union_pw_aff union_pw_aff::align_params(isl::space model) const
18373 {
18374   auto res = isl_union_pw_aff_align_params(copy(), model.release());
18375   return manage(res);
18376 }
18377 
bind(isl::id id)18378 isl::union_set union_pw_aff::bind(isl::id id) const
18379 {
18380   auto res = isl_union_pw_aff_bind_id(copy(), id.release());
18381   return manage(res);
18382 }
18383 
coalesce()18384 isl::union_pw_aff union_pw_aff::coalesce() const
18385 {
18386   auto res = isl_union_pw_aff_coalesce(copy());
18387   return manage(res);
18388 }
18389 
dim(isl::dim type)18390 isl_size union_pw_aff::dim(isl::dim type) const
18391 {
18392   auto res = isl_union_pw_aff_dim(get(), static_cast<enum isl_dim_type>(type));
18393   return res;
18394 }
18395 
domain()18396 isl::union_set union_pw_aff::domain() const
18397 {
18398   auto res = isl_union_pw_aff_domain(copy());
18399   return manage(res);
18400 }
18401 
drop_dims(isl::dim type,unsigned int first,unsigned int n)18402 isl::union_pw_aff union_pw_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
18403 {
18404   auto res = isl_union_pw_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
18405   return manage(res);
18406 }
18407 
empty(isl::space space)18408 isl::union_pw_aff union_pw_aff::empty(isl::space space)
18409 {
18410   auto res = isl_union_pw_aff_empty(space.release());
18411   return manage(res);
18412 }
18413 
empty_ctx(isl::ctx ctx)18414 isl::union_pw_aff union_pw_aff::empty_ctx(isl::ctx ctx)
18415 {
18416   auto res = isl_union_pw_aff_empty_ctx(ctx.release());
18417   return manage(res);
18418 }
18419 
empty_space(isl::space space)18420 isl::union_pw_aff union_pw_aff::empty_space(isl::space space)
18421 {
18422   auto res = isl_union_pw_aff_empty_space(space.release());
18423   return manage(res);
18424 }
18425 
extract_pw_aff(isl::space space)18426 isl::pw_aff union_pw_aff::extract_pw_aff(isl::space space) const
18427 {
18428   auto res = isl_union_pw_aff_extract_pw_aff(get(), space.release());
18429   return manage(res);
18430 }
18431 
find_dim_by_name(isl::dim type,const std::string & name)18432 int union_pw_aff::find_dim_by_name(isl::dim type, const std::string &name) const
18433 {
18434   auto res = isl_union_pw_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
18435   return res;
18436 }
18437 
floor()18438 isl::union_pw_aff union_pw_aff::floor() const
18439 {
18440   auto res = isl_union_pw_aff_floor(copy());
18441   return manage(res);
18442 }
18443 
foreach_pw_aff(const std::function<stat (pw_aff)> & fn)18444 stat union_pw_aff::foreach_pw_aff(const std::function<stat(pw_aff)> &fn) const
18445 {
18446   struct fn_data {
18447     const std::function<stat(pw_aff)> *func;
18448   } fn_data = { &fn };
18449   auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
18450     auto *data = static_cast<struct fn_data *>(arg_1);
18451     stat ret = (*data->func)(manage(arg_0));
18452     return ret.release();
18453   };
18454   auto res = isl_union_pw_aff_foreach_pw_aff(get(), fn_lambda, &fn_data);
18455   return manage(res);
18456 }
18457 
get_pw_aff_list()18458 isl::pw_aff_list union_pw_aff::get_pw_aff_list() const
18459 {
18460   auto res = isl_union_pw_aff_get_pw_aff_list(get());
18461   return manage(res);
18462 }
18463 
get_space()18464 isl::space union_pw_aff::get_space() const
18465 {
18466   auto res = isl_union_pw_aff_get_space(get());
18467   return manage(res);
18468 }
18469 
gist(isl::union_set context)18470 isl::union_pw_aff union_pw_aff::gist(isl::union_set context) const
18471 {
18472   auto res = isl_union_pw_aff_gist(copy(), context.release());
18473   return manage(res);
18474 }
18475 
gist_params(isl::set context)18476 isl::union_pw_aff union_pw_aff::gist_params(isl::set context) const
18477 {
18478   auto res = isl_union_pw_aff_gist_params(copy(), context.release());
18479   return manage(res);
18480 }
18481 
intersect_domain(isl::space space)18482 isl::union_pw_aff union_pw_aff::intersect_domain(isl::space space) const
18483 {
18484   auto res = isl_union_pw_aff_intersect_domain_space(copy(), space.release());
18485   return manage(res);
18486 }
18487 
intersect_domain(isl::union_set uset)18488 isl::union_pw_aff union_pw_aff::intersect_domain(isl::union_set uset) const
18489 {
18490   auto res = isl_union_pw_aff_intersect_domain_union_set(copy(), uset.release());
18491   return manage(res);
18492 }
18493 
intersect_domain_wrapped_domain(isl::union_set uset)18494 isl::union_pw_aff union_pw_aff::intersect_domain_wrapped_domain(isl::union_set uset) const
18495 {
18496   auto res = isl_union_pw_aff_intersect_domain_wrapped_domain(copy(), uset.release());
18497   return manage(res);
18498 }
18499 
intersect_domain_wrapped_range(isl::union_set uset)18500 isl::union_pw_aff union_pw_aff::intersect_domain_wrapped_range(isl::union_set uset) const
18501 {
18502   auto res = isl_union_pw_aff_intersect_domain_wrapped_range(copy(), uset.release());
18503   return manage(res);
18504 }
18505 
intersect_params(isl::set set)18506 isl::union_pw_aff union_pw_aff::intersect_params(isl::set set) const
18507 {
18508   auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
18509   return manage(res);
18510 }
18511 
involves_nan()18512 boolean union_pw_aff::involves_nan() const
18513 {
18514   auto res = isl_union_pw_aff_involves_nan(get());
18515   return manage(res);
18516 }
18517 
max_val()18518 isl::val union_pw_aff::max_val() const
18519 {
18520   auto res = isl_union_pw_aff_max_val(copy());
18521   return manage(res);
18522 }
18523 
min_val()18524 isl::val union_pw_aff::min_val() const
18525 {
18526   auto res = isl_union_pw_aff_min_val(copy());
18527   return manage(res);
18528 }
18529 
mod_val(isl::val f)18530 isl::union_pw_aff union_pw_aff::mod_val(isl::val f) const
18531 {
18532   auto res = isl_union_pw_aff_mod_val(copy(), f.release());
18533   return manage(res);
18534 }
18535 
n_pw_aff()18536 isl_size union_pw_aff::n_pw_aff() const
18537 {
18538   auto res = isl_union_pw_aff_n_pw_aff(get());
18539   return res;
18540 }
18541 
neg()18542 isl::union_pw_aff union_pw_aff::neg() const
18543 {
18544   auto res = isl_union_pw_aff_neg(copy());
18545   return manage(res);
18546 }
18547 
param_on_domain_id(isl::union_set domain,isl::id id)18548 isl::union_pw_aff union_pw_aff::param_on_domain_id(isl::union_set domain, isl::id id)
18549 {
18550   auto res = isl_union_pw_aff_param_on_domain_id(domain.release(), id.release());
18551   return manage(res);
18552 }
18553 
plain_is_equal(const isl::union_pw_aff & upa2)18554 boolean union_pw_aff::plain_is_equal(const isl::union_pw_aff &upa2) const
18555 {
18556   auto res = isl_union_pw_aff_plain_is_equal(get(), upa2.get());
18557   return manage(res);
18558 }
18559 
pullback(isl::union_pw_multi_aff upma)18560 isl::union_pw_aff union_pw_aff::pullback(isl::union_pw_multi_aff upma) const
18561 {
18562   auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
18563   return manage(res);
18564 }
18565 
pw_aff_on_domain(isl::union_set domain,isl::pw_aff pa)18566 isl::union_pw_aff union_pw_aff::pw_aff_on_domain(isl::union_set domain, isl::pw_aff pa)
18567 {
18568   auto res = isl_union_pw_aff_pw_aff_on_domain(domain.release(), pa.release());
18569   return manage(res);
18570 }
18571 
reset_user()18572 isl::union_pw_aff union_pw_aff::reset_user() const
18573 {
18574   auto res = isl_union_pw_aff_reset_user(copy());
18575   return manage(res);
18576 }
18577 
scale_down_val(isl::val v)18578 isl::union_pw_aff union_pw_aff::scale_down_val(isl::val v) const
18579 {
18580   auto res = isl_union_pw_aff_scale_down_val(copy(), v.release());
18581   return manage(res);
18582 }
18583 
scale_val(isl::val v)18584 isl::union_pw_aff union_pw_aff::scale_val(isl::val v) const
18585 {
18586   auto res = isl_union_pw_aff_scale_val(copy(), v.release());
18587   return manage(res);
18588 }
18589 
sub(isl::union_pw_aff upa2)18590 isl::union_pw_aff union_pw_aff::sub(isl::union_pw_aff upa2) const
18591 {
18592   auto res = isl_union_pw_aff_sub(copy(), upa2.release());
18593   return manage(res);
18594 }
18595 
subtract_domain(isl::space space)18596 isl::union_pw_aff union_pw_aff::subtract_domain(isl::space space) const
18597 {
18598   auto res = isl_union_pw_aff_subtract_domain_space(copy(), space.release());
18599   return manage(res);
18600 }
18601 
subtract_domain(isl::union_set uset)18602 isl::union_pw_aff union_pw_aff::subtract_domain(isl::union_set uset) const
18603 {
18604   auto res = isl_union_pw_aff_subtract_domain_union_set(copy(), uset.release());
18605   return manage(res);
18606 }
18607 
union_add(isl::union_pw_aff upa2)18608 isl::union_pw_aff union_pw_aff::union_add(isl::union_pw_aff upa2) const
18609 {
18610   auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
18611   return manage(res);
18612 }
18613 
zero_union_set()18614 isl::union_set union_pw_aff::zero_union_set() const
18615 {
18616   auto res = isl_union_pw_aff_zero_union_set(copy());
18617   return manage(res);
18618 }
18619 
18620 // implementations for isl::union_pw_aff_list
manage(__isl_take isl_union_pw_aff_list * ptr)18621 union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
18622   return union_pw_aff_list(ptr);
18623 }
manage_copy(__isl_keep isl_union_pw_aff_list * ptr)18624 union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
18625   ptr = isl_union_pw_aff_list_copy(ptr);
18626   return union_pw_aff_list(ptr);
18627 }
18628 
union_pw_aff_list()18629 union_pw_aff_list::union_pw_aff_list()
18630     : ptr(nullptr) {}
18631 
union_pw_aff_list(const union_pw_aff_list & obj)18632 union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
18633     : ptr(nullptr)
18634 {
18635   ptr = obj.copy();
18636 }
18637 
18638 
union_pw_aff_list(__isl_take isl_union_pw_aff_list * ptr)18639 union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
18640     : ptr(ptr) {}
18641 
18642 
18643 union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
18644   std::swap(this->ptr, obj.ptr);
18645   return *this;
18646 }
18647 
~union_pw_aff_list()18648 union_pw_aff_list::~union_pw_aff_list() {
18649   if (ptr)
18650     isl_union_pw_aff_list_free(ptr);
18651 }
18652 
copy()18653 __isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
18654   return isl_union_pw_aff_list_copy(ptr);
18655 }
18656 
get()18657 __isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
18658   return ptr;
18659 }
18660 
release()18661 __isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
18662   isl_union_pw_aff_list *tmp = ptr;
18663   ptr = nullptr;
18664   return tmp;
18665 }
18666 
is_null()18667 bool union_pw_aff_list::is_null() const {
18668   return ptr == nullptr;
18669 }
18670 
18671 
ctx()18672 isl::ctx union_pw_aff_list::ctx() const {
18673   return isl::ctx(isl_union_pw_aff_list_get_ctx(ptr));
18674 }
18675 
dump()18676 void union_pw_aff_list::dump() const {
18677   isl_union_pw_aff_list_dump(get());
18678 }
18679 
18680 
add(isl::union_pw_aff el)18681 isl::union_pw_aff_list union_pw_aff_list::add(isl::union_pw_aff el) const
18682 {
18683   auto res = isl_union_pw_aff_list_add(copy(), el.release());
18684   return manage(res);
18685 }
18686 
alloc(isl::ctx ctx,int n)18687 isl::union_pw_aff_list union_pw_aff_list::alloc(isl::ctx ctx, int n)
18688 {
18689   auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
18690   return manage(res);
18691 }
18692 
clear()18693 isl::union_pw_aff_list union_pw_aff_list::clear() const
18694 {
18695   auto res = isl_union_pw_aff_list_clear(copy());
18696   return manage(res);
18697 }
18698 
concat(isl::union_pw_aff_list list2)18699 isl::union_pw_aff_list union_pw_aff_list::concat(isl::union_pw_aff_list list2) const
18700 {
18701   auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
18702   return manage(res);
18703 }
18704 
drop(unsigned int first,unsigned int n)18705 isl::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
18706 {
18707   auto res = isl_union_pw_aff_list_drop(copy(), first, n);
18708   return manage(res);
18709 }
18710 
foreach(const std::function<stat (union_pw_aff)> & fn)18711 stat union_pw_aff_list::foreach(const std::function<stat(union_pw_aff)> &fn) const
18712 {
18713   struct fn_data {
18714     const std::function<stat(union_pw_aff)> *func;
18715   } fn_data = { &fn };
18716   auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
18717     auto *data = static_cast<struct fn_data *>(arg_1);
18718     stat ret = (*data->func)(manage(arg_0));
18719     return ret.release();
18720   };
18721   auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
18722   return manage(res);
18723 }
18724 
from_union_pw_aff(isl::union_pw_aff el)18725 isl::union_pw_aff_list union_pw_aff_list::from_union_pw_aff(isl::union_pw_aff el)
18726 {
18727   auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
18728   return manage(res);
18729 }
18730 
get_at(int index)18731 isl::union_pw_aff union_pw_aff_list::get_at(int index) const
18732 {
18733   auto res = isl_union_pw_aff_list_get_at(get(), index);
18734   return manage(res);
18735 }
18736 
get_union_pw_aff(int index)18737 isl::union_pw_aff union_pw_aff_list::get_union_pw_aff(int index) const
18738 {
18739   auto res = isl_union_pw_aff_list_get_union_pw_aff(get(), index);
18740   return manage(res);
18741 }
18742 
insert(unsigned int pos,isl::union_pw_aff el)18743 isl::union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, isl::union_pw_aff el) const
18744 {
18745   auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
18746   return manage(res);
18747 }
18748 
n_union_pw_aff()18749 isl_size union_pw_aff_list::n_union_pw_aff() const
18750 {
18751   auto res = isl_union_pw_aff_list_n_union_pw_aff(get());
18752   return res;
18753 }
18754 
reverse()18755 isl::union_pw_aff_list union_pw_aff_list::reverse() const
18756 {
18757   auto res = isl_union_pw_aff_list_reverse(copy());
18758   return manage(res);
18759 }
18760 
set_union_pw_aff(int index,isl::union_pw_aff el)18761 isl::union_pw_aff_list union_pw_aff_list::set_union_pw_aff(int index, isl::union_pw_aff el) const
18762 {
18763   auto res = isl_union_pw_aff_list_set_union_pw_aff(copy(), index, el.release());
18764   return manage(res);
18765 }
18766 
size()18767 isl_size union_pw_aff_list::size() const
18768 {
18769   auto res = isl_union_pw_aff_list_size(get());
18770   return res;
18771 }
18772 
swap(unsigned int pos1,unsigned int pos2)18773 isl::union_pw_aff_list union_pw_aff_list::swap(unsigned int pos1, unsigned int pos2) const
18774 {
18775   auto res = isl_union_pw_aff_list_swap(copy(), pos1, pos2);
18776   return manage(res);
18777 }
18778 
18779 // implementations for isl::union_pw_multi_aff
manage(__isl_take isl_union_pw_multi_aff * ptr)18780 union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
18781   return union_pw_multi_aff(ptr);
18782 }
manage_copy(__isl_keep isl_union_pw_multi_aff * ptr)18783 union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
18784   ptr = isl_union_pw_multi_aff_copy(ptr);
18785   return union_pw_multi_aff(ptr);
18786 }
18787 
union_pw_multi_aff()18788 union_pw_multi_aff::union_pw_multi_aff()
18789     : ptr(nullptr) {}
18790 
union_pw_multi_aff(const union_pw_multi_aff & obj)18791 union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
18792     : ptr(nullptr)
18793 {
18794   ptr = obj.copy();
18795 }
18796 
18797 
union_pw_multi_aff(__isl_take isl_union_pw_multi_aff * ptr)18798 union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
18799     : ptr(ptr) {}
18800 
union_pw_multi_aff(isl::aff aff)18801 union_pw_multi_aff::union_pw_multi_aff(isl::aff aff)
18802 {
18803   auto res = isl_union_pw_multi_aff_from_aff(aff.release());
18804   ptr = res;
18805 }
union_pw_multi_aff(isl::union_set uset)18806 union_pw_multi_aff::union_pw_multi_aff(isl::union_set uset)
18807 {
18808   auto res = isl_union_pw_multi_aff_from_domain(uset.release());
18809   ptr = res;
18810 }
union_pw_multi_aff(isl::multi_aff ma)18811 union_pw_multi_aff::union_pw_multi_aff(isl::multi_aff ma)
18812 {
18813   auto res = isl_union_pw_multi_aff_from_multi_aff(ma.release());
18814   ptr = res;
18815 }
union_pw_multi_aff(isl::multi_union_pw_aff mupa)18816 union_pw_multi_aff::union_pw_multi_aff(isl::multi_union_pw_aff mupa)
18817 {
18818   auto res = isl_union_pw_multi_aff_from_multi_union_pw_aff(mupa.release());
18819   ptr = res;
18820 }
union_pw_multi_aff(isl::pw_multi_aff pma)18821 union_pw_multi_aff::union_pw_multi_aff(isl::pw_multi_aff pma)
18822 {
18823   auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
18824   ptr = res;
18825 }
union_pw_multi_aff(isl::union_map umap)18826 union_pw_multi_aff::union_pw_multi_aff(isl::union_map umap)
18827 {
18828   auto res = isl_union_pw_multi_aff_from_union_map(umap.release());
18829   ptr = res;
18830 }
union_pw_multi_aff(isl::union_pw_aff upa)18831 union_pw_multi_aff::union_pw_multi_aff(isl::union_pw_aff upa)
18832 {
18833   auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
18834   ptr = res;
18835 }
union_pw_multi_aff(isl::ctx ctx,const std::string & str)18836 union_pw_multi_aff::union_pw_multi_aff(isl::ctx ctx, const std::string &str)
18837 {
18838   auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
18839   ptr = res;
18840 }
18841 
18842 union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
18843   std::swap(this->ptr, obj.ptr);
18844   return *this;
18845 }
18846 
~union_pw_multi_aff()18847 union_pw_multi_aff::~union_pw_multi_aff() {
18848   if (ptr)
18849     isl_union_pw_multi_aff_free(ptr);
18850 }
18851 
copy()18852 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
18853   return isl_union_pw_multi_aff_copy(ptr);
18854 }
18855 
get()18856 __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
18857   return ptr;
18858 }
18859 
release()18860 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
18861   isl_union_pw_multi_aff *tmp = ptr;
18862   ptr = nullptr;
18863   return tmp;
18864 }
18865 
is_null()18866 bool union_pw_multi_aff::is_null() const {
18867   return ptr == nullptr;
18868 }
18869 
18870 
ctx()18871 isl::ctx union_pw_multi_aff::ctx() const {
18872   return isl::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
18873 }
18874 
dump()18875 void union_pw_multi_aff::dump() const {
18876   isl_union_pw_multi_aff_dump(get());
18877 }
18878 
18879 
add(isl::union_pw_multi_aff upma2)18880 isl::union_pw_multi_aff union_pw_multi_aff::add(isl::union_pw_multi_aff upma2) const
18881 {
18882   auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
18883   return manage(res);
18884 }
18885 
add_pw_multi_aff(isl::pw_multi_aff pma)18886 isl::union_pw_multi_aff union_pw_multi_aff::add_pw_multi_aff(isl::pw_multi_aff pma) const
18887 {
18888   auto res = isl_union_pw_multi_aff_add_pw_multi_aff(copy(), pma.release());
18889   return manage(res);
18890 }
18891 
align_params(isl::space model)18892 isl::union_pw_multi_aff union_pw_multi_aff::align_params(isl::space model) const
18893 {
18894   auto res = isl_union_pw_multi_aff_align_params(copy(), model.release());
18895   return manage(res);
18896 }
18897 
apply(isl::union_pw_multi_aff upma2)18898 isl::union_pw_multi_aff union_pw_multi_aff::apply(isl::union_pw_multi_aff upma2) const
18899 {
18900   auto res = isl_union_pw_multi_aff_apply_union_pw_multi_aff(copy(), upma2.release());
18901   return manage(res);
18902 }
18903 
as_pw_multi_aff()18904 isl::pw_multi_aff union_pw_multi_aff::as_pw_multi_aff() const
18905 {
18906   auto res = isl_union_pw_multi_aff_as_pw_multi_aff(copy());
18907   return manage(res);
18908 }
18909 
coalesce()18910 isl::union_pw_multi_aff union_pw_multi_aff::coalesce() const
18911 {
18912   auto res = isl_union_pw_multi_aff_coalesce(copy());
18913   return manage(res);
18914 }
18915 
dim(isl::dim type)18916 isl_size union_pw_multi_aff::dim(isl::dim type) const
18917 {
18918   auto res = isl_union_pw_multi_aff_dim(get(), static_cast<enum isl_dim_type>(type));
18919   return res;
18920 }
18921 
domain()18922 isl::union_set union_pw_multi_aff::domain() const
18923 {
18924   auto res = isl_union_pw_multi_aff_domain(copy());
18925   return manage(res);
18926 }
18927 
drop_dims(isl::dim type,unsigned int first,unsigned int n)18928 isl::union_pw_multi_aff union_pw_multi_aff::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
18929 {
18930   auto res = isl_union_pw_multi_aff_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
18931   return manage(res);
18932 }
18933 
empty(isl::space space)18934 isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::space space)
18935 {
18936   auto res = isl_union_pw_multi_aff_empty(space.release());
18937   return manage(res);
18938 }
18939 
empty(isl::ctx ctx)18940 isl::union_pw_multi_aff union_pw_multi_aff::empty(isl::ctx ctx)
18941 {
18942   auto res = isl_union_pw_multi_aff_empty_ctx(ctx.release());
18943   return manage(res);
18944 }
18945 
empty_space(isl::space space)18946 isl::union_pw_multi_aff union_pw_multi_aff::empty_space(isl::space space)
18947 {
18948   auto res = isl_union_pw_multi_aff_empty_space(space.release());
18949   return manage(res);
18950 }
18951 
extract_pw_multi_aff(isl::space space)18952 isl::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::space space) const
18953 {
18954   auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
18955   return manage(res);
18956 }
18957 
find_dim_by_name(isl::dim type,const std::string & name)18958 int union_pw_multi_aff::find_dim_by_name(isl::dim type, const std::string &name) const
18959 {
18960   auto res = isl_union_pw_multi_aff_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
18961   return res;
18962 }
18963 
flat_range_product(isl::union_pw_multi_aff upma2)18964 isl::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::union_pw_multi_aff upma2) const
18965 {
18966   auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
18967   return manage(res);
18968 }
18969 
foreach_pw_multi_aff(const std::function<stat (pw_multi_aff)> & fn)18970 stat union_pw_multi_aff::foreach_pw_multi_aff(const std::function<stat(pw_multi_aff)> &fn) const
18971 {
18972   struct fn_data {
18973     const std::function<stat(pw_multi_aff)> *func;
18974   } fn_data = { &fn };
18975   auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
18976     auto *data = static_cast<struct fn_data *>(arg_1);
18977     stat ret = (*data->func)(manage(arg_0));
18978     return ret.release();
18979   };
18980   auto res = isl_union_pw_multi_aff_foreach_pw_multi_aff(get(), fn_lambda, &fn_data);
18981   return manage(res);
18982 }
18983 
from_union_set(isl::union_set uset)18984 isl::union_pw_multi_aff union_pw_multi_aff::from_union_set(isl::union_set uset)
18985 {
18986   auto res = isl_union_pw_multi_aff_from_union_set(uset.release());
18987   return manage(res);
18988 }
18989 
get_pw_multi_aff_list()18990 isl::pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
18991 {
18992   auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
18993   return manage(res);
18994 }
18995 
get_space()18996 isl::space union_pw_multi_aff::get_space() const
18997 {
18998   auto res = isl_union_pw_multi_aff_get_space(get());
18999   return manage(res);
19000 }
19001 
get_union_pw_aff(int pos)19002 isl::union_pw_aff union_pw_multi_aff::get_union_pw_aff(int pos) const
19003 {
19004   auto res = isl_union_pw_multi_aff_get_union_pw_aff(get(), pos);
19005   return manage(res);
19006 }
19007 
gist(isl::union_set context)19008 isl::union_pw_multi_aff union_pw_multi_aff::gist(isl::union_set context) const
19009 {
19010   auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
19011   return manage(res);
19012 }
19013 
gist_params(isl::set context)19014 isl::union_pw_multi_aff union_pw_multi_aff::gist_params(isl::set context) const
19015 {
19016   auto res = isl_union_pw_multi_aff_gist_params(copy(), context.release());
19017   return manage(res);
19018 }
19019 
intersect_domain(isl::space space)19020 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::space space) const
19021 {
19022   auto res = isl_union_pw_multi_aff_intersect_domain_space(copy(), space.release());
19023   return manage(res);
19024 }
19025 
intersect_domain(isl::union_set uset)19026 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::union_set uset) const
19027 {
19028   auto res = isl_union_pw_multi_aff_intersect_domain_union_set(copy(), uset.release());
19029   return manage(res);
19030 }
19031 
intersect_domain_wrapped_domain(isl::union_set uset)19032 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_domain(isl::union_set uset) const
19033 {
19034   auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_domain(copy(), uset.release());
19035   return manage(res);
19036 }
19037 
intersect_domain_wrapped_range(isl::union_set uset)19038 isl::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_range(isl::union_set uset) const
19039 {
19040   auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_range(copy(), uset.release());
19041   return manage(res);
19042 }
19043 
intersect_params(isl::set set)19044 isl::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::set set) const
19045 {
19046   auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
19047   return manage(res);
19048 }
19049 
involves_locals()19050 boolean union_pw_multi_aff::involves_locals() const
19051 {
19052   auto res = isl_union_pw_multi_aff_involves_locals(get());
19053   return manage(res);
19054 }
19055 
involves_nan()19056 boolean union_pw_multi_aff::involves_nan() const
19057 {
19058   auto res = isl_union_pw_multi_aff_involves_nan(get());
19059   return manage(res);
19060 }
19061 
isa_pw_multi_aff()19062 boolean union_pw_multi_aff::isa_pw_multi_aff() const
19063 {
19064   auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(get());
19065   return manage(res);
19066 }
19067 
multi_val_on_domain(isl::union_set domain,isl::multi_val mv)19068 isl::union_pw_multi_aff union_pw_multi_aff::multi_val_on_domain(isl::union_set domain, isl::multi_val mv)
19069 {
19070   auto res = isl_union_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
19071   return manage(res);
19072 }
19073 
n_pw_multi_aff()19074 isl_size union_pw_multi_aff::n_pw_multi_aff() const
19075 {
19076   auto res = isl_union_pw_multi_aff_n_pw_multi_aff(get());
19077   return res;
19078 }
19079 
neg()19080 isl::union_pw_multi_aff union_pw_multi_aff::neg() const
19081 {
19082   auto res = isl_union_pw_multi_aff_neg(copy());
19083   return manage(res);
19084 }
19085 
plain_is_empty()19086 boolean union_pw_multi_aff::plain_is_empty() const
19087 {
19088   auto res = isl_union_pw_multi_aff_plain_is_empty(get());
19089   return manage(res);
19090 }
19091 
plain_is_equal(const isl::union_pw_multi_aff & upma2)19092 boolean union_pw_multi_aff::plain_is_equal(const isl::union_pw_multi_aff &upma2) const
19093 {
19094   auto res = isl_union_pw_multi_aff_plain_is_equal(get(), upma2.get());
19095   return manage(res);
19096 }
19097 
preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2)19098 isl::union_pw_multi_aff union_pw_multi_aff::preimage_domain_wrapped_domain(isl::union_pw_multi_aff upma2) const
19099 {
19100   auto res = isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(copy(), upma2.release());
19101   return manage(res);
19102 }
19103 
pullback(isl::union_pw_multi_aff upma2)19104 isl::union_pw_multi_aff union_pw_multi_aff::pullback(isl::union_pw_multi_aff upma2) const
19105 {
19106   auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
19107   return manage(res);
19108 }
19109 
range_factor_domain()19110 isl::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
19111 {
19112   auto res = isl_union_pw_multi_aff_range_factor_domain(copy());
19113   return manage(res);
19114 }
19115 
range_factor_range()19116 isl::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
19117 {
19118   auto res = isl_union_pw_multi_aff_range_factor_range(copy());
19119   return manage(res);
19120 }
19121 
range_product(isl::union_pw_multi_aff upma2)19122 isl::union_pw_multi_aff union_pw_multi_aff::range_product(isl::union_pw_multi_aff upma2) const
19123 {
19124   auto res = isl_union_pw_multi_aff_range_product(copy(), upma2.release());
19125   return manage(res);
19126 }
19127 
reset_user()19128 isl::union_pw_multi_aff union_pw_multi_aff::reset_user() const
19129 {
19130   auto res = isl_union_pw_multi_aff_reset_user(copy());
19131   return manage(res);
19132 }
19133 
scale_down_val(isl::val val)19134 isl::union_pw_multi_aff union_pw_multi_aff::scale_down_val(isl::val val) const
19135 {
19136   auto res = isl_union_pw_multi_aff_scale_down_val(copy(), val.release());
19137   return manage(res);
19138 }
19139 
scale_multi_val(isl::multi_val mv)19140 isl::union_pw_multi_aff union_pw_multi_aff::scale_multi_val(isl::multi_val mv) const
19141 {
19142   auto res = isl_union_pw_multi_aff_scale_multi_val(copy(), mv.release());
19143   return manage(res);
19144 }
19145 
scale_val(isl::val val)19146 isl::union_pw_multi_aff union_pw_multi_aff::scale_val(isl::val val) const
19147 {
19148   auto res = isl_union_pw_multi_aff_scale_val(copy(), val.release());
19149   return manage(res);
19150 }
19151 
sub(isl::union_pw_multi_aff upma2)19152 isl::union_pw_multi_aff union_pw_multi_aff::sub(isl::union_pw_multi_aff upma2) const
19153 {
19154   auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
19155   return manage(res);
19156 }
19157 
subtract_domain(isl::space space)19158 isl::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::space space) const
19159 {
19160   auto res = isl_union_pw_multi_aff_subtract_domain_space(copy(), space.release());
19161   return manage(res);
19162 }
19163 
subtract_domain(isl::union_set uset)19164 isl::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::union_set uset) const
19165 {
19166   auto res = isl_union_pw_multi_aff_subtract_domain_union_set(copy(), uset.release());
19167   return manage(res);
19168 }
19169 
union_add(isl::union_pw_multi_aff upma2)19170 isl::union_pw_multi_aff union_pw_multi_aff::union_add(isl::union_pw_multi_aff upma2) const
19171 {
19172   auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
19173   return manage(res);
19174 }
19175 
19176 // implementations for isl::union_pw_multi_aff_list
manage(__isl_take isl_union_pw_multi_aff_list * ptr)19177 union_pw_multi_aff_list manage(__isl_take isl_union_pw_multi_aff_list *ptr) {
19178   return union_pw_multi_aff_list(ptr);
19179 }
manage_copy(__isl_keep isl_union_pw_multi_aff_list * ptr)19180 union_pw_multi_aff_list manage_copy(__isl_keep isl_union_pw_multi_aff_list *ptr) {
19181   ptr = isl_union_pw_multi_aff_list_copy(ptr);
19182   return union_pw_multi_aff_list(ptr);
19183 }
19184 
union_pw_multi_aff_list()19185 union_pw_multi_aff_list::union_pw_multi_aff_list()
19186     : ptr(nullptr) {}
19187 
union_pw_multi_aff_list(const union_pw_multi_aff_list & obj)19188 union_pw_multi_aff_list::union_pw_multi_aff_list(const union_pw_multi_aff_list &obj)
19189     : ptr(nullptr)
19190 {
19191   ptr = obj.copy();
19192 }
19193 
19194 
union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list * ptr)19195 union_pw_multi_aff_list::union_pw_multi_aff_list(__isl_take isl_union_pw_multi_aff_list *ptr)
19196     : ptr(ptr) {}
19197 
19198 
19199 union_pw_multi_aff_list &union_pw_multi_aff_list::operator=(union_pw_multi_aff_list obj) {
19200   std::swap(this->ptr, obj.ptr);
19201   return *this;
19202 }
19203 
~union_pw_multi_aff_list()19204 union_pw_multi_aff_list::~union_pw_multi_aff_list() {
19205   if (ptr)
19206     isl_union_pw_multi_aff_list_free(ptr);
19207 }
19208 
copy()19209 __isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::copy() const & {
19210   return isl_union_pw_multi_aff_list_copy(ptr);
19211 }
19212 
get()19213 __isl_keep isl_union_pw_multi_aff_list *union_pw_multi_aff_list::get() const {
19214   return ptr;
19215 }
19216 
release()19217 __isl_give isl_union_pw_multi_aff_list *union_pw_multi_aff_list::release() {
19218   isl_union_pw_multi_aff_list *tmp = ptr;
19219   ptr = nullptr;
19220   return tmp;
19221 }
19222 
is_null()19223 bool union_pw_multi_aff_list::is_null() const {
19224   return ptr == nullptr;
19225 }
19226 
19227 
ctx()19228 isl::ctx union_pw_multi_aff_list::ctx() const {
19229   return isl::ctx(isl_union_pw_multi_aff_list_get_ctx(ptr));
19230 }
19231 
dump()19232 void union_pw_multi_aff_list::dump() const {
19233   isl_union_pw_multi_aff_list_dump(get());
19234 }
19235 
19236 
add(isl::union_pw_multi_aff el)19237 isl::union_pw_multi_aff_list union_pw_multi_aff_list::add(isl::union_pw_multi_aff el) const
19238 {
19239   auto res = isl_union_pw_multi_aff_list_add(copy(), el.release());
19240   return manage(res);
19241 }
19242 
alloc(isl::ctx ctx,int n)19243 isl::union_pw_multi_aff_list union_pw_multi_aff_list::alloc(isl::ctx ctx, int n)
19244 {
19245   auto res = isl_union_pw_multi_aff_list_alloc(ctx.release(), n);
19246   return manage(res);
19247 }
19248 
clear()19249 isl::union_pw_multi_aff_list union_pw_multi_aff_list::clear() const
19250 {
19251   auto res = isl_union_pw_multi_aff_list_clear(copy());
19252   return manage(res);
19253 }
19254 
concat(isl::union_pw_multi_aff_list list2)19255 isl::union_pw_multi_aff_list union_pw_multi_aff_list::concat(isl::union_pw_multi_aff_list list2) const
19256 {
19257   auto res = isl_union_pw_multi_aff_list_concat(copy(), list2.release());
19258   return manage(res);
19259 }
19260 
drop(unsigned int first,unsigned int n)19261 isl::union_pw_multi_aff_list union_pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
19262 {
19263   auto res = isl_union_pw_multi_aff_list_drop(copy(), first, n);
19264   return manage(res);
19265 }
19266 
foreach(const std::function<stat (union_pw_multi_aff)> & fn)19267 stat union_pw_multi_aff_list::foreach(const std::function<stat(union_pw_multi_aff)> &fn) const
19268 {
19269   struct fn_data {
19270     const std::function<stat(union_pw_multi_aff)> *func;
19271   } fn_data = { &fn };
19272   auto fn_lambda = [](isl_union_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
19273     auto *data = static_cast<struct fn_data *>(arg_1);
19274     stat ret = (*data->func)(manage(arg_0));
19275     return ret.release();
19276   };
19277   auto res = isl_union_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
19278   return manage(res);
19279 }
19280 
from_union_pw_multi_aff(isl::union_pw_multi_aff el)19281 isl::union_pw_multi_aff_list union_pw_multi_aff_list::from_union_pw_multi_aff(isl::union_pw_multi_aff el)
19282 {
19283   auto res = isl_union_pw_multi_aff_list_from_union_pw_multi_aff(el.release());
19284   return manage(res);
19285 }
19286 
get_at(int index)19287 isl::union_pw_multi_aff union_pw_multi_aff_list::get_at(int index) const
19288 {
19289   auto res = isl_union_pw_multi_aff_list_get_at(get(), index);
19290   return manage(res);
19291 }
19292 
get_union_pw_multi_aff(int index)19293 isl::union_pw_multi_aff union_pw_multi_aff_list::get_union_pw_multi_aff(int index) const
19294 {
19295   auto res = isl_union_pw_multi_aff_list_get_union_pw_multi_aff(get(), index);
19296   return manage(res);
19297 }
19298 
insert(unsigned int pos,isl::union_pw_multi_aff el)19299 isl::union_pw_multi_aff_list union_pw_multi_aff_list::insert(unsigned int pos, isl::union_pw_multi_aff el) const
19300 {
19301   auto res = isl_union_pw_multi_aff_list_insert(copy(), pos, el.release());
19302   return manage(res);
19303 }
19304 
n_union_pw_multi_aff()19305 isl_size union_pw_multi_aff_list::n_union_pw_multi_aff() const
19306 {
19307   auto res = isl_union_pw_multi_aff_list_n_union_pw_multi_aff(get());
19308   return res;
19309 }
19310 
reverse()19311 isl::union_pw_multi_aff_list union_pw_multi_aff_list::reverse() const
19312 {
19313   auto res = isl_union_pw_multi_aff_list_reverse(copy());
19314   return manage(res);
19315 }
19316 
set_union_pw_multi_aff(int index,isl::union_pw_multi_aff el)19317 isl::union_pw_multi_aff_list union_pw_multi_aff_list::set_union_pw_multi_aff(int index, isl::union_pw_multi_aff el) const
19318 {
19319   auto res = isl_union_pw_multi_aff_list_set_union_pw_multi_aff(copy(), index, el.release());
19320   return manage(res);
19321 }
19322 
size()19323 isl_size union_pw_multi_aff_list::size() const
19324 {
19325   auto res = isl_union_pw_multi_aff_list_size(get());
19326   return res;
19327 }
19328 
swap(unsigned int pos1,unsigned int pos2)19329 isl::union_pw_multi_aff_list union_pw_multi_aff_list::swap(unsigned int pos1, unsigned int pos2) const
19330 {
19331   auto res = isl_union_pw_multi_aff_list_swap(copy(), pos1, pos2);
19332   return manage(res);
19333 }
19334 
19335 // implementations for isl::union_pw_qpolynomial
manage(__isl_take isl_union_pw_qpolynomial * ptr)19336 union_pw_qpolynomial manage(__isl_take isl_union_pw_qpolynomial *ptr) {
19337   return union_pw_qpolynomial(ptr);
19338 }
manage_copy(__isl_keep isl_union_pw_qpolynomial * ptr)19339 union_pw_qpolynomial manage_copy(__isl_keep isl_union_pw_qpolynomial *ptr) {
19340   ptr = isl_union_pw_qpolynomial_copy(ptr);
19341   return union_pw_qpolynomial(ptr);
19342 }
19343 
union_pw_qpolynomial()19344 union_pw_qpolynomial::union_pw_qpolynomial()
19345     : ptr(nullptr) {}
19346 
union_pw_qpolynomial(const union_pw_qpolynomial & obj)19347 union_pw_qpolynomial::union_pw_qpolynomial(const union_pw_qpolynomial &obj)
19348     : ptr(nullptr)
19349 {
19350   ptr = obj.copy();
19351 }
19352 
19353 
union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial * ptr)19354 union_pw_qpolynomial::union_pw_qpolynomial(__isl_take isl_union_pw_qpolynomial *ptr)
19355     : ptr(ptr) {}
19356 
union_pw_qpolynomial(isl::ctx ctx,const std::string & str)19357 union_pw_qpolynomial::union_pw_qpolynomial(isl::ctx ctx, const std::string &str)
19358 {
19359   auto res = isl_union_pw_qpolynomial_read_from_str(ctx.release(), str.c_str());
19360   ptr = res;
19361 }
19362 
19363 union_pw_qpolynomial &union_pw_qpolynomial::operator=(union_pw_qpolynomial obj) {
19364   std::swap(this->ptr, obj.ptr);
19365   return *this;
19366 }
19367 
~union_pw_qpolynomial()19368 union_pw_qpolynomial::~union_pw_qpolynomial() {
19369   if (ptr)
19370     isl_union_pw_qpolynomial_free(ptr);
19371 }
19372 
copy()19373 __isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::copy() const & {
19374   return isl_union_pw_qpolynomial_copy(ptr);
19375 }
19376 
get()19377 __isl_keep isl_union_pw_qpolynomial *union_pw_qpolynomial::get() const {
19378   return ptr;
19379 }
19380 
release()19381 __isl_give isl_union_pw_qpolynomial *union_pw_qpolynomial::release() {
19382   isl_union_pw_qpolynomial *tmp = ptr;
19383   ptr = nullptr;
19384   return tmp;
19385 }
19386 
is_null()19387 bool union_pw_qpolynomial::is_null() const {
19388   return ptr == nullptr;
19389 }
19390 
19391 
ctx()19392 isl::ctx union_pw_qpolynomial::ctx() const {
19393   return isl::ctx(isl_union_pw_qpolynomial_get_ctx(ptr));
19394 }
19395 
19396 
add(isl::union_pw_qpolynomial upwqp2)19397 isl::union_pw_qpolynomial union_pw_qpolynomial::add(isl::union_pw_qpolynomial upwqp2) const
19398 {
19399   auto res = isl_union_pw_qpolynomial_add(copy(), upwqp2.release());
19400   return manage(res);
19401 }
19402 
add_pw_qpolynomial(isl::pw_qpolynomial pwqp)19403 isl::union_pw_qpolynomial union_pw_qpolynomial::add_pw_qpolynomial(isl::pw_qpolynomial pwqp) const
19404 {
19405   auto res = isl_union_pw_qpolynomial_add_pw_qpolynomial(copy(), pwqp.release());
19406   return manage(res);
19407 }
19408 
align_params(isl::space model)19409 isl::union_pw_qpolynomial union_pw_qpolynomial::align_params(isl::space model) const
19410 {
19411   auto res = isl_union_pw_qpolynomial_align_params(copy(), model.release());
19412   return manage(res);
19413 }
19414 
coalesce()19415 isl::union_pw_qpolynomial union_pw_qpolynomial::coalesce() const
19416 {
19417   auto res = isl_union_pw_qpolynomial_coalesce(copy());
19418   return manage(res);
19419 }
19420 
dim(isl::dim type)19421 isl_size union_pw_qpolynomial::dim(isl::dim type) const
19422 {
19423   auto res = isl_union_pw_qpolynomial_dim(get(), static_cast<enum isl_dim_type>(type));
19424   return res;
19425 }
19426 
domain()19427 isl::union_set union_pw_qpolynomial::domain() const
19428 {
19429   auto res = isl_union_pw_qpolynomial_domain(copy());
19430   return manage(res);
19431 }
19432 
drop_dims(isl::dim type,unsigned int first,unsigned int n)19433 isl::union_pw_qpolynomial union_pw_qpolynomial::drop_dims(isl::dim type, unsigned int first, unsigned int n) const
19434 {
19435   auto res = isl_union_pw_qpolynomial_drop_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
19436   return manage(res);
19437 }
19438 
eval(isl::point pnt)19439 isl::val union_pw_qpolynomial::eval(isl::point pnt) const
19440 {
19441   auto res = isl_union_pw_qpolynomial_eval(copy(), pnt.release());
19442   return manage(res);
19443 }
19444 
extract_pw_qpolynomial(isl::space space)19445 isl::pw_qpolynomial union_pw_qpolynomial::extract_pw_qpolynomial(isl::space space) const
19446 {
19447   auto res = isl_union_pw_qpolynomial_extract_pw_qpolynomial(get(), space.release());
19448   return manage(res);
19449 }
19450 
find_dim_by_name(isl::dim type,const std::string & name)19451 int union_pw_qpolynomial::find_dim_by_name(isl::dim type, const std::string &name) const
19452 {
19453   auto res = isl_union_pw_qpolynomial_find_dim_by_name(get(), static_cast<enum isl_dim_type>(type), name.c_str());
19454   return res;
19455 }
19456 
foreach_pw_qpolynomial(const std::function<stat (pw_qpolynomial)> & fn)19457 stat union_pw_qpolynomial::foreach_pw_qpolynomial(const std::function<stat(pw_qpolynomial)> &fn) const
19458 {
19459   struct fn_data {
19460     const std::function<stat(pw_qpolynomial)> *func;
19461   } fn_data = { &fn };
19462   auto fn_lambda = [](isl_pw_qpolynomial *arg_0, void *arg_1) -> isl_stat {
19463     auto *data = static_cast<struct fn_data *>(arg_1);
19464     stat ret = (*data->func)(manage(arg_0));
19465     return ret.release();
19466   };
19467   auto res = isl_union_pw_qpolynomial_foreach_pw_qpolynomial(get(), fn_lambda, &fn_data);
19468   return manage(res);
19469 }
19470 
from_pw_qpolynomial(isl::pw_qpolynomial pwqp)19471 isl::union_pw_qpolynomial union_pw_qpolynomial::from_pw_qpolynomial(isl::pw_qpolynomial pwqp)
19472 {
19473   auto res = isl_union_pw_qpolynomial_from_pw_qpolynomial(pwqp.release());
19474   return manage(res);
19475 }
19476 
get_pw_qpolynomial_list()19477 isl::pw_qpolynomial_list union_pw_qpolynomial::get_pw_qpolynomial_list() const
19478 {
19479   auto res = isl_union_pw_qpolynomial_get_pw_qpolynomial_list(get());
19480   return manage(res);
19481 }
19482 
get_space()19483 isl::space union_pw_qpolynomial::get_space() const
19484 {
19485   auto res = isl_union_pw_qpolynomial_get_space(get());
19486   return manage(res);
19487 }
19488 
gist(isl::union_set context)19489 isl::union_pw_qpolynomial union_pw_qpolynomial::gist(isl::union_set context) const
19490 {
19491   auto res = isl_union_pw_qpolynomial_gist(copy(), context.release());
19492   return manage(res);
19493 }
19494 
gist_params(isl::set context)19495 isl::union_pw_qpolynomial union_pw_qpolynomial::gist_params(isl::set context) const
19496 {
19497   auto res = isl_union_pw_qpolynomial_gist_params(copy(), context.release());
19498   return manage(res);
19499 }
19500 
intersect_domain(isl::union_set uset)19501 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_domain(isl::union_set uset) const
19502 {
19503   auto res = isl_union_pw_qpolynomial_intersect_domain(copy(), uset.release());
19504   return manage(res);
19505 }
19506 
intersect_domain_space(isl::space space)19507 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_domain_space(isl::space space) const
19508 {
19509   auto res = isl_union_pw_qpolynomial_intersect_domain_space(copy(), space.release());
19510   return manage(res);
19511 }
19512 
intersect_domain_union_set(isl::union_set uset)19513 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_domain_union_set(isl::union_set uset) const
19514 {
19515   auto res = isl_union_pw_qpolynomial_intersect_domain_union_set(copy(), uset.release());
19516   return manage(res);
19517 }
19518 
intersect_domain_wrapped_domain(isl::union_set uset)19519 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_domain_wrapped_domain(isl::union_set uset) const
19520 {
19521   auto res = isl_union_pw_qpolynomial_intersect_domain_wrapped_domain(copy(), uset.release());
19522   return manage(res);
19523 }
19524 
intersect_domain_wrapped_range(isl::union_set uset)19525 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_domain_wrapped_range(isl::union_set uset) const
19526 {
19527   auto res = isl_union_pw_qpolynomial_intersect_domain_wrapped_range(copy(), uset.release());
19528   return manage(res);
19529 }
19530 
intersect_params(isl::set set)19531 isl::union_pw_qpolynomial union_pw_qpolynomial::intersect_params(isl::set set) const
19532 {
19533   auto res = isl_union_pw_qpolynomial_intersect_params(copy(), set.release());
19534   return manage(res);
19535 }
19536 
involves_nan()19537 boolean union_pw_qpolynomial::involves_nan() const
19538 {
19539   auto res = isl_union_pw_qpolynomial_involves_nan(get());
19540   return manage(res);
19541 }
19542 
mul(isl::union_pw_qpolynomial upwqp2)19543 isl::union_pw_qpolynomial union_pw_qpolynomial::mul(isl::union_pw_qpolynomial upwqp2) const
19544 {
19545   auto res = isl_union_pw_qpolynomial_mul(copy(), upwqp2.release());
19546   return manage(res);
19547 }
19548 
n_pw_qpolynomial()19549 isl_size union_pw_qpolynomial::n_pw_qpolynomial() const
19550 {
19551   auto res = isl_union_pw_qpolynomial_n_pw_qpolynomial(get());
19552   return res;
19553 }
19554 
neg()19555 isl::union_pw_qpolynomial union_pw_qpolynomial::neg() const
19556 {
19557   auto res = isl_union_pw_qpolynomial_neg(copy());
19558   return manage(res);
19559 }
19560 
plain_is_equal(const isl::union_pw_qpolynomial & upwqp2)19561 boolean union_pw_qpolynomial::plain_is_equal(const isl::union_pw_qpolynomial &upwqp2) const
19562 {
19563   auto res = isl_union_pw_qpolynomial_plain_is_equal(get(), upwqp2.get());
19564   return manage(res);
19565 }
19566 
reset_user()19567 isl::union_pw_qpolynomial union_pw_qpolynomial::reset_user() const
19568 {
19569   auto res = isl_union_pw_qpolynomial_reset_user(copy());
19570   return manage(res);
19571 }
19572 
scale_down_val(isl::val v)19573 isl::union_pw_qpolynomial union_pw_qpolynomial::scale_down_val(isl::val v) const
19574 {
19575   auto res = isl_union_pw_qpolynomial_scale_down_val(copy(), v.release());
19576   return manage(res);
19577 }
19578 
scale_val(isl::val v)19579 isl::union_pw_qpolynomial union_pw_qpolynomial::scale_val(isl::val v) const
19580 {
19581   auto res = isl_union_pw_qpolynomial_scale_val(copy(), v.release());
19582   return manage(res);
19583 }
19584 
sub(isl::union_pw_qpolynomial upwqp2)19585 isl::union_pw_qpolynomial union_pw_qpolynomial::sub(isl::union_pw_qpolynomial upwqp2) const
19586 {
19587   auto res = isl_union_pw_qpolynomial_sub(copy(), upwqp2.release());
19588   return manage(res);
19589 }
19590 
subtract_domain(isl::union_set uset)19591 isl::union_pw_qpolynomial union_pw_qpolynomial::subtract_domain(isl::union_set uset) const
19592 {
19593   auto res = isl_union_pw_qpolynomial_subtract_domain(copy(), uset.release());
19594   return manage(res);
19595 }
19596 
subtract_domain_space(isl::space space)19597 isl::union_pw_qpolynomial union_pw_qpolynomial::subtract_domain_space(isl::space space) const
19598 {
19599   auto res = isl_union_pw_qpolynomial_subtract_domain_space(copy(), space.release());
19600   return manage(res);
19601 }
19602 
subtract_domain_union_set(isl::union_set uset)19603 isl::union_pw_qpolynomial union_pw_qpolynomial::subtract_domain_union_set(isl::union_set uset) const
19604 {
19605   auto res = isl_union_pw_qpolynomial_subtract_domain_union_set(copy(), uset.release());
19606   return manage(res);
19607 }
19608 
to_polynomial(int sign)19609 isl::union_pw_qpolynomial union_pw_qpolynomial::to_polynomial(int sign) const
19610 {
19611   auto res = isl_union_pw_qpolynomial_to_polynomial(copy(), sign);
19612   return manage(res);
19613 }
19614 
zero(isl::space space)19615 isl::union_pw_qpolynomial union_pw_qpolynomial::zero(isl::space space)
19616 {
19617   auto res = isl_union_pw_qpolynomial_zero(space.release());
19618   return manage(res);
19619 }
19620 
zero_ctx(isl::ctx ctx)19621 isl::union_pw_qpolynomial union_pw_qpolynomial::zero_ctx(isl::ctx ctx)
19622 {
19623   auto res = isl_union_pw_qpolynomial_zero_ctx(ctx.release());
19624   return manage(res);
19625 }
19626 
zero_space(isl::space space)19627 isl::union_pw_qpolynomial union_pw_qpolynomial::zero_space(isl::space space)
19628 {
19629   auto res = isl_union_pw_qpolynomial_zero_space(space.release());
19630   return manage(res);
19631 }
19632 
19633 // implementations for isl::union_set
manage(__isl_take isl_union_set * ptr)19634 union_set manage(__isl_take isl_union_set *ptr) {
19635   return union_set(ptr);
19636 }
manage_copy(__isl_keep isl_union_set * ptr)19637 union_set manage_copy(__isl_keep isl_union_set *ptr) {
19638   ptr = isl_union_set_copy(ptr);
19639   return union_set(ptr);
19640 }
19641 
union_set()19642 union_set::union_set()
19643     : ptr(nullptr) {}
19644 
union_set(const union_set & obj)19645 union_set::union_set(const union_set &obj)
19646     : ptr(nullptr)
19647 {
19648   ptr = obj.copy();
19649 }
19650 
19651 
union_set(__isl_take isl_union_set * ptr)19652 union_set::union_set(__isl_take isl_union_set *ptr)
19653     : ptr(ptr) {}
19654 
union_set(isl::basic_set bset)19655 union_set::union_set(isl::basic_set bset)
19656 {
19657   auto res = isl_union_set_from_basic_set(bset.release());
19658   ptr = res;
19659 }
union_set(isl::point pnt)19660 union_set::union_set(isl::point pnt)
19661 {
19662   auto res = isl_union_set_from_point(pnt.release());
19663   ptr = res;
19664 }
union_set(isl::set set)19665 union_set::union_set(isl::set set)
19666 {
19667   auto res = isl_union_set_from_set(set.release());
19668   ptr = res;
19669 }
union_set(isl::ctx ctx,const std::string & str)19670 union_set::union_set(isl::ctx ctx, const std::string &str)
19671 {
19672   auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
19673   ptr = res;
19674 }
19675 
19676 union_set &union_set::operator=(union_set obj) {
19677   std::swap(this->ptr, obj.ptr);
19678   return *this;
19679 }
19680 
~union_set()19681 union_set::~union_set() {
19682   if (ptr)
19683     isl_union_set_free(ptr);
19684 }
19685 
copy()19686 __isl_give isl_union_set *union_set::copy() const & {
19687   return isl_union_set_copy(ptr);
19688 }
19689 
get()19690 __isl_keep isl_union_set *union_set::get() const {
19691   return ptr;
19692 }
19693 
release()19694 __isl_give isl_union_set *union_set::release() {
19695   isl_union_set *tmp = ptr;
19696   ptr = nullptr;
19697   return tmp;
19698 }
19699 
is_null()19700 bool union_set::is_null() const {
19701   return ptr == nullptr;
19702 }
19703 
19704 
ctx()19705 isl::ctx union_set::ctx() const {
19706   return isl::ctx(isl_union_set_get_ctx(ptr));
19707 }
19708 
dump()19709 void union_set::dump() const {
19710   isl_union_set_dump(get());
19711 }
19712 
19713 
affine_hull()19714 isl::union_set union_set::affine_hull() const
19715 {
19716   auto res = isl_union_set_affine_hull(copy());
19717   return manage(res);
19718 }
19719 
align_params(isl::space model)19720 isl::union_set union_set::align_params(isl::space model) const
19721 {
19722   auto res = isl_union_set_align_params(copy(), model.release());
19723   return manage(res);
19724 }
19725 
apply(isl::union_map umap)19726 isl::union_set union_set::apply(isl::union_map umap) const
19727 {
19728   auto res = isl_union_set_apply(copy(), umap.release());
19729   return manage(res);
19730 }
19731 
coalesce()19732 isl::union_set union_set::coalesce() const
19733 {
19734   auto res = isl_union_set_coalesce(copy());
19735   return manage(res);
19736 }
19737 
coefficients()19738 isl::union_set union_set::coefficients() const
19739 {
19740   auto res = isl_union_set_coefficients(copy());
19741   return manage(res);
19742 }
19743 
compute_schedule(isl::union_map validity,isl::union_map proximity)19744 isl::schedule union_set::compute_schedule(isl::union_map validity, isl::union_map proximity) const
19745 {
19746   auto res = isl_union_set_compute_schedule(copy(), validity.release(), proximity.release());
19747   return manage(res);
19748 }
19749 
contains(const isl::space & space)19750 boolean union_set::contains(const isl::space &space) const
19751 {
19752   auto res = isl_union_set_contains(get(), space.get());
19753   return manage(res);
19754 }
19755 
detect_equalities()19756 isl::union_set union_set::detect_equalities() const
19757 {
19758   auto res = isl_union_set_detect_equalities(copy());
19759   return manage(res);
19760 }
19761 
dim(isl::dim type)19762 isl_size union_set::dim(isl::dim type) const
19763 {
19764   auto res = isl_union_set_dim(get(), static_cast<enum isl_dim_type>(type));
19765   return res;
19766 }
19767 
empty(isl::ctx ctx)19768 isl::union_set union_set::empty(isl::ctx ctx)
19769 {
19770   auto res = isl_union_set_empty_ctx(ctx.release());
19771   return manage(res);
19772 }
19773 
extract_set(isl::space space)19774 isl::set union_set::extract_set(isl::space space) const
19775 {
19776   auto res = isl_union_set_extract_set(get(), space.release());
19777   return manage(res);
19778 }
19779 
foreach_point(const std::function<stat (point)> & fn)19780 stat union_set::foreach_point(const std::function<stat(point)> &fn) const
19781 {
19782   struct fn_data {
19783     const std::function<stat(point)> *func;
19784   } fn_data = { &fn };
19785   auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
19786     auto *data = static_cast<struct fn_data *>(arg_1);
19787     stat ret = (*data->func)(manage(arg_0));
19788     return ret.release();
19789   };
19790   auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
19791   return manage(res);
19792 }
19793 
foreach_set(const std::function<stat (set)> & fn)19794 stat union_set::foreach_set(const std::function<stat(set)> &fn) const
19795 {
19796   struct fn_data {
19797     const std::function<stat(set)> *func;
19798   } fn_data = { &fn };
19799   auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
19800     auto *data = static_cast<struct fn_data *>(arg_1);
19801     stat ret = (*data->func)(manage(arg_0));
19802     return ret.release();
19803   };
19804   auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
19805   return manage(res);
19806 }
19807 
get_basic_set_list()19808 isl::basic_set_list union_set::get_basic_set_list() const
19809 {
19810   auto res = isl_union_set_get_basic_set_list(get());
19811   return manage(res);
19812 }
19813 
get_hash()19814 uint32_t union_set::get_hash() const
19815 {
19816   auto res = isl_union_set_get_hash(get());
19817   return res;
19818 }
19819 
get_set_list()19820 isl::set_list union_set::get_set_list() const
19821 {
19822   auto res = isl_union_set_get_set_list(get());
19823   return manage(res);
19824 }
19825 
get_space()19826 isl::space union_set::get_space() const
19827 {
19828   auto res = isl_union_set_get_space(get());
19829   return manage(res);
19830 }
19831 
gist(isl::union_set context)19832 isl::union_set union_set::gist(isl::union_set context) const
19833 {
19834   auto res = isl_union_set_gist(copy(), context.release());
19835   return manage(res);
19836 }
19837 
gist_params(isl::set set)19838 isl::union_set union_set::gist_params(isl::set set) const
19839 {
19840   auto res = isl_union_set_gist_params(copy(), set.release());
19841   return manage(res);
19842 }
19843 
identity()19844 isl::union_map union_set::identity() const
19845 {
19846   auto res = isl_union_set_identity(copy());
19847   return manage(res);
19848 }
19849 
identity_union_pw_multi_aff()19850 isl::union_pw_multi_aff union_set::identity_union_pw_multi_aff() const
19851 {
19852   auto res = isl_union_set_identity_union_pw_multi_aff(copy());
19853   return manage(res);
19854 }
19855 
intersect(isl::union_set uset2)19856 isl::union_set union_set::intersect(isl::union_set uset2) const
19857 {
19858   auto res = isl_union_set_intersect(copy(), uset2.release());
19859   return manage(res);
19860 }
19861 
intersect_params(isl::set set)19862 isl::union_set union_set::intersect_params(isl::set set) const
19863 {
19864   auto res = isl_union_set_intersect_params(copy(), set.release());
19865   return manage(res);
19866 }
19867 
is_disjoint(const isl::union_set & uset2)19868 boolean union_set::is_disjoint(const isl::union_set &uset2) const
19869 {
19870   auto res = isl_union_set_is_disjoint(get(), uset2.get());
19871   return manage(res);
19872 }
19873 
is_empty()19874 boolean union_set::is_empty() const
19875 {
19876   auto res = isl_union_set_is_empty(get());
19877   return manage(res);
19878 }
19879 
is_equal(const isl::union_set & uset2)19880 boolean union_set::is_equal(const isl::union_set &uset2) const
19881 {
19882   auto res = isl_union_set_is_equal(get(), uset2.get());
19883   return manage(res);
19884 }
19885 
is_params()19886 boolean union_set::is_params() const
19887 {
19888   auto res = isl_union_set_is_params(get());
19889   return manage(res);
19890 }
19891 
is_strict_subset(const isl::union_set & uset2)19892 boolean union_set::is_strict_subset(const isl::union_set &uset2) const
19893 {
19894   auto res = isl_union_set_is_strict_subset(get(), uset2.get());
19895   return manage(res);
19896 }
19897 
is_subset(const isl::union_set & uset2)19898 boolean union_set::is_subset(const isl::union_set &uset2) const
19899 {
19900   auto res = isl_union_set_is_subset(get(), uset2.get());
19901   return manage(res);
19902 }
19903 
isa_set()19904 boolean union_set::isa_set() const
19905 {
19906   auto res = isl_union_set_isa_set(get());
19907   return manage(res);
19908 }
19909 
lex_ge_union_set(isl::union_set uset2)19910 isl::union_map union_set::lex_ge_union_set(isl::union_set uset2) const
19911 {
19912   auto res = isl_union_set_lex_ge_union_set(copy(), uset2.release());
19913   return manage(res);
19914 }
19915 
lex_gt_union_set(isl::union_set uset2)19916 isl::union_map union_set::lex_gt_union_set(isl::union_set uset2) const
19917 {
19918   auto res = isl_union_set_lex_gt_union_set(copy(), uset2.release());
19919   return manage(res);
19920 }
19921 
lex_le_union_set(isl::union_set uset2)19922 isl::union_map union_set::lex_le_union_set(isl::union_set uset2) const
19923 {
19924   auto res = isl_union_set_lex_le_union_set(copy(), uset2.release());
19925   return manage(res);
19926 }
19927 
lex_lt_union_set(isl::union_set uset2)19928 isl::union_map union_set::lex_lt_union_set(isl::union_set uset2) const
19929 {
19930   auto res = isl_union_set_lex_lt_union_set(copy(), uset2.release());
19931   return manage(res);
19932 }
19933 
lexmax()19934 isl::union_set union_set::lexmax() const
19935 {
19936   auto res = isl_union_set_lexmax(copy());
19937   return manage(res);
19938 }
19939 
lexmin()19940 isl::union_set union_set::lexmin() const
19941 {
19942   auto res = isl_union_set_lexmin(copy());
19943   return manage(res);
19944 }
19945 
min_multi_union_pw_aff(const isl::multi_union_pw_aff & obj)19946 isl::multi_val union_set::min_multi_union_pw_aff(const isl::multi_union_pw_aff &obj) const
19947 {
19948   auto res = isl_union_set_min_multi_union_pw_aff(get(), obj.get());
19949   return manage(res);
19950 }
19951 
n_set()19952 isl_size union_set::n_set() const
19953 {
19954   auto res = isl_union_set_n_set(get());
19955   return res;
19956 }
19957 
params()19958 isl::set union_set::params() const
19959 {
19960   auto res = isl_union_set_params(copy());
19961   return manage(res);
19962 }
19963 
polyhedral_hull()19964 isl::union_set union_set::polyhedral_hull() const
19965 {
19966   auto res = isl_union_set_polyhedral_hull(copy());
19967   return manage(res);
19968 }
19969 
preimage(isl::multi_aff ma)19970 isl::union_set union_set::preimage(isl::multi_aff ma) const
19971 {
19972   auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
19973   return manage(res);
19974 }
19975 
preimage(isl::pw_multi_aff pma)19976 isl::union_set union_set::preimage(isl::pw_multi_aff pma) const
19977 {
19978   auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
19979   return manage(res);
19980 }
19981 
preimage(isl::union_pw_multi_aff upma)19982 isl::union_set union_set::preimage(isl::union_pw_multi_aff upma) const
19983 {
19984   auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
19985   return manage(res);
19986 }
19987 
product(isl::union_set uset2)19988 isl::union_set union_set::product(isl::union_set uset2) const
19989 {
19990   auto res = isl_union_set_product(copy(), uset2.release());
19991   return manage(res);
19992 }
19993 
project_out(isl::dim type,unsigned int first,unsigned int n)19994 isl::union_set union_set::project_out(isl::dim type, unsigned int first, unsigned int n) const
19995 {
19996   auto res = isl_union_set_project_out(copy(), static_cast<enum isl_dim_type>(type), first, n);
19997   return manage(res);
19998 }
19999 
project_out_all_params()20000 isl::union_set union_set::project_out_all_params() const
20001 {
20002   auto res = isl_union_set_project_out_all_params(copy());
20003   return manage(res);
20004 }
20005 
remove_divs()20006 isl::union_set union_set::remove_divs() const
20007 {
20008   auto res = isl_union_set_remove_divs(copy());
20009   return manage(res);
20010 }
20011 
remove_redundancies()20012 isl::union_set union_set::remove_redundancies() const
20013 {
20014   auto res = isl_union_set_remove_redundancies(copy());
20015   return manage(res);
20016 }
20017 
reset_user()20018 isl::union_set union_set::reset_user() const
20019 {
20020   auto res = isl_union_set_reset_user(copy());
20021   return manage(res);
20022 }
20023 
sample()20024 isl::basic_set union_set::sample() const
20025 {
20026   auto res = isl_union_set_sample(copy());
20027   return manage(res);
20028 }
20029 
sample_point()20030 isl::point union_set::sample_point() const
20031 {
20032   auto res = isl_union_set_sample_point(copy());
20033   return manage(res);
20034 }
20035 
simple_hull()20036 isl::union_set union_set::simple_hull() const
20037 {
20038   auto res = isl_union_set_simple_hull(copy());
20039   return manage(res);
20040 }
20041 
solutions()20042 isl::union_set union_set::solutions() const
20043 {
20044   auto res = isl_union_set_solutions(copy());
20045   return manage(res);
20046 }
20047 
subtract(isl::union_set uset2)20048 isl::union_set union_set::subtract(isl::union_set uset2) const
20049 {
20050   auto res = isl_union_set_subtract(copy(), uset2.release());
20051   return manage(res);
20052 }
20053 
unite(isl::union_set uset2)20054 isl::union_set union_set::unite(isl::union_set uset2) const
20055 {
20056   auto res = isl_union_set_union(copy(), uset2.release());
20057   return manage(res);
20058 }
20059 
universe()20060 isl::union_set union_set::universe() const
20061 {
20062   auto res = isl_union_set_universe(copy());
20063   return manage(res);
20064 }
20065 
unwrap()20066 isl::union_map union_set::unwrap() const
20067 {
20068   auto res = isl_union_set_unwrap(copy());
20069   return manage(res);
20070 }
20071 
wrapped_domain_map()20072 isl::union_map union_set::wrapped_domain_map() const
20073 {
20074   auto res = isl_union_set_wrapped_domain_map(copy());
20075   return manage(res);
20076 }
20077 
20078 // implementations for isl::union_set_list
manage(__isl_take isl_union_set_list * ptr)20079 union_set_list manage(__isl_take isl_union_set_list *ptr) {
20080   return union_set_list(ptr);
20081 }
manage_copy(__isl_keep isl_union_set_list * ptr)20082 union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
20083   ptr = isl_union_set_list_copy(ptr);
20084   return union_set_list(ptr);
20085 }
20086 
union_set_list()20087 union_set_list::union_set_list()
20088     : ptr(nullptr) {}
20089 
union_set_list(const union_set_list & obj)20090 union_set_list::union_set_list(const union_set_list &obj)
20091     : ptr(nullptr)
20092 {
20093   ptr = obj.copy();
20094 }
20095 
20096 
union_set_list(__isl_take isl_union_set_list * ptr)20097 union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
20098     : ptr(ptr) {}
20099 
20100 
20101 union_set_list &union_set_list::operator=(union_set_list obj) {
20102   std::swap(this->ptr, obj.ptr);
20103   return *this;
20104 }
20105 
~union_set_list()20106 union_set_list::~union_set_list() {
20107   if (ptr)
20108     isl_union_set_list_free(ptr);
20109 }
20110 
copy()20111 __isl_give isl_union_set_list *union_set_list::copy() const & {
20112   return isl_union_set_list_copy(ptr);
20113 }
20114 
get()20115 __isl_keep isl_union_set_list *union_set_list::get() const {
20116   return ptr;
20117 }
20118 
release()20119 __isl_give isl_union_set_list *union_set_list::release() {
20120   isl_union_set_list *tmp = ptr;
20121   ptr = nullptr;
20122   return tmp;
20123 }
20124 
is_null()20125 bool union_set_list::is_null() const {
20126   return ptr == nullptr;
20127 }
20128 
20129 
ctx()20130 isl::ctx union_set_list::ctx() const {
20131   return isl::ctx(isl_union_set_list_get_ctx(ptr));
20132 }
20133 
dump()20134 void union_set_list::dump() const {
20135   isl_union_set_list_dump(get());
20136 }
20137 
20138 
add(isl::union_set el)20139 isl::union_set_list union_set_list::add(isl::union_set el) const
20140 {
20141   auto res = isl_union_set_list_add(copy(), el.release());
20142   return manage(res);
20143 }
20144 
alloc(isl::ctx ctx,int n)20145 isl::union_set_list union_set_list::alloc(isl::ctx ctx, int n)
20146 {
20147   auto res = isl_union_set_list_alloc(ctx.release(), n);
20148   return manage(res);
20149 }
20150 
clear()20151 isl::union_set_list union_set_list::clear() const
20152 {
20153   auto res = isl_union_set_list_clear(copy());
20154   return manage(res);
20155 }
20156 
concat(isl::union_set_list list2)20157 isl::union_set_list union_set_list::concat(isl::union_set_list list2) const
20158 {
20159   auto res = isl_union_set_list_concat(copy(), list2.release());
20160   return manage(res);
20161 }
20162 
drop(unsigned int first,unsigned int n)20163 isl::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
20164 {
20165   auto res = isl_union_set_list_drop(copy(), first, n);
20166   return manage(res);
20167 }
20168 
foreach(const std::function<stat (union_set)> & fn)20169 stat union_set_list::foreach(const std::function<stat(union_set)> &fn) const
20170 {
20171   struct fn_data {
20172     const std::function<stat(union_set)> *func;
20173   } fn_data = { &fn };
20174   auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
20175     auto *data = static_cast<struct fn_data *>(arg_1);
20176     stat ret = (*data->func)(manage(arg_0));
20177     return ret.release();
20178   };
20179   auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
20180   return manage(res);
20181 }
20182 
from_union_set(isl::union_set el)20183 isl::union_set_list union_set_list::from_union_set(isl::union_set el)
20184 {
20185   auto res = isl_union_set_list_from_union_set(el.release());
20186   return manage(res);
20187 }
20188 
get_at(int index)20189 isl::union_set union_set_list::get_at(int index) const
20190 {
20191   auto res = isl_union_set_list_get_at(get(), index);
20192   return manage(res);
20193 }
20194 
get_union_set(int index)20195 isl::union_set union_set_list::get_union_set(int index) const
20196 {
20197   auto res = isl_union_set_list_get_union_set(get(), index);
20198   return manage(res);
20199 }
20200 
insert(unsigned int pos,isl::union_set el)20201 isl::union_set_list union_set_list::insert(unsigned int pos, isl::union_set el) const
20202 {
20203   auto res = isl_union_set_list_insert(copy(), pos, el.release());
20204   return manage(res);
20205 }
20206 
n_union_set()20207 isl_size union_set_list::n_union_set() const
20208 {
20209   auto res = isl_union_set_list_n_union_set(get());
20210   return res;
20211 }
20212 
reverse()20213 isl::union_set_list union_set_list::reverse() const
20214 {
20215   auto res = isl_union_set_list_reverse(copy());
20216   return manage(res);
20217 }
20218 
set_union_set(int index,isl::union_set el)20219 isl::union_set_list union_set_list::set_union_set(int index, isl::union_set el) const
20220 {
20221   auto res = isl_union_set_list_set_union_set(copy(), index, el.release());
20222   return manage(res);
20223 }
20224 
size()20225 isl_size union_set_list::size() const
20226 {
20227   auto res = isl_union_set_list_size(get());
20228   return res;
20229 }
20230 
swap(unsigned int pos1,unsigned int pos2)20231 isl::union_set_list union_set_list::swap(unsigned int pos1, unsigned int pos2) const
20232 {
20233   auto res = isl_union_set_list_swap(copy(), pos1, pos2);
20234   return manage(res);
20235 }
20236 
unite()20237 isl::union_set union_set_list::unite() const
20238 {
20239   auto res = isl_union_set_list_union(copy());
20240   return manage(res);
20241 }
20242 
20243 // implementations for isl::val
manage(__isl_take isl_val * ptr)20244 val manage(__isl_take isl_val *ptr) {
20245   return val(ptr);
20246 }
manage_copy(__isl_keep isl_val * ptr)20247 val manage_copy(__isl_keep isl_val *ptr) {
20248   ptr = isl_val_copy(ptr);
20249   return val(ptr);
20250 }
20251 
val()20252 val::val()
20253     : ptr(nullptr) {}
20254 
val(const val & obj)20255 val::val(const val &obj)
20256     : ptr(nullptr)
20257 {
20258   ptr = obj.copy();
20259 }
20260 
20261 
val(__isl_take isl_val * ptr)20262 val::val(__isl_take isl_val *ptr)
20263     : ptr(ptr) {}
20264 
val(isl::ctx ctx,long i)20265 val::val(isl::ctx ctx, long i)
20266 {
20267   auto res = isl_val_int_from_si(ctx.release(), i);
20268   ptr = res;
20269 }
val(isl::ctx ctx,const std::string & str)20270 val::val(isl::ctx ctx, const std::string &str)
20271 {
20272   auto res = isl_val_read_from_str(ctx.release(), str.c_str());
20273   ptr = res;
20274 }
20275 
20276 val &val::operator=(val obj) {
20277   std::swap(this->ptr, obj.ptr);
20278   return *this;
20279 }
20280 
~val()20281 val::~val() {
20282   if (ptr)
20283     isl_val_free(ptr);
20284 }
20285 
copy()20286 __isl_give isl_val *val::copy() const & {
20287   return isl_val_copy(ptr);
20288 }
20289 
get()20290 __isl_keep isl_val *val::get() const {
20291   return ptr;
20292 }
20293 
release()20294 __isl_give isl_val *val::release() {
20295   isl_val *tmp = ptr;
20296   ptr = nullptr;
20297   return tmp;
20298 }
20299 
is_null()20300 bool val::is_null() const {
20301   return ptr == nullptr;
20302 }
20303 
20304 
ctx()20305 isl::ctx val::ctx() const {
20306   return isl::ctx(isl_val_get_ctx(ptr));
20307 }
20308 
dump()20309 void val::dump() const {
20310   isl_val_dump(get());
20311 }
20312 
20313 
abs()20314 isl::val val::abs() const
20315 {
20316   auto res = isl_val_abs(copy());
20317   return manage(res);
20318 }
20319 
abs_eq(const isl::val & v2)20320 boolean val::abs_eq(const isl::val &v2) const
20321 {
20322   auto res = isl_val_abs_eq(get(), v2.get());
20323   return manage(res);
20324 }
20325 
add(isl::val v2)20326 isl::val val::add(isl::val v2) const
20327 {
20328   auto res = isl_val_add(copy(), v2.release());
20329   return manage(res);
20330 }
20331 
add_ui(unsigned long v2)20332 isl::val val::add_ui(unsigned long v2) const
20333 {
20334   auto res = isl_val_add_ui(copy(), v2);
20335   return manage(res);
20336 }
20337 
ceil()20338 isl::val val::ceil() const
20339 {
20340   auto res = isl_val_ceil(copy());
20341   return manage(res);
20342 }
20343 
cmp_si(long i)20344 int val::cmp_si(long i) const
20345 {
20346   auto res = isl_val_cmp_si(get(), i);
20347   return res;
20348 }
20349 
div(isl::val v2)20350 isl::val val::div(isl::val v2) const
20351 {
20352   auto res = isl_val_div(copy(), v2.release());
20353   return manage(res);
20354 }
20355 
div_ui(unsigned long v2)20356 isl::val val::div_ui(unsigned long v2) const
20357 {
20358   auto res = isl_val_div_ui(copy(), v2);
20359   return manage(res);
20360 }
20361 
eq(const isl::val & v2)20362 boolean val::eq(const isl::val &v2) const
20363 {
20364   auto res = isl_val_eq(get(), v2.get());
20365   return manage(res);
20366 }
20367 
eq_si(long i)20368 boolean val::eq_si(long i) const
20369 {
20370   auto res = isl_val_eq_si(get(), i);
20371   return manage(res);
20372 }
20373 
floor()20374 isl::val val::floor() const
20375 {
20376   auto res = isl_val_floor(copy());
20377   return manage(res);
20378 }
20379 
gcd(isl::val v2)20380 isl::val val::gcd(isl::val v2) const
20381 {
20382   auto res = isl_val_gcd(copy(), v2.release());
20383   return manage(res);
20384 }
20385 
ge(const isl::val & v2)20386 boolean val::ge(const isl::val &v2) const
20387 {
20388   auto res = isl_val_ge(get(), v2.get());
20389   return manage(res);
20390 }
20391 
get_hash()20392 uint32_t val::get_hash() const
20393 {
20394   auto res = isl_val_get_hash(get());
20395   return res;
20396 }
20397 
get_num_si()20398 long val::get_num_si() const
20399 {
20400   auto res = isl_val_get_num_si(get());
20401   return res;
20402 }
20403 
gt(const isl::val & v2)20404 boolean val::gt(const isl::val &v2) const
20405 {
20406   auto res = isl_val_gt(get(), v2.get());
20407   return manage(res);
20408 }
20409 
gt_si(long i)20410 boolean val::gt_si(long i) const
20411 {
20412   auto res = isl_val_gt_si(get(), i);
20413   return manage(res);
20414 }
20415 
infty(isl::ctx ctx)20416 isl::val val::infty(isl::ctx ctx)
20417 {
20418   auto res = isl_val_infty(ctx.release());
20419   return manage(res);
20420 }
20421 
int_from_ui(isl::ctx ctx,unsigned long u)20422 isl::val val::int_from_ui(isl::ctx ctx, unsigned long u)
20423 {
20424   auto res = isl_val_int_from_ui(ctx.release(), u);
20425   return manage(res);
20426 }
20427 
inv()20428 isl::val val::inv() const
20429 {
20430   auto res = isl_val_inv(copy());
20431   return manage(res);
20432 }
20433 
is_divisible_by(const isl::val & v2)20434 boolean val::is_divisible_by(const isl::val &v2) const
20435 {
20436   auto res = isl_val_is_divisible_by(get(), v2.get());
20437   return manage(res);
20438 }
20439 
is_infty()20440 boolean val::is_infty() const
20441 {
20442   auto res = isl_val_is_infty(get());
20443   return manage(res);
20444 }
20445 
is_int()20446 boolean val::is_int() const
20447 {
20448   auto res = isl_val_is_int(get());
20449   return manage(res);
20450 }
20451 
is_nan()20452 boolean val::is_nan() const
20453 {
20454   auto res = isl_val_is_nan(get());
20455   return manage(res);
20456 }
20457 
is_neg()20458 boolean val::is_neg() const
20459 {
20460   auto res = isl_val_is_neg(get());
20461   return manage(res);
20462 }
20463 
is_neginfty()20464 boolean val::is_neginfty() const
20465 {
20466   auto res = isl_val_is_neginfty(get());
20467   return manage(res);
20468 }
20469 
is_negone()20470 boolean val::is_negone() const
20471 {
20472   auto res = isl_val_is_negone(get());
20473   return manage(res);
20474 }
20475 
is_nonneg()20476 boolean val::is_nonneg() const
20477 {
20478   auto res = isl_val_is_nonneg(get());
20479   return manage(res);
20480 }
20481 
is_nonpos()20482 boolean val::is_nonpos() const
20483 {
20484   auto res = isl_val_is_nonpos(get());
20485   return manage(res);
20486 }
20487 
is_one()20488 boolean val::is_one() const
20489 {
20490   auto res = isl_val_is_one(get());
20491   return manage(res);
20492 }
20493 
is_pos()20494 boolean val::is_pos() const
20495 {
20496   auto res = isl_val_is_pos(get());
20497   return manage(res);
20498 }
20499 
is_rat()20500 boolean val::is_rat() const
20501 {
20502   auto res = isl_val_is_rat(get());
20503   return manage(res);
20504 }
20505 
is_zero()20506 boolean val::is_zero() const
20507 {
20508   auto res = isl_val_is_zero(get());
20509   return manage(res);
20510 }
20511 
le(const isl::val & v2)20512 boolean val::le(const isl::val &v2) const
20513 {
20514   auto res = isl_val_le(get(), v2.get());
20515   return manage(res);
20516 }
20517 
lt(const isl::val & v2)20518 boolean val::lt(const isl::val &v2) const
20519 {
20520   auto res = isl_val_lt(get(), v2.get());
20521   return manage(res);
20522 }
20523 
max(isl::val v2)20524 isl::val val::max(isl::val v2) const
20525 {
20526   auto res = isl_val_max(copy(), v2.release());
20527   return manage(res);
20528 }
20529 
min(isl::val v2)20530 isl::val val::min(isl::val v2) const
20531 {
20532   auto res = isl_val_min(copy(), v2.release());
20533   return manage(res);
20534 }
20535 
mod(isl::val v2)20536 isl::val val::mod(isl::val v2) const
20537 {
20538   auto res = isl_val_mod(copy(), v2.release());
20539   return manage(res);
20540 }
20541 
mul(isl::val v2)20542 isl::val val::mul(isl::val v2) const
20543 {
20544   auto res = isl_val_mul(copy(), v2.release());
20545   return manage(res);
20546 }
20547 
mul_ui(unsigned long v2)20548 isl::val val::mul_ui(unsigned long v2) const
20549 {
20550   auto res = isl_val_mul_ui(copy(), v2);
20551   return manage(res);
20552 }
20553 
n_abs_num_chunks(size_t size)20554 isl_size val::n_abs_num_chunks(size_t size) const
20555 {
20556   auto res = isl_val_n_abs_num_chunks(get(), size);
20557   return res;
20558 }
20559 
nan(isl::ctx ctx)20560 isl::val val::nan(isl::ctx ctx)
20561 {
20562   auto res = isl_val_nan(ctx.release());
20563   return manage(res);
20564 }
20565 
ne(const isl::val & v2)20566 boolean val::ne(const isl::val &v2) const
20567 {
20568   auto res = isl_val_ne(get(), v2.get());
20569   return manage(res);
20570 }
20571 
neg()20572 isl::val val::neg() const
20573 {
20574   auto res = isl_val_neg(copy());
20575   return manage(res);
20576 }
20577 
neginfty(isl::ctx ctx)20578 isl::val val::neginfty(isl::ctx ctx)
20579 {
20580   auto res = isl_val_neginfty(ctx.release());
20581   return manage(res);
20582 }
20583 
negone(isl::ctx ctx)20584 isl::val val::negone(isl::ctx ctx)
20585 {
20586   auto res = isl_val_negone(ctx.release());
20587   return manage(res);
20588 }
20589 
one(isl::ctx ctx)20590 isl::val val::one(isl::ctx ctx)
20591 {
20592   auto res = isl_val_one(ctx.release());
20593   return manage(res);
20594 }
20595 
pow2()20596 isl::val val::pow2() const
20597 {
20598   auto res = isl_val_pow2(copy());
20599   return manage(res);
20600 }
20601 
set_si(long i)20602 isl::val val::set_si(long i) const
20603 {
20604   auto res = isl_val_set_si(copy(), i);
20605   return manage(res);
20606 }
20607 
sgn()20608 int val::sgn() const
20609 {
20610   auto res = isl_val_sgn(get());
20611   return res;
20612 }
20613 
sub(isl::val v2)20614 isl::val val::sub(isl::val v2) const
20615 {
20616   auto res = isl_val_sub(copy(), v2.release());
20617   return manage(res);
20618 }
20619 
sub_ui(unsigned long v2)20620 isl::val val::sub_ui(unsigned long v2) const
20621 {
20622   auto res = isl_val_sub_ui(copy(), v2);
20623   return manage(res);
20624 }
20625 
trunc()20626 isl::val val::trunc() const
20627 {
20628   auto res = isl_val_trunc(copy());
20629   return manage(res);
20630 }
20631 
zero(isl::ctx ctx)20632 isl::val val::zero(isl::ctx ctx)
20633 {
20634   auto res = isl_val_zero(ctx.release());
20635   return manage(res);
20636 }
20637 
20638 // implementations for isl::val_list
manage(__isl_take isl_val_list * ptr)20639 val_list manage(__isl_take isl_val_list *ptr) {
20640   return val_list(ptr);
20641 }
manage_copy(__isl_keep isl_val_list * ptr)20642 val_list manage_copy(__isl_keep isl_val_list *ptr) {
20643   ptr = isl_val_list_copy(ptr);
20644   return val_list(ptr);
20645 }
20646 
val_list()20647 val_list::val_list()
20648     : ptr(nullptr) {}
20649 
val_list(const val_list & obj)20650 val_list::val_list(const val_list &obj)
20651     : ptr(nullptr)
20652 {
20653   ptr = obj.copy();
20654 }
20655 
20656 
val_list(__isl_take isl_val_list * ptr)20657 val_list::val_list(__isl_take isl_val_list *ptr)
20658     : ptr(ptr) {}
20659 
20660 
20661 val_list &val_list::operator=(val_list obj) {
20662   std::swap(this->ptr, obj.ptr);
20663   return *this;
20664 }
20665 
~val_list()20666 val_list::~val_list() {
20667   if (ptr)
20668     isl_val_list_free(ptr);
20669 }
20670 
copy()20671 __isl_give isl_val_list *val_list::copy() const & {
20672   return isl_val_list_copy(ptr);
20673 }
20674 
get()20675 __isl_keep isl_val_list *val_list::get() const {
20676   return ptr;
20677 }
20678 
release()20679 __isl_give isl_val_list *val_list::release() {
20680   isl_val_list *tmp = ptr;
20681   ptr = nullptr;
20682   return tmp;
20683 }
20684 
is_null()20685 bool val_list::is_null() const {
20686   return ptr == nullptr;
20687 }
20688 
20689 
ctx()20690 isl::ctx val_list::ctx() const {
20691   return isl::ctx(isl_val_list_get_ctx(ptr));
20692 }
20693 
dump()20694 void val_list::dump() const {
20695   isl_val_list_dump(get());
20696 }
20697 
20698 
add(isl::val el)20699 isl::val_list val_list::add(isl::val el) const
20700 {
20701   auto res = isl_val_list_add(copy(), el.release());
20702   return manage(res);
20703 }
20704 
alloc(isl::ctx ctx,int n)20705 isl::val_list val_list::alloc(isl::ctx ctx, int n)
20706 {
20707   auto res = isl_val_list_alloc(ctx.release(), n);
20708   return manage(res);
20709 }
20710 
clear()20711 isl::val_list val_list::clear() const
20712 {
20713   auto res = isl_val_list_clear(copy());
20714   return manage(res);
20715 }
20716 
concat(isl::val_list list2)20717 isl::val_list val_list::concat(isl::val_list list2) const
20718 {
20719   auto res = isl_val_list_concat(copy(), list2.release());
20720   return manage(res);
20721 }
20722 
drop(unsigned int first,unsigned int n)20723 isl::val_list val_list::drop(unsigned int first, unsigned int n) const
20724 {
20725   auto res = isl_val_list_drop(copy(), first, n);
20726   return manage(res);
20727 }
20728 
foreach(const std::function<stat (val)> & fn)20729 stat val_list::foreach(const std::function<stat(val)> &fn) const
20730 {
20731   struct fn_data {
20732     const std::function<stat(val)> *func;
20733   } fn_data = { &fn };
20734   auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
20735     auto *data = static_cast<struct fn_data *>(arg_1);
20736     stat ret = (*data->func)(manage(arg_0));
20737     return ret.release();
20738   };
20739   auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
20740   return manage(res);
20741 }
20742 
from_val(isl::val el)20743 isl::val_list val_list::from_val(isl::val el)
20744 {
20745   auto res = isl_val_list_from_val(el.release());
20746   return manage(res);
20747 }
20748 
get_at(int index)20749 isl::val val_list::get_at(int index) const
20750 {
20751   auto res = isl_val_list_get_at(get(), index);
20752   return manage(res);
20753 }
20754 
get_val(int index)20755 isl::val val_list::get_val(int index) const
20756 {
20757   auto res = isl_val_list_get_val(get(), index);
20758   return manage(res);
20759 }
20760 
insert(unsigned int pos,isl::val el)20761 isl::val_list val_list::insert(unsigned int pos, isl::val el) const
20762 {
20763   auto res = isl_val_list_insert(copy(), pos, el.release());
20764   return manage(res);
20765 }
20766 
n_val()20767 isl_size val_list::n_val() const
20768 {
20769   auto res = isl_val_list_n_val(get());
20770   return res;
20771 }
20772 
reverse()20773 isl::val_list val_list::reverse() const
20774 {
20775   auto res = isl_val_list_reverse(copy());
20776   return manage(res);
20777 }
20778 
set_val(int index,isl::val el)20779 isl::val_list val_list::set_val(int index, isl::val el) const
20780 {
20781   auto res = isl_val_list_set_val(copy(), index, el.release());
20782   return manage(res);
20783 }
20784 
size()20785 isl_size val_list::size() const
20786 {
20787   auto res = isl_val_list_size(get());
20788   return res;
20789 }
20790 
swap(unsigned int pos1,unsigned int pos2)20791 isl::val_list val_list::swap(unsigned int pos1, unsigned int pos2) const
20792 {
20793   auto res = isl_val_list_swap(copy(), pos1, pos2);
20794   return manage(res);
20795 }
20796 
20797 // implementations for isl::vec
manage(__isl_take isl_vec * ptr)20798 vec manage(__isl_take isl_vec *ptr) {
20799   return vec(ptr);
20800 }
manage_copy(__isl_keep isl_vec * ptr)20801 vec manage_copy(__isl_keep isl_vec *ptr) {
20802   ptr = isl_vec_copy(ptr);
20803   return vec(ptr);
20804 }
20805 
vec()20806 vec::vec()
20807     : ptr(nullptr) {}
20808 
vec(const vec & obj)20809 vec::vec(const vec &obj)
20810     : ptr(nullptr)
20811 {
20812   ptr = obj.copy();
20813 }
20814 
20815 
vec(__isl_take isl_vec * ptr)20816 vec::vec(__isl_take isl_vec *ptr)
20817     : ptr(ptr) {}
20818 
20819 
20820 vec &vec::operator=(vec obj) {
20821   std::swap(this->ptr, obj.ptr);
20822   return *this;
20823 }
20824 
~vec()20825 vec::~vec() {
20826   if (ptr)
20827     isl_vec_free(ptr);
20828 }
20829 
copy()20830 __isl_give isl_vec *vec::copy() const & {
20831   return isl_vec_copy(ptr);
20832 }
20833 
get()20834 __isl_keep isl_vec *vec::get() const {
20835   return ptr;
20836 }
20837 
release()20838 __isl_give isl_vec *vec::release() {
20839   isl_vec *tmp = ptr;
20840   ptr = nullptr;
20841   return tmp;
20842 }
20843 
is_null()20844 bool vec::is_null() const {
20845   return ptr == nullptr;
20846 }
20847 
20848 
ctx()20849 isl::ctx vec::ctx() const {
20850   return isl::ctx(isl_vec_get_ctx(ptr));
20851 }
20852 
dump()20853 void vec::dump() const {
20854   isl_vec_dump(get());
20855 }
20856 
20857 
add(isl::vec vec2)20858 isl::vec vec::add(isl::vec vec2) const
20859 {
20860   auto res = isl_vec_add(copy(), vec2.release());
20861   return manage(res);
20862 }
20863 
add_els(unsigned int n)20864 isl::vec vec::add_els(unsigned int n) const
20865 {
20866   auto res = isl_vec_add_els(copy(), n);
20867   return manage(res);
20868 }
20869 
alloc(isl::ctx ctx,unsigned int size)20870 isl::vec vec::alloc(isl::ctx ctx, unsigned int size)
20871 {
20872   auto res = isl_vec_alloc(ctx.release(), size);
20873   return manage(res);
20874 }
20875 
ceil()20876 isl::vec vec::ceil() const
20877 {
20878   auto res = isl_vec_ceil(copy());
20879   return manage(res);
20880 }
20881 
clr()20882 isl::vec vec::clr() const
20883 {
20884   auto res = isl_vec_clr(copy());
20885   return manage(res);
20886 }
20887 
cmp_element(const isl::vec & vec2,int pos)20888 int vec::cmp_element(const isl::vec &vec2, int pos) const
20889 {
20890   auto res = isl_vec_cmp_element(get(), vec2.get(), pos);
20891   return res;
20892 }
20893 
concat(isl::vec vec2)20894 isl::vec vec::concat(isl::vec vec2) const
20895 {
20896   auto res = isl_vec_concat(copy(), vec2.release());
20897   return manage(res);
20898 }
20899 
drop_els(unsigned int pos,unsigned int n)20900 isl::vec vec::drop_els(unsigned int pos, unsigned int n) const
20901 {
20902   auto res = isl_vec_drop_els(copy(), pos, n);
20903   return manage(res);
20904 }
20905 
extend(unsigned int size)20906 isl::vec vec::extend(unsigned int size) const
20907 {
20908   auto res = isl_vec_extend(copy(), size);
20909   return manage(res);
20910 }
20911 
get_element_val(int pos)20912 isl::val vec::get_element_val(int pos) const
20913 {
20914   auto res = isl_vec_get_element_val(get(), pos);
20915   return manage(res);
20916 }
20917 
insert_els(unsigned int pos,unsigned int n)20918 isl::vec vec::insert_els(unsigned int pos, unsigned int n) const
20919 {
20920   auto res = isl_vec_insert_els(copy(), pos, n);
20921   return manage(res);
20922 }
20923 
insert_zero_els(unsigned int pos,unsigned int n)20924 isl::vec vec::insert_zero_els(unsigned int pos, unsigned int n) const
20925 {
20926   auto res = isl_vec_insert_zero_els(copy(), pos, n);
20927   return manage(res);
20928 }
20929 
is_equal(const isl::vec & vec2)20930 boolean vec::is_equal(const isl::vec &vec2) const
20931 {
20932   auto res = isl_vec_is_equal(get(), vec2.get());
20933   return manage(res);
20934 }
20935 
mat_product(isl::mat mat)20936 isl::vec vec::mat_product(isl::mat mat) const
20937 {
20938   auto res = isl_vec_mat_product(copy(), mat.release());
20939   return manage(res);
20940 }
20941 
move_els(unsigned int dst_col,unsigned int src_col,unsigned int n)20942 isl::vec vec::move_els(unsigned int dst_col, unsigned int src_col, unsigned int n) const
20943 {
20944   auto res = isl_vec_move_els(copy(), dst_col, src_col, n);
20945   return manage(res);
20946 }
20947 
neg()20948 isl::vec vec::neg() const
20949 {
20950   auto res = isl_vec_neg(copy());
20951   return manage(res);
20952 }
20953 
set_element_si(int pos,int v)20954 isl::vec vec::set_element_si(int pos, int v) const
20955 {
20956   auto res = isl_vec_set_element_si(copy(), pos, v);
20957   return manage(res);
20958 }
20959 
set_element_val(int pos,isl::val v)20960 isl::vec vec::set_element_val(int pos, isl::val v) const
20961 {
20962   auto res = isl_vec_set_element_val(copy(), pos, v.release());
20963   return manage(res);
20964 }
20965 
set_si(int v)20966 isl::vec vec::set_si(int v) const
20967 {
20968   auto res = isl_vec_set_si(copy(), v);
20969   return manage(res);
20970 }
20971 
set_val(isl::val v)20972 isl::vec vec::set_val(isl::val v) const
20973 {
20974   auto res = isl_vec_set_val(copy(), v.release());
20975   return manage(res);
20976 }
20977 
size()20978 isl_size vec::size() const
20979 {
20980   auto res = isl_vec_size(get());
20981   return res;
20982 }
20983 
sort()20984 isl::vec vec::sort() const
20985 {
20986   auto res = isl_vec_sort(copy());
20987   return manage(res);
20988 }
20989 
zero(isl::ctx ctx,unsigned int size)20990 isl::vec vec::zero(isl::ctx ctx, unsigned int size)
20991 {
20992   auto res = isl_vec_zero(ctx.release(), size);
20993   return manage(res);
20994 }
20995 
zero_extend(unsigned int size)20996 isl::vec vec::zero_extend(unsigned int size) const
20997 {
20998   auto res = isl_vec_zero_extend(copy(), size);
20999   return manage(res);
21000 }
21001 } // namespace noexceptions
21002 } // namespace isl
21003 
21004 #endif /* ISL_CPP_CHECKED */
21005