1 /// These are automatically generated checked C++ bindings for isl.
2 ///
3 /// isl is a library for computing with integer sets and maps described by
4 /// Presburger formulas. On top of this, isl provides various tools for
5 /// polyhedral compilation, ranging from dependence analysis over scheduling
6 /// to AST generation.
7 
8 #ifndef ISL_CPP_CHECKED
9 #define ISL_CPP_CHECKED
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 
14 #include <functional>
15 #include <memory>
16 #include <ostream>
17 #include <string>
18 #include <type_traits>
19 
20 namespace isl {
21 namespace checked {
22 
23 #define ISLPP_STRINGIZE_(X) #X
24 #define ISLPP_STRINGIZE(X) ISLPP_STRINGIZE_(X)
25 
26 #define ISLPP_ASSERT(test, message)                          \
27   do {                                                       \
28     if (test)                                                \
29       break;                                                 \
30     fputs("Assertion \"" #test "\" failed at " __FILE__      \
31       ":" ISLPP_STRINGIZE(__LINE__) "\n  " message "\n",     \
32       stderr);                                               \
33     abort();                                                 \
34   } while (0)
35 
36 /* Class used to check that isl::checked::boolean,
37  * isl::checked::stat and isl::checked::size values are checked for errors.
38  */
39 struct checker {
40 	bool checked = false;
~checkerchecker41 	~checker() {
42 		ISLPP_ASSERT(checked, "IMPLEMENTATION ERROR: Unchecked state");
43 	}
44 };
45 
46 class boolean {
47 private:
48   mutable std::shared_ptr<checker> check = std::make_shared<checker>();
49   isl_bool val;
50 
51   friend boolean manage(isl_bool val);
boolean(isl_bool val)52   boolean(isl_bool val): val(val) {}
53 public:
error()54   static boolean error() {
55     return boolean(isl_bool_error);
56   }
boolean()57   boolean()
58       : val(isl_bool_error) {}
59 
boolean(bool val)60   /* implicit */ boolean(bool val)
61       : val(val ? isl_bool_true : isl_bool_false) {}
62 
release()63   isl_bool release() {
64     auto tmp = val;
65     val = isl_bool_error;
66     check->checked = true;
67     return tmp;
68   }
69 
is_error()70   bool is_error() const { check->checked = true; return val == isl_bool_error; }
is_false()71   bool is_false() const { check->checked = true; return val == isl_bool_false; }
is_true()72   bool is_true() const { check->checked = true; return val == isl_bool_true; }
73 
74   explicit operator bool() const {
75     ISLPP_ASSERT(check->checked, "IMPLEMENTATION ERROR: Unchecked error state");
76     ISLPP_ASSERT(!is_error(), "IMPLEMENTATION ERROR: Unhandled error state");
77     return is_true();
78   }
79 
negate()80   boolean negate() {
81     if (val == isl_bool_true)
82       val = isl_bool_false;
83     else if (val == isl_bool_false)
84       val = isl_bool_true;
85     return *this;
86   }
87 
88   boolean operator!() const {
89     return boolean(*this).negate();
90   }
91 };
92 
manage(isl_bool val)93 inline boolean manage(isl_bool val) {
94   return boolean(val);
95 }
96 
97 class ctx {
98   isl_ctx *ptr;
99 public:
ctx(isl_ctx * ctx)100   /* implicit */ ctx(isl_ctx *ctx)
101       : ptr(ctx) {}
release()102   isl_ctx *release() {
103     auto tmp = ptr;
104     ptr = nullptr;
105     return tmp;
106   }
get()107   isl_ctx *get() {
108     return ptr;
109   }
110 };
111 
112 /* Class encapsulating an isl_stat value.
113  */
114 class stat {
115 private:
116 	mutable std::shared_ptr<checker> check = std::make_shared<checker>();
117 	isl_stat val;
118 
119 	friend stat manage(isl_stat val);
stat(isl_stat val)120 	stat(isl_stat val) : val(val) {}
121 public:
ok()122 	static stat ok() {
123 		return stat(isl_stat_ok);
124 	}
error()125 	static stat error() {
126 		return stat(isl_stat_error);
127 	}
stat()128 	stat() : val(isl_stat_error) {}
129 
release()130 	isl_stat release() {
131 		check->checked = true;
132 		return val;
133 	}
134 
is_error()135 	bool is_error() const {
136 		check->checked = true;
137 		return val == isl_stat_error;
138 	}
is_ok()139 	bool is_ok() const {
140 		check->checked = true;
141 		return val == isl_stat_ok;
142 	}
143 };
144 
manage(isl_stat val)145 inline stat manage(isl_stat val)
146 {
147 	return stat(val);
148 }
149 
150 /* Class encapsulating an isl_size value.
151  */
152 class size {
153 private:
154 	mutable std::shared_ptr<checker> check = std::make_shared<checker>();
155 	isl_size val;
156 
157 	friend size manage(isl_size val);
size(isl_size val)158 	size(isl_size val) : val(val) {}
159 public:
size()160 	size() : val(isl_size_error) {}
161 
release()162 	isl_size release() {
163 		auto tmp = val;
164 		val = isl_size_error;
165 		check->checked = true;
166 		return tmp;
167 	}
168 
is_error()169 	bool is_error() const {
170 		check->checked = true;
171 		return val == isl_size_error;
172 	}
173 
174 	explicit operator unsigned() const {
175 		ISLPP_ASSERT(check->checked,
176 			    "IMPLEMENTATION ERROR: Unchecked error state");
177 		ISLPP_ASSERT(!is_error(),
178 			    "IMPLEMENTATION ERROR: Unhandled error state");
179 		return val;
180 	}
181 };
182 
manage(isl_size val)183 inline size manage(isl_size val)
184 {
185 	return size(val);
186 }
187 
188 }
189 } // namespace isl
190 
191 #include <isl/id.h>
192 #include <isl/space.h>
193 #include <isl/val.h>
194 #include <isl/aff.h>
195 #include <isl/set.h>
196 #include <isl/map.h>
197 #include <isl/ilp.h>
198 #include <isl/union_set.h>
199 #include <isl/union_map.h>
200 #include <isl/flow.h>
201 #include <isl/schedule.h>
202 #include <isl/schedule_node.h>
203 #include <isl/ast_build.h>
204 #include <isl/fixed_box.h>
205 
206 namespace isl {
207 
208 namespace checked {
209 
210 // forward declarations
211 class aff;
212 class aff_list;
213 class ast_build;
214 class ast_expr;
215 class ast_expr_id;
216 class ast_expr_int;
217 class ast_expr_op;
218 class ast_expr_op_access;
219 class ast_expr_op_add;
220 class ast_expr_op_address_of;
221 class ast_expr_op_and;
222 class ast_expr_op_and_then;
223 class ast_expr_op_call;
224 class ast_expr_op_cond;
225 class ast_expr_op_div;
226 class ast_expr_op_eq;
227 class ast_expr_op_fdiv_q;
228 class ast_expr_op_ge;
229 class ast_expr_op_gt;
230 class ast_expr_op_le;
231 class ast_expr_op_lt;
232 class ast_expr_op_max;
233 class ast_expr_op_member;
234 class ast_expr_op_min;
235 class ast_expr_op_minus;
236 class ast_expr_op_mul;
237 class ast_expr_op_or;
238 class ast_expr_op_or_else;
239 class ast_expr_op_pdiv_q;
240 class ast_expr_op_pdiv_r;
241 class ast_expr_op_select;
242 class ast_expr_op_sub;
243 class ast_expr_op_zdiv_r;
244 class ast_node;
245 class ast_node_block;
246 class ast_node_for;
247 class ast_node_if;
248 class ast_node_list;
249 class ast_node_mark;
250 class ast_node_user;
251 class basic_map;
252 class basic_set;
253 class fixed_box;
254 class id;
255 class id_list;
256 class map;
257 class map_list;
258 class multi_aff;
259 class multi_id;
260 class multi_pw_aff;
261 class multi_union_pw_aff;
262 class multi_val;
263 class point;
264 class pw_aff;
265 class pw_aff_list;
266 class pw_multi_aff;
267 class pw_multi_aff_list;
268 class schedule;
269 class schedule_constraints;
270 class schedule_node;
271 class schedule_node_band;
272 class schedule_node_context;
273 class schedule_node_domain;
274 class schedule_node_expansion;
275 class schedule_node_extension;
276 class schedule_node_filter;
277 class schedule_node_guard;
278 class schedule_node_leaf;
279 class schedule_node_mark;
280 class schedule_node_sequence;
281 class schedule_node_set;
282 class set;
283 class set_list;
284 class space;
285 class union_access_info;
286 class union_flow;
287 class union_map;
288 class union_pw_aff;
289 class union_pw_aff_list;
290 class union_pw_multi_aff;
291 class union_set;
292 class union_set_list;
293 class val;
294 class val_list;
295 
296 // declarations for isl::aff
297 inline aff manage(__isl_take isl_aff *ptr);
298 inline aff manage_copy(__isl_keep isl_aff *ptr);
299 
300 class aff {
301   friend inline aff manage(__isl_take isl_aff *ptr);
302   friend inline aff manage_copy(__isl_keep isl_aff *ptr);
303 
304 protected:
305   isl_aff *ptr = nullptr;
306 
307   inline explicit aff(__isl_take isl_aff *ptr);
308 
309 public:
310   inline /* implicit */ aff();
311   inline /* implicit */ aff(const aff &obj);
312   inline explicit aff(isl::checked::ctx ctx, const std::string &str);
313   inline aff &operator=(aff obj);
314   inline ~aff();
315   inline __isl_give isl_aff *copy() const &;
316   inline __isl_give isl_aff *copy() && = delete;
317   inline __isl_keep isl_aff *get() const;
318   inline __isl_give isl_aff *release();
319   inline bool is_null() const;
320   inline isl::checked::ctx ctx() const;
321 
322   inline isl::checked::aff add(isl::checked::aff aff2) const;
323   inline isl::checked::multi_aff add(const isl::checked::multi_aff &multi2) const;
324   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
325   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
326   inline isl::checked::pw_aff add(const isl::checked::pw_aff &pwaff2) const;
327   inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
328   inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
329   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
330   inline isl::checked::aff add_constant(isl::checked::val v) const;
331   inline isl::checked::aff add_constant(long v) const;
332   inline isl::checked::multi_aff add_constant(const isl::checked::multi_val &mv) const;
333   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
334   inline isl::checked::aff as_aff() const;
335   inline isl::checked::map as_map() const;
336   inline isl::checked::multi_aff as_multi_aff() const;
337   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
338   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
339   inline isl::checked::set as_set() const;
340   inline isl::checked::union_map as_union_map() const;
341   inline isl::checked::aff at(int pos) const;
342   inline isl::checked::basic_set bind(isl::checked::id id) const;
343   inline isl::checked::basic_set bind(const std::string &id) const;
344   inline isl::checked::basic_set bind(const isl::checked::multi_id &tuple) const;
345   inline isl::checked::pw_aff bind_domain(const isl::checked::multi_id &tuple) const;
346   inline isl::checked::pw_aff bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const;
347   inline isl::checked::aff ceil() const;
348   inline isl::checked::pw_aff coalesce() const;
349   inline isl::checked::pw_aff cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const;
350   inline isl::checked::multi_val constant_multi_val() const;
351   inline isl::checked::val constant_val() const;
352   inline isl::checked::val get_constant_val() const;
353   inline isl::checked::aff div(isl::checked::aff aff2) const;
354   inline isl::checked::pw_aff div(const isl::checked::pw_aff &pa2) const;
355   inline isl::checked::set domain() const;
356   inline isl::checked::set eq_set(isl::checked::aff aff2) const;
357   inline isl::checked::set eq_set(const isl::checked::pw_aff &pwaff2) const;
358   inline isl::checked::val eval(isl::checked::point pnt) const;
359   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
360   inline isl::checked::multi_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
361   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
362   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
363   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
364   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
365   inline isl::checked::aff floor() const;
366   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
367   inline isl::checked::set ge_set(isl::checked::aff aff2) const;
368   inline isl::checked::set ge_set(const isl::checked::pw_aff &pwaff2) const;
369   inline isl::checked::aff gist(isl::checked::set context) const;
370   inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
371   inline isl::checked::aff gist(const isl::checked::basic_set &context) const;
372   inline isl::checked::aff gist(const isl::checked::point &context) const;
373   inline isl::checked::set gt_set(isl::checked::aff aff2) const;
374   inline isl::checked::set gt_set(const isl::checked::pw_aff &pwaff2) const;
375   inline boolean has_range_tuple_id() const;
376   inline isl::checked::multi_aff identity() const;
377   inline isl::checked::pw_aff insert_domain(const isl::checked::space &domain) const;
378   inline isl::checked::pw_aff intersect_domain(const isl::checked::set &set) const;
379   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
380   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
381   inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
382   inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
383   inline isl::checked::pw_aff intersect_params(const isl::checked::set &set) const;
384   inline boolean involves_locals() const;
385   inline boolean involves_nan() const;
386   inline boolean involves_param(const isl::checked::id &id) const;
387   inline boolean involves_param(const std::string &id) const;
388   inline boolean involves_param(const isl::checked::id_list &list) const;
389   inline boolean is_cst() const;
390   inline boolean isa_aff() const;
391   inline boolean isa_multi_aff() const;
392   inline boolean isa_pw_multi_aff() const;
393   inline isl::checked::set le_set(isl::checked::aff aff2) const;
394   inline isl::checked::set le_set(const isl::checked::pw_aff &pwaff2) const;
395   inline isl::checked::aff_list list() const;
396   inline isl::checked::set lt_set(isl::checked::aff aff2) const;
397   inline isl::checked::set lt_set(const isl::checked::pw_aff &pwaff2) const;
398   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
399   inline isl::checked::pw_aff max(const isl::checked::pw_aff &pwaff2) const;
400   inline isl::checked::multi_val max_multi_val() const;
401   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
402   inline isl::checked::pw_aff min(const isl::checked::pw_aff &pwaff2) const;
403   inline isl::checked::multi_val min_multi_val() const;
404   inline isl::checked::aff mod(isl::checked::val mod) const;
405   inline isl::checked::aff mod(long mod) const;
406   inline isl::checked::aff mul(isl::checked::aff aff2) const;
407   inline isl::checked::pw_aff mul(const isl::checked::pw_aff &pwaff2) const;
408   inline class size n_piece() const;
409   inline isl::checked::set ne_set(isl::checked::aff aff2) const;
410   inline isl::checked::set ne_set(const isl::checked::pw_aff &pwaff2) const;
411   inline isl::checked::aff neg() const;
412   inline boolean plain_is_empty() const;
413   inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
414   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
415   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
416   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
417   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
418   inline isl::checked::multi_aff product(const isl::checked::multi_aff &multi2) const;
419   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
420   inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
421   inline isl::checked::aff pullback(isl::checked::multi_aff ma) const;
422   inline isl::checked::pw_aff pullback(const isl::checked::multi_pw_aff &mpa) const;
423   inline isl::checked::pw_aff pullback(const isl::checked::pw_multi_aff &pma) const;
424   inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
425   inline isl::checked::aff pullback(const isl::checked::aff &ma) const;
426   inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
427   inline isl::checked::pw_multi_aff range_factor_domain() const;
428   inline isl::checked::pw_multi_aff range_factor_range() const;
429   inline isl::checked::multi_aff range_product(const isl::checked::multi_aff &multi2) const;
430   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
431   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
432   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
433   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
434   inline isl::checked::id range_tuple_id() const;
435   inline isl::checked::multi_aff reset_range_tuple_id() const;
436   inline isl::checked::aff scale(isl::checked::val v) const;
437   inline isl::checked::aff scale(long v) const;
438   inline isl::checked::multi_aff scale(const isl::checked::multi_val &mv) const;
439   inline isl::checked::aff scale_down(isl::checked::val v) const;
440   inline isl::checked::aff scale_down(long v) const;
441   inline isl::checked::multi_aff scale_down(const isl::checked::multi_val &mv) const;
442   inline isl::checked::multi_aff set_at(int pos, const isl::checked::aff &el) const;
443   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
444   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
445   inline isl::checked::multi_aff set_range_tuple(const isl::checked::id &id) const;
446   inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
447   inline class size size() const;
448   inline isl::checked::space space() const;
449   inline isl::checked::aff sub(isl::checked::aff aff2) const;
450   inline isl::checked::multi_aff sub(const isl::checked::multi_aff &multi2) const;
451   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
452   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
453   inline isl::checked::pw_aff sub(const isl::checked::pw_aff &pwaff2) const;
454   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
455   inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
456   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
457   inline isl::checked::pw_aff subtract_domain(const isl::checked::set &set) const;
458   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
459   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
460   inline isl::checked::pw_aff tdiv_q(const isl::checked::pw_aff &pa2) const;
461   inline isl::checked::pw_aff tdiv_r(const isl::checked::pw_aff &pa2) const;
462   inline isl::checked::aff_list to_list() const;
463   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
464   inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
465   inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
466   inline isl::checked::union_pw_aff to_union_pw_aff() const;
467   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
468   inline isl::checked::aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
469   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
470   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
471   inline isl::checked::pw_aff union_add(const isl::checked::pw_aff &pwaff2) const;
472   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
473   inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
474   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
475   static inline isl::checked::aff zero_on_domain(isl::checked::space space);
476 };
477 
478 // declarations for isl::aff_list
479 inline aff_list manage(__isl_take isl_aff_list *ptr);
480 inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
481 
482 class aff_list {
483   friend inline aff_list manage(__isl_take isl_aff_list *ptr);
484   friend inline aff_list manage_copy(__isl_keep isl_aff_list *ptr);
485 
486 protected:
487   isl_aff_list *ptr = nullptr;
488 
489   inline explicit aff_list(__isl_take isl_aff_list *ptr);
490 
491 public:
492   inline /* implicit */ aff_list();
493   inline /* implicit */ aff_list(const aff_list &obj);
494   inline explicit aff_list(isl::checked::ctx ctx, int n);
495   inline explicit aff_list(isl::checked::aff el);
496   inline explicit aff_list(isl::checked::ctx ctx, const std::string &str);
497   inline aff_list &operator=(aff_list obj);
498   inline ~aff_list();
499   inline __isl_give isl_aff_list *copy() const &;
500   inline __isl_give isl_aff_list *copy() && = delete;
501   inline __isl_keep isl_aff_list *get() const;
502   inline __isl_give isl_aff_list *release();
503   inline bool is_null() const;
504   inline isl::checked::ctx ctx() const;
505 
506   inline isl::checked::aff_list add(isl::checked::aff el) const;
507   inline isl::checked::aff at(int index) const;
508   inline isl::checked::aff get_at(int index) const;
509   inline isl::checked::aff_list clear() const;
510   inline isl::checked::aff_list concat(isl::checked::aff_list list2) const;
511   inline isl::checked::aff_list drop(unsigned int first, unsigned int n) const;
512   inline stat foreach(const std::function<stat(isl::checked::aff)> &fn) const;
513   inline isl::checked::aff_list insert(unsigned int pos, isl::checked::aff el) const;
514   inline class size size() const;
515 };
516 
517 // declarations for isl::ast_build
518 inline ast_build manage(__isl_take isl_ast_build *ptr);
519 inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
520 
521 class ast_build {
522   friend inline ast_build manage(__isl_take isl_ast_build *ptr);
523   friend inline ast_build manage_copy(__isl_keep isl_ast_build *ptr);
524 
525 protected:
526   isl_ast_build *ptr = nullptr;
527 
528   inline explicit ast_build(__isl_take isl_ast_build *ptr);
529 
530 public:
531   inline /* implicit */ ast_build();
532   inline /* implicit */ ast_build(const ast_build &obj);
533   inline explicit ast_build(isl::checked::ctx ctx);
534   inline ast_build &operator=(ast_build obj);
535   inline ~ast_build();
536   inline __isl_give isl_ast_build *copy() const &;
537   inline __isl_give isl_ast_build *copy() && = delete;
538   inline __isl_keep isl_ast_build *get() const;
539   inline __isl_give isl_ast_build *release();
540   inline bool is_null() const;
541   inline isl::checked::ctx ctx() const;
542 
543 private:
544   inline ast_build &copy_callbacks(const ast_build &obj);
545   struct at_each_domain_data {
546     std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> func;
547   };
548   std::shared_ptr<at_each_domain_data> at_each_domain_data;
549   static inline isl_ast_node *at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2);
550   inline void set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn);
551 public:
552   inline isl::checked::ast_build set_at_each_domain(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn) const;
553   inline isl::checked::ast_expr access_from(isl::checked::multi_pw_aff mpa) const;
554   inline isl::checked::ast_expr access_from(isl::checked::pw_multi_aff pma) const;
555   inline isl::checked::ast_expr call_from(isl::checked::multi_pw_aff mpa) const;
556   inline isl::checked::ast_expr call_from(isl::checked::pw_multi_aff pma) const;
557   inline isl::checked::ast_expr expr_from(isl::checked::pw_aff pa) const;
558   inline isl::checked::ast_expr expr_from(isl::checked::set set) const;
559   static inline isl::checked::ast_build from_context(isl::checked::set set);
560   inline isl::checked::ast_node node_from(isl::checked::schedule schedule) const;
561   inline isl::checked::ast_node node_from_schedule_map(isl::checked::union_map schedule) const;
562   inline isl::checked::union_map schedule() const;
563   inline isl::checked::union_map get_schedule() const;
564 };
565 
566 // declarations for isl::ast_expr
567 inline ast_expr manage(__isl_take isl_ast_expr *ptr);
568 inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
569 
570 class ast_expr {
571   friend inline ast_expr manage(__isl_take isl_ast_expr *ptr);
572   friend inline ast_expr manage_copy(__isl_keep isl_ast_expr *ptr);
573 
574 protected:
575   isl_ast_expr *ptr = nullptr;
576 
577   inline explicit ast_expr(__isl_take isl_ast_expr *ptr);
578 
579 public:
580   inline /* implicit */ ast_expr();
581   inline /* implicit */ ast_expr(const ast_expr &obj);
582   inline ast_expr &operator=(ast_expr obj);
583   inline ~ast_expr();
584   inline __isl_give isl_ast_expr *copy() const &;
585   inline __isl_give isl_ast_expr *copy() && = delete;
586   inline __isl_keep isl_ast_expr *get() const;
587   inline __isl_give isl_ast_expr *release();
588   inline bool is_null() const;
589 private:
590   template <typename T,
591           typename = typename std::enable_if<std::is_same<
592                   const decltype(isl_ast_expr_get_type(NULL)),
593                   const T>::value>::type>
594   inline boolean isa_type(T subtype) const;
595 public:
596   template <class T> inline boolean isa() const;
597   template <class T> inline T as() const;
598   inline isl::checked::ctx ctx() const;
599 
600   inline std::string to_C_str() const;
601 };
602 
603 // declarations for isl::ast_expr_id
604 
605 class ast_expr_id : public ast_expr {
606   template <class T>
607   friend boolean ast_expr::isa() const;
608   friend ast_expr_id ast_expr::as<ast_expr_id>() const;
609   static const auto type = isl_ast_expr_id;
610 
611 protected:
612   inline explicit ast_expr_id(__isl_take isl_ast_expr *ptr);
613 
614 public:
615   inline /* implicit */ ast_expr_id();
616   inline /* implicit */ ast_expr_id(const ast_expr_id &obj);
617   inline ast_expr_id &operator=(ast_expr_id obj);
618   inline isl::checked::ctx ctx() const;
619 
620   inline isl::checked::id id() const;
621   inline isl::checked::id get_id() const;
622 };
623 
624 // declarations for isl::ast_expr_int
625 
626 class ast_expr_int : public ast_expr {
627   template <class T>
628   friend boolean ast_expr::isa() const;
629   friend ast_expr_int ast_expr::as<ast_expr_int>() const;
630   static const auto type = isl_ast_expr_int;
631 
632 protected:
633   inline explicit ast_expr_int(__isl_take isl_ast_expr *ptr);
634 
635 public:
636   inline /* implicit */ ast_expr_int();
637   inline /* implicit */ ast_expr_int(const ast_expr_int &obj);
638   inline ast_expr_int &operator=(ast_expr_int obj);
639   inline isl::checked::ctx ctx() const;
640 
641   inline isl::checked::val val() const;
642   inline isl::checked::val get_val() const;
643 };
644 
645 // declarations for isl::ast_expr_op
646 
647 class ast_expr_op : public ast_expr {
648   template <class T>
649   friend boolean ast_expr::isa() const;
650   friend ast_expr_op ast_expr::as<ast_expr_op>() const;
651   static const auto type = isl_ast_expr_op;
652 
653 protected:
654   inline explicit ast_expr_op(__isl_take isl_ast_expr *ptr);
655 
656 public:
657   inline /* implicit */ ast_expr_op();
658   inline /* implicit */ ast_expr_op(const ast_expr_op &obj);
659   inline ast_expr_op &operator=(ast_expr_op obj);
660 private:
661   template <typename T,
662           typename = typename std::enable_if<std::is_same<
663                   const decltype(isl_ast_expr_op_get_type(NULL)),
664                   const T>::value>::type>
665   inline boolean isa_type(T subtype) const;
666 public:
667   template <class T> inline boolean isa() const;
668   template <class T> inline T as() const;
669   inline isl::checked::ctx ctx() const;
670 
671   inline isl::checked::ast_expr arg(int pos) const;
672   inline isl::checked::ast_expr get_arg(int pos) const;
673   inline class size n_arg() const;
674   inline class size get_n_arg() const;
675 };
676 
677 // declarations for isl::ast_expr_op_access
678 
679 class ast_expr_op_access : public ast_expr_op {
680   template <class T>
681   friend boolean ast_expr_op::isa() const;
682   friend ast_expr_op_access ast_expr_op::as<ast_expr_op_access>() const;
683   static const auto type = isl_ast_expr_op_access;
684 
685 protected:
686   inline explicit ast_expr_op_access(__isl_take isl_ast_expr *ptr);
687 
688 public:
689   inline /* implicit */ ast_expr_op_access();
690   inline /* implicit */ ast_expr_op_access(const ast_expr_op_access &obj);
691   inline ast_expr_op_access &operator=(ast_expr_op_access obj);
692   inline isl::checked::ctx ctx() const;
693 
694 };
695 
696 // declarations for isl::ast_expr_op_add
697 
698 class ast_expr_op_add : public ast_expr_op {
699   template <class T>
700   friend boolean ast_expr_op::isa() const;
701   friend ast_expr_op_add ast_expr_op::as<ast_expr_op_add>() const;
702   static const auto type = isl_ast_expr_op_add;
703 
704 protected:
705   inline explicit ast_expr_op_add(__isl_take isl_ast_expr *ptr);
706 
707 public:
708   inline /* implicit */ ast_expr_op_add();
709   inline /* implicit */ ast_expr_op_add(const ast_expr_op_add &obj);
710   inline ast_expr_op_add &operator=(ast_expr_op_add obj);
711   inline isl::checked::ctx ctx() const;
712 
713 };
714 
715 // declarations for isl::ast_expr_op_address_of
716 
717 class ast_expr_op_address_of : public ast_expr_op {
718   template <class T>
719   friend boolean ast_expr_op::isa() const;
720   friend ast_expr_op_address_of ast_expr_op::as<ast_expr_op_address_of>() const;
721   static const auto type = isl_ast_expr_op_address_of;
722 
723 protected:
724   inline explicit ast_expr_op_address_of(__isl_take isl_ast_expr *ptr);
725 
726 public:
727   inline /* implicit */ ast_expr_op_address_of();
728   inline /* implicit */ ast_expr_op_address_of(const ast_expr_op_address_of &obj);
729   inline ast_expr_op_address_of &operator=(ast_expr_op_address_of obj);
730   inline isl::checked::ctx ctx() const;
731 
732 };
733 
734 // declarations for isl::ast_expr_op_and
735 
736 class ast_expr_op_and : public ast_expr_op {
737   template <class T>
738   friend boolean ast_expr_op::isa() const;
739   friend ast_expr_op_and ast_expr_op::as<ast_expr_op_and>() const;
740   static const auto type = isl_ast_expr_op_and;
741 
742 protected:
743   inline explicit ast_expr_op_and(__isl_take isl_ast_expr *ptr);
744 
745 public:
746   inline /* implicit */ ast_expr_op_and();
747   inline /* implicit */ ast_expr_op_and(const ast_expr_op_and &obj);
748   inline ast_expr_op_and &operator=(ast_expr_op_and obj);
749   inline isl::checked::ctx ctx() const;
750 
751 };
752 
753 // declarations for isl::ast_expr_op_and_then
754 
755 class ast_expr_op_and_then : public ast_expr_op {
756   template <class T>
757   friend boolean ast_expr_op::isa() const;
758   friend ast_expr_op_and_then ast_expr_op::as<ast_expr_op_and_then>() const;
759   static const auto type = isl_ast_expr_op_and_then;
760 
761 protected:
762   inline explicit ast_expr_op_and_then(__isl_take isl_ast_expr *ptr);
763 
764 public:
765   inline /* implicit */ ast_expr_op_and_then();
766   inline /* implicit */ ast_expr_op_and_then(const ast_expr_op_and_then &obj);
767   inline ast_expr_op_and_then &operator=(ast_expr_op_and_then obj);
768   inline isl::checked::ctx ctx() const;
769 
770 };
771 
772 // declarations for isl::ast_expr_op_call
773 
774 class ast_expr_op_call : public ast_expr_op {
775   template <class T>
776   friend boolean ast_expr_op::isa() const;
777   friend ast_expr_op_call ast_expr_op::as<ast_expr_op_call>() const;
778   static const auto type = isl_ast_expr_op_call;
779 
780 protected:
781   inline explicit ast_expr_op_call(__isl_take isl_ast_expr *ptr);
782 
783 public:
784   inline /* implicit */ ast_expr_op_call();
785   inline /* implicit */ ast_expr_op_call(const ast_expr_op_call &obj);
786   inline ast_expr_op_call &operator=(ast_expr_op_call obj);
787   inline isl::checked::ctx ctx() const;
788 
789 };
790 
791 // declarations for isl::ast_expr_op_cond
792 
793 class ast_expr_op_cond : public ast_expr_op {
794   template <class T>
795   friend boolean ast_expr_op::isa() const;
796   friend ast_expr_op_cond ast_expr_op::as<ast_expr_op_cond>() const;
797   static const auto type = isl_ast_expr_op_cond;
798 
799 protected:
800   inline explicit ast_expr_op_cond(__isl_take isl_ast_expr *ptr);
801 
802 public:
803   inline /* implicit */ ast_expr_op_cond();
804   inline /* implicit */ ast_expr_op_cond(const ast_expr_op_cond &obj);
805   inline ast_expr_op_cond &operator=(ast_expr_op_cond obj);
806   inline isl::checked::ctx ctx() const;
807 
808 };
809 
810 // declarations for isl::ast_expr_op_div
811 
812 class ast_expr_op_div : public ast_expr_op {
813   template <class T>
814   friend boolean ast_expr_op::isa() const;
815   friend ast_expr_op_div ast_expr_op::as<ast_expr_op_div>() const;
816   static const auto type = isl_ast_expr_op_div;
817 
818 protected:
819   inline explicit ast_expr_op_div(__isl_take isl_ast_expr *ptr);
820 
821 public:
822   inline /* implicit */ ast_expr_op_div();
823   inline /* implicit */ ast_expr_op_div(const ast_expr_op_div &obj);
824   inline ast_expr_op_div &operator=(ast_expr_op_div obj);
825   inline isl::checked::ctx ctx() const;
826 
827 };
828 
829 // declarations for isl::ast_expr_op_eq
830 
831 class ast_expr_op_eq : public ast_expr_op {
832   template <class T>
833   friend boolean ast_expr_op::isa() const;
834   friend ast_expr_op_eq ast_expr_op::as<ast_expr_op_eq>() const;
835   static const auto type = isl_ast_expr_op_eq;
836 
837 protected:
838   inline explicit ast_expr_op_eq(__isl_take isl_ast_expr *ptr);
839 
840 public:
841   inline /* implicit */ ast_expr_op_eq();
842   inline /* implicit */ ast_expr_op_eq(const ast_expr_op_eq &obj);
843   inline ast_expr_op_eq &operator=(ast_expr_op_eq obj);
844   inline isl::checked::ctx ctx() const;
845 
846 };
847 
848 // declarations for isl::ast_expr_op_fdiv_q
849 
850 class ast_expr_op_fdiv_q : public ast_expr_op {
851   template <class T>
852   friend boolean ast_expr_op::isa() const;
853   friend ast_expr_op_fdiv_q ast_expr_op::as<ast_expr_op_fdiv_q>() const;
854   static const auto type = isl_ast_expr_op_fdiv_q;
855 
856 protected:
857   inline explicit ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr);
858 
859 public:
860   inline /* implicit */ ast_expr_op_fdiv_q();
861   inline /* implicit */ ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj);
862   inline ast_expr_op_fdiv_q &operator=(ast_expr_op_fdiv_q obj);
863   inline isl::checked::ctx ctx() const;
864 
865 };
866 
867 // declarations for isl::ast_expr_op_ge
868 
869 class ast_expr_op_ge : public ast_expr_op {
870   template <class T>
871   friend boolean ast_expr_op::isa() const;
872   friend ast_expr_op_ge ast_expr_op::as<ast_expr_op_ge>() const;
873   static const auto type = isl_ast_expr_op_ge;
874 
875 protected:
876   inline explicit ast_expr_op_ge(__isl_take isl_ast_expr *ptr);
877 
878 public:
879   inline /* implicit */ ast_expr_op_ge();
880   inline /* implicit */ ast_expr_op_ge(const ast_expr_op_ge &obj);
881   inline ast_expr_op_ge &operator=(ast_expr_op_ge obj);
882   inline isl::checked::ctx ctx() const;
883 
884 };
885 
886 // declarations for isl::ast_expr_op_gt
887 
888 class ast_expr_op_gt : public ast_expr_op {
889   template <class T>
890   friend boolean ast_expr_op::isa() const;
891   friend ast_expr_op_gt ast_expr_op::as<ast_expr_op_gt>() const;
892   static const auto type = isl_ast_expr_op_gt;
893 
894 protected:
895   inline explicit ast_expr_op_gt(__isl_take isl_ast_expr *ptr);
896 
897 public:
898   inline /* implicit */ ast_expr_op_gt();
899   inline /* implicit */ ast_expr_op_gt(const ast_expr_op_gt &obj);
900   inline ast_expr_op_gt &operator=(ast_expr_op_gt obj);
901   inline isl::checked::ctx ctx() const;
902 
903 };
904 
905 // declarations for isl::ast_expr_op_le
906 
907 class ast_expr_op_le : public ast_expr_op {
908   template <class T>
909   friend boolean ast_expr_op::isa() const;
910   friend ast_expr_op_le ast_expr_op::as<ast_expr_op_le>() const;
911   static const auto type = isl_ast_expr_op_le;
912 
913 protected:
914   inline explicit ast_expr_op_le(__isl_take isl_ast_expr *ptr);
915 
916 public:
917   inline /* implicit */ ast_expr_op_le();
918   inline /* implicit */ ast_expr_op_le(const ast_expr_op_le &obj);
919   inline ast_expr_op_le &operator=(ast_expr_op_le obj);
920   inline isl::checked::ctx ctx() const;
921 
922 };
923 
924 // declarations for isl::ast_expr_op_lt
925 
926 class ast_expr_op_lt : public ast_expr_op {
927   template <class T>
928   friend boolean ast_expr_op::isa() const;
929   friend ast_expr_op_lt ast_expr_op::as<ast_expr_op_lt>() const;
930   static const auto type = isl_ast_expr_op_lt;
931 
932 protected:
933   inline explicit ast_expr_op_lt(__isl_take isl_ast_expr *ptr);
934 
935 public:
936   inline /* implicit */ ast_expr_op_lt();
937   inline /* implicit */ ast_expr_op_lt(const ast_expr_op_lt &obj);
938   inline ast_expr_op_lt &operator=(ast_expr_op_lt obj);
939   inline isl::checked::ctx ctx() const;
940 
941 };
942 
943 // declarations for isl::ast_expr_op_max
944 
945 class ast_expr_op_max : public ast_expr_op {
946   template <class T>
947   friend boolean ast_expr_op::isa() const;
948   friend ast_expr_op_max ast_expr_op::as<ast_expr_op_max>() const;
949   static const auto type = isl_ast_expr_op_max;
950 
951 protected:
952   inline explicit ast_expr_op_max(__isl_take isl_ast_expr *ptr);
953 
954 public:
955   inline /* implicit */ ast_expr_op_max();
956   inline /* implicit */ ast_expr_op_max(const ast_expr_op_max &obj);
957   inline ast_expr_op_max &operator=(ast_expr_op_max obj);
958   inline isl::checked::ctx ctx() const;
959 
960 };
961 
962 // declarations for isl::ast_expr_op_member
963 
964 class ast_expr_op_member : public ast_expr_op {
965   template <class T>
966   friend boolean ast_expr_op::isa() const;
967   friend ast_expr_op_member ast_expr_op::as<ast_expr_op_member>() const;
968   static const auto type = isl_ast_expr_op_member;
969 
970 protected:
971   inline explicit ast_expr_op_member(__isl_take isl_ast_expr *ptr);
972 
973 public:
974   inline /* implicit */ ast_expr_op_member();
975   inline /* implicit */ ast_expr_op_member(const ast_expr_op_member &obj);
976   inline ast_expr_op_member &operator=(ast_expr_op_member obj);
977   inline isl::checked::ctx ctx() const;
978 
979 };
980 
981 // declarations for isl::ast_expr_op_min
982 
983 class ast_expr_op_min : public ast_expr_op {
984   template <class T>
985   friend boolean ast_expr_op::isa() const;
986   friend ast_expr_op_min ast_expr_op::as<ast_expr_op_min>() const;
987   static const auto type = isl_ast_expr_op_min;
988 
989 protected:
990   inline explicit ast_expr_op_min(__isl_take isl_ast_expr *ptr);
991 
992 public:
993   inline /* implicit */ ast_expr_op_min();
994   inline /* implicit */ ast_expr_op_min(const ast_expr_op_min &obj);
995   inline ast_expr_op_min &operator=(ast_expr_op_min obj);
996   inline isl::checked::ctx ctx() const;
997 
998 };
999 
1000 // declarations for isl::ast_expr_op_minus
1001 
1002 class ast_expr_op_minus : public ast_expr_op {
1003   template <class T>
1004   friend boolean ast_expr_op::isa() const;
1005   friend ast_expr_op_minus ast_expr_op::as<ast_expr_op_minus>() const;
1006   static const auto type = isl_ast_expr_op_minus;
1007 
1008 protected:
1009   inline explicit ast_expr_op_minus(__isl_take isl_ast_expr *ptr);
1010 
1011 public:
1012   inline /* implicit */ ast_expr_op_minus();
1013   inline /* implicit */ ast_expr_op_minus(const ast_expr_op_minus &obj);
1014   inline ast_expr_op_minus &operator=(ast_expr_op_minus obj);
1015   inline isl::checked::ctx ctx() const;
1016 
1017 };
1018 
1019 // declarations for isl::ast_expr_op_mul
1020 
1021 class ast_expr_op_mul : public ast_expr_op {
1022   template <class T>
1023   friend boolean ast_expr_op::isa() const;
1024   friend ast_expr_op_mul ast_expr_op::as<ast_expr_op_mul>() const;
1025   static const auto type = isl_ast_expr_op_mul;
1026 
1027 protected:
1028   inline explicit ast_expr_op_mul(__isl_take isl_ast_expr *ptr);
1029 
1030 public:
1031   inline /* implicit */ ast_expr_op_mul();
1032   inline /* implicit */ ast_expr_op_mul(const ast_expr_op_mul &obj);
1033   inline ast_expr_op_mul &operator=(ast_expr_op_mul obj);
1034   inline isl::checked::ctx ctx() const;
1035 
1036 };
1037 
1038 // declarations for isl::ast_expr_op_or
1039 
1040 class ast_expr_op_or : public ast_expr_op {
1041   template <class T>
1042   friend boolean ast_expr_op::isa() const;
1043   friend ast_expr_op_or ast_expr_op::as<ast_expr_op_or>() const;
1044   static const auto type = isl_ast_expr_op_or;
1045 
1046 protected:
1047   inline explicit ast_expr_op_or(__isl_take isl_ast_expr *ptr);
1048 
1049 public:
1050   inline /* implicit */ ast_expr_op_or();
1051   inline /* implicit */ ast_expr_op_or(const ast_expr_op_or &obj);
1052   inline ast_expr_op_or &operator=(ast_expr_op_or obj);
1053   inline isl::checked::ctx ctx() const;
1054 
1055 };
1056 
1057 // declarations for isl::ast_expr_op_or_else
1058 
1059 class ast_expr_op_or_else : public ast_expr_op {
1060   template <class T>
1061   friend boolean ast_expr_op::isa() const;
1062   friend ast_expr_op_or_else ast_expr_op::as<ast_expr_op_or_else>() const;
1063   static const auto type = isl_ast_expr_op_or_else;
1064 
1065 protected:
1066   inline explicit ast_expr_op_or_else(__isl_take isl_ast_expr *ptr);
1067 
1068 public:
1069   inline /* implicit */ ast_expr_op_or_else();
1070   inline /* implicit */ ast_expr_op_or_else(const ast_expr_op_or_else &obj);
1071   inline ast_expr_op_or_else &operator=(ast_expr_op_or_else obj);
1072   inline isl::checked::ctx ctx() const;
1073 
1074 };
1075 
1076 // declarations for isl::ast_expr_op_pdiv_q
1077 
1078 class ast_expr_op_pdiv_q : public ast_expr_op {
1079   template <class T>
1080   friend boolean ast_expr_op::isa() const;
1081   friend ast_expr_op_pdiv_q ast_expr_op::as<ast_expr_op_pdiv_q>() const;
1082   static const auto type = isl_ast_expr_op_pdiv_q;
1083 
1084 protected:
1085   inline explicit ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr);
1086 
1087 public:
1088   inline /* implicit */ ast_expr_op_pdiv_q();
1089   inline /* implicit */ ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj);
1090   inline ast_expr_op_pdiv_q &operator=(ast_expr_op_pdiv_q obj);
1091   inline isl::checked::ctx ctx() const;
1092 
1093 };
1094 
1095 // declarations for isl::ast_expr_op_pdiv_r
1096 
1097 class ast_expr_op_pdiv_r : public ast_expr_op {
1098   template <class T>
1099   friend boolean ast_expr_op::isa() const;
1100   friend ast_expr_op_pdiv_r ast_expr_op::as<ast_expr_op_pdiv_r>() const;
1101   static const auto type = isl_ast_expr_op_pdiv_r;
1102 
1103 protected:
1104   inline explicit ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr);
1105 
1106 public:
1107   inline /* implicit */ ast_expr_op_pdiv_r();
1108   inline /* implicit */ ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj);
1109   inline ast_expr_op_pdiv_r &operator=(ast_expr_op_pdiv_r obj);
1110   inline isl::checked::ctx ctx() const;
1111 
1112 };
1113 
1114 // declarations for isl::ast_expr_op_select
1115 
1116 class ast_expr_op_select : public ast_expr_op {
1117   template <class T>
1118   friend boolean ast_expr_op::isa() const;
1119   friend ast_expr_op_select ast_expr_op::as<ast_expr_op_select>() const;
1120   static const auto type = isl_ast_expr_op_select;
1121 
1122 protected:
1123   inline explicit ast_expr_op_select(__isl_take isl_ast_expr *ptr);
1124 
1125 public:
1126   inline /* implicit */ ast_expr_op_select();
1127   inline /* implicit */ ast_expr_op_select(const ast_expr_op_select &obj);
1128   inline ast_expr_op_select &operator=(ast_expr_op_select obj);
1129   inline isl::checked::ctx ctx() const;
1130 
1131 };
1132 
1133 // declarations for isl::ast_expr_op_sub
1134 
1135 class ast_expr_op_sub : public ast_expr_op {
1136   template <class T>
1137   friend boolean ast_expr_op::isa() const;
1138   friend ast_expr_op_sub ast_expr_op::as<ast_expr_op_sub>() const;
1139   static const auto type = isl_ast_expr_op_sub;
1140 
1141 protected:
1142   inline explicit ast_expr_op_sub(__isl_take isl_ast_expr *ptr);
1143 
1144 public:
1145   inline /* implicit */ ast_expr_op_sub();
1146   inline /* implicit */ ast_expr_op_sub(const ast_expr_op_sub &obj);
1147   inline ast_expr_op_sub &operator=(ast_expr_op_sub obj);
1148   inline isl::checked::ctx ctx() const;
1149 
1150 };
1151 
1152 // declarations for isl::ast_expr_op_zdiv_r
1153 
1154 class ast_expr_op_zdiv_r : public ast_expr_op {
1155   template <class T>
1156   friend boolean ast_expr_op::isa() const;
1157   friend ast_expr_op_zdiv_r ast_expr_op::as<ast_expr_op_zdiv_r>() const;
1158   static const auto type = isl_ast_expr_op_zdiv_r;
1159 
1160 protected:
1161   inline explicit ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr);
1162 
1163 public:
1164   inline /* implicit */ ast_expr_op_zdiv_r();
1165   inline /* implicit */ ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj);
1166   inline ast_expr_op_zdiv_r &operator=(ast_expr_op_zdiv_r obj);
1167   inline isl::checked::ctx ctx() const;
1168 
1169 };
1170 
1171 // declarations for isl::ast_node
1172 inline ast_node manage(__isl_take isl_ast_node *ptr);
1173 inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1174 
1175 class ast_node {
1176   friend inline ast_node manage(__isl_take isl_ast_node *ptr);
1177   friend inline ast_node manage_copy(__isl_keep isl_ast_node *ptr);
1178 
1179 protected:
1180   isl_ast_node *ptr = nullptr;
1181 
1182   inline explicit ast_node(__isl_take isl_ast_node *ptr);
1183 
1184 public:
1185   inline /* implicit */ ast_node();
1186   inline /* implicit */ ast_node(const ast_node &obj);
1187   inline ast_node &operator=(ast_node obj);
1188   inline ~ast_node();
1189   inline __isl_give isl_ast_node *copy() const &;
1190   inline __isl_give isl_ast_node *copy() && = delete;
1191   inline __isl_keep isl_ast_node *get() const;
1192   inline __isl_give isl_ast_node *release();
1193   inline bool is_null() const;
1194 private:
1195   template <typename T,
1196           typename = typename std::enable_if<std::is_same<
1197                   const decltype(isl_ast_node_get_type(NULL)),
1198                   const T>::value>::type>
1199   inline boolean isa_type(T subtype) const;
1200 public:
1201   template <class T> inline boolean isa() const;
1202   template <class T> inline T as() const;
1203   inline isl::checked::ctx ctx() const;
1204 
1205   inline std::string to_C_str() const;
1206   inline isl::checked::ast_node_list to_list() const;
1207 };
1208 
1209 // declarations for isl::ast_node_block
1210 
1211 class ast_node_block : public ast_node {
1212   template <class T>
1213   friend boolean ast_node::isa() const;
1214   friend ast_node_block ast_node::as<ast_node_block>() const;
1215   static const auto type = isl_ast_node_block;
1216 
1217 protected:
1218   inline explicit ast_node_block(__isl_take isl_ast_node *ptr);
1219 
1220 public:
1221   inline /* implicit */ ast_node_block();
1222   inline /* implicit */ ast_node_block(const ast_node_block &obj);
1223   inline ast_node_block &operator=(ast_node_block obj);
1224   inline isl::checked::ctx ctx() const;
1225 
1226   inline isl::checked::ast_node_list children() const;
1227   inline isl::checked::ast_node_list get_children() const;
1228 };
1229 
1230 // declarations for isl::ast_node_for
1231 
1232 class ast_node_for : public ast_node {
1233   template <class T>
1234   friend boolean ast_node::isa() const;
1235   friend ast_node_for ast_node::as<ast_node_for>() const;
1236   static const auto type = isl_ast_node_for;
1237 
1238 protected:
1239   inline explicit ast_node_for(__isl_take isl_ast_node *ptr);
1240 
1241 public:
1242   inline /* implicit */ ast_node_for();
1243   inline /* implicit */ ast_node_for(const ast_node_for &obj);
1244   inline ast_node_for &operator=(ast_node_for obj);
1245   inline isl::checked::ctx ctx() const;
1246 
1247   inline isl::checked::ast_node body() const;
1248   inline isl::checked::ast_node get_body() const;
1249   inline isl::checked::ast_expr cond() const;
1250   inline isl::checked::ast_expr get_cond() const;
1251   inline isl::checked::ast_expr inc() const;
1252   inline isl::checked::ast_expr get_inc() const;
1253   inline isl::checked::ast_expr init() const;
1254   inline isl::checked::ast_expr get_init() const;
1255   inline boolean is_degenerate() const;
1256   inline isl::checked::ast_expr iterator() const;
1257   inline isl::checked::ast_expr get_iterator() const;
1258 };
1259 
1260 // declarations for isl::ast_node_if
1261 
1262 class ast_node_if : public ast_node {
1263   template <class T>
1264   friend boolean ast_node::isa() const;
1265   friend ast_node_if ast_node::as<ast_node_if>() const;
1266   static const auto type = isl_ast_node_if;
1267 
1268 protected:
1269   inline explicit ast_node_if(__isl_take isl_ast_node *ptr);
1270 
1271 public:
1272   inline /* implicit */ ast_node_if();
1273   inline /* implicit */ ast_node_if(const ast_node_if &obj);
1274   inline ast_node_if &operator=(ast_node_if obj);
1275   inline isl::checked::ctx ctx() const;
1276 
1277   inline isl::checked::ast_expr cond() const;
1278   inline isl::checked::ast_expr get_cond() const;
1279   inline isl::checked::ast_node else_node() const;
1280   inline isl::checked::ast_node get_else_node() const;
1281   inline boolean has_else_node() const;
1282   inline isl::checked::ast_node then_node() const;
1283   inline isl::checked::ast_node get_then_node() const;
1284 };
1285 
1286 // declarations for isl::ast_node_list
1287 inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1288 inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1289 
1290 class ast_node_list {
1291   friend inline ast_node_list manage(__isl_take isl_ast_node_list *ptr);
1292   friend inline ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr);
1293 
1294 protected:
1295   isl_ast_node_list *ptr = nullptr;
1296 
1297   inline explicit ast_node_list(__isl_take isl_ast_node_list *ptr);
1298 
1299 public:
1300   inline /* implicit */ ast_node_list();
1301   inline /* implicit */ ast_node_list(const ast_node_list &obj);
1302   inline explicit ast_node_list(isl::checked::ctx ctx, int n);
1303   inline explicit ast_node_list(isl::checked::ast_node el);
1304   inline ast_node_list &operator=(ast_node_list obj);
1305   inline ~ast_node_list();
1306   inline __isl_give isl_ast_node_list *copy() const &;
1307   inline __isl_give isl_ast_node_list *copy() && = delete;
1308   inline __isl_keep isl_ast_node_list *get() const;
1309   inline __isl_give isl_ast_node_list *release();
1310   inline bool is_null() const;
1311   inline isl::checked::ctx ctx() const;
1312 
1313   inline isl::checked::ast_node_list add(isl::checked::ast_node el) const;
1314   inline isl::checked::ast_node at(int index) const;
1315   inline isl::checked::ast_node get_at(int index) const;
1316   inline isl::checked::ast_node_list clear() const;
1317   inline isl::checked::ast_node_list concat(isl::checked::ast_node_list list2) const;
1318   inline isl::checked::ast_node_list drop(unsigned int first, unsigned int n) const;
1319   inline stat foreach(const std::function<stat(isl::checked::ast_node)> &fn) const;
1320   inline isl::checked::ast_node_list insert(unsigned int pos, isl::checked::ast_node el) const;
1321   inline class size size() const;
1322 };
1323 
1324 // declarations for isl::ast_node_mark
1325 
1326 class ast_node_mark : public ast_node {
1327   template <class T>
1328   friend boolean ast_node::isa() const;
1329   friend ast_node_mark ast_node::as<ast_node_mark>() const;
1330   static const auto type = isl_ast_node_mark;
1331 
1332 protected:
1333   inline explicit ast_node_mark(__isl_take isl_ast_node *ptr);
1334 
1335 public:
1336   inline /* implicit */ ast_node_mark();
1337   inline /* implicit */ ast_node_mark(const ast_node_mark &obj);
1338   inline ast_node_mark &operator=(ast_node_mark obj);
1339   inline isl::checked::ctx ctx() const;
1340 
1341   inline isl::checked::id id() const;
1342   inline isl::checked::id get_id() const;
1343   inline isl::checked::ast_node node() const;
1344   inline isl::checked::ast_node get_node() const;
1345 };
1346 
1347 // declarations for isl::ast_node_user
1348 
1349 class ast_node_user : public ast_node {
1350   template <class T>
1351   friend boolean ast_node::isa() const;
1352   friend ast_node_user ast_node::as<ast_node_user>() const;
1353   static const auto type = isl_ast_node_user;
1354 
1355 protected:
1356   inline explicit ast_node_user(__isl_take isl_ast_node *ptr);
1357 
1358 public:
1359   inline /* implicit */ ast_node_user();
1360   inline /* implicit */ ast_node_user(const ast_node_user &obj);
1361   inline ast_node_user &operator=(ast_node_user obj);
1362   inline isl::checked::ctx ctx() const;
1363 
1364   inline isl::checked::ast_expr expr() const;
1365   inline isl::checked::ast_expr get_expr() const;
1366 };
1367 
1368 // declarations for isl::basic_map
1369 inline basic_map manage(__isl_take isl_basic_map *ptr);
1370 inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1371 
1372 class basic_map {
1373   friend inline basic_map manage(__isl_take isl_basic_map *ptr);
1374   friend inline basic_map manage_copy(__isl_keep isl_basic_map *ptr);
1375 
1376 protected:
1377   isl_basic_map *ptr = nullptr;
1378 
1379   inline explicit basic_map(__isl_take isl_basic_map *ptr);
1380 
1381 public:
1382   inline /* implicit */ basic_map();
1383   inline /* implicit */ basic_map(const basic_map &obj);
1384   inline explicit basic_map(isl::checked::ctx ctx, const std::string &str);
1385   inline basic_map &operator=(basic_map obj);
1386   inline ~basic_map();
1387   inline __isl_give isl_basic_map *copy() const &;
1388   inline __isl_give isl_basic_map *copy() && = delete;
1389   inline __isl_keep isl_basic_map *get() const;
1390   inline __isl_give isl_basic_map *release();
1391   inline bool is_null() const;
1392   inline isl::checked::ctx ctx() const;
1393 
1394   inline isl::checked::basic_map affine_hull() const;
1395   inline isl::checked::basic_map apply_domain(isl::checked::basic_map bmap2) const;
1396   inline isl::checked::map apply_domain(const isl::checked::map &map2) const;
1397   inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1398   inline isl::checked::basic_map apply_range(isl::checked::basic_map bmap2) const;
1399   inline isl::checked::map apply_range(const isl::checked::map &map2) const;
1400   inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1401   inline isl::checked::map as_map() const;
1402   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
1403   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1404   inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
1405   inline isl::checked::set bind_domain(const isl::checked::multi_id &tuple) const;
1406   inline isl::checked::set bind_range(const isl::checked::multi_id &tuple) const;
1407   inline isl::checked::map coalesce() const;
1408   inline isl::checked::map complement() const;
1409   inline isl::checked::union_map compute_divs() const;
1410   inline isl::checked::map curry() const;
1411   inline isl::checked::basic_set deltas() const;
1412   inline isl::checked::basic_map detect_equalities() const;
1413   inline isl::checked::set domain() const;
1414   inline isl::checked::map domain_factor_domain() const;
1415   inline isl::checked::map domain_factor_range() const;
1416   inline isl::checked::union_map domain_map() const;
1417   inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1418   inline isl::checked::map domain_product(const isl::checked::map &map2) const;
1419   inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1420   inline class size domain_tuple_dim() const;
1421   inline isl::checked::id domain_tuple_id() const;
1422   inline isl::checked::map eq_at(const isl::checked::multi_pw_aff &mpa) const;
1423   inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1424   inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1425   inline isl::checked::map extract_map(const isl::checked::space &space) const;
1426   inline isl::checked::map factor_domain() const;
1427   inline isl::checked::map factor_range() const;
1428   inline isl::checked::union_map fixed_power(const isl::checked::val &exp) const;
1429   inline isl::checked::union_map fixed_power(long exp) const;
1430   inline isl::checked::basic_map flatten() const;
1431   inline isl::checked::basic_map flatten_domain() const;
1432   inline isl::checked::basic_map flatten_range() const;
1433   inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1434   inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1435   inline isl::checked::basic_map gist(isl::checked::basic_map context) const;
1436   inline isl::checked::map gist(const isl::checked::map &context) const;
1437   inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1438   inline isl::checked::map gist_domain(const isl::checked::set &context) const;
1439   inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1440   inline isl::checked::union_map gist_params(const isl::checked::set &set) const;
1441   inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1442   inline boolean has_domain_tuple_id() const;
1443   inline boolean has_range_tuple_id() const;
1444   inline isl::checked::basic_map intersect(isl::checked::basic_map bmap2) const;
1445   inline isl::checked::map intersect(const isl::checked::map &map2) const;
1446   inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1447   inline isl::checked::basic_map intersect_domain(isl::checked::basic_set bset) const;
1448   inline isl::checked::map intersect_domain(const isl::checked::set &set) const;
1449   inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1450   inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1451   inline isl::checked::basic_map intersect_domain(const isl::checked::point &bset) const;
1452   inline isl::checked::map intersect_domain_factor_domain(const isl::checked::map &factor) const;
1453   inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
1454   inline isl::checked::map intersect_domain_factor_range(const isl::checked::map &factor) const;
1455   inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
1456   inline isl::checked::map intersect_params(const isl::checked::set &params) const;
1457   inline isl::checked::basic_map intersect_range(isl::checked::basic_set bset) const;
1458   inline isl::checked::map intersect_range(const isl::checked::set &set) const;
1459   inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
1460   inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
1461   inline isl::checked::basic_map intersect_range(const isl::checked::point &bset) const;
1462   inline isl::checked::map intersect_range_factor_domain(const isl::checked::map &factor) const;
1463   inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
1464   inline isl::checked::map intersect_range_factor_range(const isl::checked::map &factor) const;
1465   inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
1466   inline boolean is_bijective() const;
1467   inline boolean is_disjoint(const isl::checked::map &map2) const;
1468   inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
1469   inline boolean is_empty() const;
1470   inline boolean is_equal(const isl::checked::basic_map &bmap2) const;
1471   inline boolean is_equal(const isl::checked::map &map2) const;
1472   inline boolean is_equal(const isl::checked::union_map &umap2) const;
1473   inline boolean is_injective() const;
1474   inline boolean is_single_valued() const;
1475   inline boolean is_strict_subset(const isl::checked::map &map2) const;
1476   inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
1477   inline boolean is_subset(const isl::checked::basic_map &bmap2) const;
1478   inline boolean is_subset(const isl::checked::map &map2) const;
1479   inline boolean is_subset(const isl::checked::union_map &umap2) const;
1480   inline boolean isa_map() const;
1481   inline isl::checked::map lex_ge_at(const isl::checked::multi_pw_aff &mpa) const;
1482   inline isl::checked::map lex_gt_at(const isl::checked::multi_pw_aff &mpa) const;
1483   inline isl::checked::map lex_le_at(const isl::checked::multi_pw_aff &mpa) const;
1484   inline isl::checked::map lex_lt_at(const isl::checked::multi_pw_aff &mpa) const;
1485   inline isl::checked::map lexmax() const;
1486   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1487   inline isl::checked::map lexmin() const;
1488   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1489   inline isl::checked::map lower_bound(const isl::checked::multi_pw_aff &lower) const;
1490   inline isl::checked::map_list map_list() const;
1491   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1492   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1493   inline class size n_basic_map() const;
1494   inline isl::checked::basic_map polyhedral_hull() const;
1495   inline isl::checked::map preimage_domain(const isl::checked::multi_aff &ma) const;
1496   inline isl::checked::map preimage_domain(const isl::checked::multi_pw_aff &mpa) const;
1497   inline isl::checked::map preimage_domain(const isl::checked::pw_multi_aff &pma) const;
1498   inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
1499   inline isl::checked::map preimage_range(const isl::checked::multi_aff &ma) const;
1500   inline isl::checked::map preimage_range(const isl::checked::pw_multi_aff &pma) const;
1501   inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
1502   inline isl::checked::map product(const isl::checked::map &map2) const;
1503   inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
1504   inline isl::checked::map project_out_all_params() const;
1505   inline isl::checked::set range() const;
1506   inline isl::checked::map range_factor_domain() const;
1507   inline isl::checked::map range_factor_range() const;
1508   inline isl::checked::fixed_box range_lattice_tile() const;
1509   inline isl::checked::union_map range_map() const;
1510   inline isl::checked::map range_product(const isl::checked::map &map2) const;
1511   inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
1512   inline isl::checked::map range_reverse() const;
1513   inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
1514   inline class size range_tuple_dim() const;
1515   inline isl::checked::id range_tuple_id() const;
1516   inline isl::checked::basic_map reverse() const;
1517   inline isl::checked::basic_map sample() const;
1518   inline isl::checked::map set_domain_tuple(const isl::checked::id &id) const;
1519   inline isl::checked::map set_domain_tuple(const std::string &id) const;
1520   inline isl::checked::map set_range_tuple(const isl::checked::id &id) const;
1521   inline isl::checked::map set_range_tuple(const std::string &id) const;
1522   inline isl::checked::space space() const;
1523   inline isl::checked::map subtract(const isl::checked::map &map2) const;
1524   inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
1525   inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
1526   inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
1527   inline isl::checked::map_list to_list() const;
1528   inline isl::checked::union_map to_union_map() const;
1529   inline isl::checked::map uncurry() const;
1530   inline isl::checked::map unite(isl::checked::basic_map bmap2) const;
1531   inline isl::checked::map unite(const isl::checked::map &map2) const;
1532   inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
1533   inline isl::checked::basic_map unshifted_simple_hull() const;
1534   inline isl::checked::map upper_bound(const isl::checked::multi_pw_aff &upper) const;
1535   inline isl::checked::set wrap() const;
1536   inline isl::checked::map zip() const;
1537 };
1538 
1539 // declarations for isl::basic_set
1540 inline basic_set manage(__isl_take isl_basic_set *ptr);
1541 inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1542 
1543 class basic_set {
1544   friend inline basic_set manage(__isl_take isl_basic_set *ptr);
1545   friend inline basic_set manage_copy(__isl_keep isl_basic_set *ptr);
1546 
1547 protected:
1548   isl_basic_set *ptr = nullptr;
1549 
1550   inline explicit basic_set(__isl_take isl_basic_set *ptr);
1551 
1552 public:
1553   inline /* implicit */ basic_set();
1554   inline /* implicit */ basic_set(const basic_set &obj);
1555   inline /* implicit */ basic_set(isl::checked::point pnt);
1556   inline explicit basic_set(isl::checked::ctx ctx, const std::string &str);
1557   inline basic_set &operator=(basic_set obj);
1558   inline ~basic_set();
1559   inline __isl_give isl_basic_set *copy() const &;
1560   inline __isl_give isl_basic_set *copy() && = delete;
1561   inline __isl_keep isl_basic_set *get() const;
1562   inline __isl_give isl_basic_set *release();
1563   inline bool is_null() const;
1564   inline isl::checked::ctx ctx() const;
1565 
1566   inline isl::checked::basic_set affine_hull() const;
1567   inline isl::checked::basic_set apply(isl::checked::basic_map bmap) const;
1568   inline isl::checked::set apply(const isl::checked::map &map) const;
1569   inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
1570   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1571   inline isl::checked::set as_set() const;
1572   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
1573   inline isl::checked::set coalesce() const;
1574   inline isl::checked::set complement() const;
1575   inline isl::checked::union_set compute_divs() const;
1576   inline isl::checked::basic_set detect_equalities() const;
1577   inline isl::checked::val dim_max_val(int pos) const;
1578   inline isl::checked::val dim_min_val(int pos) const;
1579   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
1580   inline isl::checked::set extract_set(const isl::checked::space &space) const;
1581   inline isl::checked::basic_set flatten() const;
1582   inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
1583   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
1584   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
1585   inline isl::checked::basic_set gist(isl::checked::basic_set context) const;
1586   inline isl::checked::set gist(const isl::checked::set &context) const;
1587   inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
1588   inline isl::checked::basic_set gist(const isl::checked::point &context) const;
1589   inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
1590   inline isl::checked::map identity() const;
1591   inline isl::checked::pw_aff indicator_function() const;
1592   inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
1593   inline isl::checked::basic_set intersect(isl::checked::basic_set bset2) const;
1594   inline isl::checked::set intersect(const isl::checked::set &set2) const;
1595   inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
1596   inline isl::checked::basic_set intersect(const isl::checked::point &bset2) const;
1597   inline isl::checked::basic_set intersect_params(isl::checked::basic_set bset2) const;
1598   inline isl::checked::set intersect_params(const isl::checked::set &params) const;
1599   inline isl::checked::basic_set intersect_params(const isl::checked::point &bset2) const;
1600   inline boolean involves_locals() const;
1601   inline boolean is_disjoint(const isl::checked::set &set2) const;
1602   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
1603   inline boolean is_empty() const;
1604   inline boolean is_equal(const isl::checked::basic_set &bset2) const;
1605   inline boolean is_equal(const isl::checked::set &set2) const;
1606   inline boolean is_equal(const isl::checked::union_set &uset2) const;
1607   inline boolean is_equal(const isl::checked::point &bset2) const;
1608   inline boolean is_singleton() const;
1609   inline boolean is_strict_subset(const isl::checked::set &set2) const;
1610   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
1611   inline boolean is_subset(const isl::checked::basic_set &bset2) const;
1612   inline boolean is_subset(const isl::checked::set &set2) const;
1613   inline boolean is_subset(const isl::checked::union_set &uset2) const;
1614   inline boolean is_subset(const isl::checked::point &bset2) const;
1615   inline boolean is_wrapping() const;
1616   inline boolean isa_set() const;
1617   inline isl::checked::set lexmax() const;
1618   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1619   inline isl::checked::set lexmin() const;
1620   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1621   inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
1622   inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
1623   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1624   inline isl::checked::val max_val(const isl::checked::aff &obj) const;
1625   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1626   inline isl::checked::val min_val(const isl::checked::aff &obj) const;
1627   inline class size n_basic_set() const;
1628   inline isl::checked::basic_set params() const;
1629   inline isl::checked::multi_val plain_multi_val_if_fixed() const;
1630   inline isl::checked::basic_set polyhedral_hull() const;
1631   inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
1632   inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
1633   inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
1634   inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
1635   inline isl::checked::set product(const isl::checked::set &set2) const;
1636   inline isl::checked::set project_out_all_params() const;
1637   inline isl::checked::set project_out_param(const isl::checked::id &id) const;
1638   inline isl::checked::set project_out_param(const std::string &id) const;
1639   inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
1640   inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
1641   inline isl::checked::basic_set sample() const;
1642   inline isl::checked::point sample_point() const;
1643   inline isl::checked::set_list set_list() const;
1644   inline isl::checked::fixed_box simple_fixed_box_hull() const;
1645   inline isl::checked::space space() const;
1646   inline isl::checked::val stride(int pos) const;
1647   inline isl::checked::set subtract(const isl::checked::set &set2) const;
1648   inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
1649   inline isl::checked::set_list to_list() const;
1650   inline isl::checked::set to_set() const;
1651   inline isl::checked::union_set to_union_set() const;
1652   inline isl::checked::map translation() const;
1653   inline class size tuple_dim() const;
1654   inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
1655   inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
1656   inline isl::checked::set unite(isl::checked::basic_set bset2) const;
1657   inline isl::checked::set unite(const isl::checked::set &set2) const;
1658   inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
1659   inline isl::checked::set unite(const isl::checked::point &bset2) const;
1660   inline isl::checked::basic_set unshifted_simple_hull() const;
1661   inline isl::checked::map unwrap() const;
1662   inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
1663   inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
1664 };
1665 
1666 // declarations for isl::fixed_box
1667 inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1668 inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1669 
1670 class fixed_box {
1671   friend inline fixed_box manage(__isl_take isl_fixed_box *ptr);
1672   friend inline fixed_box manage_copy(__isl_keep isl_fixed_box *ptr);
1673 
1674 protected:
1675   isl_fixed_box *ptr = nullptr;
1676 
1677   inline explicit fixed_box(__isl_take isl_fixed_box *ptr);
1678 
1679 public:
1680   inline /* implicit */ fixed_box();
1681   inline /* implicit */ fixed_box(const fixed_box &obj);
1682   inline fixed_box &operator=(fixed_box obj);
1683   inline ~fixed_box();
1684   inline __isl_give isl_fixed_box *copy() const &;
1685   inline __isl_give isl_fixed_box *copy() && = delete;
1686   inline __isl_keep isl_fixed_box *get() const;
1687   inline __isl_give isl_fixed_box *release();
1688   inline bool is_null() const;
1689   inline isl::checked::ctx ctx() const;
1690 
1691   inline boolean is_valid() const;
1692   inline isl::checked::multi_aff offset() const;
1693   inline isl::checked::multi_aff get_offset() const;
1694   inline isl::checked::multi_val size() const;
1695   inline isl::checked::multi_val get_size() const;
1696   inline isl::checked::space space() const;
1697   inline isl::checked::space get_space() const;
1698 };
1699 
1700 // declarations for isl::id
1701 inline id manage(__isl_take isl_id *ptr);
1702 inline id manage_copy(__isl_keep isl_id *ptr);
1703 
1704 class id {
1705   friend inline id manage(__isl_take isl_id *ptr);
1706   friend inline id manage_copy(__isl_keep isl_id *ptr);
1707 
1708 protected:
1709   isl_id *ptr = nullptr;
1710 
1711   inline explicit id(__isl_take isl_id *ptr);
1712 
1713 public:
1714   inline /* implicit */ id();
1715   inline /* implicit */ id(const id &obj);
1716   inline explicit id(isl::checked::ctx ctx, const std::string &str);
1717   inline id &operator=(id obj);
1718   inline ~id();
1719   inline __isl_give isl_id *copy() const &;
1720   inline __isl_give isl_id *copy() && = delete;
1721   inline __isl_keep isl_id *get() const;
1722   inline __isl_give isl_id *release();
1723   inline bool is_null() const;
1724   inline isl::checked::ctx ctx() const;
1725 
1726   inline std::string name() const;
1727   inline std::string get_name() const;
1728   inline isl::checked::id_list to_list() const;
1729 };
1730 
1731 // declarations for isl::id_list
1732 inline id_list manage(__isl_take isl_id_list *ptr);
1733 inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1734 
1735 class id_list {
1736   friend inline id_list manage(__isl_take isl_id_list *ptr);
1737   friend inline id_list manage_copy(__isl_keep isl_id_list *ptr);
1738 
1739 protected:
1740   isl_id_list *ptr = nullptr;
1741 
1742   inline explicit id_list(__isl_take isl_id_list *ptr);
1743 
1744 public:
1745   inline /* implicit */ id_list();
1746   inline /* implicit */ id_list(const id_list &obj);
1747   inline explicit id_list(isl::checked::ctx ctx, int n);
1748   inline explicit id_list(isl::checked::id el);
1749   inline explicit id_list(isl::checked::ctx ctx, const std::string &str);
1750   inline id_list &operator=(id_list obj);
1751   inline ~id_list();
1752   inline __isl_give isl_id_list *copy() const &;
1753   inline __isl_give isl_id_list *copy() && = delete;
1754   inline __isl_keep isl_id_list *get() const;
1755   inline __isl_give isl_id_list *release();
1756   inline bool is_null() const;
1757   inline isl::checked::ctx ctx() const;
1758 
1759   inline isl::checked::id_list add(isl::checked::id el) const;
1760   inline isl::checked::id_list add(const std::string &el) const;
1761   inline isl::checked::id at(int index) const;
1762   inline isl::checked::id get_at(int index) const;
1763   inline isl::checked::id_list clear() const;
1764   inline isl::checked::id_list concat(isl::checked::id_list list2) const;
1765   inline isl::checked::id_list drop(unsigned int first, unsigned int n) const;
1766   inline stat foreach(const std::function<stat(isl::checked::id)> &fn) const;
1767   inline isl::checked::id_list insert(unsigned int pos, isl::checked::id el) const;
1768   inline isl::checked::id_list insert(unsigned int pos, const std::string &el) const;
1769   inline class size size() const;
1770 };
1771 
1772 // declarations for isl::map
1773 inline map manage(__isl_take isl_map *ptr);
1774 inline map manage_copy(__isl_keep isl_map *ptr);
1775 
1776 class map {
1777   friend inline map manage(__isl_take isl_map *ptr);
1778   friend inline map manage_copy(__isl_keep isl_map *ptr);
1779 
1780 protected:
1781   isl_map *ptr = nullptr;
1782 
1783   inline explicit map(__isl_take isl_map *ptr);
1784 
1785 public:
1786   inline /* implicit */ map();
1787   inline /* implicit */ map(const map &obj);
1788   inline /* implicit */ map(isl::checked::basic_map bmap);
1789   inline explicit map(isl::checked::ctx ctx, const std::string &str);
1790   inline map &operator=(map obj);
1791   inline ~map();
1792   inline __isl_give isl_map *copy() const &;
1793   inline __isl_give isl_map *copy() && = delete;
1794   inline __isl_keep isl_map *get() const;
1795   inline __isl_give isl_map *release();
1796   inline bool is_null() const;
1797   inline isl::checked::ctx ctx() const;
1798 
1799   inline isl::checked::basic_map affine_hull() const;
1800   inline isl::checked::map apply_domain(isl::checked::map map2) const;
1801   inline isl::checked::union_map apply_domain(const isl::checked::union_map &umap2) const;
1802   inline isl::checked::map apply_domain(const isl::checked::basic_map &map2) const;
1803   inline isl::checked::map apply_range(isl::checked::map map2) const;
1804   inline isl::checked::union_map apply_range(const isl::checked::union_map &umap2) const;
1805   inline isl::checked::map apply_range(const isl::checked::basic_map &map2) const;
1806   inline isl::checked::map as_map() const;
1807   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
1808   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
1809   inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
1810   inline isl::checked::set bind_domain(isl::checked::multi_id tuple) const;
1811   inline isl::checked::set bind_range(isl::checked::multi_id tuple) const;
1812   inline isl::checked::map coalesce() const;
1813   inline isl::checked::map complement() const;
1814   inline isl::checked::union_map compute_divs() const;
1815   inline isl::checked::map curry() const;
1816   inline isl::checked::set deltas() const;
1817   inline isl::checked::map detect_equalities() const;
1818   inline isl::checked::set domain() const;
1819   inline isl::checked::map domain_factor_domain() const;
1820   inline isl::checked::map domain_factor_range() const;
1821   inline isl::checked::union_map domain_map() const;
1822   inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
1823   inline isl::checked::map domain_product(isl::checked::map map2) const;
1824   inline isl::checked::union_map domain_product(const isl::checked::union_map &umap2) const;
1825   inline isl::checked::map domain_product(const isl::checked::basic_map &map2) const;
1826   inline class size domain_tuple_dim() const;
1827   inline isl::checked::id domain_tuple_id() const;
1828   inline isl::checked::id get_domain_tuple_id() const;
1829   static inline isl::checked::map empty(isl::checked::space space);
1830   inline isl::checked::map eq_at(isl::checked::multi_pw_aff mpa) const;
1831   inline isl::checked::union_map eq_at(const isl::checked::multi_union_pw_aff &mupa) const;
1832   inline isl::checked::map eq_at(const isl::checked::aff &mpa) const;
1833   inline isl::checked::map eq_at(const isl::checked::multi_aff &mpa) const;
1834   inline isl::checked::map eq_at(const isl::checked::pw_aff &mpa) const;
1835   inline isl::checked::map eq_at(const isl::checked::pw_multi_aff &mpa) const;
1836   inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
1837   inline isl::checked::map extract_map(const isl::checked::space &space) const;
1838   inline isl::checked::map factor_domain() const;
1839   inline isl::checked::map factor_range() const;
1840   inline isl::checked::union_map fixed_power(const isl::checked::val &exp) const;
1841   inline isl::checked::union_map fixed_power(long exp) const;
1842   inline isl::checked::map flatten() const;
1843   inline isl::checked::map flatten_domain() const;
1844   inline isl::checked::map flatten_range() const;
1845   inline stat foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const;
1846   inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
1847   inline isl::checked::map gist(isl::checked::map context) const;
1848   inline isl::checked::union_map gist(const isl::checked::union_map &context) const;
1849   inline isl::checked::map gist(const isl::checked::basic_map &context) const;
1850   inline isl::checked::map gist_domain(isl::checked::set context) const;
1851   inline isl::checked::union_map gist_domain(const isl::checked::union_set &uset) const;
1852   inline isl::checked::map gist_domain(const isl::checked::basic_set &context) const;
1853   inline isl::checked::map gist_domain(const isl::checked::point &context) const;
1854   inline isl::checked::union_map gist_params(const isl::checked::set &set) const;
1855   inline isl::checked::union_map gist_range(const isl::checked::union_set &uset) const;
1856   inline boolean has_domain_tuple_id() const;
1857   inline boolean has_range_tuple_id() const;
1858   inline isl::checked::map intersect(isl::checked::map map2) const;
1859   inline isl::checked::union_map intersect(const isl::checked::union_map &umap2) const;
1860   inline isl::checked::map intersect(const isl::checked::basic_map &map2) const;
1861   inline isl::checked::map intersect_domain(isl::checked::set set) const;
1862   inline isl::checked::union_map intersect_domain(const isl::checked::space &space) const;
1863   inline isl::checked::union_map intersect_domain(const isl::checked::union_set &uset) const;
1864   inline isl::checked::map intersect_domain(const isl::checked::basic_set &set) const;
1865   inline isl::checked::map intersect_domain(const isl::checked::point &set) const;
1866   inline isl::checked::map intersect_domain_factor_domain(isl::checked::map factor) const;
1867   inline isl::checked::union_map intersect_domain_factor_domain(const isl::checked::union_map &factor) const;
1868   inline isl::checked::map intersect_domain_factor_domain(const isl::checked::basic_map &factor) const;
1869   inline isl::checked::map intersect_domain_factor_range(isl::checked::map factor) const;
1870   inline isl::checked::union_map intersect_domain_factor_range(const isl::checked::union_map &factor) const;
1871   inline isl::checked::map intersect_domain_factor_range(const isl::checked::basic_map &factor) const;
1872   inline isl::checked::map intersect_params(isl::checked::set params) const;
1873   inline isl::checked::map intersect_range(isl::checked::set set) const;
1874   inline isl::checked::union_map intersect_range(const isl::checked::space &space) const;
1875   inline isl::checked::union_map intersect_range(const isl::checked::union_set &uset) const;
1876   inline isl::checked::map intersect_range(const isl::checked::basic_set &set) const;
1877   inline isl::checked::map intersect_range(const isl::checked::point &set) const;
1878   inline isl::checked::map intersect_range_factor_domain(isl::checked::map factor) const;
1879   inline isl::checked::union_map intersect_range_factor_domain(const isl::checked::union_map &factor) const;
1880   inline isl::checked::map intersect_range_factor_domain(const isl::checked::basic_map &factor) const;
1881   inline isl::checked::map intersect_range_factor_range(isl::checked::map factor) const;
1882   inline isl::checked::union_map intersect_range_factor_range(const isl::checked::union_map &factor) const;
1883   inline isl::checked::map intersect_range_factor_range(const isl::checked::basic_map &factor) const;
1884   inline boolean is_bijective() const;
1885   inline boolean is_disjoint(const isl::checked::map &map2) const;
1886   inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
1887   inline boolean is_disjoint(const isl::checked::basic_map &map2) const;
1888   inline boolean is_empty() const;
1889   inline boolean is_equal(const isl::checked::map &map2) const;
1890   inline boolean is_equal(const isl::checked::union_map &umap2) const;
1891   inline boolean is_equal(const isl::checked::basic_map &map2) const;
1892   inline boolean is_injective() const;
1893   inline boolean is_single_valued() const;
1894   inline boolean is_strict_subset(const isl::checked::map &map2) const;
1895   inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
1896   inline boolean is_strict_subset(const isl::checked::basic_map &map2) const;
1897   inline boolean is_subset(const isl::checked::map &map2) const;
1898   inline boolean is_subset(const isl::checked::union_map &umap2) const;
1899   inline boolean is_subset(const isl::checked::basic_map &map2) const;
1900   inline boolean isa_map() const;
1901   inline isl::checked::map lex_ge_at(isl::checked::multi_pw_aff mpa) const;
1902   inline isl::checked::map lex_gt_at(isl::checked::multi_pw_aff mpa) const;
1903   inline isl::checked::map lex_le_at(isl::checked::multi_pw_aff mpa) const;
1904   inline isl::checked::map lex_lt_at(isl::checked::multi_pw_aff mpa) const;
1905   inline isl::checked::map lexmax() const;
1906   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
1907   inline isl::checked::map lexmin() const;
1908   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
1909   inline isl::checked::map lower_bound(isl::checked::multi_pw_aff lower) const;
1910   inline isl::checked::map_list map_list() const;
1911   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
1912   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
1913   inline class size n_basic_map() const;
1914   inline isl::checked::basic_map polyhedral_hull() const;
1915   inline isl::checked::map preimage_domain(isl::checked::multi_aff ma) const;
1916   inline isl::checked::map preimage_domain(isl::checked::multi_pw_aff mpa) const;
1917   inline isl::checked::map preimage_domain(isl::checked::pw_multi_aff pma) const;
1918   inline isl::checked::union_map preimage_domain(const isl::checked::union_pw_multi_aff &upma) const;
1919   inline isl::checked::map preimage_range(isl::checked::multi_aff ma) const;
1920   inline isl::checked::map preimage_range(isl::checked::pw_multi_aff pma) const;
1921   inline isl::checked::union_map preimage_range(const isl::checked::union_pw_multi_aff &upma) const;
1922   inline isl::checked::map product(isl::checked::map map2) const;
1923   inline isl::checked::union_map product(const isl::checked::union_map &umap2) const;
1924   inline isl::checked::map product(const isl::checked::basic_map &map2) const;
1925   inline isl::checked::map project_out_all_params() const;
1926   inline isl::checked::set range() const;
1927   inline isl::checked::map range_factor_domain() const;
1928   inline isl::checked::map range_factor_range() const;
1929   inline isl::checked::fixed_box range_lattice_tile() const;
1930   inline isl::checked::fixed_box get_range_lattice_tile() const;
1931   inline isl::checked::union_map range_map() const;
1932   inline isl::checked::map range_product(isl::checked::map map2) const;
1933   inline isl::checked::union_map range_product(const isl::checked::union_map &umap2) const;
1934   inline isl::checked::map range_product(const isl::checked::basic_map &map2) const;
1935   inline isl::checked::map range_reverse() const;
1936   inline isl::checked::fixed_box range_simple_fixed_box_hull() const;
1937   inline isl::checked::fixed_box get_range_simple_fixed_box_hull() const;
1938   inline class size range_tuple_dim() const;
1939   inline isl::checked::id range_tuple_id() const;
1940   inline isl::checked::id get_range_tuple_id() const;
1941   inline isl::checked::map reverse() const;
1942   inline isl::checked::basic_map sample() const;
1943   inline isl::checked::map set_domain_tuple(isl::checked::id id) const;
1944   inline isl::checked::map set_domain_tuple(const std::string &id) const;
1945   inline isl::checked::map set_range_tuple(isl::checked::id id) const;
1946   inline isl::checked::map set_range_tuple(const std::string &id) const;
1947   inline isl::checked::space space() const;
1948   inline isl::checked::space get_space() const;
1949   inline isl::checked::map subtract(isl::checked::map map2) const;
1950   inline isl::checked::union_map subtract(const isl::checked::union_map &umap2) const;
1951   inline isl::checked::map subtract(const isl::checked::basic_map &map2) const;
1952   inline isl::checked::union_map subtract_domain(const isl::checked::union_set &dom) const;
1953   inline isl::checked::union_map subtract_range(const isl::checked::union_set &dom) const;
1954   inline isl::checked::map_list to_list() const;
1955   inline isl::checked::union_map to_union_map() const;
1956   inline isl::checked::map uncurry() const;
1957   inline isl::checked::map unite(isl::checked::map map2) const;
1958   inline isl::checked::union_map unite(const isl::checked::union_map &umap2) const;
1959   inline isl::checked::map unite(const isl::checked::basic_map &map2) const;
1960   static inline isl::checked::map universe(isl::checked::space space);
1961   inline isl::checked::basic_map unshifted_simple_hull() const;
1962   inline isl::checked::map upper_bound(isl::checked::multi_pw_aff upper) const;
1963   inline isl::checked::set wrap() const;
1964   inline isl::checked::map zip() const;
1965 };
1966 
1967 // declarations for isl::map_list
1968 inline map_list manage(__isl_take isl_map_list *ptr);
1969 inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1970 
1971 class map_list {
1972   friend inline map_list manage(__isl_take isl_map_list *ptr);
1973   friend inline map_list manage_copy(__isl_keep isl_map_list *ptr);
1974 
1975 protected:
1976   isl_map_list *ptr = nullptr;
1977 
1978   inline explicit map_list(__isl_take isl_map_list *ptr);
1979 
1980 public:
1981   inline /* implicit */ map_list();
1982   inline /* implicit */ map_list(const map_list &obj);
1983   inline explicit map_list(isl::checked::ctx ctx, int n);
1984   inline explicit map_list(isl::checked::map el);
1985   inline explicit map_list(isl::checked::ctx ctx, const std::string &str);
1986   inline map_list &operator=(map_list obj);
1987   inline ~map_list();
1988   inline __isl_give isl_map_list *copy() const &;
1989   inline __isl_give isl_map_list *copy() && = delete;
1990   inline __isl_keep isl_map_list *get() const;
1991   inline __isl_give isl_map_list *release();
1992   inline bool is_null() const;
1993   inline isl::checked::ctx ctx() const;
1994 
1995   inline isl::checked::map_list add(isl::checked::map el) const;
1996   inline isl::checked::map at(int index) const;
1997   inline isl::checked::map get_at(int index) const;
1998   inline isl::checked::map_list clear() const;
1999   inline isl::checked::map_list concat(isl::checked::map_list list2) const;
2000   inline isl::checked::map_list drop(unsigned int first, unsigned int n) const;
2001   inline stat foreach(const std::function<stat(isl::checked::map)> &fn) const;
2002   inline isl::checked::map_list insert(unsigned int pos, isl::checked::map el) const;
2003   inline class size size() const;
2004 };
2005 
2006 // declarations for isl::multi_aff
2007 inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2008 inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2009 
2010 class multi_aff {
2011   friend inline multi_aff manage(__isl_take isl_multi_aff *ptr);
2012   friend inline multi_aff manage_copy(__isl_keep isl_multi_aff *ptr);
2013 
2014 protected:
2015   isl_multi_aff *ptr = nullptr;
2016 
2017   inline explicit multi_aff(__isl_take isl_multi_aff *ptr);
2018 
2019 public:
2020   inline /* implicit */ multi_aff();
2021   inline /* implicit */ multi_aff(const multi_aff &obj);
2022   inline /* implicit */ multi_aff(isl::checked::aff aff);
2023   inline explicit multi_aff(isl::checked::space space, isl::checked::aff_list list);
2024   inline explicit multi_aff(isl::checked::ctx ctx, const std::string &str);
2025   inline multi_aff &operator=(multi_aff obj);
2026   inline ~multi_aff();
2027   inline __isl_give isl_multi_aff *copy() const &;
2028   inline __isl_give isl_multi_aff *copy() && = delete;
2029   inline __isl_keep isl_multi_aff *get() const;
2030   inline __isl_give isl_multi_aff *release();
2031   inline bool is_null() const;
2032   inline isl::checked::ctx ctx() const;
2033 
2034   inline isl::checked::multi_aff add(isl::checked::multi_aff multi2) const;
2035   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2036   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2037   inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
2038   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2039   inline isl::checked::multi_aff add(const isl::checked::aff &multi2) const;
2040   inline isl::checked::multi_aff add_constant(isl::checked::multi_val mv) const;
2041   inline isl::checked::multi_aff add_constant(isl::checked::val v) const;
2042   inline isl::checked::multi_aff add_constant(long v) const;
2043   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2044   inline isl::checked::map as_map() const;
2045   inline isl::checked::multi_aff as_multi_aff() const;
2046   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
2047   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2048   inline isl::checked::set as_set() const;
2049   inline isl::checked::union_map as_union_map() const;
2050   inline isl::checked::aff at(int pos) const;
2051   inline isl::checked::aff get_at(int pos) const;
2052   inline isl::checked::basic_set bind(isl::checked::multi_id tuple) const;
2053   inline isl::checked::multi_aff bind_domain(isl::checked::multi_id tuple) const;
2054   inline isl::checked::multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2055   inline isl::checked::pw_multi_aff coalesce() const;
2056   inline isl::checked::multi_val constant_multi_val() const;
2057   inline isl::checked::multi_val get_constant_multi_val() const;
2058   inline isl::checked::set domain() const;
2059   static inline isl::checked::multi_aff domain_map(isl::checked::space space);
2060   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2061   inline isl::checked::multi_aff flat_range_product(isl::checked::multi_aff multi2) const;
2062   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2063   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2064   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2065   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2066   inline isl::checked::multi_aff flat_range_product(const isl::checked::aff &multi2) const;
2067   inline isl::checked::multi_aff floor() const;
2068   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2069   inline isl::checked::multi_aff gist(isl::checked::set context) const;
2070   inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
2071   inline isl::checked::multi_aff gist(const isl::checked::basic_set &context) const;
2072   inline isl::checked::multi_aff gist(const isl::checked::point &context) const;
2073   inline boolean has_range_tuple_id() const;
2074   inline isl::checked::multi_aff identity() const;
2075   static inline isl::checked::multi_aff identity_on_domain(isl::checked::space space);
2076   inline isl::checked::multi_aff insert_domain(isl::checked::space domain) const;
2077   inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::set &set) const;
2078   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
2079   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
2080   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2081   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2082   inline isl::checked::pw_multi_aff intersect_params(const isl::checked::set &set) const;
2083   inline boolean involves_locals() const;
2084   inline boolean involves_nan() const;
2085   inline boolean involves_param(const isl::checked::id &id) const;
2086   inline boolean involves_param(const std::string &id) const;
2087   inline boolean involves_param(const isl::checked::id_list &list) const;
2088   inline boolean isa_multi_aff() const;
2089   inline boolean isa_pw_multi_aff() const;
2090   inline isl::checked::aff_list list() const;
2091   inline isl::checked::aff_list get_list() const;
2092   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2093   inline isl::checked::multi_val max_multi_val() const;
2094   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2095   inline isl::checked::multi_val min_multi_val() const;
2096   static inline isl::checked::multi_aff multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv);
2097   inline class size n_piece() const;
2098   inline isl::checked::multi_aff neg() const;
2099   inline boolean plain_is_empty() const;
2100   inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2101   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2102   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2103   inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2104   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
2105   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2106   inline isl::checked::multi_aff product(isl::checked::multi_aff multi2) const;
2107   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2108   inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2109   inline isl::checked::multi_aff product(const isl::checked::aff &multi2) const;
2110   inline isl::checked::multi_aff pullback(isl::checked::multi_aff ma2) const;
2111   inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
2112   inline isl::checked::pw_multi_aff pullback(const isl::checked::pw_multi_aff &pma2) const;
2113   inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
2114   inline isl::checked::multi_aff pullback(const isl::checked::aff &ma2) const;
2115   inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
2116   inline isl::checked::pw_multi_aff range_factor_domain() const;
2117   inline isl::checked::pw_multi_aff range_factor_range() const;
2118   static inline isl::checked::multi_aff range_map(isl::checked::space space);
2119   inline isl::checked::multi_aff range_product(isl::checked::multi_aff multi2) const;
2120   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2121   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2122   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2123   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2124   inline isl::checked::multi_aff range_product(const isl::checked::aff &multi2) const;
2125   inline isl::checked::id range_tuple_id() const;
2126   inline isl::checked::id get_range_tuple_id() const;
2127   inline isl::checked::multi_aff reset_range_tuple_id() const;
2128   inline isl::checked::multi_aff scale(isl::checked::multi_val mv) const;
2129   inline isl::checked::multi_aff scale(isl::checked::val v) const;
2130   inline isl::checked::multi_aff scale(long v) const;
2131   inline isl::checked::multi_aff scale_down(isl::checked::multi_val mv) const;
2132   inline isl::checked::multi_aff scale_down(isl::checked::val v) const;
2133   inline isl::checked::multi_aff scale_down(long v) const;
2134   inline isl::checked::multi_aff set_at(int pos, isl::checked::aff el) const;
2135   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2136   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2137   inline isl::checked::multi_aff set_range_tuple(isl::checked::id id) const;
2138   inline isl::checked::multi_aff set_range_tuple(const std::string &id) const;
2139   inline class size size() const;
2140   inline isl::checked::space space() const;
2141   inline isl::checked::space get_space() const;
2142   inline isl::checked::multi_aff sub(isl::checked::multi_aff multi2) const;
2143   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2144   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2145   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2146   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2147   inline isl::checked::multi_aff sub(const isl::checked::aff &multi2) const;
2148   inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::set &set) const;
2149   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
2150   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
2151   inline isl::checked::pw_multi_aff_list to_list() const;
2152   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2153   inline isl::checked::multi_union_pw_aff to_multi_union_pw_aff() const;
2154   inline isl::checked::pw_multi_aff to_pw_multi_aff() const;
2155   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2156   inline isl::checked::multi_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
2157   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2158   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2159   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2160   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2161   static inline isl::checked::multi_aff zero(isl::checked::space space);
2162 };
2163 
2164 // declarations for isl::multi_id
2165 inline multi_id manage(__isl_take isl_multi_id *ptr);
2166 inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2167 
2168 class multi_id {
2169   friend inline multi_id manage(__isl_take isl_multi_id *ptr);
2170   friend inline multi_id manage_copy(__isl_keep isl_multi_id *ptr);
2171 
2172 protected:
2173   isl_multi_id *ptr = nullptr;
2174 
2175   inline explicit multi_id(__isl_take isl_multi_id *ptr);
2176 
2177 public:
2178   inline /* implicit */ multi_id();
2179   inline /* implicit */ multi_id(const multi_id &obj);
2180   inline explicit multi_id(isl::checked::space space, isl::checked::id_list list);
2181   inline explicit multi_id(isl::checked::ctx ctx, const std::string &str);
2182   inline multi_id &operator=(multi_id obj);
2183   inline ~multi_id();
2184   inline __isl_give isl_multi_id *copy() const &;
2185   inline __isl_give isl_multi_id *copy() && = delete;
2186   inline __isl_keep isl_multi_id *get() const;
2187   inline __isl_give isl_multi_id *release();
2188   inline bool is_null() const;
2189   inline isl::checked::ctx ctx() const;
2190 
2191   inline isl::checked::id at(int pos) const;
2192   inline isl::checked::id get_at(int pos) const;
2193   inline isl::checked::multi_id flat_range_product(isl::checked::multi_id multi2) const;
2194   inline isl::checked::id_list list() const;
2195   inline isl::checked::id_list get_list() const;
2196   inline boolean plain_is_equal(const isl::checked::multi_id &multi2) const;
2197   inline isl::checked::multi_id range_product(isl::checked::multi_id multi2) const;
2198   inline isl::checked::multi_id set_at(int pos, isl::checked::id el) const;
2199   inline isl::checked::multi_id set_at(int pos, const std::string &el) const;
2200   inline class size size() const;
2201   inline isl::checked::space space() const;
2202   inline isl::checked::space get_space() const;
2203 };
2204 
2205 // declarations for isl::multi_pw_aff
2206 inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2207 inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2208 
2209 class multi_pw_aff {
2210   friend inline multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr);
2211   friend inline multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr);
2212 
2213 protected:
2214   isl_multi_pw_aff *ptr = nullptr;
2215 
2216   inline explicit multi_pw_aff(__isl_take isl_multi_pw_aff *ptr);
2217 
2218 public:
2219   inline /* implicit */ multi_pw_aff();
2220   inline /* implicit */ multi_pw_aff(const multi_pw_aff &obj);
2221   inline /* implicit */ multi_pw_aff(isl::checked::aff aff);
2222   inline /* implicit */ multi_pw_aff(isl::checked::multi_aff ma);
2223   inline /* implicit */ multi_pw_aff(isl::checked::pw_aff pa);
2224   inline explicit multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list);
2225   inline /* implicit */ multi_pw_aff(isl::checked::pw_multi_aff pma);
2226   inline explicit multi_pw_aff(isl::checked::ctx ctx, const std::string &str);
2227   inline multi_pw_aff &operator=(multi_pw_aff obj);
2228   inline ~multi_pw_aff();
2229   inline __isl_give isl_multi_pw_aff *copy() const &;
2230   inline __isl_give isl_multi_pw_aff *copy() && = delete;
2231   inline __isl_keep isl_multi_pw_aff *get() const;
2232   inline __isl_give isl_multi_pw_aff *release();
2233   inline bool is_null() const;
2234   inline isl::checked::ctx ctx() const;
2235 
2236   inline isl::checked::multi_pw_aff add(isl::checked::multi_pw_aff multi2) const;
2237   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2238   inline isl::checked::multi_pw_aff add(const isl::checked::aff &multi2) const;
2239   inline isl::checked::multi_pw_aff add(const isl::checked::multi_aff &multi2) const;
2240   inline isl::checked::multi_pw_aff add(const isl::checked::pw_aff &multi2) const;
2241   inline isl::checked::multi_pw_aff add(const isl::checked::pw_multi_aff &multi2) const;
2242   inline isl::checked::multi_pw_aff add_constant(isl::checked::multi_val mv) const;
2243   inline isl::checked::multi_pw_aff add_constant(isl::checked::val v) const;
2244   inline isl::checked::multi_pw_aff add_constant(long v) const;
2245   inline isl::checked::map as_map() const;
2246   inline isl::checked::multi_aff as_multi_aff() const;
2247   inline isl::checked::set as_set() const;
2248   inline isl::checked::pw_aff at(int pos) const;
2249   inline isl::checked::pw_aff get_at(int pos) const;
2250   inline isl::checked::set bind(isl::checked::multi_id tuple) const;
2251   inline isl::checked::multi_pw_aff bind_domain(isl::checked::multi_id tuple) const;
2252   inline isl::checked::multi_pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2253   inline isl::checked::multi_pw_aff coalesce() const;
2254   inline isl::checked::set domain() const;
2255   inline isl::checked::multi_pw_aff flat_range_product(isl::checked::multi_pw_aff multi2) const;
2256   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2257   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::aff &multi2) const;
2258   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_aff &multi2) const;
2259   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_aff &multi2) const;
2260   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::pw_multi_aff &multi2) const;
2261   inline isl::checked::multi_pw_aff gist(isl::checked::set set) const;
2262   inline isl::checked::multi_union_pw_aff gist(const isl::checked::union_set &context) const;
2263   inline isl::checked::multi_pw_aff gist(const isl::checked::basic_set &set) const;
2264   inline isl::checked::multi_pw_aff gist(const isl::checked::point &set) const;
2265   inline boolean has_range_tuple_id() const;
2266   inline isl::checked::multi_pw_aff identity() const;
2267   static inline isl::checked::multi_pw_aff identity_on_domain(isl::checked::space space);
2268   inline isl::checked::multi_pw_aff insert_domain(isl::checked::space domain) const;
2269   inline isl::checked::multi_pw_aff intersect_domain(isl::checked::set domain) const;
2270   inline isl::checked::multi_union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2271   inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::basic_set &domain) const;
2272   inline isl::checked::multi_pw_aff intersect_domain(const isl::checked::point &domain) const;
2273   inline isl::checked::multi_pw_aff intersect_params(isl::checked::set set) const;
2274   inline boolean involves_nan() const;
2275   inline boolean involves_param(const isl::checked::id &id) const;
2276   inline boolean involves_param(const std::string &id) const;
2277   inline boolean involves_param(const isl::checked::id_list &list) const;
2278   inline boolean isa_multi_aff() const;
2279   inline isl::checked::pw_aff_list list() const;
2280   inline isl::checked::pw_aff_list get_list() const;
2281   inline isl::checked::multi_pw_aff max(isl::checked::multi_pw_aff multi2) const;
2282   inline isl::checked::multi_val max_multi_val() const;
2283   inline isl::checked::multi_pw_aff min(isl::checked::multi_pw_aff multi2) const;
2284   inline isl::checked::multi_val min_multi_val() const;
2285   inline isl::checked::multi_pw_aff neg() const;
2286   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2287   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2288   inline boolean plain_is_equal(const isl::checked::aff &multi2) const;
2289   inline boolean plain_is_equal(const isl::checked::multi_aff &multi2) const;
2290   inline boolean plain_is_equal(const isl::checked::pw_aff &multi2) const;
2291   inline boolean plain_is_equal(const isl::checked::pw_multi_aff &multi2) const;
2292   inline isl::checked::multi_pw_aff product(isl::checked::multi_pw_aff multi2) const;
2293   inline isl::checked::multi_pw_aff pullback(isl::checked::multi_aff ma) const;
2294   inline isl::checked::multi_pw_aff pullback(isl::checked::multi_pw_aff mpa2) const;
2295   inline isl::checked::multi_pw_aff pullback(isl::checked::pw_multi_aff pma) const;
2296   inline isl::checked::multi_union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2297   inline isl::checked::multi_pw_aff range_product(isl::checked::multi_pw_aff multi2) const;
2298   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2299   inline isl::checked::multi_pw_aff range_product(const isl::checked::aff &multi2) const;
2300   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_aff &multi2) const;
2301   inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_aff &multi2) const;
2302   inline isl::checked::multi_pw_aff range_product(const isl::checked::pw_multi_aff &multi2) const;
2303   inline isl::checked::id range_tuple_id() const;
2304   inline isl::checked::id get_range_tuple_id() const;
2305   inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2306   inline isl::checked::multi_pw_aff scale(isl::checked::multi_val mv) const;
2307   inline isl::checked::multi_pw_aff scale(isl::checked::val v) const;
2308   inline isl::checked::multi_pw_aff scale(long v) const;
2309   inline isl::checked::multi_pw_aff scale_down(isl::checked::multi_val mv) const;
2310   inline isl::checked::multi_pw_aff scale_down(isl::checked::val v) const;
2311   inline isl::checked::multi_pw_aff scale_down(long v) const;
2312   inline isl::checked::multi_pw_aff set_at(int pos, isl::checked::pw_aff el) const;
2313   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2314   inline isl::checked::multi_pw_aff set_range_tuple(isl::checked::id id) const;
2315   inline isl::checked::multi_pw_aff set_range_tuple(const std::string &id) const;
2316   inline class size size() const;
2317   inline isl::checked::space space() const;
2318   inline isl::checked::space get_space() const;
2319   inline isl::checked::multi_pw_aff sub(isl::checked::multi_pw_aff multi2) const;
2320   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2321   inline isl::checked::multi_pw_aff sub(const isl::checked::aff &multi2) const;
2322   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_aff &multi2) const;
2323   inline isl::checked::multi_pw_aff sub(const isl::checked::pw_aff &multi2) const;
2324   inline isl::checked::multi_pw_aff sub(const isl::checked::pw_multi_aff &multi2) const;
2325   inline isl::checked::multi_pw_aff unbind_params_insert_domain(isl::checked::multi_id domain) const;
2326   inline isl::checked::multi_pw_aff union_add(isl::checked::multi_pw_aff mpa2) const;
2327   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2328   inline isl::checked::multi_pw_aff union_add(const isl::checked::aff &mpa2) const;
2329   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_aff &mpa2) const;
2330   inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_aff &mpa2) const;
2331   inline isl::checked::multi_pw_aff union_add(const isl::checked::pw_multi_aff &mpa2) const;
2332   static inline isl::checked::multi_pw_aff zero(isl::checked::space space);
2333 };
2334 
2335 // declarations for isl::multi_union_pw_aff
2336 inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2337 inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2338 
2339 class multi_union_pw_aff {
2340   friend inline multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr);
2341   friend inline multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr);
2342 
2343 protected:
2344   isl_multi_union_pw_aff *ptr = nullptr;
2345 
2346   inline explicit multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr);
2347 
2348 public:
2349   inline /* implicit */ multi_union_pw_aff();
2350   inline /* implicit */ multi_union_pw_aff(const multi_union_pw_aff &obj);
2351   inline /* implicit */ multi_union_pw_aff(isl::checked::multi_pw_aff mpa);
2352   inline /* implicit */ multi_union_pw_aff(isl::checked::union_pw_aff upa);
2353   inline explicit multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list);
2354   inline explicit multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str);
2355   inline multi_union_pw_aff &operator=(multi_union_pw_aff obj);
2356   inline ~multi_union_pw_aff();
2357   inline __isl_give isl_multi_union_pw_aff *copy() const &;
2358   inline __isl_give isl_multi_union_pw_aff *copy() && = delete;
2359   inline __isl_keep isl_multi_union_pw_aff *get() const;
2360   inline __isl_give isl_multi_union_pw_aff *release();
2361   inline bool is_null() const;
2362   inline isl::checked::ctx ctx() const;
2363 
2364   inline isl::checked::multi_union_pw_aff add(isl::checked::multi_union_pw_aff multi2) const;
2365   inline isl::checked::union_pw_aff at(int pos) const;
2366   inline isl::checked::union_pw_aff get_at(int pos) const;
2367   inline isl::checked::union_set bind(isl::checked::multi_id tuple) const;
2368   inline isl::checked::multi_union_pw_aff coalesce() const;
2369   inline isl::checked::union_set domain() const;
2370   inline isl::checked::multi_union_pw_aff flat_range_product(isl::checked::multi_union_pw_aff multi2) const;
2371   inline isl::checked::multi_union_pw_aff gist(isl::checked::union_set context) const;
2372   inline boolean has_range_tuple_id() const;
2373   inline isl::checked::multi_union_pw_aff intersect_domain(isl::checked::union_set uset) const;
2374   inline isl::checked::multi_union_pw_aff intersect_params(isl::checked::set params) const;
2375   inline boolean involves_nan() const;
2376   inline isl::checked::union_pw_aff_list list() const;
2377   inline isl::checked::union_pw_aff_list get_list() const;
2378   inline isl::checked::multi_union_pw_aff neg() const;
2379   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2380   inline isl::checked::multi_union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
2381   inline isl::checked::multi_union_pw_aff range_product(isl::checked::multi_union_pw_aff multi2) const;
2382   inline isl::checked::id range_tuple_id() const;
2383   inline isl::checked::id get_range_tuple_id() const;
2384   inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
2385   inline isl::checked::multi_union_pw_aff scale(isl::checked::multi_val mv) const;
2386   inline isl::checked::multi_union_pw_aff scale(isl::checked::val v) const;
2387   inline isl::checked::multi_union_pw_aff scale(long v) const;
2388   inline isl::checked::multi_union_pw_aff scale_down(isl::checked::multi_val mv) const;
2389   inline isl::checked::multi_union_pw_aff scale_down(isl::checked::val v) const;
2390   inline isl::checked::multi_union_pw_aff scale_down(long v) const;
2391   inline isl::checked::multi_union_pw_aff set_at(int pos, isl::checked::union_pw_aff el) const;
2392   inline isl::checked::multi_union_pw_aff set_range_tuple(isl::checked::id id) const;
2393   inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
2394   inline class size size() const;
2395   inline isl::checked::space space() const;
2396   inline isl::checked::space get_space() const;
2397   inline isl::checked::multi_union_pw_aff sub(isl::checked::multi_union_pw_aff multi2) const;
2398   inline isl::checked::multi_union_pw_aff union_add(isl::checked::multi_union_pw_aff mupa2) const;
2399   static inline isl::checked::multi_union_pw_aff zero(isl::checked::space space);
2400 };
2401 
2402 // declarations for isl::multi_val
2403 inline multi_val manage(__isl_take isl_multi_val *ptr);
2404 inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2405 
2406 class multi_val {
2407   friend inline multi_val manage(__isl_take isl_multi_val *ptr);
2408   friend inline multi_val manage_copy(__isl_keep isl_multi_val *ptr);
2409 
2410 protected:
2411   isl_multi_val *ptr = nullptr;
2412 
2413   inline explicit multi_val(__isl_take isl_multi_val *ptr);
2414 
2415 public:
2416   inline /* implicit */ multi_val();
2417   inline /* implicit */ multi_val(const multi_val &obj);
2418   inline explicit multi_val(isl::checked::space space, isl::checked::val_list list);
2419   inline explicit multi_val(isl::checked::ctx ctx, const std::string &str);
2420   inline multi_val &operator=(multi_val obj);
2421   inline ~multi_val();
2422   inline __isl_give isl_multi_val *copy() const &;
2423   inline __isl_give isl_multi_val *copy() && = delete;
2424   inline __isl_keep isl_multi_val *get() const;
2425   inline __isl_give isl_multi_val *release();
2426   inline bool is_null() const;
2427   inline isl::checked::ctx ctx() const;
2428 
2429   inline isl::checked::multi_val add(isl::checked::multi_val multi2) const;
2430   inline isl::checked::multi_val add(isl::checked::val v) const;
2431   inline isl::checked::multi_val add(long v) const;
2432   inline isl::checked::val at(int pos) const;
2433   inline isl::checked::val get_at(int pos) const;
2434   inline isl::checked::multi_val flat_range_product(isl::checked::multi_val multi2) const;
2435   inline boolean has_range_tuple_id() const;
2436   inline boolean involves_nan() const;
2437   inline isl::checked::val_list list() const;
2438   inline isl::checked::val_list get_list() const;
2439   inline isl::checked::multi_val max(isl::checked::multi_val multi2) const;
2440   inline isl::checked::multi_val min(isl::checked::multi_val multi2) const;
2441   inline isl::checked::multi_val neg() const;
2442   inline boolean plain_is_equal(const isl::checked::multi_val &multi2) const;
2443   inline isl::checked::multi_val product(isl::checked::multi_val multi2) const;
2444   inline isl::checked::multi_val range_product(isl::checked::multi_val multi2) const;
2445   inline isl::checked::id range_tuple_id() const;
2446   inline isl::checked::id get_range_tuple_id() const;
2447   inline isl::checked::multi_val reset_range_tuple_id() const;
2448   inline isl::checked::multi_val scale(isl::checked::multi_val mv) const;
2449   inline isl::checked::multi_val scale(isl::checked::val v) const;
2450   inline isl::checked::multi_val scale(long v) const;
2451   inline isl::checked::multi_val scale_down(isl::checked::multi_val mv) const;
2452   inline isl::checked::multi_val scale_down(isl::checked::val v) const;
2453   inline isl::checked::multi_val scale_down(long v) const;
2454   inline isl::checked::multi_val set_at(int pos, isl::checked::val el) const;
2455   inline isl::checked::multi_val set_at(int pos, long el) const;
2456   inline isl::checked::multi_val set_range_tuple(isl::checked::id id) const;
2457   inline isl::checked::multi_val set_range_tuple(const std::string &id) const;
2458   inline class size size() const;
2459   inline isl::checked::space space() const;
2460   inline isl::checked::space get_space() const;
2461   inline isl::checked::multi_val sub(isl::checked::multi_val multi2) const;
2462   static inline isl::checked::multi_val zero(isl::checked::space space);
2463 };
2464 
2465 // declarations for isl::point
2466 inline point manage(__isl_take isl_point *ptr);
2467 inline point manage_copy(__isl_keep isl_point *ptr);
2468 
2469 class point {
2470   friend inline point manage(__isl_take isl_point *ptr);
2471   friend inline point manage_copy(__isl_keep isl_point *ptr);
2472 
2473 protected:
2474   isl_point *ptr = nullptr;
2475 
2476   inline explicit point(__isl_take isl_point *ptr);
2477 
2478 public:
2479   inline /* implicit */ point();
2480   inline /* implicit */ point(const point &obj);
2481   inline point &operator=(point obj);
2482   inline ~point();
2483   inline __isl_give isl_point *copy() const &;
2484   inline __isl_give isl_point *copy() && = delete;
2485   inline __isl_keep isl_point *get() const;
2486   inline __isl_give isl_point *release();
2487   inline bool is_null() const;
2488   inline isl::checked::ctx ctx() const;
2489 
2490   inline isl::checked::basic_set affine_hull() const;
2491   inline isl::checked::basic_set apply(const isl::checked::basic_map &bmap) const;
2492   inline isl::checked::set apply(const isl::checked::map &map) const;
2493   inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
2494   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2495   inline isl::checked::set as_set() const;
2496   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2497   inline isl::checked::set coalesce() const;
2498   inline isl::checked::set complement() const;
2499   inline isl::checked::union_set compute_divs() const;
2500   inline isl::checked::basic_set detect_equalities() const;
2501   inline isl::checked::val dim_max_val(int pos) const;
2502   inline isl::checked::val dim_min_val(int pos) const;
2503   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
2504   inline isl::checked::set extract_set(const isl::checked::space &space) const;
2505   inline isl::checked::basic_set flatten() const;
2506   inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
2507   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
2508   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
2509   inline isl::checked::basic_set gist(const isl::checked::basic_set &context) const;
2510   inline isl::checked::set gist(const isl::checked::set &context) const;
2511   inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
2512   inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
2513   inline isl::checked::map identity() const;
2514   inline isl::checked::pw_aff indicator_function() const;
2515   inline isl::checked::map insert_domain(const isl::checked::space &domain) const;
2516   inline isl::checked::basic_set intersect(const isl::checked::basic_set &bset2) const;
2517   inline isl::checked::set intersect(const isl::checked::set &set2) const;
2518   inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
2519   inline isl::checked::basic_set intersect_params(const isl::checked::basic_set &bset2) const;
2520   inline isl::checked::set intersect_params(const isl::checked::set &params) const;
2521   inline boolean involves_locals() const;
2522   inline boolean is_disjoint(const isl::checked::set &set2) const;
2523   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
2524   inline boolean is_empty() const;
2525   inline boolean is_equal(const isl::checked::basic_set &bset2) const;
2526   inline boolean is_equal(const isl::checked::set &set2) const;
2527   inline boolean is_equal(const isl::checked::union_set &uset2) const;
2528   inline boolean is_singleton() const;
2529   inline boolean is_strict_subset(const isl::checked::set &set2) const;
2530   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
2531   inline boolean is_subset(const isl::checked::basic_set &bset2) const;
2532   inline boolean is_subset(const isl::checked::set &set2) const;
2533   inline boolean is_subset(const isl::checked::union_set &uset2) const;
2534   inline boolean is_wrapping() const;
2535   inline boolean isa_set() const;
2536   inline isl::checked::set lexmax() const;
2537   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
2538   inline isl::checked::set lexmin() const;
2539   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
2540   inline isl::checked::set lower_bound(const isl::checked::multi_pw_aff &lower) const;
2541   inline isl::checked::set lower_bound(const isl::checked::multi_val &lower) const;
2542   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
2543   inline isl::checked::val max_val(const isl::checked::aff &obj) const;
2544   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
2545   inline isl::checked::val min_val(const isl::checked::aff &obj) const;
2546   inline isl::checked::multi_val multi_val() const;
2547   inline isl::checked::multi_val get_multi_val() const;
2548   inline class size n_basic_set() const;
2549   inline isl::checked::basic_set params() const;
2550   inline isl::checked::multi_val plain_multi_val_if_fixed() const;
2551   inline isl::checked::basic_set polyhedral_hull() const;
2552   inline isl::checked::set preimage(const isl::checked::multi_aff &ma) const;
2553   inline isl::checked::set preimage(const isl::checked::multi_pw_aff &mpa) const;
2554   inline isl::checked::set preimage(const isl::checked::pw_multi_aff &pma) const;
2555   inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
2556   inline isl::checked::set product(const isl::checked::set &set2) const;
2557   inline isl::checked::set project_out_all_params() const;
2558   inline isl::checked::set project_out_param(const isl::checked::id &id) const;
2559   inline isl::checked::set project_out_param(const std::string &id) const;
2560   inline isl::checked::set project_out_param(const isl::checked::id_list &list) const;
2561   inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const;
2562   inline isl::checked::basic_set sample() const;
2563   inline isl::checked::point sample_point() const;
2564   inline isl::checked::set_list set_list() const;
2565   inline isl::checked::fixed_box simple_fixed_box_hull() const;
2566   inline isl::checked::space space() const;
2567   inline isl::checked::val stride(int pos) const;
2568   inline isl::checked::set subtract(const isl::checked::set &set2) const;
2569   inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
2570   inline isl::checked::set_list to_list() const;
2571   inline isl::checked::set to_set() const;
2572   inline isl::checked::union_set to_union_set() const;
2573   inline isl::checked::map translation() const;
2574   inline class size tuple_dim() const;
2575   inline isl::checked::set unbind_params(const isl::checked::multi_id &tuple) const;
2576   inline isl::checked::map unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2577   inline isl::checked::set unite(const isl::checked::basic_set &bset2) const;
2578   inline isl::checked::set unite(const isl::checked::set &set2) const;
2579   inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
2580   inline isl::checked::basic_set unshifted_simple_hull() const;
2581   inline isl::checked::map unwrap() const;
2582   inline isl::checked::set upper_bound(const isl::checked::multi_pw_aff &upper) const;
2583   inline isl::checked::set upper_bound(const isl::checked::multi_val &upper) const;
2584 };
2585 
2586 // declarations for isl::pw_aff
2587 inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2588 inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2589 
2590 class pw_aff {
2591   friend inline pw_aff manage(__isl_take isl_pw_aff *ptr);
2592   friend inline pw_aff manage_copy(__isl_keep isl_pw_aff *ptr);
2593 
2594 protected:
2595   isl_pw_aff *ptr = nullptr;
2596 
2597   inline explicit pw_aff(__isl_take isl_pw_aff *ptr);
2598 
2599 public:
2600   inline /* implicit */ pw_aff();
2601   inline /* implicit */ pw_aff(const pw_aff &obj);
2602   inline /* implicit */ pw_aff(isl::checked::aff aff);
2603   inline explicit pw_aff(isl::checked::ctx ctx, const std::string &str);
2604   inline pw_aff &operator=(pw_aff obj);
2605   inline ~pw_aff();
2606   inline __isl_give isl_pw_aff *copy() const &;
2607   inline __isl_give isl_pw_aff *copy() && = delete;
2608   inline __isl_keep isl_pw_aff *get() const;
2609   inline __isl_give isl_pw_aff *release();
2610   inline bool is_null() const;
2611   inline isl::checked::ctx ctx() const;
2612 
2613   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2614   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2615   inline isl::checked::pw_aff add(isl::checked::pw_aff pwaff2) const;
2616   inline isl::checked::pw_multi_aff add(const isl::checked::pw_multi_aff &pma2) const;
2617   inline isl::checked::union_pw_aff add(const isl::checked::union_pw_aff &upa2) const;
2618   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2619   inline isl::checked::pw_aff add(const isl::checked::aff &pwaff2) const;
2620   inline isl::checked::pw_aff add_constant(isl::checked::val v) const;
2621   inline isl::checked::pw_aff add_constant(long v) const;
2622   inline isl::checked::pw_multi_aff add_constant(const isl::checked::multi_val &mv) const;
2623   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2624   inline isl::checked::aff as_aff() const;
2625   inline isl::checked::map as_map() const;
2626   inline isl::checked::multi_aff as_multi_aff() const;
2627   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
2628   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2629   inline isl::checked::set as_set() const;
2630   inline isl::checked::union_map as_union_map() const;
2631   inline isl::checked::pw_aff at(int pos) const;
2632   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2633   inline isl::checked::set bind(isl::checked::id id) const;
2634   inline isl::checked::set bind(const std::string &id) const;
2635   inline isl::checked::pw_aff bind_domain(isl::checked::multi_id tuple) const;
2636   inline isl::checked::pw_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2637   inline isl::checked::pw_aff ceil() const;
2638   inline isl::checked::pw_aff coalesce() const;
2639   inline isl::checked::pw_aff cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const;
2640   inline isl::checked::pw_aff div(isl::checked::pw_aff pa2) const;
2641   inline isl::checked::set domain() const;
2642   inline isl::checked::set eq_set(isl::checked::pw_aff pwaff2) const;
2643   inline isl::checked::val eval(isl::checked::point pnt) const;
2644   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2645   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2646   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2647   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_multi_aff &pma2) const;
2648   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2649   inline isl::checked::pw_aff floor() const;
2650   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2651   inline isl::checked::set ge_set(isl::checked::pw_aff pwaff2) const;
2652   inline isl::checked::pw_aff gist(isl::checked::set context) const;
2653   inline isl::checked::union_pw_aff gist(const isl::checked::union_set &context) const;
2654   inline isl::checked::pw_aff gist(const isl::checked::basic_set &context) const;
2655   inline isl::checked::pw_aff gist(const isl::checked::point &context) const;
2656   inline isl::checked::set gt_set(isl::checked::pw_aff pwaff2) const;
2657   inline boolean has_range_tuple_id() const;
2658   inline isl::checked::multi_pw_aff identity() const;
2659   inline isl::checked::pw_aff insert_domain(isl::checked::space domain) const;
2660   inline isl::checked::pw_aff intersect_domain(isl::checked::set set) const;
2661   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::space &space) const;
2662   inline isl::checked::union_pw_aff intersect_domain(const isl::checked::union_set &uset) const;
2663   inline isl::checked::pw_aff intersect_domain(const isl::checked::basic_set &set) const;
2664   inline isl::checked::pw_aff intersect_domain(const isl::checked::point &set) const;
2665   inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2666   inline isl::checked::union_pw_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2667   inline isl::checked::pw_aff intersect_params(isl::checked::set set) const;
2668   inline boolean involves_locals() const;
2669   inline boolean involves_nan() const;
2670   inline boolean involves_param(const isl::checked::id &id) const;
2671   inline boolean involves_param(const std::string &id) const;
2672   inline boolean involves_param(const isl::checked::id_list &list) const;
2673   inline boolean isa_aff() const;
2674   inline boolean isa_multi_aff() const;
2675   inline boolean isa_pw_multi_aff() const;
2676   inline isl::checked::set le_set(isl::checked::pw_aff pwaff2) const;
2677   inline isl::checked::pw_aff_list list() const;
2678   inline isl::checked::set lt_set(isl::checked::pw_aff pwaff2) const;
2679   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2680   inline isl::checked::pw_aff max(isl::checked::pw_aff pwaff2) const;
2681   inline isl::checked::pw_aff max(const isl::checked::aff &pwaff2) const;
2682   inline isl::checked::multi_val max_multi_val() const;
2683   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2684   inline isl::checked::pw_aff min(isl::checked::pw_aff pwaff2) const;
2685   inline isl::checked::pw_aff min(const isl::checked::aff &pwaff2) const;
2686   inline isl::checked::multi_val min_multi_val() const;
2687   inline isl::checked::pw_aff mod(isl::checked::val mod) const;
2688   inline isl::checked::pw_aff mod(long mod) const;
2689   inline isl::checked::pw_aff mul(isl::checked::pw_aff pwaff2) const;
2690   inline class size n_piece() const;
2691   inline isl::checked::set ne_set(isl::checked::pw_aff pwaff2) const;
2692   inline isl::checked::pw_aff neg() const;
2693   static inline isl::checked::pw_aff param_on_domain(isl::checked::set domain, isl::checked::id id);
2694   inline boolean plain_is_empty() const;
2695   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2696   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2697   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const;
2698   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2699   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2700   inline isl::checked::pw_multi_aff product(const isl::checked::pw_multi_aff &pma2) const;
2701   inline isl::checked::pw_aff pullback(isl::checked::multi_aff ma) const;
2702   inline isl::checked::pw_aff pullback(isl::checked::multi_pw_aff mpa) const;
2703   inline isl::checked::pw_aff pullback(isl::checked::pw_multi_aff pma) const;
2704   inline isl::checked::union_pw_aff pullback(const isl::checked::union_pw_multi_aff &upma) const;
2705   inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
2706   inline isl::checked::pw_multi_aff range_factor_domain() const;
2707   inline isl::checked::pw_multi_aff range_factor_range() const;
2708   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2709   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2710   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_multi_aff &pma2) const;
2711   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2712   inline isl::checked::id range_tuple_id() const;
2713   inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2714   inline isl::checked::multi_pw_aff scale(const isl::checked::multi_val &mv) const;
2715   inline isl::checked::pw_aff scale(isl::checked::val v) const;
2716   inline isl::checked::pw_aff scale(long v) const;
2717   inline isl::checked::multi_pw_aff scale_down(const isl::checked::multi_val &mv) const;
2718   inline isl::checked::pw_aff scale_down(isl::checked::val f) const;
2719   inline isl::checked::pw_aff scale_down(long f) const;
2720   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2721   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2722   inline isl::checked::pw_multi_aff set_range_tuple(const isl::checked::id &id) const;
2723   inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
2724   inline class size size() const;
2725   inline isl::checked::space space() const;
2726   inline isl::checked::space get_space() const;
2727   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2728   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2729   inline isl::checked::pw_aff sub(isl::checked::pw_aff pwaff2) const;
2730   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_multi_aff &pma2) const;
2731   inline isl::checked::union_pw_aff sub(const isl::checked::union_pw_aff &upa2) const;
2732   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2733   inline isl::checked::pw_aff sub(const isl::checked::aff &pwaff2) const;
2734   inline isl::checked::pw_aff subtract_domain(isl::checked::set set) const;
2735   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::space &space) const;
2736   inline isl::checked::union_pw_aff subtract_domain(const isl::checked::union_set &uset) const;
2737   inline isl::checked::pw_aff subtract_domain(const isl::checked::basic_set &set) const;
2738   inline isl::checked::pw_aff subtract_domain(const isl::checked::point &set) const;
2739   inline isl::checked::pw_aff tdiv_q(isl::checked::pw_aff pa2) const;
2740   inline isl::checked::pw_aff tdiv_r(isl::checked::pw_aff pa2) const;
2741   inline isl::checked::pw_aff_list to_list() const;
2742   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2743   inline isl::checked::union_pw_aff to_union_pw_aff() const;
2744   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2745   inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2746   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2747   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2748   inline isl::checked::pw_aff union_add(isl::checked::pw_aff pwaff2) const;
2749   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_multi_aff &pma2) const;
2750   inline isl::checked::union_pw_aff union_add(const isl::checked::union_pw_aff &upa2) const;
2751   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2752   inline isl::checked::pw_aff union_add(const isl::checked::aff &pwaff2) const;
2753 };
2754 
2755 // declarations for isl::pw_aff_list
2756 inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2757 inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2758 
2759 class pw_aff_list {
2760   friend inline pw_aff_list manage(__isl_take isl_pw_aff_list *ptr);
2761   friend inline pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr);
2762 
2763 protected:
2764   isl_pw_aff_list *ptr = nullptr;
2765 
2766   inline explicit pw_aff_list(__isl_take isl_pw_aff_list *ptr);
2767 
2768 public:
2769   inline /* implicit */ pw_aff_list();
2770   inline /* implicit */ pw_aff_list(const pw_aff_list &obj);
2771   inline explicit pw_aff_list(isl::checked::ctx ctx, int n);
2772   inline explicit pw_aff_list(isl::checked::pw_aff el);
2773   inline explicit pw_aff_list(isl::checked::ctx ctx, const std::string &str);
2774   inline pw_aff_list &operator=(pw_aff_list obj);
2775   inline ~pw_aff_list();
2776   inline __isl_give isl_pw_aff_list *copy() const &;
2777   inline __isl_give isl_pw_aff_list *copy() && = delete;
2778   inline __isl_keep isl_pw_aff_list *get() const;
2779   inline __isl_give isl_pw_aff_list *release();
2780   inline bool is_null() const;
2781   inline isl::checked::ctx ctx() const;
2782 
2783   inline isl::checked::pw_aff_list add(isl::checked::pw_aff el) const;
2784   inline isl::checked::pw_aff at(int index) const;
2785   inline isl::checked::pw_aff get_at(int index) const;
2786   inline isl::checked::pw_aff_list clear() const;
2787   inline isl::checked::pw_aff_list concat(isl::checked::pw_aff_list list2) const;
2788   inline isl::checked::pw_aff_list drop(unsigned int first, unsigned int n) const;
2789   inline stat foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const;
2790   inline isl::checked::pw_aff_list insert(unsigned int pos, isl::checked::pw_aff el) const;
2791   inline class size size() const;
2792 };
2793 
2794 // declarations for isl::pw_multi_aff
2795 inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2796 inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2797 
2798 class pw_multi_aff {
2799   friend inline pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr);
2800   friend inline pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr);
2801 
2802 protected:
2803   isl_pw_multi_aff *ptr = nullptr;
2804 
2805   inline explicit pw_multi_aff(__isl_take isl_pw_multi_aff *ptr);
2806 
2807 public:
2808   inline /* implicit */ pw_multi_aff();
2809   inline /* implicit */ pw_multi_aff(const pw_multi_aff &obj);
2810   inline /* implicit */ pw_multi_aff(isl::checked::multi_aff ma);
2811   inline /* implicit */ pw_multi_aff(isl::checked::pw_aff pa);
2812   inline explicit pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
2813   inline pw_multi_aff &operator=(pw_multi_aff obj);
2814   inline ~pw_multi_aff();
2815   inline __isl_give isl_pw_multi_aff *copy() const &;
2816   inline __isl_give isl_pw_multi_aff *copy() && = delete;
2817   inline __isl_keep isl_pw_multi_aff *get() const;
2818   inline __isl_give isl_pw_multi_aff *release();
2819   inline bool is_null() const;
2820   inline isl::checked::ctx ctx() const;
2821 
2822   inline isl::checked::multi_pw_aff add(const isl::checked::multi_pw_aff &multi2) const;
2823   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
2824   inline isl::checked::pw_multi_aff add(isl::checked::pw_multi_aff pma2) const;
2825   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
2826   inline isl::checked::pw_multi_aff add(const isl::checked::multi_aff &pma2) const;
2827   inline isl::checked::pw_multi_aff add(const isl::checked::pw_aff &pma2) const;
2828   inline isl::checked::pw_multi_aff add_constant(isl::checked::multi_val mv) const;
2829   inline isl::checked::pw_multi_aff add_constant(isl::checked::val v) const;
2830   inline isl::checked::pw_multi_aff add_constant(long v) const;
2831   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
2832   inline isl::checked::map as_map() const;
2833   inline isl::checked::multi_aff as_multi_aff() const;
2834   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
2835   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
2836   inline isl::checked::set as_set() const;
2837   inline isl::checked::union_map as_union_map() const;
2838   inline isl::checked::pw_aff at(int pos) const;
2839   inline isl::checked::pw_aff get_at(int pos) const;
2840   inline isl::checked::set bind(const isl::checked::multi_id &tuple) const;
2841   inline isl::checked::pw_multi_aff bind_domain(isl::checked::multi_id tuple) const;
2842   inline isl::checked::pw_multi_aff bind_domain_wrapped_domain(isl::checked::multi_id tuple) const;
2843   inline isl::checked::pw_multi_aff coalesce() const;
2844   inline isl::checked::set domain() const;
2845   static inline isl::checked::pw_multi_aff domain_map(isl::checked::space space);
2846   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
2847   inline isl::checked::multi_pw_aff flat_range_product(const isl::checked::multi_pw_aff &multi2) const;
2848   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2849   inline isl::checked::pw_multi_aff flat_range_product(isl::checked::pw_multi_aff pma2) const;
2850   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2851   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::multi_aff &pma2) const;
2852   inline isl::checked::pw_multi_aff flat_range_product(const isl::checked::pw_aff &pma2) const;
2853   inline stat foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const;
2854   inline isl::checked::pw_multi_aff gist(isl::checked::set set) const;
2855   inline isl::checked::union_pw_multi_aff gist(const isl::checked::union_set &context) const;
2856   inline isl::checked::pw_multi_aff gist(const isl::checked::basic_set &set) const;
2857   inline isl::checked::pw_multi_aff gist(const isl::checked::point &set) const;
2858   inline boolean has_range_tuple_id() const;
2859   inline isl::checked::multi_pw_aff identity() const;
2860   static inline isl::checked::pw_multi_aff identity_on_domain(isl::checked::space space);
2861   inline isl::checked::pw_multi_aff insert_domain(isl::checked::space domain) const;
2862   inline isl::checked::pw_multi_aff intersect_domain(isl::checked::set set) const;
2863   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::space &space) const;
2864   inline isl::checked::union_pw_multi_aff intersect_domain(const isl::checked::union_set &uset) const;
2865   inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::basic_set &set) const;
2866   inline isl::checked::pw_multi_aff intersect_domain(const isl::checked::point &set) const;
2867   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const;
2868   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(const isl::checked::union_set &uset) const;
2869   inline isl::checked::pw_multi_aff intersect_params(isl::checked::set set) const;
2870   inline boolean involves_locals() const;
2871   inline boolean involves_nan() const;
2872   inline boolean involves_param(const isl::checked::id &id) const;
2873   inline boolean involves_param(const std::string &id) const;
2874   inline boolean involves_param(const isl::checked::id_list &list) const;
2875   inline boolean isa_multi_aff() const;
2876   inline boolean isa_pw_multi_aff() const;
2877   inline isl::checked::pw_aff_list list() const;
2878   inline isl::checked::multi_pw_aff max(const isl::checked::multi_pw_aff &multi2) const;
2879   inline isl::checked::multi_val max_multi_val() const;
2880   inline isl::checked::multi_pw_aff min(const isl::checked::multi_pw_aff &multi2) const;
2881   inline isl::checked::multi_val min_multi_val() const;
2882   static inline isl::checked::pw_multi_aff multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv);
2883   inline class size n_piece() const;
2884   inline isl::checked::multi_pw_aff neg() const;
2885   inline boolean plain_is_empty() const;
2886   inline boolean plain_is_equal(const isl::checked::multi_pw_aff &multi2) const;
2887   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
2888   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const;
2889   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
2890   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const;
2891   inline isl::checked::pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const;
2892   inline isl::checked::multi_pw_aff product(const isl::checked::multi_pw_aff &multi2) const;
2893   inline isl::checked::pw_multi_aff product(isl::checked::pw_multi_aff pma2) const;
2894   inline isl::checked::pw_multi_aff product(const isl::checked::multi_aff &pma2) const;
2895   inline isl::checked::pw_multi_aff product(const isl::checked::pw_aff &pma2) const;
2896   inline isl::checked::multi_pw_aff pullback(const isl::checked::multi_pw_aff &mpa2) const;
2897   inline isl::checked::pw_multi_aff pullback(isl::checked::multi_aff ma) const;
2898   inline isl::checked::pw_multi_aff pullback(isl::checked::pw_multi_aff pma2) const;
2899   inline isl::checked::union_pw_multi_aff pullback(const isl::checked::union_pw_multi_aff &upma2) const;
2900   inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
2901   inline isl::checked::pw_multi_aff range_factor_domain() const;
2902   inline isl::checked::pw_multi_aff range_factor_range() const;
2903   static inline isl::checked::pw_multi_aff range_map(isl::checked::space space);
2904   inline isl::checked::multi_pw_aff range_product(const isl::checked::multi_pw_aff &multi2) const;
2905   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
2906   inline isl::checked::pw_multi_aff range_product(isl::checked::pw_multi_aff pma2) const;
2907   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
2908   inline isl::checked::pw_multi_aff range_product(const isl::checked::multi_aff &pma2) const;
2909   inline isl::checked::pw_multi_aff range_product(const isl::checked::pw_aff &pma2) const;
2910   inline isl::checked::id range_tuple_id() const;
2911   inline isl::checked::id get_range_tuple_id() const;
2912   inline isl::checked::multi_pw_aff reset_range_tuple_id() const;
2913   inline isl::checked::multi_pw_aff scale(const isl::checked::multi_val &mv) const;
2914   inline isl::checked::pw_multi_aff scale(isl::checked::val v) const;
2915   inline isl::checked::pw_multi_aff scale(long v) const;
2916   inline isl::checked::multi_pw_aff scale_down(const isl::checked::multi_val &mv) const;
2917   inline isl::checked::pw_multi_aff scale_down(isl::checked::val v) const;
2918   inline isl::checked::pw_multi_aff scale_down(long v) const;
2919   inline isl::checked::multi_pw_aff set_at(int pos, const isl::checked::pw_aff &el) const;
2920   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
2921   inline isl::checked::pw_multi_aff set_range_tuple(isl::checked::id id) const;
2922   inline isl::checked::pw_multi_aff set_range_tuple(const std::string &id) const;
2923   inline class size size() const;
2924   inline isl::checked::space space() const;
2925   inline isl::checked::space get_space() const;
2926   inline isl::checked::multi_pw_aff sub(const isl::checked::multi_pw_aff &multi2) const;
2927   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
2928   inline isl::checked::pw_multi_aff sub(isl::checked::pw_multi_aff pma2) const;
2929   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
2930   inline isl::checked::pw_multi_aff sub(const isl::checked::multi_aff &pma2) const;
2931   inline isl::checked::pw_multi_aff sub(const isl::checked::pw_aff &pma2) const;
2932   inline isl::checked::pw_multi_aff subtract_domain(isl::checked::set set) const;
2933   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::space &space) const;
2934   inline isl::checked::union_pw_multi_aff subtract_domain(const isl::checked::union_set &uset) const;
2935   inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::basic_set &set) const;
2936   inline isl::checked::pw_multi_aff subtract_domain(const isl::checked::point &set) const;
2937   inline isl::checked::pw_multi_aff_list to_list() const;
2938   inline isl::checked::multi_pw_aff to_multi_pw_aff() const;
2939   inline isl::checked::union_pw_multi_aff to_union_pw_multi_aff() const;
2940   inline isl::checked::multi_pw_aff unbind_params_insert_domain(const isl::checked::multi_id &domain) const;
2941   inline isl::checked::multi_pw_aff union_add(const isl::checked::multi_pw_aff &mpa2) const;
2942   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
2943   inline isl::checked::pw_multi_aff union_add(isl::checked::pw_multi_aff pma2) const;
2944   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
2945   inline isl::checked::pw_multi_aff union_add(const isl::checked::multi_aff &pma2) const;
2946   inline isl::checked::pw_multi_aff union_add(const isl::checked::pw_aff &pma2) const;
2947   static inline isl::checked::pw_multi_aff zero(isl::checked::space space);
2948 };
2949 
2950 // declarations for isl::pw_multi_aff_list
2951 inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2952 inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2953 
2954 class pw_multi_aff_list {
2955   friend inline pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr);
2956   friend inline pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr);
2957 
2958 protected:
2959   isl_pw_multi_aff_list *ptr = nullptr;
2960 
2961   inline explicit pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr);
2962 
2963 public:
2964   inline /* implicit */ pw_multi_aff_list();
2965   inline /* implicit */ pw_multi_aff_list(const pw_multi_aff_list &obj);
2966   inline explicit pw_multi_aff_list(isl::checked::ctx ctx, int n);
2967   inline explicit pw_multi_aff_list(isl::checked::pw_multi_aff el);
2968   inline explicit pw_multi_aff_list(isl::checked::ctx ctx, const std::string &str);
2969   inline pw_multi_aff_list &operator=(pw_multi_aff_list obj);
2970   inline ~pw_multi_aff_list();
2971   inline __isl_give isl_pw_multi_aff_list *copy() const &;
2972   inline __isl_give isl_pw_multi_aff_list *copy() && = delete;
2973   inline __isl_keep isl_pw_multi_aff_list *get() const;
2974   inline __isl_give isl_pw_multi_aff_list *release();
2975   inline bool is_null() const;
2976   inline isl::checked::ctx ctx() const;
2977 
2978   inline isl::checked::pw_multi_aff_list add(isl::checked::pw_multi_aff el) const;
2979   inline isl::checked::pw_multi_aff at(int index) const;
2980   inline isl::checked::pw_multi_aff get_at(int index) const;
2981   inline isl::checked::pw_multi_aff_list clear() const;
2982   inline isl::checked::pw_multi_aff_list concat(isl::checked::pw_multi_aff_list list2) const;
2983   inline isl::checked::pw_multi_aff_list drop(unsigned int first, unsigned int n) const;
2984   inline stat foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const;
2985   inline isl::checked::pw_multi_aff_list insert(unsigned int pos, isl::checked::pw_multi_aff el) const;
2986   inline class size size() const;
2987 };
2988 
2989 // declarations for isl::schedule
2990 inline schedule manage(__isl_take isl_schedule *ptr);
2991 inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2992 
2993 class schedule {
2994   friend inline schedule manage(__isl_take isl_schedule *ptr);
2995   friend inline schedule manage_copy(__isl_keep isl_schedule *ptr);
2996 
2997 protected:
2998   isl_schedule *ptr = nullptr;
2999 
3000   inline explicit schedule(__isl_take isl_schedule *ptr);
3001 
3002 public:
3003   inline /* implicit */ schedule();
3004   inline /* implicit */ schedule(const schedule &obj);
3005   inline explicit schedule(isl::checked::ctx ctx, const std::string &str);
3006   inline schedule &operator=(schedule obj);
3007   inline ~schedule();
3008   inline __isl_give isl_schedule *copy() const &;
3009   inline __isl_give isl_schedule *copy() && = delete;
3010   inline __isl_keep isl_schedule *get() const;
3011   inline __isl_give isl_schedule *release();
3012   inline bool is_null() const;
3013   inline isl::checked::ctx ctx() const;
3014 
3015   inline isl::checked::union_set domain() const;
3016   inline isl::checked::union_set get_domain() const;
3017   static inline isl::checked::schedule from_domain(isl::checked::union_set domain);
3018   inline isl::checked::union_map map() const;
3019   inline isl::checked::union_map get_map() const;
3020   inline isl::checked::schedule pullback(isl::checked::union_pw_multi_aff upma) const;
3021   inline isl::checked::schedule_node root() const;
3022   inline isl::checked::schedule_node get_root() const;
3023 };
3024 
3025 // declarations for isl::schedule_constraints
3026 inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
3027 inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
3028 
3029 class schedule_constraints {
3030   friend inline schedule_constraints manage(__isl_take isl_schedule_constraints *ptr);
3031   friend inline schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr);
3032 
3033 protected:
3034   isl_schedule_constraints *ptr = nullptr;
3035 
3036   inline explicit schedule_constraints(__isl_take isl_schedule_constraints *ptr);
3037 
3038 public:
3039   inline /* implicit */ schedule_constraints();
3040   inline /* implicit */ schedule_constraints(const schedule_constraints &obj);
3041   inline explicit schedule_constraints(isl::checked::ctx ctx, const std::string &str);
3042   inline schedule_constraints &operator=(schedule_constraints obj);
3043   inline ~schedule_constraints();
3044   inline __isl_give isl_schedule_constraints *copy() const &;
3045   inline __isl_give isl_schedule_constraints *copy() && = delete;
3046   inline __isl_keep isl_schedule_constraints *get() const;
3047   inline __isl_give isl_schedule_constraints *release();
3048   inline bool is_null() const;
3049   inline isl::checked::ctx ctx() const;
3050 
3051   inline isl::checked::union_map coincidence() const;
3052   inline isl::checked::union_map get_coincidence() const;
3053   inline isl::checked::schedule compute_schedule() const;
3054   inline isl::checked::union_map conditional_validity() const;
3055   inline isl::checked::union_map get_conditional_validity() const;
3056   inline isl::checked::union_map conditional_validity_condition() const;
3057   inline isl::checked::union_map get_conditional_validity_condition() const;
3058   inline isl::checked::set context() const;
3059   inline isl::checked::set get_context() const;
3060   inline isl::checked::union_set domain() const;
3061   inline isl::checked::union_set get_domain() const;
3062   static inline isl::checked::schedule_constraints on_domain(isl::checked::union_set domain);
3063   inline isl::checked::union_map proximity() const;
3064   inline isl::checked::union_map get_proximity() const;
3065   inline isl::checked::schedule_constraints set_coincidence(isl::checked::union_map coincidence) const;
3066   inline isl::checked::schedule_constraints set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const;
3067   inline isl::checked::schedule_constraints set_context(isl::checked::set context) const;
3068   inline isl::checked::schedule_constraints set_proximity(isl::checked::union_map proximity) const;
3069   inline isl::checked::schedule_constraints set_validity(isl::checked::union_map validity) const;
3070   inline isl::checked::union_map validity() const;
3071   inline isl::checked::union_map get_validity() const;
3072 };
3073 
3074 // declarations for isl::schedule_node
3075 inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3076 inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3077 
3078 class schedule_node {
3079   friend inline schedule_node manage(__isl_take isl_schedule_node *ptr);
3080   friend inline schedule_node manage_copy(__isl_keep isl_schedule_node *ptr);
3081 
3082 protected:
3083   isl_schedule_node *ptr = nullptr;
3084 
3085   inline explicit schedule_node(__isl_take isl_schedule_node *ptr);
3086 
3087 public:
3088   inline /* implicit */ schedule_node();
3089   inline /* implicit */ schedule_node(const schedule_node &obj);
3090   inline schedule_node &operator=(schedule_node obj);
3091   inline ~schedule_node();
3092   inline __isl_give isl_schedule_node *copy() const &;
3093   inline __isl_give isl_schedule_node *copy() && = delete;
3094   inline __isl_keep isl_schedule_node *get() const;
3095   inline __isl_give isl_schedule_node *release();
3096   inline bool is_null() const;
3097 private:
3098   template <typename T,
3099           typename = typename std::enable_if<std::is_same<
3100                   const decltype(isl_schedule_node_get_type(NULL)),
3101                   const T>::value>::type>
3102   inline boolean isa_type(T subtype) const;
3103 public:
3104   template <class T> inline boolean isa() const;
3105   template <class T> inline T as() const;
3106   inline isl::checked::ctx ctx() const;
3107 
3108   inline isl::checked::schedule_node ancestor(int generation) const;
3109   inline class size ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
3110   inline class size get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const;
3111   inline isl::checked::schedule_node child(int pos) const;
3112   inline class size child_position() const;
3113   inline class size get_child_position() const;
3114   inline boolean every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const;
3115   inline isl::checked::schedule_node first_child() const;
3116   inline stat foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const;
3117   inline stat foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const;
3118   static inline isl::checked::schedule_node from_domain(isl::checked::union_set domain);
3119   static inline isl::checked::schedule_node from_extension(isl::checked::union_map extension);
3120   inline isl::checked::schedule_node graft_after(isl::checked::schedule_node graft) const;
3121   inline isl::checked::schedule_node graft_before(isl::checked::schedule_node graft) const;
3122   inline boolean has_children() const;
3123   inline boolean has_next_sibling() const;
3124   inline boolean has_parent() const;
3125   inline boolean has_previous_sibling() const;
3126   inline isl::checked::schedule_node insert_context(isl::checked::set context) const;
3127   inline isl::checked::schedule_node insert_filter(isl::checked::union_set filter) const;
3128   inline isl::checked::schedule_node insert_guard(isl::checked::set context) const;
3129   inline isl::checked::schedule_node insert_mark(isl::checked::id mark) const;
3130   inline isl::checked::schedule_node insert_mark(const std::string &mark) const;
3131   inline isl::checked::schedule_node insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const;
3132   inline isl::checked::schedule_node insert_sequence(isl::checked::union_set_list filters) const;
3133   inline isl::checked::schedule_node insert_set(isl::checked::union_set_list filters) const;
3134   inline boolean is_equal(const isl::checked::schedule_node &node2) const;
3135   inline boolean is_subtree_anchored() const;
3136   inline isl::checked::schedule_node map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const;
3137   inline class size n_children() const;
3138   inline isl::checked::schedule_node next_sibling() const;
3139   inline isl::checked::schedule_node order_after(isl::checked::union_set filter) const;
3140   inline isl::checked::schedule_node order_before(isl::checked::union_set filter) const;
3141   inline isl::checked::schedule_node parent() const;
3142   inline isl::checked::multi_union_pw_aff prefix_schedule_multi_union_pw_aff() const;
3143   inline isl::checked::multi_union_pw_aff get_prefix_schedule_multi_union_pw_aff() const;
3144   inline isl::checked::union_map prefix_schedule_union_map() const;
3145   inline isl::checked::union_map get_prefix_schedule_union_map() const;
3146   inline isl::checked::union_pw_multi_aff prefix_schedule_union_pw_multi_aff() const;
3147   inline isl::checked::union_pw_multi_aff get_prefix_schedule_union_pw_multi_aff() const;
3148   inline isl::checked::schedule_node previous_sibling() const;
3149   inline isl::checked::schedule_node root() const;
3150   inline isl::checked::schedule schedule() const;
3151   inline isl::checked::schedule get_schedule() const;
3152   inline isl::checked::schedule_node shared_ancestor(const isl::checked::schedule_node &node2) const;
3153   inline isl::checked::schedule_node get_shared_ancestor(const isl::checked::schedule_node &node2) const;
3154   inline class size tree_depth() const;
3155   inline class size get_tree_depth() const;
3156 };
3157 
3158 // declarations for isl::schedule_node_band
3159 
3160 class schedule_node_band : public schedule_node {
3161   template <class T>
3162   friend boolean schedule_node::isa() const;
3163   friend schedule_node_band schedule_node::as<schedule_node_band>() const;
3164   static const auto type = isl_schedule_node_band;
3165 
3166 protected:
3167   inline explicit schedule_node_band(__isl_take isl_schedule_node *ptr);
3168 
3169 public:
3170   inline /* implicit */ schedule_node_band();
3171   inline /* implicit */ schedule_node_band(const schedule_node_band &obj);
3172   inline schedule_node_band &operator=(schedule_node_band obj);
3173   inline isl::checked::ctx ctx() const;
3174 
3175   inline isl::checked::union_set ast_build_options() const;
3176   inline isl::checked::union_set get_ast_build_options() const;
3177   inline isl::checked::set ast_isolate_option() const;
3178   inline isl::checked::set get_ast_isolate_option() const;
3179   inline boolean member_get_coincident(int pos) const;
3180   inline schedule_node_band member_set_coincident(int pos, int coincident) const;
3181   inline schedule_node_band mod(isl::checked::multi_val mv) const;
3182   inline class size n_member() const;
3183   inline isl::checked::multi_union_pw_aff partial_schedule() const;
3184   inline isl::checked::multi_union_pw_aff get_partial_schedule() const;
3185   inline boolean permutable() const;
3186   inline boolean get_permutable() const;
3187   inline schedule_node_band scale(isl::checked::multi_val mv) const;
3188   inline schedule_node_band scale_down(isl::checked::multi_val mv) const;
3189   inline schedule_node_band set_ast_build_options(isl::checked::union_set options) const;
3190   inline schedule_node_band set_permutable(int permutable) const;
3191   inline schedule_node_band shift(isl::checked::multi_union_pw_aff shift) const;
3192   inline schedule_node_band split(int pos) const;
3193   inline schedule_node_band tile(isl::checked::multi_val sizes) const;
3194   inline schedule_node_band member_set_ast_loop_default(int pos) const;
3195   inline schedule_node_band member_set_ast_loop_atomic(int pos) const;
3196   inline schedule_node_band member_set_ast_loop_unroll(int pos) const;
3197   inline schedule_node_band member_set_ast_loop_separate(int pos) const;
3198 };
3199 
3200 // declarations for isl::schedule_node_context
3201 
3202 class schedule_node_context : public schedule_node {
3203   template <class T>
3204   friend boolean schedule_node::isa() const;
3205   friend schedule_node_context schedule_node::as<schedule_node_context>() const;
3206   static const auto type = isl_schedule_node_context;
3207 
3208 protected:
3209   inline explicit schedule_node_context(__isl_take isl_schedule_node *ptr);
3210 
3211 public:
3212   inline /* implicit */ schedule_node_context();
3213   inline /* implicit */ schedule_node_context(const schedule_node_context &obj);
3214   inline schedule_node_context &operator=(schedule_node_context obj);
3215   inline isl::checked::ctx ctx() const;
3216 
3217   inline isl::checked::set context() const;
3218   inline isl::checked::set get_context() const;
3219 };
3220 
3221 // declarations for isl::schedule_node_domain
3222 
3223 class schedule_node_domain : public schedule_node {
3224   template <class T>
3225   friend boolean schedule_node::isa() const;
3226   friend schedule_node_domain schedule_node::as<schedule_node_domain>() const;
3227   static const auto type = isl_schedule_node_domain;
3228 
3229 protected:
3230   inline explicit schedule_node_domain(__isl_take isl_schedule_node *ptr);
3231 
3232 public:
3233   inline /* implicit */ schedule_node_domain();
3234   inline /* implicit */ schedule_node_domain(const schedule_node_domain &obj);
3235   inline schedule_node_domain &operator=(schedule_node_domain obj);
3236   inline isl::checked::ctx ctx() const;
3237 
3238   inline isl::checked::union_set domain() const;
3239   inline isl::checked::union_set get_domain() const;
3240 };
3241 
3242 // declarations for isl::schedule_node_expansion
3243 
3244 class schedule_node_expansion : public schedule_node {
3245   template <class T>
3246   friend boolean schedule_node::isa() const;
3247   friend schedule_node_expansion schedule_node::as<schedule_node_expansion>() const;
3248   static const auto type = isl_schedule_node_expansion;
3249 
3250 protected:
3251   inline explicit schedule_node_expansion(__isl_take isl_schedule_node *ptr);
3252 
3253 public:
3254   inline /* implicit */ schedule_node_expansion();
3255   inline /* implicit */ schedule_node_expansion(const schedule_node_expansion &obj);
3256   inline schedule_node_expansion &operator=(schedule_node_expansion obj);
3257   inline isl::checked::ctx ctx() const;
3258 
3259   inline isl::checked::union_pw_multi_aff contraction() const;
3260   inline isl::checked::union_pw_multi_aff get_contraction() const;
3261   inline isl::checked::union_map expansion() const;
3262   inline isl::checked::union_map get_expansion() const;
3263 };
3264 
3265 // declarations for isl::schedule_node_extension
3266 
3267 class schedule_node_extension : public schedule_node {
3268   template <class T>
3269   friend boolean schedule_node::isa() const;
3270   friend schedule_node_extension schedule_node::as<schedule_node_extension>() const;
3271   static const auto type = isl_schedule_node_extension;
3272 
3273 protected:
3274   inline explicit schedule_node_extension(__isl_take isl_schedule_node *ptr);
3275 
3276 public:
3277   inline /* implicit */ schedule_node_extension();
3278   inline /* implicit */ schedule_node_extension(const schedule_node_extension &obj);
3279   inline schedule_node_extension &operator=(schedule_node_extension obj);
3280   inline isl::checked::ctx ctx() const;
3281 
3282   inline isl::checked::union_map extension() const;
3283   inline isl::checked::union_map get_extension() const;
3284 };
3285 
3286 // declarations for isl::schedule_node_filter
3287 
3288 class schedule_node_filter : public schedule_node {
3289   template <class T>
3290   friend boolean schedule_node::isa() const;
3291   friend schedule_node_filter schedule_node::as<schedule_node_filter>() const;
3292   static const auto type = isl_schedule_node_filter;
3293 
3294 protected:
3295   inline explicit schedule_node_filter(__isl_take isl_schedule_node *ptr);
3296 
3297 public:
3298   inline /* implicit */ schedule_node_filter();
3299   inline /* implicit */ schedule_node_filter(const schedule_node_filter &obj);
3300   inline schedule_node_filter &operator=(schedule_node_filter obj);
3301   inline isl::checked::ctx ctx() const;
3302 
3303   inline isl::checked::union_set filter() const;
3304   inline isl::checked::union_set get_filter() const;
3305 };
3306 
3307 // declarations for isl::schedule_node_guard
3308 
3309 class schedule_node_guard : public schedule_node {
3310   template <class T>
3311   friend boolean schedule_node::isa() const;
3312   friend schedule_node_guard schedule_node::as<schedule_node_guard>() const;
3313   static const auto type = isl_schedule_node_guard;
3314 
3315 protected:
3316   inline explicit schedule_node_guard(__isl_take isl_schedule_node *ptr);
3317 
3318 public:
3319   inline /* implicit */ schedule_node_guard();
3320   inline /* implicit */ schedule_node_guard(const schedule_node_guard &obj);
3321   inline schedule_node_guard &operator=(schedule_node_guard obj);
3322   inline isl::checked::ctx ctx() const;
3323 
3324   inline isl::checked::set guard() const;
3325   inline isl::checked::set get_guard() const;
3326 };
3327 
3328 // declarations for isl::schedule_node_leaf
3329 
3330 class schedule_node_leaf : public schedule_node {
3331   template <class T>
3332   friend boolean schedule_node::isa() const;
3333   friend schedule_node_leaf schedule_node::as<schedule_node_leaf>() const;
3334   static const auto type = isl_schedule_node_leaf;
3335 
3336 protected:
3337   inline explicit schedule_node_leaf(__isl_take isl_schedule_node *ptr);
3338 
3339 public:
3340   inline /* implicit */ schedule_node_leaf();
3341   inline /* implicit */ schedule_node_leaf(const schedule_node_leaf &obj);
3342   inline schedule_node_leaf &operator=(schedule_node_leaf obj);
3343   inline isl::checked::ctx ctx() const;
3344 
3345 };
3346 
3347 // declarations for isl::schedule_node_mark
3348 
3349 class schedule_node_mark : public schedule_node {
3350   template <class T>
3351   friend boolean schedule_node::isa() const;
3352   friend schedule_node_mark schedule_node::as<schedule_node_mark>() const;
3353   static const auto type = isl_schedule_node_mark;
3354 
3355 protected:
3356   inline explicit schedule_node_mark(__isl_take isl_schedule_node *ptr);
3357 
3358 public:
3359   inline /* implicit */ schedule_node_mark();
3360   inline /* implicit */ schedule_node_mark(const schedule_node_mark &obj);
3361   inline schedule_node_mark &operator=(schedule_node_mark obj);
3362   inline isl::checked::ctx ctx() const;
3363 
3364 };
3365 
3366 // declarations for isl::schedule_node_sequence
3367 
3368 class schedule_node_sequence : public schedule_node {
3369   template <class T>
3370   friend boolean schedule_node::isa() const;
3371   friend schedule_node_sequence schedule_node::as<schedule_node_sequence>() const;
3372   static const auto type = isl_schedule_node_sequence;
3373 
3374 protected:
3375   inline explicit schedule_node_sequence(__isl_take isl_schedule_node *ptr);
3376 
3377 public:
3378   inline /* implicit */ schedule_node_sequence();
3379   inline /* implicit */ schedule_node_sequence(const schedule_node_sequence &obj);
3380   inline schedule_node_sequence &operator=(schedule_node_sequence obj);
3381   inline isl::checked::ctx ctx() const;
3382 
3383 };
3384 
3385 // declarations for isl::schedule_node_set
3386 
3387 class schedule_node_set : public schedule_node {
3388   template <class T>
3389   friend boolean schedule_node::isa() const;
3390   friend schedule_node_set schedule_node::as<schedule_node_set>() const;
3391   static const auto type = isl_schedule_node_set;
3392 
3393 protected:
3394   inline explicit schedule_node_set(__isl_take isl_schedule_node *ptr);
3395 
3396 public:
3397   inline /* implicit */ schedule_node_set();
3398   inline /* implicit */ schedule_node_set(const schedule_node_set &obj);
3399   inline schedule_node_set &operator=(schedule_node_set obj);
3400   inline isl::checked::ctx ctx() const;
3401 
3402 };
3403 
3404 // declarations for isl::set
3405 inline set manage(__isl_take isl_set *ptr);
3406 inline set manage_copy(__isl_keep isl_set *ptr);
3407 
3408 class set {
3409   friend inline set manage(__isl_take isl_set *ptr);
3410   friend inline set manage_copy(__isl_keep isl_set *ptr);
3411 
3412 protected:
3413   isl_set *ptr = nullptr;
3414 
3415   inline explicit set(__isl_take isl_set *ptr);
3416 
3417 public:
3418   inline /* implicit */ set();
3419   inline /* implicit */ set(const set &obj);
3420   inline /* implicit */ set(isl::checked::basic_set bset);
3421   inline /* implicit */ set(isl::checked::point pnt);
3422   inline explicit set(isl::checked::ctx ctx, const std::string &str);
3423   inline set &operator=(set obj);
3424   inline ~set();
3425   inline __isl_give isl_set *copy() const &;
3426   inline __isl_give isl_set *copy() && = delete;
3427   inline __isl_keep isl_set *get() const;
3428   inline __isl_give isl_set *release();
3429   inline bool is_null() const;
3430   inline isl::checked::ctx ctx() const;
3431 
3432   inline isl::checked::basic_set affine_hull() const;
3433   inline isl::checked::set apply(isl::checked::map map) const;
3434   inline isl::checked::union_set apply(const isl::checked::union_map &umap) const;
3435   inline isl::checked::set apply(const isl::checked::basic_map &map) const;
3436   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3437   inline isl::checked::set as_set() const;
3438   inline isl::checked::set bind(isl::checked::multi_id tuple) const;
3439   inline isl::checked::set coalesce() const;
3440   inline isl::checked::set complement() const;
3441   inline isl::checked::union_set compute_divs() const;
3442   inline isl::checked::set detect_equalities() const;
3443   inline isl::checked::val dim_max_val(int pos) const;
3444   inline isl::checked::val dim_min_val(int pos) const;
3445   static inline isl::checked::set empty(isl::checked::space space);
3446   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
3447   inline isl::checked::set extract_set(const isl::checked::space &space) const;
3448   inline isl::checked::set flatten() const;
3449   inline stat foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const;
3450   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
3451   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
3452   inline isl::checked::set gist(isl::checked::set context) const;
3453   inline isl::checked::union_set gist(const isl::checked::union_set &context) const;
3454   inline isl::checked::set gist(const isl::checked::basic_set &context) const;
3455   inline isl::checked::set gist(const isl::checked::point &context) const;
3456   inline isl::checked::union_set gist_params(const isl::checked::set &set) const;
3457   inline isl::checked::map identity() const;
3458   inline isl::checked::pw_aff indicator_function() const;
3459   inline isl::checked::map insert_domain(isl::checked::space domain) const;
3460   inline isl::checked::set intersect(isl::checked::set set2) const;
3461   inline isl::checked::union_set intersect(const isl::checked::union_set &uset2) const;
3462   inline isl::checked::set intersect(const isl::checked::basic_set &set2) const;
3463   inline isl::checked::set intersect(const isl::checked::point &set2) const;
3464   inline isl::checked::set intersect_params(isl::checked::set params) const;
3465   inline boolean involves_locals() const;
3466   inline boolean is_disjoint(const isl::checked::set &set2) const;
3467   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
3468   inline boolean is_disjoint(const isl::checked::basic_set &set2) const;
3469   inline boolean is_disjoint(const isl::checked::point &set2) const;
3470   inline boolean is_empty() const;
3471   inline boolean is_equal(const isl::checked::set &set2) const;
3472   inline boolean is_equal(const isl::checked::union_set &uset2) const;
3473   inline boolean is_equal(const isl::checked::basic_set &set2) const;
3474   inline boolean is_equal(const isl::checked::point &set2) const;
3475   inline boolean is_singleton() const;
3476   inline boolean is_strict_subset(const isl::checked::set &set2) const;
3477   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
3478   inline boolean is_strict_subset(const isl::checked::basic_set &set2) const;
3479   inline boolean is_strict_subset(const isl::checked::point &set2) const;
3480   inline boolean is_subset(const isl::checked::set &set2) const;
3481   inline boolean is_subset(const isl::checked::union_set &uset2) const;
3482   inline boolean is_subset(const isl::checked::basic_set &set2) const;
3483   inline boolean is_subset(const isl::checked::point &set2) const;
3484   inline boolean is_wrapping() const;
3485   inline boolean isa_set() const;
3486   inline isl::checked::set lexmax() const;
3487   inline isl::checked::pw_multi_aff lexmax_pw_multi_aff() const;
3488   inline isl::checked::set lexmin() const;
3489   inline isl::checked::pw_multi_aff lexmin_pw_multi_aff() const;
3490   inline isl::checked::set lower_bound(isl::checked::multi_pw_aff lower) const;
3491   inline isl::checked::set lower_bound(isl::checked::multi_val lower) const;
3492   inline isl::checked::multi_pw_aff max_multi_pw_aff() const;
3493   inline isl::checked::val max_val(const isl::checked::aff &obj) const;
3494   inline isl::checked::multi_pw_aff min_multi_pw_aff() const;
3495   inline isl::checked::val min_val(const isl::checked::aff &obj) const;
3496   inline class size n_basic_set() const;
3497   inline isl::checked::set params() const;
3498   inline isl::checked::multi_val plain_multi_val_if_fixed() const;
3499   inline isl::checked::multi_val get_plain_multi_val_if_fixed() const;
3500   inline isl::checked::basic_set polyhedral_hull() const;
3501   inline isl::checked::set preimage(isl::checked::multi_aff ma) const;
3502   inline isl::checked::set preimage(isl::checked::multi_pw_aff mpa) const;
3503   inline isl::checked::set preimage(isl::checked::pw_multi_aff pma) const;
3504   inline isl::checked::union_set preimage(const isl::checked::union_pw_multi_aff &upma) const;
3505   inline isl::checked::set product(isl::checked::set set2) const;
3506   inline isl::checked::set project_out_all_params() const;
3507   inline isl::checked::set project_out_param(isl::checked::id id) const;
3508   inline isl::checked::set project_out_param(const std::string &id) const;
3509   inline isl::checked::set project_out_param(isl::checked::id_list list) const;
3510   inline isl::checked::pw_multi_aff pw_multi_aff_on_domain(isl::checked::multi_val mv) const;
3511   inline isl::checked::basic_set sample() const;
3512   inline isl::checked::point sample_point() const;
3513   inline isl::checked::set_list set_list() const;
3514   inline isl::checked::fixed_box simple_fixed_box_hull() const;
3515   inline isl::checked::fixed_box get_simple_fixed_box_hull() const;
3516   inline isl::checked::space space() const;
3517   inline isl::checked::space get_space() const;
3518   inline isl::checked::val stride(int pos) const;
3519   inline isl::checked::val get_stride(int pos) const;
3520   inline isl::checked::set subtract(isl::checked::set set2) const;
3521   inline isl::checked::union_set subtract(const isl::checked::union_set &uset2) const;
3522   inline isl::checked::set subtract(const isl::checked::basic_set &set2) const;
3523   inline isl::checked::set subtract(const isl::checked::point &set2) const;
3524   inline isl::checked::set_list to_list() const;
3525   inline isl::checked::union_set to_union_set() const;
3526   inline isl::checked::map translation() const;
3527   inline class size tuple_dim() const;
3528   inline isl::checked::set unbind_params(isl::checked::multi_id tuple) const;
3529   inline isl::checked::map unbind_params_insert_domain(isl::checked::multi_id domain) const;
3530   inline isl::checked::set unite(isl::checked::set set2) const;
3531   inline isl::checked::union_set unite(const isl::checked::union_set &uset2) const;
3532   inline isl::checked::set unite(const isl::checked::basic_set &set2) const;
3533   inline isl::checked::set unite(const isl::checked::point &set2) const;
3534   static inline isl::checked::set universe(isl::checked::space space);
3535   inline isl::checked::basic_set unshifted_simple_hull() const;
3536   inline isl::checked::map unwrap() const;
3537   inline isl::checked::set upper_bound(isl::checked::multi_pw_aff upper) const;
3538   inline isl::checked::set upper_bound(isl::checked::multi_val upper) const;
3539 };
3540 
3541 // declarations for isl::set_list
3542 inline set_list manage(__isl_take isl_set_list *ptr);
3543 inline set_list manage_copy(__isl_keep isl_set_list *ptr);
3544 
3545 class set_list {
3546   friend inline set_list manage(__isl_take isl_set_list *ptr);
3547   friend inline set_list manage_copy(__isl_keep isl_set_list *ptr);
3548 
3549 protected:
3550   isl_set_list *ptr = nullptr;
3551 
3552   inline explicit set_list(__isl_take isl_set_list *ptr);
3553 
3554 public:
3555   inline /* implicit */ set_list();
3556   inline /* implicit */ set_list(const set_list &obj);
3557   inline explicit set_list(isl::checked::ctx ctx, int n);
3558   inline explicit set_list(isl::checked::set el);
3559   inline explicit set_list(isl::checked::ctx ctx, const std::string &str);
3560   inline set_list &operator=(set_list obj);
3561   inline ~set_list();
3562   inline __isl_give isl_set_list *copy() const &;
3563   inline __isl_give isl_set_list *copy() && = delete;
3564   inline __isl_keep isl_set_list *get() const;
3565   inline __isl_give isl_set_list *release();
3566   inline bool is_null() const;
3567   inline isl::checked::ctx ctx() const;
3568 
3569   inline isl::checked::set_list add(isl::checked::set el) const;
3570   inline isl::checked::set at(int index) const;
3571   inline isl::checked::set get_at(int index) const;
3572   inline isl::checked::set_list clear() const;
3573   inline isl::checked::set_list concat(isl::checked::set_list list2) const;
3574   inline isl::checked::set_list drop(unsigned int first, unsigned int n) const;
3575   inline stat foreach(const std::function<stat(isl::checked::set)> &fn) const;
3576   inline isl::checked::set_list insert(unsigned int pos, isl::checked::set el) const;
3577   inline class size size() const;
3578 };
3579 
3580 // declarations for isl::space
3581 inline space manage(__isl_take isl_space *ptr);
3582 inline space manage_copy(__isl_keep isl_space *ptr);
3583 
3584 class space {
3585   friend inline space manage(__isl_take isl_space *ptr);
3586   friend inline space manage_copy(__isl_keep isl_space *ptr);
3587 
3588 protected:
3589   isl_space *ptr = nullptr;
3590 
3591   inline explicit space(__isl_take isl_space *ptr);
3592 
3593 public:
3594   inline /* implicit */ space();
3595   inline /* implicit */ space(const space &obj);
3596   inline space &operator=(space obj);
3597   inline ~space();
3598   inline __isl_give isl_space *copy() const &;
3599   inline __isl_give isl_space *copy() && = delete;
3600   inline __isl_keep isl_space *get() const;
3601   inline __isl_give isl_space *release();
3602   inline bool is_null() const;
3603   inline isl::checked::ctx ctx() const;
3604 
3605   inline isl::checked::space add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const;
3606   inline isl::checked::space add_named_tuple(const std::string &tuple_id, unsigned int dim) const;
3607   inline isl::checked::space add_param(isl::checked::id id) const;
3608   inline isl::checked::space add_param(const std::string &id) const;
3609   inline isl::checked::space add_unnamed_tuple(unsigned int dim) const;
3610   inline isl::checked::space curry() const;
3611   inline isl::checked::space domain() const;
3612   inline isl::checked::multi_aff domain_map_multi_aff() const;
3613   inline isl::checked::pw_multi_aff domain_map_pw_multi_aff() const;
3614   inline isl::checked::id domain_tuple_id() const;
3615   inline isl::checked::id get_domain_tuple_id() const;
3616   inline isl::checked::space flatten_domain() const;
3617   inline isl::checked::space flatten_range() const;
3618   inline boolean has_domain_tuple_id() const;
3619   inline boolean has_range_tuple_id() const;
3620   inline isl::checked::multi_aff identity_multi_aff_on_domain() const;
3621   inline isl::checked::multi_pw_aff identity_multi_pw_aff_on_domain() const;
3622   inline isl::checked::pw_multi_aff identity_pw_multi_aff_on_domain() const;
3623   inline boolean is_equal(const isl::checked::space &space2) const;
3624   inline boolean is_wrapping() const;
3625   inline isl::checked::space map_from_set() const;
3626   inline isl::checked::multi_aff multi_aff(isl::checked::aff_list list) const;
3627   inline isl::checked::multi_aff multi_aff_on_domain(isl::checked::multi_val mv) const;
3628   inline isl::checked::multi_id multi_id(isl::checked::id_list list) const;
3629   inline isl::checked::multi_pw_aff multi_pw_aff(isl::checked::pw_aff_list list) const;
3630   inline isl::checked::multi_union_pw_aff multi_union_pw_aff(isl::checked::union_pw_aff_list list) const;
3631   inline isl::checked::multi_val multi_val(isl::checked::val_list list) const;
3632   inline isl::checked::aff param_aff_on_domain(isl::checked::id id) const;
3633   inline isl::checked::aff param_aff_on_domain(const std::string &id) const;
3634   inline isl::checked::space params() const;
3635   inline isl::checked::space product(isl::checked::space right) const;
3636   inline isl::checked::space range() const;
3637   inline isl::checked::multi_aff range_map_multi_aff() const;
3638   inline isl::checked::pw_multi_aff range_map_pw_multi_aff() const;
3639   inline isl::checked::space range_reverse() const;
3640   inline isl::checked::id range_tuple_id() const;
3641   inline isl::checked::id get_range_tuple_id() const;
3642   inline isl::checked::space reverse() const;
3643   inline isl::checked::space set_domain_tuple(isl::checked::id id) const;
3644   inline isl::checked::space set_domain_tuple(const std::string &id) const;
3645   inline isl::checked::space set_range_tuple(isl::checked::id id) const;
3646   inline isl::checked::space set_range_tuple(const std::string &id) const;
3647   inline isl::checked::space uncurry() const;
3648   static inline isl::checked::space unit(isl::checked::ctx ctx);
3649   inline isl::checked::map universe_map() const;
3650   inline isl::checked::set universe_set() const;
3651   inline isl::checked::space unwrap() const;
3652   inline isl::checked::space wrap() const;
3653   inline isl::checked::aff zero_aff_on_domain() const;
3654   inline isl::checked::multi_aff zero_multi_aff() const;
3655   inline isl::checked::multi_pw_aff zero_multi_pw_aff() const;
3656   inline isl::checked::multi_union_pw_aff zero_multi_union_pw_aff() const;
3657   inline isl::checked::multi_val zero_multi_val() const;
3658 };
3659 
3660 // declarations for isl::union_access_info
3661 inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3662 inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3663 
3664 class union_access_info {
3665   friend inline union_access_info manage(__isl_take isl_union_access_info *ptr);
3666   friend inline union_access_info manage_copy(__isl_keep isl_union_access_info *ptr);
3667 
3668 protected:
3669   isl_union_access_info *ptr = nullptr;
3670 
3671   inline explicit union_access_info(__isl_take isl_union_access_info *ptr);
3672 
3673 public:
3674   inline /* implicit */ union_access_info();
3675   inline /* implicit */ union_access_info(const union_access_info &obj);
3676   inline explicit union_access_info(isl::checked::union_map sink);
3677   inline union_access_info &operator=(union_access_info obj);
3678   inline ~union_access_info();
3679   inline __isl_give isl_union_access_info *copy() const &;
3680   inline __isl_give isl_union_access_info *copy() && = delete;
3681   inline __isl_keep isl_union_access_info *get() const;
3682   inline __isl_give isl_union_access_info *release();
3683   inline bool is_null() const;
3684   inline isl::checked::ctx ctx() const;
3685 
3686   inline isl::checked::union_flow compute_flow() const;
3687   inline isl::checked::union_access_info set_kill(isl::checked::union_map kill) const;
3688   inline isl::checked::union_access_info set_may_source(isl::checked::union_map may_source) const;
3689   inline isl::checked::union_access_info set_must_source(isl::checked::union_map must_source) const;
3690   inline isl::checked::union_access_info set_schedule(isl::checked::schedule schedule) const;
3691   inline isl::checked::union_access_info set_schedule_map(isl::checked::union_map schedule_map) const;
3692 };
3693 
3694 // declarations for isl::union_flow
3695 inline union_flow manage(__isl_take isl_union_flow *ptr);
3696 inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3697 
3698 class union_flow {
3699   friend inline union_flow manage(__isl_take isl_union_flow *ptr);
3700   friend inline union_flow manage_copy(__isl_keep isl_union_flow *ptr);
3701 
3702 protected:
3703   isl_union_flow *ptr = nullptr;
3704 
3705   inline explicit union_flow(__isl_take isl_union_flow *ptr);
3706 
3707 public:
3708   inline /* implicit */ union_flow();
3709   inline /* implicit */ union_flow(const union_flow &obj);
3710   inline union_flow &operator=(union_flow obj);
3711   inline ~union_flow();
3712   inline __isl_give isl_union_flow *copy() const &;
3713   inline __isl_give isl_union_flow *copy() && = delete;
3714   inline __isl_keep isl_union_flow *get() const;
3715   inline __isl_give isl_union_flow *release();
3716   inline bool is_null() const;
3717   inline isl::checked::ctx ctx() const;
3718 
3719   inline isl::checked::union_map full_may_dependence() const;
3720   inline isl::checked::union_map get_full_may_dependence() const;
3721   inline isl::checked::union_map full_must_dependence() const;
3722   inline isl::checked::union_map get_full_must_dependence() const;
3723   inline isl::checked::union_map may_dependence() const;
3724   inline isl::checked::union_map get_may_dependence() const;
3725   inline isl::checked::union_map may_no_source() const;
3726   inline isl::checked::union_map get_may_no_source() const;
3727   inline isl::checked::union_map must_dependence() const;
3728   inline isl::checked::union_map get_must_dependence() const;
3729   inline isl::checked::union_map must_no_source() const;
3730   inline isl::checked::union_map get_must_no_source() const;
3731 };
3732 
3733 // declarations for isl::union_map
3734 inline union_map manage(__isl_take isl_union_map *ptr);
3735 inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3736 
3737 class union_map {
3738   friend inline union_map manage(__isl_take isl_union_map *ptr);
3739   friend inline union_map manage_copy(__isl_keep isl_union_map *ptr);
3740 
3741 protected:
3742   isl_union_map *ptr = nullptr;
3743 
3744   inline explicit union_map(__isl_take isl_union_map *ptr);
3745 
3746 public:
3747   inline /* implicit */ union_map();
3748   inline /* implicit */ union_map(const union_map &obj);
3749   inline /* implicit */ union_map(isl::checked::basic_map bmap);
3750   inline /* implicit */ union_map(isl::checked::map map);
3751   inline explicit union_map(isl::checked::ctx ctx, const std::string &str);
3752   inline union_map &operator=(union_map obj);
3753   inline ~union_map();
3754   inline __isl_give isl_union_map *copy() const &;
3755   inline __isl_give isl_union_map *copy() && = delete;
3756   inline __isl_keep isl_union_map *get() const;
3757   inline __isl_give isl_union_map *release();
3758   inline bool is_null() const;
3759   inline isl::checked::ctx ctx() const;
3760 
3761   inline isl::checked::union_map affine_hull() const;
3762   inline isl::checked::union_map apply_domain(isl::checked::union_map umap2) const;
3763   inline isl::checked::union_map apply_range(isl::checked::union_map umap2) const;
3764   inline isl::checked::map as_map() const;
3765   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
3766   inline isl::checked::union_pw_multi_aff as_union_pw_multi_aff() const;
3767   inline isl::checked::union_set bind_range(isl::checked::multi_id tuple) const;
3768   inline isl::checked::union_map coalesce() const;
3769   inline isl::checked::union_map compute_divs() const;
3770   inline isl::checked::union_map curry() const;
3771   inline isl::checked::union_set deltas() const;
3772   inline isl::checked::union_map detect_equalities() const;
3773   inline isl::checked::union_set domain() const;
3774   inline isl::checked::union_map domain_factor_domain() const;
3775   inline isl::checked::union_map domain_factor_range() const;
3776   inline isl::checked::union_map domain_map() const;
3777   inline isl::checked::union_pw_multi_aff domain_map_union_pw_multi_aff() const;
3778   inline isl::checked::union_map domain_product(isl::checked::union_map umap2) const;
3779   static inline isl::checked::union_map empty(isl::checked::ctx ctx);
3780   inline isl::checked::union_map eq_at(isl::checked::multi_union_pw_aff mupa) const;
3781   inline boolean every_map(const std::function<boolean(isl::checked::map)> &test) const;
3782   inline isl::checked::map extract_map(isl::checked::space space) const;
3783   inline isl::checked::union_map factor_domain() const;
3784   inline isl::checked::union_map factor_range() const;
3785   inline isl::checked::union_map fixed_power(isl::checked::val exp) const;
3786   inline isl::checked::union_map fixed_power(long exp) const;
3787   inline stat foreach_map(const std::function<stat(isl::checked::map)> &fn) const;
3788   static inline isl::checked::union_map from(isl::checked::multi_union_pw_aff mupa);
3789   static inline isl::checked::union_map from(isl::checked::union_pw_multi_aff upma);
3790   static inline isl::checked::union_map from_domain(isl::checked::union_set uset);
3791   static inline isl::checked::union_map from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range);
3792   static inline isl::checked::union_map from_range(isl::checked::union_set uset);
3793   inline isl::checked::union_map gist(isl::checked::union_map context) const;
3794   inline isl::checked::union_map gist_domain(isl::checked::union_set uset) const;
3795   inline isl::checked::union_map gist_params(isl::checked::set set) const;
3796   inline isl::checked::union_map gist_range(isl::checked::union_set uset) const;
3797   inline isl::checked::union_map intersect(isl::checked::union_map umap2) const;
3798   inline isl::checked::union_map intersect_domain(isl::checked::space space) const;
3799   inline isl::checked::union_map intersect_domain(isl::checked::union_set uset) const;
3800   inline isl::checked::union_map intersect_domain_factor_domain(isl::checked::union_map factor) const;
3801   inline isl::checked::union_map intersect_domain_factor_range(isl::checked::union_map factor) const;
3802   inline isl::checked::union_map intersect_params(isl::checked::set set) const;
3803   inline isl::checked::union_map intersect_range(isl::checked::space space) const;
3804   inline isl::checked::union_map intersect_range(isl::checked::union_set uset) const;
3805   inline isl::checked::union_map intersect_range_factor_domain(isl::checked::union_map factor) const;
3806   inline isl::checked::union_map intersect_range_factor_range(isl::checked::union_map factor) const;
3807   inline boolean is_bijective() const;
3808   inline boolean is_disjoint(const isl::checked::union_map &umap2) const;
3809   inline boolean is_empty() const;
3810   inline boolean is_equal(const isl::checked::union_map &umap2) const;
3811   inline boolean is_injective() const;
3812   inline boolean is_single_valued() const;
3813   inline boolean is_strict_subset(const isl::checked::union_map &umap2) const;
3814   inline boolean is_subset(const isl::checked::union_map &umap2) const;
3815   inline boolean isa_map() const;
3816   inline isl::checked::union_map lexmax() const;
3817   inline isl::checked::union_map lexmin() const;
3818   inline isl::checked::map_list map_list() const;
3819   inline isl::checked::map_list get_map_list() const;
3820   inline isl::checked::union_map polyhedral_hull() const;
3821   inline isl::checked::union_map preimage_domain(isl::checked::multi_aff ma) const;
3822   inline isl::checked::union_map preimage_domain(isl::checked::multi_pw_aff mpa) const;
3823   inline isl::checked::union_map preimage_domain(isl::checked::pw_multi_aff pma) const;
3824   inline isl::checked::union_map preimage_domain(isl::checked::union_pw_multi_aff upma) const;
3825   inline isl::checked::union_map preimage_range(isl::checked::multi_aff ma) const;
3826   inline isl::checked::union_map preimage_range(isl::checked::pw_multi_aff pma) const;
3827   inline isl::checked::union_map preimage_range(isl::checked::union_pw_multi_aff upma) const;
3828   inline isl::checked::union_map product(isl::checked::union_map umap2) const;
3829   inline isl::checked::union_map project_out_all_params() const;
3830   inline isl::checked::union_set range() const;
3831   inline isl::checked::union_map range_factor_domain() const;
3832   inline isl::checked::union_map range_factor_range() const;
3833   inline isl::checked::union_map range_map() const;
3834   inline isl::checked::union_map range_product(isl::checked::union_map umap2) const;
3835   inline isl::checked::union_map range_reverse() const;
3836   inline isl::checked::union_map reverse() const;
3837   inline isl::checked::space space() const;
3838   inline isl::checked::space get_space() const;
3839   inline isl::checked::union_map subtract(isl::checked::union_map umap2) const;
3840   inline isl::checked::union_map subtract_domain(isl::checked::union_set dom) const;
3841   inline isl::checked::union_map subtract_range(isl::checked::union_set dom) const;
3842   inline isl::checked::union_map uncurry() const;
3843   inline isl::checked::union_map unite(isl::checked::union_map umap2) const;
3844   inline isl::checked::union_map universe() const;
3845   inline isl::checked::union_set wrap() const;
3846   inline isl::checked::union_map zip() const;
3847 };
3848 
3849 // declarations for isl::union_pw_aff
3850 inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3851 inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3852 
3853 class union_pw_aff {
3854   friend inline union_pw_aff manage(__isl_take isl_union_pw_aff *ptr);
3855   friend inline union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr);
3856 
3857 protected:
3858   isl_union_pw_aff *ptr = nullptr;
3859 
3860   inline explicit union_pw_aff(__isl_take isl_union_pw_aff *ptr);
3861 
3862 public:
3863   inline /* implicit */ union_pw_aff();
3864   inline /* implicit */ union_pw_aff(const union_pw_aff &obj);
3865   inline /* implicit */ union_pw_aff(isl::checked::aff aff);
3866   inline /* implicit */ union_pw_aff(isl::checked::pw_aff pa);
3867   inline explicit union_pw_aff(isl::checked::ctx ctx, const std::string &str);
3868   inline union_pw_aff &operator=(union_pw_aff obj);
3869   inline ~union_pw_aff();
3870   inline __isl_give isl_union_pw_aff *copy() const &;
3871   inline __isl_give isl_union_pw_aff *copy() && = delete;
3872   inline __isl_keep isl_union_pw_aff *get() const;
3873   inline __isl_give isl_union_pw_aff *release();
3874   inline bool is_null() const;
3875   inline isl::checked::ctx ctx() const;
3876 
3877   inline isl::checked::multi_union_pw_aff add(const isl::checked::multi_union_pw_aff &multi2) const;
3878   inline isl::checked::union_pw_aff add(isl::checked::union_pw_aff upa2) const;
3879   inline isl::checked::union_pw_multi_aff add(const isl::checked::union_pw_multi_aff &upma2) const;
3880   inline isl::checked::union_pw_aff add(const isl::checked::aff &upa2) const;
3881   inline isl::checked::union_pw_aff add(const isl::checked::pw_aff &upa2) const;
3882   inline isl::checked::union_pw_multi_aff apply(const isl::checked::union_pw_multi_aff &upma2) const;
3883   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
3884   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
3885   inline isl::checked::union_map as_union_map() const;
3886   inline isl::checked::union_pw_aff at(int pos) const;
3887   inline isl::checked::union_set bind(const isl::checked::multi_id &tuple) const;
3888   inline isl::checked::union_set bind(isl::checked::id id) const;
3889   inline isl::checked::union_set bind(const std::string &id) const;
3890   inline isl::checked::union_pw_aff coalesce() const;
3891   inline isl::checked::union_set domain() const;
3892   inline isl::checked::pw_multi_aff extract_pw_multi_aff(const isl::checked::space &space) const;
3893   inline isl::checked::multi_union_pw_aff flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const;
3894   inline isl::checked::union_pw_multi_aff flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const;
3895   inline isl::checked::union_pw_aff gist(isl::checked::union_set context) const;
3896   inline boolean has_range_tuple_id() const;
3897   inline isl::checked::union_pw_aff intersect_domain(isl::checked::space space) const;
3898   inline isl::checked::union_pw_aff intersect_domain(isl::checked::union_set uset) const;
3899   inline isl::checked::union_pw_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
3900   inline isl::checked::union_pw_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
3901   inline isl::checked::union_pw_aff intersect_params(isl::checked::set set) const;
3902   inline boolean involves_locals() const;
3903   inline boolean involves_nan() const;
3904   inline boolean isa_pw_multi_aff() const;
3905   inline isl::checked::union_pw_aff_list list() const;
3906   inline isl::checked::multi_union_pw_aff neg() const;
3907   inline boolean plain_is_empty() const;
3908   inline boolean plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const;
3909   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const;
3910   inline isl::checked::union_pw_aff pullback(isl::checked::union_pw_multi_aff upma) const;
3911   inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
3912   inline isl::checked::union_pw_multi_aff range_factor_domain() const;
3913   inline isl::checked::union_pw_multi_aff range_factor_range() const;
3914   inline isl::checked::multi_union_pw_aff range_product(const isl::checked::multi_union_pw_aff &multi2) const;
3915   inline isl::checked::union_pw_multi_aff range_product(const isl::checked::union_pw_multi_aff &upma2) const;
3916   inline isl::checked::id range_tuple_id() const;
3917   inline isl::checked::multi_union_pw_aff reset_range_tuple_id() const;
3918   inline isl::checked::multi_union_pw_aff scale(const isl::checked::multi_val &mv) const;
3919   inline isl::checked::multi_union_pw_aff scale(const isl::checked::val &v) const;
3920   inline isl::checked::multi_union_pw_aff scale(long v) const;
3921   inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::multi_val &mv) const;
3922   inline isl::checked::multi_union_pw_aff scale_down(const isl::checked::val &v) const;
3923   inline isl::checked::multi_union_pw_aff scale_down(long v) const;
3924   inline isl::checked::multi_union_pw_aff set_at(int pos, const isl::checked::union_pw_aff &el) const;
3925   inline isl::checked::multi_union_pw_aff set_range_tuple(const isl::checked::id &id) const;
3926   inline isl::checked::multi_union_pw_aff set_range_tuple(const std::string &id) const;
3927   inline class size size() const;
3928   inline isl::checked::space space() const;
3929   inline isl::checked::space get_space() const;
3930   inline isl::checked::multi_union_pw_aff sub(const isl::checked::multi_union_pw_aff &multi2) const;
3931   inline isl::checked::union_pw_aff sub(isl::checked::union_pw_aff upa2) const;
3932   inline isl::checked::union_pw_multi_aff sub(const isl::checked::union_pw_multi_aff &upma2) const;
3933   inline isl::checked::union_pw_aff sub(const isl::checked::aff &upa2) const;
3934   inline isl::checked::union_pw_aff sub(const isl::checked::pw_aff &upa2) const;
3935   inline isl::checked::union_pw_aff subtract_domain(isl::checked::space space) const;
3936   inline isl::checked::union_pw_aff subtract_domain(isl::checked::union_set uset) const;
3937   inline isl::checked::union_pw_aff_list to_list() const;
3938   inline isl::checked::multi_union_pw_aff union_add(const isl::checked::multi_union_pw_aff &mupa2) const;
3939   inline isl::checked::union_pw_aff union_add(isl::checked::union_pw_aff upa2) const;
3940   inline isl::checked::union_pw_multi_aff union_add(const isl::checked::union_pw_multi_aff &upma2) const;
3941   inline isl::checked::union_pw_aff union_add(const isl::checked::aff &upa2) const;
3942   inline isl::checked::union_pw_aff union_add(const isl::checked::pw_aff &upa2) const;
3943 };
3944 
3945 // declarations for isl::union_pw_aff_list
3946 inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3947 inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3948 
3949 class union_pw_aff_list {
3950   friend inline union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr);
3951   friend inline union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr);
3952 
3953 protected:
3954   isl_union_pw_aff_list *ptr = nullptr;
3955 
3956   inline explicit union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr);
3957 
3958 public:
3959   inline /* implicit */ union_pw_aff_list();
3960   inline /* implicit */ union_pw_aff_list(const union_pw_aff_list &obj);
3961   inline explicit union_pw_aff_list(isl::checked::ctx ctx, int n);
3962   inline explicit union_pw_aff_list(isl::checked::union_pw_aff el);
3963   inline explicit union_pw_aff_list(isl::checked::ctx ctx, const std::string &str);
3964   inline union_pw_aff_list &operator=(union_pw_aff_list obj);
3965   inline ~union_pw_aff_list();
3966   inline __isl_give isl_union_pw_aff_list *copy() const &;
3967   inline __isl_give isl_union_pw_aff_list *copy() && = delete;
3968   inline __isl_keep isl_union_pw_aff_list *get() const;
3969   inline __isl_give isl_union_pw_aff_list *release();
3970   inline bool is_null() const;
3971   inline isl::checked::ctx ctx() const;
3972 
3973   inline isl::checked::union_pw_aff_list add(isl::checked::union_pw_aff el) const;
3974   inline isl::checked::union_pw_aff at(int index) const;
3975   inline isl::checked::union_pw_aff get_at(int index) const;
3976   inline isl::checked::union_pw_aff_list clear() const;
3977   inline isl::checked::union_pw_aff_list concat(isl::checked::union_pw_aff_list list2) const;
3978   inline isl::checked::union_pw_aff_list drop(unsigned int first, unsigned int n) const;
3979   inline stat foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const;
3980   inline isl::checked::union_pw_aff_list insert(unsigned int pos, isl::checked::union_pw_aff el) const;
3981   inline class size size() const;
3982 };
3983 
3984 // declarations for isl::union_pw_multi_aff
3985 inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3986 inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3987 
3988 class union_pw_multi_aff {
3989   friend inline union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr);
3990   friend inline union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr);
3991 
3992 protected:
3993   isl_union_pw_multi_aff *ptr = nullptr;
3994 
3995   inline explicit union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr);
3996 
3997 public:
3998   inline /* implicit */ union_pw_multi_aff();
3999   inline /* implicit */ union_pw_multi_aff(const union_pw_multi_aff &obj);
4000   inline /* implicit */ union_pw_multi_aff(isl::checked::multi_aff ma);
4001   inline /* implicit */ union_pw_multi_aff(isl::checked::pw_multi_aff pma);
4002   inline /* implicit */ union_pw_multi_aff(isl::checked::union_pw_aff upa);
4003   inline explicit union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str);
4004   inline union_pw_multi_aff &operator=(union_pw_multi_aff obj);
4005   inline ~union_pw_multi_aff();
4006   inline __isl_give isl_union_pw_multi_aff *copy() const &;
4007   inline __isl_give isl_union_pw_multi_aff *copy() && = delete;
4008   inline __isl_keep isl_union_pw_multi_aff *get() const;
4009   inline __isl_give isl_union_pw_multi_aff *release();
4010   inline bool is_null() const;
4011   inline isl::checked::ctx ctx() const;
4012 
4013   inline isl::checked::union_pw_multi_aff add(isl::checked::union_pw_multi_aff upma2) const;
4014   inline isl::checked::union_pw_multi_aff apply(isl::checked::union_pw_multi_aff upma2) const;
4015   inline isl::checked::multi_union_pw_aff as_multi_union_pw_aff() const;
4016   inline isl::checked::pw_multi_aff as_pw_multi_aff() const;
4017   inline isl::checked::union_map as_union_map() const;
4018   inline isl::checked::union_pw_multi_aff coalesce() const;
4019   inline isl::checked::union_set domain() const;
4020   static inline isl::checked::union_pw_multi_aff empty(isl::checked::ctx ctx);
4021   inline isl::checked::pw_multi_aff extract_pw_multi_aff(isl::checked::space space) const;
4022   inline isl::checked::union_pw_multi_aff flat_range_product(isl::checked::union_pw_multi_aff upma2) const;
4023   inline isl::checked::union_pw_multi_aff gist(isl::checked::union_set context) const;
4024   inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::space space) const;
4025   inline isl::checked::union_pw_multi_aff intersect_domain(isl::checked::union_set uset) const;
4026   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_domain(isl::checked::union_set uset) const;
4027   inline isl::checked::union_pw_multi_aff intersect_domain_wrapped_range(isl::checked::union_set uset) const;
4028   inline isl::checked::union_pw_multi_aff intersect_params(isl::checked::set set) const;
4029   inline boolean involves_locals() const;
4030   inline boolean isa_pw_multi_aff() const;
4031   inline boolean plain_is_empty() const;
4032   inline isl::checked::union_pw_multi_aff preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const;
4033   inline isl::checked::union_pw_multi_aff pullback(isl::checked::union_pw_multi_aff upma2) const;
4034   inline isl::checked::pw_multi_aff_list pw_multi_aff_list() const;
4035   inline isl::checked::pw_multi_aff_list get_pw_multi_aff_list() const;
4036   inline isl::checked::union_pw_multi_aff range_factor_domain() const;
4037   inline isl::checked::union_pw_multi_aff range_factor_range() const;
4038   inline isl::checked::union_pw_multi_aff range_product(isl::checked::union_pw_multi_aff upma2) const;
4039   inline isl::checked::space space() const;
4040   inline isl::checked::space get_space() const;
4041   inline isl::checked::union_pw_multi_aff sub(isl::checked::union_pw_multi_aff upma2) const;
4042   inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::space space) const;
4043   inline isl::checked::union_pw_multi_aff subtract_domain(isl::checked::union_set uset) const;
4044   inline isl::checked::union_pw_multi_aff union_add(isl::checked::union_pw_multi_aff upma2) const;
4045 };
4046 
4047 // declarations for isl::union_set
4048 inline union_set manage(__isl_take isl_union_set *ptr);
4049 inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4050 
4051 class union_set {
4052   friend inline union_set manage(__isl_take isl_union_set *ptr);
4053   friend inline union_set manage_copy(__isl_keep isl_union_set *ptr);
4054 
4055 protected:
4056   isl_union_set *ptr = nullptr;
4057 
4058   inline explicit union_set(__isl_take isl_union_set *ptr);
4059 
4060 public:
4061   inline /* implicit */ union_set();
4062   inline /* implicit */ union_set(const union_set &obj);
4063   inline /* implicit */ union_set(isl::checked::basic_set bset);
4064   inline /* implicit */ union_set(isl::checked::point pnt);
4065   inline /* implicit */ union_set(isl::checked::set set);
4066   inline explicit union_set(isl::checked::ctx ctx, const std::string &str);
4067   inline union_set &operator=(union_set obj);
4068   inline ~union_set();
4069   inline __isl_give isl_union_set *copy() const &;
4070   inline __isl_give isl_union_set *copy() && = delete;
4071   inline __isl_keep isl_union_set *get() const;
4072   inline __isl_give isl_union_set *release();
4073   inline bool is_null() const;
4074   inline isl::checked::ctx ctx() const;
4075 
4076   inline isl::checked::union_set affine_hull() const;
4077   inline isl::checked::union_set apply(isl::checked::union_map umap) const;
4078   inline isl::checked::set as_set() const;
4079   inline isl::checked::union_set coalesce() const;
4080   inline isl::checked::union_set compute_divs() const;
4081   inline isl::checked::union_set detect_equalities() const;
4082   static inline isl::checked::union_set empty(isl::checked::ctx ctx);
4083   inline boolean every_set(const std::function<boolean(isl::checked::set)> &test) const;
4084   inline isl::checked::set extract_set(isl::checked::space space) const;
4085   inline stat foreach_point(const std::function<stat(isl::checked::point)> &fn) const;
4086   inline stat foreach_set(const std::function<stat(isl::checked::set)> &fn) const;
4087   inline isl::checked::union_set gist(isl::checked::union_set context) const;
4088   inline isl::checked::union_set gist_params(isl::checked::set set) const;
4089   inline isl::checked::union_map identity() const;
4090   inline isl::checked::union_set intersect(isl::checked::union_set uset2) const;
4091   inline isl::checked::union_set intersect_params(isl::checked::set set) const;
4092   inline boolean is_disjoint(const isl::checked::union_set &uset2) const;
4093   inline boolean is_empty() const;
4094   inline boolean is_equal(const isl::checked::union_set &uset2) const;
4095   inline boolean is_strict_subset(const isl::checked::union_set &uset2) const;
4096   inline boolean is_subset(const isl::checked::union_set &uset2) const;
4097   inline boolean isa_set() const;
4098   inline isl::checked::union_set lexmax() const;
4099   inline isl::checked::union_set lexmin() const;
4100   inline isl::checked::union_set polyhedral_hull() const;
4101   inline isl::checked::union_set preimage(isl::checked::multi_aff ma) const;
4102   inline isl::checked::union_set preimage(isl::checked::pw_multi_aff pma) const;
4103   inline isl::checked::union_set preimage(isl::checked::union_pw_multi_aff upma) const;
4104   inline isl::checked::point sample_point() const;
4105   inline isl::checked::set_list set_list() const;
4106   inline isl::checked::set_list get_set_list() const;
4107   inline isl::checked::space space() const;
4108   inline isl::checked::space get_space() const;
4109   inline isl::checked::union_set subtract(isl::checked::union_set uset2) const;
4110   inline isl::checked::union_set_list to_list() const;
4111   inline isl::checked::union_set unite(isl::checked::union_set uset2) const;
4112   inline isl::checked::union_set universe() const;
4113   inline isl::checked::union_map unwrap() const;
4114 };
4115 
4116 // declarations for isl::union_set_list
4117 inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4118 inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4119 
4120 class union_set_list {
4121   friend inline union_set_list manage(__isl_take isl_union_set_list *ptr);
4122   friend inline union_set_list manage_copy(__isl_keep isl_union_set_list *ptr);
4123 
4124 protected:
4125   isl_union_set_list *ptr = nullptr;
4126 
4127   inline explicit union_set_list(__isl_take isl_union_set_list *ptr);
4128 
4129 public:
4130   inline /* implicit */ union_set_list();
4131   inline /* implicit */ union_set_list(const union_set_list &obj);
4132   inline explicit union_set_list(isl::checked::ctx ctx, int n);
4133   inline explicit union_set_list(isl::checked::union_set el);
4134   inline explicit union_set_list(isl::checked::ctx ctx, const std::string &str);
4135   inline union_set_list &operator=(union_set_list obj);
4136   inline ~union_set_list();
4137   inline __isl_give isl_union_set_list *copy() const &;
4138   inline __isl_give isl_union_set_list *copy() && = delete;
4139   inline __isl_keep isl_union_set_list *get() const;
4140   inline __isl_give isl_union_set_list *release();
4141   inline bool is_null() const;
4142   inline isl::checked::ctx ctx() const;
4143 
4144   inline isl::checked::union_set_list add(isl::checked::union_set el) const;
4145   inline isl::checked::union_set at(int index) const;
4146   inline isl::checked::union_set get_at(int index) const;
4147   inline isl::checked::union_set_list clear() const;
4148   inline isl::checked::union_set_list concat(isl::checked::union_set_list list2) const;
4149   inline isl::checked::union_set_list drop(unsigned int first, unsigned int n) const;
4150   inline stat foreach(const std::function<stat(isl::checked::union_set)> &fn) const;
4151   inline isl::checked::union_set_list insert(unsigned int pos, isl::checked::union_set el) const;
4152   inline class size size() const;
4153 };
4154 
4155 // declarations for isl::val
4156 inline val manage(__isl_take isl_val *ptr);
4157 inline val manage_copy(__isl_keep isl_val *ptr);
4158 
4159 class val {
4160   friend inline val manage(__isl_take isl_val *ptr);
4161   friend inline val manage_copy(__isl_keep isl_val *ptr);
4162 
4163 protected:
4164   isl_val *ptr = nullptr;
4165 
4166   inline explicit val(__isl_take isl_val *ptr);
4167 
4168 public:
4169   inline /* implicit */ val();
4170   inline /* implicit */ val(const val &obj);
4171   inline explicit val(isl::checked::ctx ctx, long i);
4172   inline explicit val(isl::checked::ctx ctx, const std::string &str);
4173   inline val &operator=(val obj);
4174   inline ~val();
4175   inline __isl_give isl_val *copy() const &;
4176   inline __isl_give isl_val *copy() && = delete;
4177   inline __isl_keep isl_val *get() const;
4178   inline __isl_give isl_val *release();
4179   inline bool is_null() const;
4180   inline isl::checked::ctx ctx() const;
4181 
4182   inline isl::checked::val abs() const;
4183   inline boolean abs_eq(const isl::checked::val &v2) const;
4184   inline boolean abs_eq(long v2) const;
4185   inline isl::checked::val add(isl::checked::val v2) const;
4186   inline isl::checked::val add(long v2) const;
4187   inline isl::checked::val ceil() const;
4188   inline int cmp_si(long i) const;
4189   inline long den_si() const;
4190   inline long get_den_si() const;
4191   inline isl::checked::val div(isl::checked::val v2) const;
4192   inline isl::checked::val div(long v2) const;
4193   inline boolean eq(const isl::checked::val &v2) const;
4194   inline boolean eq(long v2) const;
4195   inline isl::checked::val floor() const;
4196   inline isl::checked::val gcd(isl::checked::val v2) const;
4197   inline isl::checked::val gcd(long v2) const;
4198   inline boolean ge(const isl::checked::val &v2) const;
4199   inline boolean ge(long v2) const;
4200   inline boolean gt(const isl::checked::val &v2) const;
4201   inline boolean gt(long v2) const;
4202   static inline isl::checked::val infty(isl::checked::ctx ctx);
4203   inline isl::checked::val inv() const;
4204   inline boolean is_divisible_by(const isl::checked::val &v2) const;
4205   inline boolean is_divisible_by(long v2) const;
4206   inline boolean is_infty() const;
4207   inline boolean is_int() const;
4208   inline boolean is_nan() const;
4209   inline boolean is_neg() const;
4210   inline boolean is_neginfty() const;
4211   inline boolean is_negone() const;
4212   inline boolean is_nonneg() const;
4213   inline boolean is_nonpos() const;
4214   inline boolean is_one() const;
4215   inline boolean is_pos() const;
4216   inline boolean is_rat() const;
4217   inline boolean is_zero() const;
4218   inline boolean le(const isl::checked::val &v2) const;
4219   inline boolean le(long v2) const;
4220   inline boolean lt(const isl::checked::val &v2) const;
4221   inline boolean lt(long v2) const;
4222   inline isl::checked::val max(isl::checked::val v2) const;
4223   inline isl::checked::val max(long v2) const;
4224   inline isl::checked::val min(isl::checked::val v2) const;
4225   inline isl::checked::val min(long v2) const;
4226   inline isl::checked::val mod(isl::checked::val v2) const;
4227   inline isl::checked::val mod(long v2) const;
4228   inline isl::checked::val mul(isl::checked::val v2) const;
4229   inline isl::checked::val mul(long v2) const;
4230   static inline isl::checked::val nan(isl::checked::ctx ctx);
4231   inline boolean ne(const isl::checked::val &v2) const;
4232   inline boolean ne(long v2) const;
4233   inline isl::checked::val neg() const;
4234   static inline isl::checked::val neginfty(isl::checked::ctx ctx);
4235   static inline isl::checked::val negone(isl::checked::ctx ctx);
4236   inline long num_si() const;
4237   inline long get_num_si() const;
4238   static inline isl::checked::val one(isl::checked::ctx ctx);
4239   inline isl::checked::val pow2() const;
4240   inline int sgn() const;
4241   inline isl::checked::val sub(isl::checked::val v2) const;
4242   inline isl::checked::val sub(long v2) const;
4243   inline isl::checked::val_list to_list() const;
4244   inline isl::checked::val trunc() const;
4245   static inline isl::checked::val zero(isl::checked::ctx ctx);
4246 };
4247 
4248 // declarations for isl::val_list
4249 inline val_list manage(__isl_take isl_val_list *ptr);
4250 inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4251 
4252 class val_list {
4253   friend inline val_list manage(__isl_take isl_val_list *ptr);
4254   friend inline val_list manage_copy(__isl_keep isl_val_list *ptr);
4255 
4256 protected:
4257   isl_val_list *ptr = nullptr;
4258 
4259   inline explicit val_list(__isl_take isl_val_list *ptr);
4260 
4261 public:
4262   inline /* implicit */ val_list();
4263   inline /* implicit */ val_list(const val_list &obj);
4264   inline explicit val_list(isl::checked::ctx ctx, int n);
4265   inline explicit val_list(isl::checked::val el);
4266   inline explicit val_list(isl::checked::ctx ctx, const std::string &str);
4267   inline val_list &operator=(val_list obj);
4268   inline ~val_list();
4269   inline __isl_give isl_val_list *copy() const &;
4270   inline __isl_give isl_val_list *copy() && = delete;
4271   inline __isl_keep isl_val_list *get() const;
4272   inline __isl_give isl_val_list *release();
4273   inline bool is_null() const;
4274   inline isl::checked::ctx ctx() const;
4275 
4276   inline isl::checked::val_list add(isl::checked::val el) const;
4277   inline isl::checked::val_list add(long el) const;
4278   inline isl::checked::val at(int index) const;
4279   inline isl::checked::val get_at(int index) const;
4280   inline isl::checked::val_list clear() const;
4281   inline isl::checked::val_list concat(isl::checked::val_list list2) const;
4282   inline isl::checked::val_list drop(unsigned int first, unsigned int n) const;
4283   inline stat foreach(const std::function<stat(isl::checked::val)> &fn) const;
4284   inline isl::checked::val_list insert(unsigned int pos, isl::checked::val el) const;
4285   inline isl::checked::val_list insert(unsigned int pos, long el) const;
4286   inline class size size() const;
4287 };
4288 
4289 // implementations for isl::aff
manage(__isl_take isl_aff * ptr)4290 aff manage(__isl_take isl_aff *ptr) {
4291   return aff(ptr);
4292 }
manage_copy(__isl_keep isl_aff * ptr)4293 aff manage_copy(__isl_keep isl_aff *ptr) {
4294   ptr = isl_aff_copy(ptr);
4295   return aff(ptr);
4296 }
4297 
aff()4298 aff::aff()
4299     : ptr(nullptr) {}
4300 
aff(const aff & obj)4301 aff::aff(const aff &obj)
4302     : ptr(nullptr)
4303 {
4304   ptr = obj.copy();
4305 }
4306 
aff(__isl_take isl_aff * ptr)4307 aff::aff(__isl_take isl_aff *ptr)
4308     : ptr(ptr) {}
4309 
aff(isl::checked::ctx ctx,const std::string & str)4310 aff::aff(isl::checked::ctx ctx, const std::string &str)
4311 {
4312   auto res = isl_aff_read_from_str(ctx.release(), str.c_str());
4313   ptr = res;
4314 }
4315 
4316 aff &aff::operator=(aff obj) {
4317   std::swap(this->ptr, obj.ptr);
4318   return *this;
4319 }
4320 
~aff()4321 aff::~aff() {
4322   if (ptr)
4323     isl_aff_free(ptr);
4324 }
4325 
copy()4326 __isl_give isl_aff *aff::copy() const & {
4327   return isl_aff_copy(ptr);
4328 }
4329 
get()4330 __isl_keep isl_aff *aff::get() const {
4331   return ptr;
4332 }
4333 
release()4334 __isl_give isl_aff *aff::release() {
4335   isl_aff *tmp = ptr;
4336   ptr = nullptr;
4337   return tmp;
4338 }
4339 
is_null()4340 bool aff::is_null() const {
4341   return ptr == nullptr;
4342 }
4343 
ctx()4344 isl::checked::ctx aff::ctx() const {
4345   return isl::checked::ctx(isl_aff_get_ctx(ptr));
4346 }
4347 
add(isl::checked::aff aff2)4348 isl::checked::aff aff::add(isl::checked::aff aff2) const
4349 {
4350   auto res = isl_aff_add(copy(), aff2.release());
4351   return manage(res);
4352 }
4353 
add(const isl::checked::multi_aff & multi2)4354 isl::checked::multi_aff aff::add(const isl::checked::multi_aff &multi2) const
4355 {
4356   return isl::checked::multi_aff(*this).add(multi2);
4357 }
4358 
add(const isl::checked::multi_pw_aff & multi2)4359 isl::checked::multi_pw_aff aff::add(const isl::checked::multi_pw_aff &multi2) const
4360 {
4361   return isl::checked::pw_aff(*this).add(multi2);
4362 }
4363 
add(const isl::checked::multi_union_pw_aff & multi2)4364 isl::checked::multi_union_pw_aff aff::add(const isl::checked::multi_union_pw_aff &multi2) const
4365 {
4366   return isl::checked::pw_aff(*this).add(multi2);
4367 }
4368 
add(const isl::checked::pw_aff & pwaff2)4369 isl::checked::pw_aff aff::add(const isl::checked::pw_aff &pwaff2) const
4370 {
4371   return isl::checked::pw_aff(*this).add(pwaff2);
4372 }
4373 
add(const isl::checked::pw_multi_aff & pma2)4374 isl::checked::pw_multi_aff aff::add(const isl::checked::pw_multi_aff &pma2) const
4375 {
4376   return isl::checked::pw_aff(*this).add(pma2);
4377 }
4378 
add(const isl::checked::union_pw_aff & upa2)4379 isl::checked::union_pw_aff aff::add(const isl::checked::union_pw_aff &upa2) const
4380 {
4381   return isl::checked::pw_aff(*this).add(upa2);
4382 }
4383 
add(const isl::checked::union_pw_multi_aff & upma2)4384 isl::checked::union_pw_multi_aff aff::add(const isl::checked::union_pw_multi_aff &upma2) const
4385 {
4386   return isl::checked::pw_aff(*this).add(upma2);
4387 }
4388 
add_constant(isl::checked::val v)4389 isl::checked::aff aff::add_constant(isl::checked::val v) const
4390 {
4391   auto res = isl_aff_add_constant_val(copy(), v.release());
4392   return manage(res);
4393 }
4394 
add_constant(long v)4395 isl::checked::aff aff::add_constant(long v) const
4396 {
4397   return this->add_constant(isl::checked::val(ctx(), v));
4398 }
4399 
add_constant(const isl::checked::multi_val & mv)4400 isl::checked::multi_aff aff::add_constant(const isl::checked::multi_val &mv) const
4401 {
4402   return isl::checked::multi_aff(*this).add_constant(mv);
4403 }
4404 
apply(const isl::checked::union_pw_multi_aff & upma2)4405 isl::checked::union_pw_multi_aff aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
4406 {
4407   return isl::checked::pw_aff(*this).apply(upma2);
4408 }
4409 
as_aff()4410 isl::checked::aff aff::as_aff() const
4411 {
4412   return isl::checked::pw_aff(*this).as_aff();
4413 }
4414 
as_map()4415 isl::checked::map aff::as_map() const
4416 {
4417   return isl::checked::pw_aff(*this).as_map();
4418 }
4419 
as_multi_aff()4420 isl::checked::multi_aff aff::as_multi_aff() const
4421 {
4422   return isl::checked::pw_aff(*this).as_multi_aff();
4423 }
4424 
as_multi_union_pw_aff()4425 isl::checked::multi_union_pw_aff aff::as_multi_union_pw_aff() const
4426 {
4427   return isl::checked::pw_aff(*this).as_multi_union_pw_aff();
4428 }
4429 
as_pw_multi_aff()4430 isl::checked::pw_multi_aff aff::as_pw_multi_aff() const
4431 {
4432   return isl::checked::pw_aff(*this).as_pw_multi_aff();
4433 }
4434 
as_set()4435 isl::checked::set aff::as_set() const
4436 {
4437   return isl::checked::multi_aff(*this).as_set();
4438 }
4439 
as_union_map()4440 isl::checked::union_map aff::as_union_map() const
4441 {
4442   return isl::checked::pw_aff(*this).as_union_map();
4443 }
4444 
at(int pos)4445 isl::checked::aff aff::at(int pos) const
4446 {
4447   return isl::checked::multi_aff(*this).at(pos);
4448 }
4449 
bind(isl::checked::id id)4450 isl::checked::basic_set aff::bind(isl::checked::id id) const
4451 {
4452   auto res = isl_aff_bind_id(copy(), id.release());
4453   return manage(res);
4454 }
4455 
bind(const std::string & id)4456 isl::checked::basic_set aff::bind(const std::string &id) const
4457 {
4458   return this->bind(isl::checked::id(ctx(), id));
4459 }
4460 
bind(const isl::checked::multi_id & tuple)4461 isl::checked::basic_set aff::bind(const isl::checked::multi_id &tuple) const
4462 {
4463   return isl::checked::multi_aff(*this).bind(tuple);
4464 }
4465 
bind_domain(const isl::checked::multi_id & tuple)4466 isl::checked::pw_aff aff::bind_domain(const isl::checked::multi_id &tuple) const
4467 {
4468   return isl::checked::pw_aff(*this).bind_domain(tuple);
4469 }
4470 
bind_domain_wrapped_domain(const isl::checked::multi_id & tuple)4471 isl::checked::pw_aff aff::bind_domain_wrapped_domain(const isl::checked::multi_id &tuple) const
4472 {
4473   return isl::checked::pw_aff(*this).bind_domain_wrapped_domain(tuple);
4474 }
4475 
ceil()4476 isl::checked::aff aff::ceil() const
4477 {
4478   auto res = isl_aff_ceil(copy());
4479   return manage(res);
4480 }
4481 
coalesce()4482 isl::checked::pw_aff aff::coalesce() const
4483 {
4484   return isl::checked::pw_aff(*this).coalesce();
4485 }
4486 
cond(const isl::checked::pw_aff & pwaff_true,const isl::checked::pw_aff & pwaff_false)4487 isl::checked::pw_aff aff::cond(const isl::checked::pw_aff &pwaff_true, const isl::checked::pw_aff &pwaff_false) const
4488 {
4489   return isl::checked::pw_aff(*this).cond(pwaff_true, pwaff_false);
4490 }
4491 
constant_multi_val()4492 isl::checked::multi_val aff::constant_multi_val() const
4493 {
4494   return isl::checked::multi_aff(*this).constant_multi_val();
4495 }
4496 
constant_val()4497 isl::checked::val aff::constant_val() const
4498 {
4499   auto res = isl_aff_get_constant_val(get());
4500   return manage(res);
4501 }
4502 
get_constant_val()4503 isl::checked::val aff::get_constant_val() const
4504 {
4505   return constant_val();
4506 }
4507 
div(isl::checked::aff aff2)4508 isl::checked::aff aff::div(isl::checked::aff aff2) const
4509 {
4510   auto res = isl_aff_div(copy(), aff2.release());
4511   return manage(res);
4512 }
4513 
div(const isl::checked::pw_aff & pa2)4514 isl::checked::pw_aff aff::div(const isl::checked::pw_aff &pa2) const
4515 {
4516   return isl::checked::pw_aff(*this).div(pa2);
4517 }
4518 
domain()4519 isl::checked::set aff::domain() const
4520 {
4521   return isl::checked::pw_aff(*this).domain();
4522 }
4523 
eq_set(isl::checked::aff aff2)4524 isl::checked::set aff::eq_set(isl::checked::aff aff2) const
4525 {
4526   auto res = isl_aff_eq_set(copy(), aff2.release());
4527   return manage(res);
4528 }
4529 
eq_set(const isl::checked::pw_aff & pwaff2)4530 isl::checked::set aff::eq_set(const isl::checked::pw_aff &pwaff2) const
4531 {
4532   return isl::checked::pw_aff(*this).eq_set(pwaff2);
4533 }
4534 
eval(isl::checked::point pnt)4535 isl::checked::val aff::eval(isl::checked::point pnt) const
4536 {
4537   auto res = isl_aff_eval(copy(), pnt.release());
4538   return manage(res);
4539 }
4540 
extract_pw_multi_aff(const isl::checked::space & space)4541 isl::checked::pw_multi_aff aff::extract_pw_multi_aff(const isl::checked::space &space) const
4542 {
4543   return isl::checked::pw_aff(*this).extract_pw_multi_aff(space);
4544 }
4545 
flat_range_product(const isl::checked::multi_aff & multi2)4546 isl::checked::multi_aff aff::flat_range_product(const isl::checked::multi_aff &multi2) const
4547 {
4548   return isl::checked::multi_aff(*this).flat_range_product(multi2);
4549 }
4550 
flat_range_product(const isl::checked::multi_pw_aff & multi2)4551 isl::checked::multi_pw_aff aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
4552 {
4553   return isl::checked::pw_aff(*this).flat_range_product(multi2);
4554 }
4555 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)4556 isl::checked::multi_union_pw_aff aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
4557 {
4558   return isl::checked::pw_aff(*this).flat_range_product(multi2);
4559 }
4560 
flat_range_product(const isl::checked::pw_multi_aff & pma2)4561 isl::checked::pw_multi_aff aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
4562 {
4563   return isl::checked::pw_aff(*this).flat_range_product(pma2);
4564 }
4565 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)4566 isl::checked::union_pw_multi_aff aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
4567 {
4568   return isl::checked::pw_aff(*this).flat_range_product(upma2);
4569 }
4570 
floor()4571 isl::checked::aff aff::floor() const
4572 {
4573   auto res = isl_aff_floor(copy());
4574   return manage(res);
4575 }
4576 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)4577 stat aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
4578 {
4579   return isl::checked::pw_aff(*this).foreach_piece(fn);
4580 }
4581 
ge_set(isl::checked::aff aff2)4582 isl::checked::set aff::ge_set(isl::checked::aff aff2) const
4583 {
4584   auto res = isl_aff_ge_set(copy(), aff2.release());
4585   return manage(res);
4586 }
4587 
ge_set(const isl::checked::pw_aff & pwaff2)4588 isl::checked::set aff::ge_set(const isl::checked::pw_aff &pwaff2) const
4589 {
4590   return isl::checked::pw_aff(*this).ge_set(pwaff2);
4591 }
4592 
gist(isl::checked::set context)4593 isl::checked::aff aff::gist(isl::checked::set context) const
4594 {
4595   auto res = isl_aff_gist(copy(), context.release());
4596   return manage(res);
4597 }
4598 
gist(const isl::checked::union_set & context)4599 isl::checked::union_pw_aff aff::gist(const isl::checked::union_set &context) const
4600 {
4601   return isl::checked::pw_aff(*this).gist(context);
4602 }
4603 
gist(const isl::checked::basic_set & context)4604 isl::checked::aff aff::gist(const isl::checked::basic_set &context) const
4605 {
4606   return this->gist(isl::checked::set(context));
4607 }
4608 
gist(const isl::checked::point & context)4609 isl::checked::aff aff::gist(const isl::checked::point &context) const
4610 {
4611   return this->gist(isl::checked::set(context));
4612 }
4613 
gt_set(isl::checked::aff aff2)4614 isl::checked::set aff::gt_set(isl::checked::aff aff2) const
4615 {
4616   auto res = isl_aff_gt_set(copy(), aff2.release());
4617   return manage(res);
4618 }
4619 
gt_set(const isl::checked::pw_aff & pwaff2)4620 isl::checked::set aff::gt_set(const isl::checked::pw_aff &pwaff2) const
4621 {
4622   return isl::checked::pw_aff(*this).gt_set(pwaff2);
4623 }
4624 
has_range_tuple_id()4625 boolean aff::has_range_tuple_id() const
4626 {
4627   return isl::checked::multi_aff(*this).has_range_tuple_id();
4628 }
4629 
identity()4630 isl::checked::multi_aff aff::identity() const
4631 {
4632   return isl::checked::multi_aff(*this).identity();
4633 }
4634 
insert_domain(const isl::checked::space & domain)4635 isl::checked::pw_aff aff::insert_domain(const isl::checked::space &domain) const
4636 {
4637   return isl::checked::pw_aff(*this).insert_domain(domain);
4638 }
4639 
intersect_domain(const isl::checked::set & set)4640 isl::checked::pw_aff aff::intersect_domain(const isl::checked::set &set) const
4641 {
4642   return isl::checked::pw_aff(*this).intersect_domain(set);
4643 }
4644 
intersect_domain(const isl::checked::space & space)4645 isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::space &space) const
4646 {
4647   return isl::checked::pw_aff(*this).intersect_domain(space);
4648 }
4649 
intersect_domain(const isl::checked::union_set & uset)4650 isl::checked::union_pw_aff aff::intersect_domain(const isl::checked::union_set &uset) const
4651 {
4652   return isl::checked::pw_aff(*this).intersect_domain(uset);
4653 }
4654 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)4655 isl::checked::union_pw_aff aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
4656 {
4657   return isl::checked::pw_aff(*this).intersect_domain_wrapped_domain(uset);
4658 }
4659 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)4660 isl::checked::union_pw_aff aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
4661 {
4662   return isl::checked::pw_aff(*this).intersect_domain_wrapped_range(uset);
4663 }
4664 
intersect_params(const isl::checked::set & set)4665 isl::checked::pw_aff aff::intersect_params(const isl::checked::set &set) const
4666 {
4667   return isl::checked::pw_aff(*this).intersect_params(set);
4668 }
4669 
involves_locals()4670 boolean aff::involves_locals() const
4671 {
4672   return isl::checked::multi_aff(*this).involves_locals();
4673 }
4674 
involves_nan()4675 boolean aff::involves_nan() const
4676 {
4677   return isl::checked::multi_aff(*this).involves_nan();
4678 }
4679 
involves_param(const isl::checked::id & id)4680 boolean aff::involves_param(const isl::checked::id &id) const
4681 {
4682   return isl::checked::pw_aff(*this).involves_param(id);
4683 }
4684 
involves_param(const std::string & id)4685 boolean aff::involves_param(const std::string &id) const
4686 {
4687   return this->involves_param(isl::checked::id(ctx(), id));
4688 }
4689 
involves_param(const isl::checked::id_list & list)4690 boolean aff::involves_param(const isl::checked::id_list &list) const
4691 {
4692   return isl::checked::pw_aff(*this).involves_param(list);
4693 }
4694 
is_cst()4695 boolean aff::is_cst() const
4696 {
4697   auto res = isl_aff_is_cst(get());
4698   return manage(res);
4699 }
4700 
isa_aff()4701 boolean aff::isa_aff() const
4702 {
4703   return isl::checked::pw_aff(*this).isa_aff();
4704 }
4705 
isa_multi_aff()4706 boolean aff::isa_multi_aff() const
4707 {
4708   return isl::checked::pw_aff(*this).isa_multi_aff();
4709 }
4710 
isa_pw_multi_aff()4711 boolean aff::isa_pw_multi_aff() const
4712 {
4713   return isl::checked::pw_aff(*this).isa_pw_multi_aff();
4714 }
4715 
le_set(isl::checked::aff aff2)4716 isl::checked::set aff::le_set(isl::checked::aff aff2) const
4717 {
4718   auto res = isl_aff_le_set(copy(), aff2.release());
4719   return manage(res);
4720 }
4721 
le_set(const isl::checked::pw_aff & pwaff2)4722 isl::checked::set aff::le_set(const isl::checked::pw_aff &pwaff2) const
4723 {
4724   return isl::checked::pw_aff(*this).le_set(pwaff2);
4725 }
4726 
list()4727 isl::checked::aff_list aff::list() const
4728 {
4729   return isl::checked::multi_aff(*this).list();
4730 }
4731 
lt_set(isl::checked::aff aff2)4732 isl::checked::set aff::lt_set(isl::checked::aff aff2) const
4733 {
4734   auto res = isl_aff_lt_set(copy(), aff2.release());
4735   return manage(res);
4736 }
4737 
lt_set(const isl::checked::pw_aff & pwaff2)4738 isl::checked::set aff::lt_set(const isl::checked::pw_aff &pwaff2) const
4739 {
4740   return isl::checked::pw_aff(*this).lt_set(pwaff2);
4741 }
4742 
max(const isl::checked::multi_pw_aff & multi2)4743 isl::checked::multi_pw_aff aff::max(const isl::checked::multi_pw_aff &multi2) const
4744 {
4745   return isl::checked::pw_aff(*this).max(multi2);
4746 }
4747 
max(const isl::checked::pw_aff & pwaff2)4748 isl::checked::pw_aff aff::max(const isl::checked::pw_aff &pwaff2) const
4749 {
4750   return isl::checked::pw_aff(*this).max(pwaff2);
4751 }
4752 
max_multi_val()4753 isl::checked::multi_val aff::max_multi_val() const
4754 {
4755   return isl::checked::pw_aff(*this).max_multi_val();
4756 }
4757 
min(const isl::checked::multi_pw_aff & multi2)4758 isl::checked::multi_pw_aff aff::min(const isl::checked::multi_pw_aff &multi2) const
4759 {
4760   return isl::checked::pw_aff(*this).min(multi2);
4761 }
4762 
min(const isl::checked::pw_aff & pwaff2)4763 isl::checked::pw_aff aff::min(const isl::checked::pw_aff &pwaff2) const
4764 {
4765   return isl::checked::pw_aff(*this).min(pwaff2);
4766 }
4767 
min_multi_val()4768 isl::checked::multi_val aff::min_multi_val() const
4769 {
4770   return isl::checked::pw_aff(*this).min_multi_val();
4771 }
4772 
mod(isl::checked::val mod)4773 isl::checked::aff aff::mod(isl::checked::val mod) const
4774 {
4775   auto res = isl_aff_mod_val(copy(), mod.release());
4776   return manage(res);
4777 }
4778 
mod(long mod)4779 isl::checked::aff aff::mod(long mod) const
4780 {
4781   return this->mod(isl::checked::val(ctx(), mod));
4782 }
4783 
mul(isl::checked::aff aff2)4784 isl::checked::aff aff::mul(isl::checked::aff aff2) const
4785 {
4786   auto res = isl_aff_mul(copy(), aff2.release());
4787   return manage(res);
4788 }
4789 
mul(const isl::checked::pw_aff & pwaff2)4790 isl::checked::pw_aff aff::mul(const isl::checked::pw_aff &pwaff2) const
4791 {
4792   return isl::checked::pw_aff(*this).mul(pwaff2);
4793 }
4794 
n_piece()4795 class size aff::n_piece() const
4796 {
4797   return isl::checked::pw_aff(*this).n_piece();
4798 }
4799 
ne_set(isl::checked::aff aff2)4800 isl::checked::set aff::ne_set(isl::checked::aff aff2) const
4801 {
4802   auto res = isl_aff_ne_set(copy(), aff2.release());
4803   return manage(res);
4804 }
4805 
ne_set(const isl::checked::pw_aff & pwaff2)4806 isl::checked::set aff::ne_set(const isl::checked::pw_aff &pwaff2) const
4807 {
4808   return isl::checked::pw_aff(*this).ne_set(pwaff2);
4809 }
4810 
neg()4811 isl::checked::aff aff::neg() const
4812 {
4813   auto res = isl_aff_neg(copy());
4814   return manage(res);
4815 }
4816 
plain_is_empty()4817 boolean aff::plain_is_empty() const
4818 {
4819   return isl::checked::pw_aff(*this).plain_is_empty();
4820 }
4821 
plain_is_equal(const isl::checked::multi_aff & multi2)4822 boolean aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
4823 {
4824   return isl::checked::multi_aff(*this).plain_is_equal(multi2);
4825 }
4826 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)4827 boolean aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
4828 {
4829   return isl::checked::pw_aff(*this).plain_is_equal(multi2);
4830 }
4831 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)4832 boolean aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
4833 {
4834   return isl::checked::pw_aff(*this).plain_is_equal(multi2);
4835 }
4836 
preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff & pma2)4837 isl::checked::pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
4838 {
4839   return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(pma2);
4840 }
4841 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)4842 isl::checked::union_pw_multi_aff aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
4843 {
4844   return isl::checked::pw_aff(*this).preimage_domain_wrapped_domain(upma2);
4845 }
4846 
product(const isl::checked::multi_aff & multi2)4847 isl::checked::multi_aff aff::product(const isl::checked::multi_aff &multi2) const
4848 {
4849   return isl::checked::multi_aff(*this).product(multi2);
4850 }
4851 
product(const isl::checked::multi_pw_aff & multi2)4852 isl::checked::multi_pw_aff aff::product(const isl::checked::multi_pw_aff &multi2) const
4853 {
4854   return isl::checked::pw_aff(*this).product(multi2);
4855 }
4856 
product(const isl::checked::pw_multi_aff & pma2)4857 isl::checked::pw_multi_aff aff::product(const isl::checked::pw_multi_aff &pma2) const
4858 {
4859   return isl::checked::pw_aff(*this).product(pma2);
4860 }
4861 
pullback(isl::checked::multi_aff ma)4862 isl::checked::aff aff::pullback(isl::checked::multi_aff ma) const
4863 {
4864   auto res = isl_aff_pullback_multi_aff(copy(), ma.release());
4865   return manage(res);
4866 }
4867 
pullback(const isl::checked::multi_pw_aff & mpa)4868 isl::checked::pw_aff aff::pullback(const isl::checked::multi_pw_aff &mpa) const
4869 {
4870   return isl::checked::pw_aff(*this).pullback(mpa);
4871 }
4872 
pullback(const isl::checked::pw_multi_aff & pma)4873 isl::checked::pw_aff aff::pullback(const isl::checked::pw_multi_aff &pma) const
4874 {
4875   return isl::checked::pw_aff(*this).pullback(pma);
4876 }
4877 
pullback(const isl::checked::union_pw_multi_aff & upma)4878 isl::checked::union_pw_aff aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
4879 {
4880   return isl::checked::pw_aff(*this).pullback(upma);
4881 }
4882 
pullback(const isl::checked::aff & ma)4883 isl::checked::aff aff::pullback(const isl::checked::aff &ma) const
4884 {
4885   return this->pullback(isl::checked::multi_aff(ma));
4886 }
4887 
pw_multi_aff_list()4888 isl::checked::pw_multi_aff_list aff::pw_multi_aff_list() const
4889 {
4890   return isl::checked::pw_aff(*this).pw_multi_aff_list();
4891 }
4892 
range_factor_domain()4893 isl::checked::pw_multi_aff aff::range_factor_domain() const
4894 {
4895   return isl::checked::pw_aff(*this).range_factor_domain();
4896 }
4897 
range_factor_range()4898 isl::checked::pw_multi_aff aff::range_factor_range() const
4899 {
4900   return isl::checked::pw_aff(*this).range_factor_range();
4901 }
4902 
range_product(const isl::checked::multi_aff & multi2)4903 isl::checked::multi_aff aff::range_product(const isl::checked::multi_aff &multi2) const
4904 {
4905   return isl::checked::multi_aff(*this).range_product(multi2);
4906 }
4907 
range_product(const isl::checked::multi_pw_aff & multi2)4908 isl::checked::multi_pw_aff aff::range_product(const isl::checked::multi_pw_aff &multi2) const
4909 {
4910   return isl::checked::pw_aff(*this).range_product(multi2);
4911 }
4912 
range_product(const isl::checked::multi_union_pw_aff & multi2)4913 isl::checked::multi_union_pw_aff aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
4914 {
4915   return isl::checked::pw_aff(*this).range_product(multi2);
4916 }
4917 
range_product(const isl::checked::pw_multi_aff & pma2)4918 isl::checked::pw_multi_aff aff::range_product(const isl::checked::pw_multi_aff &pma2) const
4919 {
4920   return isl::checked::pw_aff(*this).range_product(pma2);
4921 }
4922 
range_product(const isl::checked::union_pw_multi_aff & upma2)4923 isl::checked::union_pw_multi_aff aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
4924 {
4925   return isl::checked::pw_aff(*this).range_product(upma2);
4926 }
4927 
range_tuple_id()4928 isl::checked::id aff::range_tuple_id() const
4929 {
4930   return isl::checked::multi_aff(*this).range_tuple_id();
4931 }
4932 
reset_range_tuple_id()4933 isl::checked::multi_aff aff::reset_range_tuple_id() const
4934 {
4935   return isl::checked::multi_aff(*this).reset_range_tuple_id();
4936 }
4937 
scale(isl::checked::val v)4938 isl::checked::aff aff::scale(isl::checked::val v) const
4939 {
4940   auto res = isl_aff_scale_val(copy(), v.release());
4941   return manage(res);
4942 }
4943 
scale(long v)4944 isl::checked::aff aff::scale(long v) const
4945 {
4946   return this->scale(isl::checked::val(ctx(), v));
4947 }
4948 
scale(const isl::checked::multi_val & mv)4949 isl::checked::multi_aff aff::scale(const isl::checked::multi_val &mv) const
4950 {
4951   return isl::checked::multi_aff(*this).scale(mv);
4952 }
4953 
scale_down(isl::checked::val v)4954 isl::checked::aff aff::scale_down(isl::checked::val v) const
4955 {
4956   auto res = isl_aff_scale_down_val(copy(), v.release());
4957   return manage(res);
4958 }
4959 
scale_down(long v)4960 isl::checked::aff aff::scale_down(long v) const
4961 {
4962   return this->scale_down(isl::checked::val(ctx(), v));
4963 }
4964 
scale_down(const isl::checked::multi_val & mv)4965 isl::checked::multi_aff aff::scale_down(const isl::checked::multi_val &mv) const
4966 {
4967   return isl::checked::multi_aff(*this).scale_down(mv);
4968 }
4969 
set_at(int pos,const isl::checked::aff & el)4970 isl::checked::multi_aff aff::set_at(int pos, const isl::checked::aff &el) const
4971 {
4972   return isl::checked::multi_aff(*this).set_at(pos, el);
4973 }
4974 
set_at(int pos,const isl::checked::pw_aff & el)4975 isl::checked::multi_pw_aff aff::set_at(int pos, const isl::checked::pw_aff &el) const
4976 {
4977   return isl::checked::pw_aff(*this).set_at(pos, el);
4978 }
4979 
set_at(int pos,const isl::checked::union_pw_aff & el)4980 isl::checked::multi_union_pw_aff aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
4981 {
4982   return isl::checked::pw_aff(*this).set_at(pos, el);
4983 }
4984 
set_range_tuple(const isl::checked::id & id)4985 isl::checked::multi_aff aff::set_range_tuple(const isl::checked::id &id) const
4986 {
4987   return isl::checked::multi_aff(*this).set_range_tuple(id);
4988 }
4989 
set_range_tuple(const std::string & id)4990 isl::checked::multi_aff aff::set_range_tuple(const std::string &id) const
4991 {
4992   return this->set_range_tuple(isl::checked::id(ctx(), id));
4993 }
4994 
size()4995 class size aff::size() const
4996 {
4997   return isl::checked::multi_aff(*this).size();
4998 }
4999 
space()5000 isl::checked::space aff::space() const
5001 {
5002   return isl::checked::pw_aff(*this).space();
5003 }
5004 
sub(isl::checked::aff aff2)5005 isl::checked::aff aff::sub(isl::checked::aff aff2) const
5006 {
5007   auto res = isl_aff_sub(copy(), aff2.release());
5008   return manage(res);
5009 }
5010 
sub(const isl::checked::multi_aff & multi2)5011 isl::checked::multi_aff aff::sub(const isl::checked::multi_aff &multi2) const
5012 {
5013   return isl::checked::multi_aff(*this).sub(multi2);
5014 }
5015 
sub(const isl::checked::multi_pw_aff & multi2)5016 isl::checked::multi_pw_aff aff::sub(const isl::checked::multi_pw_aff &multi2) const
5017 {
5018   return isl::checked::pw_aff(*this).sub(multi2);
5019 }
5020 
sub(const isl::checked::multi_union_pw_aff & multi2)5021 isl::checked::multi_union_pw_aff aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
5022 {
5023   return isl::checked::pw_aff(*this).sub(multi2);
5024 }
5025 
sub(const isl::checked::pw_aff & pwaff2)5026 isl::checked::pw_aff aff::sub(const isl::checked::pw_aff &pwaff2) const
5027 {
5028   return isl::checked::pw_aff(*this).sub(pwaff2);
5029 }
5030 
sub(const isl::checked::pw_multi_aff & pma2)5031 isl::checked::pw_multi_aff aff::sub(const isl::checked::pw_multi_aff &pma2) const
5032 {
5033   return isl::checked::pw_aff(*this).sub(pma2);
5034 }
5035 
sub(const isl::checked::union_pw_aff & upa2)5036 isl::checked::union_pw_aff aff::sub(const isl::checked::union_pw_aff &upa2) const
5037 {
5038   return isl::checked::pw_aff(*this).sub(upa2);
5039 }
5040 
sub(const isl::checked::union_pw_multi_aff & upma2)5041 isl::checked::union_pw_multi_aff aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
5042 {
5043   return isl::checked::pw_aff(*this).sub(upma2);
5044 }
5045 
subtract_domain(const isl::checked::set & set)5046 isl::checked::pw_aff aff::subtract_domain(const isl::checked::set &set) const
5047 {
5048   return isl::checked::pw_aff(*this).subtract_domain(set);
5049 }
5050 
subtract_domain(const isl::checked::space & space)5051 isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::space &space) const
5052 {
5053   return isl::checked::pw_aff(*this).subtract_domain(space);
5054 }
5055 
subtract_domain(const isl::checked::union_set & uset)5056 isl::checked::union_pw_aff aff::subtract_domain(const isl::checked::union_set &uset) const
5057 {
5058   return isl::checked::pw_aff(*this).subtract_domain(uset);
5059 }
5060 
tdiv_q(const isl::checked::pw_aff & pa2)5061 isl::checked::pw_aff aff::tdiv_q(const isl::checked::pw_aff &pa2) const
5062 {
5063   return isl::checked::pw_aff(*this).tdiv_q(pa2);
5064 }
5065 
tdiv_r(const isl::checked::pw_aff & pa2)5066 isl::checked::pw_aff aff::tdiv_r(const isl::checked::pw_aff &pa2) const
5067 {
5068   return isl::checked::pw_aff(*this).tdiv_r(pa2);
5069 }
5070 
to_list()5071 isl::checked::aff_list aff::to_list() const
5072 {
5073   auto res = isl_aff_to_list(copy());
5074   return manage(res);
5075 }
5076 
to_multi_pw_aff()5077 isl::checked::multi_pw_aff aff::to_multi_pw_aff() const
5078 {
5079   return isl::checked::multi_aff(*this).to_multi_pw_aff();
5080 }
5081 
to_multi_union_pw_aff()5082 isl::checked::multi_union_pw_aff aff::to_multi_union_pw_aff() const
5083 {
5084   return isl::checked::multi_aff(*this).to_multi_union_pw_aff();
5085 }
5086 
to_pw_multi_aff()5087 isl::checked::pw_multi_aff aff::to_pw_multi_aff() const
5088 {
5089   return isl::checked::multi_aff(*this).to_pw_multi_aff();
5090 }
5091 
to_union_pw_aff()5092 isl::checked::union_pw_aff aff::to_union_pw_aff() const
5093 {
5094   return isl::checked::pw_aff(*this).to_union_pw_aff();
5095 }
5096 
to_union_pw_multi_aff()5097 isl::checked::union_pw_multi_aff aff::to_union_pw_multi_aff() const
5098 {
5099   return isl::checked::pw_aff(*this).to_union_pw_multi_aff();
5100 }
5101 
unbind_params_insert_domain(isl::checked::multi_id domain)5102 isl::checked::aff aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
5103 {
5104   auto res = isl_aff_unbind_params_insert_domain(copy(), domain.release());
5105   return manage(res);
5106 }
5107 
union_add(const isl::checked::multi_pw_aff & mpa2)5108 isl::checked::multi_pw_aff aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
5109 {
5110   return isl::checked::pw_aff(*this).union_add(mpa2);
5111 }
5112 
union_add(const isl::checked::multi_union_pw_aff & mupa2)5113 isl::checked::multi_union_pw_aff aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
5114 {
5115   return isl::checked::pw_aff(*this).union_add(mupa2);
5116 }
5117 
union_add(const isl::checked::pw_aff & pwaff2)5118 isl::checked::pw_aff aff::union_add(const isl::checked::pw_aff &pwaff2) const
5119 {
5120   return isl::checked::pw_aff(*this).union_add(pwaff2);
5121 }
5122 
union_add(const isl::checked::pw_multi_aff & pma2)5123 isl::checked::pw_multi_aff aff::union_add(const isl::checked::pw_multi_aff &pma2) const
5124 {
5125   return isl::checked::pw_aff(*this).union_add(pma2);
5126 }
5127 
union_add(const isl::checked::union_pw_aff & upa2)5128 isl::checked::union_pw_aff aff::union_add(const isl::checked::union_pw_aff &upa2) const
5129 {
5130   return isl::checked::pw_aff(*this).union_add(upa2);
5131 }
5132 
union_add(const isl::checked::union_pw_multi_aff & upma2)5133 isl::checked::union_pw_multi_aff aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
5134 {
5135   return isl::checked::pw_aff(*this).union_add(upma2);
5136 }
5137 
zero_on_domain(isl::checked::space space)5138 isl::checked::aff aff::zero_on_domain(isl::checked::space space)
5139 {
5140   auto res = isl_aff_zero_on_domain_space(space.release());
5141   return manage(res);
5142 }
5143 
5144 inline std::ostream &operator<<(std::ostream &os, const aff &obj)
5145 {
5146   char *str = isl_aff_to_str(obj.get());
5147   if (!str) {
5148     os.setstate(std::ios_base::badbit);
5149     return os;
5150   }
5151   os << str;
5152   free(str);
5153   return os;
5154 }
5155 
5156 // implementations for isl::aff_list
manage(__isl_take isl_aff_list * ptr)5157 aff_list manage(__isl_take isl_aff_list *ptr) {
5158   return aff_list(ptr);
5159 }
manage_copy(__isl_keep isl_aff_list * ptr)5160 aff_list manage_copy(__isl_keep isl_aff_list *ptr) {
5161   ptr = isl_aff_list_copy(ptr);
5162   return aff_list(ptr);
5163 }
5164 
aff_list()5165 aff_list::aff_list()
5166     : ptr(nullptr) {}
5167 
aff_list(const aff_list & obj)5168 aff_list::aff_list(const aff_list &obj)
5169     : ptr(nullptr)
5170 {
5171   ptr = obj.copy();
5172 }
5173 
aff_list(__isl_take isl_aff_list * ptr)5174 aff_list::aff_list(__isl_take isl_aff_list *ptr)
5175     : ptr(ptr) {}
5176 
aff_list(isl::checked::ctx ctx,int n)5177 aff_list::aff_list(isl::checked::ctx ctx, int n)
5178 {
5179   auto res = isl_aff_list_alloc(ctx.release(), n);
5180   ptr = res;
5181 }
5182 
aff_list(isl::checked::aff el)5183 aff_list::aff_list(isl::checked::aff el)
5184 {
5185   auto res = isl_aff_list_from_aff(el.release());
5186   ptr = res;
5187 }
5188 
aff_list(isl::checked::ctx ctx,const std::string & str)5189 aff_list::aff_list(isl::checked::ctx ctx, const std::string &str)
5190 {
5191   auto res = isl_aff_list_read_from_str(ctx.release(), str.c_str());
5192   ptr = res;
5193 }
5194 
5195 aff_list &aff_list::operator=(aff_list obj) {
5196   std::swap(this->ptr, obj.ptr);
5197   return *this;
5198 }
5199 
~aff_list()5200 aff_list::~aff_list() {
5201   if (ptr)
5202     isl_aff_list_free(ptr);
5203 }
5204 
copy()5205 __isl_give isl_aff_list *aff_list::copy() const & {
5206   return isl_aff_list_copy(ptr);
5207 }
5208 
get()5209 __isl_keep isl_aff_list *aff_list::get() const {
5210   return ptr;
5211 }
5212 
release()5213 __isl_give isl_aff_list *aff_list::release() {
5214   isl_aff_list *tmp = ptr;
5215   ptr = nullptr;
5216   return tmp;
5217 }
5218 
is_null()5219 bool aff_list::is_null() const {
5220   return ptr == nullptr;
5221 }
5222 
ctx()5223 isl::checked::ctx aff_list::ctx() const {
5224   return isl::checked::ctx(isl_aff_list_get_ctx(ptr));
5225 }
5226 
add(isl::checked::aff el)5227 isl::checked::aff_list aff_list::add(isl::checked::aff el) const
5228 {
5229   auto res = isl_aff_list_add(copy(), el.release());
5230   return manage(res);
5231 }
5232 
at(int index)5233 isl::checked::aff aff_list::at(int index) const
5234 {
5235   auto res = isl_aff_list_get_at(get(), index);
5236   return manage(res);
5237 }
5238 
get_at(int index)5239 isl::checked::aff aff_list::get_at(int index) const
5240 {
5241   return at(index);
5242 }
5243 
clear()5244 isl::checked::aff_list aff_list::clear() const
5245 {
5246   auto res = isl_aff_list_clear(copy());
5247   return manage(res);
5248 }
5249 
concat(isl::checked::aff_list list2)5250 isl::checked::aff_list aff_list::concat(isl::checked::aff_list list2) const
5251 {
5252   auto res = isl_aff_list_concat(copy(), list2.release());
5253   return manage(res);
5254 }
5255 
drop(unsigned int first,unsigned int n)5256 isl::checked::aff_list aff_list::drop(unsigned int first, unsigned int n) const
5257 {
5258   auto res = isl_aff_list_drop(copy(), first, n);
5259   return manage(res);
5260 }
5261 
foreach(const std::function<stat (isl::checked::aff)> & fn)5262 stat aff_list::foreach(const std::function<stat(isl::checked::aff)> &fn) const
5263 {
5264   struct fn_data {
5265     std::function<stat(isl::checked::aff)> func;
5266   } fn_data = { fn };
5267   auto fn_lambda = [](isl_aff *arg_0, void *arg_1) -> isl_stat {
5268     auto *data = static_cast<struct fn_data *>(arg_1);
5269     auto ret = (data->func)(manage(arg_0));
5270     return ret.release();
5271   };
5272   auto res = isl_aff_list_foreach(get(), fn_lambda, &fn_data);
5273   return manage(res);
5274 }
5275 
insert(unsigned int pos,isl::checked::aff el)5276 isl::checked::aff_list aff_list::insert(unsigned int pos, isl::checked::aff el) const
5277 {
5278   auto res = isl_aff_list_insert(copy(), pos, el.release());
5279   return manage(res);
5280 }
5281 
size()5282 class size aff_list::size() const
5283 {
5284   auto res = isl_aff_list_size(get());
5285   return manage(res);
5286 }
5287 
5288 inline std::ostream &operator<<(std::ostream &os, const aff_list &obj)
5289 {
5290   char *str = isl_aff_list_to_str(obj.get());
5291   if (!str) {
5292     os.setstate(std::ios_base::badbit);
5293     return os;
5294   }
5295   os << str;
5296   free(str);
5297   return os;
5298 }
5299 
5300 // implementations for isl::ast_build
manage(__isl_take isl_ast_build * ptr)5301 ast_build manage(__isl_take isl_ast_build *ptr) {
5302   return ast_build(ptr);
5303 }
manage_copy(__isl_keep isl_ast_build * ptr)5304 ast_build manage_copy(__isl_keep isl_ast_build *ptr) {
5305   ptr = isl_ast_build_copy(ptr);
5306   return ast_build(ptr);
5307 }
5308 
ast_build()5309 ast_build::ast_build()
5310     : ptr(nullptr) {}
5311 
ast_build(const ast_build & obj)5312 ast_build::ast_build(const ast_build &obj)
5313     : ptr(nullptr)
5314 {
5315   ptr = obj.copy();
5316   copy_callbacks(obj);
5317 }
5318 
ast_build(__isl_take isl_ast_build * ptr)5319 ast_build::ast_build(__isl_take isl_ast_build *ptr)
5320     : ptr(ptr) {}
5321 
ast_build(isl::checked::ctx ctx)5322 ast_build::ast_build(isl::checked::ctx ctx)
5323 {
5324   auto res = isl_ast_build_alloc(ctx.release());
5325   ptr = res;
5326 }
5327 
5328 ast_build &ast_build::operator=(ast_build obj) {
5329   std::swap(this->ptr, obj.ptr);
5330   copy_callbacks(obj);
5331   return *this;
5332 }
5333 
~ast_build()5334 ast_build::~ast_build() {
5335   if (ptr)
5336     isl_ast_build_free(ptr);
5337 }
5338 
copy()5339 __isl_give isl_ast_build *ast_build::copy() const & {
5340   return isl_ast_build_copy(ptr);
5341 }
5342 
get()5343 __isl_keep isl_ast_build *ast_build::get() const {
5344   return ptr;
5345 }
5346 
release()5347 __isl_give isl_ast_build *ast_build::release() {
5348   if (at_each_domain_data)
5349     isl_die(ctx().get(), isl_error_invalid, "cannot release object with persistent callbacks", return nullptr);
5350   isl_ast_build *tmp = ptr;
5351   ptr = nullptr;
5352   return tmp;
5353 }
5354 
is_null()5355 bool ast_build::is_null() const {
5356   return ptr == nullptr;
5357 }
5358 
ctx()5359 isl::checked::ctx ast_build::ctx() const {
5360   return isl::checked::ctx(isl_ast_build_get_ctx(ptr));
5361 }
5362 
copy_callbacks(const ast_build & obj)5363 ast_build &ast_build::copy_callbacks(const ast_build &obj)
5364 {
5365   at_each_domain_data = obj.at_each_domain_data;
5366   return *this;
5367 }
5368 
at_each_domain(isl_ast_node * arg_0,isl_ast_build * arg_1,void * arg_2)5369 isl_ast_node *ast_build::at_each_domain(isl_ast_node *arg_0, isl_ast_build *arg_1, void *arg_2)
5370 {
5371   auto *data = static_cast<struct at_each_domain_data *>(arg_2);
5372   auto ret = (data->func)(manage(arg_0), manage_copy(arg_1));
5373   return ret.release();
5374 }
5375 
set_at_each_domain_data(const std::function<isl::checked::ast_node (isl::checked::ast_node,isl::checked::ast_build)> & fn)5376 void ast_build::set_at_each_domain_data(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn)
5377 {
5378   at_each_domain_data = std::make_shared<struct at_each_domain_data>();
5379   at_each_domain_data->func = fn;
5380   ptr = isl_ast_build_set_at_each_domain(ptr, &at_each_domain, at_each_domain_data.get());
5381 }
5382 
set_at_each_domain(const std::function<isl::checked::ast_node (isl::checked::ast_node,isl::checked::ast_build)> & fn)5383 isl::checked::ast_build ast_build::set_at_each_domain(const std::function<isl::checked::ast_node(isl::checked::ast_node, isl::checked::ast_build)> &fn) const
5384 {
5385   auto copy = *this;
5386   copy.set_at_each_domain_data(fn);
5387   return copy;
5388 }
5389 
access_from(isl::checked::multi_pw_aff mpa)5390 isl::checked::ast_expr ast_build::access_from(isl::checked::multi_pw_aff mpa) const
5391 {
5392   auto res = isl_ast_build_access_from_multi_pw_aff(get(), mpa.release());
5393   return manage(res);
5394 }
5395 
access_from(isl::checked::pw_multi_aff pma)5396 isl::checked::ast_expr ast_build::access_from(isl::checked::pw_multi_aff pma) const
5397 {
5398   auto res = isl_ast_build_access_from_pw_multi_aff(get(), pma.release());
5399   return manage(res);
5400 }
5401 
call_from(isl::checked::multi_pw_aff mpa)5402 isl::checked::ast_expr ast_build::call_from(isl::checked::multi_pw_aff mpa) const
5403 {
5404   auto res = isl_ast_build_call_from_multi_pw_aff(get(), mpa.release());
5405   return manage(res);
5406 }
5407 
call_from(isl::checked::pw_multi_aff pma)5408 isl::checked::ast_expr ast_build::call_from(isl::checked::pw_multi_aff pma) const
5409 {
5410   auto res = isl_ast_build_call_from_pw_multi_aff(get(), pma.release());
5411   return manage(res);
5412 }
5413 
expr_from(isl::checked::pw_aff pa)5414 isl::checked::ast_expr ast_build::expr_from(isl::checked::pw_aff pa) const
5415 {
5416   auto res = isl_ast_build_expr_from_pw_aff(get(), pa.release());
5417   return manage(res);
5418 }
5419 
expr_from(isl::checked::set set)5420 isl::checked::ast_expr ast_build::expr_from(isl::checked::set set) const
5421 {
5422   auto res = isl_ast_build_expr_from_set(get(), set.release());
5423   return manage(res);
5424 }
5425 
from_context(isl::checked::set set)5426 isl::checked::ast_build ast_build::from_context(isl::checked::set set)
5427 {
5428   auto res = isl_ast_build_from_context(set.release());
5429   return manage(res);
5430 }
5431 
node_from(isl::checked::schedule schedule)5432 isl::checked::ast_node ast_build::node_from(isl::checked::schedule schedule) const
5433 {
5434   auto res = isl_ast_build_node_from_schedule(get(), schedule.release());
5435   return manage(res);
5436 }
5437 
node_from_schedule_map(isl::checked::union_map schedule)5438 isl::checked::ast_node ast_build::node_from_schedule_map(isl::checked::union_map schedule) const
5439 {
5440   auto res = isl_ast_build_node_from_schedule_map(get(), schedule.release());
5441   return manage(res);
5442 }
5443 
schedule()5444 isl::checked::union_map ast_build::schedule() const
5445 {
5446   auto res = isl_ast_build_get_schedule(get());
5447   return manage(res);
5448 }
5449 
get_schedule()5450 isl::checked::union_map ast_build::get_schedule() const
5451 {
5452   return schedule();
5453 }
5454 
5455 // implementations for isl::ast_expr
manage(__isl_take isl_ast_expr * ptr)5456 ast_expr manage(__isl_take isl_ast_expr *ptr) {
5457   return ast_expr(ptr);
5458 }
manage_copy(__isl_keep isl_ast_expr * ptr)5459 ast_expr manage_copy(__isl_keep isl_ast_expr *ptr) {
5460   ptr = isl_ast_expr_copy(ptr);
5461   return ast_expr(ptr);
5462 }
5463 
ast_expr()5464 ast_expr::ast_expr()
5465     : ptr(nullptr) {}
5466 
ast_expr(const ast_expr & obj)5467 ast_expr::ast_expr(const ast_expr &obj)
5468     : ptr(nullptr)
5469 {
5470   ptr = obj.copy();
5471 }
5472 
ast_expr(__isl_take isl_ast_expr * ptr)5473 ast_expr::ast_expr(__isl_take isl_ast_expr *ptr)
5474     : ptr(ptr) {}
5475 
5476 ast_expr &ast_expr::operator=(ast_expr obj) {
5477   std::swap(this->ptr, obj.ptr);
5478   return *this;
5479 }
5480 
~ast_expr()5481 ast_expr::~ast_expr() {
5482   if (ptr)
5483     isl_ast_expr_free(ptr);
5484 }
5485 
copy()5486 __isl_give isl_ast_expr *ast_expr::copy() const & {
5487   return isl_ast_expr_copy(ptr);
5488 }
5489 
get()5490 __isl_keep isl_ast_expr *ast_expr::get() const {
5491   return ptr;
5492 }
5493 
release()5494 __isl_give isl_ast_expr *ast_expr::release() {
5495   isl_ast_expr *tmp = ptr;
5496   ptr = nullptr;
5497   return tmp;
5498 }
5499 
is_null()5500 bool ast_expr::is_null() const {
5501   return ptr == nullptr;
5502 }
5503 
5504 template <typename T, typename>
isa_type(T subtype)5505 boolean ast_expr::isa_type(T subtype) const
5506 {
5507   if (is_null())
5508     return boolean();
5509   return isl_ast_expr_get_type(get()) == subtype;
5510 }
5511 template <class T>
isa()5512 boolean ast_expr::isa() const
5513 {
5514   return isa_type<decltype(T::type)>(T::type);
5515 }
5516 template <class T>
as()5517 T ast_expr::as() const
5518 {
5519  if (isa<T>().is_false())
5520     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5521   return T(copy());
5522 }
5523 
ctx()5524 isl::checked::ctx ast_expr::ctx() const {
5525   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5526 }
5527 
to_C_str()5528 std::string ast_expr::to_C_str() const
5529 {
5530   auto res = isl_ast_expr_to_C_str(get());
5531   std::string tmp(res);
5532   free(res);
5533   return tmp;
5534 }
5535 
5536 inline std::ostream &operator<<(std::ostream &os, const ast_expr &obj)
5537 {
5538   char *str = isl_ast_expr_to_str(obj.get());
5539   if (!str) {
5540     os.setstate(std::ios_base::badbit);
5541     return os;
5542   }
5543   os << str;
5544   free(str);
5545   return os;
5546 }
5547 
5548 // implementations for isl::ast_expr_id
ast_expr_id()5549 ast_expr_id::ast_expr_id()
5550     : ast_expr() {}
5551 
ast_expr_id(const ast_expr_id & obj)5552 ast_expr_id::ast_expr_id(const ast_expr_id &obj)
5553     : ast_expr(obj)
5554 {
5555 }
5556 
ast_expr_id(__isl_take isl_ast_expr * ptr)5557 ast_expr_id::ast_expr_id(__isl_take isl_ast_expr *ptr)
5558     : ast_expr(ptr) {}
5559 
5560 ast_expr_id &ast_expr_id::operator=(ast_expr_id obj) {
5561   std::swap(this->ptr, obj.ptr);
5562   return *this;
5563 }
5564 
ctx()5565 isl::checked::ctx ast_expr_id::ctx() const {
5566   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5567 }
5568 
id()5569 isl::checked::id ast_expr_id::id() const
5570 {
5571   auto res = isl_ast_expr_id_get_id(get());
5572   return manage(res);
5573 }
5574 
get_id()5575 isl::checked::id ast_expr_id::get_id() const
5576 {
5577   return id();
5578 }
5579 
5580 inline std::ostream &operator<<(std::ostream &os, const ast_expr_id &obj)
5581 {
5582   char *str = isl_ast_expr_to_str(obj.get());
5583   if (!str) {
5584     os.setstate(std::ios_base::badbit);
5585     return os;
5586   }
5587   os << str;
5588   free(str);
5589   return os;
5590 }
5591 
5592 // implementations for isl::ast_expr_int
ast_expr_int()5593 ast_expr_int::ast_expr_int()
5594     : ast_expr() {}
5595 
ast_expr_int(const ast_expr_int & obj)5596 ast_expr_int::ast_expr_int(const ast_expr_int &obj)
5597     : ast_expr(obj)
5598 {
5599 }
5600 
ast_expr_int(__isl_take isl_ast_expr * ptr)5601 ast_expr_int::ast_expr_int(__isl_take isl_ast_expr *ptr)
5602     : ast_expr(ptr) {}
5603 
5604 ast_expr_int &ast_expr_int::operator=(ast_expr_int obj) {
5605   std::swap(this->ptr, obj.ptr);
5606   return *this;
5607 }
5608 
ctx()5609 isl::checked::ctx ast_expr_int::ctx() const {
5610   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5611 }
5612 
val()5613 isl::checked::val ast_expr_int::val() const
5614 {
5615   auto res = isl_ast_expr_int_get_val(get());
5616   return manage(res);
5617 }
5618 
get_val()5619 isl::checked::val ast_expr_int::get_val() const
5620 {
5621   return val();
5622 }
5623 
5624 inline std::ostream &operator<<(std::ostream &os, const ast_expr_int &obj)
5625 {
5626   char *str = isl_ast_expr_to_str(obj.get());
5627   if (!str) {
5628     os.setstate(std::ios_base::badbit);
5629     return os;
5630   }
5631   os << str;
5632   free(str);
5633   return os;
5634 }
5635 
5636 // implementations for isl::ast_expr_op
ast_expr_op()5637 ast_expr_op::ast_expr_op()
5638     : ast_expr() {}
5639 
ast_expr_op(const ast_expr_op & obj)5640 ast_expr_op::ast_expr_op(const ast_expr_op &obj)
5641     : ast_expr(obj)
5642 {
5643 }
5644 
ast_expr_op(__isl_take isl_ast_expr * ptr)5645 ast_expr_op::ast_expr_op(__isl_take isl_ast_expr *ptr)
5646     : ast_expr(ptr) {}
5647 
5648 ast_expr_op &ast_expr_op::operator=(ast_expr_op obj) {
5649   std::swap(this->ptr, obj.ptr);
5650   return *this;
5651 }
5652 
5653 template <typename T, typename>
isa_type(T subtype)5654 boolean ast_expr_op::isa_type(T subtype) const
5655 {
5656   if (is_null())
5657     return boolean();
5658   return isl_ast_expr_op_get_type(get()) == subtype;
5659 }
5660 template <class T>
isa()5661 boolean ast_expr_op::isa() const
5662 {
5663   return isa_type<decltype(T::type)>(T::type);
5664 }
5665 template <class T>
as()5666 T ast_expr_op::as() const
5667 {
5668  if (isa<T>().is_false())
5669     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
5670   return T(copy());
5671 }
5672 
ctx()5673 isl::checked::ctx ast_expr_op::ctx() const {
5674   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5675 }
5676 
arg(int pos)5677 isl::checked::ast_expr ast_expr_op::arg(int pos) const
5678 {
5679   auto res = isl_ast_expr_op_get_arg(get(), pos);
5680   return manage(res);
5681 }
5682 
get_arg(int pos)5683 isl::checked::ast_expr ast_expr_op::get_arg(int pos) const
5684 {
5685   return arg(pos);
5686 }
5687 
n_arg()5688 class size ast_expr_op::n_arg() const
5689 {
5690   auto res = isl_ast_expr_op_get_n_arg(get());
5691   return manage(res);
5692 }
5693 
get_n_arg()5694 class size ast_expr_op::get_n_arg() const
5695 {
5696   return n_arg();
5697 }
5698 
5699 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op &obj)
5700 {
5701   char *str = isl_ast_expr_to_str(obj.get());
5702   if (!str) {
5703     os.setstate(std::ios_base::badbit);
5704     return os;
5705   }
5706   os << str;
5707   free(str);
5708   return os;
5709 }
5710 
5711 // implementations for isl::ast_expr_op_access
ast_expr_op_access()5712 ast_expr_op_access::ast_expr_op_access()
5713     : ast_expr_op() {}
5714 
ast_expr_op_access(const ast_expr_op_access & obj)5715 ast_expr_op_access::ast_expr_op_access(const ast_expr_op_access &obj)
5716     : ast_expr_op(obj)
5717 {
5718 }
5719 
ast_expr_op_access(__isl_take isl_ast_expr * ptr)5720 ast_expr_op_access::ast_expr_op_access(__isl_take isl_ast_expr *ptr)
5721     : ast_expr_op(ptr) {}
5722 
5723 ast_expr_op_access &ast_expr_op_access::operator=(ast_expr_op_access obj) {
5724   std::swap(this->ptr, obj.ptr);
5725   return *this;
5726 }
5727 
ctx()5728 isl::checked::ctx ast_expr_op_access::ctx() const {
5729   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5730 }
5731 
5732 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_access &obj)
5733 {
5734   char *str = isl_ast_expr_to_str(obj.get());
5735   if (!str) {
5736     os.setstate(std::ios_base::badbit);
5737     return os;
5738   }
5739   os << str;
5740   free(str);
5741   return os;
5742 }
5743 
5744 // implementations for isl::ast_expr_op_add
ast_expr_op_add()5745 ast_expr_op_add::ast_expr_op_add()
5746     : ast_expr_op() {}
5747 
ast_expr_op_add(const ast_expr_op_add & obj)5748 ast_expr_op_add::ast_expr_op_add(const ast_expr_op_add &obj)
5749     : ast_expr_op(obj)
5750 {
5751 }
5752 
ast_expr_op_add(__isl_take isl_ast_expr * ptr)5753 ast_expr_op_add::ast_expr_op_add(__isl_take isl_ast_expr *ptr)
5754     : ast_expr_op(ptr) {}
5755 
5756 ast_expr_op_add &ast_expr_op_add::operator=(ast_expr_op_add obj) {
5757   std::swap(this->ptr, obj.ptr);
5758   return *this;
5759 }
5760 
ctx()5761 isl::checked::ctx ast_expr_op_add::ctx() const {
5762   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5763 }
5764 
5765 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_add &obj)
5766 {
5767   char *str = isl_ast_expr_to_str(obj.get());
5768   if (!str) {
5769     os.setstate(std::ios_base::badbit);
5770     return os;
5771   }
5772   os << str;
5773   free(str);
5774   return os;
5775 }
5776 
5777 // implementations for isl::ast_expr_op_address_of
ast_expr_op_address_of()5778 ast_expr_op_address_of::ast_expr_op_address_of()
5779     : ast_expr_op() {}
5780 
ast_expr_op_address_of(const ast_expr_op_address_of & obj)5781 ast_expr_op_address_of::ast_expr_op_address_of(const ast_expr_op_address_of &obj)
5782     : ast_expr_op(obj)
5783 {
5784 }
5785 
ast_expr_op_address_of(__isl_take isl_ast_expr * ptr)5786 ast_expr_op_address_of::ast_expr_op_address_of(__isl_take isl_ast_expr *ptr)
5787     : ast_expr_op(ptr) {}
5788 
5789 ast_expr_op_address_of &ast_expr_op_address_of::operator=(ast_expr_op_address_of obj) {
5790   std::swap(this->ptr, obj.ptr);
5791   return *this;
5792 }
5793 
ctx()5794 isl::checked::ctx ast_expr_op_address_of::ctx() const {
5795   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5796 }
5797 
5798 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_address_of &obj)
5799 {
5800   char *str = isl_ast_expr_to_str(obj.get());
5801   if (!str) {
5802     os.setstate(std::ios_base::badbit);
5803     return os;
5804   }
5805   os << str;
5806   free(str);
5807   return os;
5808 }
5809 
5810 // implementations for isl::ast_expr_op_and
ast_expr_op_and()5811 ast_expr_op_and::ast_expr_op_and()
5812     : ast_expr_op() {}
5813 
ast_expr_op_and(const ast_expr_op_and & obj)5814 ast_expr_op_and::ast_expr_op_and(const ast_expr_op_and &obj)
5815     : ast_expr_op(obj)
5816 {
5817 }
5818 
ast_expr_op_and(__isl_take isl_ast_expr * ptr)5819 ast_expr_op_and::ast_expr_op_and(__isl_take isl_ast_expr *ptr)
5820     : ast_expr_op(ptr) {}
5821 
5822 ast_expr_op_and &ast_expr_op_and::operator=(ast_expr_op_and obj) {
5823   std::swap(this->ptr, obj.ptr);
5824   return *this;
5825 }
5826 
ctx()5827 isl::checked::ctx ast_expr_op_and::ctx() const {
5828   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5829 }
5830 
5831 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and &obj)
5832 {
5833   char *str = isl_ast_expr_to_str(obj.get());
5834   if (!str) {
5835     os.setstate(std::ios_base::badbit);
5836     return os;
5837   }
5838   os << str;
5839   free(str);
5840   return os;
5841 }
5842 
5843 // implementations for isl::ast_expr_op_and_then
ast_expr_op_and_then()5844 ast_expr_op_and_then::ast_expr_op_and_then()
5845     : ast_expr_op() {}
5846 
ast_expr_op_and_then(const ast_expr_op_and_then & obj)5847 ast_expr_op_and_then::ast_expr_op_and_then(const ast_expr_op_and_then &obj)
5848     : ast_expr_op(obj)
5849 {
5850 }
5851 
ast_expr_op_and_then(__isl_take isl_ast_expr * ptr)5852 ast_expr_op_and_then::ast_expr_op_and_then(__isl_take isl_ast_expr *ptr)
5853     : ast_expr_op(ptr) {}
5854 
5855 ast_expr_op_and_then &ast_expr_op_and_then::operator=(ast_expr_op_and_then obj) {
5856   std::swap(this->ptr, obj.ptr);
5857   return *this;
5858 }
5859 
ctx()5860 isl::checked::ctx ast_expr_op_and_then::ctx() const {
5861   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5862 }
5863 
5864 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_and_then &obj)
5865 {
5866   char *str = isl_ast_expr_to_str(obj.get());
5867   if (!str) {
5868     os.setstate(std::ios_base::badbit);
5869     return os;
5870   }
5871   os << str;
5872   free(str);
5873   return os;
5874 }
5875 
5876 // implementations for isl::ast_expr_op_call
ast_expr_op_call()5877 ast_expr_op_call::ast_expr_op_call()
5878     : ast_expr_op() {}
5879 
ast_expr_op_call(const ast_expr_op_call & obj)5880 ast_expr_op_call::ast_expr_op_call(const ast_expr_op_call &obj)
5881     : ast_expr_op(obj)
5882 {
5883 }
5884 
ast_expr_op_call(__isl_take isl_ast_expr * ptr)5885 ast_expr_op_call::ast_expr_op_call(__isl_take isl_ast_expr *ptr)
5886     : ast_expr_op(ptr) {}
5887 
5888 ast_expr_op_call &ast_expr_op_call::operator=(ast_expr_op_call obj) {
5889   std::swap(this->ptr, obj.ptr);
5890   return *this;
5891 }
5892 
ctx()5893 isl::checked::ctx ast_expr_op_call::ctx() const {
5894   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5895 }
5896 
5897 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_call &obj)
5898 {
5899   char *str = isl_ast_expr_to_str(obj.get());
5900   if (!str) {
5901     os.setstate(std::ios_base::badbit);
5902     return os;
5903   }
5904   os << str;
5905   free(str);
5906   return os;
5907 }
5908 
5909 // implementations for isl::ast_expr_op_cond
ast_expr_op_cond()5910 ast_expr_op_cond::ast_expr_op_cond()
5911     : ast_expr_op() {}
5912 
ast_expr_op_cond(const ast_expr_op_cond & obj)5913 ast_expr_op_cond::ast_expr_op_cond(const ast_expr_op_cond &obj)
5914     : ast_expr_op(obj)
5915 {
5916 }
5917 
ast_expr_op_cond(__isl_take isl_ast_expr * ptr)5918 ast_expr_op_cond::ast_expr_op_cond(__isl_take isl_ast_expr *ptr)
5919     : ast_expr_op(ptr) {}
5920 
5921 ast_expr_op_cond &ast_expr_op_cond::operator=(ast_expr_op_cond obj) {
5922   std::swap(this->ptr, obj.ptr);
5923   return *this;
5924 }
5925 
ctx()5926 isl::checked::ctx ast_expr_op_cond::ctx() const {
5927   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5928 }
5929 
5930 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_cond &obj)
5931 {
5932   char *str = isl_ast_expr_to_str(obj.get());
5933   if (!str) {
5934     os.setstate(std::ios_base::badbit);
5935     return os;
5936   }
5937   os << str;
5938   free(str);
5939   return os;
5940 }
5941 
5942 // implementations for isl::ast_expr_op_div
ast_expr_op_div()5943 ast_expr_op_div::ast_expr_op_div()
5944     : ast_expr_op() {}
5945 
ast_expr_op_div(const ast_expr_op_div & obj)5946 ast_expr_op_div::ast_expr_op_div(const ast_expr_op_div &obj)
5947     : ast_expr_op(obj)
5948 {
5949 }
5950 
ast_expr_op_div(__isl_take isl_ast_expr * ptr)5951 ast_expr_op_div::ast_expr_op_div(__isl_take isl_ast_expr *ptr)
5952     : ast_expr_op(ptr) {}
5953 
5954 ast_expr_op_div &ast_expr_op_div::operator=(ast_expr_op_div obj) {
5955   std::swap(this->ptr, obj.ptr);
5956   return *this;
5957 }
5958 
ctx()5959 isl::checked::ctx ast_expr_op_div::ctx() const {
5960   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5961 }
5962 
5963 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_div &obj)
5964 {
5965   char *str = isl_ast_expr_to_str(obj.get());
5966   if (!str) {
5967     os.setstate(std::ios_base::badbit);
5968     return os;
5969   }
5970   os << str;
5971   free(str);
5972   return os;
5973 }
5974 
5975 // implementations for isl::ast_expr_op_eq
ast_expr_op_eq()5976 ast_expr_op_eq::ast_expr_op_eq()
5977     : ast_expr_op() {}
5978 
ast_expr_op_eq(const ast_expr_op_eq & obj)5979 ast_expr_op_eq::ast_expr_op_eq(const ast_expr_op_eq &obj)
5980     : ast_expr_op(obj)
5981 {
5982 }
5983 
ast_expr_op_eq(__isl_take isl_ast_expr * ptr)5984 ast_expr_op_eq::ast_expr_op_eq(__isl_take isl_ast_expr *ptr)
5985     : ast_expr_op(ptr) {}
5986 
5987 ast_expr_op_eq &ast_expr_op_eq::operator=(ast_expr_op_eq obj) {
5988   std::swap(this->ptr, obj.ptr);
5989   return *this;
5990 }
5991 
ctx()5992 isl::checked::ctx ast_expr_op_eq::ctx() const {
5993   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
5994 }
5995 
5996 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_eq &obj)
5997 {
5998   char *str = isl_ast_expr_to_str(obj.get());
5999   if (!str) {
6000     os.setstate(std::ios_base::badbit);
6001     return os;
6002   }
6003   os << str;
6004   free(str);
6005   return os;
6006 }
6007 
6008 // implementations for isl::ast_expr_op_fdiv_q
ast_expr_op_fdiv_q()6009 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q()
6010     : ast_expr_op() {}
6011 
ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q & obj)6012 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(const ast_expr_op_fdiv_q &obj)
6013     : ast_expr_op(obj)
6014 {
6015 }
6016 
ast_expr_op_fdiv_q(__isl_take isl_ast_expr * ptr)6017 ast_expr_op_fdiv_q::ast_expr_op_fdiv_q(__isl_take isl_ast_expr *ptr)
6018     : ast_expr_op(ptr) {}
6019 
6020 ast_expr_op_fdiv_q &ast_expr_op_fdiv_q::operator=(ast_expr_op_fdiv_q obj) {
6021   std::swap(this->ptr, obj.ptr);
6022   return *this;
6023 }
6024 
ctx()6025 isl::checked::ctx ast_expr_op_fdiv_q::ctx() const {
6026   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6027 }
6028 
6029 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_fdiv_q &obj)
6030 {
6031   char *str = isl_ast_expr_to_str(obj.get());
6032   if (!str) {
6033     os.setstate(std::ios_base::badbit);
6034     return os;
6035   }
6036   os << str;
6037   free(str);
6038   return os;
6039 }
6040 
6041 // implementations for isl::ast_expr_op_ge
ast_expr_op_ge()6042 ast_expr_op_ge::ast_expr_op_ge()
6043     : ast_expr_op() {}
6044 
ast_expr_op_ge(const ast_expr_op_ge & obj)6045 ast_expr_op_ge::ast_expr_op_ge(const ast_expr_op_ge &obj)
6046     : ast_expr_op(obj)
6047 {
6048 }
6049 
ast_expr_op_ge(__isl_take isl_ast_expr * ptr)6050 ast_expr_op_ge::ast_expr_op_ge(__isl_take isl_ast_expr *ptr)
6051     : ast_expr_op(ptr) {}
6052 
6053 ast_expr_op_ge &ast_expr_op_ge::operator=(ast_expr_op_ge obj) {
6054   std::swap(this->ptr, obj.ptr);
6055   return *this;
6056 }
6057 
ctx()6058 isl::checked::ctx ast_expr_op_ge::ctx() const {
6059   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6060 }
6061 
6062 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_ge &obj)
6063 {
6064   char *str = isl_ast_expr_to_str(obj.get());
6065   if (!str) {
6066     os.setstate(std::ios_base::badbit);
6067     return os;
6068   }
6069   os << str;
6070   free(str);
6071   return os;
6072 }
6073 
6074 // implementations for isl::ast_expr_op_gt
ast_expr_op_gt()6075 ast_expr_op_gt::ast_expr_op_gt()
6076     : ast_expr_op() {}
6077 
ast_expr_op_gt(const ast_expr_op_gt & obj)6078 ast_expr_op_gt::ast_expr_op_gt(const ast_expr_op_gt &obj)
6079     : ast_expr_op(obj)
6080 {
6081 }
6082 
ast_expr_op_gt(__isl_take isl_ast_expr * ptr)6083 ast_expr_op_gt::ast_expr_op_gt(__isl_take isl_ast_expr *ptr)
6084     : ast_expr_op(ptr) {}
6085 
6086 ast_expr_op_gt &ast_expr_op_gt::operator=(ast_expr_op_gt obj) {
6087   std::swap(this->ptr, obj.ptr);
6088   return *this;
6089 }
6090 
ctx()6091 isl::checked::ctx ast_expr_op_gt::ctx() const {
6092   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6093 }
6094 
6095 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_gt &obj)
6096 {
6097   char *str = isl_ast_expr_to_str(obj.get());
6098   if (!str) {
6099     os.setstate(std::ios_base::badbit);
6100     return os;
6101   }
6102   os << str;
6103   free(str);
6104   return os;
6105 }
6106 
6107 // implementations for isl::ast_expr_op_le
ast_expr_op_le()6108 ast_expr_op_le::ast_expr_op_le()
6109     : ast_expr_op() {}
6110 
ast_expr_op_le(const ast_expr_op_le & obj)6111 ast_expr_op_le::ast_expr_op_le(const ast_expr_op_le &obj)
6112     : ast_expr_op(obj)
6113 {
6114 }
6115 
ast_expr_op_le(__isl_take isl_ast_expr * ptr)6116 ast_expr_op_le::ast_expr_op_le(__isl_take isl_ast_expr *ptr)
6117     : ast_expr_op(ptr) {}
6118 
6119 ast_expr_op_le &ast_expr_op_le::operator=(ast_expr_op_le obj) {
6120   std::swap(this->ptr, obj.ptr);
6121   return *this;
6122 }
6123 
ctx()6124 isl::checked::ctx ast_expr_op_le::ctx() const {
6125   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6126 }
6127 
6128 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_le &obj)
6129 {
6130   char *str = isl_ast_expr_to_str(obj.get());
6131   if (!str) {
6132     os.setstate(std::ios_base::badbit);
6133     return os;
6134   }
6135   os << str;
6136   free(str);
6137   return os;
6138 }
6139 
6140 // implementations for isl::ast_expr_op_lt
ast_expr_op_lt()6141 ast_expr_op_lt::ast_expr_op_lt()
6142     : ast_expr_op() {}
6143 
ast_expr_op_lt(const ast_expr_op_lt & obj)6144 ast_expr_op_lt::ast_expr_op_lt(const ast_expr_op_lt &obj)
6145     : ast_expr_op(obj)
6146 {
6147 }
6148 
ast_expr_op_lt(__isl_take isl_ast_expr * ptr)6149 ast_expr_op_lt::ast_expr_op_lt(__isl_take isl_ast_expr *ptr)
6150     : ast_expr_op(ptr) {}
6151 
6152 ast_expr_op_lt &ast_expr_op_lt::operator=(ast_expr_op_lt obj) {
6153   std::swap(this->ptr, obj.ptr);
6154   return *this;
6155 }
6156 
ctx()6157 isl::checked::ctx ast_expr_op_lt::ctx() const {
6158   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6159 }
6160 
6161 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_lt &obj)
6162 {
6163   char *str = isl_ast_expr_to_str(obj.get());
6164   if (!str) {
6165     os.setstate(std::ios_base::badbit);
6166     return os;
6167   }
6168   os << str;
6169   free(str);
6170   return os;
6171 }
6172 
6173 // implementations for isl::ast_expr_op_max
ast_expr_op_max()6174 ast_expr_op_max::ast_expr_op_max()
6175     : ast_expr_op() {}
6176 
ast_expr_op_max(const ast_expr_op_max & obj)6177 ast_expr_op_max::ast_expr_op_max(const ast_expr_op_max &obj)
6178     : ast_expr_op(obj)
6179 {
6180 }
6181 
ast_expr_op_max(__isl_take isl_ast_expr * ptr)6182 ast_expr_op_max::ast_expr_op_max(__isl_take isl_ast_expr *ptr)
6183     : ast_expr_op(ptr) {}
6184 
6185 ast_expr_op_max &ast_expr_op_max::operator=(ast_expr_op_max obj) {
6186   std::swap(this->ptr, obj.ptr);
6187   return *this;
6188 }
6189 
ctx()6190 isl::checked::ctx ast_expr_op_max::ctx() const {
6191   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6192 }
6193 
6194 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_max &obj)
6195 {
6196   char *str = isl_ast_expr_to_str(obj.get());
6197   if (!str) {
6198     os.setstate(std::ios_base::badbit);
6199     return os;
6200   }
6201   os << str;
6202   free(str);
6203   return os;
6204 }
6205 
6206 // implementations for isl::ast_expr_op_member
ast_expr_op_member()6207 ast_expr_op_member::ast_expr_op_member()
6208     : ast_expr_op() {}
6209 
ast_expr_op_member(const ast_expr_op_member & obj)6210 ast_expr_op_member::ast_expr_op_member(const ast_expr_op_member &obj)
6211     : ast_expr_op(obj)
6212 {
6213 }
6214 
ast_expr_op_member(__isl_take isl_ast_expr * ptr)6215 ast_expr_op_member::ast_expr_op_member(__isl_take isl_ast_expr *ptr)
6216     : ast_expr_op(ptr) {}
6217 
6218 ast_expr_op_member &ast_expr_op_member::operator=(ast_expr_op_member obj) {
6219   std::swap(this->ptr, obj.ptr);
6220   return *this;
6221 }
6222 
ctx()6223 isl::checked::ctx ast_expr_op_member::ctx() const {
6224   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6225 }
6226 
6227 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_member &obj)
6228 {
6229   char *str = isl_ast_expr_to_str(obj.get());
6230   if (!str) {
6231     os.setstate(std::ios_base::badbit);
6232     return os;
6233   }
6234   os << str;
6235   free(str);
6236   return os;
6237 }
6238 
6239 // implementations for isl::ast_expr_op_min
ast_expr_op_min()6240 ast_expr_op_min::ast_expr_op_min()
6241     : ast_expr_op() {}
6242 
ast_expr_op_min(const ast_expr_op_min & obj)6243 ast_expr_op_min::ast_expr_op_min(const ast_expr_op_min &obj)
6244     : ast_expr_op(obj)
6245 {
6246 }
6247 
ast_expr_op_min(__isl_take isl_ast_expr * ptr)6248 ast_expr_op_min::ast_expr_op_min(__isl_take isl_ast_expr *ptr)
6249     : ast_expr_op(ptr) {}
6250 
6251 ast_expr_op_min &ast_expr_op_min::operator=(ast_expr_op_min obj) {
6252   std::swap(this->ptr, obj.ptr);
6253   return *this;
6254 }
6255 
ctx()6256 isl::checked::ctx ast_expr_op_min::ctx() const {
6257   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6258 }
6259 
6260 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_min &obj)
6261 {
6262   char *str = isl_ast_expr_to_str(obj.get());
6263   if (!str) {
6264     os.setstate(std::ios_base::badbit);
6265     return os;
6266   }
6267   os << str;
6268   free(str);
6269   return os;
6270 }
6271 
6272 // implementations for isl::ast_expr_op_minus
ast_expr_op_minus()6273 ast_expr_op_minus::ast_expr_op_minus()
6274     : ast_expr_op() {}
6275 
ast_expr_op_minus(const ast_expr_op_minus & obj)6276 ast_expr_op_minus::ast_expr_op_minus(const ast_expr_op_minus &obj)
6277     : ast_expr_op(obj)
6278 {
6279 }
6280 
ast_expr_op_minus(__isl_take isl_ast_expr * ptr)6281 ast_expr_op_minus::ast_expr_op_minus(__isl_take isl_ast_expr *ptr)
6282     : ast_expr_op(ptr) {}
6283 
6284 ast_expr_op_minus &ast_expr_op_minus::operator=(ast_expr_op_minus obj) {
6285   std::swap(this->ptr, obj.ptr);
6286   return *this;
6287 }
6288 
ctx()6289 isl::checked::ctx ast_expr_op_minus::ctx() const {
6290   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6291 }
6292 
6293 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_minus &obj)
6294 {
6295   char *str = isl_ast_expr_to_str(obj.get());
6296   if (!str) {
6297     os.setstate(std::ios_base::badbit);
6298     return os;
6299   }
6300   os << str;
6301   free(str);
6302   return os;
6303 }
6304 
6305 // implementations for isl::ast_expr_op_mul
ast_expr_op_mul()6306 ast_expr_op_mul::ast_expr_op_mul()
6307     : ast_expr_op() {}
6308 
ast_expr_op_mul(const ast_expr_op_mul & obj)6309 ast_expr_op_mul::ast_expr_op_mul(const ast_expr_op_mul &obj)
6310     : ast_expr_op(obj)
6311 {
6312 }
6313 
ast_expr_op_mul(__isl_take isl_ast_expr * ptr)6314 ast_expr_op_mul::ast_expr_op_mul(__isl_take isl_ast_expr *ptr)
6315     : ast_expr_op(ptr) {}
6316 
6317 ast_expr_op_mul &ast_expr_op_mul::operator=(ast_expr_op_mul obj) {
6318   std::swap(this->ptr, obj.ptr);
6319   return *this;
6320 }
6321 
ctx()6322 isl::checked::ctx ast_expr_op_mul::ctx() const {
6323   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6324 }
6325 
6326 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_mul &obj)
6327 {
6328   char *str = isl_ast_expr_to_str(obj.get());
6329   if (!str) {
6330     os.setstate(std::ios_base::badbit);
6331     return os;
6332   }
6333   os << str;
6334   free(str);
6335   return os;
6336 }
6337 
6338 // implementations for isl::ast_expr_op_or
ast_expr_op_or()6339 ast_expr_op_or::ast_expr_op_or()
6340     : ast_expr_op() {}
6341 
ast_expr_op_or(const ast_expr_op_or & obj)6342 ast_expr_op_or::ast_expr_op_or(const ast_expr_op_or &obj)
6343     : ast_expr_op(obj)
6344 {
6345 }
6346 
ast_expr_op_or(__isl_take isl_ast_expr * ptr)6347 ast_expr_op_or::ast_expr_op_or(__isl_take isl_ast_expr *ptr)
6348     : ast_expr_op(ptr) {}
6349 
6350 ast_expr_op_or &ast_expr_op_or::operator=(ast_expr_op_or obj) {
6351   std::swap(this->ptr, obj.ptr);
6352   return *this;
6353 }
6354 
ctx()6355 isl::checked::ctx ast_expr_op_or::ctx() const {
6356   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6357 }
6358 
6359 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or &obj)
6360 {
6361   char *str = isl_ast_expr_to_str(obj.get());
6362   if (!str) {
6363     os.setstate(std::ios_base::badbit);
6364     return os;
6365   }
6366   os << str;
6367   free(str);
6368   return os;
6369 }
6370 
6371 // implementations for isl::ast_expr_op_or_else
ast_expr_op_or_else()6372 ast_expr_op_or_else::ast_expr_op_or_else()
6373     : ast_expr_op() {}
6374 
ast_expr_op_or_else(const ast_expr_op_or_else & obj)6375 ast_expr_op_or_else::ast_expr_op_or_else(const ast_expr_op_or_else &obj)
6376     : ast_expr_op(obj)
6377 {
6378 }
6379 
ast_expr_op_or_else(__isl_take isl_ast_expr * ptr)6380 ast_expr_op_or_else::ast_expr_op_or_else(__isl_take isl_ast_expr *ptr)
6381     : ast_expr_op(ptr) {}
6382 
6383 ast_expr_op_or_else &ast_expr_op_or_else::operator=(ast_expr_op_or_else obj) {
6384   std::swap(this->ptr, obj.ptr);
6385   return *this;
6386 }
6387 
ctx()6388 isl::checked::ctx ast_expr_op_or_else::ctx() const {
6389   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6390 }
6391 
6392 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_or_else &obj)
6393 {
6394   char *str = isl_ast_expr_to_str(obj.get());
6395   if (!str) {
6396     os.setstate(std::ios_base::badbit);
6397     return os;
6398   }
6399   os << str;
6400   free(str);
6401   return os;
6402 }
6403 
6404 // implementations for isl::ast_expr_op_pdiv_q
ast_expr_op_pdiv_q()6405 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q()
6406     : ast_expr_op() {}
6407 
ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q & obj)6408 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(const ast_expr_op_pdiv_q &obj)
6409     : ast_expr_op(obj)
6410 {
6411 }
6412 
ast_expr_op_pdiv_q(__isl_take isl_ast_expr * ptr)6413 ast_expr_op_pdiv_q::ast_expr_op_pdiv_q(__isl_take isl_ast_expr *ptr)
6414     : ast_expr_op(ptr) {}
6415 
6416 ast_expr_op_pdiv_q &ast_expr_op_pdiv_q::operator=(ast_expr_op_pdiv_q obj) {
6417   std::swap(this->ptr, obj.ptr);
6418   return *this;
6419 }
6420 
ctx()6421 isl::checked::ctx ast_expr_op_pdiv_q::ctx() const {
6422   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6423 }
6424 
6425 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_q &obj)
6426 {
6427   char *str = isl_ast_expr_to_str(obj.get());
6428   if (!str) {
6429     os.setstate(std::ios_base::badbit);
6430     return os;
6431   }
6432   os << str;
6433   free(str);
6434   return os;
6435 }
6436 
6437 // implementations for isl::ast_expr_op_pdiv_r
ast_expr_op_pdiv_r()6438 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r()
6439     : ast_expr_op() {}
6440 
ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r & obj)6441 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(const ast_expr_op_pdiv_r &obj)
6442     : ast_expr_op(obj)
6443 {
6444 }
6445 
ast_expr_op_pdiv_r(__isl_take isl_ast_expr * ptr)6446 ast_expr_op_pdiv_r::ast_expr_op_pdiv_r(__isl_take isl_ast_expr *ptr)
6447     : ast_expr_op(ptr) {}
6448 
6449 ast_expr_op_pdiv_r &ast_expr_op_pdiv_r::operator=(ast_expr_op_pdiv_r obj) {
6450   std::swap(this->ptr, obj.ptr);
6451   return *this;
6452 }
6453 
ctx()6454 isl::checked::ctx ast_expr_op_pdiv_r::ctx() const {
6455   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6456 }
6457 
6458 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_pdiv_r &obj)
6459 {
6460   char *str = isl_ast_expr_to_str(obj.get());
6461   if (!str) {
6462     os.setstate(std::ios_base::badbit);
6463     return os;
6464   }
6465   os << str;
6466   free(str);
6467   return os;
6468 }
6469 
6470 // implementations for isl::ast_expr_op_select
ast_expr_op_select()6471 ast_expr_op_select::ast_expr_op_select()
6472     : ast_expr_op() {}
6473 
ast_expr_op_select(const ast_expr_op_select & obj)6474 ast_expr_op_select::ast_expr_op_select(const ast_expr_op_select &obj)
6475     : ast_expr_op(obj)
6476 {
6477 }
6478 
ast_expr_op_select(__isl_take isl_ast_expr * ptr)6479 ast_expr_op_select::ast_expr_op_select(__isl_take isl_ast_expr *ptr)
6480     : ast_expr_op(ptr) {}
6481 
6482 ast_expr_op_select &ast_expr_op_select::operator=(ast_expr_op_select obj) {
6483   std::swap(this->ptr, obj.ptr);
6484   return *this;
6485 }
6486 
ctx()6487 isl::checked::ctx ast_expr_op_select::ctx() const {
6488   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6489 }
6490 
6491 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_select &obj)
6492 {
6493   char *str = isl_ast_expr_to_str(obj.get());
6494   if (!str) {
6495     os.setstate(std::ios_base::badbit);
6496     return os;
6497   }
6498   os << str;
6499   free(str);
6500   return os;
6501 }
6502 
6503 // implementations for isl::ast_expr_op_sub
ast_expr_op_sub()6504 ast_expr_op_sub::ast_expr_op_sub()
6505     : ast_expr_op() {}
6506 
ast_expr_op_sub(const ast_expr_op_sub & obj)6507 ast_expr_op_sub::ast_expr_op_sub(const ast_expr_op_sub &obj)
6508     : ast_expr_op(obj)
6509 {
6510 }
6511 
ast_expr_op_sub(__isl_take isl_ast_expr * ptr)6512 ast_expr_op_sub::ast_expr_op_sub(__isl_take isl_ast_expr *ptr)
6513     : ast_expr_op(ptr) {}
6514 
6515 ast_expr_op_sub &ast_expr_op_sub::operator=(ast_expr_op_sub obj) {
6516   std::swap(this->ptr, obj.ptr);
6517   return *this;
6518 }
6519 
ctx()6520 isl::checked::ctx ast_expr_op_sub::ctx() const {
6521   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6522 }
6523 
6524 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_sub &obj)
6525 {
6526   char *str = isl_ast_expr_to_str(obj.get());
6527   if (!str) {
6528     os.setstate(std::ios_base::badbit);
6529     return os;
6530   }
6531   os << str;
6532   free(str);
6533   return os;
6534 }
6535 
6536 // implementations for isl::ast_expr_op_zdiv_r
ast_expr_op_zdiv_r()6537 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r()
6538     : ast_expr_op() {}
6539 
ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r & obj)6540 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(const ast_expr_op_zdiv_r &obj)
6541     : ast_expr_op(obj)
6542 {
6543 }
6544 
ast_expr_op_zdiv_r(__isl_take isl_ast_expr * ptr)6545 ast_expr_op_zdiv_r::ast_expr_op_zdiv_r(__isl_take isl_ast_expr *ptr)
6546     : ast_expr_op(ptr) {}
6547 
6548 ast_expr_op_zdiv_r &ast_expr_op_zdiv_r::operator=(ast_expr_op_zdiv_r obj) {
6549   std::swap(this->ptr, obj.ptr);
6550   return *this;
6551 }
6552 
ctx()6553 isl::checked::ctx ast_expr_op_zdiv_r::ctx() const {
6554   return isl::checked::ctx(isl_ast_expr_get_ctx(ptr));
6555 }
6556 
6557 inline std::ostream &operator<<(std::ostream &os, const ast_expr_op_zdiv_r &obj)
6558 {
6559   char *str = isl_ast_expr_to_str(obj.get());
6560   if (!str) {
6561     os.setstate(std::ios_base::badbit);
6562     return os;
6563   }
6564   os << str;
6565   free(str);
6566   return os;
6567 }
6568 
6569 // implementations for isl::ast_node
manage(__isl_take isl_ast_node * ptr)6570 ast_node manage(__isl_take isl_ast_node *ptr) {
6571   return ast_node(ptr);
6572 }
manage_copy(__isl_keep isl_ast_node * ptr)6573 ast_node manage_copy(__isl_keep isl_ast_node *ptr) {
6574   ptr = isl_ast_node_copy(ptr);
6575   return ast_node(ptr);
6576 }
6577 
ast_node()6578 ast_node::ast_node()
6579     : ptr(nullptr) {}
6580 
ast_node(const ast_node & obj)6581 ast_node::ast_node(const ast_node &obj)
6582     : ptr(nullptr)
6583 {
6584   ptr = obj.copy();
6585 }
6586 
ast_node(__isl_take isl_ast_node * ptr)6587 ast_node::ast_node(__isl_take isl_ast_node *ptr)
6588     : ptr(ptr) {}
6589 
6590 ast_node &ast_node::operator=(ast_node obj) {
6591   std::swap(this->ptr, obj.ptr);
6592   return *this;
6593 }
6594 
~ast_node()6595 ast_node::~ast_node() {
6596   if (ptr)
6597     isl_ast_node_free(ptr);
6598 }
6599 
copy()6600 __isl_give isl_ast_node *ast_node::copy() const & {
6601   return isl_ast_node_copy(ptr);
6602 }
6603 
get()6604 __isl_keep isl_ast_node *ast_node::get() const {
6605   return ptr;
6606 }
6607 
release()6608 __isl_give isl_ast_node *ast_node::release() {
6609   isl_ast_node *tmp = ptr;
6610   ptr = nullptr;
6611   return tmp;
6612 }
6613 
is_null()6614 bool ast_node::is_null() const {
6615   return ptr == nullptr;
6616 }
6617 
6618 template <typename T, typename>
isa_type(T subtype)6619 boolean ast_node::isa_type(T subtype) const
6620 {
6621   if (is_null())
6622     return boolean();
6623   return isl_ast_node_get_type(get()) == subtype;
6624 }
6625 template <class T>
isa()6626 boolean ast_node::isa() const
6627 {
6628   return isa_type<decltype(T::type)>(T::type);
6629 }
6630 template <class T>
as()6631 T ast_node::as() const
6632 {
6633  if (isa<T>().is_false())
6634     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
6635   return T(copy());
6636 }
6637 
ctx()6638 isl::checked::ctx ast_node::ctx() const {
6639   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6640 }
6641 
to_C_str()6642 std::string ast_node::to_C_str() const
6643 {
6644   auto res = isl_ast_node_to_C_str(get());
6645   std::string tmp(res);
6646   free(res);
6647   return tmp;
6648 }
6649 
to_list()6650 isl::checked::ast_node_list ast_node::to_list() const
6651 {
6652   auto res = isl_ast_node_to_list(copy());
6653   return manage(res);
6654 }
6655 
6656 inline std::ostream &operator<<(std::ostream &os, const ast_node &obj)
6657 {
6658   char *str = isl_ast_node_to_str(obj.get());
6659   if (!str) {
6660     os.setstate(std::ios_base::badbit);
6661     return os;
6662   }
6663   os << str;
6664   free(str);
6665   return os;
6666 }
6667 
6668 // implementations for isl::ast_node_block
ast_node_block()6669 ast_node_block::ast_node_block()
6670     : ast_node() {}
6671 
ast_node_block(const ast_node_block & obj)6672 ast_node_block::ast_node_block(const ast_node_block &obj)
6673     : ast_node(obj)
6674 {
6675 }
6676 
ast_node_block(__isl_take isl_ast_node * ptr)6677 ast_node_block::ast_node_block(__isl_take isl_ast_node *ptr)
6678     : ast_node(ptr) {}
6679 
6680 ast_node_block &ast_node_block::operator=(ast_node_block obj) {
6681   std::swap(this->ptr, obj.ptr);
6682   return *this;
6683 }
6684 
ctx()6685 isl::checked::ctx ast_node_block::ctx() const {
6686   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6687 }
6688 
children()6689 isl::checked::ast_node_list ast_node_block::children() const
6690 {
6691   auto res = isl_ast_node_block_get_children(get());
6692   return manage(res);
6693 }
6694 
get_children()6695 isl::checked::ast_node_list ast_node_block::get_children() const
6696 {
6697   return children();
6698 }
6699 
6700 inline std::ostream &operator<<(std::ostream &os, const ast_node_block &obj)
6701 {
6702   char *str = isl_ast_node_to_str(obj.get());
6703   if (!str) {
6704     os.setstate(std::ios_base::badbit);
6705     return os;
6706   }
6707   os << str;
6708   free(str);
6709   return os;
6710 }
6711 
6712 // implementations for isl::ast_node_for
ast_node_for()6713 ast_node_for::ast_node_for()
6714     : ast_node() {}
6715 
ast_node_for(const ast_node_for & obj)6716 ast_node_for::ast_node_for(const ast_node_for &obj)
6717     : ast_node(obj)
6718 {
6719 }
6720 
ast_node_for(__isl_take isl_ast_node * ptr)6721 ast_node_for::ast_node_for(__isl_take isl_ast_node *ptr)
6722     : ast_node(ptr) {}
6723 
6724 ast_node_for &ast_node_for::operator=(ast_node_for obj) {
6725   std::swap(this->ptr, obj.ptr);
6726   return *this;
6727 }
6728 
ctx()6729 isl::checked::ctx ast_node_for::ctx() const {
6730   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6731 }
6732 
body()6733 isl::checked::ast_node ast_node_for::body() const
6734 {
6735   auto res = isl_ast_node_for_get_body(get());
6736   return manage(res);
6737 }
6738 
get_body()6739 isl::checked::ast_node ast_node_for::get_body() const
6740 {
6741   return body();
6742 }
6743 
cond()6744 isl::checked::ast_expr ast_node_for::cond() const
6745 {
6746   auto res = isl_ast_node_for_get_cond(get());
6747   return manage(res);
6748 }
6749 
get_cond()6750 isl::checked::ast_expr ast_node_for::get_cond() const
6751 {
6752   return cond();
6753 }
6754 
inc()6755 isl::checked::ast_expr ast_node_for::inc() const
6756 {
6757   auto res = isl_ast_node_for_get_inc(get());
6758   return manage(res);
6759 }
6760 
get_inc()6761 isl::checked::ast_expr ast_node_for::get_inc() const
6762 {
6763   return inc();
6764 }
6765 
init()6766 isl::checked::ast_expr ast_node_for::init() const
6767 {
6768   auto res = isl_ast_node_for_get_init(get());
6769   return manage(res);
6770 }
6771 
get_init()6772 isl::checked::ast_expr ast_node_for::get_init() const
6773 {
6774   return init();
6775 }
6776 
is_degenerate()6777 boolean ast_node_for::is_degenerate() const
6778 {
6779   auto res = isl_ast_node_for_is_degenerate(get());
6780   return manage(res);
6781 }
6782 
iterator()6783 isl::checked::ast_expr ast_node_for::iterator() const
6784 {
6785   auto res = isl_ast_node_for_get_iterator(get());
6786   return manage(res);
6787 }
6788 
get_iterator()6789 isl::checked::ast_expr ast_node_for::get_iterator() const
6790 {
6791   return iterator();
6792 }
6793 
6794 inline std::ostream &operator<<(std::ostream &os, const ast_node_for &obj)
6795 {
6796   char *str = isl_ast_node_to_str(obj.get());
6797   if (!str) {
6798     os.setstate(std::ios_base::badbit);
6799     return os;
6800   }
6801   os << str;
6802   free(str);
6803   return os;
6804 }
6805 
6806 // implementations for isl::ast_node_if
ast_node_if()6807 ast_node_if::ast_node_if()
6808     : ast_node() {}
6809 
ast_node_if(const ast_node_if & obj)6810 ast_node_if::ast_node_if(const ast_node_if &obj)
6811     : ast_node(obj)
6812 {
6813 }
6814 
ast_node_if(__isl_take isl_ast_node * ptr)6815 ast_node_if::ast_node_if(__isl_take isl_ast_node *ptr)
6816     : ast_node(ptr) {}
6817 
6818 ast_node_if &ast_node_if::operator=(ast_node_if obj) {
6819   std::swap(this->ptr, obj.ptr);
6820   return *this;
6821 }
6822 
ctx()6823 isl::checked::ctx ast_node_if::ctx() const {
6824   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
6825 }
6826 
cond()6827 isl::checked::ast_expr ast_node_if::cond() const
6828 {
6829   auto res = isl_ast_node_if_get_cond(get());
6830   return manage(res);
6831 }
6832 
get_cond()6833 isl::checked::ast_expr ast_node_if::get_cond() const
6834 {
6835   return cond();
6836 }
6837 
else_node()6838 isl::checked::ast_node ast_node_if::else_node() const
6839 {
6840   auto res = isl_ast_node_if_get_else_node(get());
6841   return manage(res);
6842 }
6843 
get_else_node()6844 isl::checked::ast_node ast_node_if::get_else_node() const
6845 {
6846   return else_node();
6847 }
6848 
has_else_node()6849 boolean ast_node_if::has_else_node() const
6850 {
6851   auto res = isl_ast_node_if_has_else_node(get());
6852   return manage(res);
6853 }
6854 
then_node()6855 isl::checked::ast_node ast_node_if::then_node() const
6856 {
6857   auto res = isl_ast_node_if_get_then_node(get());
6858   return manage(res);
6859 }
6860 
get_then_node()6861 isl::checked::ast_node ast_node_if::get_then_node() const
6862 {
6863   return then_node();
6864 }
6865 
6866 inline std::ostream &operator<<(std::ostream &os, const ast_node_if &obj)
6867 {
6868   char *str = isl_ast_node_to_str(obj.get());
6869   if (!str) {
6870     os.setstate(std::ios_base::badbit);
6871     return os;
6872   }
6873   os << str;
6874   free(str);
6875   return os;
6876 }
6877 
6878 // implementations for isl::ast_node_list
manage(__isl_take isl_ast_node_list * ptr)6879 ast_node_list manage(__isl_take isl_ast_node_list *ptr) {
6880   return ast_node_list(ptr);
6881 }
manage_copy(__isl_keep isl_ast_node_list * ptr)6882 ast_node_list manage_copy(__isl_keep isl_ast_node_list *ptr) {
6883   ptr = isl_ast_node_list_copy(ptr);
6884   return ast_node_list(ptr);
6885 }
6886 
ast_node_list()6887 ast_node_list::ast_node_list()
6888     : ptr(nullptr) {}
6889 
ast_node_list(const ast_node_list & obj)6890 ast_node_list::ast_node_list(const ast_node_list &obj)
6891     : ptr(nullptr)
6892 {
6893   ptr = obj.copy();
6894 }
6895 
ast_node_list(__isl_take isl_ast_node_list * ptr)6896 ast_node_list::ast_node_list(__isl_take isl_ast_node_list *ptr)
6897     : ptr(ptr) {}
6898 
ast_node_list(isl::checked::ctx ctx,int n)6899 ast_node_list::ast_node_list(isl::checked::ctx ctx, int n)
6900 {
6901   auto res = isl_ast_node_list_alloc(ctx.release(), n);
6902   ptr = res;
6903 }
6904 
ast_node_list(isl::checked::ast_node el)6905 ast_node_list::ast_node_list(isl::checked::ast_node el)
6906 {
6907   auto res = isl_ast_node_list_from_ast_node(el.release());
6908   ptr = res;
6909 }
6910 
6911 ast_node_list &ast_node_list::operator=(ast_node_list obj) {
6912   std::swap(this->ptr, obj.ptr);
6913   return *this;
6914 }
6915 
~ast_node_list()6916 ast_node_list::~ast_node_list() {
6917   if (ptr)
6918     isl_ast_node_list_free(ptr);
6919 }
6920 
copy()6921 __isl_give isl_ast_node_list *ast_node_list::copy() const & {
6922   return isl_ast_node_list_copy(ptr);
6923 }
6924 
get()6925 __isl_keep isl_ast_node_list *ast_node_list::get() const {
6926   return ptr;
6927 }
6928 
release()6929 __isl_give isl_ast_node_list *ast_node_list::release() {
6930   isl_ast_node_list *tmp = ptr;
6931   ptr = nullptr;
6932   return tmp;
6933 }
6934 
is_null()6935 bool ast_node_list::is_null() const {
6936   return ptr == nullptr;
6937 }
6938 
ctx()6939 isl::checked::ctx ast_node_list::ctx() const {
6940   return isl::checked::ctx(isl_ast_node_list_get_ctx(ptr));
6941 }
6942 
add(isl::checked::ast_node el)6943 isl::checked::ast_node_list ast_node_list::add(isl::checked::ast_node el) const
6944 {
6945   auto res = isl_ast_node_list_add(copy(), el.release());
6946   return manage(res);
6947 }
6948 
at(int index)6949 isl::checked::ast_node ast_node_list::at(int index) const
6950 {
6951   auto res = isl_ast_node_list_get_at(get(), index);
6952   return manage(res);
6953 }
6954 
get_at(int index)6955 isl::checked::ast_node ast_node_list::get_at(int index) const
6956 {
6957   return at(index);
6958 }
6959 
clear()6960 isl::checked::ast_node_list ast_node_list::clear() const
6961 {
6962   auto res = isl_ast_node_list_clear(copy());
6963   return manage(res);
6964 }
6965 
concat(isl::checked::ast_node_list list2)6966 isl::checked::ast_node_list ast_node_list::concat(isl::checked::ast_node_list list2) const
6967 {
6968   auto res = isl_ast_node_list_concat(copy(), list2.release());
6969   return manage(res);
6970 }
6971 
drop(unsigned int first,unsigned int n)6972 isl::checked::ast_node_list ast_node_list::drop(unsigned int first, unsigned int n) const
6973 {
6974   auto res = isl_ast_node_list_drop(copy(), first, n);
6975   return manage(res);
6976 }
6977 
foreach(const std::function<stat (isl::checked::ast_node)> & fn)6978 stat ast_node_list::foreach(const std::function<stat(isl::checked::ast_node)> &fn) const
6979 {
6980   struct fn_data {
6981     std::function<stat(isl::checked::ast_node)> func;
6982   } fn_data = { fn };
6983   auto fn_lambda = [](isl_ast_node *arg_0, void *arg_1) -> isl_stat {
6984     auto *data = static_cast<struct fn_data *>(arg_1);
6985     auto ret = (data->func)(manage(arg_0));
6986     return ret.release();
6987   };
6988   auto res = isl_ast_node_list_foreach(get(), fn_lambda, &fn_data);
6989   return manage(res);
6990 }
6991 
insert(unsigned int pos,isl::checked::ast_node el)6992 isl::checked::ast_node_list ast_node_list::insert(unsigned int pos, isl::checked::ast_node el) const
6993 {
6994   auto res = isl_ast_node_list_insert(copy(), pos, el.release());
6995   return manage(res);
6996 }
6997 
size()6998 class size ast_node_list::size() const
6999 {
7000   auto res = isl_ast_node_list_size(get());
7001   return manage(res);
7002 }
7003 
7004 inline std::ostream &operator<<(std::ostream &os, const ast_node_list &obj)
7005 {
7006   char *str = isl_ast_node_list_to_str(obj.get());
7007   if (!str) {
7008     os.setstate(std::ios_base::badbit);
7009     return os;
7010   }
7011   os << str;
7012   free(str);
7013   return os;
7014 }
7015 
7016 // implementations for isl::ast_node_mark
ast_node_mark()7017 ast_node_mark::ast_node_mark()
7018     : ast_node() {}
7019 
ast_node_mark(const ast_node_mark & obj)7020 ast_node_mark::ast_node_mark(const ast_node_mark &obj)
7021     : ast_node(obj)
7022 {
7023 }
7024 
ast_node_mark(__isl_take isl_ast_node * ptr)7025 ast_node_mark::ast_node_mark(__isl_take isl_ast_node *ptr)
7026     : ast_node(ptr) {}
7027 
7028 ast_node_mark &ast_node_mark::operator=(ast_node_mark obj) {
7029   std::swap(this->ptr, obj.ptr);
7030   return *this;
7031 }
7032 
ctx()7033 isl::checked::ctx ast_node_mark::ctx() const {
7034   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
7035 }
7036 
id()7037 isl::checked::id ast_node_mark::id() const
7038 {
7039   auto res = isl_ast_node_mark_get_id(get());
7040   return manage(res);
7041 }
7042 
get_id()7043 isl::checked::id ast_node_mark::get_id() const
7044 {
7045   return id();
7046 }
7047 
node()7048 isl::checked::ast_node ast_node_mark::node() const
7049 {
7050   auto res = isl_ast_node_mark_get_node(get());
7051   return manage(res);
7052 }
7053 
get_node()7054 isl::checked::ast_node ast_node_mark::get_node() const
7055 {
7056   return node();
7057 }
7058 
7059 inline std::ostream &operator<<(std::ostream &os, const ast_node_mark &obj)
7060 {
7061   char *str = isl_ast_node_to_str(obj.get());
7062   if (!str) {
7063     os.setstate(std::ios_base::badbit);
7064     return os;
7065   }
7066   os << str;
7067   free(str);
7068   return os;
7069 }
7070 
7071 // implementations for isl::ast_node_user
ast_node_user()7072 ast_node_user::ast_node_user()
7073     : ast_node() {}
7074 
ast_node_user(const ast_node_user & obj)7075 ast_node_user::ast_node_user(const ast_node_user &obj)
7076     : ast_node(obj)
7077 {
7078 }
7079 
ast_node_user(__isl_take isl_ast_node * ptr)7080 ast_node_user::ast_node_user(__isl_take isl_ast_node *ptr)
7081     : ast_node(ptr) {}
7082 
7083 ast_node_user &ast_node_user::operator=(ast_node_user obj) {
7084   std::swap(this->ptr, obj.ptr);
7085   return *this;
7086 }
7087 
ctx()7088 isl::checked::ctx ast_node_user::ctx() const {
7089   return isl::checked::ctx(isl_ast_node_get_ctx(ptr));
7090 }
7091 
expr()7092 isl::checked::ast_expr ast_node_user::expr() const
7093 {
7094   auto res = isl_ast_node_user_get_expr(get());
7095   return manage(res);
7096 }
7097 
get_expr()7098 isl::checked::ast_expr ast_node_user::get_expr() const
7099 {
7100   return expr();
7101 }
7102 
7103 inline std::ostream &operator<<(std::ostream &os, const ast_node_user &obj)
7104 {
7105   char *str = isl_ast_node_to_str(obj.get());
7106   if (!str) {
7107     os.setstate(std::ios_base::badbit);
7108     return os;
7109   }
7110   os << str;
7111   free(str);
7112   return os;
7113 }
7114 
7115 // implementations for isl::basic_map
manage(__isl_take isl_basic_map * ptr)7116 basic_map manage(__isl_take isl_basic_map *ptr) {
7117   return basic_map(ptr);
7118 }
manage_copy(__isl_keep isl_basic_map * ptr)7119 basic_map manage_copy(__isl_keep isl_basic_map *ptr) {
7120   ptr = isl_basic_map_copy(ptr);
7121   return basic_map(ptr);
7122 }
7123 
basic_map()7124 basic_map::basic_map()
7125     : ptr(nullptr) {}
7126 
basic_map(const basic_map & obj)7127 basic_map::basic_map(const basic_map &obj)
7128     : ptr(nullptr)
7129 {
7130   ptr = obj.copy();
7131 }
7132 
basic_map(__isl_take isl_basic_map * ptr)7133 basic_map::basic_map(__isl_take isl_basic_map *ptr)
7134     : ptr(ptr) {}
7135 
basic_map(isl::checked::ctx ctx,const std::string & str)7136 basic_map::basic_map(isl::checked::ctx ctx, const std::string &str)
7137 {
7138   auto res = isl_basic_map_read_from_str(ctx.release(), str.c_str());
7139   ptr = res;
7140 }
7141 
7142 basic_map &basic_map::operator=(basic_map obj) {
7143   std::swap(this->ptr, obj.ptr);
7144   return *this;
7145 }
7146 
~basic_map()7147 basic_map::~basic_map() {
7148   if (ptr)
7149     isl_basic_map_free(ptr);
7150 }
7151 
copy()7152 __isl_give isl_basic_map *basic_map::copy() const & {
7153   return isl_basic_map_copy(ptr);
7154 }
7155 
get()7156 __isl_keep isl_basic_map *basic_map::get() const {
7157   return ptr;
7158 }
7159 
release()7160 __isl_give isl_basic_map *basic_map::release() {
7161   isl_basic_map *tmp = ptr;
7162   ptr = nullptr;
7163   return tmp;
7164 }
7165 
is_null()7166 bool basic_map::is_null() const {
7167   return ptr == nullptr;
7168 }
7169 
ctx()7170 isl::checked::ctx basic_map::ctx() const {
7171   return isl::checked::ctx(isl_basic_map_get_ctx(ptr));
7172 }
7173 
affine_hull()7174 isl::checked::basic_map basic_map::affine_hull() const
7175 {
7176   auto res = isl_basic_map_affine_hull(copy());
7177   return manage(res);
7178 }
7179 
apply_domain(isl::checked::basic_map bmap2)7180 isl::checked::basic_map basic_map::apply_domain(isl::checked::basic_map bmap2) const
7181 {
7182   auto res = isl_basic_map_apply_domain(copy(), bmap2.release());
7183   return manage(res);
7184 }
7185 
apply_domain(const isl::checked::map & map2)7186 isl::checked::map basic_map::apply_domain(const isl::checked::map &map2) const
7187 {
7188   return isl::checked::map(*this).apply_domain(map2);
7189 }
7190 
apply_domain(const isl::checked::union_map & umap2)7191 isl::checked::union_map basic_map::apply_domain(const isl::checked::union_map &umap2) const
7192 {
7193   return isl::checked::map(*this).apply_domain(umap2);
7194 }
7195 
apply_range(isl::checked::basic_map bmap2)7196 isl::checked::basic_map basic_map::apply_range(isl::checked::basic_map bmap2) const
7197 {
7198   auto res = isl_basic_map_apply_range(copy(), bmap2.release());
7199   return manage(res);
7200 }
7201 
apply_range(const isl::checked::map & map2)7202 isl::checked::map basic_map::apply_range(const isl::checked::map &map2) const
7203 {
7204   return isl::checked::map(*this).apply_range(map2);
7205 }
7206 
apply_range(const isl::checked::union_map & umap2)7207 isl::checked::union_map basic_map::apply_range(const isl::checked::union_map &umap2) const
7208 {
7209   return isl::checked::map(*this).apply_range(umap2);
7210 }
7211 
as_map()7212 isl::checked::map basic_map::as_map() const
7213 {
7214   return isl::checked::map(*this).as_map();
7215 }
7216 
as_multi_union_pw_aff()7217 isl::checked::multi_union_pw_aff basic_map::as_multi_union_pw_aff() const
7218 {
7219   return isl::checked::map(*this).as_multi_union_pw_aff();
7220 }
7221 
as_pw_multi_aff()7222 isl::checked::pw_multi_aff basic_map::as_pw_multi_aff() const
7223 {
7224   return isl::checked::map(*this).as_pw_multi_aff();
7225 }
7226 
as_union_pw_multi_aff()7227 isl::checked::union_pw_multi_aff basic_map::as_union_pw_multi_aff() const
7228 {
7229   return isl::checked::map(*this).as_union_pw_multi_aff();
7230 }
7231 
bind_domain(const isl::checked::multi_id & tuple)7232 isl::checked::set basic_map::bind_domain(const isl::checked::multi_id &tuple) const
7233 {
7234   return isl::checked::map(*this).bind_domain(tuple);
7235 }
7236 
bind_range(const isl::checked::multi_id & tuple)7237 isl::checked::set basic_map::bind_range(const isl::checked::multi_id &tuple) const
7238 {
7239   return isl::checked::map(*this).bind_range(tuple);
7240 }
7241 
coalesce()7242 isl::checked::map basic_map::coalesce() const
7243 {
7244   return isl::checked::map(*this).coalesce();
7245 }
7246 
complement()7247 isl::checked::map basic_map::complement() const
7248 {
7249   return isl::checked::map(*this).complement();
7250 }
7251 
compute_divs()7252 isl::checked::union_map basic_map::compute_divs() const
7253 {
7254   return isl::checked::map(*this).compute_divs();
7255 }
7256 
curry()7257 isl::checked::map basic_map::curry() const
7258 {
7259   return isl::checked::map(*this).curry();
7260 }
7261 
deltas()7262 isl::checked::basic_set basic_map::deltas() const
7263 {
7264   auto res = isl_basic_map_deltas(copy());
7265   return manage(res);
7266 }
7267 
detect_equalities()7268 isl::checked::basic_map basic_map::detect_equalities() const
7269 {
7270   auto res = isl_basic_map_detect_equalities(copy());
7271   return manage(res);
7272 }
7273 
domain()7274 isl::checked::set basic_map::domain() const
7275 {
7276   return isl::checked::map(*this).domain();
7277 }
7278 
domain_factor_domain()7279 isl::checked::map basic_map::domain_factor_domain() const
7280 {
7281   return isl::checked::map(*this).domain_factor_domain();
7282 }
7283 
domain_factor_range()7284 isl::checked::map basic_map::domain_factor_range() const
7285 {
7286   return isl::checked::map(*this).domain_factor_range();
7287 }
7288 
domain_map()7289 isl::checked::union_map basic_map::domain_map() const
7290 {
7291   return isl::checked::map(*this).domain_map();
7292 }
7293 
domain_map_union_pw_multi_aff()7294 isl::checked::union_pw_multi_aff basic_map::domain_map_union_pw_multi_aff() const
7295 {
7296   return isl::checked::map(*this).domain_map_union_pw_multi_aff();
7297 }
7298 
domain_product(const isl::checked::map & map2)7299 isl::checked::map basic_map::domain_product(const isl::checked::map &map2) const
7300 {
7301   return isl::checked::map(*this).domain_product(map2);
7302 }
7303 
domain_product(const isl::checked::union_map & umap2)7304 isl::checked::union_map basic_map::domain_product(const isl::checked::union_map &umap2) const
7305 {
7306   return isl::checked::map(*this).domain_product(umap2);
7307 }
7308 
domain_tuple_dim()7309 class size basic_map::domain_tuple_dim() const
7310 {
7311   return isl::checked::map(*this).domain_tuple_dim();
7312 }
7313 
domain_tuple_id()7314 isl::checked::id basic_map::domain_tuple_id() const
7315 {
7316   return isl::checked::map(*this).domain_tuple_id();
7317 }
7318 
eq_at(const isl::checked::multi_pw_aff & mpa)7319 isl::checked::map basic_map::eq_at(const isl::checked::multi_pw_aff &mpa) const
7320 {
7321   return isl::checked::map(*this).eq_at(mpa);
7322 }
7323 
eq_at(const isl::checked::multi_union_pw_aff & mupa)7324 isl::checked::union_map basic_map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
7325 {
7326   return isl::checked::map(*this).eq_at(mupa);
7327 }
7328 
every_map(const std::function<boolean (isl::checked::map)> & test)7329 boolean basic_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
7330 {
7331   return isl::checked::map(*this).every_map(test);
7332 }
7333 
extract_map(const isl::checked::space & space)7334 isl::checked::map basic_map::extract_map(const isl::checked::space &space) const
7335 {
7336   return isl::checked::map(*this).extract_map(space);
7337 }
7338 
factor_domain()7339 isl::checked::map basic_map::factor_domain() const
7340 {
7341   return isl::checked::map(*this).factor_domain();
7342 }
7343 
factor_range()7344 isl::checked::map basic_map::factor_range() const
7345 {
7346   return isl::checked::map(*this).factor_range();
7347 }
7348 
fixed_power(const isl::checked::val & exp)7349 isl::checked::union_map basic_map::fixed_power(const isl::checked::val &exp) const
7350 {
7351   return isl::checked::map(*this).fixed_power(exp);
7352 }
7353 
fixed_power(long exp)7354 isl::checked::union_map basic_map::fixed_power(long exp) const
7355 {
7356   return this->fixed_power(isl::checked::val(ctx(), exp));
7357 }
7358 
flatten()7359 isl::checked::basic_map basic_map::flatten() const
7360 {
7361   auto res = isl_basic_map_flatten(copy());
7362   return manage(res);
7363 }
7364 
flatten_domain()7365 isl::checked::basic_map basic_map::flatten_domain() const
7366 {
7367   auto res = isl_basic_map_flatten_domain(copy());
7368   return manage(res);
7369 }
7370 
flatten_range()7371 isl::checked::basic_map basic_map::flatten_range() const
7372 {
7373   auto res = isl_basic_map_flatten_range(copy());
7374   return manage(res);
7375 }
7376 
foreach_basic_map(const std::function<stat (isl::checked::basic_map)> & fn)7377 stat basic_map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
7378 {
7379   return isl::checked::map(*this).foreach_basic_map(fn);
7380 }
7381 
foreach_map(const std::function<stat (isl::checked::map)> & fn)7382 stat basic_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
7383 {
7384   return isl::checked::map(*this).foreach_map(fn);
7385 }
7386 
gist(isl::checked::basic_map context)7387 isl::checked::basic_map basic_map::gist(isl::checked::basic_map context) const
7388 {
7389   auto res = isl_basic_map_gist(copy(), context.release());
7390   return manage(res);
7391 }
7392 
gist(const isl::checked::map & context)7393 isl::checked::map basic_map::gist(const isl::checked::map &context) const
7394 {
7395   return isl::checked::map(*this).gist(context);
7396 }
7397 
gist(const isl::checked::union_map & context)7398 isl::checked::union_map basic_map::gist(const isl::checked::union_map &context) const
7399 {
7400   return isl::checked::map(*this).gist(context);
7401 }
7402 
gist_domain(const isl::checked::set & context)7403 isl::checked::map basic_map::gist_domain(const isl::checked::set &context) const
7404 {
7405   return isl::checked::map(*this).gist_domain(context);
7406 }
7407 
gist_domain(const isl::checked::union_set & uset)7408 isl::checked::union_map basic_map::gist_domain(const isl::checked::union_set &uset) const
7409 {
7410   return isl::checked::map(*this).gist_domain(uset);
7411 }
7412 
gist_params(const isl::checked::set & set)7413 isl::checked::union_map basic_map::gist_params(const isl::checked::set &set) const
7414 {
7415   return isl::checked::map(*this).gist_params(set);
7416 }
7417 
gist_range(const isl::checked::union_set & uset)7418 isl::checked::union_map basic_map::gist_range(const isl::checked::union_set &uset) const
7419 {
7420   return isl::checked::map(*this).gist_range(uset);
7421 }
7422 
has_domain_tuple_id()7423 boolean basic_map::has_domain_tuple_id() const
7424 {
7425   return isl::checked::map(*this).has_domain_tuple_id();
7426 }
7427 
has_range_tuple_id()7428 boolean basic_map::has_range_tuple_id() const
7429 {
7430   return isl::checked::map(*this).has_range_tuple_id();
7431 }
7432 
intersect(isl::checked::basic_map bmap2)7433 isl::checked::basic_map basic_map::intersect(isl::checked::basic_map bmap2) const
7434 {
7435   auto res = isl_basic_map_intersect(copy(), bmap2.release());
7436   return manage(res);
7437 }
7438 
intersect(const isl::checked::map & map2)7439 isl::checked::map basic_map::intersect(const isl::checked::map &map2) const
7440 {
7441   return isl::checked::map(*this).intersect(map2);
7442 }
7443 
intersect(const isl::checked::union_map & umap2)7444 isl::checked::union_map basic_map::intersect(const isl::checked::union_map &umap2) const
7445 {
7446   return isl::checked::map(*this).intersect(umap2);
7447 }
7448 
intersect_domain(isl::checked::basic_set bset)7449 isl::checked::basic_map basic_map::intersect_domain(isl::checked::basic_set bset) const
7450 {
7451   auto res = isl_basic_map_intersect_domain(copy(), bset.release());
7452   return manage(res);
7453 }
7454 
intersect_domain(const isl::checked::set & set)7455 isl::checked::map basic_map::intersect_domain(const isl::checked::set &set) const
7456 {
7457   return isl::checked::map(*this).intersect_domain(set);
7458 }
7459 
intersect_domain(const isl::checked::space & space)7460 isl::checked::union_map basic_map::intersect_domain(const isl::checked::space &space) const
7461 {
7462   return isl::checked::map(*this).intersect_domain(space);
7463 }
7464 
intersect_domain(const isl::checked::union_set & uset)7465 isl::checked::union_map basic_map::intersect_domain(const isl::checked::union_set &uset) const
7466 {
7467   return isl::checked::map(*this).intersect_domain(uset);
7468 }
7469 
intersect_domain(const isl::checked::point & bset)7470 isl::checked::basic_map basic_map::intersect_domain(const isl::checked::point &bset) const
7471 {
7472   return this->intersect_domain(isl::checked::basic_set(bset));
7473 }
7474 
intersect_domain_factor_domain(const isl::checked::map & factor)7475 isl::checked::map basic_map::intersect_domain_factor_domain(const isl::checked::map &factor) const
7476 {
7477   return isl::checked::map(*this).intersect_domain_factor_domain(factor);
7478 }
7479 
intersect_domain_factor_domain(const isl::checked::union_map & factor)7480 isl::checked::union_map basic_map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
7481 {
7482   return isl::checked::map(*this).intersect_domain_factor_domain(factor);
7483 }
7484 
intersect_domain_factor_range(const isl::checked::map & factor)7485 isl::checked::map basic_map::intersect_domain_factor_range(const isl::checked::map &factor) const
7486 {
7487   return isl::checked::map(*this).intersect_domain_factor_range(factor);
7488 }
7489 
intersect_domain_factor_range(const isl::checked::union_map & factor)7490 isl::checked::union_map basic_map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
7491 {
7492   return isl::checked::map(*this).intersect_domain_factor_range(factor);
7493 }
7494 
intersect_params(const isl::checked::set & params)7495 isl::checked::map basic_map::intersect_params(const isl::checked::set &params) const
7496 {
7497   return isl::checked::map(*this).intersect_params(params);
7498 }
7499 
intersect_range(isl::checked::basic_set bset)7500 isl::checked::basic_map basic_map::intersect_range(isl::checked::basic_set bset) const
7501 {
7502   auto res = isl_basic_map_intersect_range(copy(), bset.release());
7503   return manage(res);
7504 }
7505 
intersect_range(const isl::checked::set & set)7506 isl::checked::map basic_map::intersect_range(const isl::checked::set &set) const
7507 {
7508   return isl::checked::map(*this).intersect_range(set);
7509 }
7510 
intersect_range(const isl::checked::space & space)7511 isl::checked::union_map basic_map::intersect_range(const isl::checked::space &space) const
7512 {
7513   return isl::checked::map(*this).intersect_range(space);
7514 }
7515 
intersect_range(const isl::checked::union_set & uset)7516 isl::checked::union_map basic_map::intersect_range(const isl::checked::union_set &uset) const
7517 {
7518   return isl::checked::map(*this).intersect_range(uset);
7519 }
7520 
intersect_range(const isl::checked::point & bset)7521 isl::checked::basic_map basic_map::intersect_range(const isl::checked::point &bset) const
7522 {
7523   return this->intersect_range(isl::checked::basic_set(bset));
7524 }
7525 
intersect_range_factor_domain(const isl::checked::map & factor)7526 isl::checked::map basic_map::intersect_range_factor_domain(const isl::checked::map &factor) const
7527 {
7528   return isl::checked::map(*this).intersect_range_factor_domain(factor);
7529 }
7530 
intersect_range_factor_domain(const isl::checked::union_map & factor)7531 isl::checked::union_map basic_map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
7532 {
7533   return isl::checked::map(*this).intersect_range_factor_domain(factor);
7534 }
7535 
intersect_range_factor_range(const isl::checked::map & factor)7536 isl::checked::map basic_map::intersect_range_factor_range(const isl::checked::map &factor) const
7537 {
7538   return isl::checked::map(*this).intersect_range_factor_range(factor);
7539 }
7540 
intersect_range_factor_range(const isl::checked::union_map & factor)7541 isl::checked::union_map basic_map::intersect_range_factor_range(const isl::checked::union_map &factor) const
7542 {
7543   return isl::checked::map(*this).intersect_range_factor_range(factor);
7544 }
7545 
is_bijective()7546 boolean basic_map::is_bijective() const
7547 {
7548   return isl::checked::map(*this).is_bijective();
7549 }
7550 
is_disjoint(const isl::checked::map & map2)7551 boolean basic_map::is_disjoint(const isl::checked::map &map2) const
7552 {
7553   return isl::checked::map(*this).is_disjoint(map2);
7554 }
7555 
is_disjoint(const isl::checked::union_map & umap2)7556 boolean basic_map::is_disjoint(const isl::checked::union_map &umap2) const
7557 {
7558   return isl::checked::map(*this).is_disjoint(umap2);
7559 }
7560 
is_empty()7561 boolean basic_map::is_empty() const
7562 {
7563   auto res = isl_basic_map_is_empty(get());
7564   return manage(res);
7565 }
7566 
is_equal(const isl::checked::basic_map & bmap2)7567 boolean basic_map::is_equal(const isl::checked::basic_map &bmap2) const
7568 {
7569   auto res = isl_basic_map_is_equal(get(), bmap2.get());
7570   return manage(res);
7571 }
7572 
is_equal(const isl::checked::map & map2)7573 boolean basic_map::is_equal(const isl::checked::map &map2) const
7574 {
7575   return isl::checked::map(*this).is_equal(map2);
7576 }
7577 
is_equal(const isl::checked::union_map & umap2)7578 boolean basic_map::is_equal(const isl::checked::union_map &umap2) const
7579 {
7580   return isl::checked::map(*this).is_equal(umap2);
7581 }
7582 
is_injective()7583 boolean basic_map::is_injective() const
7584 {
7585   return isl::checked::map(*this).is_injective();
7586 }
7587 
is_single_valued()7588 boolean basic_map::is_single_valued() const
7589 {
7590   return isl::checked::map(*this).is_single_valued();
7591 }
7592 
is_strict_subset(const isl::checked::map & map2)7593 boolean basic_map::is_strict_subset(const isl::checked::map &map2) const
7594 {
7595   return isl::checked::map(*this).is_strict_subset(map2);
7596 }
7597 
is_strict_subset(const isl::checked::union_map & umap2)7598 boolean basic_map::is_strict_subset(const isl::checked::union_map &umap2) const
7599 {
7600   return isl::checked::map(*this).is_strict_subset(umap2);
7601 }
7602 
is_subset(const isl::checked::basic_map & bmap2)7603 boolean basic_map::is_subset(const isl::checked::basic_map &bmap2) const
7604 {
7605   auto res = isl_basic_map_is_subset(get(), bmap2.get());
7606   return manage(res);
7607 }
7608 
is_subset(const isl::checked::map & map2)7609 boolean basic_map::is_subset(const isl::checked::map &map2) const
7610 {
7611   return isl::checked::map(*this).is_subset(map2);
7612 }
7613 
is_subset(const isl::checked::union_map & umap2)7614 boolean basic_map::is_subset(const isl::checked::union_map &umap2) const
7615 {
7616   return isl::checked::map(*this).is_subset(umap2);
7617 }
7618 
isa_map()7619 boolean basic_map::isa_map() const
7620 {
7621   return isl::checked::map(*this).isa_map();
7622 }
7623 
lex_ge_at(const isl::checked::multi_pw_aff & mpa)7624 isl::checked::map basic_map::lex_ge_at(const isl::checked::multi_pw_aff &mpa) const
7625 {
7626   return isl::checked::map(*this).lex_ge_at(mpa);
7627 }
7628 
lex_gt_at(const isl::checked::multi_pw_aff & mpa)7629 isl::checked::map basic_map::lex_gt_at(const isl::checked::multi_pw_aff &mpa) const
7630 {
7631   return isl::checked::map(*this).lex_gt_at(mpa);
7632 }
7633 
lex_le_at(const isl::checked::multi_pw_aff & mpa)7634 isl::checked::map basic_map::lex_le_at(const isl::checked::multi_pw_aff &mpa) const
7635 {
7636   return isl::checked::map(*this).lex_le_at(mpa);
7637 }
7638 
lex_lt_at(const isl::checked::multi_pw_aff & mpa)7639 isl::checked::map basic_map::lex_lt_at(const isl::checked::multi_pw_aff &mpa) const
7640 {
7641   return isl::checked::map(*this).lex_lt_at(mpa);
7642 }
7643 
lexmax()7644 isl::checked::map basic_map::lexmax() const
7645 {
7646   auto res = isl_basic_map_lexmax(copy());
7647   return manage(res);
7648 }
7649 
lexmax_pw_multi_aff()7650 isl::checked::pw_multi_aff basic_map::lexmax_pw_multi_aff() const
7651 {
7652   return isl::checked::map(*this).lexmax_pw_multi_aff();
7653 }
7654 
lexmin()7655 isl::checked::map basic_map::lexmin() const
7656 {
7657   auto res = isl_basic_map_lexmin(copy());
7658   return manage(res);
7659 }
7660 
lexmin_pw_multi_aff()7661 isl::checked::pw_multi_aff basic_map::lexmin_pw_multi_aff() const
7662 {
7663   return isl::checked::map(*this).lexmin_pw_multi_aff();
7664 }
7665 
lower_bound(const isl::checked::multi_pw_aff & lower)7666 isl::checked::map basic_map::lower_bound(const isl::checked::multi_pw_aff &lower) const
7667 {
7668   return isl::checked::map(*this).lower_bound(lower);
7669 }
7670 
map_list()7671 isl::checked::map_list basic_map::map_list() const
7672 {
7673   return isl::checked::map(*this).map_list();
7674 }
7675 
max_multi_pw_aff()7676 isl::checked::multi_pw_aff basic_map::max_multi_pw_aff() const
7677 {
7678   return isl::checked::map(*this).max_multi_pw_aff();
7679 }
7680 
min_multi_pw_aff()7681 isl::checked::multi_pw_aff basic_map::min_multi_pw_aff() const
7682 {
7683   return isl::checked::map(*this).min_multi_pw_aff();
7684 }
7685 
n_basic_map()7686 class size basic_map::n_basic_map() const
7687 {
7688   return isl::checked::map(*this).n_basic_map();
7689 }
7690 
polyhedral_hull()7691 isl::checked::basic_map basic_map::polyhedral_hull() const
7692 {
7693   return isl::checked::map(*this).polyhedral_hull();
7694 }
7695 
preimage_domain(const isl::checked::multi_aff & ma)7696 isl::checked::map basic_map::preimage_domain(const isl::checked::multi_aff &ma) const
7697 {
7698   return isl::checked::map(*this).preimage_domain(ma);
7699 }
7700 
preimage_domain(const isl::checked::multi_pw_aff & mpa)7701 isl::checked::map basic_map::preimage_domain(const isl::checked::multi_pw_aff &mpa) const
7702 {
7703   return isl::checked::map(*this).preimage_domain(mpa);
7704 }
7705 
preimage_domain(const isl::checked::pw_multi_aff & pma)7706 isl::checked::map basic_map::preimage_domain(const isl::checked::pw_multi_aff &pma) const
7707 {
7708   return isl::checked::map(*this).preimage_domain(pma);
7709 }
7710 
preimage_domain(const isl::checked::union_pw_multi_aff & upma)7711 isl::checked::union_map basic_map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
7712 {
7713   return isl::checked::map(*this).preimage_domain(upma);
7714 }
7715 
preimage_range(const isl::checked::multi_aff & ma)7716 isl::checked::map basic_map::preimage_range(const isl::checked::multi_aff &ma) const
7717 {
7718   return isl::checked::map(*this).preimage_range(ma);
7719 }
7720 
preimage_range(const isl::checked::pw_multi_aff & pma)7721 isl::checked::map basic_map::preimage_range(const isl::checked::pw_multi_aff &pma) const
7722 {
7723   return isl::checked::map(*this).preimage_range(pma);
7724 }
7725 
preimage_range(const isl::checked::union_pw_multi_aff & upma)7726 isl::checked::union_map basic_map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
7727 {
7728   return isl::checked::map(*this).preimage_range(upma);
7729 }
7730 
product(const isl::checked::map & map2)7731 isl::checked::map basic_map::product(const isl::checked::map &map2) const
7732 {
7733   return isl::checked::map(*this).product(map2);
7734 }
7735 
product(const isl::checked::union_map & umap2)7736 isl::checked::union_map basic_map::product(const isl::checked::union_map &umap2) const
7737 {
7738   return isl::checked::map(*this).product(umap2);
7739 }
7740 
project_out_all_params()7741 isl::checked::map basic_map::project_out_all_params() const
7742 {
7743   return isl::checked::map(*this).project_out_all_params();
7744 }
7745 
range()7746 isl::checked::set basic_map::range() const
7747 {
7748   return isl::checked::map(*this).range();
7749 }
7750 
range_factor_domain()7751 isl::checked::map basic_map::range_factor_domain() const
7752 {
7753   return isl::checked::map(*this).range_factor_domain();
7754 }
7755 
range_factor_range()7756 isl::checked::map basic_map::range_factor_range() const
7757 {
7758   return isl::checked::map(*this).range_factor_range();
7759 }
7760 
range_lattice_tile()7761 isl::checked::fixed_box basic_map::range_lattice_tile() const
7762 {
7763   return isl::checked::map(*this).range_lattice_tile();
7764 }
7765 
range_map()7766 isl::checked::union_map basic_map::range_map() const
7767 {
7768   return isl::checked::map(*this).range_map();
7769 }
7770 
range_product(const isl::checked::map & map2)7771 isl::checked::map basic_map::range_product(const isl::checked::map &map2) const
7772 {
7773   return isl::checked::map(*this).range_product(map2);
7774 }
7775 
range_product(const isl::checked::union_map & umap2)7776 isl::checked::union_map basic_map::range_product(const isl::checked::union_map &umap2) const
7777 {
7778   return isl::checked::map(*this).range_product(umap2);
7779 }
7780 
range_reverse()7781 isl::checked::map basic_map::range_reverse() const
7782 {
7783   return isl::checked::map(*this).range_reverse();
7784 }
7785 
range_simple_fixed_box_hull()7786 isl::checked::fixed_box basic_map::range_simple_fixed_box_hull() const
7787 {
7788   return isl::checked::map(*this).range_simple_fixed_box_hull();
7789 }
7790 
range_tuple_dim()7791 class size basic_map::range_tuple_dim() const
7792 {
7793   return isl::checked::map(*this).range_tuple_dim();
7794 }
7795 
range_tuple_id()7796 isl::checked::id basic_map::range_tuple_id() const
7797 {
7798   return isl::checked::map(*this).range_tuple_id();
7799 }
7800 
reverse()7801 isl::checked::basic_map basic_map::reverse() const
7802 {
7803   auto res = isl_basic_map_reverse(copy());
7804   return manage(res);
7805 }
7806 
sample()7807 isl::checked::basic_map basic_map::sample() const
7808 {
7809   auto res = isl_basic_map_sample(copy());
7810   return manage(res);
7811 }
7812 
set_domain_tuple(const isl::checked::id & id)7813 isl::checked::map basic_map::set_domain_tuple(const isl::checked::id &id) const
7814 {
7815   return isl::checked::map(*this).set_domain_tuple(id);
7816 }
7817 
set_domain_tuple(const std::string & id)7818 isl::checked::map basic_map::set_domain_tuple(const std::string &id) const
7819 {
7820   return this->set_domain_tuple(isl::checked::id(ctx(), id));
7821 }
7822 
set_range_tuple(const isl::checked::id & id)7823 isl::checked::map basic_map::set_range_tuple(const isl::checked::id &id) const
7824 {
7825   return isl::checked::map(*this).set_range_tuple(id);
7826 }
7827 
set_range_tuple(const std::string & id)7828 isl::checked::map basic_map::set_range_tuple(const std::string &id) const
7829 {
7830   return this->set_range_tuple(isl::checked::id(ctx(), id));
7831 }
7832 
space()7833 isl::checked::space basic_map::space() const
7834 {
7835   return isl::checked::map(*this).space();
7836 }
7837 
subtract(const isl::checked::map & map2)7838 isl::checked::map basic_map::subtract(const isl::checked::map &map2) const
7839 {
7840   return isl::checked::map(*this).subtract(map2);
7841 }
7842 
subtract(const isl::checked::union_map & umap2)7843 isl::checked::union_map basic_map::subtract(const isl::checked::union_map &umap2) const
7844 {
7845   return isl::checked::map(*this).subtract(umap2);
7846 }
7847 
subtract_domain(const isl::checked::union_set & dom)7848 isl::checked::union_map basic_map::subtract_domain(const isl::checked::union_set &dom) const
7849 {
7850   return isl::checked::map(*this).subtract_domain(dom);
7851 }
7852 
subtract_range(const isl::checked::union_set & dom)7853 isl::checked::union_map basic_map::subtract_range(const isl::checked::union_set &dom) const
7854 {
7855   return isl::checked::map(*this).subtract_range(dom);
7856 }
7857 
to_list()7858 isl::checked::map_list basic_map::to_list() const
7859 {
7860   return isl::checked::map(*this).to_list();
7861 }
7862 
to_union_map()7863 isl::checked::union_map basic_map::to_union_map() const
7864 {
7865   return isl::checked::map(*this).to_union_map();
7866 }
7867 
uncurry()7868 isl::checked::map basic_map::uncurry() const
7869 {
7870   return isl::checked::map(*this).uncurry();
7871 }
7872 
unite(isl::checked::basic_map bmap2)7873 isl::checked::map basic_map::unite(isl::checked::basic_map bmap2) const
7874 {
7875   auto res = isl_basic_map_union(copy(), bmap2.release());
7876   return manage(res);
7877 }
7878 
unite(const isl::checked::map & map2)7879 isl::checked::map basic_map::unite(const isl::checked::map &map2) const
7880 {
7881   return isl::checked::map(*this).unite(map2);
7882 }
7883 
unite(const isl::checked::union_map & umap2)7884 isl::checked::union_map basic_map::unite(const isl::checked::union_map &umap2) const
7885 {
7886   return isl::checked::map(*this).unite(umap2);
7887 }
7888 
unshifted_simple_hull()7889 isl::checked::basic_map basic_map::unshifted_simple_hull() const
7890 {
7891   return isl::checked::map(*this).unshifted_simple_hull();
7892 }
7893 
upper_bound(const isl::checked::multi_pw_aff & upper)7894 isl::checked::map basic_map::upper_bound(const isl::checked::multi_pw_aff &upper) const
7895 {
7896   return isl::checked::map(*this).upper_bound(upper);
7897 }
7898 
wrap()7899 isl::checked::set basic_map::wrap() const
7900 {
7901   return isl::checked::map(*this).wrap();
7902 }
7903 
zip()7904 isl::checked::map basic_map::zip() const
7905 {
7906   return isl::checked::map(*this).zip();
7907 }
7908 
7909 inline std::ostream &operator<<(std::ostream &os, const basic_map &obj)
7910 {
7911   char *str = isl_basic_map_to_str(obj.get());
7912   if (!str) {
7913     os.setstate(std::ios_base::badbit);
7914     return os;
7915   }
7916   os << str;
7917   free(str);
7918   return os;
7919 }
7920 
7921 // implementations for isl::basic_set
manage(__isl_take isl_basic_set * ptr)7922 basic_set manage(__isl_take isl_basic_set *ptr) {
7923   return basic_set(ptr);
7924 }
manage_copy(__isl_keep isl_basic_set * ptr)7925 basic_set manage_copy(__isl_keep isl_basic_set *ptr) {
7926   ptr = isl_basic_set_copy(ptr);
7927   return basic_set(ptr);
7928 }
7929 
basic_set()7930 basic_set::basic_set()
7931     : ptr(nullptr) {}
7932 
basic_set(const basic_set & obj)7933 basic_set::basic_set(const basic_set &obj)
7934     : ptr(nullptr)
7935 {
7936   ptr = obj.copy();
7937 }
7938 
basic_set(__isl_take isl_basic_set * ptr)7939 basic_set::basic_set(__isl_take isl_basic_set *ptr)
7940     : ptr(ptr) {}
7941 
basic_set(isl::checked::point pnt)7942 basic_set::basic_set(isl::checked::point pnt)
7943 {
7944   auto res = isl_basic_set_from_point(pnt.release());
7945   ptr = res;
7946 }
7947 
basic_set(isl::checked::ctx ctx,const std::string & str)7948 basic_set::basic_set(isl::checked::ctx ctx, const std::string &str)
7949 {
7950   auto res = isl_basic_set_read_from_str(ctx.release(), str.c_str());
7951   ptr = res;
7952 }
7953 
7954 basic_set &basic_set::operator=(basic_set obj) {
7955   std::swap(this->ptr, obj.ptr);
7956   return *this;
7957 }
7958 
~basic_set()7959 basic_set::~basic_set() {
7960   if (ptr)
7961     isl_basic_set_free(ptr);
7962 }
7963 
copy()7964 __isl_give isl_basic_set *basic_set::copy() const & {
7965   return isl_basic_set_copy(ptr);
7966 }
7967 
get()7968 __isl_keep isl_basic_set *basic_set::get() const {
7969   return ptr;
7970 }
7971 
release()7972 __isl_give isl_basic_set *basic_set::release() {
7973   isl_basic_set *tmp = ptr;
7974   ptr = nullptr;
7975   return tmp;
7976 }
7977 
is_null()7978 bool basic_set::is_null() const {
7979   return ptr == nullptr;
7980 }
7981 
ctx()7982 isl::checked::ctx basic_set::ctx() const {
7983   return isl::checked::ctx(isl_basic_set_get_ctx(ptr));
7984 }
7985 
affine_hull()7986 isl::checked::basic_set basic_set::affine_hull() const
7987 {
7988   auto res = isl_basic_set_affine_hull(copy());
7989   return manage(res);
7990 }
7991 
apply(isl::checked::basic_map bmap)7992 isl::checked::basic_set basic_set::apply(isl::checked::basic_map bmap) const
7993 {
7994   auto res = isl_basic_set_apply(copy(), bmap.release());
7995   return manage(res);
7996 }
7997 
apply(const isl::checked::map & map)7998 isl::checked::set basic_set::apply(const isl::checked::map &map) const
7999 {
8000   return isl::checked::set(*this).apply(map);
8001 }
8002 
apply(const isl::checked::union_map & umap)8003 isl::checked::union_set basic_set::apply(const isl::checked::union_map &umap) const
8004 {
8005   return isl::checked::set(*this).apply(umap);
8006 }
8007 
as_pw_multi_aff()8008 isl::checked::pw_multi_aff basic_set::as_pw_multi_aff() const
8009 {
8010   return isl::checked::set(*this).as_pw_multi_aff();
8011 }
8012 
as_set()8013 isl::checked::set basic_set::as_set() const
8014 {
8015   return isl::checked::set(*this).as_set();
8016 }
8017 
bind(const isl::checked::multi_id & tuple)8018 isl::checked::set basic_set::bind(const isl::checked::multi_id &tuple) const
8019 {
8020   return isl::checked::set(*this).bind(tuple);
8021 }
8022 
coalesce()8023 isl::checked::set basic_set::coalesce() const
8024 {
8025   return isl::checked::set(*this).coalesce();
8026 }
8027 
complement()8028 isl::checked::set basic_set::complement() const
8029 {
8030   return isl::checked::set(*this).complement();
8031 }
8032 
compute_divs()8033 isl::checked::union_set basic_set::compute_divs() const
8034 {
8035   return isl::checked::set(*this).compute_divs();
8036 }
8037 
detect_equalities()8038 isl::checked::basic_set basic_set::detect_equalities() const
8039 {
8040   auto res = isl_basic_set_detect_equalities(copy());
8041   return manage(res);
8042 }
8043 
dim_max_val(int pos)8044 isl::checked::val basic_set::dim_max_val(int pos) const
8045 {
8046   auto res = isl_basic_set_dim_max_val(copy(), pos);
8047   return manage(res);
8048 }
8049 
dim_min_val(int pos)8050 isl::checked::val basic_set::dim_min_val(int pos) const
8051 {
8052   return isl::checked::set(*this).dim_min_val(pos);
8053 }
8054 
every_set(const std::function<boolean (isl::checked::set)> & test)8055 boolean basic_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
8056 {
8057   return isl::checked::set(*this).every_set(test);
8058 }
8059 
extract_set(const isl::checked::space & space)8060 isl::checked::set basic_set::extract_set(const isl::checked::space &space) const
8061 {
8062   return isl::checked::set(*this).extract_set(space);
8063 }
8064 
flatten()8065 isl::checked::basic_set basic_set::flatten() const
8066 {
8067   auto res = isl_basic_set_flatten(copy());
8068   return manage(res);
8069 }
8070 
foreach_basic_set(const std::function<stat (isl::checked::basic_set)> & fn)8071 stat basic_set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
8072 {
8073   return isl::checked::set(*this).foreach_basic_set(fn);
8074 }
8075 
foreach_point(const std::function<stat (isl::checked::point)> & fn)8076 stat basic_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
8077 {
8078   return isl::checked::set(*this).foreach_point(fn);
8079 }
8080 
foreach_set(const std::function<stat (isl::checked::set)> & fn)8081 stat basic_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
8082 {
8083   return isl::checked::set(*this).foreach_set(fn);
8084 }
8085 
gist(isl::checked::basic_set context)8086 isl::checked::basic_set basic_set::gist(isl::checked::basic_set context) const
8087 {
8088   auto res = isl_basic_set_gist(copy(), context.release());
8089   return manage(res);
8090 }
8091 
gist(const isl::checked::set & context)8092 isl::checked::set basic_set::gist(const isl::checked::set &context) const
8093 {
8094   return isl::checked::set(*this).gist(context);
8095 }
8096 
gist(const isl::checked::union_set & context)8097 isl::checked::union_set basic_set::gist(const isl::checked::union_set &context) const
8098 {
8099   return isl::checked::set(*this).gist(context);
8100 }
8101 
gist(const isl::checked::point & context)8102 isl::checked::basic_set basic_set::gist(const isl::checked::point &context) const
8103 {
8104   return this->gist(isl::checked::basic_set(context));
8105 }
8106 
gist_params(const isl::checked::set & set)8107 isl::checked::union_set basic_set::gist_params(const isl::checked::set &set) const
8108 {
8109   return isl::checked::set(*this).gist_params(set);
8110 }
8111 
identity()8112 isl::checked::map basic_set::identity() const
8113 {
8114   return isl::checked::set(*this).identity();
8115 }
8116 
indicator_function()8117 isl::checked::pw_aff basic_set::indicator_function() const
8118 {
8119   return isl::checked::set(*this).indicator_function();
8120 }
8121 
insert_domain(const isl::checked::space & domain)8122 isl::checked::map basic_set::insert_domain(const isl::checked::space &domain) const
8123 {
8124   return isl::checked::set(*this).insert_domain(domain);
8125 }
8126 
intersect(isl::checked::basic_set bset2)8127 isl::checked::basic_set basic_set::intersect(isl::checked::basic_set bset2) const
8128 {
8129   auto res = isl_basic_set_intersect(copy(), bset2.release());
8130   return manage(res);
8131 }
8132 
intersect(const isl::checked::set & set2)8133 isl::checked::set basic_set::intersect(const isl::checked::set &set2) const
8134 {
8135   return isl::checked::set(*this).intersect(set2);
8136 }
8137 
intersect(const isl::checked::union_set & uset2)8138 isl::checked::union_set basic_set::intersect(const isl::checked::union_set &uset2) const
8139 {
8140   return isl::checked::set(*this).intersect(uset2);
8141 }
8142 
intersect(const isl::checked::point & bset2)8143 isl::checked::basic_set basic_set::intersect(const isl::checked::point &bset2) const
8144 {
8145   return this->intersect(isl::checked::basic_set(bset2));
8146 }
8147 
intersect_params(isl::checked::basic_set bset2)8148 isl::checked::basic_set basic_set::intersect_params(isl::checked::basic_set bset2) const
8149 {
8150   auto res = isl_basic_set_intersect_params(copy(), bset2.release());
8151   return manage(res);
8152 }
8153 
intersect_params(const isl::checked::set & params)8154 isl::checked::set basic_set::intersect_params(const isl::checked::set &params) const
8155 {
8156   return isl::checked::set(*this).intersect_params(params);
8157 }
8158 
intersect_params(const isl::checked::point & bset2)8159 isl::checked::basic_set basic_set::intersect_params(const isl::checked::point &bset2) const
8160 {
8161   return this->intersect_params(isl::checked::basic_set(bset2));
8162 }
8163 
involves_locals()8164 boolean basic_set::involves_locals() const
8165 {
8166   return isl::checked::set(*this).involves_locals();
8167 }
8168 
is_disjoint(const isl::checked::set & set2)8169 boolean basic_set::is_disjoint(const isl::checked::set &set2) const
8170 {
8171   return isl::checked::set(*this).is_disjoint(set2);
8172 }
8173 
is_disjoint(const isl::checked::union_set & uset2)8174 boolean basic_set::is_disjoint(const isl::checked::union_set &uset2) const
8175 {
8176   return isl::checked::set(*this).is_disjoint(uset2);
8177 }
8178 
is_empty()8179 boolean basic_set::is_empty() const
8180 {
8181   auto res = isl_basic_set_is_empty(get());
8182   return manage(res);
8183 }
8184 
is_equal(const isl::checked::basic_set & bset2)8185 boolean basic_set::is_equal(const isl::checked::basic_set &bset2) const
8186 {
8187   auto res = isl_basic_set_is_equal(get(), bset2.get());
8188   return manage(res);
8189 }
8190 
is_equal(const isl::checked::set & set2)8191 boolean basic_set::is_equal(const isl::checked::set &set2) const
8192 {
8193   return isl::checked::set(*this).is_equal(set2);
8194 }
8195 
is_equal(const isl::checked::union_set & uset2)8196 boolean basic_set::is_equal(const isl::checked::union_set &uset2) const
8197 {
8198   return isl::checked::set(*this).is_equal(uset2);
8199 }
8200 
is_equal(const isl::checked::point & bset2)8201 boolean basic_set::is_equal(const isl::checked::point &bset2) const
8202 {
8203   return this->is_equal(isl::checked::basic_set(bset2));
8204 }
8205 
is_singleton()8206 boolean basic_set::is_singleton() const
8207 {
8208   return isl::checked::set(*this).is_singleton();
8209 }
8210 
is_strict_subset(const isl::checked::set & set2)8211 boolean basic_set::is_strict_subset(const isl::checked::set &set2) const
8212 {
8213   return isl::checked::set(*this).is_strict_subset(set2);
8214 }
8215 
is_strict_subset(const isl::checked::union_set & uset2)8216 boolean basic_set::is_strict_subset(const isl::checked::union_set &uset2) const
8217 {
8218   return isl::checked::set(*this).is_strict_subset(uset2);
8219 }
8220 
is_subset(const isl::checked::basic_set & bset2)8221 boolean basic_set::is_subset(const isl::checked::basic_set &bset2) const
8222 {
8223   auto res = isl_basic_set_is_subset(get(), bset2.get());
8224   return manage(res);
8225 }
8226 
is_subset(const isl::checked::set & set2)8227 boolean basic_set::is_subset(const isl::checked::set &set2) const
8228 {
8229   return isl::checked::set(*this).is_subset(set2);
8230 }
8231 
is_subset(const isl::checked::union_set & uset2)8232 boolean basic_set::is_subset(const isl::checked::union_set &uset2) const
8233 {
8234   return isl::checked::set(*this).is_subset(uset2);
8235 }
8236 
is_subset(const isl::checked::point & bset2)8237 boolean basic_set::is_subset(const isl::checked::point &bset2) const
8238 {
8239   return this->is_subset(isl::checked::basic_set(bset2));
8240 }
8241 
is_wrapping()8242 boolean basic_set::is_wrapping() const
8243 {
8244   auto res = isl_basic_set_is_wrapping(get());
8245   return manage(res);
8246 }
8247 
isa_set()8248 boolean basic_set::isa_set() const
8249 {
8250   return isl::checked::set(*this).isa_set();
8251 }
8252 
lexmax()8253 isl::checked::set basic_set::lexmax() const
8254 {
8255   auto res = isl_basic_set_lexmax(copy());
8256   return manage(res);
8257 }
8258 
lexmax_pw_multi_aff()8259 isl::checked::pw_multi_aff basic_set::lexmax_pw_multi_aff() const
8260 {
8261   return isl::checked::set(*this).lexmax_pw_multi_aff();
8262 }
8263 
lexmin()8264 isl::checked::set basic_set::lexmin() const
8265 {
8266   auto res = isl_basic_set_lexmin(copy());
8267   return manage(res);
8268 }
8269 
lexmin_pw_multi_aff()8270 isl::checked::pw_multi_aff basic_set::lexmin_pw_multi_aff() const
8271 {
8272   return isl::checked::set(*this).lexmin_pw_multi_aff();
8273 }
8274 
lower_bound(const isl::checked::multi_pw_aff & lower)8275 isl::checked::set basic_set::lower_bound(const isl::checked::multi_pw_aff &lower) const
8276 {
8277   return isl::checked::set(*this).lower_bound(lower);
8278 }
8279 
lower_bound(const isl::checked::multi_val & lower)8280 isl::checked::set basic_set::lower_bound(const isl::checked::multi_val &lower) const
8281 {
8282   return isl::checked::set(*this).lower_bound(lower);
8283 }
8284 
max_multi_pw_aff()8285 isl::checked::multi_pw_aff basic_set::max_multi_pw_aff() const
8286 {
8287   return isl::checked::set(*this).max_multi_pw_aff();
8288 }
8289 
max_val(const isl::checked::aff & obj)8290 isl::checked::val basic_set::max_val(const isl::checked::aff &obj) const
8291 {
8292   return isl::checked::set(*this).max_val(obj);
8293 }
8294 
min_multi_pw_aff()8295 isl::checked::multi_pw_aff basic_set::min_multi_pw_aff() const
8296 {
8297   return isl::checked::set(*this).min_multi_pw_aff();
8298 }
8299 
min_val(const isl::checked::aff & obj)8300 isl::checked::val basic_set::min_val(const isl::checked::aff &obj) const
8301 {
8302   return isl::checked::set(*this).min_val(obj);
8303 }
8304 
n_basic_set()8305 class size basic_set::n_basic_set() const
8306 {
8307   return isl::checked::set(*this).n_basic_set();
8308 }
8309 
params()8310 isl::checked::basic_set basic_set::params() const
8311 {
8312   auto res = isl_basic_set_params(copy());
8313   return manage(res);
8314 }
8315 
plain_multi_val_if_fixed()8316 isl::checked::multi_val basic_set::plain_multi_val_if_fixed() const
8317 {
8318   return isl::checked::set(*this).plain_multi_val_if_fixed();
8319 }
8320 
polyhedral_hull()8321 isl::checked::basic_set basic_set::polyhedral_hull() const
8322 {
8323   return isl::checked::set(*this).polyhedral_hull();
8324 }
8325 
preimage(const isl::checked::multi_aff & ma)8326 isl::checked::set basic_set::preimage(const isl::checked::multi_aff &ma) const
8327 {
8328   return isl::checked::set(*this).preimage(ma);
8329 }
8330 
preimage(const isl::checked::multi_pw_aff & mpa)8331 isl::checked::set basic_set::preimage(const isl::checked::multi_pw_aff &mpa) const
8332 {
8333   return isl::checked::set(*this).preimage(mpa);
8334 }
8335 
preimage(const isl::checked::pw_multi_aff & pma)8336 isl::checked::set basic_set::preimage(const isl::checked::pw_multi_aff &pma) const
8337 {
8338   return isl::checked::set(*this).preimage(pma);
8339 }
8340 
preimage(const isl::checked::union_pw_multi_aff & upma)8341 isl::checked::union_set basic_set::preimage(const isl::checked::union_pw_multi_aff &upma) const
8342 {
8343   return isl::checked::set(*this).preimage(upma);
8344 }
8345 
product(const isl::checked::set & set2)8346 isl::checked::set basic_set::product(const isl::checked::set &set2) const
8347 {
8348   return isl::checked::set(*this).product(set2);
8349 }
8350 
project_out_all_params()8351 isl::checked::set basic_set::project_out_all_params() const
8352 {
8353   return isl::checked::set(*this).project_out_all_params();
8354 }
8355 
project_out_param(const isl::checked::id & id)8356 isl::checked::set basic_set::project_out_param(const isl::checked::id &id) const
8357 {
8358   return isl::checked::set(*this).project_out_param(id);
8359 }
8360 
project_out_param(const std::string & id)8361 isl::checked::set basic_set::project_out_param(const std::string &id) const
8362 {
8363   return this->project_out_param(isl::checked::id(ctx(), id));
8364 }
8365 
project_out_param(const isl::checked::id_list & list)8366 isl::checked::set basic_set::project_out_param(const isl::checked::id_list &list) const
8367 {
8368   return isl::checked::set(*this).project_out_param(list);
8369 }
8370 
pw_multi_aff_on_domain(const isl::checked::multi_val & mv)8371 isl::checked::pw_multi_aff basic_set::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
8372 {
8373   return isl::checked::set(*this).pw_multi_aff_on_domain(mv);
8374 }
8375 
sample()8376 isl::checked::basic_set basic_set::sample() const
8377 {
8378   auto res = isl_basic_set_sample(copy());
8379   return manage(res);
8380 }
8381 
sample_point()8382 isl::checked::point basic_set::sample_point() const
8383 {
8384   auto res = isl_basic_set_sample_point(copy());
8385   return manage(res);
8386 }
8387 
set_list()8388 isl::checked::set_list basic_set::set_list() const
8389 {
8390   return isl::checked::set(*this).set_list();
8391 }
8392 
simple_fixed_box_hull()8393 isl::checked::fixed_box basic_set::simple_fixed_box_hull() const
8394 {
8395   return isl::checked::set(*this).simple_fixed_box_hull();
8396 }
8397 
space()8398 isl::checked::space basic_set::space() const
8399 {
8400   return isl::checked::set(*this).space();
8401 }
8402 
stride(int pos)8403 isl::checked::val basic_set::stride(int pos) const
8404 {
8405   return isl::checked::set(*this).stride(pos);
8406 }
8407 
subtract(const isl::checked::set & set2)8408 isl::checked::set basic_set::subtract(const isl::checked::set &set2) const
8409 {
8410   return isl::checked::set(*this).subtract(set2);
8411 }
8412 
subtract(const isl::checked::union_set & uset2)8413 isl::checked::union_set basic_set::subtract(const isl::checked::union_set &uset2) const
8414 {
8415   return isl::checked::set(*this).subtract(uset2);
8416 }
8417 
to_list()8418 isl::checked::set_list basic_set::to_list() const
8419 {
8420   return isl::checked::set(*this).to_list();
8421 }
8422 
to_set()8423 isl::checked::set basic_set::to_set() const
8424 {
8425   auto res = isl_basic_set_to_set(copy());
8426   return manage(res);
8427 }
8428 
to_union_set()8429 isl::checked::union_set basic_set::to_union_set() const
8430 {
8431   return isl::checked::set(*this).to_union_set();
8432 }
8433 
translation()8434 isl::checked::map basic_set::translation() const
8435 {
8436   return isl::checked::set(*this).translation();
8437 }
8438 
tuple_dim()8439 class size basic_set::tuple_dim() const
8440 {
8441   return isl::checked::set(*this).tuple_dim();
8442 }
8443 
unbind_params(const isl::checked::multi_id & tuple)8444 isl::checked::set basic_set::unbind_params(const isl::checked::multi_id &tuple) const
8445 {
8446   return isl::checked::set(*this).unbind_params(tuple);
8447 }
8448 
unbind_params_insert_domain(const isl::checked::multi_id & domain)8449 isl::checked::map basic_set::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
8450 {
8451   return isl::checked::set(*this).unbind_params_insert_domain(domain);
8452 }
8453 
unite(isl::checked::basic_set bset2)8454 isl::checked::set basic_set::unite(isl::checked::basic_set bset2) const
8455 {
8456   auto res = isl_basic_set_union(copy(), bset2.release());
8457   return manage(res);
8458 }
8459 
unite(const isl::checked::set & set2)8460 isl::checked::set basic_set::unite(const isl::checked::set &set2) const
8461 {
8462   return isl::checked::set(*this).unite(set2);
8463 }
8464 
unite(const isl::checked::union_set & uset2)8465 isl::checked::union_set basic_set::unite(const isl::checked::union_set &uset2) const
8466 {
8467   return isl::checked::set(*this).unite(uset2);
8468 }
8469 
unite(const isl::checked::point & bset2)8470 isl::checked::set basic_set::unite(const isl::checked::point &bset2) const
8471 {
8472   return this->unite(isl::checked::basic_set(bset2));
8473 }
8474 
unshifted_simple_hull()8475 isl::checked::basic_set basic_set::unshifted_simple_hull() const
8476 {
8477   return isl::checked::set(*this).unshifted_simple_hull();
8478 }
8479 
unwrap()8480 isl::checked::map basic_set::unwrap() const
8481 {
8482   return isl::checked::set(*this).unwrap();
8483 }
8484 
upper_bound(const isl::checked::multi_pw_aff & upper)8485 isl::checked::set basic_set::upper_bound(const isl::checked::multi_pw_aff &upper) const
8486 {
8487   return isl::checked::set(*this).upper_bound(upper);
8488 }
8489 
upper_bound(const isl::checked::multi_val & upper)8490 isl::checked::set basic_set::upper_bound(const isl::checked::multi_val &upper) const
8491 {
8492   return isl::checked::set(*this).upper_bound(upper);
8493 }
8494 
8495 inline std::ostream &operator<<(std::ostream &os, const basic_set &obj)
8496 {
8497   char *str = isl_basic_set_to_str(obj.get());
8498   if (!str) {
8499     os.setstate(std::ios_base::badbit);
8500     return os;
8501   }
8502   os << str;
8503   free(str);
8504   return os;
8505 }
8506 
8507 // implementations for isl::fixed_box
manage(__isl_take isl_fixed_box * ptr)8508 fixed_box manage(__isl_take isl_fixed_box *ptr) {
8509   return fixed_box(ptr);
8510 }
manage_copy(__isl_keep isl_fixed_box * ptr)8511 fixed_box manage_copy(__isl_keep isl_fixed_box *ptr) {
8512   ptr = isl_fixed_box_copy(ptr);
8513   return fixed_box(ptr);
8514 }
8515 
fixed_box()8516 fixed_box::fixed_box()
8517     : ptr(nullptr) {}
8518 
fixed_box(const fixed_box & obj)8519 fixed_box::fixed_box(const fixed_box &obj)
8520     : ptr(nullptr)
8521 {
8522   ptr = obj.copy();
8523 }
8524 
fixed_box(__isl_take isl_fixed_box * ptr)8525 fixed_box::fixed_box(__isl_take isl_fixed_box *ptr)
8526     : ptr(ptr) {}
8527 
8528 fixed_box &fixed_box::operator=(fixed_box obj) {
8529   std::swap(this->ptr, obj.ptr);
8530   return *this;
8531 }
8532 
~fixed_box()8533 fixed_box::~fixed_box() {
8534   if (ptr)
8535     isl_fixed_box_free(ptr);
8536 }
8537 
copy()8538 __isl_give isl_fixed_box *fixed_box::copy() const & {
8539   return isl_fixed_box_copy(ptr);
8540 }
8541 
get()8542 __isl_keep isl_fixed_box *fixed_box::get() const {
8543   return ptr;
8544 }
8545 
release()8546 __isl_give isl_fixed_box *fixed_box::release() {
8547   isl_fixed_box *tmp = ptr;
8548   ptr = nullptr;
8549   return tmp;
8550 }
8551 
is_null()8552 bool fixed_box::is_null() const {
8553   return ptr == nullptr;
8554 }
8555 
ctx()8556 isl::checked::ctx fixed_box::ctx() const {
8557   return isl::checked::ctx(isl_fixed_box_get_ctx(ptr));
8558 }
8559 
is_valid()8560 boolean fixed_box::is_valid() const
8561 {
8562   auto res = isl_fixed_box_is_valid(get());
8563   return manage(res);
8564 }
8565 
offset()8566 isl::checked::multi_aff fixed_box::offset() const
8567 {
8568   auto res = isl_fixed_box_get_offset(get());
8569   return manage(res);
8570 }
8571 
get_offset()8572 isl::checked::multi_aff fixed_box::get_offset() const
8573 {
8574   return offset();
8575 }
8576 
size()8577 isl::checked::multi_val fixed_box::size() const
8578 {
8579   auto res = isl_fixed_box_get_size(get());
8580   return manage(res);
8581 }
8582 
get_size()8583 isl::checked::multi_val fixed_box::get_size() const
8584 {
8585   return size();
8586 }
8587 
space()8588 isl::checked::space fixed_box::space() const
8589 {
8590   auto res = isl_fixed_box_get_space(get());
8591   return manage(res);
8592 }
8593 
get_space()8594 isl::checked::space fixed_box::get_space() const
8595 {
8596   return space();
8597 }
8598 
8599 inline std::ostream &operator<<(std::ostream &os, const fixed_box &obj)
8600 {
8601   char *str = isl_fixed_box_to_str(obj.get());
8602   if (!str) {
8603     os.setstate(std::ios_base::badbit);
8604     return os;
8605   }
8606   os << str;
8607   free(str);
8608   return os;
8609 }
8610 
8611 // implementations for isl::id
manage(__isl_take isl_id * ptr)8612 id manage(__isl_take isl_id *ptr) {
8613   return id(ptr);
8614 }
manage_copy(__isl_keep isl_id * ptr)8615 id manage_copy(__isl_keep isl_id *ptr) {
8616   ptr = isl_id_copy(ptr);
8617   return id(ptr);
8618 }
8619 
id()8620 id::id()
8621     : ptr(nullptr) {}
8622 
id(const id & obj)8623 id::id(const id &obj)
8624     : ptr(nullptr)
8625 {
8626   ptr = obj.copy();
8627 }
8628 
id(__isl_take isl_id * ptr)8629 id::id(__isl_take isl_id *ptr)
8630     : ptr(ptr) {}
8631 
id(isl::checked::ctx ctx,const std::string & str)8632 id::id(isl::checked::ctx ctx, const std::string &str)
8633 {
8634   auto res = isl_id_read_from_str(ctx.release(), str.c_str());
8635   ptr = res;
8636 }
8637 
8638 id &id::operator=(id obj) {
8639   std::swap(this->ptr, obj.ptr);
8640   return *this;
8641 }
8642 
~id()8643 id::~id() {
8644   if (ptr)
8645     isl_id_free(ptr);
8646 }
8647 
copy()8648 __isl_give isl_id *id::copy() const & {
8649   return isl_id_copy(ptr);
8650 }
8651 
get()8652 __isl_keep isl_id *id::get() const {
8653   return ptr;
8654 }
8655 
release()8656 __isl_give isl_id *id::release() {
8657   isl_id *tmp = ptr;
8658   ptr = nullptr;
8659   return tmp;
8660 }
8661 
is_null()8662 bool id::is_null() const {
8663   return ptr == nullptr;
8664 }
8665 
ctx()8666 isl::checked::ctx id::ctx() const {
8667   return isl::checked::ctx(isl_id_get_ctx(ptr));
8668 }
8669 
name()8670 std::string id::name() const
8671 {
8672   auto res = isl_id_get_name(get());
8673   std::string tmp(res);
8674   return tmp;
8675 }
8676 
get_name()8677 std::string id::get_name() const
8678 {
8679   return name();
8680 }
8681 
to_list()8682 isl::checked::id_list id::to_list() const
8683 {
8684   auto res = isl_id_to_list(copy());
8685   return manage(res);
8686 }
8687 
8688 inline std::ostream &operator<<(std::ostream &os, const id &obj)
8689 {
8690   char *str = isl_id_to_str(obj.get());
8691   if (!str) {
8692     os.setstate(std::ios_base::badbit);
8693     return os;
8694   }
8695   os << str;
8696   free(str);
8697   return os;
8698 }
8699 
8700 // implementations for isl::id_list
manage(__isl_take isl_id_list * ptr)8701 id_list manage(__isl_take isl_id_list *ptr) {
8702   return id_list(ptr);
8703 }
manage_copy(__isl_keep isl_id_list * ptr)8704 id_list manage_copy(__isl_keep isl_id_list *ptr) {
8705   ptr = isl_id_list_copy(ptr);
8706   return id_list(ptr);
8707 }
8708 
id_list()8709 id_list::id_list()
8710     : ptr(nullptr) {}
8711 
id_list(const id_list & obj)8712 id_list::id_list(const id_list &obj)
8713     : ptr(nullptr)
8714 {
8715   ptr = obj.copy();
8716 }
8717 
id_list(__isl_take isl_id_list * ptr)8718 id_list::id_list(__isl_take isl_id_list *ptr)
8719     : ptr(ptr) {}
8720 
id_list(isl::checked::ctx ctx,int n)8721 id_list::id_list(isl::checked::ctx ctx, int n)
8722 {
8723   auto res = isl_id_list_alloc(ctx.release(), n);
8724   ptr = res;
8725 }
8726 
id_list(isl::checked::id el)8727 id_list::id_list(isl::checked::id el)
8728 {
8729   auto res = isl_id_list_from_id(el.release());
8730   ptr = res;
8731 }
8732 
id_list(isl::checked::ctx ctx,const std::string & str)8733 id_list::id_list(isl::checked::ctx ctx, const std::string &str)
8734 {
8735   auto res = isl_id_list_read_from_str(ctx.release(), str.c_str());
8736   ptr = res;
8737 }
8738 
8739 id_list &id_list::operator=(id_list obj) {
8740   std::swap(this->ptr, obj.ptr);
8741   return *this;
8742 }
8743 
~id_list()8744 id_list::~id_list() {
8745   if (ptr)
8746     isl_id_list_free(ptr);
8747 }
8748 
copy()8749 __isl_give isl_id_list *id_list::copy() const & {
8750   return isl_id_list_copy(ptr);
8751 }
8752 
get()8753 __isl_keep isl_id_list *id_list::get() const {
8754   return ptr;
8755 }
8756 
release()8757 __isl_give isl_id_list *id_list::release() {
8758   isl_id_list *tmp = ptr;
8759   ptr = nullptr;
8760   return tmp;
8761 }
8762 
is_null()8763 bool id_list::is_null() const {
8764   return ptr == nullptr;
8765 }
8766 
ctx()8767 isl::checked::ctx id_list::ctx() const {
8768   return isl::checked::ctx(isl_id_list_get_ctx(ptr));
8769 }
8770 
add(isl::checked::id el)8771 isl::checked::id_list id_list::add(isl::checked::id el) const
8772 {
8773   auto res = isl_id_list_add(copy(), el.release());
8774   return manage(res);
8775 }
8776 
add(const std::string & el)8777 isl::checked::id_list id_list::add(const std::string &el) const
8778 {
8779   return this->add(isl::checked::id(ctx(), el));
8780 }
8781 
at(int index)8782 isl::checked::id id_list::at(int index) const
8783 {
8784   auto res = isl_id_list_get_at(get(), index);
8785   return manage(res);
8786 }
8787 
get_at(int index)8788 isl::checked::id id_list::get_at(int index) const
8789 {
8790   return at(index);
8791 }
8792 
clear()8793 isl::checked::id_list id_list::clear() const
8794 {
8795   auto res = isl_id_list_clear(copy());
8796   return manage(res);
8797 }
8798 
concat(isl::checked::id_list list2)8799 isl::checked::id_list id_list::concat(isl::checked::id_list list2) const
8800 {
8801   auto res = isl_id_list_concat(copy(), list2.release());
8802   return manage(res);
8803 }
8804 
drop(unsigned int first,unsigned int n)8805 isl::checked::id_list id_list::drop(unsigned int first, unsigned int n) const
8806 {
8807   auto res = isl_id_list_drop(copy(), first, n);
8808   return manage(res);
8809 }
8810 
foreach(const std::function<stat (isl::checked::id)> & fn)8811 stat id_list::foreach(const std::function<stat(isl::checked::id)> &fn) const
8812 {
8813   struct fn_data {
8814     std::function<stat(isl::checked::id)> func;
8815   } fn_data = { fn };
8816   auto fn_lambda = [](isl_id *arg_0, void *arg_1) -> isl_stat {
8817     auto *data = static_cast<struct fn_data *>(arg_1);
8818     auto ret = (data->func)(manage(arg_0));
8819     return ret.release();
8820   };
8821   auto res = isl_id_list_foreach(get(), fn_lambda, &fn_data);
8822   return manage(res);
8823 }
8824 
insert(unsigned int pos,isl::checked::id el)8825 isl::checked::id_list id_list::insert(unsigned int pos, isl::checked::id el) const
8826 {
8827   auto res = isl_id_list_insert(copy(), pos, el.release());
8828   return manage(res);
8829 }
8830 
insert(unsigned int pos,const std::string & el)8831 isl::checked::id_list id_list::insert(unsigned int pos, const std::string &el) const
8832 {
8833   return this->insert(pos, isl::checked::id(ctx(), el));
8834 }
8835 
size()8836 class size id_list::size() const
8837 {
8838   auto res = isl_id_list_size(get());
8839   return manage(res);
8840 }
8841 
8842 inline std::ostream &operator<<(std::ostream &os, const id_list &obj)
8843 {
8844   char *str = isl_id_list_to_str(obj.get());
8845   if (!str) {
8846     os.setstate(std::ios_base::badbit);
8847     return os;
8848   }
8849   os << str;
8850   free(str);
8851   return os;
8852 }
8853 
8854 // implementations for isl::map
manage(__isl_take isl_map * ptr)8855 map manage(__isl_take isl_map *ptr) {
8856   return map(ptr);
8857 }
manage_copy(__isl_keep isl_map * ptr)8858 map manage_copy(__isl_keep isl_map *ptr) {
8859   ptr = isl_map_copy(ptr);
8860   return map(ptr);
8861 }
8862 
map()8863 map::map()
8864     : ptr(nullptr) {}
8865 
map(const map & obj)8866 map::map(const map &obj)
8867     : ptr(nullptr)
8868 {
8869   ptr = obj.copy();
8870 }
8871 
map(__isl_take isl_map * ptr)8872 map::map(__isl_take isl_map *ptr)
8873     : ptr(ptr) {}
8874 
map(isl::checked::basic_map bmap)8875 map::map(isl::checked::basic_map bmap)
8876 {
8877   auto res = isl_map_from_basic_map(bmap.release());
8878   ptr = res;
8879 }
8880 
map(isl::checked::ctx ctx,const std::string & str)8881 map::map(isl::checked::ctx ctx, const std::string &str)
8882 {
8883   auto res = isl_map_read_from_str(ctx.release(), str.c_str());
8884   ptr = res;
8885 }
8886 
8887 map &map::operator=(map obj) {
8888   std::swap(this->ptr, obj.ptr);
8889   return *this;
8890 }
8891 
~map()8892 map::~map() {
8893   if (ptr)
8894     isl_map_free(ptr);
8895 }
8896 
copy()8897 __isl_give isl_map *map::copy() const & {
8898   return isl_map_copy(ptr);
8899 }
8900 
get()8901 __isl_keep isl_map *map::get() const {
8902   return ptr;
8903 }
8904 
release()8905 __isl_give isl_map *map::release() {
8906   isl_map *tmp = ptr;
8907   ptr = nullptr;
8908   return tmp;
8909 }
8910 
is_null()8911 bool map::is_null() const {
8912   return ptr == nullptr;
8913 }
8914 
ctx()8915 isl::checked::ctx map::ctx() const {
8916   return isl::checked::ctx(isl_map_get_ctx(ptr));
8917 }
8918 
affine_hull()8919 isl::checked::basic_map map::affine_hull() const
8920 {
8921   auto res = isl_map_affine_hull(copy());
8922   return manage(res);
8923 }
8924 
apply_domain(isl::checked::map map2)8925 isl::checked::map map::apply_domain(isl::checked::map map2) const
8926 {
8927   auto res = isl_map_apply_domain(copy(), map2.release());
8928   return manage(res);
8929 }
8930 
apply_domain(const isl::checked::union_map & umap2)8931 isl::checked::union_map map::apply_domain(const isl::checked::union_map &umap2) const
8932 {
8933   return isl::checked::union_map(*this).apply_domain(umap2);
8934 }
8935 
apply_domain(const isl::checked::basic_map & map2)8936 isl::checked::map map::apply_domain(const isl::checked::basic_map &map2) const
8937 {
8938   return this->apply_domain(isl::checked::map(map2));
8939 }
8940 
apply_range(isl::checked::map map2)8941 isl::checked::map map::apply_range(isl::checked::map map2) const
8942 {
8943   auto res = isl_map_apply_range(copy(), map2.release());
8944   return manage(res);
8945 }
8946 
apply_range(const isl::checked::union_map & umap2)8947 isl::checked::union_map map::apply_range(const isl::checked::union_map &umap2) const
8948 {
8949   return isl::checked::union_map(*this).apply_range(umap2);
8950 }
8951 
apply_range(const isl::checked::basic_map & map2)8952 isl::checked::map map::apply_range(const isl::checked::basic_map &map2) const
8953 {
8954   return this->apply_range(isl::checked::map(map2));
8955 }
8956 
as_map()8957 isl::checked::map map::as_map() const
8958 {
8959   return isl::checked::union_map(*this).as_map();
8960 }
8961 
as_multi_union_pw_aff()8962 isl::checked::multi_union_pw_aff map::as_multi_union_pw_aff() const
8963 {
8964   return isl::checked::union_map(*this).as_multi_union_pw_aff();
8965 }
8966 
as_pw_multi_aff()8967 isl::checked::pw_multi_aff map::as_pw_multi_aff() const
8968 {
8969   auto res = isl_map_as_pw_multi_aff(copy());
8970   return manage(res);
8971 }
8972 
as_union_pw_multi_aff()8973 isl::checked::union_pw_multi_aff map::as_union_pw_multi_aff() const
8974 {
8975   return isl::checked::union_map(*this).as_union_pw_multi_aff();
8976 }
8977 
bind_domain(isl::checked::multi_id tuple)8978 isl::checked::set map::bind_domain(isl::checked::multi_id tuple) const
8979 {
8980   auto res = isl_map_bind_domain(copy(), tuple.release());
8981   return manage(res);
8982 }
8983 
bind_range(isl::checked::multi_id tuple)8984 isl::checked::set map::bind_range(isl::checked::multi_id tuple) const
8985 {
8986   auto res = isl_map_bind_range(copy(), tuple.release());
8987   return manage(res);
8988 }
8989 
coalesce()8990 isl::checked::map map::coalesce() const
8991 {
8992   auto res = isl_map_coalesce(copy());
8993   return manage(res);
8994 }
8995 
complement()8996 isl::checked::map map::complement() const
8997 {
8998   auto res = isl_map_complement(copy());
8999   return manage(res);
9000 }
9001 
compute_divs()9002 isl::checked::union_map map::compute_divs() const
9003 {
9004   return isl::checked::union_map(*this).compute_divs();
9005 }
9006 
curry()9007 isl::checked::map map::curry() const
9008 {
9009   auto res = isl_map_curry(copy());
9010   return manage(res);
9011 }
9012 
deltas()9013 isl::checked::set map::deltas() const
9014 {
9015   auto res = isl_map_deltas(copy());
9016   return manage(res);
9017 }
9018 
detect_equalities()9019 isl::checked::map map::detect_equalities() const
9020 {
9021   auto res = isl_map_detect_equalities(copy());
9022   return manage(res);
9023 }
9024 
domain()9025 isl::checked::set map::domain() const
9026 {
9027   auto res = isl_map_domain(copy());
9028   return manage(res);
9029 }
9030 
domain_factor_domain()9031 isl::checked::map map::domain_factor_domain() const
9032 {
9033   auto res = isl_map_domain_factor_domain(copy());
9034   return manage(res);
9035 }
9036 
domain_factor_range()9037 isl::checked::map map::domain_factor_range() const
9038 {
9039   auto res = isl_map_domain_factor_range(copy());
9040   return manage(res);
9041 }
9042 
domain_map()9043 isl::checked::union_map map::domain_map() const
9044 {
9045   return isl::checked::union_map(*this).domain_map();
9046 }
9047 
domain_map_union_pw_multi_aff()9048 isl::checked::union_pw_multi_aff map::domain_map_union_pw_multi_aff() const
9049 {
9050   return isl::checked::union_map(*this).domain_map_union_pw_multi_aff();
9051 }
9052 
domain_product(isl::checked::map map2)9053 isl::checked::map map::domain_product(isl::checked::map map2) const
9054 {
9055   auto res = isl_map_domain_product(copy(), map2.release());
9056   return manage(res);
9057 }
9058 
domain_product(const isl::checked::union_map & umap2)9059 isl::checked::union_map map::domain_product(const isl::checked::union_map &umap2) const
9060 {
9061   return isl::checked::union_map(*this).domain_product(umap2);
9062 }
9063 
domain_product(const isl::checked::basic_map & map2)9064 isl::checked::map map::domain_product(const isl::checked::basic_map &map2) const
9065 {
9066   return this->domain_product(isl::checked::map(map2));
9067 }
9068 
domain_tuple_dim()9069 class size map::domain_tuple_dim() const
9070 {
9071   auto res = isl_map_domain_tuple_dim(get());
9072   return manage(res);
9073 }
9074 
domain_tuple_id()9075 isl::checked::id map::domain_tuple_id() const
9076 {
9077   auto res = isl_map_get_domain_tuple_id(get());
9078   return manage(res);
9079 }
9080 
get_domain_tuple_id()9081 isl::checked::id map::get_domain_tuple_id() const
9082 {
9083   return domain_tuple_id();
9084 }
9085 
empty(isl::checked::space space)9086 isl::checked::map map::empty(isl::checked::space space)
9087 {
9088   auto res = isl_map_empty(space.release());
9089   return manage(res);
9090 }
9091 
eq_at(isl::checked::multi_pw_aff mpa)9092 isl::checked::map map::eq_at(isl::checked::multi_pw_aff mpa) const
9093 {
9094   auto res = isl_map_eq_at_multi_pw_aff(copy(), mpa.release());
9095   return manage(res);
9096 }
9097 
eq_at(const isl::checked::multi_union_pw_aff & mupa)9098 isl::checked::union_map map::eq_at(const isl::checked::multi_union_pw_aff &mupa) const
9099 {
9100   return isl::checked::union_map(*this).eq_at(mupa);
9101 }
9102 
eq_at(const isl::checked::aff & mpa)9103 isl::checked::map map::eq_at(const isl::checked::aff &mpa) const
9104 {
9105   return this->eq_at(isl::checked::multi_pw_aff(mpa));
9106 }
9107 
eq_at(const isl::checked::multi_aff & mpa)9108 isl::checked::map map::eq_at(const isl::checked::multi_aff &mpa) const
9109 {
9110   return this->eq_at(isl::checked::multi_pw_aff(mpa));
9111 }
9112 
eq_at(const isl::checked::pw_aff & mpa)9113 isl::checked::map map::eq_at(const isl::checked::pw_aff &mpa) const
9114 {
9115   return this->eq_at(isl::checked::multi_pw_aff(mpa));
9116 }
9117 
eq_at(const isl::checked::pw_multi_aff & mpa)9118 isl::checked::map map::eq_at(const isl::checked::pw_multi_aff &mpa) const
9119 {
9120   return this->eq_at(isl::checked::multi_pw_aff(mpa));
9121 }
9122 
every_map(const std::function<boolean (isl::checked::map)> & test)9123 boolean map::every_map(const std::function<boolean(isl::checked::map)> &test) const
9124 {
9125   return isl::checked::union_map(*this).every_map(test);
9126 }
9127 
extract_map(const isl::checked::space & space)9128 isl::checked::map map::extract_map(const isl::checked::space &space) const
9129 {
9130   return isl::checked::union_map(*this).extract_map(space);
9131 }
9132 
factor_domain()9133 isl::checked::map map::factor_domain() const
9134 {
9135   auto res = isl_map_factor_domain(copy());
9136   return manage(res);
9137 }
9138 
factor_range()9139 isl::checked::map map::factor_range() const
9140 {
9141   auto res = isl_map_factor_range(copy());
9142   return manage(res);
9143 }
9144 
fixed_power(const isl::checked::val & exp)9145 isl::checked::union_map map::fixed_power(const isl::checked::val &exp) const
9146 {
9147   return isl::checked::union_map(*this).fixed_power(exp);
9148 }
9149 
fixed_power(long exp)9150 isl::checked::union_map map::fixed_power(long exp) const
9151 {
9152   return this->fixed_power(isl::checked::val(ctx(), exp));
9153 }
9154 
flatten()9155 isl::checked::map map::flatten() const
9156 {
9157   auto res = isl_map_flatten(copy());
9158   return manage(res);
9159 }
9160 
flatten_domain()9161 isl::checked::map map::flatten_domain() const
9162 {
9163   auto res = isl_map_flatten_domain(copy());
9164   return manage(res);
9165 }
9166 
flatten_range()9167 isl::checked::map map::flatten_range() const
9168 {
9169   auto res = isl_map_flatten_range(copy());
9170   return manage(res);
9171 }
9172 
foreach_basic_map(const std::function<stat (isl::checked::basic_map)> & fn)9173 stat map::foreach_basic_map(const std::function<stat(isl::checked::basic_map)> &fn) const
9174 {
9175   struct fn_data {
9176     std::function<stat(isl::checked::basic_map)> func;
9177   } fn_data = { fn };
9178   auto fn_lambda = [](isl_basic_map *arg_0, void *arg_1) -> isl_stat {
9179     auto *data = static_cast<struct fn_data *>(arg_1);
9180     auto ret = (data->func)(manage(arg_0));
9181     return ret.release();
9182   };
9183   auto res = isl_map_foreach_basic_map(get(), fn_lambda, &fn_data);
9184   return manage(res);
9185 }
9186 
foreach_map(const std::function<stat (isl::checked::map)> & fn)9187 stat map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
9188 {
9189   return isl::checked::union_map(*this).foreach_map(fn);
9190 }
9191 
gist(isl::checked::map context)9192 isl::checked::map map::gist(isl::checked::map context) const
9193 {
9194   auto res = isl_map_gist(copy(), context.release());
9195   return manage(res);
9196 }
9197 
gist(const isl::checked::union_map & context)9198 isl::checked::union_map map::gist(const isl::checked::union_map &context) const
9199 {
9200   return isl::checked::union_map(*this).gist(context);
9201 }
9202 
gist(const isl::checked::basic_map & context)9203 isl::checked::map map::gist(const isl::checked::basic_map &context) const
9204 {
9205   return this->gist(isl::checked::map(context));
9206 }
9207 
gist_domain(isl::checked::set context)9208 isl::checked::map map::gist_domain(isl::checked::set context) const
9209 {
9210   auto res = isl_map_gist_domain(copy(), context.release());
9211   return manage(res);
9212 }
9213 
gist_domain(const isl::checked::union_set & uset)9214 isl::checked::union_map map::gist_domain(const isl::checked::union_set &uset) const
9215 {
9216   return isl::checked::union_map(*this).gist_domain(uset);
9217 }
9218 
gist_domain(const isl::checked::basic_set & context)9219 isl::checked::map map::gist_domain(const isl::checked::basic_set &context) const
9220 {
9221   return this->gist_domain(isl::checked::set(context));
9222 }
9223 
gist_domain(const isl::checked::point & context)9224 isl::checked::map map::gist_domain(const isl::checked::point &context) const
9225 {
9226   return this->gist_domain(isl::checked::set(context));
9227 }
9228 
gist_params(const isl::checked::set & set)9229 isl::checked::union_map map::gist_params(const isl::checked::set &set) const
9230 {
9231   return isl::checked::union_map(*this).gist_params(set);
9232 }
9233 
gist_range(const isl::checked::union_set & uset)9234 isl::checked::union_map map::gist_range(const isl::checked::union_set &uset) const
9235 {
9236   return isl::checked::union_map(*this).gist_range(uset);
9237 }
9238 
has_domain_tuple_id()9239 boolean map::has_domain_tuple_id() const
9240 {
9241   auto res = isl_map_has_domain_tuple_id(get());
9242   return manage(res);
9243 }
9244 
has_range_tuple_id()9245 boolean map::has_range_tuple_id() const
9246 {
9247   auto res = isl_map_has_range_tuple_id(get());
9248   return manage(res);
9249 }
9250 
intersect(isl::checked::map map2)9251 isl::checked::map map::intersect(isl::checked::map map2) const
9252 {
9253   auto res = isl_map_intersect(copy(), map2.release());
9254   return manage(res);
9255 }
9256 
intersect(const isl::checked::union_map & umap2)9257 isl::checked::union_map map::intersect(const isl::checked::union_map &umap2) const
9258 {
9259   return isl::checked::union_map(*this).intersect(umap2);
9260 }
9261 
intersect(const isl::checked::basic_map & map2)9262 isl::checked::map map::intersect(const isl::checked::basic_map &map2) const
9263 {
9264   return this->intersect(isl::checked::map(map2));
9265 }
9266 
intersect_domain(isl::checked::set set)9267 isl::checked::map map::intersect_domain(isl::checked::set set) const
9268 {
9269   auto res = isl_map_intersect_domain(copy(), set.release());
9270   return manage(res);
9271 }
9272 
intersect_domain(const isl::checked::space & space)9273 isl::checked::union_map map::intersect_domain(const isl::checked::space &space) const
9274 {
9275   return isl::checked::union_map(*this).intersect_domain(space);
9276 }
9277 
intersect_domain(const isl::checked::union_set & uset)9278 isl::checked::union_map map::intersect_domain(const isl::checked::union_set &uset) const
9279 {
9280   return isl::checked::union_map(*this).intersect_domain(uset);
9281 }
9282 
intersect_domain(const isl::checked::basic_set & set)9283 isl::checked::map map::intersect_domain(const isl::checked::basic_set &set) const
9284 {
9285   return this->intersect_domain(isl::checked::set(set));
9286 }
9287 
intersect_domain(const isl::checked::point & set)9288 isl::checked::map map::intersect_domain(const isl::checked::point &set) const
9289 {
9290   return this->intersect_domain(isl::checked::set(set));
9291 }
9292 
intersect_domain_factor_domain(isl::checked::map factor)9293 isl::checked::map map::intersect_domain_factor_domain(isl::checked::map factor) const
9294 {
9295   auto res = isl_map_intersect_domain_factor_domain(copy(), factor.release());
9296   return manage(res);
9297 }
9298 
intersect_domain_factor_domain(const isl::checked::union_map & factor)9299 isl::checked::union_map map::intersect_domain_factor_domain(const isl::checked::union_map &factor) const
9300 {
9301   return isl::checked::union_map(*this).intersect_domain_factor_domain(factor);
9302 }
9303 
intersect_domain_factor_domain(const isl::checked::basic_map & factor)9304 isl::checked::map map::intersect_domain_factor_domain(const isl::checked::basic_map &factor) const
9305 {
9306   return this->intersect_domain_factor_domain(isl::checked::map(factor));
9307 }
9308 
intersect_domain_factor_range(isl::checked::map factor)9309 isl::checked::map map::intersect_domain_factor_range(isl::checked::map factor) const
9310 {
9311   auto res = isl_map_intersect_domain_factor_range(copy(), factor.release());
9312   return manage(res);
9313 }
9314 
intersect_domain_factor_range(const isl::checked::union_map & factor)9315 isl::checked::union_map map::intersect_domain_factor_range(const isl::checked::union_map &factor) const
9316 {
9317   return isl::checked::union_map(*this).intersect_domain_factor_range(factor);
9318 }
9319 
intersect_domain_factor_range(const isl::checked::basic_map & factor)9320 isl::checked::map map::intersect_domain_factor_range(const isl::checked::basic_map &factor) const
9321 {
9322   return this->intersect_domain_factor_range(isl::checked::map(factor));
9323 }
9324 
intersect_params(isl::checked::set params)9325 isl::checked::map map::intersect_params(isl::checked::set params) const
9326 {
9327   auto res = isl_map_intersect_params(copy(), params.release());
9328   return manage(res);
9329 }
9330 
intersect_range(isl::checked::set set)9331 isl::checked::map map::intersect_range(isl::checked::set set) const
9332 {
9333   auto res = isl_map_intersect_range(copy(), set.release());
9334   return manage(res);
9335 }
9336 
intersect_range(const isl::checked::space & space)9337 isl::checked::union_map map::intersect_range(const isl::checked::space &space) const
9338 {
9339   return isl::checked::union_map(*this).intersect_range(space);
9340 }
9341 
intersect_range(const isl::checked::union_set & uset)9342 isl::checked::union_map map::intersect_range(const isl::checked::union_set &uset) const
9343 {
9344   return isl::checked::union_map(*this).intersect_range(uset);
9345 }
9346 
intersect_range(const isl::checked::basic_set & set)9347 isl::checked::map map::intersect_range(const isl::checked::basic_set &set) const
9348 {
9349   return this->intersect_range(isl::checked::set(set));
9350 }
9351 
intersect_range(const isl::checked::point & set)9352 isl::checked::map map::intersect_range(const isl::checked::point &set) const
9353 {
9354   return this->intersect_range(isl::checked::set(set));
9355 }
9356 
intersect_range_factor_domain(isl::checked::map factor)9357 isl::checked::map map::intersect_range_factor_domain(isl::checked::map factor) const
9358 {
9359   auto res = isl_map_intersect_range_factor_domain(copy(), factor.release());
9360   return manage(res);
9361 }
9362 
intersect_range_factor_domain(const isl::checked::union_map & factor)9363 isl::checked::union_map map::intersect_range_factor_domain(const isl::checked::union_map &factor) const
9364 {
9365   return isl::checked::union_map(*this).intersect_range_factor_domain(factor);
9366 }
9367 
intersect_range_factor_domain(const isl::checked::basic_map & factor)9368 isl::checked::map map::intersect_range_factor_domain(const isl::checked::basic_map &factor) const
9369 {
9370   return this->intersect_range_factor_domain(isl::checked::map(factor));
9371 }
9372 
intersect_range_factor_range(isl::checked::map factor)9373 isl::checked::map map::intersect_range_factor_range(isl::checked::map factor) const
9374 {
9375   auto res = isl_map_intersect_range_factor_range(copy(), factor.release());
9376   return manage(res);
9377 }
9378 
intersect_range_factor_range(const isl::checked::union_map & factor)9379 isl::checked::union_map map::intersect_range_factor_range(const isl::checked::union_map &factor) const
9380 {
9381   return isl::checked::union_map(*this).intersect_range_factor_range(factor);
9382 }
9383 
intersect_range_factor_range(const isl::checked::basic_map & factor)9384 isl::checked::map map::intersect_range_factor_range(const isl::checked::basic_map &factor) const
9385 {
9386   return this->intersect_range_factor_range(isl::checked::map(factor));
9387 }
9388 
is_bijective()9389 boolean map::is_bijective() const
9390 {
9391   auto res = isl_map_is_bijective(get());
9392   return manage(res);
9393 }
9394 
is_disjoint(const isl::checked::map & map2)9395 boolean map::is_disjoint(const isl::checked::map &map2) const
9396 {
9397   auto res = isl_map_is_disjoint(get(), map2.get());
9398   return manage(res);
9399 }
9400 
is_disjoint(const isl::checked::union_map & umap2)9401 boolean map::is_disjoint(const isl::checked::union_map &umap2) const
9402 {
9403   return isl::checked::union_map(*this).is_disjoint(umap2);
9404 }
9405 
is_disjoint(const isl::checked::basic_map & map2)9406 boolean map::is_disjoint(const isl::checked::basic_map &map2) const
9407 {
9408   return this->is_disjoint(isl::checked::map(map2));
9409 }
9410 
is_empty()9411 boolean map::is_empty() const
9412 {
9413   auto res = isl_map_is_empty(get());
9414   return manage(res);
9415 }
9416 
is_equal(const isl::checked::map & map2)9417 boolean map::is_equal(const isl::checked::map &map2) const
9418 {
9419   auto res = isl_map_is_equal(get(), map2.get());
9420   return manage(res);
9421 }
9422 
is_equal(const isl::checked::union_map & umap2)9423 boolean map::is_equal(const isl::checked::union_map &umap2) const
9424 {
9425   return isl::checked::union_map(*this).is_equal(umap2);
9426 }
9427 
is_equal(const isl::checked::basic_map & map2)9428 boolean map::is_equal(const isl::checked::basic_map &map2) const
9429 {
9430   return this->is_equal(isl::checked::map(map2));
9431 }
9432 
is_injective()9433 boolean map::is_injective() const
9434 {
9435   auto res = isl_map_is_injective(get());
9436   return manage(res);
9437 }
9438 
is_single_valued()9439 boolean map::is_single_valued() const
9440 {
9441   auto res = isl_map_is_single_valued(get());
9442   return manage(res);
9443 }
9444 
is_strict_subset(const isl::checked::map & map2)9445 boolean map::is_strict_subset(const isl::checked::map &map2) const
9446 {
9447   auto res = isl_map_is_strict_subset(get(), map2.get());
9448   return manage(res);
9449 }
9450 
is_strict_subset(const isl::checked::union_map & umap2)9451 boolean map::is_strict_subset(const isl::checked::union_map &umap2) const
9452 {
9453   return isl::checked::union_map(*this).is_strict_subset(umap2);
9454 }
9455 
is_strict_subset(const isl::checked::basic_map & map2)9456 boolean map::is_strict_subset(const isl::checked::basic_map &map2) const
9457 {
9458   return this->is_strict_subset(isl::checked::map(map2));
9459 }
9460 
is_subset(const isl::checked::map & map2)9461 boolean map::is_subset(const isl::checked::map &map2) const
9462 {
9463   auto res = isl_map_is_subset(get(), map2.get());
9464   return manage(res);
9465 }
9466 
is_subset(const isl::checked::union_map & umap2)9467 boolean map::is_subset(const isl::checked::union_map &umap2) const
9468 {
9469   return isl::checked::union_map(*this).is_subset(umap2);
9470 }
9471 
is_subset(const isl::checked::basic_map & map2)9472 boolean map::is_subset(const isl::checked::basic_map &map2) const
9473 {
9474   return this->is_subset(isl::checked::map(map2));
9475 }
9476 
isa_map()9477 boolean map::isa_map() const
9478 {
9479   return isl::checked::union_map(*this).isa_map();
9480 }
9481 
lex_ge_at(isl::checked::multi_pw_aff mpa)9482 isl::checked::map map::lex_ge_at(isl::checked::multi_pw_aff mpa) const
9483 {
9484   auto res = isl_map_lex_ge_at_multi_pw_aff(copy(), mpa.release());
9485   return manage(res);
9486 }
9487 
lex_gt_at(isl::checked::multi_pw_aff mpa)9488 isl::checked::map map::lex_gt_at(isl::checked::multi_pw_aff mpa) const
9489 {
9490   auto res = isl_map_lex_gt_at_multi_pw_aff(copy(), mpa.release());
9491   return manage(res);
9492 }
9493 
lex_le_at(isl::checked::multi_pw_aff mpa)9494 isl::checked::map map::lex_le_at(isl::checked::multi_pw_aff mpa) const
9495 {
9496   auto res = isl_map_lex_le_at_multi_pw_aff(copy(), mpa.release());
9497   return manage(res);
9498 }
9499 
lex_lt_at(isl::checked::multi_pw_aff mpa)9500 isl::checked::map map::lex_lt_at(isl::checked::multi_pw_aff mpa) const
9501 {
9502   auto res = isl_map_lex_lt_at_multi_pw_aff(copy(), mpa.release());
9503   return manage(res);
9504 }
9505 
lexmax()9506 isl::checked::map map::lexmax() const
9507 {
9508   auto res = isl_map_lexmax(copy());
9509   return manage(res);
9510 }
9511 
lexmax_pw_multi_aff()9512 isl::checked::pw_multi_aff map::lexmax_pw_multi_aff() const
9513 {
9514   auto res = isl_map_lexmax_pw_multi_aff(copy());
9515   return manage(res);
9516 }
9517 
lexmin()9518 isl::checked::map map::lexmin() const
9519 {
9520   auto res = isl_map_lexmin(copy());
9521   return manage(res);
9522 }
9523 
lexmin_pw_multi_aff()9524 isl::checked::pw_multi_aff map::lexmin_pw_multi_aff() const
9525 {
9526   auto res = isl_map_lexmin_pw_multi_aff(copy());
9527   return manage(res);
9528 }
9529 
lower_bound(isl::checked::multi_pw_aff lower)9530 isl::checked::map map::lower_bound(isl::checked::multi_pw_aff lower) const
9531 {
9532   auto res = isl_map_lower_bound_multi_pw_aff(copy(), lower.release());
9533   return manage(res);
9534 }
9535 
map_list()9536 isl::checked::map_list map::map_list() const
9537 {
9538   return isl::checked::union_map(*this).map_list();
9539 }
9540 
max_multi_pw_aff()9541 isl::checked::multi_pw_aff map::max_multi_pw_aff() const
9542 {
9543   auto res = isl_map_max_multi_pw_aff(copy());
9544   return manage(res);
9545 }
9546 
min_multi_pw_aff()9547 isl::checked::multi_pw_aff map::min_multi_pw_aff() const
9548 {
9549   auto res = isl_map_min_multi_pw_aff(copy());
9550   return manage(res);
9551 }
9552 
n_basic_map()9553 class size map::n_basic_map() const
9554 {
9555   auto res = isl_map_n_basic_map(get());
9556   return manage(res);
9557 }
9558 
polyhedral_hull()9559 isl::checked::basic_map map::polyhedral_hull() const
9560 {
9561   auto res = isl_map_polyhedral_hull(copy());
9562   return manage(res);
9563 }
9564 
preimage_domain(isl::checked::multi_aff ma)9565 isl::checked::map map::preimage_domain(isl::checked::multi_aff ma) const
9566 {
9567   auto res = isl_map_preimage_domain_multi_aff(copy(), ma.release());
9568   return manage(res);
9569 }
9570 
preimage_domain(isl::checked::multi_pw_aff mpa)9571 isl::checked::map map::preimage_domain(isl::checked::multi_pw_aff mpa) const
9572 {
9573   auto res = isl_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
9574   return manage(res);
9575 }
9576 
preimage_domain(isl::checked::pw_multi_aff pma)9577 isl::checked::map map::preimage_domain(isl::checked::pw_multi_aff pma) const
9578 {
9579   auto res = isl_map_preimage_domain_pw_multi_aff(copy(), pma.release());
9580   return manage(res);
9581 }
9582 
preimage_domain(const isl::checked::union_pw_multi_aff & upma)9583 isl::checked::union_map map::preimage_domain(const isl::checked::union_pw_multi_aff &upma) const
9584 {
9585   return isl::checked::union_map(*this).preimage_domain(upma);
9586 }
9587 
preimage_range(isl::checked::multi_aff ma)9588 isl::checked::map map::preimage_range(isl::checked::multi_aff ma) const
9589 {
9590   auto res = isl_map_preimage_range_multi_aff(copy(), ma.release());
9591   return manage(res);
9592 }
9593 
preimage_range(isl::checked::pw_multi_aff pma)9594 isl::checked::map map::preimage_range(isl::checked::pw_multi_aff pma) const
9595 {
9596   auto res = isl_map_preimage_range_pw_multi_aff(copy(), pma.release());
9597   return manage(res);
9598 }
9599 
preimage_range(const isl::checked::union_pw_multi_aff & upma)9600 isl::checked::union_map map::preimage_range(const isl::checked::union_pw_multi_aff &upma) const
9601 {
9602   return isl::checked::union_map(*this).preimage_range(upma);
9603 }
9604 
product(isl::checked::map map2)9605 isl::checked::map map::product(isl::checked::map map2) const
9606 {
9607   auto res = isl_map_product(copy(), map2.release());
9608   return manage(res);
9609 }
9610 
product(const isl::checked::union_map & umap2)9611 isl::checked::union_map map::product(const isl::checked::union_map &umap2) const
9612 {
9613   return isl::checked::union_map(*this).product(umap2);
9614 }
9615 
product(const isl::checked::basic_map & map2)9616 isl::checked::map map::product(const isl::checked::basic_map &map2) const
9617 {
9618   return this->product(isl::checked::map(map2));
9619 }
9620 
project_out_all_params()9621 isl::checked::map map::project_out_all_params() const
9622 {
9623   auto res = isl_map_project_out_all_params(copy());
9624   return manage(res);
9625 }
9626 
range()9627 isl::checked::set map::range() const
9628 {
9629   auto res = isl_map_range(copy());
9630   return manage(res);
9631 }
9632 
range_factor_domain()9633 isl::checked::map map::range_factor_domain() const
9634 {
9635   auto res = isl_map_range_factor_domain(copy());
9636   return manage(res);
9637 }
9638 
range_factor_range()9639 isl::checked::map map::range_factor_range() const
9640 {
9641   auto res = isl_map_range_factor_range(copy());
9642   return manage(res);
9643 }
9644 
range_lattice_tile()9645 isl::checked::fixed_box map::range_lattice_tile() const
9646 {
9647   auto res = isl_map_get_range_lattice_tile(get());
9648   return manage(res);
9649 }
9650 
get_range_lattice_tile()9651 isl::checked::fixed_box map::get_range_lattice_tile() const
9652 {
9653   return range_lattice_tile();
9654 }
9655 
range_map()9656 isl::checked::union_map map::range_map() const
9657 {
9658   return isl::checked::union_map(*this).range_map();
9659 }
9660 
range_product(isl::checked::map map2)9661 isl::checked::map map::range_product(isl::checked::map map2) const
9662 {
9663   auto res = isl_map_range_product(copy(), map2.release());
9664   return manage(res);
9665 }
9666 
range_product(const isl::checked::union_map & umap2)9667 isl::checked::union_map map::range_product(const isl::checked::union_map &umap2) const
9668 {
9669   return isl::checked::union_map(*this).range_product(umap2);
9670 }
9671 
range_product(const isl::checked::basic_map & map2)9672 isl::checked::map map::range_product(const isl::checked::basic_map &map2) const
9673 {
9674   return this->range_product(isl::checked::map(map2));
9675 }
9676 
range_reverse()9677 isl::checked::map map::range_reverse() const
9678 {
9679   auto res = isl_map_range_reverse(copy());
9680   return manage(res);
9681 }
9682 
range_simple_fixed_box_hull()9683 isl::checked::fixed_box map::range_simple_fixed_box_hull() const
9684 {
9685   auto res = isl_map_get_range_simple_fixed_box_hull(get());
9686   return manage(res);
9687 }
9688 
get_range_simple_fixed_box_hull()9689 isl::checked::fixed_box map::get_range_simple_fixed_box_hull() const
9690 {
9691   return range_simple_fixed_box_hull();
9692 }
9693 
range_tuple_dim()9694 class size map::range_tuple_dim() const
9695 {
9696   auto res = isl_map_range_tuple_dim(get());
9697   return manage(res);
9698 }
9699 
range_tuple_id()9700 isl::checked::id map::range_tuple_id() const
9701 {
9702   auto res = isl_map_get_range_tuple_id(get());
9703   return manage(res);
9704 }
9705 
get_range_tuple_id()9706 isl::checked::id map::get_range_tuple_id() const
9707 {
9708   return range_tuple_id();
9709 }
9710 
reverse()9711 isl::checked::map map::reverse() const
9712 {
9713   auto res = isl_map_reverse(copy());
9714   return manage(res);
9715 }
9716 
sample()9717 isl::checked::basic_map map::sample() const
9718 {
9719   auto res = isl_map_sample(copy());
9720   return manage(res);
9721 }
9722 
set_domain_tuple(isl::checked::id id)9723 isl::checked::map map::set_domain_tuple(isl::checked::id id) const
9724 {
9725   auto res = isl_map_set_domain_tuple_id(copy(), id.release());
9726   return manage(res);
9727 }
9728 
set_domain_tuple(const std::string & id)9729 isl::checked::map map::set_domain_tuple(const std::string &id) const
9730 {
9731   return this->set_domain_tuple(isl::checked::id(ctx(), id));
9732 }
9733 
set_range_tuple(isl::checked::id id)9734 isl::checked::map map::set_range_tuple(isl::checked::id id) const
9735 {
9736   auto res = isl_map_set_range_tuple_id(copy(), id.release());
9737   return manage(res);
9738 }
9739 
set_range_tuple(const std::string & id)9740 isl::checked::map map::set_range_tuple(const std::string &id) const
9741 {
9742   return this->set_range_tuple(isl::checked::id(ctx(), id));
9743 }
9744 
space()9745 isl::checked::space map::space() const
9746 {
9747   auto res = isl_map_get_space(get());
9748   return manage(res);
9749 }
9750 
get_space()9751 isl::checked::space map::get_space() const
9752 {
9753   return space();
9754 }
9755 
subtract(isl::checked::map map2)9756 isl::checked::map map::subtract(isl::checked::map map2) const
9757 {
9758   auto res = isl_map_subtract(copy(), map2.release());
9759   return manage(res);
9760 }
9761 
subtract(const isl::checked::union_map & umap2)9762 isl::checked::union_map map::subtract(const isl::checked::union_map &umap2) const
9763 {
9764   return isl::checked::union_map(*this).subtract(umap2);
9765 }
9766 
subtract(const isl::checked::basic_map & map2)9767 isl::checked::map map::subtract(const isl::checked::basic_map &map2) const
9768 {
9769   return this->subtract(isl::checked::map(map2));
9770 }
9771 
subtract_domain(const isl::checked::union_set & dom)9772 isl::checked::union_map map::subtract_domain(const isl::checked::union_set &dom) const
9773 {
9774   return isl::checked::union_map(*this).subtract_domain(dom);
9775 }
9776 
subtract_range(const isl::checked::union_set & dom)9777 isl::checked::union_map map::subtract_range(const isl::checked::union_set &dom) const
9778 {
9779   return isl::checked::union_map(*this).subtract_range(dom);
9780 }
9781 
to_list()9782 isl::checked::map_list map::to_list() const
9783 {
9784   auto res = isl_map_to_list(copy());
9785   return manage(res);
9786 }
9787 
to_union_map()9788 isl::checked::union_map map::to_union_map() const
9789 {
9790   auto res = isl_map_to_union_map(copy());
9791   return manage(res);
9792 }
9793 
uncurry()9794 isl::checked::map map::uncurry() const
9795 {
9796   auto res = isl_map_uncurry(copy());
9797   return manage(res);
9798 }
9799 
unite(isl::checked::map map2)9800 isl::checked::map map::unite(isl::checked::map map2) const
9801 {
9802   auto res = isl_map_union(copy(), map2.release());
9803   return manage(res);
9804 }
9805 
unite(const isl::checked::union_map & umap2)9806 isl::checked::union_map map::unite(const isl::checked::union_map &umap2) const
9807 {
9808   return isl::checked::union_map(*this).unite(umap2);
9809 }
9810 
unite(const isl::checked::basic_map & map2)9811 isl::checked::map map::unite(const isl::checked::basic_map &map2) const
9812 {
9813   return this->unite(isl::checked::map(map2));
9814 }
9815 
universe(isl::checked::space space)9816 isl::checked::map map::universe(isl::checked::space space)
9817 {
9818   auto res = isl_map_universe(space.release());
9819   return manage(res);
9820 }
9821 
unshifted_simple_hull()9822 isl::checked::basic_map map::unshifted_simple_hull() const
9823 {
9824   auto res = isl_map_unshifted_simple_hull(copy());
9825   return manage(res);
9826 }
9827 
upper_bound(isl::checked::multi_pw_aff upper)9828 isl::checked::map map::upper_bound(isl::checked::multi_pw_aff upper) const
9829 {
9830   auto res = isl_map_upper_bound_multi_pw_aff(copy(), upper.release());
9831   return manage(res);
9832 }
9833 
wrap()9834 isl::checked::set map::wrap() const
9835 {
9836   auto res = isl_map_wrap(copy());
9837   return manage(res);
9838 }
9839 
zip()9840 isl::checked::map map::zip() const
9841 {
9842   auto res = isl_map_zip(copy());
9843   return manage(res);
9844 }
9845 
9846 inline std::ostream &operator<<(std::ostream &os, const map &obj)
9847 {
9848   char *str = isl_map_to_str(obj.get());
9849   if (!str) {
9850     os.setstate(std::ios_base::badbit);
9851     return os;
9852   }
9853   os << str;
9854   free(str);
9855   return os;
9856 }
9857 
9858 // implementations for isl::map_list
manage(__isl_take isl_map_list * ptr)9859 map_list manage(__isl_take isl_map_list *ptr) {
9860   return map_list(ptr);
9861 }
manage_copy(__isl_keep isl_map_list * ptr)9862 map_list manage_copy(__isl_keep isl_map_list *ptr) {
9863   ptr = isl_map_list_copy(ptr);
9864   return map_list(ptr);
9865 }
9866 
map_list()9867 map_list::map_list()
9868     : ptr(nullptr) {}
9869 
map_list(const map_list & obj)9870 map_list::map_list(const map_list &obj)
9871     : ptr(nullptr)
9872 {
9873   ptr = obj.copy();
9874 }
9875 
map_list(__isl_take isl_map_list * ptr)9876 map_list::map_list(__isl_take isl_map_list *ptr)
9877     : ptr(ptr) {}
9878 
map_list(isl::checked::ctx ctx,int n)9879 map_list::map_list(isl::checked::ctx ctx, int n)
9880 {
9881   auto res = isl_map_list_alloc(ctx.release(), n);
9882   ptr = res;
9883 }
9884 
map_list(isl::checked::map el)9885 map_list::map_list(isl::checked::map el)
9886 {
9887   auto res = isl_map_list_from_map(el.release());
9888   ptr = res;
9889 }
9890 
map_list(isl::checked::ctx ctx,const std::string & str)9891 map_list::map_list(isl::checked::ctx ctx, const std::string &str)
9892 {
9893   auto res = isl_map_list_read_from_str(ctx.release(), str.c_str());
9894   ptr = res;
9895 }
9896 
9897 map_list &map_list::operator=(map_list obj) {
9898   std::swap(this->ptr, obj.ptr);
9899   return *this;
9900 }
9901 
~map_list()9902 map_list::~map_list() {
9903   if (ptr)
9904     isl_map_list_free(ptr);
9905 }
9906 
copy()9907 __isl_give isl_map_list *map_list::copy() const & {
9908   return isl_map_list_copy(ptr);
9909 }
9910 
get()9911 __isl_keep isl_map_list *map_list::get() const {
9912   return ptr;
9913 }
9914 
release()9915 __isl_give isl_map_list *map_list::release() {
9916   isl_map_list *tmp = ptr;
9917   ptr = nullptr;
9918   return tmp;
9919 }
9920 
is_null()9921 bool map_list::is_null() const {
9922   return ptr == nullptr;
9923 }
9924 
ctx()9925 isl::checked::ctx map_list::ctx() const {
9926   return isl::checked::ctx(isl_map_list_get_ctx(ptr));
9927 }
9928 
add(isl::checked::map el)9929 isl::checked::map_list map_list::add(isl::checked::map el) const
9930 {
9931   auto res = isl_map_list_add(copy(), el.release());
9932   return manage(res);
9933 }
9934 
at(int index)9935 isl::checked::map map_list::at(int index) const
9936 {
9937   auto res = isl_map_list_get_at(get(), index);
9938   return manage(res);
9939 }
9940 
get_at(int index)9941 isl::checked::map map_list::get_at(int index) const
9942 {
9943   return at(index);
9944 }
9945 
clear()9946 isl::checked::map_list map_list::clear() const
9947 {
9948   auto res = isl_map_list_clear(copy());
9949   return manage(res);
9950 }
9951 
concat(isl::checked::map_list list2)9952 isl::checked::map_list map_list::concat(isl::checked::map_list list2) const
9953 {
9954   auto res = isl_map_list_concat(copy(), list2.release());
9955   return manage(res);
9956 }
9957 
drop(unsigned int first,unsigned int n)9958 isl::checked::map_list map_list::drop(unsigned int first, unsigned int n) const
9959 {
9960   auto res = isl_map_list_drop(copy(), first, n);
9961   return manage(res);
9962 }
9963 
foreach(const std::function<stat (isl::checked::map)> & fn)9964 stat map_list::foreach(const std::function<stat(isl::checked::map)> &fn) const
9965 {
9966   struct fn_data {
9967     std::function<stat(isl::checked::map)> func;
9968   } fn_data = { fn };
9969   auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
9970     auto *data = static_cast<struct fn_data *>(arg_1);
9971     auto ret = (data->func)(manage(arg_0));
9972     return ret.release();
9973   };
9974   auto res = isl_map_list_foreach(get(), fn_lambda, &fn_data);
9975   return manage(res);
9976 }
9977 
insert(unsigned int pos,isl::checked::map el)9978 isl::checked::map_list map_list::insert(unsigned int pos, isl::checked::map el) const
9979 {
9980   auto res = isl_map_list_insert(copy(), pos, el.release());
9981   return manage(res);
9982 }
9983 
size()9984 class size map_list::size() const
9985 {
9986   auto res = isl_map_list_size(get());
9987   return manage(res);
9988 }
9989 
9990 inline std::ostream &operator<<(std::ostream &os, const map_list &obj)
9991 {
9992   char *str = isl_map_list_to_str(obj.get());
9993   if (!str) {
9994     os.setstate(std::ios_base::badbit);
9995     return os;
9996   }
9997   os << str;
9998   free(str);
9999   return os;
10000 }
10001 
10002 // implementations for isl::multi_aff
manage(__isl_take isl_multi_aff * ptr)10003 multi_aff manage(__isl_take isl_multi_aff *ptr) {
10004   return multi_aff(ptr);
10005 }
manage_copy(__isl_keep isl_multi_aff * ptr)10006 multi_aff manage_copy(__isl_keep isl_multi_aff *ptr) {
10007   ptr = isl_multi_aff_copy(ptr);
10008   return multi_aff(ptr);
10009 }
10010 
multi_aff()10011 multi_aff::multi_aff()
10012     : ptr(nullptr) {}
10013 
multi_aff(const multi_aff & obj)10014 multi_aff::multi_aff(const multi_aff &obj)
10015     : ptr(nullptr)
10016 {
10017   ptr = obj.copy();
10018 }
10019 
multi_aff(__isl_take isl_multi_aff * ptr)10020 multi_aff::multi_aff(__isl_take isl_multi_aff *ptr)
10021     : ptr(ptr) {}
10022 
multi_aff(isl::checked::aff aff)10023 multi_aff::multi_aff(isl::checked::aff aff)
10024 {
10025   auto res = isl_multi_aff_from_aff(aff.release());
10026   ptr = res;
10027 }
10028 
multi_aff(isl::checked::space space,isl::checked::aff_list list)10029 multi_aff::multi_aff(isl::checked::space space, isl::checked::aff_list list)
10030 {
10031   auto res = isl_multi_aff_from_aff_list(space.release(), list.release());
10032   ptr = res;
10033 }
10034 
multi_aff(isl::checked::ctx ctx,const std::string & str)10035 multi_aff::multi_aff(isl::checked::ctx ctx, const std::string &str)
10036 {
10037   auto res = isl_multi_aff_read_from_str(ctx.release(), str.c_str());
10038   ptr = res;
10039 }
10040 
10041 multi_aff &multi_aff::operator=(multi_aff obj) {
10042   std::swap(this->ptr, obj.ptr);
10043   return *this;
10044 }
10045 
~multi_aff()10046 multi_aff::~multi_aff() {
10047   if (ptr)
10048     isl_multi_aff_free(ptr);
10049 }
10050 
copy()10051 __isl_give isl_multi_aff *multi_aff::copy() const & {
10052   return isl_multi_aff_copy(ptr);
10053 }
10054 
get()10055 __isl_keep isl_multi_aff *multi_aff::get() const {
10056   return ptr;
10057 }
10058 
release()10059 __isl_give isl_multi_aff *multi_aff::release() {
10060   isl_multi_aff *tmp = ptr;
10061   ptr = nullptr;
10062   return tmp;
10063 }
10064 
is_null()10065 bool multi_aff::is_null() const {
10066   return ptr == nullptr;
10067 }
10068 
ctx()10069 isl::checked::ctx multi_aff::ctx() const {
10070   return isl::checked::ctx(isl_multi_aff_get_ctx(ptr));
10071 }
10072 
add(isl::checked::multi_aff multi2)10073 isl::checked::multi_aff multi_aff::add(isl::checked::multi_aff multi2) const
10074 {
10075   auto res = isl_multi_aff_add(copy(), multi2.release());
10076   return manage(res);
10077 }
10078 
add(const isl::checked::multi_pw_aff & multi2)10079 isl::checked::multi_pw_aff multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
10080 {
10081   return isl::checked::pw_multi_aff(*this).add(multi2);
10082 }
10083 
add(const isl::checked::multi_union_pw_aff & multi2)10084 isl::checked::multi_union_pw_aff multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
10085 {
10086   return isl::checked::pw_multi_aff(*this).add(multi2);
10087 }
10088 
add(const isl::checked::pw_multi_aff & pma2)10089 isl::checked::pw_multi_aff multi_aff::add(const isl::checked::pw_multi_aff &pma2) const
10090 {
10091   return isl::checked::pw_multi_aff(*this).add(pma2);
10092 }
10093 
add(const isl::checked::union_pw_multi_aff & upma2)10094 isl::checked::union_pw_multi_aff multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
10095 {
10096   return isl::checked::pw_multi_aff(*this).add(upma2);
10097 }
10098 
add(const isl::checked::aff & multi2)10099 isl::checked::multi_aff multi_aff::add(const isl::checked::aff &multi2) const
10100 {
10101   return this->add(isl::checked::multi_aff(multi2));
10102 }
10103 
add_constant(isl::checked::multi_val mv)10104 isl::checked::multi_aff multi_aff::add_constant(isl::checked::multi_val mv) const
10105 {
10106   auto res = isl_multi_aff_add_constant_multi_val(copy(), mv.release());
10107   return manage(res);
10108 }
10109 
add_constant(isl::checked::val v)10110 isl::checked::multi_aff multi_aff::add_constant(isl::checked::val v) const
10111 {
10112   auto res = isl_multi_aff_add_constant_val(copy(), v.release());
10113   return manage(res);
10114 }
10115 
add_constant(long v)10116 isl::checked::multi_aff multi_aff::add_constant(long v) const
10117 {
10118   return this->add_constant(isl::checked::val(ctx(), v));
10119 }
10120 
apply(const isl::checked::union_pw_multi_aff & upma2)10121 isl::checked::union_pw_multi_aff multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
10122 {
10123   return isl::checked::pw_multi_aff(*this).apply(upma2);
10124 }
10125 
as_map()10126 isl::checked::map multi_aff::as_map() const
10127 {
10128   auto res = isl_multi_aff_as_map(copy());
10129   return manage(res);
10130 }
10131 
as_multi_aff()10132 isl::checked::multi_aff multi_aff::as_multi_aff() const
10133 {
10134   return isl::checked::pw_multi_aff(*this).as_multi_aff();
10135 }
10136 
as_multi_union_pw_aff()10137 isl::checked::multi_union_pw_aff multi_aff::as_multi_union_pw_aff() const
10138 {
10139   return isl::checked::pw_multi_aff(*this).as_multi_union_pw_aff();
10140 }
10141 
as_pw_multi_aff()10142 isl::checked::pw_multi_aff multi_aff::as_pw_multi_aff() const
10143 {
10144   return isl::checked::pw_multi_aff(*this).as_pw_multi_aff();
10145 }
10146 
as_set()10147 isl::checked::set multi_aff::as_set() const
10148 {
10149   auto res = isl_multi_aff_as_set(copy());
10150   return manage(res);
10151 }
10152 
as_union_map()10153 isl::checked::union_map multi_aff::as_union_map() const
10154 {
10155   return isl::checked::pw_multi_aff(*this).as_union_map();
10156 }
10157 
at(int pos)10158 isl::checked::aff multi_aff::at(int pos) const
10159 {
10160   auto res = isl_multi_aff_get_at(get(), pos);
10161   return manage(res);
10162 }
10163 
get_at(int pos)10164 isl::checked::aff multi_aff::get_at(int pos) const
10165 {
10166   return at(pos);
10167 }
10168 
bind(isl::checked::multi_id tuple)10169 isl::checked::basic_set multi_aff::bind(isl::checked::multi_id tuple) const
10170 {
10171   auto res = isl_multi_aff_bind(copy(), tuple.release());
10172   return manage(res);
10173 }
10174 
bind_domain(isl::checked::multi_id tuple)10175 isl::checked::multi_aff multi_aff::bind_domain(isl::checked::multi_id tuple) const
10176 {
10177   auto res = isl_multi_aff_bind_domain(copy(), tuple.release());
10178   return manage(res);
10179 }
10180 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)10181 isl::checked::multi_aff multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
10182 {
10183   auto res = isl_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
10184   return manage(res);
10185 }
10186 
coalesce()10187 isl::checked::pw_multi_aff multi_aff::coalesce() const
10188 {
10189   return isl::checked::pw_multi_aff(*this).coalesce();
10190 }
10191 
constant_multi_val()10192 isl::checked::multi_val multi_aff::constant_multi_val() const
10193 {
10194   auto res = isl_multi_aff_get_constant_multi_val(get());
10195   return manage(res);
10196 }
10197 
get_constant_multi_val()10198 isl::checked::multi_val multi_aff::get_constant_multi_val() const
10199 {
10200   return constant_multi_val();
10201 }
10202 
domain()10203 isl::checked::set multi_aff::domain() const
10204 {
10205   return isl::checked::pw_multi_aff(*this).domain();
10206 }
10207 
domain_map(isl::checked::space space)10208 isl::checked::multi_aff multi_aff::domain_map(isl::checked::space space)
10209 {
10210   auto res = isl_multi_aff_domain_map(space.release());
10211   return manage(res);
10212 }
10213 
extract_pw_multi_aff(const isl::checked::space & space)10214 isl::checked::pw_multi_aff multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
10215 {
10216   return isl::checked::pw_multi_aff(*this).extract_pw_multi_aff(space);
10217 }
10218 
flat_range_product(isl::checked::multi_aff multi2)10219 isl::checked::multi_aff multi_aff::flat_range_product(isl::checked::multi_aff multi2) const
10220 {
10221   auto res = isl_multi_aff_flat_range_product(copy(), multi2.release());
10222   return manage(res);
10223 }
10224 
flat_range_product(const isl::checked::multi_pw_aff & multi2)10225 isl::checked::multi_pw_aff multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
10226 {
10227   return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
10228 }
10229 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)10230 isl::checked::multi_union_pw_aff multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
10231 {
10232   return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
10233 }
10234 
flat_range_product(const isl::checked::pw_multi_aff & pma2)10235 isl::checked::pw_multi_aff multi_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
10236 {
10237   return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
10238 }
10239 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)10240 isl::checked::union_pw_multi_aff multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
10241 {
10242   return isl::checked::pw_multi_aff(*this).flat_range_product(upma2);
10243 }
10244 
flat_range_product(const isl::checked::aff & multi2)10245 isl::checked::multi_aff multi_aff::flat_range_product(const isl::checked::aff &multi2) const
10246 {
10247   return this->flat_range_product(isl::checked::multi_aff(multi2));
10248 }
10249 
floor()10250 isl::checked::multi_aff multi_aff::floor() const
10251 {
10252   auto res = isl_multi_aff_floor(copy());
10253   return manage(res);
10254 }
10255 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)10256 stat multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
10257 {
10258   return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
10259 }
10260 
gist(isl::checked::set context)10261 isl::checked::multi_aff multi_aff::gist(isl::checked::set context) const
10262 {
10263   auto res = isl_multi_aff_gist(copy(), context.release());
10264   return manage(res);
10265 }
10266 
gist(const isl::checked::union_set & context)10267 isl::checked::union_pw_multi_aff multi_aff::gist(const isl::checked::union_set &context) const
10268 {
10269   return isl::checked::pw_multi_aff(*this).gist(context);
10270 }
10271 
gist(const isl::checked::basic_set & context)10272 isl::checked::multi_aff multi_aff::gist(const isl::checked::basic_set &context) const
10273 {
10274   return this->gist(isl::checked::set(context));
10275 }
10276 
gist(const isl::checked::point & context)10277 isl::checked::multi_aff multi_aff::gist(const isl::checked::point &context) const
10278 {
10279   return this->gist(isl::checked::set(context));
10280 }
10281 
has_range_tuple_id()10282 boolean multi_aff::has_range_tuple_id() const
10283 {
10284   auto res = isl_multi_aff_has_range_tuple_id(get());
10285   return manage(res);
10286 }
10287 
identity()10288 isl::checked::multi_aff multi_aff::identity() const
10289 {
10290   auto res = isl_multi_aff_identity_multi_aff(copy());
10291   return manage(res);
10292 }
10293 
identity_on_domain(isl::checked::space space)10294 isl::checked::multi_aff multi_aff::identity_on_domain(isl::checked::space space)
10295 {
10296   auto res = isl_multi_aff_identity_on_domain_space(space.release());
10297   return manage(res);
10298 }
10299 
insert_domain(isl::checked::space domain)10300 isl::checked::multi_aff multi_aff::insert_domain(isl::checked::space domain) const
10301 {
10302   auto res = isl_multi_aff_insert_domain(copy(), domain.release());
10303   return manage(res);
10304 }
10305 
intersect_domain(const isl::checked::set & set)10306 isl::checked::pw_multi_aff multi_aff::intersect_domain(const isl::checked::set &set) const
10307 {
10308   return isl::checked::pw_multi_aff(*this).intersect_domain(set);
10309 }
10310 
intersect_domain(const isl::checked::space & space)10311 isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::space &space) const
10312 {
10313   return isl::checked::pw_multi_aff(*this).intersect_domain(space);
10314 }
10315 
intersect_domain(const isl::checked::union_set & uset)10316 isl::checked::union_pw_multi_aff multi_aff::intersect_domain(const isl::checked::union_set &uset) const
10317 {
10318   return isl::checked::pw_multi_aff(*this).intersect_domain(uset);
10319 }
10320 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)10321 isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
10322 {
10323   return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
10324 }
10325 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)10326 isl::checked::union_pw_multi_aff multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
10327 {
10328   return isl::checked::pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
10329 }
10330 
intersect_params(const isl::checked::set & set)10331 isl::checked::pw_multi_aff multi_aff::intersect_params(const isl::checked::set &set) const
10332 {
10333   return isl::checked::pw_multi_aff(*this).intersect_params(set);
10334 }
10335 
involves_locals()10336 boolean multi_aff::involves_locals() const
10337 {
10338   auto res = isl_multi_aff_involves_locals(get());
10339   return manage(res);
10340 }
10341 
involves_nan()10342 boolean multi_aff::involves_nan() const
10343 {
10344   auto res = isl_multi_aff_involves_nan(get());
10345   return manage(res);
10346 }
10347 
involves_param(const isl::checked::id & id)10348 boolean multi_aff::involves_param(const isl::checked::id &id) const
10349 {
10350   return isl::checked::pw_multi_aff(*this).involves_param(id);
10351 }
10352 
involves_param(const std::string & id)10353 boolean multi_aff::involves_param(const std::string &id) const
10354 {
10355   return this->involves_param(isl::checked::id(ctx(), id));
10356 }
10357 
involves_param(const isl::checked::id_list & list)10358 boolean multi_aff::involves_param(const isl::checked::id_list &list) const
10359 {
10360   return isl::checked::pw_multi_aff(*this).involves_param(list);
10361 }
10362 
isa_multi_aff()10363 boolean multi_aff::isa_multi_aff() const
10364 {
10365   return isl::checked::pw_multi_aff(*this).isa_multi_aff();
10366 }
10367 
isa_pw_multi_aff()10368 boolean multi_aff::isa_pw_multi_aff() const
10369 {
10370   return isl::checked::pw_multi_aff(*this).isa_pw_multi_aff();
10371 }
10372 
list()10373 isl::checked::aff_list multi_aff::list() const
10374 {
10375   auto res = isl_multi_aff_get_list(get());
10376   return manage(res);
10377 }
10378 
get_list()10379 isl::checked::aff_list multi_aff::get_list() const
10380 {
10381   return list();
10382 }
10383 
max(const isl::checked::multi_pw_aff & multi2)10384 isl::checked::multi_pw_aff multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
10385 {
10386   return isl::checked::pw_multi_aff(*this).max(multi2);
10387 }
10388 
max_multi_val()10389 isl::checked::multi_val multi_aff::max_multi_val() const
10390 {
10391   return isl::checked::pw_multi_aff(*this).max_multi_val();
10392 }
10393 
min(const isl::checked::multi_pw_aff & multi2)10394 isl::checked::multi_pw_aff multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
10395 {
10396   return isl::checked::pw_multi_aff(*this).min(multi2);
10397 }
10398 
min_multi_val()10399 isl::checked::multi_val multi_aff::min_multi_val() const
10400 {
10401   return isl::checked::pw_multi_aff(*this).min_multi_val();
10402 }
10403 
multi_val_on_domain(isl::checked::space space,isl::checked::multi_val mv)10404 isl::checked::multi_aff multi_aff::multi_val_on_domain(isl::checked::space space, isl::checked::multi_val mv)
10405 {
10406   auto res = isl_multi_aff_multi_val_on_domain_space(space.release(), mv.release());
10407   return manage(res);
10408 }
10409 
n_piece()10410 class size multi_aff::n_piece() const
10411 {
10412   return isl::checked::pw_multi_aff(*this).n_piece();
10413 }
10414 
neg()10415 isl::checked::multi_aff multi_aff::neg() const
10416 {
10417   auto res = isl_multi_aff_neg(copy());
10418   return manage(res);
10419 }
10420 
plain_is_empty()10421 boolean multi_aff::plain_is_empty() const
10422 {
10423   return isl::checked::pw_multi_aff(*this).plain_is_empty();
10424 }
10425 
plain_is_equal(const isl::checked::multi_aff & multi2)10426 boolean multi_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
10427 {
10428   auto res = isl_multi_aff_plain_is_equal(get(), multi2.get());
10429   return manage(res);
10430 }
10431 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)10432 boolean multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
10433 {
10434   return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
10435 }
10436 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)10437 boolean multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
10438 {
10439   return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
10440 }
10441 
plain_is_equal(const isl::checked::aff & multi2)10442 boolean multi_aff::plain_is_equal(const isl::checked::aff &multi2) const
10443 {
10444   return this->plain_is_equal(isl::checked::multi_aff(multi2));
10445 }
10446 
preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff & pma2)10447 isl::checked::pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
10448 {
10449   return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
10450 }
10451 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)10452 isl::checked::union_pw_multi_aff multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
10453 {
10454   return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
10455 }
10456 
product(isl::checked::multi_aff multi2)10457 isl::checked::multi_aff multi_aff::product(isl::checked::multi_aff multi2) const
10458 {
10459   auto res = isl_multi_aff_product(copy(), multi2.release());
10460   return manage(res);
10461 }
10462 
product(const isl::checked::multi_pw_aff & multi2)10463 isl::checked::multi_pw_aff multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
10464 {
10465   return isl::checked::pw_multi_aff(*this).product(multi2);
10466 }
10467 
product(const isl::checked::pw_multi_aff & pma2)10468 isl::checked::pw_multi_aff multi_aff::product(const isl::checked::pw_multi_aff &pma2) const
10469 {
10470   return isl::checked::pw_multi_aff(*this).product(pma2);
10471 }
10472 
product(const isl::checked::aff & multi2)10473 isl::checked::multi_aff multi_aff::product(const isl::checked::aff &multi2) const
10474 {
10475   return this->product(isl::checked::multi_aff(multi2));
10476 }
10477 
pullback(isl::checked::multi_aff ma2)10478 isl::checked::multi_aff multi_aff::pullback(isl::checked::multi_aff ma2) const
10479 {
10480   auto res = isl_multi_aff_pullback_multi_aff(copy(), ma2.release());
10481   return manage(res);
10482 }
10483 
pullback(const isl::checked::multi_pw_aff & mpa2)10484 isl::checked::multi_pw_aff multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
10485 {
10486   return isl::checked::pw_multi_aff(*this).pullback(mpa2);
10487 }
10488 
pullback(const isl::checked::pw_multi_aff & pma2)10489 isl::checked::pw_multi_aff multi_aff::pullback(const isl::checked::pw_multi_aff &pma2) const
10490 {
10491   return isl::checked::pw_multi_aff(*this).pullback(pma2);
10492 }
10493 
pullback(const isl::checked::union_pw_multi_aff & upma2)10494 isl::checked::union_pw_multi_aff multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
10495 {
10496   return isl::checked::pw_multi_aff(*this).pullback(upma2);
10497 }
10498 
pullback(const isl::checked::aff & ma2)10499 isl::checked::multi_aff multi_aff::pullback(const isl::checked::aff &ma2) const
10500 {
10501   return this->pullback(isl::checked::multi_aff(ma2));
10502 }
10503 
pw_multi_aff_list()10504 isl::checked::pw_multi_aff_list multi_aff::pw_multi_aff_list() const
10505 {
10506   return isl::checked::pw_multi_aff(*this).pw_multi_aff_list();
10507 }
10508 
range_factor_domain()10509 isl::checked::pw_multi_aff multi_aff::range_factor_domain() const
10510 {
10511   return isl::checked::pw_multi_aff(*this).range_factor_domain();
10512 }
10513 
range_factor_range()10514 isl::checked::pw_multi_aff multi_aff::range_factor_range() const
10515 {
10516   return isl::checked::pw_multi_aff(*this).range_factor_range();
10517 }
10518 
range_map(isl::checked::space space)10519 isl::checked::multi_aff multi_aff::range_map(isl::checked::space space)
10520 {
10521   auto res = isl_multi_aff_range_map(space.release());
10522   return manage(res);
10523 }
10524 
range_product(isl::checked::multi_aff multi2)10525 isl::checked::multi_aff multi_aff::range_product(isl::checked::multi_aff multi2) const
10526 {
10527   auto res = isl_multi_aff_range_product(copy(), multi2.release());
10528   return manage(res);
10529 }
10530 
range_product(const isl::checked::multi_pw_aff & multi2)10531 isl::checked::multi_pw_aff multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
10532 {
10533   return isl::checked::pw_multi_aff(*this).range_product(multi2);
10534 }
10535 
range_product(const isl::checked::multi_union_pw_aff & multi2)10536 isl::checked::multi_union_pw_aff multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
10537 {
10538   return isl::checked::pw_multi_aff(*this).range_product(multi2);
10539 }
10540 
range_product(const isl::checked::pw_multi_aff & pma2)10541 isl::checked::pw_multi_aff multi_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
10542 {
10543   return isl::checked::pw_multi_aff(*this).range_product(pma2);
10544 }
10545 
range_product(const isl::checked::union_pw_multi_aff & upma2)10546 isl::checked::union_pw_multi_aff multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
10547 {
10548   return isl::checked::pw_multi_aff(*this).range_product(upma2);
10549 }
10550 
range_product(const isl::checked::aff & multi2)10551 isl::checked::multi_aff multi_aff::range_product(const isl::checked::aff &multi2) const
10552 {
10553   return this->range_product(isl::checked::multi_aff(multi2));
10554 }
10555 
range_tuple_id()10556 isl::checked::id multi_aff::range_tuple_id() const
10557 {
10558   auto res = isl_multi_aff_get_range_tuple_id(get());
10559   return manage(res);
10560 }
10561 
get_range_tuple_id()10562 isl::checked::id multi_aff::get_range_tuple_id() const
10563 {
10564   return range_tuple_id();
10565 }
10566 
reset_range_tuple_id()10567 isl::checked::multi_aff multi_aff::reset_range_tuple_id() const
10568 {
10569   auto res = isl_multi_aff_reset_range_tuple_id(copy());
10570   return manage(res);
10571 }
10572 
scale(isl::checked::multi_val mv)10573 isl::checked::multi_aff multi_aff::scale(isl::checked::multi_val mv) const
10574 {
10575   auto res = isl_multi_aff_scale_multi_val(copy(), mv.release());
10576   return manage(res);
10577 }
10578 
scale(isl::checked::val v)10579 isl::checked::multi_aff multi_aff::scale(isl::checked::val v) const
10580 {
10581   auto res = isl_multi_aff_scale_val(copy(), v.release());
10582   return manage(res);
10583 }
10584 
scale(long v)10585 isl::checked::multi_aff multi_aff::scale(long v) const
10586 {
10587   return this->scale(isl::checked::val(ctx(), v));
10588 }
10589 
scale_down(isl::checked::multi_val mv)10590 isl::checked::multi_aff multi_aff::scale_down(isl::checked::multi_val mv) const
10591 {
10592   auto res = isl_multi_aff_scale_down_multi_val(copy(), mv.release());
10593   return manage(res);
10594 }
10595 
scale_down(isl::checked::val v)10596 isl::checked::multi_aff multi_aff::scale_down(isl::checked::val v) const
10597 {
10598   auto res = isl_multi_aff_scale_down_val(copy(), v.release());
10599   return manage(res);
10600 }
10601 
scale_down(long v)10602 isl::checked::multi_aff multi_aff::scale_down(long v) const
10603 {
10604   return this->scale_down(isl::checked::val(ctx(), v));
10605 }
10606 
set_at(int pos,isl::checked::aff el)10607 isl::checked::multi_aff multi_aff::set_at(int pos, isl::checked::aff el) const
10608 {
10609   auto res = isl_multi_aff_set_at(copy(), pos, el.release());
10610   return manage(res);
10611 }
10612 
set_at(int pos,const isl::checked::pw_aff & el)10613 isl::checked::multi_pw_aff multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
10614 {
10615   return isl::checked::pw_multi_aff(*this).set_at(pos, el);
10616 }
10617 
set_at(int pos,const isl::checked::union_pw_aff & el)10618 isl::checked::multi_union_pw_aff multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
10619 {
10620   return isl::checked::pw_multi_aff(*this).set_at(pos, el);
10621 }
10622 
set_range_tuple(isl::checked::id id)10623 isl::checked::multi_aff multi_aff::set_range_tuple(isl::checked::id id) const
10624 {
10625   auto res = isl_multi_aff_set_range_tuple_id(copy(), id.release());
10626   return manage(res);
10627 }
10628 
set_range_tuple(const std::string & id)10629 isl::checked::multi_aff multi_aff::set_range_tuple(const std::string &id) const
10630 {
10631   return this->set_range_tuple(isl::checked::id(ctx(), id));
10632 }
10633 
size()10634 class size multi_aff::size() const
10635 {
10636   auto res = isl_multi_aff_size(get());
10637   return manage(res);
10638 }
10639 
space()10640 isl::checked::space multi_aff::space() const
10641 {
10642   auto res = isl_multi_aff_get_space(get());
10643   return manage(res);
10644 }
10645 
get_space()10646 isl::checked::space multi_aff::get_space() const
10647 {
10648   return space();
10649 }
10650 
sub(isl::checked::multi_aff multi2)10651 isl::checked::multi_aff multi_aff::sub(isl::checked::multi_aff multi2) const
10652 {
10653   auto res = isl_multi_aff_sub(copy(), multi2.release());
10654   return manage(res);
10655 }
10656 
sub(const isl::checked::multi_pw_aff & multi2)10657 isl::checked::multi_pw_aff multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
10658 {
10659   return isl::checked::pw_multi_aff(*this).sub(multi2);
10660 }
10661 
sub(const isl::checked::multi_union_pw_aff & multi2)10662 isl::checked::multi_union_pw_aff multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
10663 {
10664   return isl::checked::pw_multi_aff(*this).sub(multi2);
10665 }
10666 
sub(const isl::checked::pw_multi_aff & pma2)10667 isl::checked::pw_multi_aff multi_aff::sub(const isl::checked::pw_multi_aff &pma2) const
10668 {
10669   return isl::checked::pw_multi_aff(*this).sub(pma2);
10670 }
10671 
sub(const isl::checked::union_pw_multi_aff & upma2)10672 isl::checked::union_pw_multi_aff multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
10673 {
10674   return isl::checked::pw_multi_aff(*this).sub(upma2);
10675 }
10676 
sub(const isl::checked::aff & multi2)10677 isl::checked::multi_aff multi_aff::sub(const isl::checked::aff &multi2) const
10678 {
10679   return this->sub(isl::checked::multi_aff(multi2));
10680 }
10681 
subtract_domain(const isl::checked::set & set)10682 isl::checked::pw_multi_aff multi_aff::subtract_domain(const isl::checked::set &set) const
10683 {
10684   return isl::checked::pw_multi_aff(*this).subtract_domain(set);
10685 }
10686 
subtract_domain(const isl::checked::space & space)10687 isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::space &space) const
10688 {
10689   return isl::checked::pw_multi_aff(*this).subtract_domain(space);
10690 }
10691 
subtract_domain(const isl::checked::union_set & uset)10692 isl::checked::union_pw_multi_aff multi_aff::subtract_domain(const isl::checked::union_set &uset) const
10693 {
10694   return isl::checked::pw_multi_aff(*this).subtract_domain(uset);
10695 }
10696 
to_list()10697 isl::checked::pw_multi_aff_list multi_aff::to_list() const
10698 {
10699   return isl::checked::pw_multi_aff(*this).to_list();
10700 }
10701 
to_multi_pw_aff()10702 isl::checked::multi_pw_aff multi_aff::to_multi_pw_aff() const
10703 {
10704   auto res = isl_multi_aff_to_multi_pw_aff(copy());
10705   return manage(res);
10706 }
10707 
to_multi_union_pw_aff()10708 isl::checked::multi_union_pw_aff multi_aff::to_multi_union_pw_aff() const
10709 {
10710   auto res = isl_multi_aff_to_multi_union_pw_aff(copy());
10711   return manage(res);
10712 }
10713 
to_pw_multi_aff()10714 isl::checked::pw_multi_aff multi_aff::to_pw_multi_aff() const
10715 {
10716   auto res = isl_multi_aff_to_pw_multi_aff(copy());
10717   return manage(res);
10718 }
10719 
to_union_pw_multi_aff()10720 isl::checked::union_pw_multi_aff multi_aff::to_union_pw_multi_aff() const
10721 {
10722   return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
10723 }
10724 
unbind_params_insert_domain(isl::checked::multi_id domain)10725 isl::checked::multi_aff multi_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
10726 {
10727   auto res = isl_multi_aff_unbind_params_insert_domain(copy(), domain.release());
10728   return manage(res);
10729 }
10730 
union_add(const isl::checked::multi_pw_aff & mpa2)10731 isl::checked::multi_pw_aff multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
10732 {
10733   return isl::checked::pw_multi_aff(*this).union_add(mpa2);
10734 }
10735 
union_add(const isl::checked::multi_union_pw_aff & mupa2)10736 isl::checked::multi_union_pw_aff multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
10737 {
10738   return isl::checked::pw_multi_aff(*this).union_add(mupa2);
10739 }
10740 
union_add(const isl::checked::pw_multi_aff & pma2)10741 isl::checked::pw_multi_aff multi_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
10742 {
10743   return isl::checked::pw_multi_aff(*this).union_add(pma2);
10744 }
10745 
union_add(const isl::checked::union_pw_multi_aff & upma2)10746 isl::checked::union_pw_multi_aff multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
10747 {
10748   return isl::checked::pw_multi_aff(*this).union_add(upma2);
10749 }
10750 
zero(isl::checked::space space)10751 isl::checked::multi_aff multi_aff::zero(isl::checked::space space)
10752 {
10753   auto res = isl_multi_aff_zero(space.release());
10754   return manage(res);
10755 }
10756 
10757 inline std::ostream &operator<<(std::ostream &os, const multi_aff &obj)
10758 {
10759   char *str = isl_multi_aff_to_str(obj.get());
10760   if (!str) {
10761     os.setstate(std::ios_base::badbit);
10762     return os;
10763   }
10764   os << str;
10765   free(str);
10766   return os;
10767 }
10768 
10769 // implementations for isl::multi_id
manage(__isl_take isl_multi_id * ptr)10770 multi_id manage(__isl_take isl_multi_id *ptr) {
10771   return multi_id(ptr);
10772 }
manage_copy(__isl_keep isl_multi_id * ptr)10773 multi_id manage_copy(__isl_keep isl_multi_id *ptr) {
10774   ptr = isl_multi_id_copy(ptr);
10775   return multi_id(ptr);
10776 }
10777 
multi_id()10778 multi_id::multi_id()
10779     : ptr(nullptr) {}
10780 
multi_id(const multi_id & obj)10781 multi_id::multi_id(const multi_id &obj)
10782     : ptr(nullptr)
10783 {
10784   ptr = obj.copy();
10785 }
10786 
multi_id(__isl_take isl_multi_id * ptr)10787 multi_id::multi_id(__isl_take isl_multi_id *ptr)
10788     : ptr(ptr) {}
10789 
multi_id(isl::checked::space space,isl::checked::id_list list)10790 multi_id::multi_id(isl::checked::space space, isl::checked::id_list list)
10791 {
10792   auto res = isl_multi_id_from_id_list(space.release(), list.release());
10793   ptr = res;
10794 }
10795 
multi_id(isl::checked::ctx ctx,const std::string & str)10796 multi_id::multi_id(isl::checked::ctx ctx, const std::string &str)
10797 {
10798   auto res = isl_multi_id_read_from_str(ctx.release(), str.c_str());
10799   ptr = res;
10800 }
10801 
10802 multi_id &multi_id::operator=(multi_id obj) {
10803   std::swap(this->ptr, obj.ptr);
10804   return *this;
10805 }
10806 
~multi_id()10807 multi_id::~multi_id() {
10808   if (ptr)
10809     isl_multi_id_free(ptr);
10810 }
10811 
copy()10812 __isl_give isl_multi_id *multi_id::copy() const & {
10813   return isl_multi_id_copy(ptr);
10814 }
10815 
get()10816 __isl_keep isl_multi_id *multi_id::get() const {
10817   return ptr;
10818 }
10819 
release()10820 __isl_give isl_multi_id *multi_id::release() {
10821   isl_multi_id *tmp = ptr;
10822   ptr = nullptr;
10823   return tmp;
10824 }
10825 
is_null()10826 bool multi_id::is_null() const {
10827   return ptr == nullptr;
10828 }
10829 
ctx()10830 isl::checked::ctx multi_id::ctx() const {
10831   return isl::checked::ctx(isl_multi_id_get_ctx(ptr));
10832 }
10833 
at(int pos)10834 isl::checked::id multi_id::at(int pos) const
10835 {
10836   auto res = isl_multi_id_get_at(get(), pos);
10837   return manage(res);
10838 }
10839 
get_at(int pos)10840 isl::checked::id multi_id::get_at(int pos) const
10841 {
10842   return at(pos);
10843 }
10844 
flat_range_product(isl::checked::multi_id multi2)10845 isl::checked::multi_id multi_id::flat_range_product(isl::checked::multi_id multi2) const
10846 {
10847   auto res = isl_multi_id_flat_range_product(copy(), multi2.release());
10848   return manage(res);
10849 }
10850 
list()10851 isl::checked::id_list multi_id::list() const
10852 {
10853   auto res = isl_multi_id_get_list(get());
10854   return manage(res);
10855 }
10856 
get_list()10857 isl::checked::id_list multi_id::get_list() const
10858 {
10859   return list();
10860 }
10861 
plain_is_equal(const isl::checked::multi_id & multi2)10862 boolean multi_id::plain_is_equal(const isl::checked::multi_id &multi2) const
10863 {
10864   auto res = isl_multi_id_plain_is_equal(get(), multi2.get());
10865   return manage(res);
10866 }
10867 
range_product(isl::checked::multi_id multi2)10868 isl::checked::multi_id multi_id::range_product(isl::checked::multi_id multi2) const
10869 {
10870   auto res = isl_multi_id_range_product(copy(), multi2.release());
10871   return manage(res);
10872 }
10873 
set_at(int pos,isl::checked::id el)10874 isl::checked::multi_id multi_id::set_at(int pos, isl::checked::id el) const
10875 {
10876   auto res = isl_multi_id_set_at(copy(), pos, el.release());
10877   return manage(res);
10878 }
10879 
set_at(int pos,const std::string & el)10880 isl::checked::multi_id multi_id::set_at(int pos, const std::string &el) const
10881 {
10882   return this->set_at(pos, isl::checked::id(ctx(), el));
10883 }
10884 
size()10885 class size multi_id::size() const
10886 {
10887   auto res = isl_multi_id_size(get());
10888   return manage(res);
10889 }
10890 
space()10891 isl::checked::space multi_id::space() const
10892 {
10893   auto res = isl_multi_id_get_space(get());
10894   return manage(res);
10895 }
10896 
get_space()10897 isl::checked::space multi_id::get_space() const
10898 {
10899   return space();
10900 }
10901 
10902 inline std::ostream &operator<<(std::ostream &os, const multi_id &obj)
10903 {
10904   char *str = isl_multi_id_to_str(obj.get());
10905   if (!str) {
10906     os.setstate(std::ios_base::badbit);
10907     return os;
10908   }
10909   os << str;
10910   free(str);
10911   return os;
10912 }
10913 
10914 // implementations for isl::multi_pw_aff
manage(__isl_take isl_multi_pw_aff * ptr)10915 multi_pw_aff manage(__isl_take isl_multi_pw_aff *ptr) {
10916   return multi_pw_aff(ptr);
10917 }
manage_copy(__isl_keep isl_multi_pw_aff * ptr)10918 multi_pw_aff manage_copy(__isl_keep isl_multi_pw_aff *ptr) {
10919   ptr = isl_multi_pw_aff_copy(ptr);
10920   return multi_pw_aff(ptr);
10921 }
10922 
multi_pw_aff()10923 multi_pw_aff::multi_pw_aff()
10924     : ptr(nullptr) {}
10925 
multi_pw_aff(const multi_pw_aff & obj)10926 multi_pw_aff::multi_pw_aff(const multi_pw_aff &obj)
10927     : ptr(nullptr)
10928 {
10929   ptr = obj.copy();
10930 }
10931 
multi_pw_aff(__isl_take isl_multi_pw_aff * ptr)10932 multi_pw_aff::multi_pw_aff(__isl_take isl_multi_pw_aff *ptr)
10933     : ptr(ptr) {}
10934 
multi_pw_aff(isl::checked::aff aff)10935 multi_pw_aff::multi_pw_aff(isl::checked::aff aff)
10936 {
10937   auto res = isl_multi_pw_aff_from_aff(aff.release());
10938   ptr = res;
10939 }
10940 
multi_pw_aff(isl::checked::multi_aff ma)10941 multi_pw_aff::multi_pw_aff(isl::checked::multi_aff ma)
10942 {
10943   auto res = isl_multi_pw_aff_from_multi_aff(ma.release());
10944   ptr = res;
10945 }
10946 
multi_pw_aff(isl::checked::pw_aff pa)10947 multi_pw_aff::multi_pw_aff(isl::checked::pw_aff pa)
10948 {
10949   auto res = isl_multi_pw_aff_from_pw_aff(pa.release());
10950   ptr = res;
10951 }
10952 
multi_pw_aff(isl::checked::space space,isl::checked::pw_aff_list list)10953 multi_pw_aff::multi_pw_aff(isl::checked::space space, isl::checked::pw_aff_list list)
10954 {
10955   auto res = isl_multi_pw_aff_from_pw_aff_list(space.release(), list.release());
10956   ptr = res;
10957 }
10958 
multi_pw_aff(isl::checked::pw_multi_aff pma)10959 multi_pw_aff::multi_pw_aff(isl::checked::pw_multi_aff pma)
10960 {
10961   auto res = isl_multi_pw_aff_from_pw_multi_aff(pma.release());
10962   ptr = res;
10963 }
10964 
multi_pw_aff(isl::checked::ctx ctx,const std::string & str)10965 multi_pw_aff::multi_pw_aff(isl::checked::ctx ctx, const std::string &str)
10966 {
10967   auto res = isl_multi_pw_aff_read_from_str(ctx.release(), str.c_str());
10968   ptr = res;
10969 }
10970 
10971 multi_pw_aff &multi_pw_aff::operator=(multi_pw_aff obj) {
10972   std::swap(this->ptr, obj.ptr);
10973   return *this;
10974 }
10975 
~multi_pw_aff()10976 multi_pw_aff::~multi_pw_aff() {
10977   if (ptr)
10978     isl_multi_pw_aff_free(ptr);
10979 }
10980 
copy()10981 __isl_give isl_multi_pw_aff *multi_pw_aff::copy() const & {
10982   return isl_multi_pw_aff_copy(ptr);
10983 }
10984 
get()10985 __isl_keep isl_multi_pw_aff *multi_pw_aff::get() const {
10986   return ptr;
10987 }
10988 
release()10989 __isl_give isl_multi_pw_aff *multi_pw_aff::release() {
10990   isl_multi_pw_aff *tmp = ptr;
10991   ptr = nullptr;
10992   return tmp;
10993 }
10994 
is_null()10995 bool multi_pw_aff::is_null() const {
10996   return ptr == nullptr;
10997 }
10998 
ctx()10999 isl::checked::ctx multi_pw_aff::ctx() const {
11000   return isl::checked::ctx(isl_multi_pw_aff_get_ctx(ptr));
11001 }
11002 
add(isl::checked::multi_pw_aff multi2)11003 isl::checked::multi_pw_aff multi_pw_aff::add(isl::checked::multi_pw_aff multi2) const
11004 {
11005   auto res = isl_multi_pw_aff_add(copy(), multi2.release());
11006   return manage(res);
11007 }
11008 
add(const isl::checked::multi_union_pw_aff & multi2)11009 isl::checked::multi_union_pw_aff multi_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
11010 {
11011   return isl::checked::multi_union_pw_aff(*this).add(multi2);
11012 }
11013 
add(const isl::checked::aff & multi2)11014 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::aff &multi2) const
11015 {
11016   return this->add(isl::checked::multi_pw_aff(multi2));
11017 }
11018 
add(const isl::checked::multi_aff & multi2)11019 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::multi_aff &multi2) const
11020 {
11021   return this->add(isl::checked::multi_pw_aff(multi2));
11022 }
11023 
add(const isl::checked::pw_aff & multi2)11024 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_aff &multi2) const
11025 {
11026   return this->add(isl::checked::multi_pw_aff(multi2));
11027 }
11028 
add(const isl::checked::pw_multi_aff & multi2)11029 isl::checked::multi_pw_aff multi_pw_aff::add(const isl::checked::pw_multi_aff &multi2) const
11030 {
11031   return this->add(isl::checked::multi_pw_aff(multi2));
11032 }
11033 
add_constant(isl::checked::multi_val mv)11034 isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::multi_val mv) const
11035 {
11036   auto res = isl_multi_pw_aff_add_constant_multi_val(copy(), mv.release());
11037   return manage(res);
11038 }
11039 
add_constant(isl::checked::val v)11040 isl::checked::multi_pw_aff multi_pw_aff::add_constant(isl::checked::val v) const
11041 {
11042   auto res = isl_multi_pw_aff_add_constant_val(copy(), v.release());
11043   return manage(res);
11044 }
11045 
add_constant(long v)11046 isl::checked::multi_pw_aff multi_pw_aff::add_constant(long v) const
11047 {
11048   return this->add_constant(isl::checked::val(ctx(), v));
11049 }
11050 
as_map()11051 isl::checked::map multi_pw_aff::as_map() const
11052 {
11053   auto res = isl_multi_pw_aff_as_map(copy());
11054   return manage(res);
11055 }
11056 
as_multi_aff()11057 isl::checked::multi_aff multi_pw_aff::as_multi_aff() const
11058 {
11059   auto res = isl_multi_pw_aff_as_multi_aff(copy());
11060   return manage(res);
11061 }
11062 
as_set()11063 isl::checked::set multi_pw_aff::as_set() const
11064 {
11065   auto res = isl_multi_pw_aff_as_set(copy());
11066   return manage(res);
11067 }
11068 
at(int pos)11069 isl::checked::pw_aff multi_pw_aff::at(int pos) const
11070 {
11071   auto res = isl_multi_pw_aff_get_at(get(), pos);
11072   return manage(res);
11073 }
11074 
get_at(int pos)11075 isl::checked::pw_aff multi_pw_aff::get_at(int pos) const
11076 {
11077   return at(pos);
11078 }
11079 
bind(isl::checked::multi_id tuple)11080 isl::checked::set multi_pw_aff::bind(isl::checked::multi_id tuple) const
11081 {
11082   auto res = isl_multi_pw_aff_bind(copy(), tuple.release());
11083   return manage(res);
11084 }
11085 
bind_domain(isl::checked::multi_id tuple)11086 isl::checked::multi_pw_aff multi_pw_aff::bind_domain(isl::checked::multi_id tuple) const
11087 {
11088   auto res = isl_multi_pw_aff_bind_domain(copy(), tuple.release());
11089   return manage(res);
11090 }
11091 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)11092 isl::checked::multi_pw_aff multi_pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
11093 {
11094   auto res = isl_multi_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
11095   return manage(res);
11096 }
11097 
coalesce()11098 isl::checked::multi_pw_aff multi_pw_aff::coalesce() const
11099 {
11100   auto res = isl_multi_pw_aff_coalesce(copy());
11101   return manage(res);
11102 }
11103 
domain()11104 isl::checked::set multi_pw_aff::domain() const
11105 {
11106   auto res = isl_multi_pw_aff_domain(copy());
11107   return manage(res);
11108 }
11109 
flat_range_product(isl::checked::multi_pw_aff multi2)11110 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(isl::checked::multi_pw_aff multi2) const
11111 {
11112   auto res = isl_multi_pw_aff_flat_range_product(copy(), multi2.release());
11113   return manage(res);
11114 }
11115 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)11116 isl::checked::multi_union_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
11117 {
11118   return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
11119 }
11120 
flat_range_product(const isl::checked::aff & multi2)11121 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::aff &multi2) const
11122 {
11123   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
11124 }
11125 
flat_range_product(const isl::checked::multi_aff & multi2)11126 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::multi_aff &multi2) const
11127 {
11128   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
11129 }
11130 
flat_range_product(const isl::checked::pw_aff & multi2)11131 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_aff &multi2) const
11132 {
11133   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
11134 }
11135 
flat_range_product(const isl::checked::pw_multi_aff & multi2)11136 isl::checked::multi_pw_aff multi_pw_aff::flat_range_product(const isl::checked::pw_multi_aff &multi2) const
11137 {
11138   return this->flat_range_product(isl::checked::multi_pw_aff(multi2));
11139 }
11140 
gist(isl::checked::set set)11141 isl::checked::multi_pw_aff multi_pw_aff::gist(isl::checked::set set) const
11142 {
11143   auto res = isl_multi_pw_aff_gist(copy(), set.release());
11144   return manage(res);
11145 }
11146 
gist(const isl::checked::union_set & context)11147 isl::checked::multi_union_pw_aff multi_pw_aff::gist(const isl::checked::union_set &context) const
11148 {
11149   return isl::checked::multi_union_pw_aff(*this).gist(context);
11150 }
11151 
gist(const isl::checked::basic_set & set)11152 isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::basic_set &set) const
11153 {
11154   return this->gist(isl::checked::set(set));
11155 }
11156 
gist(const isl::checked::point & set)11157 isl::checked::multi_pw_aff multi_pw_aff::gist(const isl::checked::point &set) const
11158 {
11159   return this->gist(isl::checked::set(set));
11160 }
11161 
has_range_tuple_id()11162 boolean multi_pw_aff::has_range_tuple_id() const
11163 {
11164   auto res = isl_multi_pw_aff_has_range_tuple_id(get());
11165   return manage(res);
11166 }
11167 
identity()11168 isl::checked::multi_pw_aff multi_pw_aff::identity() const
11169 {
11170   auto res = isl_multi_pw_aff_identity_multi_pw_aff(copy());
11171   return manage(res);
11172 }
11173 
identity_on_domain(isl::checked::space space)11174 isl::checked::multi_pw_aff multi_pw_aff::identity_on_domain(isl::checked::space space)
11175 {
11176   auto res = isl_multi_pw_aff_identity_on_domain_space(space.release());
11177   return manage(res);
11178 }
11179 
insert_domain(isl::checked::space domain)11180 isl::checked::multi_pw_aff multi_pw_aff::insert_domain(isl::checked::space domain) const
11181 {
11182   auto res = isl_multi_pw_aff_insert_domain(copy(), domain.release());
11183   return manage(res);
11184 }
11185 
intersect_domain(isl::checked::set domain)11186 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(isl::checked::set domain) const
11187 {
11188   auto res = isl_multi_pw_aff_intersect_domain(copy(), domain.release());
11189   return manage(res);
11190 }
11191 
intersect_domain(const isl::checked::union_set & uset)11192 isl::checked::multi_union_pw_aff multi_pw_aff::intersect_domain(const isl::checked::union_set &uset) const
11193 {
11194   return isl::checked::multi_union_pw_aff(*this).intersect_domain(uset);
11195 }
11196 
intersect_domain(const isl::checked::basic_set & domain)11197 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::basic_set &domain) const
11198 {
11199   return this->intersect_domain(isl::checked::set(domain));
11200 }
11201 
intersect_domain(const isl::checked::point & domain)11202 isl::checked::multi_pw_aff multi_pw_aff::intersect_domain(const isl::checked::point &domain) const
11203 {
11204   return this->intersect_domain(isl::checked::set(domain));
11205 }
11206 
intersect_params(isl::checked::set set)11207 isl::checked::multi_pw_aff multi_pw_aff::intersect_params(isl::checked::set set) const
11208 {
11209   auto res = isl_multi_pw_aff_intersect_params(copy(), set.release());
11210   return manage(res);
11211 }
11212 
involves_nan()11213 boolean multi_pw_aff::involves_nan() const
11214 {
11215   auto res = isl_multi_pw_aff_involves_nan(get());
11216   return manage(res);
11217 }
11218 
involves_param(const isl::checked::id & id)11219 boolean multi_pw_aff::involves_param(const isl::checked::id &id) const
11220 {
11221   auto res = isl_multi_pw_aff_involves_param_id(get(), id.get());
11222   return manage(res);
11223 }
11224 
involves_param(const std::string & id)11225 boolean multi_pw_aff::involves_param(const std::string &id) const
11226 {
11227   return this->involves_param(isl::checked::id(ctx(), id));
11228 }
11229 
involves_param(const isl::checked::id_list & list)11230 boolean multi_pw_aff::involves_param(const isl::checked::id_list &list) const
11231 {
11232   auto res = isl_multi_pw_aff_involves_param_id_list(get(), list.get());
11233   return manage(res);
11234 }
11235 
isa_multi_aff()11236 boolean multi_pw_aff::isa_multi_aff() const
11237 {
11238   auto res = isl_multi_pw_aff_isa_multi_aff(get());
11239   return manage(res);
11240 }
11241 
list()11242 isl::checked::pw_aff_list multi_pw_aff::list() const
11243 {
11244   auto res = isl_multi_pw_aff_get_list(get());
11245   return manage(res);
11246 }
11247 
get_list()11248 isl::checked::pw_aff_list multi_pw_aff::get_list() const
11249 {
11250   return list();
11251 }
11252 
max(isl::checked::multi_pw_aff multi2)11253 isl::checked::multi_pw_aff multi_pw_aff::max(isl::checked::multi_pw_aff multi2) const
11254 {
11255   auto res = isl_multi_pw_aff_max(copy(), multi2.release());
11256   return manage(res);
11257 }
11258 
max_multi_val()11259 isl::checked::multi_val multi_pw_aff::max_multi_val() const
11260 {
11261   auto res = isl_multi_pw_aff_max_multi_val(copy());
11262   return manage(res);
11263 }
11264 
min(isl::checked::multi_pw_aff multi2)11265 isl::checked::multi_pw_aff multi_pw_aff::min(isl::checked::multi_pw_aff multi2) const
11266 {
11267   auto res = isl_multi_pw_aff_min(copy(), multi2.release());
11268   return manage(res);
11269 }
11270 
min_multi_val()11271 isl::checked::multi_val multi_pw_aff::min_multi_val() const
11272 {
11273   auto res = isl_multi_pw_aff_min_multi_val(copy());
11274   return manage(res);
11275 }
11276 
neg()11277 isl::checked::multi_pw_aff multi_pw_aff::neg() const
11278 {
11279   auto res = isl_multi_pw_aff_neg(copy());
11280   return manage(res);
11281 }
11282 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)11283 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
11284 {
11285   auto res = isl_multi_pw_aff_plain_is_equal(get(), multi2.get());
11286   return manage(res);
11287 }
11288 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)11289 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
11290 {
11291   return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
11292 }
11293 
plain_is_equal(const isl::checked::aff & multi2)11294 boolean multi_pw_aff::plain_is_equal(const isl::checked::aff &multi2) const
11295 {
11296   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
11297 }
11298 
plain_is_equal(const isl::checked::multi_aff & multi2)11299 boolean multi_pw_aff::plain_is_equal(const isl::checked::multi_aff &multi2) const
11300 {
11301   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
11302 }
11303 
plain_is_equal(const isl::checked::pw_aff & multi2)11304 boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_aff &multi2) const
11305 {
11306   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
11307 }
11308 
plain_is_equal(const isl::checked::pw_multi_aff & multi2)11309 boolean multi_pw_aff::plain_is_equal(const isl::checked::pw_multi_aff &multi2) const
11310 {
11311   return this->plain_is_equal(isl::checked::multi_pw_aff(multi2));
11312 }
11313 
product(isl::checked::multi_pw_aff multi2)11314 isl::checked::multi_pw_aff multi_pw_aff::product(isl::checked::multi_pw_aff multi2) const
11315 {
11316   auto res = isl_multi_pw_aff_product(copy(), multi2.release());
11317   return manage(res);
11318 }
11319 
pullback(isl::checked::multi_aff ma)11320 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_aff ma) const
11321 {
11322   auto res = isl_multi_pw_aff_pullback_multi_aff(copy(), ma.release());
11323   return manage(res);
11324 }
11325 
pullback(isl::checked::multi_pw_aff mpa2)11326 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::multi_pw_aff mpa2) const
11327 {
11328   auto res = isl_multi_pw_aff_pullback_multi_pw_aff(copy(), mpa2.release());
11329   return manage(res);
11330 }
11331 
pullback(isl::checked::pw_multi_aff pma)11332 isl::checked::multi_pw_aff multi_pw_aff::pullback(isl::checked::pw_multi_aff pma) const
11333 {
11334   auto res = isl_multi_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
11335   return manage(res);
11336 }
11337 
pullback(const isl::checked::union_pw_multi_aff & upma)11338 isl::checked::multi_union_pw_aff multi_pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
11339 {
11340   return isl::checked::multi_union_pw_aff(*this).pullback(upma);
11341 }
11342 
range_product(isl::checked::multi_pw_aff multi2)11343 isl::checked::multi_pw_aff multi_pw_aff::range_product(isl::checked::multi_pw_aff multi2) const
11344 {
11345   auto res = isl_multi_pw_aff_range_product(copy(), multi2.release());
11346   return manage(res);
11347 }
11348 
range_product(const isl::checked::multi_union_pw_aff & multi2)11349 isl::checked::multi_union_pw_aff multi_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
11350 {
11351   return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
11352 }
11353 
range_product(const isl::checked::aff & multi2)11354 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::aff &multi2) const
11355 {
11356   return this->range_product(isl::checked::multi_pw_aff(multi2));
11357 }
11358 
range_product(const isl::checked::multi_aff & multi2)11359 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::multi_aff &multi2) const
11360 {
11361   return this->range_product(isl::checked::multi_pw_aff(multi2));
11362 }
11363 
range_product(const isl::checked::pw_aff & multi2)11364 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_aff &multi2) const
11365 {
11366   return this->range_product(isl::checked::multi_pw_aff(multi2));
11367 }
11368 
range_product(const isl::checked::pw_multi_aff & multi2)11369 isl::checked::multi_pw_aff multi_pw_aff::range_product(const isl::checked::pw_multi_aff &multi2) const
11370 {
11371   return this->range_product(isl::checked::multi_pw_aff(multi2));
11372 }
11373 
range_tuple_id()11374 isl::checked::id multi_pw_aff::range_tuple_id() const
11375 {
11376   auto res = isl_multi_pw_aff_get_range_tuple_id(get());
11377   return manage(res);
11378 }
11379 
get_range_tuple_id()11380 isl::checked::id multi_pw_aff::get_range_tuple_id() const
11381 {
11382   return range_tuple_id();
11383 }
11384 
reset_range_tuple_id()11385 isl::checked::multi_pw_aff multi_pw_aff::reset_range_tuple_id() const
11386 {
11387   auto res = isl_multi_pw_aff_reset_range_tuple_id(copy());
11388   return manage(res);
11389 }
11390 
scale(isl::checked::multi_val mv)11391 isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::multi_val mv) const
11392 {
11393   auto res = isl_multi_pw_aff_scale_multi_val(copy(), mv.release());
11394   return manage(res);
11395 }
11396 
scale(isl::checked::val v)11397 isl::checked::multi_pw_aff multi_pw_aff::scale(isl::checked::val v) const
11398 {
11399   auto res = isl_multi_pw_aff_scale_val(copy(), v.release());
11400   return manage(res);
11401 }
11402 
scale(long v)11403 isl::checked::multi_pw_aff multi_pw_aff::scale(long v) const
11404 {
11405   return this->scale(isl::checked::val(ctx(), v));
11406 }
11407 
scale_down(isl::checked::multi_val mv)11408 isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::multi_val mv) const
11409 {
11410   auto res = isl_multi_pw_aff_scale_down_multi_val(copy(), mv.release());
11411   return manage(res);
11412 }
11413 
scale_down(isl::checked::val v)11414 isl::checked::multi_pw_aff multi_pw_aff::scale_down(isl::checked::val v) const
11415 {
11416   auto res = isl_multi_pw_aff_scale_down_val(copy(), v.release());
11417   return manage(res);
11418 }
11419 
scale_down(long v)11420 isl::checked::multi_pw_aff multi_pw_aff::scale_down(long v) const
11421 {
11422   return this->scale_down(isl::checked::val(ctx(), v));
11423 }
11424 
set_at(int pos,isl::checked::pw_aff el)11425 isl::checked::multi_pw_aff multi_pw_aff::set_at(int pos, isl::checked::pw_aff el) const
11426 {
11427   auto res = isl_multi_pw_aff_set_at(copy(), pos, el.release());
11428   return manage(res);
11429 }
11430 
set_at(int pos,const isl::checked::union_pw_aff & el)11431 isl::checked::multi_union_pw_aff multi_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
11432 {
11433   return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
11434 }
11435 
set_range_tuple(isl::checked::id id)11436 isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(isl::checked::id id) const
11437 {
11438   auto res = isl_multi_pw_aff_set_range_tuple_id(copy(), id.release());
11439   return manage(res);
11440 }
11441 
set_range_tuple(const std::string & id)11442 isl::checked::multi_pw_aff multi_pw_aff::set_range_tuple(const std::string &id) const
11443 {
11444   return this->set_range_tuple(isl::checked::id(ctx(), id));
11445 }
11446 
size()11447 class size multi_pw_aff::size() const
11448 {
11449   auto res = isl_multi_pw_aff_size(get());
11450   return manage(res);
11451 }
11452 
space()11453 isl::checked::space multi_pw_aff::space() const
11454 {
11455   auto res = isl_multi_pw_aff_get_space(get());
11456   return manage(res);
11457 }
11458 
get_space()11459 isl::checked::space multi_pw_aff::get_space() const
11460 {
11461   return space();
11462 }
11463 
sub(isl::checked::multi_pw_aff multi2)11464 isl::checked::multi_pw_aff multi_pw_aff::sub(isl::checked::multi_pw_aff multi2) const
11465 {
11466   auto res = isl_multi_pw_aff_sub(copy(), multi2.release());
11467   return manage(res);
11468 }
11469 
sub(const isl::checked::multi_union_pw_aff & multi2)11470 isl::checked::multi_union_pw_aff multi_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
11471 {
11472   return isl::checked::multi_union_pw_aff(*this).sub(multi2);
11473 }
11474 
sub(const isl::checked::aff & multi2)11475 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::aff &multi2) const
11476 {
11477   return this->sub(isl::checked::multi_pw_aff(multi2));
11478 }
11479 
sub(const isl::checked::multi_aff & multi2)11480 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::multi_aff &multi2) const
11481 {
11482   return this->sub(isl::checked::multi_pw_aff(multi2));
11483 }
11484 
sub(const isl::checked::pw_aff & multi2)11485 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_aff &multi2) const
11486 {
11487   return this->sub(isl::checked::multi_pw_aff(multi2));
11488 }
11489 
sub(const isl::checked::pw_multi_aff & multi2)11490 isl::checked::multi_pw_aff multi_pw_aff::sub(const isl::checked::pw_multi_aff &multi2) const
11491 {
11492   return this->sub(isl::checked::multi_pw_aff(multi2));
11493 }
11494 
unbind_params_insert_domain(isl::checked::multi_id domain)11495 isl::checked::multi_pw_aff multi_pw_aff::unbind_params_insert_domain(isl::checked::multi_id domain) const
11496 {
11497   auto res = isl_multi_pw_aff_unbind_params_insert_domain(copy(), domain.release());
11498   return manage(res);
11499 }
11500 
union_add(isl::checked::multi_pw_aff mpa2)11501 isl::checked::multi_pw_aff multi_pw_aff::union_add(isl::checked::multi_pw_aff mpa2) const
11502 {
11503   auto res = isl_multi_pw_aff_union_add(copy(), mpa2.release());
11504   return manage(res);
11505 }
11506 
union_add(const isl::checked::multi_union_pw_aff & mupa2)11507 isl::checked::multi_union_pw_aff multi_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
11508 {
11509   return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
11510 }
11511 
union_add(const isl::checked::aff & mpa2)11512 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::aff &mpa2) const
11513 {
11514   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11515 }
11516 
union_add(const isl::checked::multi_aff & mpa2)11517 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::multi_aff &mpa2) const
11518 {
11519   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11520 }
11521 
union_add(const isl::checked::pw_aff & mpa2)11522 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_aff &mpa2) const
11523 {
11524   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11525 }
11526 
union_add(const isl::checked::pw_multi_aff & mpa2)11527 isl::checked::multi_pw_aff multi_pw_aff::union_add(const isl::checked::pw_multi_aff &mpa2) const
11528 {
11529   return this->union_add(isl::checked::multi_pw_aff(mpa2));
11530 }
11531 
zero(isl::checked::space space)11532 isl::checked::multi_pw_aff multi_pw_aff::zero(isl::checked::space space)
11533 {
11534   auto res = isl_multi_pw_aff_zero(space.release());
11535   return manage(res);
11536 }
11537 
11538 inline std::ostream &operator<<(std::ostream &os, const multi_pw_aff &obj)
11539 {
11540   char *str = isl_multi_pw_aff_to_str(obj.get());
11541   if (!str) {
11542     os.setstate(std::ios_base::badbit);
11543     return os;
11544   }
11545   os << str;
11546   free(str);
11547   return os;
11548 }
11549 
11550 // implementations for isl::multi_union_pw_aff
manage(__isl_take isl_multi_union_pw_aff * ptr)11551 multi_union_pw_aff manage(__isl_take isl_multi_union_pw_aff *ptr) {
11552   return multi_union_pw_aff(ptr);
11553 }
manage_copy(__isl_keep isl_multi_union_pw_aff * ptr)11554 multi_union_pw_aff manage_copy(__isl_keep isl_multi_union_pw_aff *ptr) {
11555   ptr = isl_multi_union_pw_aff_copy(ptr);
11556   return multi_union_pw_aff(ptr);
11557 }
11558 
multi_union_pw_aff()11559 multi_union_pw_aff::multi_union_pw_aff()
11560     : ptr(nullptr) {}
11561 
multi_union_pw_aff(const multi_union_pw_aff & obj)11562 multi_union_pw_aff::multi_union_pw_aff(const multi_union_pw_aff &obj)
11563     : ptr(nullptr)
11564 {
11565   ptr = obj.copy();
11566 }
11567 
multi_union_pw_aff(__isl_take isl_multi_union_pw_aff * ptr)11568 multi_union_pw_aff::multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *ptr)
11569     : ptr(ptr) {}
11570 
multi_union_pw_aff(isl::checked::multi_pw_aff mpa)11571 multi_union_pw_aff::multi_union_pw_aff(isl::checked::multi_pw_aff mpa)
11572 {
11573   auto res = isl_multi_union_pw_aff_from_multi_pw_aff(mpa.release());
11574   ptr = res;
11575 }
11576 
multi_union_pw_aff(isl::checked::union_pw_aff upa)11577 multi_union_pw_aff::multi_union_pw_aff(isl::checked::union_pw_aff upa)
11578 {
11579   auto res = isl_multi_union_pw_aff_from_union_pw_aff(upa.release());
11580   ptr = res;
11581 }
11582 
multi_union_pw_aff(isl::checked::space space,isl::checked::union_pw_aff_list list)11583 multi_union_pw_aff::multi_union_pw_aff(isl::checked::space space, isl::checked::union_pw_aff_list list)
11584 {
11585   auto res = isl_multi_union_pw_aff_from_union_pw_aff_list(space.release(), list.release());
11586   ptr = res;
11587 }
11588 
multi_union_pw_aff(isl::checked::ctx ctx,const std::string & str)11589 multi_union_pw_aff::multi_union_pw_aff(isl::checked::ctx ctx, const std::string &str)
11590 {
11591   auto res = isl_multi_union_pw_aff_read_from_str(ctx.release(), str.c_str());
11592   ptr = res;
11593 }
11594 
11595 multi_union_pw_aff &multi_union_pw_aff::operator=(multi_union_pw_aff obj) {
11596   std::swap(this->ptr, obj.ptr);
11597   return *this;
11598 }
11599 
~multi_union_pw_aff()11600 multi_union_pw_aff::~multi_union_pw_aff() {
11601   if (ptr)
11602     isl_multi_union_pw_aff_free(ptr);
11603 }
11604 
copy()11605 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::copy() const & {
11606   return isl_multi_union_pw_aff_copy(ptr);
11607 }
11608 
get()11609 __isl_keep isl_multi_union_pw_aff *multi_union_pw_aff::get() const {
11610   return ptr;
11611 }
11612 
release()11613 __isl_give isl_multi_union_pw_aff *multi_union_pw_aff::release() {
11614   isl_multi_union_pw_aff *tmp = ptr;
11615   ptr = nullptr;
11616   return tmp;
11617 }
11618 
is_null()11619 bool multi_union_pw_aff::is_null() const {
11620   return ptr == nullptr;
11621 }
11622 
ctx()11623 isl::checked::ctx multi_union_pw_aff::ctx() const {
11624   return isl::checked::ctx(isl_multi_union_pw_aff_get_ctx(ptr));
11625 }
11626 
add(isl::checked::multi_union_pw_aff multi2)11627 isl::checked::multi_union_pw_aff multi_union_pw_aff::add(isl::checked::multi_union_pw_aff multi2) const
11628 {
11629   auto res = isl_multi_union_pw_aff_add(copy(), multi2.release());
11630   return manage(res);
11631 }
11632 
at(int pos)11633 isl::checked::union_pw_aff multi_union_pw_aff::at(int pos) const
11634 {
11635   auto res = isl_multi_union_pw_aff_get_at(get(), pos);
11636   return manage(res);
11637 }
11638 
get_at(int pos)11639 isl::checked::union_pw_aff multi_union_pw_aff::get_at(int pos) const
11640 {
11641   return at(pos);
11642 }
11643 
bind(isl::checked::multi_id tuple)11644 isl::checked::union_set multi_union_pw_aff::bind(isl::checked::multi_id tuple) const
11645 {
11646   auto res = isl_multi_union_pw_aff_bind(copy(), tuple.release());
11647   return manage(res);
11648 }
11649 
coalesce()11650 isl::checked::multi_union_pw_aff multi_union_pw_aff::coalesce() const
11651 {
11652   auto res = isl_multi_union_pw_aff_coalesce(copy());
11653   return manage(res);
11654 }
11655 
domain()11656 isl::checked::union_set multi_union_pw_aff::domain() const
11657 {
11658   auto res = isl_multi_union_pw_aff_domain(copy());
11659   return manage(res);
11660 }
11661 
flat_range_product(isl::checked::multi_union_pw_aff multi2)11662 isl::checked::multi_union_pw_aff multi_union_pw_aff::flat_range_product(isl::checked::multi_union_pw_aff multi2) const
11663 {
11664   auto res = isl_multi_union_pw_aff_flat_range_product(copy(), multi2.release());
11665   return manage(res);
11666 }
11667 
gist(isl::checked::union_set context)11668 isl::checked::multi_union_pw_aff multi_union_pw_aff::gist(isl::checked::union_set context) const
11669 {
11670   auto res = isl_multi_union_pw_aff_gist(copy(), context.release());
11671   return manage(res);
11672 }
11673 
has_range_tuple_id()11674 boolean multi_union_pw_aff::has_range_tuple_id() const
11675 {
11676   auto res = isl_multi_union_pw_aff_has_range_tuple_id(get());
11677   return manage(res);
11678 }
11679 
intersect_domain(isl::checked::union_set uset)11680 isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_domain(isl::checked::union_set uset) const
11681 {
11682   auto res = isl_multi_union_pw_aff_intersect_domain(copy(), uset.release());
11683   return manage(res);
11684 }
11685 
intersect_params(isl::checked::set params)11686 isl::checked::multi_union_pw_aff multi_union_pw_aff::intersect_params(isl::checked::set params) const
11687 {
11688   auto res = isl_multi_union_pw_aff_intersect_params(copy(), params.release());
11689   return manage(res);
11690 }
11691 
involves_nan()11692 boolean multi_union_pw_aff::involves_nan() const
11693 {
11694   auto res = isl_multi_union_pw_aff_involves_nan(get());
11695   return manage(res);
11696 }
11697 
list()11698 isl::checked::union_pw_aff_list multi_union_pw_aff::list() const
11699 {
11700   auto res = isl_multi_union_pw_aff_get_list(get());
11701   return manage(res);
11702 }
11703 
get_list()11704 isl::checked::union_pw_aff_list multi_union_pw_aff::get_list() const
11705 {
11706   return list();
11707 }
11708 
neg()11709 isl::checked::multi_union_pw_aff multi_union_pw_aff::neg() const
11710 {
11711   auto res = isl_multi_union_pw_aff_neg(copy());
11712   return manage(res);
11713 }
11714 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)11715 boolean multi_union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
11716 {
11717   auto res = isl_multi_union_pw_aff_plain_is_equal(get(), multi2.get());
11718   return manage(res);
11719 }
11720 
pullback(isl::checked::union_pw_multi_aff upma)11721 isl::checked::multi_union_pw_aff multi_union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
11722 {
11723   auto res = isl_multi_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
11724   return manage(res);
11725 }
11726 
range_product(isl::checked::multi_union_pw_aff multi2)11727 isl::checked::multi_union_pw_aff multi_union_pw_aff::range_product(isl::checked::multi_union_pw_aff multi2) const
11728 {
11729   auto res = isl_multi_union_pw_aff_range_product(copy(), multi2.release());
11730   return manage(res);
11731 }
11732 
range_tuple_id()11733 isl::checked::id multi_union_pw_aff::range_tuple_id() const
11734 {
11735   auto res = isl_multi_union_pw_aff_get_range_tuple_id(get());
11736   return manage(res);
11737 }
11738 
get_range_tuple_id()11739 isl::checked::id multi_union_pw_aff::get_range_tuple_id() const
11740 {
11741   return range_tuple_id();
11742 }
11743 
reset_range_tuple_id()11744 isl::checked::multi_union_pw_aff multi_union_pw_aff::reset_range_tuple_id() const
11745 {
11746   auto res = isl_multi_union_pw_aff_reset_range_tuple_id(copy());
11747   return manage(res);
11748 }
11749 
scale(isl::checked::multi_val mv)11750 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::multi_val mv) const
11751 {
11752   auto res = isl_multi_union_pw_aff_scale_multi_val(copy(), mv.release());
11753   return manage(res);
11754 }
11755 
scale(isl::checked::val v)11756 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(isl::checked::val v) const
11757 {
11758   auto res = isl_multi_union_pw_aff_scale_val(copy(), v.release());
11759   return manage(res);
11760 }
11761 
scale(long v)11762 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale(long v) const
11763 {
11764   return this->scale(isl::checked::val(ctx(), v));
11765 }
11766 
scale_down(isl::checked::multi_val mv)11767 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::multi_val mv) const
11768 {
11769   auto res = isl_multi_union_pw_aff_scale_down_multi_val(copy(), mv.release());
11770   return manage(res);
11771 }
11772 
scale_down(isl::checked::val v)11773 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(isl::checked::val v) const
11774 {
11775   auto res = isl_multi_union_pw_aff_scale_down_val(copy(), v.release());
11776   return manage(res);
11777 }
11778 
scale_down(long v)11779 isl::checked::multi_union_pw_aff multi_union_pw_aff::scale_down(long v) const
11780 {
11781   return this->scale_down(isl::checked::val(ctx(), v));
11782 }
11783 
set_at(int pos,isl::checked::union_pw_aff el)11784 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_at(int pos, isl::checked::union_pw_aff el) const
11785 {
11786   auto res = isl_multi_union_pw_aff_set_at(copy(), pos, el.release());
11787   return manage(res);
11788 }
11789 
set_range_tuple(isl::checked::id id)11790 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(isl::checked::id id) const
11791 {
11792   auto res = isl_multi_union_pw_aff_set_range_tuple_id(copy(), id.release());
11793   return manage(res);
11794 }
11795 
set_range_tuple(const std::string & id)11796 isl::checked::multi_union_pw_aff multi_union_pw_aff::set_range_tuple(const std::string &id) const
11797 {
11798   return this->set_range_tuple(isl::checked::id(ctx(), id));
11799 }
11800 
size()11801 class size multi_union_pw_aff::size() const
11802 {
11803   auto res = isl_multi_union_pw_aff_size(get());
11804   return manage(res);
11805 }
11806 
space()11807 isl::checked::space multi_union_pw_aff::space() const
11808 {
11809   auto res = isl_multi_union_pw_aff_get_space(get());
11810   return manage(res);
11811 }
11812 
get_space()11813 isl::checked::space multi_union_pw_aff::get_space() const
11814 {
11815   return space();
11816 }
11817 
sub(isl::checked::multi_union_pw_aff multi2)11818 isl::checked::multi_union_pw_aff multi_union_pw_aff::sub(isl::checked::multi_union_pw_aff multi2) const
11819 {
11820   auto res = isl_multi_union_pw_aff_sub(copy(), multi2.release());
11821   return manage(res);
11822 }
11823 
union_add(isl::checked::multi_union_pw_aff mupa2)11824 isl::checked::multi_union_pw_aff multi_union_pw_aff::union_add(isl::checked::multi_union_pw_aff mupa2) const
11825 {
11826   auto res = isl_multi_union_pw_aff_union_add(copy(), mupa2.release());
11827   return manage(res);
11828 }
11829 
zero(isl::checked::space space)11830 isl::checked::multi_union_pw_aff multi_union_pw_aff::zero(isl::checked::space space)
11831 {
11832   auto res = isl_multi_union_pw_aff_zero(space.release());
11833   return manage(res);
11834 }
11835 
11836 inline std::ostream &operator<<(std::ostream &os, const multi_union_pw_aff &obj)
11837 {
11838   char *str = isl_multi_union_pw_aff_to_str(obj.get());
11839   if (!str) {
11840     os.setstate(std::ios_base::badbit);
11841     return os;
11842   }
11843   os << str;
11844   free(str);
11845   return os;
11846 }
11847 
11848 // implementations for isl::multi_val
manage(__isl_take isl_multi_val * ptr)11849 multi_val manage(__isl_take isl_multi_val *ptr) {
11850   return multi_val(ptr);
11851 }
manage_copy(__isl_keep isl_multi_val * ptr)11852 multi_val manage_copy(__isl_keep isl_multi_val *ptr) {
11853   ptr = isl_multi_val_copy(ptr);
11854   return multi_val(ptr);
11855 }
11856 
multi_val()11857 multi_val::multi_val()
11858     : ptr(nullptr) {}
11859 
multi_val(const multi_val & obj)11860 multi_val::multi_val(const multi_val &obj)
11861     : ptr(nullptr)
11862 {
11863   ptr = obj.copy();
11864 }
11865 
multi_val(__isl_take isl_multi_val * ptr)11866 multi_val::multi_val(__isl_take isl_multi_val *ptr)
11867     : ptr(ptr) {}
11868 
multi_val(isl::checked::space space,isl::checked::val_list list)11869 multi_val::multi_val(isl::checked::space space, isl::checked::val_list list)
11870 {
11871   auto res = isl_multi_val_from_val_list(space.release(), list.release());
11872   ptr = res;
11873 }
11874 
multi_val(isl::checked::ctx ctx,const std::string & str)11875 multi_val::multi_val(isl::checked::ctx ctx, const std::string &str)
11876 {
11877   auto res = isl_multi_val_read_from_str(ctx.release(), str.c_str());
11878   ptr = res;
11879 }
11880 
11881 multi_val &multi_val::operator=(multi_val obj) {
11882   std::swap(this->ptr, obj.ptr);
11883   return *this;
11884 }
11885 
~multi_val()11886 multi_val::~multi_val() {
11887   if (ptr)
11888     isl_multi_val_free(ptr);
11889 }
11890 
copy()11891 __isl_give isl_multi_val *multi_val::copy() const & {
11892   return isl_multi_val_copy(ptr);
11893 }
11894 
get()11895 __isl_keep isl_multi_val *multi_val::get() const {
11896   return ptr;
11897 }
11898 
release()11899 __isl_give isl_multi_val *multi_val::release() {
11900   isl_multi_val *tmp = ptr;
11901   ptr = nullptr;
11902   return tmp;
11903 }
11904 
is_null()11905 bool multi_val::is_null() const {
11906   return ptr == nullptr;
11907 }
11908 
ctx()11909 isl::checked::ctx multi_val::ctx() const {
11910   return isl::checked::ctx(isl_multi_val_get_ctx(ptr));
11911 }
11912 
add(isl::checked::multi_val multi2)11913 isl::checked::multi_val multi_val::add(isl::checked::multi_val multi2) const
11914 {
11915   auto res = isl_multi_val_add(copy(), multi2.release());
11916   return manage(res);
11917 }
11918 
add(isl::checked::val v)11919 isl::checked::multi_val multi_val::add(isl::checked::val v) const
11920 {
11921   auto res = isl_multi_val_add_val(copy(), v.release());
11922   return manage(res);
11923 }
11924 
add(long v)11925 isl::checked::multi_val multi_val::add(long v) const
11926 {
11927   return this->add(isl::checked::val(ctx(), v));
11928 }
11929 
at(int pos)11930 isl::checked::val multi_val::at(int pos) const
11931 {
11932   auto res = isl_multi_val_get_at(get(), pos);
11933   return manage(res);
11934 }
11935 
get_at(int pos)11936 isl::checked::val multi_val::get_at(int pos) const
11937 {
11938   return at(pos);
11939 }
11940 
flat_range_product(isl::checked::multi_val multi2)11941 isl::checked::multi_val multi_val::flat_range_product(isl::checked::multi_val multi2) const
11942 {
11943   auto res = isl_multi_val_flat_range_product(copy(), multi2.release());
11944   return manage(res);
11945 }
11946 
has_range_tuple_id()11947 boolean multi_val::has_range_tuple_id() const
11948 {
11949   auto res = isl_multi_val_has_range_tuple_id(get());
11950   return manage(res);
11951 }
11952 
involves_nan()11953 boolean multi_val::involves_nan() const
11954 {
11955   auto res = isl_multi_val_involves_nan(get());
11956   return manage(res);
11957 }
11958 
list()11959 isl::checked::val_list multi_val::list() const
11960 {
11961   auto res = isl_multi_val_get_list(get());
11962   return manage(res);
11963 }
11964 
get_list()11965 isl::checked::val_list multi_val::get_list() const
11966 {
11967   return list();
11968 }
11969 
max(isl::checked::multi_val multi2)11970 isl::checked::multi_val multi_val::max(isl::checked::multi_val multi2) const
11971 {
11972   auto res = isl_multi_val_max(copy(), multi2.release());
11973   return manage(res);
11974 }
11975 
min(isl::checked::multi_val multi2)11976 isl::checked::multi_val multi_val::min(isl::checked::multi_val multi2) const
11977 {
11978   auto res = isl_multi_val_min(copy(), multi2.release());
11979   return manage(res);
11980 }
11981 
neg()11982 isl::checked::multi_val multi_val::neg() const
11983 {
11984   auto res = isl_multi_val_neg(copy());
11985   return manage(res);
11986 }
11987 
plain_is_equal(const isl::checked::multi_val & multi2)11988 boolean multi_val::plain_is_equal(const isl::checked::multi_val &multi2) const
11989 {
11990   auto res = isl_multi_val_plain_is_equal(get(), multi2.get());
11991   return manage(res);
11992 }
11993 
product(isl::checked::multi_val multi2)11994 isl::checked::multi_val multi_val::product(isl::checked::multi_val multi2) const
11995 {
11996   auto res = isl_multi_val_product(copy(), multi2.release());
11997   return manage(res);
11998 }
11999 
range_product(isl::checked::multi_val multi2)12000 isl::checked::multi_val multi_val::range_product(isl::checked::multi_val multi2) const
12001 {
12002   auto res = isl_multi_val_range_product(copy(), multi2.release());
12003   return manage(res);
12004 }
12005 
range_tuple_id()12006 isl::checked::id multi_val::range_tuple_id() const
12007 {
12008   auto res = isl_multi_val_get_range_tuple_id(get());
12009   return manage(res);
12010 }
12011 
get_range_tuple_id()12012 isl::checked::id multi_val::get_range_tuple_id() const
12013 {
12014   return range_tuple_id();
12015 }
12016 
reset_range_tuple_id()12017 isl::checked::multi_val multi_val::reset_range_tuple_id() const
12018 {
12019   auto res = isl_multi_val_reset_range_tuple_id(copy());
12020   return manage(res);
12021 }
12022 
scale(isl::checked::multi_val mv)12023 isl::checked::multi_val multi_val::scale(isl::checked::multi_val mv) const
12024 {
12025   auto res = isl_multi_val_scale_multi_val(copy(), mv.release());
12026   return manage(res);
12027 }
12028 
scale(isl::checked::val v)12029 isl::checked::multi_val multi_val::scale(isl::checked::val v) const
12030 {
12031   auto res = isl_multi_val_scale_val(copy(), v.release());
12032   return manage(res);
12033 }
12034 
scale(long v)12035 isl::checked::multi_val multi_val::scale(long v) const
12036 {
12037   return this->scale(isl::checked::val(ctx(), v));
12038 }
12039 
scale_down(isl::checked::multi_val mv)12040 isl::checked::multi_val multi_val::scale_down(isl::checked::multi_val mv) const
12041 {
12042   auto res = isl_multi_val_scale_down_multi_val(copy(), mv.release());
12043   return manage(res);
12044 }
12045 
scale_down(isl::checked::val v)12046 isl::checked::multi_val multi_val::scale_down(isl::checked::val v) const
12047 {
12048   auto res = isl_multi_val_scale_down_val(copy(), v.release());
12049   return manage(res);
12050 }
12051 
scale_down(long v)12052 isl::checked::multi_val multi_val::scale_down(long v) const
12053 {
12054   return this->scale_down(isl::checked::val(ctx(), v));
12055 }
12056 
set_at(int pos,isl::checked::val el)12057 isl::checked::multi_val multi_val::set_at(int pos, isl::checked::val el) const
12058 {
12059   auto res = isl_multi_val_set_at(copy(), pos, el.release());
12060   return manage(res);
12061 }
12062 
set_at(int pos,long el)12063 isl::checked::multi_val multi_val::set_at(int pos, long el) const
12064 {
12065   return this->set_at(pos, isl::checked::val(ctx(), el));
12066 }
12067 
set_range_tuple(isl::checked::id id)12068 isl::checked::multi_val multi_val::set_range_tuple(isl::checked::id id) const
12069 {
12070   auto res = isl_multi_val_set_range_tuple_id(copy(), id.release());
12071   return manage(res);
12072 }
12073 
set_range_tuple(const std::string & id)12074 isl::checked::multi_val multi_val::set_range_tuple(const std::string &id) const
12075 {
12076   return this->set_range_tuple(isl::checked::id(ctx(), id));
12077 }
12078 
size()12079 class size multi_val::size() const
12080 {
12081   auto res = isl_multi_val_size(get());
12082   return manage(res);
12083 }
12084 
space()12085 isl::checked::space multi_val::space() const
12086 {
12087   auto res = isl_multi_val_get_space(get());
12088   return manage(res);
12089 }
12090 
get_space()12091 isl::checked::space multi_val::get_space() const
12092 {
12093   return space();
12094 }
12095 
sub(isl::checked::multi_val multi2)12096 isl::checked::multi_val multi_val::sub(isl::checked::multi_val multi2) const
12097 {
12098   auto res = isl_multi_val_sub(copy(), multi2.release());
12099   return manage(res);
12100 }
12101 
zero(isl::checked::space space)12102 isl::checked::multi_val multi_val::zero(isl::checked::space space)
12103 {
12104   auto res = isl_multi_val_zero(space.release());
12105   return manage(res);
12106 }
12107 
12108 inline std::ostream &operator<<(std::ostream &os, const multi_val &obj)
12109 {
12110   char *str = isl_multi_val_to_str(obj.get());
12111   if (!str) {
12112     os.setstate(std::ios_base::badbit);
12113     return os;
12114   }
12115   os << str;
12116   free(str);
12117   return os;
12118 }
12119 
12120 // implementations for isl::point
manage(__isl_take isl_point * ptr)12121 point manage(__isl_take isl_point *ptr) {
12122   return point(ptr);
12123 }
manage_copy(__isl_keep isl_point * ptr)12124 point manage_copy(__isl_keep isl_point *ptr) {
12125   ptr = isl_point_copy(ptr);
12126   return point(ptr);
12127 }
12128 
point()12129 point::point()
12130     : ptr(nullptr) {}
12131 
point(const point & obj)12132 point::point(const point &obj)
12133     : ptr(nullptr)
12134 {
12135   ptr = obj.copy();
12136 }
12137 
point(__isl_take isl_point * ptr)12138 point::point(__isl_take isl_point *ptr)
12139     : ptr(ptr) {}
12140 
12141 point &point::operator=(point obj) {
12142   std::swap(this->ptr, obj.ptr);
12143   return *this;
12144 }
12145 
~point()12146 point::~point() {
12147   if (ptr)
12148     isl_point_free(ptr);
12149 }
12150 
copy()12151 __isl_give isl_point *point::copy() const & {
12152   return isl_point_copy(ptr);
12153 }
12154 
get()12155 __isl_keep isl_point *point::get() const {
12156   return ptr;
12157 }
12158 
release()12159 __isl_give isl_point *point::release() {
12160   isl_point *tmp = ptr;
12161   ptr = nullptr;
12162   return tmp;
12163 }
12164 
is_null()12165 bool point::is_null() const {
12166   return ptr == nullptr;
12167 }
12168 
ctx()12169 isl::checked::ctx point::ctx() const {
12170   return isl::checked::ctx(isl_point_get_ctx(ptr));
12171 }
12172 
affine_hull()12173 isl::checked::basic_set point::affine_hull() const
12174 {
12175   return isl::checked::basic_set(*this).affine_hull();
12176 }
12177 
apply(const isl::checked::basic_map & bmap)12178 isl::checked::basic_set point::apply(const isl::checked::basic_map &bmap) const
12179 {
12180   return isl::checked::basic_set(*this).apply(bmap);
12181 }
12182 
apply(const isl::checked::map & map)12183 isl::checked::set point::apply(const isl::checked::map &map) const
12184 {
12185   return isl::checked::basic_set(*this).apply(map);
12186 }
12187 
apply(const isl::checked::union_map & umap)12188 isl::checked::union_set point::apply(const isl::checked::union_map &umap) const
12189 {
12190   return isl::checked::basic_set(*this).apply(umap);
12191 }
12192 
as_pw_multi_aff()12193 isl::checked::pw_multi_aff point::as_pw_multi_aff() const
12194 {
12195   return isl::checked::basic_set(*this).as_pw_multi_aff();
12196 }
12197 
as_set()12198 isl::checked::set point::as_set() const
12199 {
12200   return isl::checked::basic_set(*this).as_set();
12201 }
12202 
bind(const isl::checked::multi_id & tuple)12203 isl::checked::set point::bind(const isl::checked::multi_id &tuple) const
12204 {
12205   return isl::checked::basic_set(*this).bind(tuple);
12206 }
12207 
coalesce()12208 isl::checked::set point::coalesce() const
12209 {
12210   return isl::checked::basic_set(*this).coalesce();
12211 }
12212 
complement()12213 isl::checked::set point::complement() const
12214 {
12215   return isl::checked::basic_set(*this).complement();
12216 }
12217 
compute_divs()12218 isl::checked::union_set point::compute_divs() const
12219 {
12220   return isl::checked::basic_set(*this).compute_divs();
12221 }
12222 
detect_equalities()12223 isl::checked::basic_set point::detect_equalities() const
12224 {
12225   return isl::checked::basic_set(*this).detect_equalities();
12226 }
12227 
dim_max_val(int pos)12228 isl::checked::val point::dim_max_val(int pos) const
12229 {
12230   return isl::checked::basic_set(*this).dim_max_val(pos);
12231 }
12232 
dim_min_val(int pos)12233 isl::checked::val point::dim_min_val(int pos) const
12234 {
12235   return isl::checked::basic_set(*this).dim_min_val(pos);
12236 }
12237 
every_set(const std::function<boolean (isl::checked::set)> & test)12238 boolean point::every_set(const std::function<boolean(isl::checked::set)> &test) const
12239 {
12240   return isl::checked::basic_set(*this).every_set(test);
12241 }
12242 
extract_set(const isl::checked::space & space)12243 isl::checked::set point::extract_set(const isl::checked::space &space) const
12244 {
12245   return isl::checked::basic_set(*this).extract_set(space);
12246 }
12247 
flatten()12248 isl::checked::basic_set point::flatten() const
12249 {
12250   return isl::checked::basic_set(*this).flatten();
12251 }
12252 
foreach_basic_set(const std::function<stat (isl::checked::basic_set)> & fn)12253 stat point::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
12254 {
12255   return isl::checked::basic_set(*this).foreach_basic_set(fn);
12256 }
12257 
foreach_point(const std::function<stat (isl::checked::point)> & fn)12258 stat point::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
12259 {
12260   return isl::checked::basic_set(*this).foreach_point(fn);
12261 }
12262 
foreach_set(const std::function<stat (isl::checked::set)> & fn)12263 stat point::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
12264 {
12265   return isl::checked::basic_set(*this).foreach_set(fn);
12266 }
12267 
gist(const isl::checked::basic_set & context)12268 isl::checked::basic_set point::gist(const isl::checked::basic_set &context) const
12269 {
12270   return isl::checked::basic_set(*this).gist(context);
12271 }
12272 
gist(const isl::checked::set & context)12273 isl::checked::set point::gist(const isl::checked::set &context) const
12274 {
12275   return isl::checked::basic_set(*this).gist(context);
12276 }
12277 
gist(const isl::checked::union_set & context)12278 isl::checked::union_set point::gist(const isl::checked::union_set &context) const
12279 {
12280   return isl::checked::basic_set(*this).gist(context);
12281 }
12282 
gist_params(const isl::checked::set & set)12283 isl::checked::union_set point::gist_params(const isl::checked::set &set) const
12284 {
12285   return isl::checked::basic_set(*this).gist_params(set);
12286 }
12287 
identity()12288 isl::checked::map point::identity() const
12289 {
12290   return isl::checked::basic_set(*this).identity();
12291 }
12292 
indicator_function()12293 isl::checked::pw_aff point::indicator_function() const
12294 {
12295   return isl::checked::basic_set(*this).indicator_function();
12296 }
12297 
insert_domain(const isl::checked::space & domain)12298 isl::checked::map point::insert_domain(const isl::checked::space &domain) const
12299 {
12300   return isl::checked::basic_set(*this).insert_domain(domain);
12301 }
12302 
intersect(const isl::checked::basic_set & bset2)12303 isl::checked::basic_set point::intersect(const isl::checked::basic_set &bset2) const
12304 {
12305   return isl::checked::basic_set(*this).intersect(bset2);
12306 }
12307 
intersect(const isl::checked::set & set2)12308 isl::checked::set point::intersect(const isl::checked::set &set2) const
12309 {
12310   return isl::checked::basic_set(*this).intersect(set2);
12311 }
12312 
intersect(const isl::checked::union_set & uset2)12313 isl::checked::union_set point::intersect(const isl::checked::union_set &uset2) const
12314 {
12315   return isl::checked::basic_set(*this).intersect(uset2);
12316 }
12317 
intersect_params(const isl::checked::basic_set & bset2)12318 isl::checked::basic_set point::intersect_params(const isl::checked::basic_set &bset2) const
12319 {
12320   return isl::checked::basic_set(*this).intersect_params(bset2);
12321 }
12322 
intersect_params(const isl::checked::set & params)12323 isl::checked::set point::intersect_params(const isl::checked::set &params) const
12324 {
12325   return isl::checked::basic_set(*this).intersect_params(params);
12326 }
12327 
involves_locals()12328 boolean point::involves_locals() const
12329 {
12330   return isl::checked::basic_set(*this).involves_locals();
12331 }
12332 
is_disjoint(const isl::checked::set & set2)12333 boolean point::is_disjoint(const isl::checked::set &set2) const
12334 {
12335   return isl::checked::basic_set(*this).is_disjoint(set2);
12336 }
12337 
is_disjoint(const isl::checked::union_set & uset2)12338 boolean point::is_disjoint(const isl::checked::union_set &uset2) const
12339 {
12340   return isl::checked::basic_set(*this).is_disjoint(uset2);
12341 }
12342 
is_empty()12343 boolean point::is_empty() const
12344 {
12345   return isl::checked::basic_set(*this).is_empty();
12346 }
12347 
is_equal(const isl::checked::basic_set & bset2)12348 boolean point::is_equal(const isl::checked::basic_set &bset2) const
12349 {
12350   return isl::checked::basic_set(*this).is_equal(bset2);
12351 }
12352 
is_equal(const isl::checked::set & set2)12353 boolean point::is_equal(const isl::checked::set &set2) const
12354 {
12355   return isl::checked::basic_set(*this).is_equal(set2);
12356 }
12357 
is_equal(const isl::checked::union_set & uset2)12358 boolean point::is_equal(const isl::checked::union_set &uset2) const
12359 {
12360   return isl::checked::basic_set(*this).is_equal(uset2);
12361 }
12362 
is_singleton()12363 boolean point::is_singleton() const
12364 {
12365   return isl::checked::basic_set(*this).is_singleton();
12366 }
12367 
is_strict_subset(const isl::checked::set & set2)12368 boolean point::is_strict_subset(const isl::checked::set &set2) const
12369 {
12370   return isl::checked::basic_set(*this).is_strict_subset(set2);
12371 }
12372 
is_strict_subset(const isl::checked::union_set & uset2)12373 boolean point::is_strict_subset(const isl::checked::union_set &uset2) const
12374 {
12375   return isl::checked::basic_set(*this).is_strict_subset(uset2);
12376 }
12377 
is_subset(const isl::checked::basic_set & bset2)12378 boolean point::is_subset(const isl::checked::basic_set &bset2) const
12379 {
12380   return isl::checked::basic_set(*this).is_subset(bset2);
12381 }
12382 
is_subset(const isl::checked::set & set2)12383 boolean point::is_subset(const isl::checked::set &set2) const
12384 {
12385   return isl::checked::basic_set(*this).is_subset(set2);
12386 }
12387 
is_subset(const isl::checked::union_set & uset2)12388 boolean point::is_subset(const isl::checked::union_set &uset2) const
12389 {
12390   return isl::checked::basic_set(*this).is_subset(uset2);
12391 }
12392 
is_wrapping()12393 boolean point::is_wrapping() const
12394 {
12395   return isl::checked::basic_set(*this).is_wrapping();
12396 }
12397 
isa_set()12398 boolean point::isa_set() const
12399 {
12400   return isl::checked::basic_set(*this).isa_set();
12401 }
12402 
lexmax()12403 isl::checked::set point::lexmax() const
12404 {
12405   return isl::checked::basic_set(*this).lexmax();
12406 }
12407 
lexmax_pw_multi_aff()12408 isl::checked::pw_multi_aff point::lexmax_pw_multi_aff() const
12409 {
12410   return isl::checked::basic_set(*this).lexmax_pw_multi_aff();
12411 }
12412 
lexmin()12413 isl::checked::set point::lexmin() const
12414 {
12415   return isl::checked::basic_set(*this).lexmin();
12416 }
12417 
lexmin_pw_multi_aff()12418 isl::checked::pw_multi_aff point::lexmin_pw_multi_aff() const
12419 {
12420   return isl::checked::basic_set(*this).lexmin_pw_multi_aff();
12421 }
12422 
lower_bound(const isl::checked::multi_pw_aff & lower)12423 isl::checked::set point::lower_bound(const isl::checked::multi_pw_aff &lower) const
12424 {
12425   return isl::checked::basic_set(*this).lower_bound(lower);
12426 }
12427 
lower_bound(const isl::checked::multi_val & lower)12428 isl::checked::set point::lower_bound(const isl::checked::multi_val &lower) const
12429 {
12430   return isl::checked::basic_set(*this).lower_bound(lower);
12431 }
12432 
max_multi_pw_aff()12433 isl::checked::multi_pw_aff point::max_multi_pw_aff() const
12434 {
12435   return isl::checked::basic_set(*this).max_multi_pw_aff();
12436 }
12437 
max_val(const isl::checked::aff & obj)12438 isl::checked::val point::max_val(const isl::checked::aff &obj) const
12439 {
12440   return isl::checked::basic_set(*this).max_val(obj);
12441 }
12442 
min_multi_pw_aff()12443 isl::checked::multi_pw_aff point::min_multi_pw_aff() const
12444 {
12445   return isl::checked::basic_set(*this).min_multi_pw_aff();
12446 }
12447 
min_val(const isl::checked::aff & obj)12448 isl::checked::val point::min_val(const isl::checked::aff &obj) const
12449 {
12450   return isl::checked::basic_set(*this).min_val(obj);
12451 }
12452 
multi_val()12453 isl::checked::multi_val point::multi_val() const
12454 {
12455   auto res = isl_point_get_multi_val(get());
12456   return manage(res);
12457 }
12458 
get_multi_val()12459 isl::checked::multi_val point::get_multi_val() const
12460 {
12461   return multi_val();
12462 }
12463 
n_basic_set()12464 class size point::n_basic_set() const
12465 {
12466   return isl::checked::basic_set(*this).n_basic_set();
12467 }
12468 
params()12469 isl::checked::basic_set point::params() const
12470 {
12471   return isl::checked::basic_set(*this).params();
12472 }
12473 
plain_multi_val_if_fixed()12474 isl::checked::multi_val point::plain_multi_val_if_fixed() const
12475 {
12476   return isl::checked::basic_set(*this).plain_multi_val_if_fixed();
12477 }
12478 
polyhedral_hull()12479 isl::checked::basic_set point::polyhedral_hull() const
12480 {
12481   return isl::checked::basic_set(*this).polyhedral_hull();
12482 }
12483 
preimage(const isl::checked::multi_aff & ma)12484 isl::checked::set point::preimage(const isl::checked::multi_aff &ma) const
12485 {
12486   return isl::checked::basic_set(*this).preimage(ma);
12487 }
12488 
preimage(const isl::checked::multi_pw_aff & mpa)12489 isl::checked::set point::preimage(const isl::checked::multi_pw_aff &mpa) const
12490 {
12491   return isl::checked::basic_set(*this).preimage(mpa);
12492 }
12493 
preimage(const isl::checked::pw_multi_aff & pma)12494 isl::checked::set point::preimage(const isl::checked::pw_multi_aff &pma) const
12495 {
12496   return isl::checked::basic_set(*this).preimage(pma);
12497 }
12498 
preimage(const isl::checked::union_pw_multi_aff & upma)12499 isl::checked::union_set point::preimage(const isl::checked::union_pw_multi_aff &upma) const
12500 {
12501   return isl::checked::basic_set(*this).preimage(upma);
12502 }
12503 
product(const isl::checked::set & set2)12504 isl::checked::set point::product(const isl::checked::set &set2) const
12505 {
12506   return isl::checked::basic_set(*this).product(set2);
12507 }
12508 
project_out_all_params()12509 isl::checked::set point::project_out_all_params() const
12510 {
12511   return isl::checked::basic_set(*this).project_out_all_params();
12512 }
12513 
project_out_param(const isl::checked::id & id)12514 isl::checked::set point::project_out_param(const isl::checked::id &id) const
12515 {
12516   return isl::checked::basic_set(*this).project_out_param(id);
12517 }
12518 
project_out_param(const std::string & id)12519 isl::checked::set point::project_out_param(const std::string &id) const
12520 {
12521   return this->project_out_param(isl::checked::id(ctx(), id));
12522 }
12523 
project_out_param(const isl::checked::id_list & list)12524 isl::checked::set point::project_out_param(const isl::checked::id_list &list) const
12525 {
12526   return isl::checked::basic_set(*this).project_out_param(list);
12527 }
12528 
pw_multi_aff_on_domain(const isl::checked::multi_val & mv)12529 isl::checked::pw_multi_aff point::pw_multi_aff_on_domain(const isl::checked::multi_val &mv) const
12530 {
12531   return isl::checked::basic_set(*this).pw_multi_aff_on_domain(mv);
12532 }
12533 
sample()12534 isl::checked::basic_set point::sample() const
12535 {
12536   return isl::checked::basic_set(*this).sample();
12537 }
12538 
sample_point()12539 isl::checked::point point::sample_point() const
12540 {
12541   return isl::checked::basic_set(*this).sample_point();
12542 }
12543 
set_list()12544 isl::checked::set_list point::set_list() const
12545 {
12546   return isl::checked::basic_set(*this).set_list();
12547 }
12548 
simple_fixed_box_hull()12549 isl::checked::fixed_box point::simple_fixed_box_hull() const
12550 {
12551   return isl::checked::basic_set(*this).simple_fixed_box_hull();
12552 }
12553 
space()12554 isl::checked::space point::space() const
12555 {
12556   return isl::checked::basic_set(*this).space();
12557 }
12558 
stride(int pos)12559 isl::checked::val point::stride(int pos) const
12560 {
12561   return isl::checked::basic_set(*this).stride(pos);
12562 }
12563 
subtract(const isl::checked::set & set2)12564 isl::checked::set point::subtract(const isl::checked::set &set2) const
12565 {
12566   return isl::checked::basic_set(*this).subtract(set2);
12567 }
12568 
subtract(const isl::checked::union_set & uset2)12569 isl::checked::union_set point::subtract(const isl::checked::union_set &uset2) const
12570 {
12571   return isl::checked::basic_set(*this).subtract(uset2);
12572 }
12573 
to_list()12574 isl::checked::set_list point::to_list() const
12575 {
12576   return isl::checked::basic_set(*this).to_list();
12577 }
12578 
to_set()12579 isl::checked::set point::to_set() const
12580 {
12581   auto res = isl_point_to_set(copy());
12582   return manage(res);
12583 }
12584 
to_union_set()12585 isl::checked::union_set point::to_union_set() const
12586 {
12587   return isl::checked::basic_set(*this).to_union_set();
12588 }
12589 
translation()12590 isl::checked::map point::translation() const
12591 {
12592   return isl::checked::basic_set(*this).translation();
12593 }
12594 
tuple_dim()12595 class size point::tuple_dim() const
12596 {
12597   return isl::checked::basic_set(*this).tuple_dim();
12598 }
12599 
unbind_params(const isl::checked::multi_id & tuple)12600 isl::checked::set point::unbind_params(const isl::checked::multi_id &tuple) const
12601 {
12602   return isl::checked::basic_set(*this).unbind_params(tuple);
12603 }
12604 
unbind_params_insert_domain(const isl::checked::multi_id & domain)12605 isl::checked::map point::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
12606 {
12607   return isl::checked::basic_set(*this).unbind_params_insert_domain(domain);
12608 }
12609 
unite(const isl::checked::basic_set & bset2)12610 isl::checked::set point::unite(const isl::checked::basic_set &bset2) const
12611 {
12612   return isl::checked::basic_set(*this).unite(bset2);
12613 }
12614 
unite(const isl::checked::set & set2)12615 isl::checked::set point::unite(const isl::checked::set &set2) const
12616 {
12617   return isl::checked::basic_set(*this).unite(set2);
12618 }
12619 
unite(const isl::checked::union_set & uset2)12620 isl::checked::union_set point::unite(const isl::checked::union_set &uset2) const
12621 {
12622   return isl::checked::basic_set(*this).unite(uset2);
12623 }
12624 
unshifted_simple_hull()12625 isl::checked::basic_set point::unshifted_simple_hull() const
12626 {
12627   return isl::checked::basic_set(*this).unshifted_simple_hull();
12628 }
12629 
unwrap()12630 isl::checked::map point::unwrap() const
12631 {
12632   return isl::checked::basic_set(*this).unwrap();
12633 }
12634 
upper_bound(const isl::checked::multi_pw_aff & upper)12635 isl::checked::set point::upper_bound(const isl::checked::multi_pw_aff &upper) const
12636 {
12637   return isl::checked::basic_set(*this).upper_bound(upper);
12638 }
12639 
upper_bound(const isl::checked::multi_val & upper)12640 isl::checked::set point::upper_bound(const isl::checked::multi_val &upper) const
12641 {
12642   return isl::checked::basic_set(*this).upper_bound(upper);
12643 }
12644 
12645 inline std::ostream &operator<<(std::ostream &os, const point &obj)
12646 {
12647   char *str = isl_point_to_str(obj.get());
12648   if (!str) {
12649     os.setstate(std::ios_base::badbit);
12650     return os;
12651   }
12652   os << str;
12653   free(str);
12654   return os;
12655 }
12656 
12657 // implementations for isl::pw_aff
manage(__isl_take isl_pw_aff * ptr)12658 pw_aff manage(__isl_take isl_pw_aff *ptr) {
12659   return pw_aff(ptr);
12660 }
manage_copy(__isl_keep isl_pw_aff * ptr)12661 pw_aff manage_copy(__isl_keep isl_pw_aff *ptr) {
12662   ptr = isl_pw_aff_copy(ptr);
12663   return pw_aff(ptr);
12664 }
12665 
pw_aff()12666 pw_aff::pw_aff()
12667     : ptr(nullptr) {}
12668 
pw_aff(const pw_aff & obj)12669 pw_aff::pw_aff(const pw_aff &obj)
12670     : ptr(nullptr)
12671 {
12672   ptr = obj.copy();
12673 }
12674 
pw_aff(__isl_take isl_pw_aff * ptr)12675 pw_aff::pw_aff(__isl_take isl_pw_aff *ptr)
12676     : ptr(ptr) {}
12677 
pw_aff(isl::checked::aff aff)12678 pw_aff::pw_aff(isl::checked::aff aff)
12679 {
12680   auto res = isl_pw_aff_from_aff(aff.release());
12681   ptr = res;
12682 }
12683 
pw_aff(isl::checked::ctx ctx,const std::string & str)12684 pw_aff::pw_aff(isl::checked::ctx ctx, const std::string &str)
12685 {
12686   auto res = isl_pw_aff_read_from_str(ctx.release(), str.c_str());
12687   ptr = res;
12688 }
12689 
12690 pw_aff &pw_aff::operator=(pw_aff obj) {
12691   std::swap(this->ptr, obj.ptr);
12692   return *this;
12693 }
12694 
~pw_aff()12695 pw_aff::~pw_aff() {
12696   if (ptr)
12697     isl_pw_aff_free(ptr);
12698 }
12699 
copy()12700 __isl_give isl_pw_aff *pw_aff::copy() const & {
12701   return isl_pw_aff_copy(ptr);
12702 }
12703 
get()12704 __isl_keep isl_pw_aff *pw_aff::get() const {
12705   return ptr;
12706 }
12707 
release()12708 __isl_give isl_pw_aff *pw_aff::release() {
12709   isl_pw_aff *tmp = ptr;
12710   ptr = nullptr;
12711   return tmp;
12712 }
12713 
is_null()12714 bool pw_aff::is_null() const {
12715   return ptr == nullptr;
12716 }
12717 
ctx()12718 isl::checked::ctx pw_aff::ctx() const {
12719   return isl::checked::ctx(isl_pw_aff_get_ctx(ptr));
12720 }
12721 
add(const isl::checked::multi_pw_aff & multi2)12722 isl::checked::multi_pw_aff pw_aff::add(const isl::checked::multi_pw_aff &multi2) const
12723 {
12724   return isl::checked::pw_multi_aff(*this).add(multi2);
12725 }
12726 
add(const isl::checked::multi_union_pw_aff & multi2)12727 isl::checked::multi_union_pw_aff pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
12728 {
12729   return isl::checked::union_pw_aff(*this).add(multi2);
12730 }
12731 
add(isl::checked::pw_aff pwaff2)12732 isl::checked::pw_aff pw_aff::add(isl::checked::pw_aff pwaff2) const
12733 {
12734   auto res = isl_pw_aff_add(copy(), pwaff2.release());
12735   return manage(res);
12736 }
12737 
add(const isl::checked::pw_multi_aff & pma2)12738 isl::checked::pw_multi_aff pw_aff::add(const isl::checked::pw_multi_aff &pma2) const
12739 {
12740   return isl::checked::pw_multi_aff(*this).add(pma2);
12741 }
12742 
add(const isl::checked::union_pw_aff & upa2)12743 isl::checked::union_pw_aff pw_aff::add(const isl::checked::union_pw_aff &upa2) const
12744 {
12745   return isl::checked::union_pw_aff(*this).add(upa2);
12746 }
12747 
add(const isl::checked::union_pw_multi_aff & upma2)12748 isl::checked::union_pw_multi_aff pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
12749 {
12750   return isl::checked::union_pw_aff(*this).add(upma2);
12751 }
12752 
add(const isl::checked::aff & pwaff2)12753 isl::checked::pw_aff pw_aff::add(const isl::checked::aff &pwaff2) const
12754 {
12755   return this->add(isl::checked::pw_aff(pwaff2));
12756 }
12757 
add_constant(isl::checked::val v)12758 isl::checked::pw_aff pw_aff::add_constant(isl::checked::val v) const
12759 {
12760   auto res = isl_pw_aff_add_constant_val(copy(), v.release());
12761   return manage(res);
12762 }
12763 
add_constant(long v)12764 isl::checked::pw_aff pw_aff::add_constant(long v) const
12765 {
12766   return this->add_constant(isl::checked::val(ctx(), v));
12767 }
12768 
add_constant(const isl::checked::multi_val & mv)12769 isl::checked::pw_multi_aff pw_aff::add_constant(const isl::checked::multi_val &mv) const
12770 {
12771   return isl::checked::pw_multi_aff(*this).add_constant(mv);
12772 }
12773 
apply(const isl::checked::union_pw_multi_aff & upma2)12774 isl::checked::union_pw_multi_aff pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
12775 {
12776   return isl::checked::union_pw_aff(*this).apply(upma2);
12777 }
12778 
as_aff()12779 isl::checked::aff pw_aff::as_aff() const
12780 {
12781   auto res = isl_pw_aff_as_aff(copy());
12782   return manage(res);
12783 }
12784 
as_map()12785 isl::checked::map pw_aff::as_map() const
12786 {
12787   auto res = isl_pw_aff_as_map(copy());
12788   return manage(res);
12789 }
12790 
as_multi_aff()12791 isl::checked::multi_aff pw_aff::as_multi_aff() const
12792 {
12793   return isl::checked::pw_multi_aff(*this).as_multi_aff();
12794 }
12795 
as_multi_union_pw_aff()12796 isl::checked::multi_union_pw_aff pw_aff::as_multi_union_pw_aff() const
12797 {
12798   return isl::checked::union_pw_aff(*this).as_multi_union_pw_aff();
12799 }
12800 
as_pw_multi_aff()12801 isl::checked::pw_multi_aff pw_aff::as_pw_multi_aff() const
12802 {
12803   return isl::checked::union_pw_aff(*this).as_pw_multi_aff();
12804 }
12805 
as_set()12806 isl::checked::set pw_aff::as_set() const
12807 {
12808   return isl::checked::pw_multi_aff(*this).as_set();
12809 }
12810 
as_union_map()12811 isl::checked::union_map pw_aff::as_union_map() const
12812 {
12813   return isl::checked::union_pw_aff(*this).as_union_map();
12814 }
12815 
at(int pos)12816 isl::checked::pw_aff pw_aff::at(int pos) const
12817 {
12818   return isl::checked::pw_multi_aff(*this).at(pos);
12819 }
12820 
bind(const isl::checked::multi_id & tuple)12821 isl::checked::set pw_aff::bind(const isl::checked::multi_id &tuple) const
12822 {
12823   return isl::checked::multi_pw_aff(*this).bind(tuple);
12824 }
12825 
bind(isl::checked::id id)12826 isl::checked::set pw_aff::bind(isl::checked::id id) const
12827 {
12828   auto res = isl_pw_aff_bind_id(copy(), id.release());
12829   return manage(res);
12830 }
12831 
bind(const std::string & id)12832 isl::checked::set pw_aff::bind(const std::string &id) const
12833 {
12834   return this->bind(isl::checked::id(ctx(), id));
12835 }
12836 
bind_domain(isl::checked::multi_id tuple)12837 isl::checked::pw_aff pw_aff::bind_domain(isl::checked::multi_id tuple) const
12838 {
12839   auto res = isl_pw_aff_bind_domain(copy(), tuple.release());
12840   return manage(res);
12841 }
12842 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)12843 isl::checked::pw_aff pw_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
12844 {
12845   auto res = isl_pw_aff_bind_domain_wrapped_domain(copy(), tuple.release());
12846   return manage(res);
12847 }
12848 
ceil()12849 isl::checked::pw_aff pw_aff::ceil() const
12850 {
12851   auto res = isl_pw_aff_ceil(copy());
12852   return manage(res);
12853 }
12854 
coalesce()12855 isl::checked::pw_aff pw_aff::coalesce() const
12856 {
12857   auto res = isl_pw_aff_coalesce(copy());
12858   return manage(res);
12859 }
12860 
cond(isl::checked::pw_aff pwaff_true,isl::checked::pw_aff pwaff_false)12861 isl::checked::pw_aff pw_aff::cond(isl::checked::pw_aff pwaff_true, isl::checked::pw_aff pwaff_false) const
12862 {
12863   auto res = isl_pw_aff_cond(copy(), pwaff_true.release(), pwaff_false.release());
12864   return manage(res);
12865 }
12866 
div(isl::checked::pw_aff pa2)12867 isl::checked::pw_aff pw_aff::div(isl::checked::pw_aff pa2) const
12868 {
12869   auto res = isl_pw_aff_div(copy(), pa2.release());
12870   return manage(res);
12871 }
12872 
domain()12873 isl::checked::set pw_aff::domain() const
12874 {
12875   auto res = isl_pw_aff_domain(copy());
12876   return manage(res);
12877 }
12878 
eq_set(isl::checked::pw_aff pwaff2)12879 isl::checked::set pw_aff::eq_set(isl::checked::pw_aff pwaff2) const
12880 {
12881   auto res = isl_pw_aff_eq_set(copy(), pwaff2.release());
12882   return manage(res);
12883 }
12884 
eval(isl::checked::point pnt)12885 isl::checked::val pw_aff::eval(isl::checked::point pnt) const
12886 {
12887   auto res = isl_pw_aff_eval(copy(), pnt.release());
12888   return manage(res);
12889 }
12890 
extract_pw_multi_aff(const isl::checked::space & space)12891 isl::checked::pw_multi_aff pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
12892 {
12893   return isl::checked::union_pw_aff(*this).extract_pw_multi_aff(space);
12894 }
12895 
flat_range_product(const isl::checked::multi_pw_aff & multi2)12896 isl::checked::multi_pw_aff pw_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
12897 {
12898   return isl::checked::pw_multi_aff(*this).flat_range_product(multi2);
12899 }
12900 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)12901 isl::checked::multi_union_pw_aff pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
12902 {
12903   return isl::checked::union_pw_aff(*this).flat_range_product(multi2);
12904 }
12905 
flat_range_product(const isl::checked::pw_multi_aff & pma2)12906 isl::checked::pw_multi_aff pw_aff::flat_range_product(const isl::checked::pw_multi_aff &pma2) const
12907 {
12908   return isl::checked::pw_multi_aff(*this).flat_range_product(pma2);
12909 }
12910 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)12911 isl::checked::union_pw_multi_aff pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
12912 {
12913   return isl::checked::union_pw_aff(*this).flat_range_product(upma2);
12914 }
12915 
floor()12916 isl::checked::pw_aff pw_aff::floor() const
12917 {
12918   auto res = isl_pw_aff_floor(copy());
12919   return manage(res);
12920 }
12921 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)12922 stat pw_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
12923 {
12924   return isl::checked::pw_multi_aff(*this).foreach_piece(fn);
12925 }
12926 
ge_set(isl::checked::pw_aff pwaff2)12927 isl::checked::set pw_aff::ge_set(isl::checked::pw_aff pwaff2) const
12928 {
12929   auto res = isl_pw_aff_ge_set(copy(), pwaff2.release());
12930   return manage(res);
12931 }
12932 
gist(isl::checked::set context)12933 isl::checked::pw_aff pw_aff::gist(isl::checked::set context) const
12934 {
12935   auto res = isl_pw_aff_gist(copy(), context.release());
12936   return manage(res);
12937 }
12938 
gist(const isl::checked::union_set & context)12939 isl::checked::union_pw_aff pw_aff::gist(const isl::checked::union_set &context) const
12940 {
12941   return isl::checked::union_pw_aff(*this).gist(context);
12942 }
12943 
gist(const isl::checked::basic_set & context)12944 isl::checked::pw_aff pw_aff::gist(const isl::checked::basic_set &context) const
12945 {
12946   return this->gist(isl::checked::set(context));
12947 }
12948 
gist(const isl::checked::point & context)12949 isl::checked::pw_aff pw_aff::gist(const isl::checked::point &context) const
12950 {
12951   return this->gist(isl::checked::set(context));
12952 }
12953 
gt_set(isl::checked::pw_aff pwaff2)12954 isl::checked::set pw_aff::gt_set(isl::checked::pw_aff pwaff2) const
12955 {
12956   auto res = isl_pw_aff_gt_set(copy(), pwaff2.release());
12957   return manage(res);
12958 }
12959 
has_range_tuple_id()12960 boolean pw_aff::has_range_tuple_id() const
12961 {
12962   return isl::checked::pw_multi_aff(*this).has_range_tuple_id();
12963 }
12964 
identity()12965 isl::checked::multi_pw_aff pw_aff::identity() const
12966 {
12967   return isl::checked::pw_multi_aff(*this).identity();
12968 }
12969 
insert_domain(isl::checked::space domain)12970 isl::checked::pw_aff pw_aff::insert_domain(isl::checked::space domain) const
12971 {
12972   auto res = isl_pw_aff_insert_domain(copy(), domain.release());
12973   return manage(res);
12974 }
12975 
intersect_domain(isl::checked::set set)12976 isl::checked::pw_aff pw_aff::intersect_domain(isl::checked::set set) const
12977 {
12978   auto res = isl_pw_aff_intersect_domain(copy(), set.release());
12979   return manage(res);
12980 }
12981 
intersect_domain(const isl::checked::space & space)12982 isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::space &space) const
12983 {
12984   return isl::checked::union_pw_aff(*this).intersect_domain(space);
12985 }
12986 
intersect_domain(const isl::checked::union_set & uset)12987 isl::checked::union_pw_aff pw_aff::intersect_domain(const isl::checked::union_set &uset) const
12988 {
12989   return isl::checked::union_pw_aff(*this).intersect_domain(uset);
12990 }
12991 
intersect_domain(const isl::checked::basic_set & set)12992 isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::basic_set &set) const
12993 {
12994   return this->intersect_domain(isl::checked::set(set));
12995 }
12996 
intersect_domain(const isl::checked::point & set)12997 isl::checked::pw_aff pw_aff::intersect_domain(const isl::checked::point &set) const
12998 {
12999   return this->intersect_domain(isl::checked::set(set));
13000 }
13001 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)13002 isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
13003 {
13004   return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_domain(uset);
13005 }
13006 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)13007 isl::checked::union_pw_aff pw_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
13008 {
13009   return isl::checked::union_pw_aff(*this).intersect_domain_wrapped_range(uset);
13010 }
13011 
intersect_params(isl::checked::set set)13012 isl::checked::pw_aff pw_aff::intersect_params(isl::checked::set set) const
13013 {
13014   auto res = isl_pw_aff_intersect_params(copy(), set.release());
13015   return manage(res);
13016 }
13017 
involves_locals()13018 boolean pw_aff::involves_locals() const
13019 {
13020   return isl::checked::pw_multi_aff(*this).involves_locals();
13021 }
13022 
involves_nan()13023 boolean pw_aff::involves_nan() const
13024 {
13025   return isl::checked::multi_pw_aff(*this).involves_nan();
13026 }
13027 
involves_param(const isl::checked::id & id)13028 boolean pw_aff::involves_param(const isl::checked::id &id) const
13029 {
13030   return isl::checked::pw_multi_aff(*this).involves_param(id);
13031 }
13032 
involves_param(const std::string & id)13033 boolean pw_aff::involves_param(const std::string &id) const
13034 {
13035   return this->involves_param(isl::checked::id(ctx(), id));
13036 }
13037 
involves_param(const isl::checked::id_list & list)13038 boolean pw_aff::involves_param(const isl::checked::id_list &list) const
13039 {
13040   return isl::checked::pw_multi_aff(*this).involves_param(list);
13041 }
13042 
isa_aff()13043 boolean pw_aff::isa_aff() const
13044 {
13045   auto res = isl_pw_aff_isa_aff(get());
13046   return manage(res);
13047 }
13048 
isa_multi_aff()13049 boolean pw_aff::isa_multi_aff() const
13050 {
13051   return isl::checked::pw_multi_aff(*this).isa_multi_aff();
13052 }
13053 
isa_pw_multi_aff()13054 boolean pw_aff::isa_pw_multi_aff() const
13055 {
13056   return isl::checked::union_pw_aff(*this).isa_pw_multi_aff();
13057 }
13058 
le_set(isl::checked::pw_aff pwaff2)13059 isl::checked::set pw_aff::le_set(isl::checked::pw_aff pwaff2) const
13060 {
13061   auto res = isl_pw_aff_le_set(copy(), pwaff2.release());
13062   return manage(res);
13063 }
13064 
list()13065 isl::checked::pw_aff_list pw_aff::list() const
13066 {
13067   return isl::checked::multi_pw_aff(*this).list();
13068 }
13069 
lt_set(isl::checked::pw_aff pwaff2)13070 isl::checked::set pw_aff::lt_set(isl::checked::pw_aff pwaff2) const
13071 {
13072   auto res = isl_pw_aff_lt_set(copy(), pwaff2.release());
13073   return manage(res);
13074 }
13075 
max(const isl::checked::multi_pw_aff & multi2)13076 isl::checked::multi_pw_aff pw_aff::max(const isl::checked::multi_pw_aff &multi2) const
13077 {
13078   return isl::checked::pw_multi_aff(*this).max(multi2);
13079 }
13080 
max(isl::checked::pw_aff pwaff2)13081 isl::checked::pw_aff pw_aff::max(isl::checked::pw_aff pwaff2) const
13082 {
13083   auto res = isl_pw_aff_max(copy(), pwaff2.release());
13084   return manage(res);
13085 }
13086 
max(const isl::checked::aff & pwaff2)13087 isl::checked::pw_aff pw_aff::max(const isl::checked::aff &pwaff2) const
13088 {
13089   return this->max(isl::checked::pw_aff(pwaff2));
13090 }
13091 
max_multi_val()13092 isl::checked::multi_val pw_aff::max_multi_val() const
13093 {
13094   return isl::checked::pw_multi_aff(*this).max_multi_val();
13095 }
13096 
min(const isl::checked::multi_pw_aff & multi2)13097 isl::checked::multi_pw_aff pw_aff::min(const isl::checked::multi_pw_aff &multi2) const
13098 {
13099   return isl::checked::pw_multi_aff(*this).min(multi2);
13100 }
13101 
min(isl::checked::pw_aff pwaff2)13102 isl::checked::pw_aff pw_aff::min(isl::checked::pw_aff pwaff2) const
13103 {
13104   auto res = isl_pw_aff_min(copy(), pwaff2.release());
13105   return manage(res);
13106 }
13107 
min(const isl::checked::aff & pwaff2)13108 isl::checked::pw_aff pw_aff::min(const isl::checked::aff &pwaff2) const
13109 {
13110   return this->min(isl::checked::pw_aff(pwaff2));
13111 }
13112 
min_multi_val()13113 isl::checked::multi_val pw_aff::min_multi_val() const
13114 {
13115   return isl::checked::pw_multi_aff(*this).min_multi_val();
13116 }
13117 
mod(isl::checked::val mod)13118 isl::checked::pw_aff pw_aff::mod(isl::checked::val mod) const
13119 {
13120   auto res = isl_pw_aff_mod_val(copy(), mod.release());
13121   return manage(res);
13122 }
13123 
mod(long mod)13124 isl::checked::pw_aff pw_aff::mod(long mod) const
13125 {
13126   return this->mod(isl::checked::val(ctx(), mod));
13127 }
13128 
mul(isl::checked::pw_aff pwaff2)13129 isl::checked::pw_aff pw_aff::mul(isl::checked::pw_aff pwaff2) const
13130 {
13131   auto res = isl_pw_aff_mul(copy(), pwaff2.release());
13132   return manage(res);
13133 }
13134 
n_piece()13135 class size pw_aff::n_piece() const
13136 {
13137   return isl::checked::pw_multi_aff(*this).n_piece();
13138 }
13139 
ne_set(isl::checked::pw_aff pwaff2)13140 isl::checked::set pw_aff::ne_set(isl::checked::pw_aff pwaff2) const
13141 {
13142   auto res = isl_pw_aff_ne_set(copy(), pwaff2.release());
13143   return manage(res);
13144 }
13145 
neg()13146 isl::checked::pw_aff pw_aff::neg() const
13147 {
13148   auto res = isl_pw_aff_neg(copy());
13149   return manage(res);
13150 }
13151 
param_on_domain(isl::checked::set domain,isl::checked::id id)13152 isl::checked::pw_aff pw_aff::param_on_domain(isl::checked::set domain, isl::checked::id id)
13153 {
13154   auto res = isl_pw_aff_param_on_domain_id(domain.release(), id.release());
13155   return manage(res);
13156 }
13157 
plain_is_empty()13158 boolean pw_aff::plain_is_empty() const
13159 {
13160   return isl::checked::union_pw_aff(*this).plain_is_empty();
13161 }
13162 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)13163 boolean pw_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
13164 {
13165   return isl::checked::pw_multi_aff(*this).plain_is_equal(multi2);
13166 }
13167 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)13168 boolean pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
13169 {
13170   return isl::checked::union_pw_aff(*this).plain_is_equal(multi2);
13171 }
13172 
preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff & pma2)13173 isl::checked::pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::pw_multi_aff &pma2) const
13174 {
13175   return isl::checked::pw_multi_aff(*this).preimage_domain_wrapped_domain(pma2);
13176 }
13177 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)13178 isl::checked::union_pw_multi_aff pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
13179 {
13180   return isl::checked::union_pw_aff(*this).preimage_domain_wrapped_domain(upma2);
13181 }
13182 
product(const isl::checked::multi_pw_aff & multi2)13183 isl::checked::multi_pw_aff pw_aff::product(const isl::checked::multi_pw_aff &multi2) const
13184 {
13185   return isl::checked::pw_multi_aff(*this).product(multi2);
13186 }
13187 
product(const isl::checked::pw_multi_aff & pma2)13188 isl::checked::pw_multi_aff pw_aff::product(const isl::checked::pw_multi_aff &pma2) const
13189 {
13190   return isl::checked::pw_multi_aff(*this).product(pma2);
13191 }
13192 
pullback(isl::checked::multi_aff ma)13193 isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_aff ma) const
13194 {
13195   auto res = isl_pw_aff_pullback_multi_aff(copy(), ma.release());
13196   return manage(res);
13197 }
13198 
pullback(isl::checked::multi_pw_aff mpa)13199 isl::checked::pw_aff pw_aff::pullback(isl::checked::multi_pw_aff mpa) const
13200 {
13201   auto res = isl_pw_aff_pullback_multi_pw_aff(copy(), mpa.release());
13202   return manage(res);
13203 }
13204 
pullback(isl::checked::pw_multi_aff pma)13205 isl::checked::pw_aff pw_aff::pullback(isl::checked::pw_multi_aff pma) const
13206 {
13207   auto res = isl_pw_aff_pullback_pw_multi_aff(copy(), pma.release());
13208   return manage(res);
13209 }
13210 
pullback(const isl::checked::union_pw_multi_aff & upma)13211 isl::checked::union_pw_aff pw_aff::pullback(const isl::checked::union_pw_multi_aff &upma) const
13212 {
13213   return isl::checked::union_pw_aff(*this).pullback(upma);
13214 }
13215 
pw_multi_aff_list()13216 isl::checked::pw_multi_aff_list pw_aff::pw_multi_aff_list() const
13217 {
13218   return isl::checked::union_pw_aff(*this).pw_multi_aff_list();
13219 }
13220 
range_factor_domain()13221 isl::checked::pw_multi_aff pw_aff::range_factor_domain() const
13222 {
13223   return isl::checked::pw_multi_aff(*this).range_factor_domain();
13224 }
13225 
range_factor_range()13226 isl::checked::pw_multi_aff pw_aff::range_factor_range() const
13227 {
13228   return isl::checked::pw_multi_aff(*this).range_factor_range();
13229 }
13230 
range_product(const isl::checked::multi_pw_aff & multi2)13231 isl::checked::multi_pw_aff pw_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
13232 {
13233   return isl::checked::pw_multi_aff(*this).range_product(multi2);
13234 }
13235 
range_product(const isl::checked::multi_union_pw_aff & multi2)13236 isl::checked::multi_union_pw_aff pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
13237 {
13238   return isl::checked::union_pw_aff(*this).range_product(multi2);
13239 }
13240 
range_product(const isl::checked::pw_multi_aff & pma2)13241 isl::checked::pw_multi_aff pw_aff::range_product(const isl::checked::pw_multi_aff &pma2) const
13242 {
13243   return isl::checked::pw_multi_aff(*this).range_product(pma2);
13244 }
13245 
range_product(const isl::checked::union_pw_multi_aff & upma2)13246 isl::checked::union_pw_multi_aff pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
13247 {
13248   return isl::checked::union_pw_aff(*this).range_product(upma2);
13249 }
13250 
range_tuple_id()13251 isl::checked::id pw_aff::range_tuple_id() const
13252 {
13253   return isl::checked::pw_multi_aff(*this).range_tuple_id();
13254 }
13255 
reset_range_tuple_id()13256 isl::checked::multi_pw_aff pw_aff::reset_range_tuple_id() const
13257 {
13258   return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
13259 }
13260 
scale(const isl::checked::multi_val & mv)13261 isl::checked::multi_pw_aff pw_aff::scale(const isl::checked::multi_val &mv) const
13262 {
13263   return isl::checked::multi_pw_aff(*this).scale(mv);
13264 }
13265 
scale(isl::checked::val v)13266 isl::checked::pw_aff pw_aff::scale(isl::checked::val v) const
13267 {
13268   auto res = isl_pw_aff_scale_val(copy(), v.release());
13269   return manage(res);
13270 }
13271 
scale(long v)13272 isl::checked::pw_aff pw_aff::scale(long v) const
13273 {
13274   return this->scale(isl::checked::val(ctx(), v));
13275 }
13276 
scale_down(const isl::checked::multi_val & mv)13277 isl::checked::multi_pw_aff pw_aff::scale_down(const isl::checked::multi_val &mv) const
13278 {
13279   return isl::checked::multi_pw_aff(*this).scale_down(mv);
13280 }
13281 
scale_down(isl::checked::val f)13282 isl::checked::pw_aff pw_aff::scale_down(isl::checked::val f) const
13283 {
13284   auto res = isl_pw_aff_scale_down_val(copy(), f.release());
13285   return manage(res);
13286 }
13287 
scale_down(long f)13288 isl::checked::pw_aff pw_aff::scale_down(long f) const
13289 {
13290   return this->scale_down(isl::checked::val(ctx(), f));
13291 }
13292 
set_at(int pos,const isl::checked::pw_aff & el)13293 isl::checked::multi_pw_aff pw_aff::set_at(int pos, const isl::checked::pw_aff &el) const
13294 {
13295   return isl::checked::pw_multi_aff(*this).set_at(pos, el);
13296 }
13297 
set_at(int pos,const isl::checked::union_pw_aff & el)13298 isl::checked::multi_union_pw_aff pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
13299 {
13300   return isl::checked::union_pw_aff(*this).set_at(pos, el);
13301 }
13302 
set_range_tuple(const isl::checked::id & id)13303 isl::checked::pw_multi_aff pw_aff::set_range_tuple(const isl::checked::id &id) const
13304 {
13305   return isl::checked::pw_multi_aff(*this).set_range_tuple(id);
13306 }
13307 
set_range_tuple(const std::string & id)13308 isl::checked::pw_multi_aff pw_aff::set_range_tuple(const std::string &id) const
13309 {
13310   return this->set_range_tuple(isl::checked::id(ctx(), id));
13311 }
13312 
size()13313 class size pw_aff::size() const
13314 {
13315   return isl::checked::multi_pw_aff(*this).size();
13316 }
13317 
space()13318 isl::checked::space pw_aff::space() const
13319 {
13320   auto res = isl_pw_aff_get_space(get());
13321   return manage(res);
13322 }
13323 
get_space()13324 isl::checked::space pw_aff::get_space() const
13325 {
13326   return space();
13327 }
13328 
sub(const isl::checked::multi_pw_aff & multi2)13329 isl::checked::multi_pw_aff pw_aff::sub(const isl::checked::multi_pw_aff &multi2) const
13330 {
13331   return isl::checked::pw_multi_aff(*this).sub(multi2);
13332 }
13333 
sub(const isl::checked::multi_union_pw_aff & multi2)13334 isl::checked::multi_union_pw_aff pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
13335 {
13336   return isl::checked::union_pw_aff(*this).sub(multi2);
13337 }
13338 
sub(isl::checked::pw_aff pwaff2)13339 isl::checked::pw_aff pw_aff::sub(isl::checked::pw_aff pwaff2) const
13340 {
13341   auto res = isl_pw_aff_sub(copy(), pwaff2.release());
13342   return manage(res);
13343 }
13344 
sub(const isl::checked::pw_multi_aff & pma2)13345 isl::checked::pw_multi_aff pw_aff::sub(const isl::checked::pw_multi_aff &pma2) const
13346 {
13347   return isl::checked::pw_multi_aff(*this).sub(pma2);
13348 }
13349 
sub(const isl::checked::union_pw_aff & upa2)13350 isl::checked::union_pw_aff pw_aff::sub(const isl::checked::union_pw_aff &upa2) const
13351 {
13352   return isl::checked::union_pw_aff(*this).sub(upa2);
13353 }
13354 
sub(const isl::checked::union_pw_multi_aff & upma2)13355 isl::checked::union_pw_multi_aff pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
13356 {
13357   return isl::checked::union_pw_aff(*this).sub(upma2);
13358 }
13359 
sub(const isl::checked::aff & pwaff2)13360 isl::checked::pw_aff pw_aff::sub(const isl::checked::aff &pwaff2) const
13361 {
13362   return this->sub(isl::checked::pw_aff(pwaff2));
13363 }
13364 
subtract_domain(isl::checked::set set)13365 isl::checked::pw_aff pw_aff::subtract_domain(isl::checked::set set) const
13366 {
13367   auto res = isl_pw_aff_subtract_domain(copy(), set.release());
13368   return manage(res);
13369 }
13370 
subtract_domain(const isl::checked::space & space)13371 isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::space &space) const
13372 {
13373   return isl::checked::union_pw_aff(*this).subtract_domain(space);
13374 }
13375 
subtract_domain(const isl::checked::union_set & uset)13376 isl::checked::union_pw_aff pw_aff::subtract_domain(const isl::checked::union_set &uset) const
13377 {
13378   return isl::checked::union_pw_aff(*this).subtract_domain(uset);
13379 }
13380 
subtract_domain(const isl::checked::basic_set & set)13381 isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::basic_set &set) const
13382 {
13383   return this->subtract_domain(isl::checked::set(set));
13384 }
13385 
subtract_domain(const isl::checked::point & set)13386 isl::checked::pw_aff pw_aff::subtract_domain(const isl::checked::point &set) const
13387 {
13388   return this->subtract_domain(isl::checked::set(set));
13389 }
13390 
tdiv_q(isl::checked::pw_aff pa2)13391 isl::checked::pw_aff pw_aff::tdiv_q(isl::checked::pw_aff pa2) const
13392 {
13393   auto res = isl_pw_aff_tdiv_q(copy(), pa2.release());
13394   return manage(res);
13395 }
13396 
tdiv_r(isl::checked::pw_aff pa2)13397 isl::checked::pw_aff pw_aff::tdiv_r(isl::checked::pw_aff pa2) const
13398 {
13399   auto res = isl_pw_aff_tdiv_r(copy(), pa2.release());
13400   return manage(res);
13401 }
13402 
to_list()13403 isl::checked::pw_aff_list pw_aff::to_list() const
13404 {
13405   auto res = isl_pw_aff_to_list(copy());
13406   return manage(res);
13407 }
13408 
to_multi_pw_aff()13409 isl::checked::multi_pw_aff pw_aff::to_multi_pw_aff() const
13410 {
13411   return isl::checked::pw_multi_aff(*this).to_multi_pw_aff();
13412 }
13413 
to_union_pw_aff()13414 isl::checked::union_pw_aff pw_aff::to_union_pw_aff() const
13415 {
13416   auto res = isl_pw_aff_to_union_pw_aff(copy());
13417   return manage(res);
13418 }
13419 
to_union_pw_multi_aff()13420 isl::checked::union_pw_multi_aff pw_aff::to_union_pw_multi_aff() const
13421 {
13422   return isl::checked::pw_multi_aff(*this).to_union_pw_multi_aff();
13423 }
13424 
unbind_params_insert_domain(const isl::checked::multi_id & domain)13425 isl::checked::multi_pw_aff pw_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
13426 {
13427   return isl::checked::pw_multi_aff(*this).unbind_params_insert_domain(domain);
13428 }
13429 
union_add(const isl::checked::multi_pw_aff & mpa2)13430 isl::checked::multi_pw_aff pw_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
13431 {
13432   return isl::checked::pw_multi_aff(*this).union_add(mpa2);
13433 }
13434 
union_add(const isl::checked::multi_union_pw_aff & mupa2)13435 isl::checked::multi_union_pw_aff pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
13436 {
13437   return isl::checked::union_pw_aff(*this).union_add(mupa2);
13438 }
13439 
union_add(isl::checked::pw_aff pwaff2)13440 isl::checked::pw_aff pw_aff::union_add(isl::checked::pw_aff pwaff2) const
13441 {
13442   auto res = isl_pw_aff_union_add(copy(), pwaff2.release());
13443   return manage(res);
13444 }
13445 
union_add(const isl::checked::pw_multi_aff & pma2)13446 isl::checked::pw_multi_aff pw_aff::union_add(const isl::checked::pw_multi_aff &pma2) const
13447 {
13448   return isl::checked::pw_multi_aff(*this).union_add(pma2);
13449 }
13450 
union_add(const isl::checked::union_pw_aff & upa2)13451 isl::checked::union_pw_aff pw_aff::union_add(const isl::checked::union_pw_aff &upa2) const
13452 {
13453   return isl::checked::union_pw_aff(*this).union_add(upa2);
13454 }
13455 
union_add(const isl::checked::union_pw_multi_aff & upma2)13456 isl::checked::union_pw_multi_aff pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
13457 {
13458   return isl::checked::union_pw_aff(*this).union_add(upma2);
13459 }
13460 
union_add(const isl::checked::aff & pwaff2)13461 isl::checked::pw_aff pw_aff::union_add(const isl::checked::aff &pwaff2) const
13462 {
13463   return this->union_add(isl::checked::pw_aff(pwaff2));
13464 }
13465 
13466 inline std::ostream &operator<<(std::ostream &os, const pw_aff &obj)
13467 {
13468   char *str = isl_pw_aff_to_str(obj.get());
13469   if (!str) {
13470     os.setstate(std::ios_base::badbit);
13471     return os;
13472   }
13473   os << str;
13474   free(str);
13475   return os;
13476 }
13477 
13478 // implementations for isl::pw_aff_list
manage(__isl_take isl_pw_aff_list * ptr)13479 pw_aff_list manage(__isl_take isl_pw_aff_list *ptr) {
13480   return pw_aff_list(ptr);
13481 }
manage_copy(__isl_keep isl_pw_aff_list * ptr)13482 pw_aff_list manage_copy(__isl_keep isl_pw_aff_list *ptr) {
13483   ptr = isl_pw_aff_list_copy(ptr);
13484   return pw_aff_list(ptr);
13485 }
13486 
pw_aff_list()13487 pw_aff_list::pw_aff_list()
13488     : ptr(nullptr) {}
13489 
pw_aff_list(const pw_aff_list & obj)13490 pw_aff_list::pw_aff_list(const pw_aff_list &obj)
13491     : ptr(nullptr)
13492 {
13493   ptr = obj.copy();
13494 }
13495 
pw_aff_list(__isl_take isl_pw_aff_list * ptr)13496 pw_aff_list::pw_aff_list(__isl_take isl_pw_aff_list *ptr)
13497     : ptr(ptr) {}
13498 
pw_aff_list(isl::checked::ctx ctx,int n)13499 pw_aff_list::pw_aff_list(isl::checked::ctx ctx, int n)
13500 {
13501   auto res = isl_pw_aff_list_alloc(ctx.release(), n);
13502   ptr = res;
13503 }
13504 
pw_aff_list(isl::checked::pw_aff el)13505 pw_aff_list::pw_aff_list(isl::checked::pw_aff el)
13506 {
13507   auto res = isl_pw_aff_list_from_pw_aff(el.release());
13508   ptr = res;
13509 }
13510 
pw_aff_list(isl::checked::ctx ctx,const std::string & str)13511 pw_aff_list::pw_aff_list(isl::checked::ctx ctx, const std::string &str)
13512 {
13513   auto res = isl_pw_aff_list_read_from_str(ctx.release(), str.c_str());
13514   ptr = res;
13515 }
13516 
13517 pw_aff_list &pw_aff_list::operator=(pw_aff_list obj) {
13518   std::swap(this->ptr, obj.ptr);
13519   return *this;
13520 }
13521 
~pw_aff_list()13522 pw_aff_list::~pw_aff_list() {
13523   if (ptr)
13524     isl_pw_aff_list_free(ptr);
13525 }
13526 
copy()13527 __isl_give isl_pw_aff_list *pw_aff_list::copy() const & {
13528   return isl_pw_aff_list_copy(ptr);
13529 }
13530 
get()13531 __isl_keep isl_pw_aff_list *pw_aff_list::get() const {
13532   return ptr;
13533 }
13534 
release()13535 __isl_give isl_pw_aff_list *pw_aff_list::release() {
13536   isl_pw_aff_list *tmp = ptr;
13537   ptr = nullptr;
13538   return tmp;
13539 }
13540 
is_null()13541 bool pw_aff_list::is_null() const {
13542   return ptr == nullptr;
13543 }
13544 
ctx()13545 isl::checked::ctx pw_aff_list::ctx() const {
13546   return isl::checked::ctx(isl_pw_aff_list_get_ctx(ptr));
13547 }
13548 
add(isl::checked::pw_aff el)13549 isl::checked::pw_aff_list pw_aff_list::add(isl::checked::pw_aff el) const
13550 {
13551   auto res = isl_pw_aff_list_add(copy(), el.release());
13552   return manage(res);
13553 }
13554 
at(int index)13555 isl::checked::pw_aff pw_aff_list::at(int index) const
13556 {
13557   auto res = isl_pw_aff_list_get_at(get(), index);
13558   return manage(res);
13559 }
13560 
get_at(int index)13561 isl::checked::pw_aff pw_aff_list::get_at(int index) const
13562 {
13563   return at(index);
13564 }
13565 
clear()13566 isl::checked::pw_aff_list pw_aff_list::clear() const
13567 {
13568   auto res = isl_pw_aff_list_clear(copy());
13569   return manage(res);
13570 }
13571 
concat(isl::checked::pw_aff_list list2)13572 isl::checked::pw_aff_list pw_aff_list::concat(isl::checked::pw_aff_list list2) const
13573 {
13574   auto res = isl_pw_aff_list_concat(copy(), list2.release());
13575   return manage(res);
13576 }
13577 
drop(unsigned int first,unsigned int n)13578 isl::checked::pw_aff_list pw_aff_list::drop(unsigned int first, unsigned int n) const
13579 {
13580   auto res = isl_pw_aff_list_drop(copy(), first, n);
13581   return manage(res);
13582 }
13583 
foreach(const std::function<stat (isl::checked::pw_aff)> & fn)13584 stat pw_aff_list::foreach(const std::function<stat(isl::checked::pw_aff)> &fn) const
13585 {
13586   struct fn_data {
13587     std::function<stat(isl::checked::pw_aff)> func;
13588   } fn_data = { fn };
13589   auto fn_lambda = [](isl_pw_aff *arg_0, void *arg_1) -> isl_stat {
13590     auto *data = static_cast<struct fn_data *>(arg_1);
13591     auto ret = (data->func)(manage(arg_0));
13592     return ret.release();
13593   };
13594   auto res = isl_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
13595   return manage(res);
13596 }
13597 
insert(unsigned int pos,isl::checked::pw_aff el)13598 isl::checked::pw_aff_list pw_aff_list::insert(unsigned int pos, isl::checked::pw_aff el) const
13599 {
13600   auto res = isl_pw_aff_list_insert(copy(), pos, el.release());
13601   return manage(res);
13602 }
13603 
size()13604 class size pw_aff_list::size() const
13605 {
13606   auto res = isl_pw_aff_list_size(get());
13607   return manage(res);
13608 }
13609 
13610 inline std::ostream &operator<<(std::ostream &os, const pw_aff_list &obj)
13611 {
13612   char *str = isl_pw_aff_list_to_str(obj.get());
13613   if (!str) {
13614     os.setstate(std::ios_base::badbit);
13615     return os;
13616   }
13617   os << str;
13618   free(str);
13619   return os;
13620 }
13621 
13622 // implementations for isl::pw_multi_aff
manage(__isl_take isl_pw_multi_aff * ptr)13623 pw_multi_aff manage(__isl_take isl_pw_multi_aff *ptr) {
13624   return pw_multi_aff(ptr);
13625 }
manage_copy(__isl_keep isl_pw_multi_aff * ptr)13626 pw_multi_aff manage_copy(__isl_keep isl_pw_multi_aff *ptr) {
13627   ptr = isl_pw_multi_aff_copy(ptr);
13628   return pw_multi_aff(ptr);
13629 }
13630 
pw_multi_aff()13631 pw_multi_aff::pw_multi_aff()
13632     : ptr(nullptr) {}
13633 
pw_multi_aff(const pw_multi_aff & obj)13634 pw_multi_aff::pw_multi_aff(const pw_multi_aff &obj)
13635     : ptr(nullptr)
13636 {
13637   ptr = obj.copy();
13638 }
13639 
pw_multi_aff(__isl_take isl_pw_multi_aff * ptr)13640 pw_multi_aff::pw_multi_aff(__isl_take isl_pw_multi_aff *ptr)
13641     : ptr(ptr) {}
13642 
pw_multi_aff(isl::checked::multi_aff ma)13643 pw_multi_aff::pw_multi_aff(isl::checked::multi_aff ma)
13644 {
13645   auto res = isl_pw_multi_aff_from_multi_aff(ma.release());
13646   ptr = res;
13647 }
13648 
pw_multi_aff(isl::checked::pw_aff pa)13649 pw_multi_aff::pw_multi_aff(isl::checked::pw_aff pa)
13650 {
13651   auto res = isl_pw_multi_aff_from_pw_aff(pa.release());
13652   ptr = res;
13653 }
13654 
pw_multi_aff(isl::checked::ctx ctx,const std::string & str)13655 pw_multi_aff::pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
13656 {
13657   auto res = isl_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
13658   ptr = res;
13659 }
13660 
13661 pw_multi_aff &pw_multi_aff::operator=(pw_multi_aff obj) {
13662   std::swap(this->ptr, obj.ptr);
13663   return *this;
13664 }
13665 
~pw_multi_aff()13666 pw_multi_aff::~pw_multi_aff() {
13667   if (ptr)
13668     isl_pw_multi_aff_free(ptr);
13669 }
13670 
copy()13671 __isl_give isl_pw_multi_aff *pw_multi_aff::copy() const & {
13672   return isl_pw_multi_aff_copy(ptr);
13673 }
13674 
get()13675 __isl_keep isl_pw_multi_aff *pw_multi_aff::get() const {
13676   return ptr;
13677 }
13678 
release()13679 __isl_give isl_pw_multi_aff *pw_multi_aff::release() {
13680   isl_pw_multi_aff *tmp = ptr;
13681   ptr = nullptr;
13682   return tmp;
13683 }
13684 
is_null()13685 bool pw_multi_aff::is_null() const {
13686   return ptr == nullptr;
13687 }
13688 
ctx()13689 isl::checked::ctx pw_multi_aff::ctx() const {
13690   return isl::checked::ctx(isl_pw_multi_aff_get_ctx(ptr));
13691 }
13692 
add(const isl::checked::multi_pw_aff & multi2)13693 isl::checked::multi_pw_aff pw_multi_aff::add(const isl::checked::multi_pw_aff &multi2) const
13694 {
13695   return isl::checked::multi_pw_aff(*this).add(multi2);
13696 }
13697 
add(const isl::checked::multi_union_pw_aff & multi2)13698 isl::checked::multi_union_pw_aff pw_multi_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
13699 {
13700   return isl::checked::multi_pw_aff(*this).add(multi2);
13701 }
13702 
add(isl::checked::pw_multi_aff pma2)13703 isl::checked::pw_multi_aff pw_multi_aff::add(isl::checked::pw_multi_aff pma2) const
13704 {
13705   auto res = isl_pw_multi_aff_add(copy(), pma2.release());
13706   return manage(res);
13707 }
13708 
add(const isl::checked::union_pw_multi_aff & upma2)13709 isl::checked::union_pw_multi_aff pw_multi_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
13710 {
13711   return isl::checked::union_pw_multi_aff(*this).add(upma2);
13712 }
13713 
add(const isl::checked::multi_aff & pma2)13714 isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::multi_aff &pma2) const
13715 {
13716   return this->add(isl::checked::pw_multi_aff(pma2));
13717 }
13718 
add(const isl::checked::pw_aff & pma2)13719 isl::checked::pw_multi_aff pw_multi_aff::add(const isl::checked::pw_aff &pma2) const
13720 {
13721   return this->add(isl::checked::pw_multi_aff(pma2));
13722 }
13723 
add_constant(isl::checked::multi_val mv)13724 isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::multi_val mv) const
13725 {
13726   auto res = isl_pw_multi_aff_add_constant_multi_val(copy(), mv.release());
13727   return manage(res);
13728 }
13729 
add_constant(isl::checked::val v)13730 isl::checked::pw_multi_aff pw_multi_aff::add_constant(isl::checked::val v) const
13731 {
13732   auto res = isl_pw_multi_aff_add_constant_val(copy(), v.release());
13733   return manage(res);
13734 }
13735 
add_constant(long v)13736 isl::checked::pw_multi_aff pw_multi_aff::add_constant(long v) const
13737 {
13738   return this->add_constant(isl::checked::val(ctx(), v));
13739 }
13740 
apply(const isl::checked::union_pw_multi_aff & upma2)13741 isl::checked::union_pw_multi_aff pw_multi_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
13742 {
13743   return isl::checked::union_pw_multi_aff(*this).apply(upma2);
13744 }
13745 
as_map()13746 isl::checked::map pw_multi_aff::as_map() const
13747 {
13748   auto res = isl_pw_multi_aff_as_map(copy());
13749   return manage(res);
13750 }
13751 
as_multi_aff()13752 isl::checked::multi_aff pw_multi_aff::as_multi_aff() const
13753 {
13754   auto res = isl_pw_multi_aff_as_multi_aff(copy());
13755   return manage(res);
13756 }
13757 
as_multi_union_pw_aff()13758 isl::checked::multi_union_pw_aff pw_multi_aff::as_multi_union_pw_aff() const
13759 {
13760   return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
13761 }
13762 
as_pw_multi_aff()13763 isl::checked::pw_multi_aff pw_multi_aff::as_pw_multi_aff() const
13764 {
13765   return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
13766 }
13767 
as_set()13768 isl::checked::set pw_multi_aff::as_set() const
13769 {
13770   auto res = isl_pw_multi_aff_as_set(copy());
13771   return manage(res);
13772 }
13773 
as_union_map()13774 isl::checked::union_map pw_multi_aff::as_union_map() const
13775 {
13776   return isl::checked::union_pw_multi_aff(*this).as_union_map();
13777 }
13778 
at(int pos)13779 isl::checked::pw_aff pw_multi_aff::at(int pos) const
13780 {
13781   auto res = isl_pw_multi_aff_get_at(get(), pos);
13782   return manage(res);
13783 }
13784 
get_at(int pos)13785 isl::checked::pw_aff pw_multi_aff::get_at(int pos) const
13786 {
13787   return at(pos);
13788 }
13789 
bind(const isl::checked::multi_id & tuple)13790 isl::checked::set pw_multi_aff::bind(const isl::checked::multi_id &tuple) const
13791 {
13792   return isl::checked::multi_pw_aff(*this).bind(tuple);
13793 }
13794 
bind_domain(isl::checked::multi_id tuple)13795 isl::checked::pw_multi_aff pw_multi_aff::bind_domain(isl::checked::multi_id tuple) const
13796 {
13797   auto res = isl_pw_multi_aff_bind_domain(copy(), tuple.release());
13798   return manage(res);
13799 }
13800 
bind_domain_wrapped_domain(isl::checked::multi_id tuple)13801 isl::checked::pw_multi_aff pw_multi_aff::bind_domain_wrapped_domain(isl::checked::multi_id tuple) const
13802 {
13803   auto res = isl_pw_multi_aff_bind_domain_wrapped_domain(copy(), tuple.release());
13804   return manage(res);
13805 }
13806 
coalesce()13807 isl::checked::pw_multi_aff pw_multi_aff::coalesce() const
13808 {
13809   auto res = isl_pw_multi_aff_coalesce(copy());
13810   return manage(res);
13811 }
13812 
domain()13813 isl::checked::set pw_multi_aff::domain() const
13814 {
13815   auto res = isl_pw_multi_aff_domain(copy());
13816   return manage(res);
13817 }
13818 
domain_map(isl::checked::space space)13819 isl::checked::pw_multi_aff pw_multi_aff::domain_map(isl::checked::space space)
13820 {
13821   auto res = isl_pw_multi_aff_domain_map(space.release());
13822   return manage(res);
13823 }
13824 
extract_pw_multi_aff(const isl::checked::space & space)13825 isl::checked::pw_multi_aff pw_multi_aff::extract_pw_multi_aff(const isl::checked::space &space) const
13826 {
13827   return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
13828 }
13829 
flat_range_product(const isl::checked::multi_pw_aff & multi2)13830 isl::checked::multi_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_pw_aff &multi2) const
13831 {
13832   return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
13833 }
13834 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)13835 isl::checked::multi_union_pw_aff pw_multi_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
13836 {
13837   return isl::checked::multi_pw_aff(*this).flat_range_product(multi2);
13838 }
13839 
flat_range_product(isl::checked::pw_multi_aff pma2)13840 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(isl::checked::pw_multi_aff pma2) const
13841 {
13842   auto res = isl_pw_multi_aff_flat_range_product(copy(), pma2.release());
13843   return manage(res);
13844 }
13845 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)13846 isl::checked::union_pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
13847 {
13848   return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
13849 }
13850 
flat_range_product(const isl::checked::multi_aff & pma2)13851 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::multi_aff &pma2) const
13852 {
13853   return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
13854 }
13855 
flat_range_product(const isl::checked::pw_aff & pma2)13856 isl::checked::pw_multi_aff pw_multi_aff::flat_range_product(const isl::checked::pw_aff &pma2) const
13857 {
13858   return this->flat_range_product(isl::checked::pw_multi_aff(pma2));
13859 }
13860 
foreach_piece(const std::function<stat (isl::checked::set,isl::checked::multi_aff)> & fn)13861 stat pw_multi_aff::foreach_piece(const std::function<stat(isl::checked::set, isl::checked::multi_aff)> &fn) const
13862 {
13863   struct fn_data {
13864     std::function<stat(isl::checked::set, isl::checked::multi_aff)> func;
13865   } fn_data = { fn };
13866   auto fn_lambda = [](isl_set *arg_0, isl_multi_aff *arg_1, void *arg_2) -> isl_stat {
13867     auto *data = static_cast<struct fn_data *>(arg_2);
13868     auto ret = (data->func)(manage(arg_0), manage(arg_1));
13869     return ret.release();
13870   };
13871   auto res = isl_pw_multi_aff_foreach_piece(get(), fn_lambda, &fn_data);
13872   return manage(res);
13873 }
13874 
gist(isl::checked::set set)13875 isl::checked::pw_multi_aff pw_multi_aff::gist(isl::checked::set set) const
13876 {
13877   auto res = isl_pw_multi_aff_gist(copy(), set.release());
13878   return manage(res);
13879 }
13880 
gist(const isl::checked::union_set & context)13881 isl::checked::union_pw_multi_aff pw_multi_aff::gist(const isl::checked::union_set &context) const
13882 {
13883   return isl::checked::union_pw_multi_aff(*this).gist(context);
13884 }
13885 
gist(const isl::checked::basic_set & set)13886 isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::basic_set &set) const
13887 {
13888   return this->gist(isl::checked::set(set));
13889 }
13890 
gist(const isl::checked::point & set)13891 isl::checked::pw_multi_aff pw_multi_aff::gist(const isl::checked::point &set) const
13892 {
13893   return this->gist(isl::checked::set(set));
13894 }
13895 
has_range_tuple_id()13896 boolean pw_multi_aff::has_range_tuple_id() const
13897 {
13898   auto res = isl_pw_multi_aff_has_range_tuple_id(get());
13899   return manage(res);
13900 }
13901 
identity()13902 isl::checked::multi_pw_aff pw_multi_aff::identity() const
13903 {
13904   return isl::checked::multi_pw_aff(*this).identity();
13905 }
13906 
identity_on_domain(isl::checked::space space)13907 isl::checked::pw_multi_aff pw_multi_aff::identity_on_domain(isl::checked::space space)
13908 {
13909   auto res = isl_pw_multi_aff_identity_on_domain_space(space.release());
13910   return manage(res);
13911 }
13912 
insert_domain(isl::checked::space domain)13913 isl::checked::pw_multi_aff pw_multi_aff::insert_domain(isl::checked::space domain) const
13914 {
13915   auto res = isl_pw_multi_aff_insert_domain(copy(), domain.release());
13916   return manage(res);
13917 }
13918 
intersect_domain(isl::checked::set set)13919 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(isl::checked::set set) const
13920 {
13921   auto res = isl_pw_multi_aff_intersect_domain(copy(), set.release());
13922   return manage(res);
13923 }
13924 
intersect_domain(const isl::checked::space & space)13925 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::space &space) const
13926 {
13927   return isl::checked::union_pw_multi_aff(*this).intersect_domain(space);
13928 }
13929 
intersect_domain(const isl::checked::union_set & uset)13930 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::union_set &uset) const
13931 {
13932   return isl::checked::union_pw_multi_aff(*this).intersect_domain(uset);
13933 }
13934 
intersect_domain(const isl::checked::basic_set & set)13935 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::basic_set &set) const
13936 {
13937   return this->intersect_domain(isl::checked::set(set));
13938 }
13939 
intersect_domain(const isl::checked::point & set)13940 isl::checked::pw_multi_aff pw_multi_aff::intersect_domain(const isl::checked::point &set) const
13941 {
13942   return this->intersect_domain(isl::checked::set(set));
13943 }
13944 
intersect_domain_wrapped_domain(const isl::checked::union_set & uset)13945 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_domain(const isl::checked::union_set &uset) const
13946 {
13947   return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_domain(uset);
13948 }
13949 
intersect_domain_wrapped_range(const isl::checked::union_set & uset)13950 isl::checked::union_pw_multi_aff pw_multi_aff::intersect_domain_wrapped_range(const isl::checked::union_set &uset) const
13951 {
13952   return isl::checked::union_pw_multi_aff(*this).intersect_domain_wrapped_range(uset);
13953 }
13954 
intersect_params(isl::checked::set set)13955 isl::checked::pw_multi_aff pw_multi_aff::intersect_params(isl::checked::set set) const
13956 {
13957   auto res = isl_pw_multi_aff_intersect_params(copy(), set.release());
13958   return manage(res);
13959 }
13960 
involves_locals()13961 boolean pw_multi_aff::involves_locals() const
13962 {
13963   auto res = isl_pw_multi_aff_involves_locals(get());
13964   return manage(res);
13965 }
13966 
involves_nan()13967 boolean pw_multi_aff::involves_nan() const
13968 {
13969   return isl::checked::multi_pw_aff(*this).involves_nan();
13970 }
13971 
involves_param(const isl::checked::id & id)13972 boolean pw_multi_aff::involves_param(const isl::checked::id &id) const
13973 {
13974   return isl::checked::multi_pw_aff(*this).involves_param(id);
13975 }
13976 
involves_param(const std::string & id)13977 boolean pw_multi_aff::involves_param(const std::string &id) const
13978 {
13979   return this->involves_param(isl::checked::id(ctx(), id));
13980 }
13981 
involves_param(const isl::checked::id_list & list)13982 boolean pw_multi_aff::involves_param(const isl::checked::id_list &list) const
13983 {
13984   return isl::checked::multi_pw_aff(*this).involves_param(list);
13985 }
13986 
isa_multi_aff()13987 boolean pw_multi_aff::isa_multi_aff() const
13988 {
13989   auto res = isl_pw_multi_aff_isa_multi_aff(get());
13990   return manage(res);
13991 }
13992 
isa_pw_multi_aff()13993 boolean pw_multi_aff::isa_pw_multi_aff() const
13994 {
13995   return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
13996 }
13997 
list()13998 isl::checked::pw_aff_list pw_multi_aff::list() const
13999 {
14000   return isl::checked::multi_pw_aff(*this).list();
14001 }
14002 
max(const isl::checked::multi_pw_aff & multi2)14003 isl::checked::multi_pw_aff pw_multi_aff::max(const isl::checked::multi_pw_aff &multi2) const
14004 {
14005   return isl::checked::multi_pw_aff(*this).max(multi2);
14006 }
14007 
max_multi_val()14008 isl::checked::multi_val pw_multi_aff::max_multi_val() const
14009 {
14010   auto res = isl_pw_multi_aff_max_multi_val(copy());
14011   return manage(res);
14012 }
14013 
min(const isl::checked::multi_pw_aff & multi2)14014 isl::checked::multi_pw_aff pw_multi_aff::min(const isl::checked::multi_pw_aff &multi2) const
14015 {
14016   return isl::checked::multi_pw_aff(*this).min(multi2);
14017 }
14018 
min_multi_val()14019 isl::checked::multi_val pw_multi_aff::min_multi_val() const
14020 {
14021   auto res = isl_pw_multi_aff_min_multi_val(copy());
14022   return manage(res);
14023 }
14024 
multi_val_on_domain(isl::checked::set domain,isl::checked::multi_val mv)14025 isl::checked::pw_multi_aff pw_multi_aff::multi_val_on_domain(isl::checked::set domain, isl::checked::multi_val mv)
14026 {
14027   auto res = isl_pw_multi_aff_multi_val_on_domain(domain.release(), mv.release());
14028   return manage(res);
14029 }
14030 
n_piece()14031 class size pw_multi_aff::n_piece() const
14032 {
14033   auto res = isl_pw_multi_aff_n_piece(get());
14034   return manage(res);
14035 }
14036 
neg()14037 isl::checked::multi_pw_aff pw_multi_aff::neg() const
14038 {
14039   return isl::checked::multi_pw_aff(*this).neg();
14040 }
14041 
plain_is_empty()14042 boolean pw_multi_aff::plain_is_empty() const
14043 {
14044   return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
14045 }
14046 
plain_is_equal(const isl::checked::multi_pw_aff & multi2)14047 boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_pw_aff &multi2) const
14048 {
14049   return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
14050 }
14051 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)14052 boolean pw_multi_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
14053 {
14054   return isl::checked::multi_pw_aff(*this).plain_is_equal(multi2);
14055 }
14056 
preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2)14057 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::pw_multi_aff pma2) const
14058 {
14059   auto res = isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff(copy(), pma2.release());
14060   return manage(res);
14061 }
14062 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)14063 isl::checked::union_pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
14064 {
14065   return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
14066 }
14067 
preimage_domain_wrapped_domain(const isl::checked::multi_aff & pma2)14068 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::multi_aff &pma2) const
14069 {
14070   return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
14071 }
14072 
preimage_domain_wrapped_domain(const isl::checked::pw_aff & pma2)14073 isl::checked::pw_multi_aff pw_multi_aff::preimage_domain_wrapped_domain(const isl::checked::pw_aff &pma2) const
14074 {
14075   return this->preimage_domain_wrapped_domain(isl::checked::pw_multi_aff(pma2));
14076 }
14077 
product(const isl::checked::multi_pw_aff & multi2)14078 isl::checked::multi_pw_aff pw_multi_aff::product(const isl::checked::multi_pw_aff &multi2) const
14079 {
14080   return isl::checked::multi_pw_aff(*this).product(multi2);
14081 }
14082 
product(isl::checked::pw_multi_aff pma2)14083 isl::checked::pw_multi_aff pw_multi_aff::product(isl::checked::pw_multi_aff pma2) const
14084 {
14085   auto res = isl_pw_multi_aff_product(copy(), pma2.release());
14086   return manage(res);
14087 }
14088 
product(const isl::checked::multi_aff & pma2)14089 isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::multi_aff &pma2) const
14090 {
14091   return this->product(isl::checked::pw_multi_aff(pma2));
14092 }
14093 
product(const isl::checked::pw_aff & pma2)14094 isl::checked::pw_multi_aff pw_multi_aff::product(const isl::checked::pw_aff &pma2) const
14095 {
14096   return this->product(isl::checked::pw_multi_aff(pma2));
14097 }
14098 
pullback(const isl::checked::multi_pw_aff & mpa2)14099 isl::checked::multi_pw_aff pw_multi_aff::pullback(const isl::checked::multi_pw_aff &mpa2) const
14100 {
14101   return isl::checked::multi_pw_aff(*this).pullback(mpa2);
14102 }
14103 
pullback(isl::checked::multi_aff ma)14104 isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::multi_aff ma) const
14105 {
14106   auto res = isl_pw_multi_aff_pullback_multi_aff(copy(), ma.release());
14107   return manage(res);
14108 }
14109 
pullback(isl::checked::pw_multi_aff pma2)14110 isl::checked::pw_multi_aff pw_multi_aff::pullback(isl::checked::pw_multi_aff pma2) const
14111 {
14112   auto res = isl_pw_multi_aff_pullback_pw_multi_aff(copy(), pma2.release());
14113   return manage(res);
14114 }
14115 
pullback(const isl::checked::union_pw_multi_aff & upma2)14116 isl::checked::union_pw_multi_aff pw_multi_aff::pullback(const isl::checked::union_pw_multi_aff &upma2) const
14117 {
14118   return isl::checked::union_pw_multi_aff(*this).pullback(upma2);
14119 }
14120 
pw_multi_aff_list()14121 isl::checked::pw_multi_aff_list pw_multi_aff::pw_multi_aff_list() const
14122 {
14123   return isl::checked::union_pw_multi_aff(*this).pw_multi_aff_list();
14124 }
14125 
range_factor_domain()14126 isl::checked::pw_multi_aff pw_multi_aff::range_factor_domain() const
14127 {
14128   auto res = isl_pw_multi_aff_range_factor_domain(copy());
14129   return manage(res);
14130 }
14131 
range_factor_range()14132 isl::checked::pw_multi_aff pw_multi_aff::range_factor_range() const
14133 {
14134   auto res = isl_pw_multi_aff_range_factor_range(copy());
14135   return manage(res);
14136 }
14137 
range_map(isl::checked::space space)14138 isl::checked::pw_multi_aff pw_multi_aff::range_map(isl::checked::space space)
14139 {
14140   auto res = isl_pw_multi_aff_range_map(space.release());
14141   return manage(res);
14142 }
14143 
range_product(const isl::checked::multi_pw_aff & multi2)14144 isl::checked::multi_pw_aff pw_multi_aff::range_product(const isl::checked::multi_pw_aff &multi2) const
14145 {
14146   return isl::checked::multi_pw_aff(*this).range_product(multi2);
14147 }
14148 
range_product(const isl::checked::multi_union_pw_aff & multi2)14149 isl::checked::multi_union_pw_aff pw_multi_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
14150 {
14151   return isl::checked::multi_pw_aff(*this).range_product(multi2);
14152 }
14153 
range_product(isl::checked::pw_multi_aff pma2)14154 isl::checked::pw_multi_aff pw_multi_aff::range_product(isl::checked::pw_multi_aff pma2) const
14155 {
14156   auto res = isl_pw_multi_aff_range_product(copy(), pma2.release());
14157   return manage(res);
14158 }
14159 
range_product(const isl::checked::union_pw_multi_aff & upma2)14160 isl::checked::union_pw_multi_aff pw_multi_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
14161 {
14162   return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
14163 }
14164 
range_product(const isl::checked::multi_aff & pma2)14165 isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::multi_aff &pma2) const
14166 {
14167   return this->range_product(isl::checked::pw_multi_aff(pma2));
14168 }
14169 
range_product(const isl::checked::pw_aff & pma2)14170 isl::checked::pw_multi_aff pw_multi_aff::range_product(const isl::checked::pw_aff &pma2) const
14171 {
14172   return this->range_product(isl::checked::pw_multi_aff(pma2));
14173 }
14174 
range_tuple_id()14175 isl::checked::id pw_multi_aff::range_tuple_id() const
14176 {
14177   auto res = isl_pw_multi_aff_get_range_tuple_id(get());
14178   return manage(res);
14179 }
14180 
get_range_tuple_id()14181 isl::checked::id pw_multi_aff::get_range_tuple_id() const
14182 {
14183   return range_tuple_id();
14184 }
14185 
reset_range_tuple_id()14186 isl::checked::multi_pw_aff pw_multi_aff::reset_range_tuple_id() const
14187 {
14188   return isl::checked::multi_pw_aff(*this).reset_range_tuple_id();
14189 }
14190 
scale(const isl::checked::multi_val & mv)14191 isl::checked::multi_pw_aff pw_multi_aff::scale(const isl::checked::multi_val &mv) const
14192 {
14193   return isl::checked::multi_pw_aff(*this).scale(mv);
14194 }
14195 
scale(isl::checked::val v)14196 isl::checked::pw_multi_aff pw_multi_aff::scale(isl::checked::val v) const
14197 {
14198   auto res = isl_pw_multi_aff_scale_val(copy(), v.release());
14199   return manage(res);
14200 }
14201 
scale(long v)14202 isl::checked::pw_multi_aff pw_multi_aff::scale(long v) const
14203 {
14204   return this->scale(isl::checked::val(ctx(), v));
14205 }
14206 
scale_down(const isl::checked::multi_val & mv)14207 isl::checked::multi_pw_aff pw_multi_aff::scale_down(const isl::checked::multi_val &mv) const
14208 {
14209   return isl::checked::multi_pw_aff(*this).scale_down(mv);
14210 }
14211 
scale_down(isl::checked::val v)14212 isl::checked::pw_multi_aff pw_multi_aff::scale_down(isl::checked::val v) const
14213 {
14214   auto res = isl_pw_multi_aff_scale_down_val(copy(), v.release());
14215   return manage(res);
14216 }
14217 
scale_down(long v)14218 isl::checked::pw_multi_aff pw_multi_aff::scale_down(long v) const
14219 {
14220   return this->scale_down(isl::checked::val(ctx(), v));
14221 }
14222 
set_at(int pos,const isl::checked::pw_aff & el)14223 isl::checked::multi_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::pw_aff &el) const
14224 {
14225   return isl::checked::multi_pw_aff(*this).set_at(pos, el);
14226 }
14227 
set_at(int pos,const isl::checked::union_pw_aff & el)14228 isl::checked::multi_union_pw_aff pw_multi_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
14229 {
14230   return isl::checked::multi_pw_aff(*this).set_at(pos, el);
14231 }
14232 
set_range_tuple(isl::checked::id id)14233 isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(isl::checked::id id) const
14234 {
14235   auto res = isl_pw_multi_aff_set_range_tuple_id(copy(), id.release());
14236   return manage(res);
14237 }
14238 
set_range_tuple(const std::string & id)14239 isl::checked::pw_multi_aff pw_multi_aff::set_range_tuple(const std::string &id) const
14240 {
14241   return this->set_range_tuple(isl::checked::id(ctx(), id));
14242 }
14243 
size()14244 class size pw_multi_aff::size() const
14245 {
14246   return isl::checked::multi_pw_aff(*this).size();
14247 }
14248 
space()14249 isl::checked::space pw_multi_aff::space() const
14250 {
14251   auto res = isl_pw_multi_aff_get_space(get());
14252   return manage(res);
14253 }
14254 
get_space()14255 isl::checked::space pw_multi_aff::get_space() const
14256 {
14257   return space();
14258 }
14259 
sub(const isl::checked::multi_pw_aff & multi2)14260 isl::checked::multi_pw_aff pw_multi_aff::sub(const isl::checked::multi_pw_aff &multi2) const
14261 {
14262   return isl::checked::multi_pw_aff(*this).sub(multi2);
14263 }
14264 
sub(const isl::checked::multi_union_pw_aff & multi2)14265 isl::checked::multi_union_pw_aff pw_multi_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
14266 {
14267   return isl::checked::multi_pw_aff(*this).sub(multi2);
14268 }
14269 
sub(isl::checked::pw_multi_aff pma2)14270 isl::checked::pw_multi_aff pw_multi_aff::sub(isl::checked::pw_multi_aff pma2) const
14271 {
14272   auto res = isl_pw_multi_aff_sub(copy(), pma2.release());
14273   return manage(res);
14274 }
14275 
sub(const isl::checked::union_pw_multi_aff & upma2)14276 isl::checked::union_pw_multi_aff pw_multi_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
14277 {
14278   return isl::checked::union_pw_multi_aff(*this).sub(upma2);
14279 }
14280 
sub(const isl::checked::multi_aff & pma2)14281 isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::multi_aff &pma2) const
14282 {
14283   return this->sub(isl::checked::pw_multi_aff(pma2));
14284 }
14285 
sub(const isl::checked::pw_aff & pma2)14286 isl::checked::pw_multi_aff pw_multi_aff::sub(const isl::checked::pw_aff &pma2) const
14287 {
14288   return this->sub(isl::checked::pw_multi_aff(pma2));
14289 }
14290 
subtract_domain(isl::checked::set set)14291 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(isl::checked::set set) const
14292 {
14293   auto res = isl_pw_multi_aff_subtract_domain(copy(), set.release());
14294   return manage(res);
14295 }
14296 
subtract_domain(const isl::checked::space & space)14297 isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::space &space) const
14298 {
14299   return isl::checked::union_pw_multi_aff(*this).subtract_domain(space);
14300 }
14301 
subtract_domain(const isl::checked::union_set & uset)14302 isl::checked::union_pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::union_set &uset) const
14303 {
14304   return isl::checked::union_pw_multi_aff(*this).subtract_domain(uset);
14305 }
14306 
subtract_domain(const isl::checked::basic_set & set)14307 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::basic_set &set) const
14308 {
14309   return this->subtract_domain(isl::checked::set(set));
14310 }
14311 
subtract_domain(const isl::checked::point & set)14312 isl::checked::pw_multi_aff pw_multi_aff::subtract_domain(const isl::checked::point &set) const
14313 {
14314   return this->subtract_domain(isl::checked::set(set));
14315 }
14316 
to_list()14317 isl::checked::pw_multi_aff_list pw_multi_aff::to_list() const
14318 {
14319   auto res = isl_pw_multi_aff_to_list(copy());
14320   return manage(res);
14321 }
14322 
to_multi_pw_aff()14323 isl::checked::multi_pw_aff pw_multi_aff::to_multi_pw_aff() const
14324 {
14325   auto res = isl_pw_multi_aff_to_multi_pw_aff(copy());
14326   return manage(res);
14327 }
14328 
to_union_pw_multi_aff()14329 isl::checked::union_pw_multi_aff pw_multi_aff::to_union_pw_multi_aff() const
14330 {
14331   auto res = isl_pw_multi_aff_to_union_pw_multi_aff(copy());
14332   return manage(res);
14333 }
14334 
unbind_params_insert_domain(const isl::checked::multi_id & domain)14335 isl::checked::multi_pw_aff pw_multi_aff::unbind_params_insert_domain(const isl::checked::multi_id &domain) const
14336 {
14337   return isl::checked::multi_pw_aff(*this).unbind_params_insert_domain(domain);
14338 }
14339 
union_add(const isl::checked::multi_pw_aff & mpa2)14340 isl::checked::multi_pw_aff pw_multi_aff::union_add(const isl::checked::multi_pw_aff &mpa2) const
14341 {
14342   return isl::checked::multi_pw_aff(*this).union_add(mpa2);
14343 }
14344 
union_add(const isl::checked::multi_union_pw_aff & mupa2)14345 isl::checked::multi_union_pw_aff pw_multi_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
14346 {
14347   return isl::checked::multi_pw_aff(*this).union_add(mupa2);
14348 }
14349 
union_add(isl::checked::pw_multi_aff pma2)14350 isl::checked::pw_multi_aff pw_multi_aff::union_add(isl::checked::pw_multi_aff pma2) const
14351 {
14352   auto res = isl_pw_multi_aff_union_add(copy(), pma2.release());
14353   return manage(res);
14354 }
14355 
union_add(const isl::checked::union_pw_multi_aff & upma2)14356 isl::checked::union_pw_multi_aff pw_multi_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
14357 {
14358   return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
14359 }
14360 
union_add(const isl::checked::multi_aff & pma2)14361 isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::multi_aff &pma2) const
14362 {
14363   return this->union_add(isl::checked::pw_multi_aff(pma2));
14364 }
14365 
union_add(const isl::checked::pw_aff & pma2)14366 isl::checked::pw_multi_aff pw_multi_aff::union_add(const isl::checked::pw_aff &pma2) const
14367 {
14368   return this->union_add(isl::checked::pw_multi_aff(pma2));
14369 }
14370 
zero(isl::checked::space space)14371 isl::checked::pw_multi_aff pw_multi_aff::zero(isl::checked::space space)
14372 {
14373   auto res = isl_pw_multi_aff_zero(space.release());
14374   return manage(res);
14375 }
14376 
14377 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff &obj)
14378 {
14379   char *str = isl_pw_multi_aff_to_str(obj.get());
14380   if (!str) {
14381     os.setstate(std::ios_base::badbit);
14382     return os;
14383   }
14384   os << str;
14385   free(str);
14386   return os;
14387 }
14388 
14389 // implementations for isl::pw_multi_aff_list
manage(__isl_take isl_pw_multi_aff_list * ptr)14390 pw_multi_aff_list manage(__isl_take isl_pw_multi_aff_list *ptr) {
14391   return pw_multi_aff_list(ptr);
14392 }
manage_copy(__isl_keep isl_pw_multi_aff_list * ptr)14393 pw_multi_aff_list manage_copy(__isl_keep isl_pw_multi_aff_list *ptr) {
14394   ptr = isl_pw_multi_aff_list_copy(ptr);
14395   return pw_multi_aff_list(ptr);
14396 }
14397 
pw_multi_aff_list()14398 pw_multi_aff_list::pw_multi_aff_list()
14399     : ptr(nullptr) {}
14400 
pw_multi_aff_list(const pw_multi_aff_list & obj)14401 pw_multi_aff_list::pw_multi_aff_list(const pw_multi_aff_list &obj)
14402     : ptr(nullptr)
14403 {
14404   ptr = obj.copy();
14405 }
14406 
pw_multi_aff_list(__isl_take isl_pw_multi_aff_list * ptr)14407 pw_multi_aff_list::pw_multi_aff_list(__isl_take isl_pw_multi_aff_list *ptr)
14408     : ptr(ptr) {}
14409 
pw_multi_aff_list(isl::checked::ctx ctx,int n)14410 pw_multi_aff_list::pw_multi_aff_list(isl::checked::ctx ctx, int n)
14411 {
14412   auto res = isl_pw_multi_aff_list_alloc(ctx.release(), n);
14413   ptr = res;
14414 }
14415 
pw_multi_aff_list(isl::checked::pw_multi_aff el)14416 pw_multi_aff_list::pw_multi_aff_list(isl::checked::pw_multi_aff el)
14417 {
14418   auto res = isl_pw_multi_aff_list_from_pw_multi_aff(el.release());
14419   ptr = res;
14420 }
14421 
pw_multi_aff_list(isl::checked::ctx ctx,const std::string & str)14422 pw_multi_aff_list::pw_multi_aff_list(isl::checked::ctx ctx, const std::string &str)
14423 {
14424   auto res = isl_pw_multi_aff_list_read_from_str(ctx.release(), str.c_str());
14425   ptr = res;
14426 }
14427 
14428 pw_multi_aff_list &pw_multi_aff_list::operator=(pw_multi_aff_list obj) {
14429   std::swap(this->ptr, obj.ptr);
14430   return *this;
14431 }
14432 
~pw_multi_aff_list()14433 pw_multi_aff_list::~pw_multi_aff_list() {
14434   if (ptr)
14435     isl_pw_multi_aff_list_free(ptr);
14436 }
14437 
copy()14438 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::copy() const & {
14439   return isl_pw_multi_aff_list_copy(ptr);
14440 }
14441 
get()14442 __isl_keep isl_pw_multi_aff_list *pw_multi_aff_list::get() const {
14443   return ptr;
14444 }
14445 
release()14446 __isl_give isl_pw_multi_aff_list *pw_multi_aff_list::release() {
14447   isl_pw_multi_aff_list *tmp = ptr;
14448   ptr = nullptr;
14449   return tmp;
14450 }
14451 
is_null()14452 bool pw_multi_aff_list::is_null() const {
14453   return ptr == nullptr;
14454 }
14455 
ctx()14456 isl::checked::ctx pw_multi_aff_list::ctx() const {
14457   return isl::checked::ctx(isl_pw_multi_aff_list_get_ctx(ptr));
14458 }
14459 
add(isl::checked::pw_multi_aff el)14460 isl::checked::pw_multi_aff_list pw_multi_aff_list::add(isl::checked::pw_multi_aff el) const
14461 {
14462   auto res = isl_pw_multi_aff_list_add(copy(), el.release());
14463   return manage(res);
14464 }
14465 
at(int index)14466 isl::checked::pw_multi_aff pw_multi_aff_list::at(int index) const
14467 {
14468   auto res = isl_pw_multi_aff_list_get_at(get(), index);
14469   return manage(res);
14470 }
14471 
get_at(int index)14472 isl::checked::pw_multi_aff pw_multi_aff_list::get_at(int index) const
14473 {
14474   return at(index);
14475 }
14476 
clear()14477 isl::checked::pw_multi_aff_list pw_multi_aff_list::clear() const
14478 {
14479   auto res = isl_pw_multi_aff_list_clear(copy());
14480   return manage(res);
14481 }
14482 
concat(isl::checked::pw_multi_aff_list list2)14483 isl::checked::pw_multi_aff_list pw_multi_aff_list::concat(isl::checked::pw_multi_aff_list list2) const
14484 {
14485   auto res = isl_pw_multi_aff_list_concat(copy(), list2.release());
14486   return manage(res);
14487 }
14488 
drop(unsigned int first,unsigned int n)14489 isl::checked::pw_multi_aff_list pw_multi_aff_list::drop(unsigned int first, unsigned int n) const
14490 {
14491   auto res = isl_pw_multi_aff_list_drop(copy(), first, n);
14492   return manage(res);
14493 }
14494 
foreach(const std::function<stat (isl::checked::pw_multi_aff)> & fn)14495 stat pw_multi_aff_list::foreach(const std::function<stat(isl::checked::pw_multi_aff)> &fn) const
14496 {
14497   struct fn_data {
14498     std::function<stat(isl::checked::pw_multi_aff)> func;
14499   } fn_data = { fn };
14500   auto fn_lambda = [](isl_pw_multi_aff *arg_0, void *arg_1) -> isl_stat {
14501     auto *data = static_cast<struct fn_data *>(arg_1);
14502     auto ret = (data->func)(manage(arg_0));
14503     return ret.release();
14504   };
14505   auto res = isl_pw_multi_aff_list_foreach(get(), fn_lambda, &fn_data);
14506   return manage(res);
14507 }
14508 
insert(unsigned int pos,isl::checked::pw_multi_aff el)14509 isl::checked::pw_multi_aff_list pw_multi_aff_list::insert(unsigned int pos, isl::checked::pw_multi_aff el) const
14510 {
14511   auto res = isl_pw_multi_aff_list_insert(copy(), pos, el.release());
14512   return manage(res);
14513 }
14514 
size()14515 class size pw_multi_aff_list::size() const
14516 {
14517   auto res = isl_pw_multi_aff_list_size(get());
14518   return manage(res);
14519 }
14520 
14521 inline std::ostream &operator<<(std::ostream &os, const pw_multi_aff_list &obj)
14522 {
14523   char *str = isl_pw_multi_aff_list_to_str(obj.get());
14524   if (!str) {
14525     os.setstate(std::ios_base::badbit);
14526     return os;
14527   }
14528   os << str;
14529   free(str);
14530   return os;
14531 }
14532 
14533 // implementations for isl::schedule
manage(__isl_take isl_schedule * ptr)14534 schedule manage(__isl_take isl_schedule *ptr) {
14535   return schedule(ptr);
14536 }
manage_copy(__isl_keep isl_schedule * ptr)14537 schedule manage_copy(__isl_keep isl_schedule *ptr) {
14538   ptr = isl_schedule_copy(ptr);
14539   return schedule(ptr);
14540 }
14541 
schedule()14542 schedule::schedule()
14543     : ptr(nullptr) {}
14544 
schedule(const schedule & obj)14545 schedule::schedule(const schedule &obj)
14546     : ptr(nullptr)
14547 {
14548   ptr = obj.copy();
14549 }
14550 
schedule(__isl_take isl_schedule * ptr)14551 schedule::schedule(__isl_take isl_schedule *ptr)
14552     : ptr(ptr) {}
14553 
schedule(isl::checked::ctx ctx,const std::string & str)14554 schedule::schedule(isl::checked::ctx ctx, const std::string &str)
14555 {
14556   auto res = isl_schedule_read_from_str(ctx.release(), str.c_str());
14557   ptr = res;
14558 }
14559 
14560 schedule &schedule::operator=(schedule obj) {
14561   std::swap(this->ptr, obj.ptr);
14562   return *this;
14563 }
14564 
~schedule()14565 schedule::~schedule() {
14566   if (ptr)
14567     isl_schedule_free(ptr);
14568 }
14569 
copy()14570 __isl_give isl_schedule *schedule::copy() const & {
14571   return isl_schedule_copy(ptr);
14572 }
14573 
get()14574 __isl_keep isl_schedule *schedule::get() const {
14575   return ptr;
14576 }
14577 
release()14578 __isl_give isl_schedule *schedule::release() {
14579   isl_schedule *tmp = ptr;
14580   ptr = nullptr;
14581   return tmp;
14582 }
14583 
is_null()14584 bool schedule::is_null() const {
14585   return ptr == nullptr;
14586 }
14587 
ctx()14588 isl::checked::ctx schedule::ctx() const {
14589   return isl::checked::ctx(isl_schedule_get_ctx(ptr));
14590 }
14591 
domain()14592 isl::checked::union_set schedule::domain() const
14593 {
14594   auto res = isl_schedule_get_domain(get());
14595   return manage(res);
14596 }
14597 
get_domain()14598 isl::checked::union_set schedule::get_domain() const
14599 {
14600   return domain();
14601 }
14602 
from_domain(isl::checked::union_set domain)14603 isl::checked::schedule schedule::from_domain(isl::checked::union_set domain)
14604 {
14605   auto res = isl_schedule_from_domain(domain.release());
14606   return manage(res);
14607 }
14608 
map()14609 isl::checked::union_map schedule::map() const
14610 {
14611   auto res = isl_schedule_get_map(get());
14612   return manage(res);
14613 }
14614 
get_map()14615 isl::checked::union_map schedule::get_map() const
14616 {
14617   return map();
14618 }
14619 
pullback(isl::checked::union_pw_multi_aff upma)14620 isl::checked::schedule schedule::pullback(isl::checked::union_pw_multi_aff upma) const
14621 {
14622   auto res = isl_schedule_pullback_union_pw_multi_aff(copy(), upma.release());
14623   return manage(res);
14624 }
14625 
root()14626 isl::checked::schedule_node schedule::root() const
14627 {
14628   auto res = isl_schedule_get_root(get());
14629   return manage(res);
14630 }
14631 
get_root()14632 isl::checked::schedule_node schedule::get_root() const
14633 {
14634   return root();
14635 }
14636 
14637 inline std::ostream &operator<<(std::ostream &os, const schedule &obj)
14638 {
14639   char *str = isl_schedule_to_str(obj.get());
14640   if (!str) {
14641     os.setstate(std::ios_base::badbit);
14642     return os;
14643   }
14644   os << str;
14645   free(str);
14646   return os;
14647 }
14648 
14649 // implementations for isl::schedule_constraints
manage(__isl_take isl_schedule_constraints * ptr)14650 schedule_constraints manage(__isl_take isl_schedule_constraints *ptr) {
14651   return schedule_constraints(ptr);
14652 }
manage_copy(__isl_keep isl_schedule_constraints * ptr)14653 schedule_constraints manage_copy(__isl_keep isl_schedule_constraints *ptr) {
14654   ptr = isl_schedule_constraints_copy(ptr);
14655   return schedule_constraints(ptr);
14656 }
14657 
schedule_constraints()14658 schedule_constraints::schedule_constraints()
14659     : ptr(nullptr) {}
14660 
schedule_constraints(const schedule_constraints & obj)14661 schedule_constraints::schedule_constraints(const schedule_constraints &obj)
14662     : ptr(nullptr)
14663 {
14664   ptr = obj.copy();
14665 }
14666 
schedule_constraints(__isl_take isl_schedule_constraints * ptr)14667 schedule_constraints::schedule_constraints(__isl_take isl_schedule_constraints *ptr)
14668     : ptr(ptr) {}
14669 
schedule_constraints(isl::checked::ctx ctx,const std::string & str)14670 schedule_constraints::schedule_constraints(isl::checked::ctx ctx, const std::string &str)
14671 {
14672   auto res = isl_schedule_constraints_read_from_str(ctx.release(), str.c_str());
14673   ptr = res;
14674 }
14675 
14676 schedule_constraints &schedule_constraints::operator=(schedule_constraints obj) {
14677   std::swap(this->ptr, obj.ptr);
14678   return *this;
14679 }
14680 
~schedule_constraints()14681 schedule_constraints::~schedule_constraints() {
14682   if (ptr)
14683     isl_schedule_constraints_free(ptr);
14684 }
14685 
copy()14686 __isl_give isl_schedule_constraints *schedule_constraints::copy() const & {
14687   return isl_schedule_constraints_copy(ptr);
14688 }
14689 
get()14690 __isl_keep isl_schedule_constraints *schedule_constraints::get() const {
14691   return ptr;
14692 }
14693 
release()14694 __isl_give isl_schedule_constraints *schedule_constraints::release() {
14695   isl_schedule_constraints *tmp = ptr;
14696   ptr = nullptr;
14697   return tmp;
14698 }
14699 
is_null()14700 bool schedule_constraints::is_null() const {
14701   return ptr == nullptr;
14702 }
14703 
ctx()14704 isl::checked::ctx schedule_constraints::ctx() const {
14705   return isl::checked::ctx(isl_schedule_constraints_get_ctx(ptr));
14706 }
14707 
coincidence()14708 isl::checked::union_map schedule_constraints::coincidence() const
14709 {
14710   auto res = isl_schedule_constraints_get_coincidence(get());
14711   return manage(res);
14712 }
14713 
get_coincidence()14714 isl::checked::union_map schedule_constraints::get_coincidence() const
14715 {
14716   return coincidence();
14717 }
14718 
compute_schedule()14719 isl::checked::schedule schedule_constraints::compute_schedule() const
14720 {
14721   auto res = isl_schedule_constraints_compute_schedule(copy());
14722   return manage(res);
14723 }
14724 
conditional_validity()14725 isl::checked::union_map schedule_constraints::conditional_validity() const
14726 {
14727   auto res = isl_schedule_constraints_get_conditional_validity(get());
14728   return manage(res);
14729 }
14730 
get_conditional_validity()14731 isl::checked::union_map schedule_constraints::get_conditional_validity() const
14732 {
14733   return conditional_validity();
14734 }
14735 
conditional_validity_condition()14736 isl::checked::union_map schedule_constraints::conditional_validity_condition() const
14737 {
14738   auto res = isl_schedule_constraints_get_conditional_validity_condition(get());
14739   return manage(res);
14740 }
14741 
get_conditional_validity_condition()14742 isl::checked::union_map schedule_constraints::get_conditional_validity_condition() const
14743 {
14744   return conditional_validity_condition();
14745 }
14746 
context()14747 isl::checked::set schedule_constraints::context() const
14748 {
14749   auto res = isl_schedule_constraints_get_context(get());
14750   return manage(res);
14751 }
14752 
get_context()14753 isl::checked::set schedule_constraints::get_context() const
14754 {
14755   return context();
14756 }
14757 
domain()14758 isl::checked::union_set schedule_constraints::domain() const
14759 {
14760   auto res = isl_schedule_constraints_get_domain(get());
14761   return manage(res);
14762 }
14763 
get_domain()14764 isl::checked::union_set schedule_constraints::get_domain() const
14765 {
14766   return domain();
14767 }
14768 
on_domain(isl::checked::union_set domain)14769 isl::checked::schedule_constraints schedule_constraints::on_domain(isl::checked::union_set domain)
14770 {
14771   auto res = isl_schedule_constraints_on_domain(domain.release());
14772   return manage(res);
14773 }
14774 
proximity()14775 isl::checked::union_map schedule_constraints::proximity() const
14776 {
14777   auto res = isl_schedule_constraints_get_proximity(get());
14778   return manage(res);
14779 }
14780 
get_proximity()14781 isl::checked::union_map schedule_constraints::get_proximity() const
14782 {
14783   return proximity();
14784 }
14785 
set_coincidence(isl::checked::union_map coincidence)14786 isl::checked::schedule_constraints schedule_constraints::set_coincidence(isl::checked::union_map coincidence) const
14787 {
14788   auto res = isl_schedule_constraints_set_coincidence(copy(), coincidence.release());
14789   return manage(res);
14790 }
14791 
set_conditional_validity(isl::checked::union_map condition,isl::checked::union_map validity)14792 isl::checked::schedule_constraints schedule_constraints::set_conditional_validity(isl::checked::union_map condition, isl::checked::union_map validity) const
14793 {
14794   auto res = isl_schedule_constraints_set_conditional_validity(copy(), condition.release(), validity.release());
14795   return manage(res);
14796 }
14797 
set_context(isl::checked::set context)14798 isl::checked::schedule_constraints schedule_constraints::set_context(isl::checked::set context) const
14799 {
14800   auto res = isl_schedule_constraints_set_context(copy(), context.release());
14801   return manage(res);
14802 }
14803 
set_proximity(isl::checked::union_map proximity)14804 isl::checked::schedule_constraints schedule_constraints::set_proximity(isl::checked::union_map proximity) const
14805 {
14806   auto res = isl_schedule_constraints_set_proximity(copy(), proximity.release());
14807   return manage(res);
14808 }
14809 
set_validity(isl::checked::union_map validity)14810 isl::checked::schedule_constraints schedule_constraints::set_validity(isl::checked::union_map validity) const
14811 {
14812   auto res = isl_schedule_constraints_set_validity(copy(), validity.release());
14813   return manage(res);
14814 }
14815 
validity()14816 isl::checked::union_map schedule_constraints::validity() const
14817 {
14818   auto res = isl_schedule_constraints_get_validity(get());
14819   return manage(res);
14820 }
14821 
get_validity()14822 isl::checked::union_map schedule_constraints::get_validity() const
14823 {
14824   return validity();
14825 }
14826 
14827 inline std::ostream &operator<<(std::ostream &os, const schedule_constraints &obj)
14828 {
14829   char *str = isl_schedule_constraints_to_str(obj.get());
14830   if (!str) {
14831     os.setstate(std::ios_base::badbit);
14832     return os;
14833   }
14834   os << str;
14835   free(str);
14836   return os;
14837 }
14838 
14839 // implementations for isl::schedule_node
manage(__isl_take isl_schedule_node * ptr)14840 schedule_node manage(__isl_take isl_schedule_node *ptr) {
14841   return schedule_node(ptr);
14842 }
manage_copy(__isl_keep isl_schedule_node * ptr)14843 schedule_node manage_copy(__isl_keep isl_schedule_node *ptr) {
14844   ptr = isl_schedule_node_copy(ptr);
14845   return schedule_node(ptr);
14846 }
14847 
schedule_node()14848 schedule_node::schedule_node()
14849     : ptr(nullptr) {}
14850 
schedule_node(const schedule_node & obj)14851 schedule_node::schedule_node(const schedule_node &obj)
14852     : ptr(nullptr)
14853 {
14854   ptr = obj.copy();
14855 }
14856 
schedule_node(__isl_take isl_schedule_node * ptr)14857 schedule_node::schedule_node(__isl_take isl_schedule_node *ptr)
14858     : ptr(ptr) {}
14859 
14860 schedule_node &schedule_node::operator=(schedule_node obj) {
14861   std::swap(this->ptr, obj.ptr);
14862   return *this;
14863 }
14864 
~schedule_node()14865 schedule_node::~schedule_node() {
14866   if (ptr)
14867     isl_schedule_node_free(ptr);
14868 }
14869 
copy()14870 __isl_give isl_schedule_node *schedule_node::copy() const & {
14871   return isl_schedule_node_copy(ptr);
14872 }
14873 
get()14874 __isl_keep isl_schedule_node *schedule_node::get() const {
14875   return ptr;
14876 }
14877 
release()14878 __isl_give isl_schedule_node *schedule_node::release() {
14879   isl_schedule_node *tmp = ptr;
14880   ptr = nullptr;
14881   return tmp;
14882 }
14883 
is_null()14884 bool schedule_node::is_null() const {
14885   return ptr == nullptr;
14886 }
14887 
14888 template <typename T, typename>
isa_type(T subtype)14889 boolean schedule_node::isa_type(T subtype) const
14890 {
14891   if (is_null())
14892     return boolean();
14893   return isl_schedule_node_get_type(get()) == subtype;
14894 }
14895 template <class T>
isa()14896 boolean schedule_node::isa() const
14897 {
14898   return isa_type<decltype(T::type)>(T::type);
14899 }
14900 template <class T>
as()14901 T schedule_node::as() const
14902 {
14903  if (isa<T>().is_false())
14904     isl_die(ctx().get(), isl_error_invalid, "not an object of the requested subtype", return T());
14905   return T(copy());
14906 }
14907 
ctx()14908 isl::checked::ctx schedule_node::ctx() const {
14909   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
14910 }
14911 
ancestor(int generation)14912 isl::checked::schedule_node schedule_node::ancestor(int generation) const
14913 {
14914   auto res = isl_schedule_node_ancestor(copy(), generation);
14915   return manage(res);
14916 }
14917 
ancestor_child_position(const isl::checked::schedule_node & ancestor)14918 class size schedule_node::ancestor_child_position(const isl::checked::schedule_node &ancestor) const
14919 {
14920   auto res = isl_schedule_node_get_ancestor_child_position(get(), ancestor.get());
14921   return manage(res);
14922 }
14923 
get_ancestor_child_position(const isl::checked::schedule_node & ancestor)14924 class size schedule_node::get_ancestor_child_position(const isl::checked::schedule_node &ancestor) const
14925 {
14926   return ancestor_child_position(ancestor);
14927 }
14928 
child(int pos)14929 isl::checked::schedule_node schedule_node::child(int pos) const
14930 {
14931   auto res = isl_schedule_node_child(copy(), pos);
14932   return manage(res);
14933 }
14934 
child_position()14935 class size schedule_node::child_position() const
14936 {
14937   auto res = isl_schedule_node_get_child_position(get());
14938   return manage(res);
14939 }
14940 
get_child_position()14941 class size schedule_node::get_child_position() const
14942 {
14943   return child_position();
14944 }
14945 
every_descendant(const std::function<boolean (isl::checked::schedule_node)> & test)14946 boolean schedule_node::every_descendant(const std::function<boolean(isl::checked::schedule_node)> &test) const
14947 {
14948   struct test_data {
14949     std::function<boolean(isl::checked::schedule_node)> func;
14950   } test_data = { test };
14951   auto test_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
14952     auto *data = static_cast<struct test_data *>(arg_1);
14953     auto ret = (data->func)(manage_copy(arg_0));
14954     return ret.release();
14955   };
14956   auto res = isl_schedule_node_every_descendant(get(), test_lambda, &test_data);
14957   return manage(res);
14958 }
14959 
first_child()14960 isl::checked::schedule_node schedule_node::first_child() const
14961 {
14962   auto res = isl_schedule_node_first_child(copy());
14963   return manage(res);
14964 }
14965 
foreach_ancestor_top_down(const std::function<stat (isl::checked::schedule_node)> & fn)14966 stat schedule_node::foreach_ancestor_top_down(const std::function<stat(isl::checked::schedule_node)> &fn) const
14967 {
14968   struct fn_data {
14969     std::function<stat(isl::checked::schedule_node)> func;
14970   } fn_data = { fn };
14971   auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
14972     auto *data = static_cast<struct fn_data *>(arg_1);
14973     auto ret = (data->func)(manage_copy(arg_0));
14974     return ret.release();
14975   };
14976   auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
14977   return manage(res);
14978 }
14979 
foreach_descendant_top_down(const std::function<boolean (isl::checked::schedule_node)> & fn)14980 stat schedule_node::foreach_descendant_top_down(const std::function<boolean(isl::checked::schedule_node)> &fn) const
14981 {
14982   struct fn_data {
14983     std::function<boolean(isl::checked::schedule_node)> func;
14984   } fn_data = { fn };
14985   auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_bool {
14986     auto *data = static_cast<struct fn_data *>(arg_1);
14987     auto ret = (data->func)(manage_copy(arg_0));
14988     return ret.release();
14989   };
14990   auto res = isl_schedule_node_foreach_descendant_top_down(get(), fn_lambda, &fn_data);
14991   return manage(res);
14992 }
14993 
from_domain(isl::checked::union_set domain)14994 isl::checked::schedule_node schedule_node::from_domain(isl::checked::union_set domain)
14995 {
14996   auto res = isl_schedule_node_from_domain(domain.release());
14997   return manage(res);
14998 }
14999 
from_extension(isl::checked::union_map extension)15000 isl::checked::schedule_node schedule_node::from_extension(isl::checked::union_map extension)
15001 {
15002   auto res = isl_schedule_node_from_extension(extension.release());
15003   return manage(res);
15004 }
15005 
graft_after(isl::checked::schedule_node graft)15006 isl::checked::schedule_node schedule_node::graft_after(isl::checked::schedule_node graft) const
15007 {
15008   auto res = isl_schedule_node_graft_after(copy(), graft.release());
15009   return manage(res);
15010 }
15011 
graft_before(isl::checked::schedule_node graft)15012 isl::checked::schedule_node schedule_node::graft_before(isl::checked::schedule_node graft) const
15013 {
15014   auto res = isl_schedule_node_graft_before(copy(), graft.release());
15015   return manage(res);
15016 }
15017 
has_children()15018 boolean schedule_node::has_children() const
15019 {
15020   auto res = isl_schedule_node_has_children(get());
15021   return manage(res);
15022 }
15023 
has_next_sibling()15024 boolean schedule_node::has_next_sibling() const
15025 {
15026   auto res = isl_schedule_node_has_next_sibling(get());
15027   return manage(res);
15028 }
15029 
has_parent()15030 boolean schedule_node::has_parent() const
15031 {
15032   auto res = isl_schedule_node_has_parent(get());
15033   return manage(res);
15034 }
15035 
has_previous_sibling()15036 boolean schedule_node::has_previous_sibling() const
15037 {
15038   auto res = isl_schedule_node_has_previous_sibling(get());
15039   return manage(res);
15040 }
15041 
insert_context(isl::checked::set context)15042 isl::checked::schedule_node schedule_node::insert_context(isl::checked::set context) const
15043 {
15044   auto res = isl_schedule_node_insert_context(copy(), context.release());
15045   return manage(res);
15046 }
15047 
insert_filter(isl::checked::union_set filter)15048 isl::checked::schedule_node schedule_node::insert_filter(isl::checked::union_set filter) const
15049 {
15050   auto res = isl_schedule_node_insert_filter(copy(), filter.release());
15051   return manage(res);
15052 }
15053 
insert_guard(isl::checked::set context)15054 isl::checked::schedule_node schedule_node::insert_guard(isl::checked::set context) const
15055 {
15056   auto res = isl_schedule_node_insert_guard(copy(), context.release());
15057   return manage(res);
15058 }
15059 
insert_mark(isl::checked::id mark)15060 isl::checked::schedule_node schedule_node::insert_mark(isl::checked::id mark) const
15061 {
15062   auto res = isl_schedule_node_insert_mark(copy(), mark.release());
15063   return manage(res);
15064 }
15065 
insert_mark(const std::string & mark)15066 isl::checked::schedule_node schedule_node::insert_mark(const std::string &mark) const
15067 {
15068   return this->insert_mark(isl::checked::id(ctx(), mark));
15069 }
15070 
insert_partial_schedule(isl::checked::multi_union_pw_aff schedule)15071 isl::checked::schedule_node schedule_node::insert_partial_schedule(isl::checked::multi_union_pw_aff schedule) const
15072 {
15073   auto res = isl_schedule_node_insert_partial_schedule(copy(), schedule.release());
15074   return manage(res);
15075 }
15076 
insert_sequence(isl::checked::union_set_list filters)15077 isl::checked::schedule_node schedule_node::insert_sequence(isl::checked::union_set_list filters) const
15078 {
15079   auto res = isl_schedule_node_insert_sequence(copy(), filters.release());
15080   return manage(res);
15081 }
15082 
insert_set(isl::checked::union_set_list filters)15083 isl::checked::schedule_node schedule_node::insert_set(isl::checked::union_set_list filters) const
15084 {
15085   auto res = isl_schedule_node_insert_set(copy(), filters.release());
15086   return manage(res);
15087 }
15088 
is_equal(const isl::checked::schedule_node & node2)15089 boolean schedule_node::is_equal(const isl::checked::schedule_node &node2) const
15090 {
15091   auto res = isl_schedule_node_is_equal(get(), node2.get());
15092   return manage(res);
15093 }
15094 
is_subtree_anchored()15095 boolean schedule_node::is_subtree_anchored() const
15096 {
15097   auto res = isl_schedule_node_is_subtree_anchored(get());
15098   return manage(res);
15099 }
15100 
map_descendant_bottom_up(const std::function<isl::checked::schedule_node (isl::checked::schedule_node)> & fn)15101 isl::checked::schedule_node schedule_node::map_descendant_bottom_up(const std::function<isl::checked::schedule_node(isl::checked::schedule_node)> &fn) const
15102 {
15103   struct fn_data {
15104     std::function<isl::checked::schedule_node(isl::checked::schedule_node)> func;
15105   } fn_data = { fn };
15106   auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_schedule_node * {
15107     auto *data = static_cast<struct fn_data *>(arg_1);
15108     auto ret = (data->func)(manage(arg_0));
15109     return ret.release();
15110   };
15111   auto res = isl_schedule_node_map_descendant_bottom_up(copy(), fn_lambda, &fn_data);
15112   return manage(res);
15113 }
15114 
n_children()15115 class size schedule_node::n_children() const
15116 {
15117   auto res = isl_schedule_node_n_children(get());
15118   return manage(res);
15119 }
15120 
next_sibling()15121 isl::checked::schedule_node schedule_node::next_sibling() const
15122 {
15123   auto res = isl_schedule_node_next_sibling(copy());
15124   return manage(res);
15125 }
15126 
order_after(isl::checked::union_set filter)15127 isl::checked::schedule_node schedule_node::order_after(isl::checked::union_set filter) const
15128 {
15129   auto res = isl_schedule_node_order_after(copy(), filter.release());
15130   return manage(res);
15131 }
15132 
order_before(isl::checked::union_set filter)15133 isl::checked::schedule_node schedule_node::order_before(isl::checked::union_set filter) const
15134 {
15135   auto res = isl_schedule_node_order_before(copy(), filter.release());
15136   return manage(res);
15137 }
15138 
parent()15139 isl::checked::schedule_node schedule_node::parent() const
15140 {
15141   auto res = isl_schedule_node_parent(copy());
15142   return manage(res);
15143 }
15144 
prefix_schedule_multi_union_pw_aff()15145 isl::checked::multi_union_pw_aff schedule_node::prefix_schedule_multi_union_pw_aff() const
15146 {
15147   auto res = isl_schedule_node_get_prefix_schedule_multi_union_pw_aff(get());
15148   return manage(res);
15149 }
15150 
get_prefix_schedule_multi_union_pw_aff()15151 isl::checked::multi_union_pw_aff schedule_node::get_prefix_schedule_multi_union_pw_aff() const
15152 {
15153   return prefix_schedule_multi_union_pw_aff();
15154 }
15155 
prefix_schedule_union_map()15156 isl::checked::union_map schedule_node::prefix_schedule_union_map() const
15157 {
15158   auto res = isl_schedule_node_get_prefix_schedule_union_map(get());
15159   return manage(res);
15160 }
15161 
get_prefix_schedule_union_map()15162 isl::checked::union_map schedule_node::get_prefix_schedule_union_map() const
15163 {
15164   return prefix_schedule_union_map();
15165 }
15166 
prefix_schedule_union_pw_multi_aff()15167 isl::checked::union_pw_multi_aff schedule_node::prefix_schedule_union_pw_multi_aff() const
15168 {
15169   auto res = isl_schedule_node_get_prefix_schedule_union_pw_multi_aff(get());
15170   return manage(res);
15171 }
15172 
get_prefix_schedule_union_pw_multi_aff()15173 isl::checked::union_pw_multi_aff schedule_node::get_prefix_schedule_union_pw_multi_aff() const
15174 {
15175   return prefix_schedule_union_pw_multi_aff();
15176 }
15177 
previous_sibling()15178 isl::checked::schedule_node schedule_node::previous_sibling() const
15179 {
15180   auto res = isl_schedule_node_previous_sibling(copy());
15181   return manage(res);
15182 }
15183 
root()15184 isl::checked::schedule_node schedule_node::root() const
15185 {
15186   auto res = isl_schedule_node_root(copy());
15187   return manage(res);
15188 }
15189 
schedule()15190 isl::checked::schedule schedule_node::schedule() const
15191 {
15192   auto res = isl_schedule_node_get_schedule(get());
15193   return manage(res);
15194 }
15195 
get_schedule()15196 isl::checked::schedule schedule_node::get_schedule() const
15197 {
15198   return schedule();
15199 }
15200 
shared_ancestor(const isl::checked::schedule_node & node2)15201 isl::checked::schedule_node schedule_node::shared_ancestor(const isl::checked::schedule_node &node2) const
15202 {
15203   auto res = isl_schedule_node_get_shared_ancestor(get(), node2.get());
15204   return manage(res);
15205 }
15206 
get_shared_ancestor(const isl::checked::schedule_node & node2)15207 isl::checked::schedule_node schedule_node::get_shared_ancestor(const isl::checked::schedule_node &node2) const
15208 {
15209   return shared_ancestor(node2);
15210 }
15211 
tree_depth()15212 class size schedule_node::tree_depth() const
15213 {
15214   auto res = isl_schedule_node_get_tree_depth(get());
15215   return manage(res);
15216 }
15217 
get_tree_depth()15218 class size schedule_node::get_tree_depth() const
15219 {
15220   return tree_depth();
15221 }
15222 
15223 inline std::ostream &operator<<(std::ostream &os, const schedule_node &obj)
15224 {
15225   char *str = isl_schedule_node_to_str(obj.get());
15226   if (!str) {
15227     os.setstate(std::ios_base::badbit);
15228     return os;
15229   }
15230   os << str;
15231   free(str);
15232   return os;
15233 }
15234 
15235 // implementations for isl::schedule_node_band
schedule_node_band()15236 schedule_node_band::schedule_node_band()
15237     : schedule_node() {}
15238 
schedule_node_band(const schedule_node_band & obj)15239 schedule_node_band::schedule_node_band(const schedule_node_band &obj)
15240     : schedule_node(obj)
15241 {
15242 }
15243 
schedule_node_band(__isl_take isl_schedule_node * ptr)15244 schedule_node_band::schedule_node_band(__isl_take isl_schedule_node *ptr)
15245     : schedule_node(ptr) {}
15246 
15247 schedule_node_band &schedule_node_band::operator=(schedule_node_band obj) {
15248   std::swap(this->ptr, obj.ptr);
15249   return *this;
15250 }
15251 
ctx()15252 isl::checked::ctx schedule_node_band::ctx() const {
15253   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15254 }
15255 
ast_build_options()15256 isl::checked::union_set schedule_node_band::ast_build_options() const
15257 {
15258   auto res = isl_schedule_node_band_get_ast_build_options(get());
15259   return manage(res);
15260 }
15261 
get_ast_build_options()15262 isl::checked::union_set schedule_node_band::get_ast_build_options() const
15263 {
15264   return ast_build_options();
15265 }
15266 
ast_isolate_option()15267 isl::checked::set schedule_node_band::ast_isolate_option() const
15268 {
15269   auto res = isl_schedule_node_band_get_ast_isolate_option(get());
15270   return manage(res);
15271 }
15272 
get_ast_isolate_option()15273 isl::checked::set schedule_node_band::get_ast_isolate_option() const
15274 {
15275   return ast_isolate_option();
15276 }
15277 
member_get_coincident(int pos)15278 boolean schedule_node_band::member_get_coincident(int pos) const
15279 {
15280   auto res = isl_schedule_node_band_member_get_coincident(get(), pos);
15281   return manage(res);
15282 }
15283 
member_set_coincident(int pos,int coincident)15284 schedule_node_band schedule_node_band::member_set_coincident(int pos, int coincident) const
15285 {
15286   auto res = isl_schedule_node_band_member_set_coincident(copy(), pos, coincident);
15287   return manage(res).as<schedule_node_band>();
15288 }
15289 
mod(isl::checked::multi_val mv)15290 schedule_node_band schedule_node_band::mod(isl::checked::multi_val mv) const
15291 {
15292   auto res = isl_schedule_node_band_mod(copy(), mv.release());
15293   return manage(res).as<schedule_node_band>();
15294 }
15295 
n_member()15296 class size schedule_node_band::n_member() const
15297 {
15298   auto res = isl_schedule_node_band_n_member(get());
15299   return manage(res);
15300 }
15301 
partial_schedule()15302 isl::checked::multi_union_pw_aff schedule_node_band::partial_schedule() const
15303 {
15304   auto res = isl_schedule_node_band_get_partial_schedule(get());
15305   return manage(res);
15306 }
15307 
get_partial_schedule()15308 isl::checked::multi_union_pw_aff schedule_node_band::get_partial_schedule() const
15309 {
15310   return partial_schedule();
15311 }
15312 
permutable()15313 boolean schedule_node_band::permutable() const
15314 {
15315   auto res = isl_schedule_node_band_get_permutable(get());
15316   return manage(res);
15317 }
15318 
get_permutable()15319 boolean schedule_node_band::get_permutable() const
15320 {
15321   return permutable();
15322 }
15323 
scale(isl::checked::multi_val mv)15324 schedule_node_band schedule_node_band::scale(isl::checked::multi_val mv) const
15325 {
15326   auto res = isl_schedule_node_band_scale(copy(), mv.release());
15327   return manage(res).as<schedule_node_band>();
15328 }
15329 
scale_down(isl::checked::multi_val mv)15330 schedule_node_band schedule_node_band::scale_down(isl::checked::multi_val mv) const
15331 {
15332   auto res = isl_schedule_node_band_scale_down(copy(), mv.release());
15333   return manage(res).as<schedule_node_band>();
15334 }
15335 
set_ast_build_options(isl::checked::union_set options)15336 schedule_node_band schedule_node_band::set_ast_build_options(isl::checked::union_set options) const
15337 {
15338   auto res = isl_schedule_node_band_set_ast_build_options(copy(), options.release());
15339   return manage(res).as<schedule_node_band>();
15340 }
15341 
set_permutable(int permutable)15342 schedule_node_band schedule_node_band::set_permutable(int permutable) const
15343 {
15344   auto res = isl_schedule_node_band_set_permutable(copy(), permutable);
15345   return manage(res).as<schedule_node_band>();
15346 }
15347 
shift(isl::checked::multi_union_pw_aff shift)15348 schedule_node_band schedule_node_band::shift(isl::checked::multi_union_pw_aff shift) const
15349 {
15350   auto res = isl_schedule_node_band_shift(copy(), shift.release());
15351   return manage(res).as<schedule_node_band>();
15352 }
15353 
split(int pos)15354 schedule_node_band schedule_node_band::split(int pos) const
15355 {
15356   auto res = isl_schedule_node_band_split(copy(), pos);
15357   return manage(res).as<schedule_node_band>();
15358 }
15359 
tile(isl::checked::multi_val sizes)15360 schedule_node_band schedule_node_band::tile(isl::checked::multi_val sizes) const
15361 {
15362   auto res = isl_schedule_node_band_tile(copy(), sizes.release());
15363   return manage(res).as<schedule_node_band>();
15364 }
15365 
member_set_ast_loop_default(int pos)15366 schedule_node_band schedule_node_band::member_set_ast_loop_default(int pos) const
15367 {
15368   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_default);
15369   return manage(res).as<schedule_node_band>();
15370 }
15371 
member_set_ast_loop_atomic(int pos)15372 schedule_node_band schedule_node_band::member_set_ast_loop_atomic(int pos) const
15373 {
15374   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_atomic);
15375   return manage(res).as<schedule_node_band>();
15376 }
15377 
member_set_ast_loop_unroll(int pos)15378 schedule_node_band schedule_node_band::member_set_ast_loop_unroll(int pos) const
15379 {
15380   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_unroll);
15381   return manage(res).as<schedule_node_band>();
15382 }
15383 
member_set_ast_loop_separate(int pos)15384 schedule_node_band schedule_node_band::member_set_ast_loop_separate(int pos) const
15385 {
15386   auto res = isl_schedule_node_band_member_set_ast_loop_type(copy(), pos, isl_ast_loop_separate);
15387   return manage(res).as<schedule_node_band>();
15388 }
15389 
15390 inline std::ostream &operator<<(std::ostream &os, const schedule_node_band &obj)
15391 {
15392   char *str = isl_schedule_node_to_str(obj.get());
15393   if (!str) {
15394     os.setstate(std::ios_base::badbit);
15395     return os;
15396   }
15397   os << str;
15398   free(str);
15399   return os;
15400 }
15401 
15402 // implementations for isl::schedule_node_context
schedule_node_context()15403 schedule_node_context::schedule_node_context()
15404     : schedule_node() {}
15405 
schedule_node_context(const schedule_node_context & obj)15406 schedule_node_context::schedule_node_context(const schedule_node_context &obj)
15407     : schedule_node(obj)
15408 {
15409 }
15410 
schedule_node_context(__isl_take isl_schedule_node * ptr)15411 schedule_node_context::schedule_node_context(__isl_take isl_schedule_node *ptr)
15412     : schedule_node(ptr) {}
15413 
15414 schedule_node_context &schedule_node_context::operator=(schedule_node_context obj) {
15415   std::swap(this->ptr, obj.ptr);
15416   return *this;
15417 }
15418 
ctx()15419 isl::checked::ctx schedule_node_context::ctx() const {
15420   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15421 }
15422 
context()15423 isl::checked::set schedule_node_context::context() const
15424 {
15425   auto res = isl_schedule_node_context_get_context(get());
15426   return manage(res);
15427 }
15428 
get_context()15429 isl::checked::set schedule_node_context::get_context() const
15430 {
15431   return context();
15432 }
15433 
15434 inline std::ostream &operator<<(std::ostream &os, const schedule_node_context &obj)
15435 {
15436   char *str = isl_schedule_node_to_str(obj.get());
15437   if (!str) {
15438     os.setstate(std::ios_base::badbit);
15439     return os;
15440   }
15441   os << str;
15442   free(str);
15443   return os;
15444 }
15445 
15446 // implementations for isl::schedule_node_domain
schedule_node_domain()15447 schedule_node_domain::schedule_node_domain()
15448     : schedule_node() {}
15449 
schedule_node_domain(const schedule_node_domain & obj)15450 schedule_node_domain::schedule_node_domain(const schedule_node_domain &obj)
15451     : schedule_node(obj)
15452 {
15453 }
15454 
schedule_node_domain(__isl_take isl_schedule_node * ptr)15455 schedule_node_domain::schedule_node_domain(__isl_take isl_schedule_node *ptr)
15456     : schedule_node(ptr) {}
15457 
15458 schedule_node_domain &schedule_node_domain::operator=(schedule_node_domain obj) {
15459   std::swap(this->ptr, obj.ptr);
15460   return *this;
15461 }
15462 
ctx()15463 isl::checked::ctx schedule_node_domain::ctx() const {
15464   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15465 }
15466 
domain()15467 isl::checked::union_set schedule_node_domain::domain() const
15468 {
15469   auto res = isl_schedule_node_domain_get_domain(get());
15470   return manage(res);
15471 }
15472 
get_domain()15473 isl::checked::union_set schedule_node_domain::get_domain() const
15474 {
15475   return domain();
15476 }
15477 
15478 inline std::ostream &operator<<(std::ostream &os, const schedule_node_domain &obj)
15479 {
15480   char *str = isl_schedule_node_to_str(obj.get());
15481   if (!str) {
15482     os.setstate(std::ios_base::badbit);
15483     return os;
15484   }
15485   os << str;
15486   free(str);
15487   return os;
15488 }
15489 
15490 // implementations for isl::schedule_node_expansion
schedule_node_expansion()15491 schedule_node_expansion::schedule_node_expansion()
15492     : schedule_node() {}
15493 
schedule_node_expansion(const schedule_node_expansion & obj)15494 schedule_node_expansion::schedule_node_expansion(const schedule_node_expansion &obj)
15495     : schedule_node(obj)
15496 {
15497 }
15498 
schedule_node_expansion(__isl_take isl_schedule_node * ptr)15499 schedule_node_expansion::schedule_node_expansion(__isl_take isl_schedule_node *ptr)
15500     : schedule_node(ptr) {}
15501 
15502 schedule_node_expansion &schedule_node_expansion::operator=(schedule_node_expansion obj) {
15503   std::swap(this->ptr, obj.ptr);
15504   return *this;
15505 }
15506 
ctx()15507 isl::checked::ctx schedule_node_expansion::ctx() const {
15508   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15509 }
15510 
contraction()15511 isl::checked::union_pw_multi_aff schedule_node_expansion::contraction() const
15512 {
15513   auto res = isl_schedule_node_expansion_get_contraction(get());
15514   return manage(res);
15515 }
15516 
get_contraction()15517 isl::checked::union_pw_multi_aff schedule_node_expansion::get_contraction() const
15518 {
15519   return contraction();
15520 }
15521 
expansion()15522 isl::checked::union_map schedule_node_expansion::expansion() const
15523 {
15524   auto res = isl_schedule_node_expansion_get_expansion(get());
15525   return manage(res);
15526 }
15527 
get_expansion()15528 isl::checked::union_map schedule_node_expansion::get_expansion() const
15529 {
15530   return expansion();
15531 }
15532 
15533 inline std::ostream &operator<<(std::ostream &os, const schedule_node_expansion &obj)
15534 {
15535   char *str = isl_schedule_node_to_str(obj.get());
15536   if (!str) {
15537     os.setstate(std::ios_base::badbit);
15538     return os;
15539   }
15540   os << str;
15541   free(str);
15542   return os;
15543 }
15544 
15545 // implementations for isl::schedule_node_extension
schedule_node_extension()15546 schedule_node_extension::schedule_node_extension()
15547     : schedule_node() {}
15548 
schedule_node_extension(const schedule_node_extension & obj)15549 schedule_node_extension::schedule_node_extension(const schedule_node_extension &obj)
15550     : schedule_node(obj)
15551 {
15552 }
15553 
schedule_node_extension(__isl_take isl_schedule_node * ptr)15554 schedule_node_extension::schedule_node_extension(__isl_take isl_schedule_node *ptr)
15555     : schedule_node(ptr) {}
15556 
15557 schedule_node_extension &schedule_node_extension::operator=(schedule_node_extension obj) {
15558   std::swap(this->ptr, obj.ptr);
15559   return *this;
15560 }
15561 
ctx()15562 isl::checked::ctx schedule_node_extension::ctx() const {
15563   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15564 }
15565 
extension()15566 isl::checked::union_map schedule_node_extension::extension() const
15567 {
15568   auto res = isl_schedule_node_extension_get_extension(get());
15569   return manage(res);
15570 }
15571 
get_extension()15572 isl::checked::union_map schedule_node_extension::get_extension() const
15573 {
15574   return extension();
15575 }
15576 
15577 inline std::ostream &operator<<(std::ostream &os, const schedule_node_extension &obj)
15578 {
15579   char *str = isl_schedule_node_to_str(obj.get());
15580   if (!str) {
15581     os.setstate(std::ios_base::badbit);
15582     return os;
15583   }
15584   os << str;
15585   free(str);
15586   return os;
15587 }
15588 
15589 // implementations for isl::schedule_node_filter
schedule_node_filter()15590 schedule_node_filter::schedule_node_filter()
15591     : schedule_node() {}
15592 
schedule_node_filter(const schedule_node_filter & obj)15593 schedule_node_filter::schedule_node_filter(const schedule_node_filter &obj)
15594     : schedule_node(obj)
15595 {
15596 }
15597 
schedule_node_filter(__isl_take isl_schedule_node * ptr)15598 schedule_node_filter::schedule_node_filter(__isl_take isl_schedule_node *ptr)
15599     : schedule_node(ptr) {}
15600 
15601 schedule_node_filter &schedule_node_filter::operator=(schedule_node_filter obj) {
15602   std::swap(this->ptr, obj.ptr);
15603   return *this;
15604 }
15605 
ctx()15606 isl::checked::ctx schedule_node_filter::ctx() const {
15607   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15608 }
15609 
filter()15610 isl::checked::union_set schedule_node_filter::filter() const
15611 {
15612   auto res = isl_schedule_node_filter_get_filter(get());
15613   return manage(res);
15614 }
15615 
get_filter()15616 isl::checked::union_set schedule_node_filter::get_filter() const
15617 {
15618   return filter();
15619 }
15620 
15621 inline std::ostream &operator<<(std::ostream &os, const schedule_node_filter &obj)
15622 {
15623   char *str = isl_schedule_node_to_str(obj.get());
15624   if (!str) {
15625     os.setstate(std::ios_base::badbit);
15626     return os;
15627   }
15628   os << str;
15629   free(str);
15630   return os;
15631 }
15632 
15633 // implementations for isl::schedule_node_guard
schedule_node_guard()15634 schedule_node_guard::schedule_node_guard()
15635     : schedule_node() {}
15636 
schedule_node_guard(const schedule_node_guard & obj)15637 schedule_node_guard::schedule_node_guard(const schedule_node_guard &obj)
15638     : schedule_node(obj)
15639 {
15640 }
15641 
schedule_node_guard(__isl_take isl_schedule_node * ptr)15642 schedule_node_guard::schedule_node_guard(__isl_take isl_schedule_node *ptr)
15643     : schedule_node(ptr) {}
15644 
15645 schedule_node_guard &schedule_node_guard::operator=(schedule_node_guard obj) {
15646   std::swap(this->ptr, obj.ptr);
15647   return *this;
15648 }
15649 
ctx()15650 isl::checked::ctx schedule_node_guard::ctx() const {
15651   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15652 }
15653 
guard()15654 isl::checked::set schedule_node_guard::guard() const
15655 {
15656   auto res = isl_schedule_node_guard_get_guard(get());
15657   return manage(res);
15658 }
15659 
get_guard()15660 isl::checked::set schedule_node_guard::get_guard() const
15661 {
15662   return guard();
15663 }
15664 
15665 inline std::ostream &operator<<(std::ostream &os, const schedule_node_guard &obj)
15666 {
15667   char *str = isl_schedule_node_to_str(obj.get());
15668   if (!str) {
15669     os.setstate(std::ios_base::badbit);
15670     return os;
15671   }
15672   os << str;
15673   free(str);
15674   return os;
15675 }
15676 
15677 // implementations for isl::schedule_node_leaf
schedule_node_leaf()15678 schedule_node_leaf::schedule_node_leaf()
15679     : schedule_node() {}
15680 
schedule_node_leaf(const schedule_node_leaf & obj)15681 schedule_node_leaf::schedule_node_leaf(const schedule_node_leaf &obj)
15682     : schedule_node(obj)
15683 {
15684 }
15685 
schedule_node_leaf(__isl_take isl_schedule_node * ptr)15686 schedule_node_leaf::schedule_node_leaf(__isl_take isl_schedule_node *ptr)
15687     : schedule_node(ptr) {}
15688 
15689 schedule_node_leaf &schedule_node_leaf::operator=(schedule_node_leaf obj) {
15690   std::swap(this->ptr, obj.ptr);
15691   return *this;
15692 }
15693 
ctx()15694 isl::checked::ctx schedule_node_leaf::ctx() const {
15695   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15696 }
15697 
15698 inline std::ostream &operator<<(std::ostream &os, const schedule_node_leaf &obj)
15699 {
15700   char *str = isl_schedule_node_to_str(obj.get());
15701   if (!str) {
15702     os.setstate(std::ios_base::badbit);
15703     return os;
15704   }
15705   os << str;
15706   free(str);
15707   return os;
15708 }
15709 
15710 // implementations for isl::schedule_node_mark
schedule_node_mark()15711 schedule_node_mark::schedule_node_mark()
15712     : schedule_node() {}
15713 
schedule_node_mark(const schedule_node_mark & obj)15714 schedule_node_mark::schedule_node_mark(const schedule_node_mark &obj)
15715     : schedule_node(obj)
15716 {
15717 }
15718 
schedule_node_mark(__isl_take isl_schedule_node * ptr)15719 schedule_node_mark::schedule_node_mark(__isl_take isl_schedule_node *ptr)
15720     : schedule_node(ptr) {}
15721 
15722 schedule_node_mark &schedule_node_mark::operator=(schedule_node_mark obj) {
15723   std::swap(this->ptr, obj.ptr);
15724   return *this;
15725 }
15726 
ctx()15727 isl::checked::ctx schedule_node_mark::ctx() const {
15728   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15729 }
15730 
15731 inline std::ostream &operator<<(std::ostream &os, const schedule_node_mark &obj)
15732 {
15733   char *str = isl_schedule_node_to_str(obj.get());
15734   if (!str) {
15735     os.setstate(std::ios_base::badbit);
15736     return os;
15737   }
15738   os << str;
15739   free(str);
15740   return os;
15741 }
15742 
15743 // implementations for isl::schedule_node_sequence
schedule_node_sequence()15744 schedule_node_sequence::schedule_node_sequence()
15745     : schedule_node() {}
15746 
schedule_node_sequence(const schedule_node_sequence & obj)15747 schedule_node_sequence::schedule_node_sequence(const schedule_node_sequence &obj)
15748     : schedule_node(obj)
15749 {
15750 }
15751 
schedule_node_sequence(__isl_take isl_schedule_node * ptr)15752 schedule_node_sequence::schedule_node_sequence(__isl_take isl_schedule_node *ptr)
15753     : schedule_node(ptr) {}
15754 
15755 schedule_node_sequence &schedule_node_sequence::operator=(schedule_node_sequence obj) {
15756   std::swap(this->ptr, obj.ptr);
15757   return *this;
15758 }
15759 
ctx()15760 isl::checked::ctx schedule_node_sequence::ctx() const {
15761   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15762 }
15763 
15764 inline std::ostream &operator<<(std::ostream &os, const schedule_node_sequence &obj)
15765 {
15766   char *str = isl_schedule_node_to_str(obj.get());
15767   if (!str) {
15768     os.setstate(std::ios_base::badbit);
15769     return os;
15770   }
15771   os << str;
15772   free(str);
15773   return os;
15774 }
15775 
15776 // implementations for isl::schedule_node_set
schedule_node_set()15777 schedule_node_set::schedule_node_set()
15778     : schedule_node() {}
15779 
schedule_node_set(const schedule_node_set & obj)15780 schedule_node_set::schedule_node_set(const schedule_node_set &obj)
15781     : schedule_node(obj)
15782 {
15783 }
15784 
schedule_node_set(__isl_take isl_schedule_node * ptr)15785 schedule_node_set::schedule_node_set(__isl_take isl_schedule_node *ptr)
15786     : schedule_node(ptr) {}
15787 
15788 schedule_node_set &schedule_node_set::operator=(schedule_node_set obj) {
15789   std::swap(this->ptr, obj.ptr);
15790   return *this;
15791 }
15792 
ctx()15793 isl::checked::ctx schedule_node_set::ctx() const {
15794   return isl::checked::ctx(isl_schedule_node_get_ctx(ptr));
15795 }
15796 
15797 inline std::ostream &operator<<(std::ostream &os, const schedule_node_set &obj)
15798 {
15799   char *str = isl_schedule_node_to_str(obj.get());
15800   if (!str) {
15801     os.setstate(std::ios_base::badbit);
15802     return os;
15803   }
15804   os << str;
15805   free(str);
15806   return os;
15807 }
15808 
15809 // implementations for isl::set
manage(__isl_take isl_set * ptr)15810 set manage(__isl_take isl_set *ptr) {
15811   return set(ptr);
15812 }
manage_copy(__isl_keep isl_set * ptr)15813 set manage_copy(__isl_keep isl_set *ptr) {
15814   ptr = isl_set_copy(ptr);
15815   return set(ptr);
15816 }
15817 
set()15818 set::set()
15819     : ptr(nullptr) {}
15820 
set(const set & obj)15821 set::set(const set &obj)
15822     : ptr(nullptr)
15823 {
15824   ptr = obj.copy();
15825 }
15826 
set(__isl_take isl_set * ptr)15827 set::set(__isl_take isl_set *ptr)
15828     : ptr(ptr) {}
15829 
set(isl::checked::basic_set bset)15830 set::set(isl::checked::basic_set bset)
15831 {
15832   auto res = isl_set_from_basic_set(bset.release());
15833   ptr = res;
15834 }
15835 
set(isl::checked::point pnt)15836 set::set(isl::checked::point pnt)
15837 {
15838   auto res = isl_set_from_point(pnt.release());
15839   ptr = res;
15840 }
15841 
set(isl::checked::ctx ctx,const std::string & str)15842 set::set(isl::checked::ctx ctx, const std::string &str)
15843 {
15844   auto res = isl_set_read_from_str(ctx.release(), str.c_str());
15845   ptr = res;
15846 }
15847 
15848 set &set::operator=(set obj) {
15849   std::swap(this->ptr, obj.ptr);
15850   return *this;
15851 }
15852 
~set()15853 set::~set() {
15854   if (ptr)
15855     isl_set_free(ptr);
15856 }
15857 
copy()15858 __isl_give isl_set *set::copy() const & {
15859   return isl_set_copy(ptr);
15860 }
15861 
get()15862 __isl_keep isl_set *set::get() const {
15863   return ptr;
15864 }
15865 
release()15866 __isl_give isl_set *set::release() {
15867   isl_set *tmp = ptr;
15868   ptr = nullptr;
15869   return tmp;
15870 }
15871 
is_null()15872 bool set::is_null() const {
15873   return ptr == nullptr;
15874 }
15875 
ctx()15876 isl::checked::ctx set::ctx() const {
15877   return isl::checked::ctx(isl_set_get_ctx(ptr));
15878 }
15879 
affine_hull()15880 isl::checked::basic_set set::affine_hull() const
15881 {
15882   auto res = isl_set_affine_hull(copy());
15883   return manage(res);
15884 }
15885 
apply(isl::checked::map map)15886 isl::checked::set set::apply(isl::checked::map map) const
15887 {
15888   auto res = isl_set_apply(copy(), map.release());
15889   return manage(res);
15890 }
15891 
apply(const isl::checked::union_map & umap)15892 isl::checked::union_set set::apply(const isl::checked::union_map &umap) const
15893 {
15894   return isl::checked::union_set(*this).apply(umap);
15895 }
15896 
apply(const isl::checked::basic_map & map)15897 isl::checked::set set::apply(const isl::checked::basic_map &map) const
15898 {
15899   return this->apply(isl::checked::map(map));
15900 }
15901 
as_pw_multi_aff()15902 isl::checked::pw_multi_aff set::as_pw_multi_aff() const
15903 {
15904   auto res = isl_set_as_pw_multi_aff(copy());
15905   return manage(res);
15906 }
15907 
as_set()15908 isl::checked::set set::as_set() const
15909 {
15910   return isl::checked::union_set(*this).as_set();
15911 }
15912 
bind(isl::checked::multi_id tuple)15913 isl::checked::set set::bind(isl::checked::multi_id tuple) const
15914 {
15915   auto res = isl_set_bind(copy(), tuple.release());
15916   return manage(res);
15917 }
15918 
coalesce()15919 isl::checked::set set::coalesce() const
15920 {
15921   auto res = isl_set_coalesce(copy());
15922   return manage(res);
15923 }
15924 
complement()15925 isl::checked::set set::complement() const
15926 {
15927   auto res = isl_set_complement(copy());
15928   return manage(res);
15929 }
15930 
compute_divs()15931 isl::checked::union_set set::compute_divs() const
15932 {
15933   return isl::checked::union_set(*this).compute_divs();
15934 }
15935 
detect_equalities()15936 isl::checked::set set::detect_equalities() const
15937 {
15938   auto res = isl_set_detect_equalities(copy());
15939   return manage(res);
15940 }
15941 
dim_max_val(int pos)15942 isl::checked::val set::dim_max_val(int pos) const
15943 {
15944   auto res = isl_set_dim_max_val(copy(), pos);
15945   return manage(res);
15946 }
15947 
dim_min_val(int pos)15948 isl::checked::val set::dim_min_val(int pos) const
15949 {
15950   auto res = isl_set_dim_min_val(copy(), pos);
15951   return manage(res);
15952 }
15953 
empty(isl::checked::space space)15954 isl::checked::set set::empty(isl::checked::space space)
15955 {
15956   auto res = isl_set_empty(space.release());
15957   return manage(res);
15958 }
15959 
every_set(const std::function<boolean (isl::checked::set)> & test)15960 boolean set::every_set(const std::function<boolean(isl::checked::set)> &test) const
15961 {
15962   return isl::checked::union_set(*this).every_set(test);
15963 }
15964 
extract_set(const isl::checked::space & space)15965 isl::checked::set set::extract_set(const isl::checked::space &space) const
15966 {
15967   return isl::checked::union_set(*this).extract_set(space);
15968 }
15969 
flatten()15970 isl::checked::set set::flatten() const
15971 {
15972   auto res = isl_set_flatten(copy());
15973   return manage(res);
15974 }
15975 
foreach_basic_set(const std::function<stat (isl::checked::basic_set)> & fn)15976 stat set::foreach_basic_set(const std::function<stat(isl::checked::basic_set)> &fn) const
15977 {
15978   struct fn_data {
15979     std::function<stat(isl::checked::basic_set)> func;
15980   } fn_data = { fn };
15981   auto fn_lambda = [](isl_basic_set *arg_0, void *arg_1) -> isl_stat {
15982     auto *data = static_cast<struct fn_data *>(arg_1);
15983     auto ret = (data->func)(manage(arg_0));
15984     return ret.release();
15985   };
15986   auto res = isl_set_foreach_basic_set(get(), fn_lambda, &fn_data);
15987   return manage(res);
15988 }
15989 
foreach_point(const std::function<stat (isl::checked::point)> & fn)15990 stat set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
15991 {
15992   struct fn_data {
15993     std::function<stat(isl::checked::point)> func;
15994   } fn_data = { fn };
15995   auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
15996     auto *data = static_cast<struct fn_data *>(arg_1);
15997     auto ret = (data->func)(manage(arg_0));
15998     return ret.release();
15999   };
16000   auto res = isl_set_foreach_point(get(), fn_lambda, &fn_data);
16001   return manage(res);
16002 }
16003 
foreach_set(const std::function<stat (isl::checked::set)> & fn)16004 stat set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
16005 {
16006   return isl::checked::union_set(*this).foreach_set(fn);
16007 }
16008 
gist(isl::checked::set context)16009 isl::checked::set set::gist(isl::checked::set context) const
16010 {
16011   auto res = isl_set_gist(copy(), context.release());
16012   return manage(res);
16013 }
16014 
gist(const isl::checked::union_set & context)16015 isl::checked::union_set set::gist(const isl::checked::union_set &context) const
16016 {
16017   return isl::checked::union_set(*this).gist(context);
16018 }
16019 
gist(const isl::checked::basic_set & context)16020 isl::checked::set set::gist(const isl::checked::basic_set &context) const
16021 {
16022   return this->gist(isl::checked::set(context));
16023 }
16024 
gist(const isl::checked::point & context)16025 isl::checked::set set::gist(const isl::checked::point &context) const
16026 {
16027   return this->gist(isl::checked::set(context));
16028 }
16029 
gist_params(const isl::checked::set & set)16030 isl::checked::union_set set::gist_params(const isl::checked::set &set) const
16031 {
16032   return isl::checked::union_set(*this).gist_params(set);
16033 }
16034 
identity()16035 isl::checked::map set::identity() const
16036 {
16037   auto res = isl_set_identity(copy());
16038   return manage(res);
16039 }
16040 
indicator_function()16041 isl::checked::pw_aff set::indicator_function() const
16042 {
16043   auto res = isl_set_indicator_function(copy());
16044   return manage(res);
16045 }
16046 
insert_domain(isl::checked::space domain)16047 isl::checked::map set::insert_domain(isl::checked::space domain) const
16048 {
16049   auto res = isl_set_insert_domain(copy(), domain.release());
16050   return manage(res);
16051 }
16052 
intersect(isl::checked::set set2)16053 isl::checked::set set::intersect(isl::checked::set set2) const
16054 {
16055   auto res = isl_set_intersect(copy(), set2.release());
16056   return manage(res);
16057 }
16058 
intersect(const isl::checked::union_set & uset2)16059 isl::checked::union_set set::intersect(const isl::checked::union_set &uset2) const
16060 {
16061   return isl::checked::union_set(*this).intersect(uset2);
16062 }
16063 
intersect(const isl::checked::basic_set & set2)16064 isl::checked::set set::intersect(const isl::checked::basic_set &set2) const
16065 {
16066   return this->intersect(isl::checked::set(set2));
16067 }
16068 
intersect(const isl::checked::point & set2)16069 isl::checked::set set::intersect(const isl::checked::point &set2) const
16070 {
16071   return this->intersect(isl::checked::set(set2));
16072 }
16073 
intersect_params(isl::checked::set params)16074 isl::checked::set set::intersect_params(isl::checked::set params) const
16075 {
16076   auto res = isl_set_intersect_params(copy(), params.release());
16077   return manage(res);
16078 }
16079 
involves_locals()16080 boolean set::involves_locals() const
16081 {
16082   auto res = isl_set_involves_locals(get());
16083   return manage(res);
16084 }
16085 
is_disjoint(const isl::checked::set & set2)16086 boolean set::is_disjoint(const isl::checked::set &set2) const
16087 {
16088   auto res = isl_set_is_disjoint(get(), set2.get());
16089   return manage(res);
16090 }
16091 
is_disjoint(const isl::checked::union_set & uset2)16092 boolean set::is_disjoint(const isl::checked::union_set &uset2) const
16093 {
16094   return isl::checked::union_set(*this).is_disjoint(uset2);
16095 }
16096 
is_disjoint(const isl::checked::basic_set & set2)16097 boolean set::is_disjoint(const isl::checked::basic_set &set2) const
16098 {
16099   return this->is_disjoint(isl::checked::set(set2));
16100 }
16101 
is_disjoint(const isl::checked::point & set2)16102 boolean set::is_disjoint(const isl::checked::point &set2) const
16103 {
16104   return this->is_disjoint(isl::checked::set(set2));
16105 }
16106 
is_empty()16107 boolean set::is_empty() const
16108 {
16109   auto res = isl_set_is_empty(get());
16110   return manage(res);
16111 }
16112 
is_equal(const isl::checked::set & set2)16113 boolean set::is_equal(const isl::checked::set &set2) const
16114 {
16115   auto res = isl_set_is_equal(get(), set2.get());
16116   return manage(res);
16117 }
16118 
is_equal(const isl::checked::union_set & uset2)16119 boolean set::is_equal(const isl::checked::union_set &uset2) const
16120 {
16121   return isl::checked::union_set(*this).is_equal(uset2);
16122 }
16123 
is_equal(const isl::checked::basic_set & set2)16124 boolean set::is_equal(const isl::checked::basic_set &set2) const
16125 {
16126   return this->is_equal(isl::checked::set(set2));
16127 }
16128 
is_equal(const isl::checked::point & set2)16129 boolean set::is_equal(const isl::checked::point &set2) const
16130 {
16131   return this->is_equal(isl::checked::set(set2));
16132 }
16133 
is_singleton()16134 boolean set::is_singleton() const
16135 {
16136   auto res = isl_set_is_singleton(get());
16137   return manage(res);
16138 }
16139 
is_strict_subset(const isl::checked::set & set2)16140 boolean set::is_strict_subset(const isl::checked::set &set2) const
16141 {
16142   auto res = isl_set_is_strict_subset(get(), set2.get());
16143   return manage(res);
16144 }
16145 
is_strict_subset(const isl::checked::union_set & uset2)16146 boolean set::is_strict_subset(const isl::checked::union_set &uset2) const
16147 {
16148   return isl::checked::union_set(*this).is_strict_subset(uset2);
16149 }
16150 
is_strict_subset(const isl::checked::basic_set & set2)16151 boolean set::is_strict_subset(const isl::checked::basic_set &set2) const
16152 {
16153   return this->is_strict_subset(isl::checked::set(set2));
16154 }
16155 
is_strict_subset(const isl::checked::point & set2)16156 boolean set::is_strict_subset(const isl::checked::point &set2) const
16157 {
16158   return this->is_strict_subset(isl::checked::set(set2));
16159 }
16160 
is_subset(const isl::checked::set & set2)16161 boolean set::is_subset(const isl::checked::set &set2) const
16162 {
16163   auto res = isl_set_is_subset(get(), set2.get());
16164   return manage(res);
16165 }
16166 
is_subset(const isl::checked::union_set & uset2)16167 boolean set::is_subset(const isl::checked::union_set &uset2) const
16168 {
16169   return isl::checked::union_set(*this).is_subset(uset2);
16170 }
16171 
is_subset(const isl::checked::basic_set & set2)16172 boolean set::is_subset(const isl::checked::basic_set &set2) const
16173 {
16174   return this->is_subset(isl::checked::set(set2));
16175 }
16176 
is_subset(const isl::checked::point & set2)16177 boolean set::is_subset(const isl::checked::point &set2) const
16178 {
16179   return this->is_subset(isl::checked::set(set2));
16180 }
16181 
is_wrapping()16182 boolean set::is_wrapping() const
16183 {
16184   auto res = isl_set_is_wrapping(get());
16185   return manage(res);
16186 }
16187 
isa_set()16188 boolean set::isa_set() const
16189 {
16190   return isl::checked::union_set(*this).isa_set();
16191 }
16192 
lexmax()16193 isl::checked::set set::lexmax() const
16194 {
16195   auto res = isl_set_lexmax(copy());
16196   return manage(res);
16197 }
16198 
lexmax_pw_multi_aff()16199 isl::checked::pw_multi_aff set::lexmax_pw_multi_aff() const
16200 {
16201   auto res = isl_set_lexmax_pw_multi_aff(copy());
16202   return manage(res);
16203 }
16204 
lexmin()16205 isl::checked::set set::lexmin() const
16206 {
16207   auto res = isl_set_lexmin(copy());
16208   return manage(res);
16209 }
16210 
lexmin_pw_multi_aff()16211 isl::checked::pw_multi_aff set::lexmin_pw_multi_aff() const
16212 {
16213   auto res = isl_set_lexmin_pw_multi_aff(copy());
16214   return manage(res);
16215 }
16216 
lower_bound(isl::checked::multi_pw_aff lower)16217 isl::checked::set set::lower_bound(isl::checked::multi_pw_aff lower) const
16218 {
16219   auto res = isl_set_lower_bound_multi_pw_aff(copy(), lower.release());
16220   return manage(res);
16221 }
16222 
lower_bound(isl::checked::multi_val lower)16223 isl::checked::set set::lower_bound(isl::checked::multi_val lower) const
16224 {
16225   auto res = isl_set_lower_bound_multi_val(copy(), lower.release());
16226   return manage(res);
16227 }
16228 
max_multi_pw_aff()16229 isl::checked::multi_pw_aff set::max_multi_pw_aff() const
16230 {
16231   auto res = isl_set_max_multi_pw_aff(copy());
16232   return manage(res);
16233 }
16234 
max_val(const isl::checked::aff & obj)16235 isl::checked::val set::max_val(const isl::checked::aff &obj) const
16236 {
16237   auto res = isl_set_max_val(get(), obj.get());
16238   return manage(res);
16239 }
16240 
min_multi_pw_aff()16241 isl::checked::multi_pw_aff set::min_multi_pw_aff() const
16242 {
16243   auto res = isl_set_min_multi_pw_aff(copy());
16244   return manage(res);
16245 }
16246 
min_val(const isl::checked::aff & obj)16247 isl::checked::val set::min_val(const isl::checked::aff &obj) const
16248 {
16249   auto res = isl_set_min_val(get(), obj.get());
16250   return manage(res);
16251 }
16252 
n_basic_set()16253 class size set::n_basic_set() const
16254 {
16255   auto res = isl_set_n_basic_set(get());
16256   return manage(res);
16257 }
16258 
params()16259 isl::checked::set set::params() const
16260 {
16261   auto res = isl_set_params(copy());
16262   return manage(res);
16263 }
16264 
plain_multi_val_if_fixed()16265 isl::checked::multi_val set::plain_multi_val_if_fixed() const
16266 {
16267   auto res = isl_set_get_plain_multi_val_if_fixed(get());
16268   return manage(res);
16269 }
16270 
get_plain_multi_val_if_fixed()16271 isl::checked::multi_val set::get_plain_multi_val_if_fixed() const
16272 {
16273   return plain_multi_val_if_fixed();
16274 }
16275 
polyhedral_hull()16276 isl::checked::basic_set set::polyhedral_hull() const
16277 {
16278   auto res = isl_set_polyhedral_hull(copy());
16279   return manage(res);
16280 }
16281 
preimage(isl::checked::multi_aff ma)16282 isl::checked::set set::preimage(isl::checked::multi_aff ma) const
16283 {
16284   auto res = isl_set_preimage_multi_aff(copy(), ma.release());
16285   return manage(res);
16286 }
16287 
preimage(isl::checked::multi_pw_aff mpa)16288 isl::checked::set set::preimage(isl::checked::multi_pw_aff mpa) const
16289 {
16290   auto res = isl_set_preimage_multi_pw_aff(copy(), mpa.release());
16291   return manage(res);
16292 }
16293 
preimage(isl::checked::pw_multi_aff pma)16294 isl::checked::set set::preimage(isl::checked::pw_multi_aff pma) const
16295 {
16296   auto res = isl_set_preimage_pw_multi_aff(copy(), pma.release());
16297   return manage(res);
16298 }
16299 
preimage(const isl::checked::union_pw_multi_aff & upma)16300 isl::checked::union_set set::preimage(const isl::checked::union_pw_multi_aff &upma) const
16301 {
16302   return isl::checked::union_set(*this).preimage(upma);
16303 }
16304 
product(isl::checked::set set2)16305 isl::checked::set set::product(isl::checked::set set2) const
16306 {
16307   auto res = isl_set_product(copy(), set2.release());
16308   return manage(res);
16309 }
16310 
project_out_all_params()16311 isl::checked::set set::project_out_all_params() const
16312 {
16313   auto res = isl_set_project_out_all_params(copy());
16314   return manage(res);
16315 }
16316 
project_out_param(isl::checked::id id)16317 isl::checked::set set::project_out_param(isl::checked::id id) const
16318 {
16319   auto res = isl_set_project_out_param_id(copy(), id.release());
16320   return manage(res);
16321 }
16322 
project_out_param(const std::string & id)16323 isl::checked::set set::project_out_param(const std::string &id) const
16324 {
16325   return this->project_out_param(isl::checked::id(ctx(), id));
16326 }
16327 
project_out_param(isl::checked::id_list list)16328 isl::checked::set set::project_out_param(isl::checked::id_list list) const
16329 {
16330   auto res = isl_set_project_out_param_id_list(copy(), list.release());
16331   return manage(res);
16332 }
16333 
pw_multi_aff_on_domain(isl::checked::multi_val mv)16334 isl::checked::pw_multi_aff set::pw_multi_aff_on_domain(isl::checked::multi_val mv) const
16335 {
16336   auto res = isl_set_pw_multi_aff_on_domain_multi_val(copy(), mv.release());
16337   return manage(res);
16338 }
16339 
sample()16340 isl::checked::basic_set set::sample() const
16341 {
16342   auto res = isl_set_sample(copy());
16343   return manage(res);
16344 }
16345 
sample_point()16346 isl::checked::point set::sample_point() const
16347 {
16348   auto res = isl_set_sample_point(copy());
16349   return manage(res);
16350 }
16351 
set_list()16352 isl::checked::set_list set::set_list() const
16353 {
16354   return isl::checked::union_set(*this).set_list();
16355 }
16356 
simple_fixed_box_hull()16357 isl::checked::fixed_box set::simple_fixed_box_hull() const
16358 {
16359   auto res = isl_set_get_simple_fixed_box_hull(get());
16360   return manage(res);
16361 }
16362 
get_simple_fixed_box_hull()16363 isl::checked::fixed_box set::get_simple_fixed_box_hull() const
16364 {
16365   return simple_fixed_box_hull();
16366 }
16367 
space()16368 isl::checked::space set::space() const
16369 {
16370   auto res = isl_set_get_space(get());
16371   return manage(res);
16372 }
16373 
get_space()16374 isl::checked::space set::get_space() const
16375 {
16376   return space();
16377 }
16378 
stride(int pos)16379 isl::checked::val set::stride(int pos) const
16380 {
16381   auto res = isl_set_get_stride(get(), pos);
16382   return manage(res);
16383 }
16384 
get_stride(int pos)16385 isl::checked::val set::get_stride(int pos) const
16386 {
16387   return stride(pos);
16388 }
16389 
subtract(isl::checked::set set2)16390 isl::checked::set set::subtract(isl::checked::set set2) const
16391 {
16392   auto res = isl_set_subtract(copy(), set2.release());
16393   return manage(res);
16394 }
16395 
subtract(const isl::checked::union_set & uset2)16396 isl::checked::union_set set::subtract(const isl::checked::union_set &uset2) const
16397 {
16398   return isl::checked::union_set(*this).subtract(uset2);
16399 }
16400 
subtract(const isl::checked::basic_set & set2)16401 isl::checked::set set::subtract(const isl::checked::basic_set &set2) const
16402 {
16403   return this->subtract(isl::checked::set(set2));
16404 }
16405 
subtract(const isl::checked::point & set2)16406 isl::checked::set set::subtract(const isl::checked::point &set2) const
16407 {
16408   return this->subtract(isl::checked::set(set2));
16409 }
16410 
to_list()16411 isl::checked::set_list set::to_list() const
16412 {
16413   auto res = isl_set_to_list(copy());
16414   return manage(res);
16415 }
16416 
to_union_set()16417 isl::checked::union_set set::to_union_set() const
16418 {
16419   auto res = isl_set_to_union_set(copy());
16420   return manage(res);
16421 }
16422 
translation()16423 isl::checked::map set::translation() const
16424 {
16425   auto res = isl_set_translation(copy());
16426   return manage(res);
16427 }
16428 
tuple_dim()16429 class size set::tuple_dim() const
16430 {
16431   auto res = isl_set_tuple_dim(get());
16432   return manage(res);
16433 }
16434 
unbind_params(isl::checked::multi_id tuple)16435 isl::checked::set set::unbind_params(isl::checked::multi_id tuple) const
16436 {
16437   auto res = isl_set_unbind_params(copy(), tuple.release());
16438   return manage(res);
16439 }
16440 
unbind_params_insert_domain(isl::checked::multi_id domain)16441 isl::checked::map set::unbind_params_insert_domain(isl::checked::multi_id domain) const
16442 {
16443   auto res = isl_set_unbind_params_insert_domain(copy(), domain.release());
16444   return manage(res);
16445 }
16446 
unite(isl::checked::set set2)16447 isl::checked::set set::unite(isl::checked::set set2) const
16448 {
16449   auto res = isl_set_union(copy(), set2.release());
16450   return manage(res);
16451 }
16452 
unite(const isl::checked::union_set & uset2)16453 isl::checked::union_set set::unite(const isl::checked::union_set &uset2) const
16454 {
16455   return isl::checked::union_set(*this).unite(uset2);
16456 }
16457 
unite(const isl::checked::basic_set & set2)16458 isl::checked::set set::unite(const isl::checked::basic_set &set2) const
16459 {
16460   return this->unite(isl::checked::set(set2));
16461 }
16462 
unite(const isl::checked::point & set2)16463 isl::checked::set set::unite(const isl::checked::point &set2) const
16464 {
16465   return this->unite(isl::checked::set(set2));
16466 }
16467 
universe(isl::checked::space space)16468 isl::checked::set set::universe(isl::checked::space space)
16469 {
16470   auto res = isl_set_universe(space.release());
16471   return manage(res);
16472 }
16473 
unshifted_simple_hull()16474 isl::checked::basic_set set::unshifted_simple_hull() const
16475 {
16476   auto res = isl_set_unshifted_simple_hull(copy());
16477   return manage(res);
16478 }
16479 
unwrap()16480 isl::checked::map set::unwrap() const
16481 {
16482   auto res = isl_set_unwrap(copy());
16483   return manage(res);
16484 }
16485 
upper_bound(isl::checked::multi_pw_aff upper)16486 isl::checked::set set::upper_bound(isl::checked::multi_pw_aff upper) const
16487 {
16488   auto res = isl_set_upper_bound_multi_pw_aff(copy(), upper.release());
16489   return manage(res);
16490 }
16491 
upper_bound(isl::checked::multi_val upper)16492 isl::checked::set set::upper_bound(isl::checked::multi_val upper) const
16493 {
16494   auto res = isl_set_upper_bound_multi_val(copy(), upper.release());
16495   return manage(res);
16496 }
16497 
16498 inline std::ostream &operator<<(std::ostream &os, const set &obj)
16499 {
16500   char *str = isl_set_to_str(obj.get());
16501   if (!str) {
16502     os.setstate(std::ios_base::badbit);
16503     return os;
16504   }
16505   os << str;
16506   free(str);
16507   return os;
16508 }
16509 
16510 // implementations for isl::set_list
manage(__isl_take isl_set_list * ptr)16511 set_list manage(__isl_take isl_set_list *ptr) {
16512   return set_list(ptr);
16513 }
manage_copy(__isl_keep isl_set_list * ptr)16514 set_list manage_copy(__isl_keep isl_set_list *ptr) {
16515   ptr = isl_set_list_copy(ptr);
16516   return set_list(ptr);
16517 }
16518 
set_list()16519 set_list::set_list()
16520     : ptr(nullptr) {}
16521 
set_list(const set_list & obj)16522 set_list::set_list(const set_list &obj)
16523     : ptr(nullptr)
16524 {
16525   ptr = obj.copy();
16526 }
16527 
set_list(__isl_take isl_set_list * ptr)16528 set_list::set_list(__isl_take isl_set_list *ptr)
16529     : ptr(ptr) {}
16530 
set_list(isl::checked::ctx ctx,int n)16531 set_list::set_list(isl::checked::ctx ctx, int n)
16532 {
16533   auto res = isl_set_list_alloc(ctx.release(), n);
16534   ptr = res;
16535 }
16536 
set_list(isl::checked::set el)16537 set_list::set_list(isl::checked::set el)
16538 {
16539   auto res = isl_set_list_from_set(el.release());
16540   ptr = res;
16541 }
16542 
set_list(isl::checked::ctx ctx,const std::string & str)16543 set_list::set_list(isl::checked::ctx ctx, const std::string &str)
16544 {
16545   auto res = isl_set_list_read_from_str(ctx.release(), str.c_str());
16546   ptr = res;
16547 }
16548 
16549 set_list &set_list::operator=(set_list obj) {
16550   std::swap(this->ptr, obj.ptr);
16551   return *this;
16552 }
16553 
~set_list()16554 set_list::~set_list() {
16555   if (ptr)
16556     isl_set_list_free(ptr);
16557 }
16558 
copy()16559 __isl_give isl_set_list *set_list::copy() const & {
16560   return isl_set_list_copy(ptr);
16561 }
16562 
get()16563 __isl_keep isl_set_list *set_list::get() const {
16564   return ptr;
16565 }
16566 
release()16567 __isl_give isl_set_list *set_list::release() {
16568   isl_set_list *tmp = ptr;
16569   ptr = nullptr;
16570   return tmp;
16571 }
16572 
is_null()16573 bool set_list::is_null() const {
16574   return ptr == nullptr;
16575 }
16576 
ctx()16577 isl::checked::ctx set_list::ctx() const {
16578   return isl::checked::ctx(isl_set_list_get_ctx(ptr));
16579 }
16580 
add(isl::checked::set el)16581 isl::checked::set_list set_list::add(isl::checked::set el) const
16582 {
16583   auto res = isl_set_list_add(copy(), el.release());
16584   return manage(res);
16585 }
16586 
at(int index)16587 isl::checked::set set_list::at(int index) const
16588 {
16589   auto res = isl_set_list_get_at(get(), index);
16590   return manage(res);
16591 }
16592 
get_at(int index)16593 isl::checked::set set_list::get_at(int index) const
16594 {
16595   return at(index);
16596 }
16597 
clear()16598 isl::checked::set_list set_list::clear() const
16599 {
16600   auto res = isl_set_list_clear(copy());
16601   return manage(res);
16602 }
16603 
concat(isl::checked::set_list list2)16604 isl::checked::set_list set_list::concat(isl::checked::set_list list2) const
16605 {
16606   auto res = isl_set_list_concat(copy(), list2.release());
16607   return manage(res);
16608 }
16609 
drop(unsigned int first,unsigned int n)16610 isl::checked::set_list set_list::drop(unsigned int first, unsigned int n) const
16611 {
16612   auto res = isl_set_list_drop(copy(), first, n);
16613   return manage(res);
16614 }
16615 
foreach(const std::function<stat (isl::checked::set)> & fn)16616 stat set_list::foreach(const std::function<stat(isl::checked::set)> &fn) const
16617 {
16618   struct fn_data {
16619     std::function<stat(isl::checked::set)> func;
16620   } fn_data = { fn };
16621   auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
16622     auto *data = static_cast<struct fn_data *>(arg_1);
16623     auto ret = (data->func)(manage(arg_0));
16624     return ret.release();
16625   };
16626   auto res = isl_set_list_foreach(get(), fn_lambda, &fn_data);
16627   return manage(res);
16628 }
16629 
insert(unsigned int pos,isl::checked::set el)16630 isl::checked::set_list set_list::insert(unsigned int pos, isl::checked::set el) const
16631 {
16632   auto res = isl_set_list_insert(copy(), pos, el.release());
16633   return manage(res);
16634 }
16635 
size()16636 class size set_list::size() const
16637 {
16638   auto res = isl_set_list_size(get());
16639   return manage(res);
16640 }
16641 
16642 inline std::ostream &operator<<(std::ostream &os, const set_list &obj)
16643 {
16644   char *str = isl_set_list_to_str(obj.get());
16645   if (!str) {
16646     os.setstate(std::ios_base::badbit);
16647     return os;
16648   }
16649   os << str;
16650   free(str);
16651   return os;
16652 }
16653 
16654 // implementations for isl::space
manage(__isl_take isl_space * ptr)16655 space manage(__isl_take isl_space *ptr) {
16656   return space(ptr);
16657 }
manage_copy(__isl_keep isl_space * ptr)16658 space manage_copy(__isl_keep isl_space *ptr) {
16659   ptr = isl_space_copy(ptr);
16660   return space(ptr);
16661 }
16662 
space()16663 space::space()
16664     : ptr(nullptr) {}
16665 
space(const space & obj)16666 space::space(const space &obj)
16667     : ptr(nullptr)
16668 {
16669   ptr = obj.copy();
16670 }
16671 
space(__isl_take isl_space * ptr)16672 space::space(__isl_take isl_space *ptr)
16673     : ptr(ptr) {}
16674 
16675 space &space::operator=(space obj) {
16676   std::swap(this->ptr, obj.ptr);
16677   return *this;
16678 }
16679 
~space()16680 space::~space() {
16681   if (ptr)
16682     isl_space_free(ptr);
16683 }
16684 
copy()16685 __isl_give isl_space *space::copy() const & {
16686   return isl_space_copy(ptr);
16687 }
16688 
get()16689 __isl_keep isl_space *space::get() const {
16690   return ptr;
16691 }
16692 
release()16693 __isl_give isl_space *space::release() {
16694   isl_space *tmp = ptr;
16695   ptr = nullptr;
16696   return tmp;
16697 }
16698 
is_null()16699 bool space::is_null() const {
16700   return ptr == nullptr;
16701 }
16702 
ctx()16703 isl::checked::ctx space::ctx() const {
16704   return isl::checked::ctx(isl_space_get_ctx(ptr));
16705 }
16706 
add_named_tuple(isl::checked::id tuple_id,unsigned int dim)16707 isl::checked::space space::add_named_tuple(isl::checked::id tuple_id, unsigned int dim) const
16708 {
16709   auto res = isl_space_add_named_tuple_id_ui(copy(), tuple_id.release(), dim);
16710   return manage(res);
16711 }
16712 
add_named_tuple(const std::string & tuple_id,unsigned int dim)16713 isl::checked::space space::add_named_tuple(const std::string &tuple_id, unsigned int dim) const
16714 {
16715   return this->add_named_tuple(isl::checked::id(ctx(), tuple_id), dim);
16716 }
16717 
add_param(isl::checked::id id)16718 isl::checked::space space::add_param(isl::checked::id id) const
16719 {
16720   auto res = isl_space_add_param_id(copy(), id.release());
16721   return manage(res);
16722 }
16723 
add_param(const std::string & id)16724 isl::checked::space space::add_param(const std::string &id) const
16725 {
16726   return this->add_param(isl::checked::id(ctx(), id));
16727 }
16728 
add_unnamed_tuple(unsigned int dim)16729 isl::checked::space space::add_unnamed_tuple(unsigned int dim) const
16730 {
16731   auto res = isl_space_add_unnamed_tuple_ui(copy(), dim);
16732   return manage(res);
16733 }
16734 
curry()16735 isl::checked::space space::curry() const
16736 {
16737   auto res = isl_space_curry(copy());
16738   return manage(res);
16739 }
16740 
domain()16741 isl::checked::space space::domain() const
16742 {
16743   auto res = isl_space_domain(copy());
16744   return manage(res);
16745 }
16746 
domain_map_multi_aff()16747 isl::checked::multi_aff space::domain_map_multi_aff() const
16748 {
16749   auto res = isl_space_domain_map_multi_aff(copy());
16750   return manage(res);
16751 }
16752 
domain_map_pw_multi_aff()16753 isl::checked::pw_multi_aff space::domain_map_pw_multi_aff() const
16754 {
16755   auto res = isl_space_domain_map_pw_multi_aff(copy());
16756   return manage(res);
16757 }
16758 
domain_tuple_id()16759 isl::checked::id space::domain_tuple_id() const
16760 {
16761   auto res = isl_space_get_domain_tuple_id(get());
16762   return manage(res);
16763 }
16764 
get_domain_tuple_id()16765 isl::checked::id space::get_domain_tuple_id() const
16766 {
16767   return domain_tuple_id();
16768 }
16769 
flatten_domain()16770 isl::checked::space space::flatten_domain() const
16771 {
16772   auto res = isl_space_flatten_domain(copy());
16773   return manage(res);
16774 }
16775 
flatten_range()16776 isl::checked::space space::flatten_range() const
16777 {
16778   auto res = isl_space_flatten_range(copy());
16779   return manage(res);
16780 }
16781 
has_domain_tuple_id()16782 boolean space::has_domain_tuple_id() const
16783 {
16784   auto res = isl_space_has_domain_tuple_id(get());
16785   return manage(res);
16786 }
16787 
has_range_tuple_id()16788 boolean space::has_range_tuple_id() const
16789 {
16790   auto res = isl_space_has_range_tuple_id(get());
16791   return manage(res);
16792 }
16793 
identity_multi_aff_on_domain()16794 isl::checked::multi_aff space::identity_multi_aff_on_domain() const
16795 {
16796   auto res = isl_space_identity_multi_aff_on_domain(copy());
16797   return manage(res);
16798 }
16799 
identity_multi_pw_aff_on_domain()16800 isl::checked::multi_pw_aff space::identity_multi_pw_aff_on_domain() const
16801 {
16802   auto res = isl_space_identity_multi_pw_aff_on_domain(copy());
16803   return manage(res);
16804 }
16805 
identity_pw_multi_aff_on_domain()16806 isl::checked::pw_multi_aff space::identity_pw_multi_aff_on_domain() const
16807 {
16808   auto res = isl_space_identity_pw_multi_aff_on_domain(copy());
16809   return manage(res);
16810 }
16811 
is_equal(const isl::checked::space & space2)16812 boolean space::is_equal(const isl::checked::space &space2) const
16813 {
16814   auto res = isl_space_is_equal(get(), space2.get());
16815   return manage(res);
16816 }
16817 
is_wrapping()16818 boolean space::is_wrapping() const
16819 {
16820   auto res = isl_space_is_wrapping(get());
16821   return manage(res);
16822 }
16823 
map_from_set()16824 isl::checked::space space::map_from_set() const
16825 {
16826   auto res = isl_space_map_from_set(copy());
16827   return manage(res);
16828 }
16829 
multi_aff(isl::checked::aff_list list)16830 isl::checked::multi_aff space::multi_aff(isl::checked::aff_list list) const
16831 {
16832   auto res = isl_space_multi_aff(copy(), list.release());
16833   return manage(res);
16834 }
16835 
multi_aff_on_domain(isl::checked::multi_val mv)16836 isl::checked::multi_aff space::multi_aff_on_domain(isl::checked::multi_val mv) const
16837 {
16838   auto res = isl_space_multi_aff_on_domain_multi_val(copy(), mv.release());
16839   return manage(res);
16840 }
16841 
multi_id(isl::checked::id_list list)16842 isl::checked::multi_id space::multi_id(isl::checked::id_list list) const
16843 {
16844   auto res = isl_space_multi_id(copy(), list.release());
16845   return manage(res);
16846 }
16847 
multi_pw_aff(isl::checked::pw_aff_list list)16848 isl::checked::multi_pw_aff space::multi_pw_aff(isl::checked::pw_aff_list list) const
16849 {
16850   auto res = isl_space_multi_pw_aff(copy(), list.release());
16851   return manage(res);
16852 }
16853 
multi_union_pw_aff(isl::checked::union_pw_aff_list list)16854 isl::checked::multi_union_pw_aff space::multi_union_pw_aff(isl::checked::union_pw_aff_list list) const
16855 {
16856   auto res = isl_space_multi_union_pw_aff(copy(), list.release());
16857   return manage(res);
16858 }
16859 
multi_val(isl::checked::val_list list)16860 isl::checked::multi_val space::multi_val(isl::checked::val_list list) const
16861 {
16862   auto res = isl_space_multi_val(copy(), list.release());
16863   return manage(res);
16864 }
16865 
param_aff_on_domain(isl::checked::id id)16866 isl::checked::aff space::param_aff_on_domain(isl::checked::id id) const
16867 {
16868   auto res = isl_space_param_aff_on_domain_id(copy(), id.release());
16869   return manage(res);
16870 }
16871 
param_aff_on_domain(const std::string & id)16872 isl::checked::aff space::param_aff_on_domain(const std::string &id) const
16873 {
16874   return this->param_aff_on_domain(isl::checked::id(ctx(), id));
16875 }
16876 
params()16877 isl::checked::space space::params() const
16878 {
16879   auto res = isl_space_params(copy());
16880   return manage(res);
16881 }
16882 
product(isl::checked::space right)16883 isl::checked::space space::product(isl::checked::space right) const
16884 {
16885   auto res = isl_space_product(copy(), right.release());
16886   return manage(res);
16887 }
16888 
range()16889 isl::checked::space space::range() const
16890 {
16891   auto res = isl_space_range(copy());
16892   return manage(res);
16893 }
16894 
range_map_multi_aff()16895 isl::checked::multi_aff space::range_map_multi_aff() const
16896 {
16897   auto res = isl_space_range_map_multi_aff(copy());
16898   return manage(res);
16899 }
16900 
range_map_pw_multi_aff()16901 isl::checked::pw_multi_aff space::range_map_pw_multi_aff() const
16902 {
16903   auto res = isl_space_range_map_pw_multi_aff(copy());
16904   return manage(res);
16905 }
16906 
range_reverse()16907 isl::checked::space space::range_reverse() const
16908 {
16909   auto res = isl_space_range_reverse(copy());
16910   return manage(res);
16911 }
16912 
range_tuple_id()16913 isl::checked::id space::range_tuple_id() const
16914 {
16915   auto res = isl_space_get_range_tuple_id(get());
16916   return manage(res);
16917 }
16918 
get_range_tuple_id()16919 isl::checked::id space::get_range_tuple_id() const
16920 {
16921   return range_tuple_id();
16922 }
16923 
reverse()16924 isl::checked::space space::reverse() const
16925 {
16926   auto res = isl_space_reverse(copy());
16927   return manage(res);
16928 }
16929 
set_domain_tuple(isl::checked::id id)16930 isl::checked::space space::set_domain_tuple(isl::checked::id id) const
16931 {
16932   auto res = isl_space_set_domain_tuple_id(copy(), id.release());
16933   return manage(res);
16934 }
16935 
set_domain_tuple(const std::string & id)16936 isl::checked::space space::set_domain_tuple(const std::string &id) const
16937 {
16938   return this->set_domain_tuple(isl::checked::id(ctx(), id));
16939 }
16940 
set_range_tuple(isl::checked::id id)16941 isl::checked::space space::set_range_tuple(isl::checked::id id) const
16942 {
16943   auto res = isl_space_set_range_tuple_id(copy(), id.release());
16944   return manage(res);
16945 }
16946 
set_range_tuple(const std::string & id)16947 isl::checked::space space::set_range_tuple(const std::string &id) const
16948 {
16949   return this->set_range_tuple(isl::checked::id(ctx(), id));
16950 }
16951 
uncurry()16952 isl::checked::space space::uncurry() const
16953 {
16954   auto res = isl_space_uncurry(copy());
16955   return manage(res);
16956 }
16957 
unit(isl::checked::ctx ctx)16958 isl::checked::space space::unit(isl::checked::ctx ctx)
16959 {
16960   auto res = isl_space_unit(ctx.release());
16961   return manage(res);
16962 }
16963 
universe_map()16964 isl::checked::map space::universe_map() const
16965 {
16966   auto res = isl_space_universe_map(copy());
16967   return manage(res);
16968 }
16969 
universe_set()16970 isl::checked::set space::universe_set() const
16971 {
16972   auto res = isl_space_universe_set(copy());
16973   return manage(res);
16974 }
16975 
unwrap()16976 isl::checked::space space::unwrap() const
16977 {
16978   auto res = isl_space_unwrap(copy());
16979   return manage(res);
16980 }
16981 
wrap()16982 isl::checked::space space::wrap() const
16983 {
16984   auto res = isl_space_wrap(copy());
16985   return manage(res);
16986 }
16987 
zero_aff_on_domain()16988 isl::checked::aff space::zero_aff_on_domain() const
16989 {
16990   auto res = isl_space_zero_aff_on_domain(copy());
16991   return manage(res);
16992 }
16993 
zero_multi_aff()16994 isl::checked::multi_aff space::zero_multi_aff() const
16995 {
16996   auto res = isl_space_zero_multi_aff(copy());
16997   return manage(res);
16998 }
16999 
zero_multi_pw_aff()17000 isl::checked::multi_pw_aff space::zero_multi_pw_aff() const
17001 {
17002   auto res = isl_space_zero_multi_pw_aff(copy());
17003   return manage(res);
17004 }
17005 
zero_multi_union_pw_aff()17006 isl::checked::multi_union_pw_aff space::zero_multi_union_pw_aff() const
17007 {
17008   auto res = isl_space_zero_multi_union_pw_aff(copy());
17009   return manage(res);
17010 }
17011 
zero_multi_val()17012 isl::checked::multi_val space::zero_multi_val() const
17013 {
17014   auto res = isl_space_zero_multi_val(copy());
17015   return manage(res);
17016 }
17017 
17018 inline std::ostream &operator<<(std::ostream &os, const space &obj)
17019 {
17020   char *str = isl_space_to_str(obj.get());
17021   if (!str) {
17022     os.setstate(std::ios_base::badbit);
17023     return os;
17024   }
17025   os << str;
17026   free(str);
17027   return os;
17028 }
17029 
17030 // implementations for isl::union_access_info
manage(__isl_take isl_union_access_info * ptr)17031 union_access_info manage(__isl_take isl_union_access_info *ptr) {
17032   return union_access_info(ptr);
17033 }
manage_copy(__isl_keep isl_union_access_info * ptr)17034 union_access_info manage_copy(__isl_keep isl_union_access_info *ptr) {
17035   ptr = isl_union_access_info_copy(ptr);
17036   return union_access_info(ptr);
17037 }
17038 
union_access_info()17039 union_access_info::union_access_info()
17040     : ptr(nullptr) {}
17041 
union_access_info(const union_access_info & obj)17042 union_access_info::union_access_info(const union_access_info &obj)
17043     : ptr(nullptr)
17044 {
17045   ptr = obj.copy();
17046 }
17047 
union_access_info(__isl_take isl_union_access_info * ptr)17048 union_access_info::union_access_info(__isl_take isl_union_access_info *ptr)
17049     : ptr(ptr) {}
17050 
union_access_info(isl::checked::union_map sink)17051 union_access_info::union_access_info(isl::checked::union_map sink)
17052 {
17053   auto res = isl_union_access_info_from_sink(sink.release());
17054   ptr = res;
17055 }
17056 
17057 union_access_info &union_access_info::operator=(union_access_info obj) {
17058   std::swap(this->ptr, obj.ptr);
17059   return *this;
17060 }
17061 
~union_access_info()17062 union_access_info::~union_access_info() {
17063   if (ptr)
17064     isl_union_access_info_free(ptr);
17065 }
17066 
copy()17067 __isl_give isl_union_access_info *union_access_info::copy() const & {
17068   return isl_union_access_info_copy(ptr);
17069 }
17070 
get()17071 __isl_keep isl_union_access_info *union_access_info::get() const {
17072   return ptr;
17073 }
17074 
release()17075 __isl_give isl_union_access_info *union_access_info::release() {
17076   isl_union_access_info *tmp = ptr;
17077   ptr = nullptr;
17078   return tmp;
17079 }
17080 
is_null()17081 bool union_access_info::is_null() const {
17082   return ptr == nullptr;
17083 }
17084 
ctx()17085 isl::checked::ctx union_access_info::ctx() const {
17086   return isl::checked::ctx(isl_union_access_info_get_ctx(ptr));
17087 }
17088 
compute_flow()17089 isl::checked::union_flow union_access_info::compute_flow() const
17090 {
17091   auto res = isl_union_access_info_compute_flow(copy());
17092   return manage(res);
17093 }
17094 
set_kill(isl::checked::union_map kill)17095 isl::checked::union_access_info union_access_info::set_kill(isl::checked::union_map kill) const
17096 {
17097   auto res = isl_union_access_info_set_kill(copy(), kill.release());
17098   return manage(res);
17099 }
17100 
set_may_source(isl::checked::union_map may_source)17101 isl::checked::union_access_info union_access_info::set_may_source(isl::checked::union_map may_source) const
17102 {
17103   auto res = isl_union_access_info_set_may_source(copy(), may_source.release());
17104   return manage(res);
17105 }
17106 
set_must_source(isl::checked::union_map must_source)17107 isl::checked::union_access_info union_access_info::set_must_source(isl::checked::union_map must_source) const
17108 {
17109   auto res = isl_union_access_info_set_must_source(copy(), must_source.release());
17110   return manage(res);
17111 }
17112 
set_schedule(isl::checked::schedule schedule)17113 isl::checked::union_access_info union_access_info::set_schedule(isl::checked::schedule schedule) const
17114 {
17115   auto res = isl_union_access_info_set_schedule(copy(), schedule.release());
17116   return manage(res);
17117 }
17118 
set_schedule_map(isl::checked::union_map schedule_map)17119 isl::checked::union_access_info union_access_info::set_schedule_map(isl::checked::union_map schedule_map) const
17120 {
17121   auto res = isl_union_access_info_set_schedule_map(copy(), schedule_map.release());
17122   return manage(res);
17123 }
17124 
17125 inline std::ostream &operator<<(std::ostream &os, const union_access_info &obj)
17126 {
17127   char *str = isl_union_access_info_to_str(obj.get());
17128   if (!str) {
17129     os.setstate(std::ios_base::badbit);
17130     return os;
17131   }
17132   os << str;
17133   free(str);
17134   return os;
17135 }
17136 
17137 // implementations for isl::union_flow
manage(__isl_take isl_union_flow * ptr)17138 union_flow manage(__isl_take isl_union_flow *ptr) {
17139   return union_flow(ptr);
17140 }
manage_copy(__isl_keep isl_union_flow * ptr)17141 union_flow manage_copy(__isl_keep isl_union_flow *ptr) {
17142   ptr = isl_union_flow_copy(ptr);
17143   return union_flow(ptr);
17144 }
17145 
union_flow()17146 union_flow::union_flow()
17147     : ptr(nullptr) {}
17148 
union_flow(const union_flow & obj)17149 union_flow::union_flow(const union_flow &obj)
17150     : ptr(nullptr)
17151 {
17152   ptr = obj.copy();
17153 }
17154 
union_flow(__isl_take isl_union_flow * ptr)17155 union_flow::union_flow(__isl_take isl_union_flow *ptr)
17156     : ptr(ptr) {}
17157 
17158 union_flow &union_flow::operator=(union_flow obj) {
17159   std::swap(this->ptr, obj.ptr);
17160   return *this;
17161 }
17162 
~union_flow()17163 union_flow::~union_flow() {
17164   if (ptr)
17165     isl_union_flow_free(ptr);
17166 }
17167 
copy()17168 __isl_give isl_union_flow *union_flow::copy() const & {
17169   return isl_union_flow_copy(ptr);
17170 }
17171 
get()17172 __isl_keep isl_union_flow *union_flow::get() const {
17173   return ptr;
17174 }
17175 
release()17176 __isl_give isl_union_flow *union_flow::release() {
17177   isl_union_flow *tmp = ptr;
17178   ptr = nullptr;
17179   return tmp;
17180 }
17181 
is_null()17182 bool union_flow::is_null() const {
17183   return ptr == nullptr;
17184 }
17185 
ctx()17186 isl::checked::ctx union_flow::ctx() const {
17187   return isl::checked::ctx(isl_union_flow_get_ctx(ptr));
17188 }
17189 
full_may_dependence()17190 isl::checked::union_map union_flow::full_may_dependence() const
17191 {
17192   auto res = isl_union_flow_get_full_may_dependence(get());
17193   return manage(res);
17194 }
17195 
get_full_may_dependence()17196 isl::checked::union_map union_flow::get_full_may_dependence() const
17197 {
17198   return full_may_dependence();
17199 }
17200 
full_must_dependence()17201 isl::checked::union_map union_flow::full_must_dependence() const
17202 {
17203   auto res = isl_union_flow_get_full_must_dependence(get());
17204   return manage(res);
17205 }
17206 
get_full_must_dependence()17207 isl::checked::union_map union_flow::get_full_must_dependence() const
17208 {
17209   return full_must_dependence();
17210 }
17211 
may_dependence()17212 isl::checked::union_map union_flow::may_dependence() const
17213 {
17214   auto res = isl_union_flow_get_may_dependence(get());
17215   return manage(res);
17216 }
17217 
get_may_dependence()17218 isl::checked::union_map union_flow::get_may_dependence() const
17219 {
17220   return may_dependence();
17221 }
17222 
may_no_source()17223 isl::checked::union_map union_flow::may_no_source() const
17224 {
17225   auto res = isl_union_flow_get_may_no_source(get());
17226   return manage(res);
17227 }
17228 
get_may_no_source()17229 isl::checked::union_map union_flow::get_may_no_source() const
17230 {
17231   return may_no_source();
17232 }
17233 
must_dependence()17234 isl::checked::union_map union_flow::must_dependence() const
17235 {
17236   auto res = isl_union_flow_get_must_dependence(get());
17237   return manage(res);
17238 }
17239 
get_must_dependence()17240 isl::checked::union_map union_flow::get_must_dependence() const
17241 {
17242   return must_dependence();
17243 }
17244 
must_no_source()17245 isl::checked::union_map union_flow::must_no_source() const
17246 {
17247   auto res = isl_union_flow_get_must_no_source(get());
17248   return manage(res);
17249 }
17250 
get_must_no_source()17251 isl::checked::union_map union_flow::get_must_no_source() const
17252 {
17253   return must_no_source();
17254 }
17255 
17256 inline std::ostream &operator<<(std::ostream &os, const union_flow &obj)
17257 {
17258   char *str = isl_union_flow_to_str(obj.get());
17259   if (!str) {
17260     os.setstate(std::ios_base::badbit);
17261     return os;
17262   }
17263   os << str;
17264   free(str);
17265   return os;
17266 }
17267 
17268 // implementations for isl::union_map
manage(__isl_take isl_union_map * ptr)17269 union_map manage(__isl_take isl_union_map *ptr) {
17270   return union_map(ptr);
17271 }
manage_copy(__isl_keep isl_union_map * ptr)17272 union_map manage_copy(__isl_keep isl_union_map *ptr) {
17273   ptr = isl_union_map_copy(ptr);
17274   return union_map(ptr);
17275 }
17276 
union_map()17277 union_map::union_map()
17278     : ptr(nullptr) {}
17279 
union_map(const union_map & obj)17280 union_map::union_map(const union_map &obj)
17281     : ptr(nullptr)
17282 {
17283   ptr = obj.copy();
17284 }
17285 
union_map(__isl_take isl_union_map * ptr)17286 union_map::union_map(__isl_take isl_union_map *ptr)
17287     : ptr(ptr) {}
17288 
union_map(isl::checked::basic_map bmap)17289 union_map::union_map(isl::checked::basic_map bmap)
17290 {
17291   auto res = isl_union_map_from_basic_map(bmap.release());
17292   ptr = res;
17293 }
17294 
union_map(isl::checked::map map)17295 union_map::union_map(isl::checked::map map)
17296 {
17297   auto res = isl_union_map_from_map(map.release());
17298   ptr = res;
17299 }
17300 
union_map(isl::checked::ctx ctx,const std::string & str)17301 union_map::union_map(isl::checked::ctx ctx, const std::string &str)
17302 {
17303   auto res = isl_union_map_read_from_str(ctx.release(), str.c_str());
17304   ptr = res;
17305 }
17306 
17307 union_map &union_map::operator=(union_map obj) {
17308   std::swap(this->ptr, obj.ptr);
17309   return *this;
17310 }
17311 
~union_map()17312 union_map::~union_map() {
17313   if (ptr)
17314     isl_union_map_free(ptr);
17315 }
17316 
copy()17317 __isl_give isl_union_map *union_map::copy() const & {
17318   return isl_union_map_copy(ptr);
17319 }
17320 
get()17321 __isl_keep isl_union_map *union_map::get() const {
17322   return ptr;
17323 }
17324 
release()17325 __isl_give isl_union_map *union_map::release() {
17326   isl_union_map *tmp = ptr;
17327   ptr = nullptr;
17328   return tmp;
17329 }
17330 
is_null()17331 bool union_map::is_null() const {
17332   return ptr == nullptr;
17333 }
17334 
ctx()17335 isl::checked::ctx union_map::ctx() const {
17336   return isl::checked::ctx(isl_union_map_get_ctx(ptr));
17337 }
17338 
affine_hull()17339 isl::checked::union_map union_map::affine_hull() const
17340 {
17341   auto res = isl_union_map_affine_hull(copy());
17342   return manage(res);
17343 }
17344 
apply_domain(isl::checked::union_map umap2)17345 isl::checked::union_map union_map::apply_domain(isl::checked::union_map umap2) const
17346 {
17347   auto res = isl_union_map_apply_domain(copy(), umap2.release());
17348   return manage(res);
17349 }
17350 
apply_range(isl::checked::union_map umap2)17351 isl::checked::union_map union_map::apply_range(isl::checked::union_map umap2) const
17352 {
17353   auto res = isl_union_map_apply_range(copy(), umap2.release());
17354   return manage(res);
17355 }
17356 
as_map()17357 isl::checked::map union_map::as_map() const
17358 {
17359   auto res = isl_union_map_as_map(copy());
17360   return manage(res);
17361 }
17362 
as_multi_union_pw_aff()17363 isl::checked::multi_union_pw_aff union_map::as_multi_union_pw_aff() const
17364 {
17365   auto res = isl_union_map_as_multi_union_pw_aff(copy());
17366   return manage(res);
17367 }
17368 
as_union_pw_multi_aff()17369 isl::checked::union_pw_multi_aff union_map::as_union_pw_multi_aff() const
17370 {
17371   auto res = isl_union_map_as_union_pw_multi_aff(copy());
17372   return manage(res);
17373 }
17374 
bind_range(isl::checked::multi_id tuple)17375 isl::checked::union_set union_map::bind_range(isl::checked::multi_id tuple) const
17376 {
17377   auto res = isl_union_map_bind_range(copy(), tuple.release());
17378   return manage(res);
17379 }
17380 
coalesce()17381 isl::checked::union_map union_map::coalesce() const
17382 {
17383   auto res = isl_union_map_coalesce(copy());
17384   return manage(res);
17385 }
17386 
compute_divs()17387 isl::checked::union_map union_map::compute_divs() const
17388 {
17389   auto res = isl_union_map_compute_divs(copy());
17390   return manage(res);
17391 }
17392 
curry()17393 isl::checked::union_map union_map::curry() const
17394 {
17395   auto res = isl_union_map_curry(copy());
17396   return manage(res);
17397 }
17398 
deltas()17399 isl::checked::union_set union_map::deltas() const
17400 {
17401   auto res = isl_union_map_deltas(copy());
17402   return manage(res);
17403 }
17404 
detect_equalities()17405 isl::checked::union_map union_map::detect_equalities() const
17406 {
17407   auto res = isl_union_map_detect_equalities(copy());
17408   return manage(res);
17409 }
17410 
domain()17411 isl::checked::union_set union_map::domain() const
17412 {
17413   auto res = isl_union_map_domain(copy());
17414   return manage(res);
17415 }
17416 
domain_factor_domain()17417 isl::checked::union_map union_map::domain_factor_domain() const
17418 {
17419   auto res = isl_union_map_domain_factor_domain(copy());
17420   return manage(res);
17421 }
17422 
domain_factor_range()17423 isl::checked::union_map union_map::domain_factor_range() const
17424 {
17425   auto res = isl_union_map_domain_factor_range(copy());
17426   return manage(res);
17427 }
17428 
domain_map()17429 isl::checked::union_map union_map::domain_map() const
17430 {
17431   auto res = isl_union_map_domain_map(copy());
17432   return manage(res);
17433 }
17434 
domain_map_union_pw_multi_aff()17435 isl::checked::union_pw_multi_aff union_map::domain_map_union_pw_multi_aff() const
17436 {
17437   auto res = isl_union_map_domain_map_union_pw_multi_aff(copy());
17438   return manage(res);
17439 }
17440 
domain_product(isl::checked::union_map umap2)17441 isl::checked::union_map union_map::domain_product(isl::checked::union_map umap2) const
17442 {
17443   auto res = isl_union_map_domain_product(copy(), umap2.release());
17444   return manage(res);
17445 }
17446 
empty(isl::checked::ctx ctx)17447 isl::checked::union_map union_map::empty(isl::checked::ctx ctx)
17448 {
17449   auto res = isl_union_map_empty_ctx(ctx.release());
17450   return manage(res);
17451 }
17452 
eq_at(isl::checked::multi_union_pw_aff mupa)17453 isl::checked::union_map union_map::eq_at(isl::checked::multi_union_pw_aff mupa) const
17454 {
17455   auto res = isl_union_map_eq_at_multi_union_pw_aff(copy(), mupa.release());
17456   return manage(res);
17457 }
17458 
every_map(const std::function<boolean (isl::checked::map)> & test)17459 boolean union_map::every_map(const std::function<boolean(isl::checked::map)> &test) const
17460 {
17461   struct test_data {
17462     std::function<boolean(isl::checked::map)> func;
17463   } test_data = { test };
17464   auto test_lambda = [](isl_map *arg_0, void *arg_1) -> isl_bool {
17465     auto *data = static_cast<struct test_data *>(arg_1);
17466     auto ret = (data->func)(manage_copy(arg_0));
17467     return ret.release();
17468   };
17469   auto res = isl_union_map_every_map(get(), test_lambda, &test_data);
17470   return manage(res);
17471 }
17472 
extract_map(isl::checked::space space)17473 isl::checked::map union_map::extract_map(isl::checked::space space) const
17474 {
17475   auto res = isl_union_map_extract_map(get(), space.release());
17476   return manage(res);
17477 }
17478 
factor_domain()17479 isl::checked::union_map union_map::factor_domain() const
17480 {
17481   auto res = isl_union_map_factor_domain(copy());
17482   return manage(res);
17483 }
17484 
factor_range()17485 isl::checked::union_map union_map::factor_range() const
17486 {
17487   auto res = isl_union_map_factor_range(copy());
17488   return manage(res);
17489 }
17490 
fixed_power(isl::checked::val exp)17491 isl::checked::union_map union_map::fixed_power(isl::checked::val exp) const
17492 {
17493   auto res = isl_union_map_fixed_power_val(copy(), exp.release());
17494   return manage(res);
17495 }
17496 
fixed_power(long exp)17497 isl::checked::union_map union_map::fixed_power(long exp) const
17498 {
17499   return this->fixed_power(isl::checked::val(ctx(), exp));
17500 }
17501 
foreach_map(const std::function<stat (isl::checked::map)> & fn)17502 stat union_map::foreach_map(const std::function<stat(isl::checked::map)> &fn) const
17503 {
17504   struct fn_data {
17505     std::function<stat(isl::checked::map)> func;
17506   } fn_data = { fn };
17507   auto fn_lambda = [](isl_map *arg_0, void *arg_1) -> isl_stat {
17508     auto *data = static_cast<struct fn_data *>(arg_1);
17509     auto ret = (data->func)(manage(arg_0));
17510     return ret.release();
17511   };
17512   auto res = isl_union_map_foreach_map(get(), fn_lambda, &fn_data);
17513   return manage(res);
17514 }
17515 
from(isl::checked::multi_union_pw_aff mupa)17516 isl::checked::union_map union_map::from(isl::checked::multi_union_pw_aff mupa)
17517 {
17518   auto res = isl_union_map_from_multi_union_pw_aff(mupa.release());
17519   return manage(res);
17520 }
17521 
from(isl::checked::union_pw_multi_aff upma)17522 isl::checked::union_map union_map::from(isl::checked::union_pw_multi_aff upma)
17523 {
17524   auto res = isl_union_map_from_union_pw_multi_aff(upma.release());
17525   return manage(res);
17526 }
17527 
from_domain(isl::checked::union_set uset)17528 isl::checked::union_map union_map::from_domain(isl::checked::union_set uset)
17529 {
17530   auto res = isl_union_map_from_domain(uset.release());
17531   return manage(res);
17532 }
17533 
from_domain_and_range(isl::checked::union_set domain,isl::checked::union_set range)17534 isl::checked::union_map union_map::from_domain_and_range(isl::checked::union_set domain, isl::checked::union_set range)
17535 {
17536   auto res = isl_union_map_from_domain_and_range(domain.release(), range.release());
17537   return manage(res);
17538 }
17539 
from_range(isl::checked::union_set uset)17540 isl::checked::union_map union_map::from_range(isl::checked::union_set uset)
17541 {
17542   auto res = isl_union_map_from_range(uset.release());
17543   return manage(res);
17544 }
17545 
gist(isl::checked::union_map context)17546 isl::checked::union_map union_map::gist(isl::checked::union_map context) const
17547 {
17548   auto res = isl_union_map_gist(copy(), context.release());
17549   return manage(res);
17550 }
17551 
gist_domain(isl::checked::union_set uset)17552 isl::checked::union_map union_map::gist_domain(isl::checked::union_set uset) const
17553 {
17554   auto res = isl_union_map_gist_domain(copy(), uset.release());
17555   return manage(res);
17556 }
17557 
gist_params(isl::checked::set set)17558 isl::checked::union_map union_map::gist_params(isl::checked::set set) const
17559 {
17560   auto res = isl_union_map_gist_params(copy(), set.release());
17561   return manage(res);
17562 }
17563 
gist_range(isl::checked::union_set uset)17564 isl::checked::union_map union_map::gist_range(isl::checked::union_set uset) const
17565 {
17566   auto res = isl_union_map_gist_range(copy(), uset.release());
17567   return manage(res);
17568 }
17569 
intersect(isl::checked::union_map umap2)17570 isl::checked::union_map union_map::intersect(isl::checked::union_map umap2) const
17571 {
17572   auto res = isl_union_map_intersect(copy(), umap2.release());
17573   return manage(res);
17574 }
17575 
intersect_domain(isl::checked::space space)17576 isl::checked::union_map union_map::intersect_domain(isl::checked::space space) const
17577 {
17578   auto res = isl_union_map_intersect_domain_space(copy(), space.release());
17579   return manage(res);
17580 }
17581 
intersect_domain(isl::checked::union_set uset)17582 isl::checked::union_map union_map::intersect_domain(isl::checked::union_set uset) const
17583 {
17584   auto res = isl_union_map_intersect_domain_union_set(copy(), uset.release());
17585   return manage(res);
17586 }
17587 
intersect_domain_factor_domain(isl::checked::union_map factor)17588 isl::checked::union_map union_map::intersect_domain_factor_domain(isl::checked::union_map factor) const
17589 {
17590   auto res = isl_union_map_intersect_domain_factor_domain(copy(), factor.release());
17591   return manage(res);
17592 }
17593 
intersect_domain_factor_range(isl::checked::union_map factor)17594 isl::checked::union_map union_map::intersect_domain_factor_range(isl::checked::union_map factor) const
17595 {
17596   auto res = isl_union_map_intersect_domain_factor_range(copy(), factor.release());
17597   return manage(res);
17598 }
17599 
intersect_params(isl::checked::set set)17600 isl::checked::union_map union_map::intersect_params(isl::checked::set set) const
17601 {
17602   auto res = isl_union_map_intersect_params(copy(), set.release());
17603   return manage(res);
17604 }
17605 
intersect_range(isl::checked::space space)17606 isl::checked::union_map union_map::intersect_range(isl::checked::space space) const
17607 {
17608   auto res = isl_union_map_intersect_range_space(copy(), space.release());
17609   return manage(res);
17610 }
17611 
intersect_range(isl::checked::union_set uset)17612 isl::checked::union_map union_map::intersect_range(isl::checked::union_set uset) const
17613 {
17614   auto res = isl_union_map_intersect_range_union_set(copy(), uset.release());
17615   return manage(res);
17616 }
17617 
intersect_range_factor_domain(isl::checked::union_map factor)17618 isl::checked::union_map union_map::intersect_range_factor_domain(isl::checked::union_map factor) const
17619 {
17620   auto res = isl_union_map_intersect_range_factor_domain(copy(), factor.release());
17621   return manage(res);
17622 }
17623 
intersect_range_factor_range(isl::checked::union_map factor)17624 isl::checked::union_map union_map::intersect_range_factor_range(isl::checked::union_map factor) const
17625 {
17626   auto res = isl_union_map_intersect_range_factor_range(copy(), factor.release());
17627   return manage(res);
17628 }
17629 
is_bijective()17630 boolean union_map::is_bijective() const
17631 {
17632   auto res = isl_union_map_is_bijective(get());
17633   return manage(res);
17634 }
17635 
is_disjoint(const isl::checked::union_map & umap2)17636 boolean union_map::is_disjoint(const isl::checked::union_map &umap2) const
17637 {
17638   auto res = isl_union_map_is_disjoint(get(), umap2.get());
17639   return manage(res);
17640 }
17641 
is_empty()17642 boolean union_map::is_empty() const
17643 {
17644   auto res = isl_union_map_is_empty(get());
17645   return manage(res);
17646 }
17647 
is_equal(const isl::checked::union_map & umap2)17648 boolean union_map::is_equal(const isl::checked::union_map &umap2) const
17649 {
17650   auto res = isl_union_map_is_equal(get(), umap2.get());
17651   return manage(res);
17652 }
17653 
is_injective()17654 boolean union_map::is_injective() const
17655 {
17656   auto res = isl_union_map_is_injective(get());
17657   return manage(res);
17658 }
17659 
is_single_valued()17660 boolean union_map::is_single_valued() const
17661 {
17662   auto res = isl_union_map_is_single_valued(get());
17663   return manage(res);
17664 }
17665 
is_strict_subset(const isl::checked::union_map & umap2)17666 boolean union_map::is_strict_subset(const isl::checked::union_map &umap2) const
17667 {
17668   auto res = isl_union_map_is_strict_subset(get(), umap2.get());
17669   return manage(res);
17670 }
17671 
is_subset(const isl::checked::union_map & umap2)17672 boolean union_map::is_subset(const isl::checked::union_map &umap2) const
17673 {
17674   auto res = isl_union_map_is_subset(get(), umap2.get());
17675   return manage(res);
17676 }
17677 
isa_map()17678 boolean union_map::isa_map() const
17679 {
17680   auto res = isl_union_map_isa_map(get());
17681   return manage(res);
17682 }
17683 
lexmax()17684 isl::checked::union_map union_map::lexmax() const
17685 {
17686   auto res = isl_union_map_lexmax(copy());
17687   return manage(res);
17688 }
17689 
lexmin()17690 isl::checked::union_map union_map::lexmin() const
17691 {
17692   auto res = isl_union_map_lexmin(copy());
17693   return manage(res);
17694 }
17695 
map_list()17696 isl::checked::map_list union_map::map_list() const
17697 {
17698   auto res = isl_union_map_get_map_list(get());
17699   return manage(res);
17700 }
17701 
get_map_list()17702 isl::checked::map_list union_map::get_map_list() const
17703 {
17704   return map_list();
17705 }
17706 
polyhedral_hull()17707 isl::checked::union_map union_map::polyhedral_hull() const
17708 {
17709   auto res = isl_union_map_polyhedral_hull(copy());
17710   return manage(res);
17711 }
17712 
preimage_domain(isl::checked::multi_aff ma)17713 isl::checked::union_map union_map::preimage_domain(isl::checked::multi_aff ma) const
17714 {
17715   auto res = isl_union_map_preimage_domain_multi_aff(copy(), ma.release());
17716   return manage(res);
17717 }
17718 
preimage_domain(isl::checked::multi_pw_aff mpa)17719 isl::checked::union_map union_map::preimage_domain(isl::checked::multi_pw_aff mpa) const
17720 {
17721   auto res = isl_union_map_preimage_domain_multi_pw_aff(copy(), mpa.release());
17722   return manage(res);
17723 }
17724 
preimage_domain(isl::checked::pw_multi_aff pma)17725 isl::checked::union_map union_map::preimage_domain(isl::checked::pw_multi_aff pma) const
17726 {
17727   auto res = isl_union_map_preimage_domain_pw_multi_aff(copy(), pma.release());
17728   return manage(res);
17729 }
17730 
preimage_domain(isl::checked::union_pw_multi_aff upma)17731 isl::checked::union_map union_map::preimage_domain(isl::checked::union_pw_multi_aff upma) const
17732 {
17733   auto res = isl_union_map_preimage_domain_union_pw_multi_aff(copy(), upma.release());
17734   return manage(res);
17735 }
17736 
preimage_range(isl::checked::multi_aff ma)17737 isl::checked::union_map union_map::preimage_range(isl::checked::multi_aff ma) const
17738 {
17739   auto res = isl_union_map_preimage_range_multi_aff(copy(), ma.release());
17740   return manage(res);
17741 }
17742 
preimage_range(isl::checked::pw_multi_aff pma)17743 isl::checked::union_map union_map::preimage_range(isl::checked::pw_multi_aff pma) const
17744 {
17745   auto res = isl_union_map_preimage_range_pw_multi_aff(copy(), pma.release());
17746   return manage(res);
17747 }
17748 
preimage_range(isl::checked::union_pw_multi_aff upma)17749 isl::checked::union_map union_map::preimage_range(isl::checked::union_pw_multi_aff upma) const
17750 {
17751   auto res = isl_union_map_preimage_range_union_pw_multi_aff(copy(), upma.release());
17752   return manage(res);
17753 }
17754 
product(isl::checked::union_map umap2)17755 isl::checked::union_map union_map::product(isl::checked::union_map umap2) const
17756 {
17757   auto res = isl_union_map_product(copy(), umap2.release());
17758   return manage(res);
17759 }
17760 
project_out_all_params()17761 isl::checked::union_map union_map::project_out_all_params() const
17762 {
17763   auto res = isl_union_map_project_out_all_params(copy());
17764   return manage(res);
17765 }
17766 
range()17767 isl::checked::union_set union_map::range() const
17768 {
17769   auto res = isl_union_map_range(copy());
17770   return manage(res);
17771 }
17772 
range_factor_domain()17773 isl::checked::union_map union_map::range_factor_domain() const
17774 {
17775   auto res = isl_union_map_range_factor_domain(copy());
17776   return manage(res);
17777 }
17778 
range_factor_range()17779 isl::checked::union_map union_map::range_factor_range() const
17780 {
17781   auto res = isl_union_map_range_factor_range(copy());
17782   return manage(res);
17783 }
17784 
range_map()17785 isl::checked::union_map union_map::range_map() const
17786 {
17787   auto res = isl_union_map_range_map(copy());
17788   return manage(res);
17789 }
17790 
range_product(isl::checked::union_map umap2)17791 isl::checked::union_map union_map::range_product(isl::checked::union_map umap2) const
17792 {
17793   auto res = isl_union_map_range_product(copy(), umap2.release());
17794   return manage(res);
17795 }
17796 
range_reverse()17797 isl::checked::union_map union_map::range_reverse() const
17798 {
17799   auto res = isl_union_map_range_reverse(copy());
17800   return manage(res);
17801 }
17802 
reverse()17803 isl::checked::union_map union_map::reverse() const
17804 {
17805   auto res = isl_union_map_reverse(copy());
17806   return manage(res);
17807 }
17808 
space()17809 isl::checked::space union_map::space() const
17810 {
17811   auto res = isl_union_map_get_space(get());
17812   return manage(res);
17813 }
17814 
get_space()17815 isl::checked::space union_map::get_space() const
17816 {
17817   return space();
17818 }
17819 
subtract(isl::checked::union_map umap2)17820 isl::checked::union_map union_map::subtract(isl::checked::union_map umap2) const
17821 {
17822   auto res = isl_union_map_subtract(copy(), umap2.release());
17823   return manage(res);
17824 }
17825 
subtract_domain(isl::checked::union_set dom)17826 isl::checked::union_map union_map::subtract_domain(isl::checked::union_set dom) const
17827 {
17828   auto res = isl_union_map_subtract_domain(copy(), dom.release());
17829   return manage(res);
17830 }
17831 
subtract_range(isl::checked::union_set dom)17832 isl::checked::union_map union_map::subtract_range(isl::checked::union_set dom) const
17833 {
17834   auto res = isl_union_map_subtract_range(copy(), dom.release());
17835   return manage(res);
17836 }
17837 
uncurry()17838 isl::checked::union_map union_map::uncurry() const
17839 {
17840   auto res = isl_union_map_uncurry(copy());
17841   return manage(res);
17842 }
17843 
unite(isl::checked::union_map umap2)17844 isl::checked::union_map union_map::unite(isl::checked::union_map umap2) const
17845 {
17846   auto res = isl_union_map_union(copy(), umap2.release());
17847   return manage(res);
17848 }
17849 
universe()17850 isl::checked::union_map union_map::universe() const
17851 {
17852   auto res = isl_union_map_universe(copy());
17853   return manage(res);
17854 }
17855 
wrap()17856 isl::checked::union_set union_map::wrap() const
17857 {
17858   auto res = isl_union_map_wrap(copy());
17859   return manage(res);
17860 }
17861 
zip()17862 isl::checked::union_map union_map::zip() const
17863 {
17864   auto res = isl_union_map_zip(copy());
17865   return manage(res);
17866 }
17867 
17868 inline std::ostream &operator<<(std::ostream &os, const union_map &obj)
17869 {
17870   char *str = isl_union_map_to_str(obj.get());
17871   if (!str) {
17872     os.setstate(std::ios_base::badbit);
17873     return os;
17874   }
17875   os << str;
17876   free(str);
17877   return os;
17878 }
17879 
17880 // implementations for isl::union_pw_aff
manage(__isl_take isl_union_pw_aff * ptr)17881 union_pw_aff manage(__isl_take isl_union_pw_aff *ptr) {
17882   return union_pw_aff(ptr);
17883 }
manage_copy(__isl_keep isl_union_pw_aff * ptr)17884 union_pw_aff manage_copy(__isl_keep isl_union_pw_aff *ptr) {
17885   ptr = isl_union_pw_aff_copy(ptr);
17886   return union_pw_aff(ptr);
17887 }
17888 
union_pw_aff()17889 union_pw_aff::union_pw_aff()
17890     : ptr(nullptr) {}
17891 
union_pw_aff(const union_pw_aff & obj)17892 union_pw_aff::union_pw_aff(const union_pw_aff &obj)
17893     : ptr(nullptr)
17894 {
17895   ptr = obj.copy();
17896 }
17897 
union_pw_aff(__isl_take isl_union_pw_aff * ptr)17898 union_pw_aff::union_pw_aff(__isl_take isl_union_pw_aff *ptr)
17899     : ptr(ptr) {}
17900 
union_pw_aff(isl::checked::aff aff)17901 union_pw_aff::union_pw_aff(isl::checked::aff aff)
17902 {
17903   auto res = isl_union_pw_aff_from_aff(aff.release());
17904   ptr = res;
17905 }
17906 
union_pw_aff(isl::checked::pw_aff pa)17907 union_pw_aff::union_pw_aff(isl::checked::pw_aff pa)
17908 {
17909   auto res = isl_union_pw_aff_from_pw_aff(pa.release());
17910   ptr = res;
17911 }
17912 
union_pw_aff(isl::checked::ctx ctx,const std::string & str)17913 union_pw_aff::union_pw_aff(isl::checked::ctx ctx, const std::string &str)
17914 {
17915   auto res = isl_union_pw_aff_read_from_str(ctx.release(), str.c_str());
17916   ptr = res;
17917 }
17918 
17919 union_pw_aff &union_pw_aff::operator=(union_pw_aff obj) {
17920   std::swap(this->ptr, obj.ptr);
17921   return *this;
17922 }
17923 
~union_pw_aff()17924 union_pw_aff::~union_pw_aff() {
17925   if (ptr)
17926     isl_union_pw_aff_free(ptr);
17927 }
17928 
copy()17929 __isl_give isl_union_pw_aff *union_pw_aff::copy() const & {
17930   return isl_union_pw_aff_copy(ptr);
17931 }
17932 
get()17933 __isl_keep isl_union_pw_aff *union_pw_aff::get() const {
17934   return ptr;
17935 }
17936 
release()17937 __isl_give isl_union_pw_aff *union_pw_aff::release() {
17938   isl_union_pw_aff *tmp = ptr;
17939   ptr = nullptr;
17940   return tmp;
17941 }
17942 
is_null()17943 bool union_pw_aff::is_null() const {
17944   return ptr == nullptr;
17945 }
17946 
ctx()17947 isl::checked::ctx union_pw_aff::ctx() const {
17948   return isl::checked::ctx(isl_union_pw_aff_get_ctx(ptr));
17949 }
17950 
add(const isl::checked::multi_union_pw_aff & multi2)17951 isl::checked::multi_union_pw_aff union_pw_aff::add(const isl::checked::multi_union_pw_aff &multi2) const
17952 {
17953   return isl::checked::multi_union_pw_aff(*this).add(multi2);
17954 }
17955 
add(isl::checked::union_pw_aff upa2)17956 isl::checked::union_pw_aff union_pw_aff::add(isl::checked::union_pw_aff upa2) const
17957 {
17958   auto res = isl_union_pw_aff_add(copy(), upa2.release());
17959   return manage(res);
17960 }
17961 
add(const isl::checked::union_pw_multi_aff & upma2)17962 isl::checked::union_pw_multi_aff union_pw_aff::add(const isl::checked::union_pw_multi_aff &upma2) const
17963 {
17964   return isl::checked::union_pw_multi_aff(*this).add(upma2);
17965 }
17966 
add(const isl::checked::aff & upa2)17967 isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::aff &upa2) const
17968 {
17969   return this->add(isl::checked::union_pw_aff(upa2));
17970 }
17971 
add(const isl::checked::pw_aff & upa2)17972 isl::checked::union_pw_aff union_pw_aff::add(const isl::checked::pw_aff &upa2) const
17973 {
17974   return this->add(isl::checked::union_pw_aff(upa2));
17975 }
17976 
apply(const isl::checked::union_pw_multi_aff & upma2)17977 isl::checked::union_pw_multi_aff union_pw_aff::apply(const isl::checked::union_pw_multi_aff &upma2) const
17978 {
17979   return isl::checked::union_pw_multi_aff(*this).apply(upma2);
17980 }
17981 
as_multi_union_pw_aff()17982 isl::checked::multi_union_pw_aff union_pw_aff::as_multi_union_pw_aff() const
17983 {
17984   return isl::checked::union_pw_multi_aff(*this).as_multi_union_pw_aff();
17985 }
17986 
as_pw_multi_aff()17987 isl::checked::pw_multi_aff union_pw_aff::as_pw_multi_aff() const
17988 {
17989   return isl::checked::union_pw_multi_aff(*this).as_pw_multi_aff();
17990 }
17991 
as_union_map()17992 isl::checked::union_map union_pw_aff::as_union_map() const
17993 {
17994   return isl::checked::union_pw_multi_aff(*this).as_union_map();
17995 }
17996 
at(int pos)17997 isl::checked::union_pw_aff union_pw_aff::at(int pos) const
17998 {
17999   return isl::checked::multi_union_pw_aff(*this).at(pos);
18000 }
18001 
bind(const isl::checked::multi_id & tuple)18002 isl::checked::union_set union_pw_aff::bind(const isl::checked::multi_id &tuple) const
18003 {
18004   return isl::checked::multi_union_pw_aff(*this).bind(tuple);
18005 }
18006 
bind(isl::checked::id id)18007 isl::checked::union_set union_pw_aff::bind(isl::checked::id id) const
18008 {
18009   auto res = isl_union_pw_aff_bind_id(copy(), id.release());
18010   return manage(res);
18011 }
18012 
bind(const std::string & id)18013 isl::checked::union_set union_pw_aff::bind(const std::string &id) const
18014 {
18015   return this->bind(isl::checked::id(ctx(), id));
18016 }
18017 
coalesce()18018 isl::checked::union_pw_aff union_pw_aff::coalesce() const
18019 {
18020   auto res = isl_union_pw_aff_coalesce(copy());
18021   return manage(res);
18022 }
18023 
domain()18024 isl::checked::union_set union_pw_aff::domain() const
18025 {
18026   auto res = isl_union_pw_aff_domain(copy());
18027   return manage(res);
18028 }
18029 
extract_pw_multi_aff(const isl::checked::space & space)18030 isl::checked::pw_multi_aff union_pw_aff::extract_pw_multi_aff(const isl::checked::space &space) const
18031 {
18032   return isl::checked::union_pw_multi_aff(*this).extract_pw_multi_aff(space);
18033 }
18034 
flat_range_product(const isl::checked::multi_union_pw_aff & multi2)18035 isl::checked::multi_union_pw_aff union_pw_aff::flat_range_product(const isl::checked::multi_union_pw_aff &multi2) const
18036 {
18037   return isl::checked::multi_union_pw_aff(*this).flat_range_product(multi2);
18038 }
18039 
flat_range_product(const isl::checked::union_pw_multi_aff & upma2)18040 isl::checked::union_pw_multi_aff union_pw_aff::flat_range_product(const isl::checked::union_pw_multi_aff &upma2) const
18041 {
18042   return isl::checked::union_pw_multi_aff(*this).flat_range_product(upma2);
18043 }
18044 
gist(isl::checked::union_set context)18045 isl::checked::union_pw_aff union_pw_aff::gist(isl::checked::union_set context) const
18046 {
18047   auto res = isl_union_pw_aff_gist(copy(), context.release());
18048   return manage(res);
18049 }
18050 
has_range_tuple_id()18051 boolean union_pw_aff::has_range_tuple_id() const
18052 {
18053   return isl::checked::multi_union_pw_aff(*this).has_range_tuple_id();
18054 }
18055 
intersect_domain(isl::checked::space space)18056 isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::space space) const
18057 {
18058   auto res = isl_union_pw_aff_intersect_domain_space(copy(), space.release());
18059   return manage(res);
18060 }
18061 
intersect_domain(isl::checked::union_set uset)18062 isl::checked::union_pw_aff union_pw_aff::intersect_domain(isl::checked::union_set uset) const
18063 {
18064   auto res = isl_union_pw_aff_intersect_domain_union_set(copy(), uset.release());
18065   return manage(res);
18066 }
18067 
intersect_domain_wrapped_domain(isl::checked::union_set uset)18068 isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
18069 {
18070   auto res = isl_union_pw_aff_intersect_domain_wrapped_domain(copy(), uset.release());
18071   return manage(res);
18072 }
18073 
intersect_domain_wrapped_range(isl::checked::union_set uset)18074 isl::checked::union_pw_aff union_pw_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
18075 {
18076   auto res = isl_union_pw_aff_intersect_domain_wrapped_range(copy(), uset.release());
18077   return manage(res);
18078 }
18079 
intersect_params(isl::checked::set set)18080 isl::checked::union_pw_aff union_pw_aff::intersect_params(isl::checked::set set) const
18081 {
18082   auto res = isl_union_pw_aff_intersect_params(copy(), set.release());
18083   return manage(res);
18084 }
18085 
involves_locals()18086 boolean union_pw_aff::involves_locals() const
18087 {
18088   return isl::checked::union_pw_multi_aff(*this).involves_locals();
18089 }
18090 
involves_nan()18091 boolean union_pw_aff::involves_nan() const
18092 {
18093   return isl::checked::multi_union_pw_aff(*this).involves_nan();
18094 }
18095 
isa_pw_multi_aff()18096 boolean union_pw_aff::isa_pw_multi_aff() const
18097 {
18098   return isl::checked::union_pw_multi_aff(*this).isa_pw_multi_aff();
18099 }
18100 
list()18101 isl::checked::union_pw_aff_list union_pw_aff::list() const
18102 {
18103   return isl::checked::multi_union_pw_aff(*this).list();
18104 }
18105 
neg()18106 isl::checked::multi_union_pw_aff union_pw_aff::neg() const
18107 {
18108   return isl::checked::multi_union_pw_aff(*this).neg();
18109 }
18110 
plain_is_empty()18111 boolean union_pw_aff::plain_is_empty() const
18112 {
18113   return isl::checked::union_pw_multi_aff(*this).plain_is_empty();
18114 }
18115 
plain_is_equal(const isl::checked::multi_union_pw_aff & multi2)18116 boolean union_pw_aff::plain_is_equal(const isl::checked::multi_union_pw_aff &multi2) const
18117 {
18118   return isl::checked::multi_union_pw_aff(*this).plain_is_equal(multi2);
18119 }
18120 
preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff & upma2)18121 isl::checked::union_pw_multi_aff union_pw_aff::preimage_domain_wrapped_domain(const isl::checked::union_pw_multi_aff &upma2) const
18122 {
18123   return isl::checked::union_pw_multi_aff(*this).preimage_domain_wrapped_domain(upma2);
18124 }
18125 
pullback(isl::checked::union_pw_multi_aff upma)18126 isl::checked::union_pw_aff union_pw_aff::pullback(isl::checked::union_pw_multi_aff upma) const
18127 {
18128   auto res = isl_union_pw_aff_pullback_union_pw_multi_aff(copy(), upma.release());
18129   return manage(res);
18130 }
18131 
pw_multi_aff_list()18132 isl::checked::pw_multi_aff_list union_pw_aff::pw_multi_aff_list() const
18133 {
18134   return isl::checked::union_pw_multi_aff(*this).pw_multi_aff_list();
18135 }
18136 
range_factor_domain()18137 isl::checked::union_pw_multi_aff union_pw_aff::range_factor_domain() const
18138 {
18139   return isl::checked::union_pw_multi_aff(*this).range_factor_domain();
18140 }
18141 
range_factor_range()18142 isl::checked::union_pw_multi_aff union_pw_aff::range_factor_range() const
18143 {
18144   return isl::checked::union_pw_multi_aff(*this).range_factor_range();
18145 }
18146 
range_product(const isl::checked::multi_union_pw_aff & multi2)18147 isl::checked::multi_union_pw_aff union_pw_aff::range_product(const isl::checked::multi_union_pw_aff &multi2) const
18148 {
18149   return isl::checked::multi_union_pw_aff(*this).range_product(multi2);
18150 }
18151 
range_product(const isl::checked::union_pw_multi_aff & upma2)18152 isl::checked::union_pw_multi_aff union_pw_aff::range_product(const isl::checked::union_pw_multi_aff &upma2) const
18153 {
18154   return isl::checked::union_pw_multi_aff(*this).range_product(upma2);
18155 }
18156 
range_tuple_id()18157 isl::checked::id union_pw_aff::range_tuple_id() const
18158 {
18159   return isl::checked::multi_union_pw_aff(*this).range_tuple_id();
18160 }
18161 
reset_range_tuple_id()18162 isl::checked::multi_union_pw_aff union_pw_aff::reset_range_tuple_id() const
18163 {
18164   return isl::checked::multi_union_pw_aff(*this).reset_range_tuple_id();
18165 }
18166 
scale(const isl::checked::multi_val & mv)18167 isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::multi_val &mv) const
18168 {
18169   return isl::checked::multi_union_pw_aff(*this).scale(mv);
18170 }
18171 
scale(const isl::checked::val & v)18172 isl::checked::multi_union_pw_aff union_pw_aff::scale(const isl::checked::val &v) const
18173 {
18174   return isl::checked::multi_union_pw_aff(*this).scale(v);
18175 }
18176 
scale(long v)18177 isl::checked::multi_union_pw_aff union_pw_aff::scale(long v) const
18178 {
18179   return this->scale(isl::checked::val(ctx(), v));
18180 }
18181 
scale_down(const isl::checked::multi_val & mv)18182 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::multi_val &mv) const
18183 {
18184   return isl::checked::multi_union_pw_aff(*this).scale_down(mv);
18185 }
18186 
scale_down(const isl::checked::val & v)18187 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(const isl::checked::val &v) const
18188 {
18189   return isl::checked::multi_union_pw_aff(*this).scale_down(v);
18190 }
18191 
scale_down(long v)18192 isl::checked::multi_union_pw_aff union_pw_aff::scale_down(long v) const
18193 {
18194   return this->scale_down(isl::checked::val(ctx(), v));
18195 }
18196 
set_at(int pos,const isl::checked::union_pw_aff & el)18197 isl::checked::multi_union_pw_aff union_pw_aff::set_at(int pos, const isl::checked::union_pw_aff &el) const
18198 {
18199   return isl::checked::multi_union_pw_aff(*this).set_at(pos, el);
18200 }
18201 
set_range_tuple(const isl::checked::id & id)18202 isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const isl::checked::id &id) const
18203 {
18204   return isl::checked::multi_union_pw_aff(*this).set_range_tuple(id);
18205 }
18206 
set_range_tuple(const std::string & id)18207 isl::checked::multi_union_pw_aff union_pw_aff::set_range_tuple(const std::string &id) const
18208 {
18209   return this->set_range_tuple(isl::checked::id(ctx(), id));
18210 }
18211 
size()18212 class size union_pw_aff::size() const
18213 {
18214   return isl::checked::multi_union_pw_aff(*this).size();
18215 }
18216 
space()18217 isl::checked::space union_pw_aff::space() const
18218 {
18219   auto res = isl_union_pw_aff_get_space(get());
18220   return manage(res);
18221 }
18222 
get_space()18223 isl::checked::space union_pw_aff::get_space() const
18224 {
18225   return space();
18226 }
18227 
sub(const isl::checked::multi_union_pw_aff & multi2)18228 isl::checked::multi_union_pw_aff union_pw_aff::sub(const isl::checked::multi_union_pw_aff &multi2) const
18229 {
18230   return isl::checked::multi_union_pw_aff(*this).sub(multi2);
18231 }
18232 
sub(isl::checked::union_pw_aff upa2)18233 isl::checked::union_pw_aff union_pw_aff::sub(isl::checked::union_pw_aff upa2) const
18234 {
18235   auto res = isl_union_pw_aff_sub(copy(), upa2.release());
18236   return manage(res);
18237 }
18238 
sub(const isl::checked::union_pw_multi_aff & upma2)18239 isl::checked::union_pw_multi_aff union_pw_aff::sub(const isl::checked::union_pw_multi_aff &upma2) const
18240 {
18241   return isl::checked::union_pw_multi_aff(*this).sub(upma2);
18242 }
18243 
sub(const isl::checked::aff & upa2)18244 isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::aff &upa2) const
18245 {
18246   return this->sub(isl::checked::union_pw_aff(upa2));
18247 }
18248 
sub(const isl::checked::pw_aff & upa2)18249 isl::checked::union_pw_aff union_pw_aff::sub(const isl::checked::pw_aff &upa2) const
18250 {
18251   return this->sub(isl::checked::union_pw_aff(upa2));
18252 }
18253 
subtract_domain(isl::checked::space space)18254 isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::space space) const
18255 {
18256   auto res = isl_union_pw_aff_subtract_domain_space(copy(), space.release());
18257   return manage(res);
18258 }
18259 
subtract_domain(isl::checked::union_set uset)18260 isl::checked::union_pw_aff union_pw_aff::subtract_domain(isl::checked::union_set uset) const
18261 {
18262   auto res = isl_union_pw_aff_subtract_domain_union_set(copy(), uset.release());
18263   return manage(res);
18264 }
18265 
to_list()18266 isl::checked::union_pw_aff_list union_pw_aff::to_list() const
18267 {
18268   auto res = isl_union_pw_aff_to_list(copy());
18269   return manage(res);
18270 }
18271 
union_add(const isl::checked::multi_union_pw_aff & mupa2)18272 isl::checked::multi_union_pw_aff union_pw_aff::union_add(const isl::checked::multi_union_pw_aff &mupa2) const
18273 {
18274   return isl::checked::multi_union_pw_aff(*this).union_add(mupa2);
18275 }
18276 
union_add(isl::checked::union_pw_aff upa2)18277 isl::checked::union_pw_aff union_pw_aff::union_add(isl::checked::union_pw_aff upa2) const
18278 {
18279   auto res = isl_union_pw_aff_union_add(copy(), upa2.release());
18280   return manage(res);
18281 }
18282 
union_add(const isl::checked::union_pw_multi_aff & upma2)18283 isl::checked::union_pw_multi_aff union_pw_aff::union_add(const isl::checked::union_pw_multi_aff &upma2) const
18284 {
18285   return isl::checked::union_pw_multi_aff(*this).union_add(upma2);
18286 }
18287 
union_add(const isl::checked::aff & upa2)18288 isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::aff &upa2) const
18289 {
18290   return this->union_add(isl::checked::union_pw_aff(upa2));
18291 }
18292 
union_add(const isl::checked::pw_aff & upa2)18293 isl::checked::union_pw_aff union_pw_aff::union_add(const isl::checked::pw_aff &upa2) const
18294 {
18295   return this->union_add(isl::checked::union_pw_aff(upa2));
18296 }
18297 
18298 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff &obj)
18299 {
18300   char *str = isl_union_pw_aff_to_str(obj.get());
18301   if (!str) {
18302     os.setstate(std::ios_base::badbit);
18303     return os;
18304   }
18305   os << str;
18306   free(str);
18307   return os;
18308 }
18309 
18310 // implementations for isl::union_pw_aff_list
manage(__isl_take isl_union_pw_aff_list * ptr)18311 union_pw_aff_list manage(__isl_take isl_union_pw_aff_list *ptr) {
18312   return union_pw_aff_list(ptr);
18313 }
manage_copy(__isl_keep isl_union_pw_aff_list * ptr)18314 union_pw_aff_list manage_copy(__isl_keep isl_union_pw_aff_list *ptr) {
18315   ptr = isl_union_pw_aff_list_copy(ptr);
18316   return union_pw_aff_list(ptr);
18317 }
18318 
union_pw_aff_list()18319 union_pw_aff_list::union_pw_aff_list()
18320     : ptr(nullptr) {}
18321 
union_pw_aff_list(const union_pw_aff_list & obj)18322 union_pw_aff_list::union_pw_aff_list(const union_pw_aff_list &obj)
18323     : ptr(nullptr)
18324 {
18325   ptr = obj.copy();
18326 }
18327 
union_pw_aff_list(__isl_take isl_union_pw_aff_list * ptr)18328 union_pw_aff_list::union_pw_aff_list(__isl_take isl_union_pw_aff_list *ptr)
18329     : ptr(ptr) {}
18330 
union_pw_aff_list(isl::checked::ctx ctx,int n)18331 union_pw_aff_list::union_pw_aff_list(isl::checked::ctx ctx, int n)
18332 {
18333   auto res = isl_union_pw_aff_list_alloc(ctx.release(), n);
18334   ptr = res;
18335 }
18336 
union_pw_aff_list(isl::checked::union_pw_aff el)18337 union_pw_aff_list::union_pw_aff_list(isl::checked::union_pw_aff el)
18338 {
18339   auto res = isl_union_pw_aff_list_from_union_pw_aff(el.release());
18340   ptr = res;
18341 }
18342 
union_pw_aff_list(isl::checked::ctx ctx,const std::string & str)18343 union_pw_aff_list::union_pw_aff_list(isl::checked::ctx ctx, const std::string &str)
18344 {
18345   auto res = isl_union_pw_aff_list_read_from_str(ctx.release(), str.c_str());
18346   ptr = res;
18347 }
18348 
18349 union_pw_aff_list &union_pw_aff_list::operator=(union_pw_aff_list obj) {
18350   std::swap(this->ptr, obj.ptr);
18351   return *this;
18352 }
18353 
~union_pw_aff_list()18354 union_pw_aff_list::~union_pw_aff_list() {
18355   if (ptr)
18356     isl_union_pw_aff_list_free(ptr);
18357 }
18358 
copy()18359 __isl_give isl_union_pw_aff_list *union_pw_aff_list::copy() const & {
18360   return isl_union_pw_aff_list_copy(ptr);
18361 }
18362 
get()18363 __isl_keep isl_union_pw_aff_list *union_pw_aff_list::get() const {
18364   return ptr;
18365 }
18366 
release()18367 __isl_give isl_union_pw_aff_list *union_pw_aff_list::release() {
18368   isl_union_pw_aff_list *tmp = ptr;
18369   ptr = nullptr;
18370   return tmp;
18371 }
18372 
is_null()18373 bool union_pw_aff_list::is_null() const {
18374   return ptr == nullptr;
18375 }
18376 
ctx()18377 isl::checked::ctx union_pw_aff_list::ctx() const {
18378   return isl::checked::ctx(isl_union_pw_aff_list_get_ctx(ptr));
18379 }
18380 
add(isl::checked::union_pw_aff el)18381 isl::checked::union_pw_aff_list union_pw_aff_list::add(isl::checked::union_pw_aff el) const
18382 {
18383   auto res = isl_union_pw_aff_list_add(copy(), el.release());
18384   return manage(res);
18385 }
18386 
at(int index)18387 isl::checked::union_pw_aff union_pw_aff_list::at(int index) const
18388 {
18389   auto res = isl_union_pw_aff_list_get_at(get(), index);
18390   return manage(res);
18391 }
18392 
get_at(int index)18393 isl::checked::union_pw_aff union_pw_aff_list::get_at(int index) const
18394 {
18395   return at(index);
18396 }
18397 
clear()18398 isl::checked::union_pw_aff_list union_pw_aff_list::clear() const
18399 {
18400   auto res = isl_union_pw_aff_list_clear(copy());
18401   return manage(res);
18402 }
18403 
concat(isl::checked::union_pw_aff_list list2)18404 isl::checked::union_pw_aff_list union_pw_aff_list::concat(isl::checked::union_pw_aff_list list2) const
18405 {
18406   auto res = isl_union_pw_aff_list_concat(copy(), list2.release());
18407   return manage(res);
18408 }
18409 
drop(unsigned int first,unsigned int n)18410 isl::checked::union_pw_aff_list union_pw_aff_list::drop(unsigned int first, unsigned int n) const
18411 {
18412   auto res = isl_union_pw_aff_list_drop(copy(), first, n);
18413   return manage(res);
18414 }
18415 
foreach(const std::function<stat (isl::checked::union_pw_aff)> & fn)18416 stat union_pw_aff_list::foreach(const std::function<stat(isl::checked::union_pw_aff)> &fn) const
18417 {
18418   struct fn_data {
18419     std::function<stat(isl::checked::union_pw_aff)> func;
18420   } fn_data = { fn };
18421   auto fn_lambda = [](isl_union_pw_aff *arg_0, void *arg_1) -> isl_stat {
18422     auto *data = static_cast<struct fn_data *>(arg_1);
18423     auto ret = (data->func)(manage(arg_0));
18424     return ret.release();
18425   };
18426   auto res = isl_union_pw_aff_list_foreach(get(), fn_lambda, &fn_data);
18427   return manage(res);
18428 }
18429 
insert(unsigned int pos,isl::checked::union_pw_aff el)18430 isl::checked::union_pw_aff_list union_pw_aff_list::insert(unsigned int pos, isl::checked::union_pw_aff el) const
18431 {
18432   auto res = isl_union_pw_aff_list_insert(copy(), pos, el.release());
18433   return manage(res);
18434 }
18435 
size()18436 class size union_pw_aff_list::size() const
18437 {
18438   auto res = isl_union_pw_aff_list_size(get());
18439   return manage(res);
18440 }
18441 
18442 inline std::ostream &operator<<(std::ostream &os, const union_pw_aff_list &obj)
18443 {
18444   char *str = isl_union_pw_aff_list_to_str(obj.get());
18445   if (!str) {
18446     os.setstate(std::ios_base::badbit);
18447     return os;
18448   }
18449   os << str;
18450   free(str);
18451   return os;
18452 }
18453 
18454 // implementations for isl::union_pw_multi_aff
manage(__isl_take isl_union_pw_multi_aff * ptr)18455 union_pw_multi_aff manage(__isl_take isl_union_pw_multi_aff *ptr) {
18456   return union_pw_multi_aff(ptr);
18457 }
manage_copy(__isl_keep isl_union_pw_multi_aff * ptr)18458 union_pw_multi_aff manage_copy(__isl_keep isl_union_pw_multi_aff *ptr) {
18459   ptr = isl_union_pw_multi_aff_copy(ptr);
18460   return union_pw_multi_aff(ptr);
18461 }
18462 
union_pw_multi_aff()18463 union_pw_multi_aff::union_pw_multi_aff()
18464     : ptr(nullptr) {}
18465 
union_pw_multi_aff(const union_pw_multi_aff & obj)18466 union_pw_multi_aff::union_pw_multi_aff(const union_pw_multi_aff &obj)
18467     : ptr(nullptr)
18468 {
18469   ptr = obj.copy();
18470 }
18471 
union_pw_multi_aff(__isl_take isl_union_pw_multi_aff * ptr)18472 union_pw_multi_aff::union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *ptr)
18473     : ptr(ptr) {}
18474 
union_pw_multi_aff(isl::checked::multi_aff ma)18475 union_pw_multi_aff::union_pw_multi_aff(isl::checked::multi_aff ma)
18476 {
18477   auto res = isl_union_pw_multi_aff_from_multi_aff(ma.release());
18478   ptr = res;
18479 }
18480 
union_pw_multi_aff(isl::checked::pw_multi_aff pma)18481 union_pw_multi_aff::union_pw_multi_aff(isl::checked::pw_multi_aff pma)
18482 {
18483   auto res = isl_union_pw_multi_aff_from_pw_multi_aff(pma.release());
18484   ptr = res;
18485 }
18486 
union_pw_multi_aff(isl::checked::union_pw_aff upa)18487 union_pw_multi_aff::union_pw_multi_aff(isl::checked::union_pw_aff upa)
18488 {
18489   auto res = isl_union_pw_multi_aff_from_union_pw_aff(upa.release());
18490   ptr = res;
18491 }
18492 
union_pw_multi_aff(isl::checked::ctx ctx,const std::string & str)18493 union_pw_multi_aff::union_pw_multi_aff(isl::checked::ctx ctx, const std::string &str)
18494 {
18495   auto res = isl_union_pw_multi_aff_read_from_str(ctx.release(), str.c_str());
18496   ptr = res;
18497 }
18498 
18499 union_pw_multi_aff &union_pw_multi_aff::operator=(union_pw_multi_aff obj) {
18500   std::swap(this->ptr, obj.ptr);
18501   return *this;
18502 }
18503 
~union_pw_multi_aff()18504 union_pw_multi_aff::~union_pw_multi_aff() {
18505   if (ptr)
18506     isl_union_pw_multi_aff_free(ptr);
18507 }
18508 
copy()18509 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::copy() const & {
18510   return isl_union_pw_multi_aff_copy(ptr);
18511 }
18512 
get()18513 __isl_keep isl_union_pw_multi_aff *union_pw_multi_aff::get() const {
18514   return ptr;
18515 }
18516 
release()18517 __isl_give isl_union_pw_multi_aff *union_pw_multi_aff::release() {
18518   isl_union_pw_multi_aff *tmp = ptr;
18519   ptr = nullptr;
18520   return tmp;
18521 }
18522 
is_null()18523 bool union_pw_multi_aff::is_null() const {
18524   return ptr == nullptr;
18525 }
18526 
ctx()18527 isl::checked::ctx union_pw_multi_aff::ctx() const {
18528   return isl::checked::ctx(isl_union_pw_multi_aff_get_ctx(ptr));
18529 }
18530 
add(isl::checked::union_pw_multi_aff upma2)18531 isl::checked::union_pw_multi_aff union_pw_multi_aff::add(isl::checked::union_pw_multi_aff upma2) const
18532 {
18533   auto res = isl_union_pw_multi_aff_add(copy(), upma2.release());
18534   return manage(res);
18535 }
18536 
apply(isl::checked::union_pw_multi_aff upma2)18537 isl::checked::union_pw_multi_aff union_pw_multi_aff::apply(isl::checked::union_pw_multi_aff upma2) const
18538 {
18539   auto res = isl_union_pw_multi_aff_apply_union_pw_multi_aff(copy(), upma2.release());
18540   return manage(res);
18541 }
18542 
as_multi_union_pw_aff()18543 isl::checked::multi_union_pw_aff union_pw_multi_aff::as_multi_union_pw_aff() const
18544 {
18545   auto res = isl_union_pw_multi_aff_as_multi_union_pw_aff(copy());
18546   return manage(res);
18547 }
18548 
as_pw_multi_aff()18549 isl::checked::pw_multi_aff union_pw_multi_aff::as_pw_multi_aff() const
18550 {
18551   auto res = isl_union_pw_multi_aff_as_pw_multi_aff(copy());
18552   return manage(res);
18553 }
18554 
as_union_map()18555 isl::checked::union_map union_pw_multi_aff::as_union_map() const
18556 {
18557   auto res = isl_union_pw_multi_aff_as_union_map(copy());
18558   return manage(res);
18559 }
18560 
coalesce()18561 isl::checked::union_pw_multi_aff union_pw_multi_aff::coalesce() const
18562 {
18563   auto res = isl_union_pw_multi_aff_coalesce(copy());
18564   return manage(res);
18565 }
18566 
domain()18567 isl::checked::union_set union_pw_multi_aff::domain() const
18568 {
18569   auto res = isl_union_pw_multi_aff_domain(copy());
18570   return manage(res);
18571 }
18572 
empty(isl::checked::ctx ctx)18573 isl::checked::union_pw_multi_aff union_pw_multi_aff::empty(isl::checked::ctx ctx)
18574 {
18575   auto res = isl_union_pw_multi_aff_empty_ctx(ctx.release());
18576   return manage(res);
18577 }
18578 
extract_pw_multi_aff(isl::checked::space space)18579 isl::checked::pw_multi_aff union_pw_multi_aff::extract_pw_multi_aff(isl::checked::space space) const
18580 {
18581   auto res = isl_union_pw_multi_aff_extract_pw_multi_aff(get(), space.release());
18582   return manage(res);
18583 }
18584 
flat_range_product(isl::checked::union_pw_multi_aff upma2)18585 isl::checked::union_pw_multi_aff union_pw_multi_aff::flat_range_product(isl::checked::union_pw_multi_aff upma2) const
18586 {
18587   auto res = isl_union_pw_multi_aff_flat_range_product(copy(), upma2.release());
18588   return manage(res);
18589 }
18590 
gist(isl::checked::union_set context)18591 isl::checked::union_pw_multi_aff union_pw_multi_aff::gist(isl::checked::union_set context) const
18592 {
18593   auto res = isl_union_pw_multi_aff_gist(copy(), context.release());
18594   return manage(res);
18595 }
18596 
intersect_domain(isl::checked::space space)18597 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::space space) const
18598 {
18599   auto res = isl_union_pw_multi_aff_intersect_domain_space(copy(), space.release());
18600   return manage(res);
18601 }
18602 
intersect_domain(isl::checked::union_set uset)18603 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain(isl::checked::union_set uset) const
18604 {
18605   auto res = isl_union_pw_multi_aff_intersect_domain_union_set(copy(), uset.release());
18606   return manage(res);
18607 }
18608 
intersect_domain_wrapped_domain(isl::checked::union_set uset)18609 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_domain(isl::checked::union_set uset) const
18610 {
18611   auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_domain(copy(), uset.release());
18612   return manage(res);
18613 }
18614 
intersect_domain_wrapped_range(isl::checked::union_set uset)18615 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_domain_wrapped_range(isl::checked::union_set uset) const
18616 {
18617   auto res = isl_union_pw_multi_aff_intersect_domain_wrapped_range(copy(), uset.release());
18618   return manage(res);
18619 }
18620 
intersect_params(isl::checked::set set)18621 isl::checked::union_pw_multi_aff union_pw_multi_aff::intersect_params(isl::checked::set set) const
18622 {
18623   auto res = isl_union_pw_multi_aff_intersect_params(copy(), set.release());
18624   return manage(res);
18625 }
18626 
involves_locals()18627 boolean union_pw_multi_aff::involves_locals() const
18628 {
18629   auto res = isl_union_pw_multi_aff_involves_locals(get());
18630   return manage(res);
18631 }
18632 
isa_pw_multi_aff()18633 boolean union_pw_multi_aff::isa_pw_multi_aff() const
18634 {
18635   auto res = isl_union_pw_multi_aff_isa_pw_multi_aff(get());
18636   return manage(res);
18637 }
18638 
plain_is_empty()18639 boolean union_pw_multi_aff::plain_is_empty() const
18640 {
18641   auto res = isl_union_pw_multi_aff_plain_is_empty(get());
18642   return manage(res);
18643 }
18644 
preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2)18645 isl::checked::union_pw_multi_aff union_pw_multi_aff::preimage_domain_wrapped_domain(isl::checked::union_pw_multi_aff upma2) const
18646 {
18647   auto res = isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff(copy(), upma2.release());
18648   return manage(res);
18649 }
18650 
pullback(isl::checked::union_pw_multi_aff upma2)18651 isl::checked::union_pw_multi_aff union_pw_multi_aff::pullback(isl::checked::union_pw_multi_aff upma2) const
18652 {
18653   auto res = isl_union_pw_multi_aff_pullback_union_pw_multi_aff(copy(), upma2.release());
18654   return manage(res);
18655 }
18656 
pw_multi_aff_list()18657 isl::checked::pw_multi_aff_list union_pw_multi_aff::pw_multi_aff_list() const
18658 {
18659   auto res = isl_union_pw_multi_aff_get_pw_multi_aff_list(get());
18660   return manage(res);
18661 }
18662 
get_pw_multi_aff_list()18663 isl::checked::pw_multi_aff_list union_pw_multi_aff::get_pw_multi_aff_list() const
18664 {
18665   return pw_multi_aff_list();
18666 }
18667 
range_factor_domain()18668 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_domain() const
18669 {
18670   auto res = isl_union_pw_multi_aff_range_factor_domain(copy());
18671   return manage(res);
18672 }
18673 
range_factor_range()18674 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_factor_range() const
18675 {
18676   auto res = isl_union_pw_multi_aff_range_factor_range(copy());
18677   return manage(res);
18678 }
18679 
range_product(isl::checked::union_pw_multi_aff upma2)18680 isl::checked::union_pw_multi_aff union_pw_multi_aff::range_product(isl::checked::union_pw_multi_aff upma2) const
18681 {
18682   auto res = isl_union_pw_multi_aff_range_product(copy(), upma2.release());
18683   return manage(res);
18684 }
18685 
space()18686 isl::checked::space union_pw_multi_aff::space() const
18687 {
18688   auto res = isl_union_pw_multi_aff_get_space(get());
18689   return manage(res);
18690 }
18691 
get_space()18692 isl::checked::space union_pw_multi_aff::get_space() const
18693 {
18694   return space();
18695 }
18696 
sub(isl::checked::union_pw_multi_aff upma2)18697 isl::checked::union_pw_multi_aff union_pw_multi_aff::sub(isl::checked::union_pw_multi_aff upma2) const
18698 {
18699   auto res = isl_union_pw_multi_aff_sub(copy(), upma2.release());
18700   return manage(res);
18701 }
18702 
subtract_domain(isl::checked::space space)18703 isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::space space) const
18704 {
18705   auto res = isl_union_pw_multi_aff_subtract_domain_space(copy(), space.release());
18706   return manage(res);
18707 }
18708 
subtract_domain(isl::checked::union_set uset)18709 isl::checked::union_pw_multi_aff union_pw_multi_aff::subtract_domain(isl::checked::union_set uset) const
18710 {
18711   auto res = isl_union_pw_multi_aff_subtract_domain_union_set(copy(), uset.release());
18712   return manage(res);
18713 }
18714 
union_add(isl::checked::union_pw_multi_aff upma2)18715 isl::checked::union_pw_multi_aff union_pw_multi_aff::union_add(isl::checked::union_pw_multi_aff upma2) const
18716 {
18717   auto res = isl_union_pw_multi_aff_union_add(copy(), upma2.release());
18718   return manage(res);
18719 }
18720 
18721 inline std::ostream &operator<<(std::ostream &os, const union_pw_multi_aff &obj)
18722 {
18723   char *str = isl_union_pw_multi_aff_to_str(obj.get());
18724   if (!str) {
18725     os.setstate(std::ios_base::badbit);
18726     return os;
18727   }
18728   os << str;
18729   free(str);
18730   return os;
18731 }
18732 
18733 // implementations for isl::union_set
manage(__isl_take isl_union_set * ptr)18734 union_set manage(__isl_take isl_union_set *ptr) {
18735   return union_set(ptr);
18736 }
manage_copy(__isl_keep isl_union_set * ptr)18737 union_set manage_copy(__isl_keep isl_union_set *ptr) {
18738   ptr = isl_union_set_copy(ptr);
18739   return union_set(ptr);
18740 }
18741 
union_set()18742 union_set::union_set()
18743     : ptr(nullptr) {}
18744 
union_set(const union_set & obj)18745 union_set::union_set(const union_set &obj)
18746     : ptr(nullptr)
18747 {
18748   ptr = obj.copy();
18749 }
18750 
union_set(__isl_take isl_union_set * ptr)18751 union_set::union_set(__isl_take isl_union_set *ptr)
18752     : ptr(ptr) {}
18753 
union_set(isl::checked::basic_set bset)18754 union_set::union_set(isl::checked::basic_set bset)
18755 {
18756   auto res = isl_union_set_from_basic_set(bset.release());
18757   ptr = res;
18758 }
18759 
union_set(isl::checked::point pnt)18760 union_set::union_set(isl::checked::point pnt)
18761 {
18762   auto res = isl_union_set_from_point(pnt.release());
18763   ptr = res;
18764 }
18765 
union_set(isl::checked::set set)18766 union_set::union_set(isl::checked::set set)
18767 {
18768   auto res = isl_union_set_from_set(set.release());
18769   ptr = res;
18770 }
18771 
union_set(isl::checked::ctx ctx,const std::string & str)18772 union_set::union_set(isl::checked::ctx ctx, const std::string &str)
18773 {
18774   auto res = isl_union_set_read_from_str(ctx.release(), str.c_str());
18775   ptr = res;
18776 }
18777 
18778 union_set &union_set::operator=(union_set obj) {
18779   std::swap(this->ptr, obj.ptr);
18780   return *this;
18781 }
18782 
~union_set()18783 union_set::~union_set() {
18784   if (ptr)
18785     isl_union_set_free(ptr);
18786 }
18787 
copy()18788 __isl_give isl_union_set *union_set::copy() const & {
18789   return isl_union_set_copy(ptr);
18790 }
18791 
get()18792 __isl_keep isl_union_set *union_set::get() const {
18793   return ptr;
18794 }
18795 
release()18796 __isl_give isl_union_set *union_set::release() {
18797   isl_union_set *tmp = ptr;
18798   ptr = nullptr;
18799   return tmp;
18800 }
18801 
is_null()18802 bool union_set::is_null() const {
18803   return ptr == nullptr;
18804 }
18805 
ctx()18806 isl::checked::ctx union_set::ctx() const {
18807   return isl::checked::ctx(isl_union_set_get_ctx(ptr));
18808 }
18809 
affine_hull()18810 isl::checked::union_set union_set::affine_hull() const
18811 {
18812   auto res = isl_union_set_affine_hull(copy());
18813   return manage(res);
18814 }
18815 
apply(isl::checked::union_map umap)18816 isl::checked::union_set union_set::apply(isl::checked::union_map umap) const
18817 {
18818   auto res = isl_union_set_apply(copy(), umap.release());
18819   return manage(res);
18820 }
18821 
as_set()18822 isl::checked::set union_set::as_set() const
18823 {
18824   auto res = isl_union_set_as_set(copy());
18825   return manage(res);
18826 }
18827 
coalesce()18828 isl::checked::union_set union_set::coalesce() const
18829 {
18830   auto res = isl_union_set_coalesce(copy());
18831   return manage(res);
18832 }
18833 
compute_divs()18834 isl::checked::union_set union_set::compute_divs() const
18835 {
18836   auto res = isl_union_set_compute_divs(copy());
18837   return manage(res);
18838 }
18839 
detect_equalities()18840 isl::checked::union_set union_set::detect_equalities() const
18841 {
18842   auto res = isl_union_set_detect_equalities(copy());
18843   return manage(res);
18844 }
18845 
empty(isl::checked::ctx ctx)18846 isl::checked::union_set union_set::empty(isl::checked::ctx ctx)
18847 {
18848   auto res = isl_union_set_empty_ctx(ctx.release());
18849   return manage(res);
18850 }
18851 
every_set(const std::function<boolean (isl::checked::set)> & test)18852 boolean union_set::every_set(const std::function<boolean(isl::checked::set)> &test) const
18853 {
18854   struct test_data {
18855     std::function<boolean(isl::checked::set)> func;
18856   } test_data = { test };
18857   auto test_lambda = [](isl_set *arg_0, void *arg_1) -> isl_bool {
18858     auto *data = static_cast<struct test_data *>(arg_1);
18859     auto ret = (data->func)(manage_copy(arg_0));
18860     return ret.release();
18861   };
18862   auto res = isl_union_set_every_set(get(), test_lambda, &test_data);
18863   return manage(res);
18864 }
18865 
extract_set(isl::checked::space space)18866 isl::checked::set union_set::extract_set(isl::checked::space space) const
18867 {
18868   auto res = isl_union_set_extract_set(get(), space.release());
18869   return manage(res);
18870 }
18871 
foreach_point(const std::function<stat (isl::checked::point)> & fn)18872 stat union_set::foreach_point(const std::function<stat(isl::checked::point)> &fn) const
18873 {
18874   struct fn_data {
18875     std::function<stat(isl::checked::point)> func;
18876   } fn_data = { fn };
18877   auto fn_lambda = [](isl_point *arg_0, void *arg_1) -> isl_stat {
18878     auto *data = static_cast<struct fn_data *>(arg_1);
18879     auto ret = (data->func)(manage(arg_0));
18880     return ret.release();
18881   };
18882   auto res = isl_union_set_foreach_point(get(), fn_lambda, &fn_data);
18883   return manage(res);
18884 }
18885 
foreach_set(const std::function<stat (isl::checked::set)> & fn)18886 stat union_set::foreach_set(const std::function<stat(isl::checked::set)> &fn) const
18887 {
18888   struct fn_data {
18889     std::function<stat(isl::checked::set)> func;
18890   } fn_data = { fn };
18891   auto fn_lambda = [](isl_set *arg_0, void *arg_1) -> isl_stat {
18892     auto *data = static_cast<struct fn_data *>(arg_1);
18893     auto ret = (data->func)(manage(arg_0));
18894     return ret.release();
18895   };
18896   auto res = isl_union_set_foreach_set(get(), fn_lambda, &fn_data);
18897   return manage(res);
18898 }
18899 
gist(isl::checked::union_set context)18900 isl::checked::union_set union_set::gist(isl::checked::union_set context) const
18901 {
18902   auto res = isl_union_set_gist(copy(), context.release());
18903   return manage(res);
18904 }
18905 
gist_params(isl::checked::set set)18906 isl::checked::union_set union_set::gist_params(isl::checked::set set) const
18907 {
18908   auto res = isl_union_set_gist_params(copy(), set.release());
18909   return manage(res);
18910 }
18911 
identity()18912 isl::checked::union_map union_set::identity() const
18913 {
18914   auto res = isl_union_set_identity(copy());
18915   return manage(res);
18916 }
18917 
intersect(isl::checked::union_set uset2)18918 isl::checked::union_set union_set::intersect(isl::checked::union_set uset2) const
18919 {
18920   auto res = isl_union_set_intersect(copy(), uset2.release());
18921   return manage(res);
18922 }
18923 
intersect_params(isl::checked::set set)18924 isl::checked::union_set union_set::intersect_params(isl::checked::set set) const
18925 {
18926   auto res = isl_union_set_intersect_params(copy(), set.release());
18927   return manage(res);
18928 }
18929 
is_disjoint(const isl::checked::union_set & uset2)18930 boolean union_set::is_disjoint(const isl::checked::union_set &uset2) const
18931 {
18932   auto res = isl_union_set_is_disjoint(get(), uset2.get());
18933   return manage(res);
18934 }
18935 
is_empty()18936 boolean union_set::is_empty() const
18937 {
18938   auto res = isl_union_set_is_empty(get());
18939   return manage(res);
18940 }
18941 
is_equal(const isl::checked::union_set & uset2)18942 boolean union_set::is_equal(const isl::checked::union_set &uset2) const
18943 {
18944   auto res = isl_union_set_is_equal(get(), uset2.get());
18945   return manage(res);
18946 }
18947 
is_strict_subset(const isl::checked::union_set & uset2)18948 boolean union_set::is_strict_subset(const isl::checked::union_set &uset2) const
18949 {
18950   auto res = isl_union_set_is_strict_subset(get(), uset2.get());
18951   return manage(res);
18952 }
18953 
is_subset(const isl::checked::union_set & uset2)18954 boolean union_set::is_subset(const isl::checked::union_set &uset2) const
18955 {
18956   auto res = isl_union_set_is_subset(get(), uset2.get());
18957   return manage(res);
18958 }
18959 
isa_set()18960 boolean union_set::isa_set() const
18961 {
18962   auto res = isl_union_set_isa_set(get());
18963   return manage(res);
18964 }
18965 
lexmax()18966 isl::checked::union_set union_set::lexmax() const
18967 {
18968   auto res = isl_union_set_lexmax(copy());
18969   return manage(res);
18970 }
18971 
lexmin()18972 isl::checked::union_set union_set::lexmin() const
18973 {
18974   auto res = isl_union_set_lexmin(copy());
18975   return manage(res);
18976 }
18977 
polyhedral_hull()18978 isl::checked::union_set union_set::polyhedral_hull() const
18979 {
18980   auto res = isl_union_set_polyhedral_hull(copy());
18981   return manage(res);
18982 }
18983 
preimage(isl::checked::multi_aff ma)18984 isl::checked::union_set union_set::preimage(isl::checked::multi_aff ma) const
18985 {
18986   auto res = isl_union_set_preimage_multi_aff(copy(), ma.release());
18987   return manage(res);
18988 }
18989 
preimage(isl::checked::pw_multi_aff pma)18990 isl::checked::union_set union_set::preimage(isl::checked::pw_multi_aff pma) const
18991 {
18992   auto res = isl_union_set_preimage_pw_multi_aff(copy(), pma.release());
18993   return manage(res);
18994 }
18995 
preimage(isl::checked::union_pw_multi_aff upma)18996 isl::checked::union_set union_set::preimage(isl::checked::union_pw_multi_aff upma) const
18997 {
18998   auto res = isl_union_set_preimage_union_pw_multi_aff(copy(), upma.release());
18999   return manage(res);
19000 }
19001 
sample_point()19002 isl::checked::point union_set::sample_point() const
19003 {
19004   auto res = isl_union_set_sample_point(copy());
19005   return manage(res);
19006 }
19007 
set_list()19008 isl::checked::set_list union_set::set_list() const
19009 {
19010   auto res = isl_union_set_get_set_list(get());
19011   return manage(res);
19012 }
19013 
get_set_list()19014 isl::checked::set_list union_set::get_set_list() const
19015 {
19016   return set_list();
19017 }
19018 
space()19019 isl::checked::space union_set::space() const
19020 {
19021   auto res = isl_union_set_get_space(get());
19022   return manage(res);
19023 }
19024 
get_space()19025 isl::checked::space union_set::get_space() const
19026 {
19027   return space();
19028 }
19029 
subtract(isl::checked::union_set uset2)19030 isl::checked::union_set union_set::subtract(isl::checked::union_set uset2) const
19031 {
19032   auto res = isl_union_set_subtract(copy(), uset2.release());
19033   return manage(res);
19034 }
19035 
to_list()19036 isl::checked::union_set_list union_set::to_list() const
19037 {
19038   auto res = isl_union_set_to_list(copy());
19039   return manage(res);
19040 }
19041 
unite(isl::checked::union_set uset2)19042 isl::checked::union_set union_set::unite(isl::checked::union_set uset2) const
19043 {
19044   auto res = isl_union_set_union(copy(), uset2.release());
19045   return manage(res);
19046 }
19047 
universe()19048 isl::checked::union_set union_set::universe() const
19049 {
19050   auto res = isl_union_set_universe(copy());
19051   return manage(res);
19052 }
19053 
unwrap()19054 isl::checked::union_map union_set::unwrap() const
19055 {
19056   auto res = isl_union_set_unwrap(copy());
19057   return manage(res);
19058 }
19059 
19060 inline std::ostream &operator<<(std::ostream &os, const union_set &obj)
19061 {
19062   char *str = isl_union_set_to_str(obj.get());
19063   if (!str) {
19064     os.setstate(std::ios_base::badbit);
19065     return os;
19066   }
19067   os << str;
19068   free(str);
19069   return os;
19070 }
19071 
19072 // implementations for isl::union_set_list
manage(__isl_take isl_union_set_list * ptr)19073 union_set_list manage(__isl_take isl_union_set_list *ptr) {
19074   return union_set_list(ptr);
19075 }
manage_copy(__isl_keep isl_union_set_list * ptr)19076 union_set_list manage_copy(__isl_keep isl_union_set_list *ptr) {
19077   ptr = isl_union_set_list_copy(ptr);
19078   return union_set_list(ptr);
19079 }
19080 
union_set_list()19081 union_set_list::union_set_list()
19082     : ptr(nullptr) {}
19083 
union_set_list(const union_set_list & obj)19084 union_set_list::union_set_list(const union_set_list &obj)
19085     : ptr(nullptr)
19086 {
19087   ptr = obj.copy();
19088 }
19089 
union_set_list(__isl_take isl_union_set_list * ptr)19090 union_set_list::union_set_list(__isl_take isl_union_set_list *ptr)
19091     : ptr(ptr) {}
19092 
union_set_list(isl::checked::ctx ctx,int n)19093 union_set_list::union_set_list(isl::checked::ctx ctx, int n)
19094 {
19095   auto res = isl_union_set_list_alloc(ctx.release(), n);
19096   ptr = res;
19097 }
19098 
union_set_list(isl::checked::union_set el)19099 union_set_list::union_set_list(isl::checked::union_set el)
19100 {
19101   auto res = isl_union_set_list_from_union_set(el.release());
19102   ptr = res;
19103 }
19104 
union_set_list(isl::checked::ctx ctx,const std::string & str)19105 union_set_list::union_set_list(isl::checked::ctx ctx, const std::string &str)
19106 {
19107   auto res = isl_union_set_list_read_from_str(ctx.release(), str.c_str());
19108   ptr = res;
19109 }
19110 
19111 union_set_list &union_set_list::operator=(union_set_list obj) {
19112   std::swap(this->ptr, obj.ptr);
19113   return *this;
19114 }
19115 
~union_set_list()19116 union_set_list::~union_set_list() {
19117   if (ptr)
19118     isl_union_set_list_free(ptr);
19119 }
19120 
copy()19121 __isl_give isl_union_set_list *union_set_list::copy() const & {
19122   return isl_union_set_list_copy(ptr);
19123 }
19124 
get()19125 __isl_keep isl_union_set_list *union_set_list::get() const {
19126   return ptr;
19127 }
19128 
release()19129 __isl_give isl_union_set_list *union_set_list::release() {
19130   isl_union_set_list *tmp = ptr;
19131   ptr = nullptr;
19132   return tmp;
19133 }
19134 
is_null()19135 bool union_set_list::is_null() const {
19136   return ptr == nullptr;
19137 }
19138 
ctx()19139 isl::checked::ctx union_set_list::ctx() const {
19140   return isl::checked::ctx(isl_union_set_list_get_ctx(ptr));
19141 }
19142 
add(isl::checked::union_set el)19143 isl::checked::union_set_list union_set_list::add(isl::checked::union_set el) const
19144 {
19145   auto res = isl_union_set_list_add(copy(), el.release());
19146   return manage(res);
19147 }
19148 
at(int index)19149 isl::checked::union_set union_set_list::at(int index) const
19150 {
19151   auto res = isl_union_set_list_get_at(get(), index);
19152   return manage(res);
19153 }
19154 
get_at(int index)19155 isl::checked::union_set union_set_list::get_at(int index) const
19156 {
19157   return at(index);
19158 }
19159 
clear()19160 isl::checked::union_set_list union_set_list::clear() const
19161 {
19162   auto res = isl_union_set_list_clear(copy());
19163   return manage(res);
19164 }
19165 
concat(isl::checked::union_set_list list2)19166 isl::checked::union_set_list union_set_list::concat(isl::checked::union_set_list list2) const
19167 {
19168   auto res = isl_union_set_list_concat(copy(), list2.release());
19169   return manage(res);
19170 }
19171 
drop(unsigned int first,unsigned int n)19172 isl::checked::union_set_list union_set_list::drop(unsigned int first, unsigned int n) const
19173 {
19174   auto res = isl_union_set_list_drop(copy(), first, n);
19175   return manage(res);
19176 }
19177 
foreach(const std::function<stat (isl::checked::union_set)> & fn)19178 stat union_set_list::foreach(const std::function<stat(isl::checked::union_set)> &fn) const
19179 {
19180   struct fn_data {
19181     std::function<stat(isl::checked::union_set)> func;
19182   } fn_data = { fn };
19183   auto fn_lambda = [](isl_union_set *arg_0, void *arg_1) -> isl_stat {
19184     auto *data = static_cast<struct fn_data *>(arg_1);
19185     auto ret = (data->func)(manage(arg_0));
19186     return ret.release();
19187   };
19188   auto res = isl_union_set_list_foreach(get(), fn_lambda, &fn_data);
19189   return manage(res);
19190 }
19191 
insert(unsigned int pos,isl::checked::union_set el)19192 isl::checked::union_set_list union_set_list::insert(unsigned int pos, isl::checked::union_set el) const
19193 {
19194   auto res = isl_union_set_list_insert(copy(), pos, el.release());
19195   return manage(res);
19196 }
19197 
size()19198 class size union_set_list::size() const
19199 {
19200   auto res = isl_union_set_list_size(get());
19201   return manage(res);
19202 }
19203 
19204 inline std::ostream &operator<<(std::ostream &os, const union_set_list &obj)
19205 {
19206   char *str = isl_union_set_list_to_str(obj.get());
19207   if (!str) {
19208     os.setstate(std::ios_base::badbit);
19209     return os;
19210   }
19211   os << str;
19212   free(str);
19213   return os;
19214 }
19215 
19216 // implementations for isl::val
manage(__isl_take isl_val * ptr)19217 val manage(__isl_take isl_val *ptr) {
19218   return val(ptr);
19219 }
manage_copy(__isl_keep isl_val * ptr)19220 val manage_copy(__isl_keep isl_val *ptr) {
19221   ptr = isl_val_copy(ptr);
19222   return val(ptr);
19223 }
19224 
val()19225 val::val()
19226     : ptr(nullptr) {}
19227 
val(const val & obj)19228 val::val(const val &obj)
19229     : ptr(nullptr)
19230 {
19231   ptr = obj.copy();
19232 }
19233 
val(__isl_take isl_val * ptr)19234 val::val(__isl_take isl_val *ptr)
19235     : ptr(ptr) {}
19236 
val(isl::checked::ctx ctx,long i)19237 val::val(isl::checked::ctx ctx, long i)
19238 {
19239   auto res = isl_val_int_from_si(ctx.release(), i);
19240   ptr = res;
19241 }
19242 
val(isl::checked::ctx ctx,const std::string & str)19243 val::val(isl::checked::ctx ctx, const std::string &str)
19244 {
19245   auto res = isl_val_read_from_str(ctx.release(), str.c_str());
19246   ptr = res;
19247 }
19248 
19249 val &val::operator=(val obj) {
19250   std::swap(this->ptr, obj.ptr);
19251   return *this;
19252 }
19253 
~val()19254 val::~val() {
19255   if (ptr)
19256     isl_val_free(ptr);
19257 }
19258 
copy()19259 __isl_give isl_val *val::copy() const & {
19260   return isl_val_copy(ptr);
19261 }
19262 
get()19263 __isl_keep isl_val *val::get() const {
19264   return ptr;
19265 }
19266 
release()19267 __isl_give isl_val *val::release() {
19268   isl_val *tmp = ptr;
19269   ptr = nullptr;
19270   return tmp;
19271 }
19272 
is_null()19273 bool val::is_null() const {
19274   return ptr == nullptr;
19275 }
19276 
ctx()19277 isl::checked::ctx val::ctx() const {
19278   return isl::checked::ctx(isl_val_get_ctx(ptr));
19279 }
19280 
abs()19281 isl::checked::val val::abs() const
19282 {
19283   auto res = isl_val_abs(copy());
19284   return manage(res);
19285 }
19286 
abs_eq(const isl::checked::val & v2)19287 boolean val::abs_eq(const isl::checked::val &v2) const
19288 {
19289   auto res = isl_val_abs_eq(get(), v2.get());
19290   return manage(res);
19291 }
19292 
abs_eq(long v2)19293 boolean val::abs_eq(long v2) const
19294 {
19295   return this->abs_eq(isl::checked::val(ctx(), v2));
19296 }
19297 
add(isl::checked::val v2)19298 isl::checked::val val::add(isl::checked::val v2) const
19299 {
19300   auto res = isl_val_add(copy(), v2.release());
19301   return manage(res);
19302 }
19303 
add(long v2)19304 isl::checked::val val::add(long v2) const
19305 {
19306   return this->add(isl::checked::val(ctx(), v2));
19307 }
19308 
ceil()19309 isl::checked::val val::ceil() const
19310 {
19311   auto res = isl_val_ceil(copy());
19312   return manage(res);
19313 }
19314 
cmp_si(long i)19315 int val::cmp_si(long i) const
19316 {
19317   auto res = isl_val_cmp_si(get(), i);
19318   return res;
19319 }
19320 
den_si()19321 long val::den_si() const
19322 {
19323   auto res = isl_val_get_den_si(get());
19324   return res;
19325 }
19326 
get_den_si()19327 long val::get_den_si() const
19328 {
19329   return den_si();
19330 }
19331 
div(isl::checked::val v2)19332 isl::checked::val val::div(isl::checked::val v2) const
19333 {
19334   auto res = isl_val_div(copy(), v2.release());
19335   return manage(res);
19336 }
19337 
div(long v2)19338 isl::checked::val val::div(long v2) const
19339 {
19340   return this->div(isl::checked::val(ctx(), v2));
19341 }
19342 
eq(const isl::checked::val & v2)19343 boolean val::eq(const isl::checked::val &v2) const
19344 {
19345   auto res = isl_val_eq(get(), v2.get());
19346   return manage(res);
19347 }
19348 
eq(long v2)19349 boolean val::eq(long v2) const
19350 {
19351   return this->eq(isl::checked::val(ctx(), v2));
19352 }
19353 
floor()19354 isl::checked::val val::floor() const
19355 {
19356   auto res = isl_val_floor(copy());
19357   return manage(res);
19358 }
19359 
gcd(isl::checked::val v2)19360 isl::checked::val val::gcd(isl::checked::val v2) const
19361 {
19362   auto res = isl_val_gcd(copy(), v2.release());
19363   return manage(res);
19364 }
19365 
gcd(long v2)19366 isl::checked::val val::gcd(long v2) const
19367 {
19368   return this->gcd(isl::checked::val(ctx(), v2));
19369 }
19370 
ge(const isl::checked::val & v2)19371 boolean val::ge(const isl::checked::val &v2) const
19372 {
19373   auto res = isl_val_ge(get(), v2.get());
19374   return manage(res);
19375 }
19376 
ge(long v2)19377 boolean val::ge(long v2) const
19378 {
19379   return this->ge(isl::checked::val(ctx(), v2));
19380 }
19381 
gt(const isl::checked::val & v2)19382 boolean val::gt(const isl::checked::val &v2) const
19383 {
19384   auto res = isl_val_gt(get(), v2.get());
19385   return manage(res);
19386 }
19387 
gt(long v2)19388 boolean val::gt(long v2) const
19389 {
19390   return this->gt(isl::checked::val(ctx(), v2));
19391 }
19392 
infty(isl::checked::ctx ctx)19393 isl::checked::val val::infty(isl::checked::ctx ctx)
19394 {
19395   auto res = isl_val_infty(ctx.release());
19396   return manage(res);
19397 }
19398 
inv()19399 isl::checked::val val::inv() const
19400 {
19401   auto res = isl_val_inv(copy());
19402   return manage(res);
19403 }
19404 
is_divisible_by(const isl::checked::val & v2)19405 boolean val::is_divisible_by(const isl::checked::val &v2) const
19406 {
19407   auto res = isl_val_is_divisible_by(get(), v2.get());
19408   return manage(res);
19409 }
19410 
is_divisible_by(long v2)19411 boolean val::is_divisible_by(long v2) const
19412 {
19413   return this->is_divisible_by(isl::checked::val(ctx(), v2));
19414 }
19415 
is_infty()19416 boolean val::is_infty() const
19417 {
19418   auto res = isl_val_is_infty(get());
19419   return manage(res);
19420 }
19421 
is_int()19422 boolean val::is_int() const
19423 {
19424   auto res = isl_val_is_int(get());
19425   return manage(res);
19426 }
19427 
is_nan()19428 boolean val::is_nan() const
19429 {
19430   auto res = isl_val_is_nan(get());
19431   return manage(res);
19432 }
19433 
is_neg()19434 boolean val::is_neg() const
19435 {
19436   auto res = isl_val_is_neg(get());
19437   return manage(res);
19438 }
19439 
is_neginfty()19440 boolean val::is_neginfty() const
19441 {
19442   auto res = isl_val_is_neginfty(get());
19443   return manage(res);
19444 }
19445 
is_negone()19446 boolean val::is_negone() const
19447 {
19448   auto res = isl_val_is_negone(get());
19449   return manage(res);
19450 }
19451 
is_nonneg()19452 boolean val::is_nonneg() const
19453 {
19454   auto res = isl_val_is_nonneg(get());
19455   return manage(res);
19456 }
19457 
is_nonpos()19458 boolean val::is_nonpos() const
19459 {
19460   auto res = isl_val_is_nonpos(get());
19461   return manage(res);
19462 }
19463 
is_one()19464 boolean val::is_one() const
19465 {
19466   auto res = isl_val_is_one(get());
19467   return manage(res);
19468 }
19469 
is_pos()19470 boolean val::is_pos() const
19471 {
19472   auto res = isl_val_is_pos(get());
19473   return manage(res);
19474 }
19475 
is_rat()19476 boolean val::is_rat() const
19477 {
19478   auto res = isl_val_is_rat(get());
19479   return manage(res);
19480 }
19481 
is_zero()19482 boolean val::is_zero() const
19483 {
19484   auto res = isl_val_is_zero(get());
19485   return manage(res);
19486 }
19487 
le(const isl::checked::val & v2)19488 boolean val::le(const isl::checked::val &v2) const
19489 {
19490   auto res = isl_val_le(get(), v2.get());
19491   return manage(res);
19492 }
19493 
le(long v2)19494 boolean val::le(long v2) const
19495 {
19496   return this->le(isl::checked::val(ctx(), v2));
19497 }
19498 
lt(const isl::checked::val & v2)19499 boolean val::lt(const isl::checked::val &v2) const
19500 {
19501   auto res = isl_val_lt(get(), v2.get());
19502   return manage(res);
19503 }
19504 
lt(long v2)19505 boolean val::lt(long v2) const
19506 {
19507   return this->lt(isl::checked::val(ctx(), v2));
19508 }
19509 
max(isl::checked::val v2)19510 isl::checked::val val::max(isl::checked::val v2) const
19511 {
19512   auto res = isl_val_max(copy(), v2.release());
19513   return manage(res);
19514 }
19515 
max(long v2)19516 isl::checked::val val::max(long v2) const
19517 {
19518   return this->max(isl::checked::val(ctx(), v2));
19519 }
19520 
min(isl::checked::val v2)19521 isl::checked::val val::min(isl::checked::val v2) const
19522 {
19523   auto res = isl_val_min(copy(), v2.release());
19524   return manage(res);
19525 }
19526 
min(long v2)19527 isl::checked::val val::min(long v2) const
19528 {
19529   return this->min(isl::checked::val(ctx(), v2));
19530 }
19531 
mod(isl::checked::val v2)19532 isl::checked::val val::mod(isl::checked::val v2) const
19533 {
19534   auto res = isl_val_mod(copy(), v2.release());
19535   return manage(res);
19536 }
19537 
mod(long v2)19538 isl::checked::val val::mod(long v2) const
19539 {
19540   return this->mod(isl::checked::val(ctx(), v2));
19541 }
19542 
mul(isl::checked::val v2)19543 isl::checked::val val::mul(isl::checked::val v2) const
19544 {
19545   auto res = isl_val_mul(copy(), v2.release());
19546   return manage(res);
19547 }
19548 
mul(long v2)19549 isl::checked::val val::mul(long v2) const
19550 {
19551   return this->mul(isl::checked::val(ctx(), v2));
19552 }
19553 
nan(isl::checked::ctx ctx)19554 isl::checked::val val::nan(isl::checked::ctx ctx)
19555 {
19556   auto res = isl_val_nan(ctx.release());
19557   return manage(res);
19558 }
19559 
ne(const isl::checked::val & v2)19560 boolean val::ne(const isl::checked::val &v2) const
19561 {
19562   auto res = isl_val_ne(get(), v2.get());
19563   return manage(res);
19564 }
19565 
ne(long v2)19566 boolean val::ne(long v2) const
19567 {
19568   return this->ne(isl::checked::val(ctx(), v2));
19569 }
19570 
neg()19571 isl::checked::val val::neg() const
19572 {
19573   auto res = isl_val_neg(copy());
19574   return manage(res);
19575 }
19576 
neginfty(isl::checked::ctx ctx)19577 isl::checked::val val::neginfty(isl::checked::ctx ctx)
19578 {
19579   auto res = isl_val_neginfty(ctx.release());
19580   return manage(res);
19581 }
19582 
negone(isl::checked::ctx ctx)19583 isl::checked::val val::negone(isl::checked::ctx ctx)
19584 {
19585   auto res = isl_val_negone(ctx.release());
19586   return manage(res);
19587 }
19588 
num_si()19589 long val::num_si() const
19590 {
19591   auto res = isl_val_get_num_si(get());
19592   return res;
19593 }
19594 
get_num_si()19595 long val::get_num_si() const
19596 {
19597   return num_si();
19598 }
19599 
one(isl::checked::ctx ctx)19600 isl::checked::val val::one(isl::checked::ctx ctx)
19601 {
19602   auto res = isl_val_one(ctx.release());
19603   return manage(res);
19604 }
19605 
pow2()19606 isl::checked::val val::pow2() const
19607 {
19608   auto res = isl_val_pow2(copy());
19609   return manage(res);
19610 }
19611 
sgn()19612 int val::sgn() const
19613 {
19614   auto res = isl_val_sgn(get());
19615   return res;
19616 }
19617 
sub(isl::checked::val v2)19618 isl::checked::val val::sub(isl::checked::val v2) const
19619 {
19620   auto res = isl_val_sub(copy(), v2.release());
19621   return manage(res);
19622 }
19623 
sub(long v2)19624 isl::checked::val val::sub(long v2) const
19625 {
19626   return this->sub(isl::checked::val(ctx(), v2));
19627 }
19628 
to_list()19629 isl::checked::val_list val::to_list() const
19630 {
19631   auto res = isl_val_to_list(copy());
19632   return manage(res);
19633 }
19634 
trunc()19635 isl::checked::val val::trunc() const
19636 {
19637   auto res = isl_val_trunc(copy());
19638   return manage(res);
19639 }
19640 
zero(isl::checked::ctx ctx)19641 isl::checked::val val::zero(isl::checked::ctx ctx)
19642 {
19643   auto res = isl_val_zero(ctx.release());
19644   return manage(res);
19645 }
19646 
19647 inline std::ostream &operator<<(std::ostream &os, const val &obj)
19648 {
19649   char *str = isl_val_to_str(obj.get());
19650   if (!str) {
19651     os.setstate(std::ios_base::badbit);
19652     return os;
19653   }
19654   os << str;
19655   free(str);
19656   return os;
19657 }
19658 
19659 // implementations for isl::val_list
manage(__isl_take isl_val_list * ptr)19660 val_list manage(__isl_take isl_val_list *ptr) {
19661   return val_list(ptr);
19662 }
manage_copy(__isl_keep isl_val_list * ptr)19663 val_list manage_copy(__isl_keep isl_val_list *ptr) {
19664   ptr = isl_val_list_copy(ptr);
19665   return val_list(ptr);
19666 }
19667 
val_list()19668 val_list::val_list()
19669     : ptr(nullptr) {}
19670 
val_list(const val_list & obj)19671 val_list::val_list(const val_list &obj)
19672     : ptr(nullptr)
19673 {
19674   ptr = obj.copy();
19675 }
19676 
val_list(__isl_take isl_val_list * ptr)19677 val_list::val_list(__isl_take isl_val_list *ptr)
19678     : ptr(ptr) {}
19679 
val_list(isl::checked::ctx ctx,int n)19680 val_list::val_list(isl::checked::ctx ctx, int n)
19681 {
19682   auto res = isl_val_list_alloc(ctx.release(), n);
19683   ptr = res;
19684 }
19685 
val_list(isl::checked::val el)19686 val_list::val_list(isl::checked::val el)
19687 {
19688   auto res = isl_val_list_from_val(el.release());
19689   ptr = res;
19690 }
19691 
val_list(isl::checked::ctx ctx,const std::string & str)19692 val_list::val_list(isl::checked::ctx ctx, const std::string &str)
19693 {
19694   auto res = isl_val_list_read_from_str(ctx.release(), str.c_str());
19695   ptr = res;
19696 }
19697 
19698 val_list &val_list::operator=(val_list obj) {
19699   std::swap(this->ptr, obj.ptr);
19700   return *this;
19701 }
19702 
~val_list()19703 val_list::~val_list() {
19704   if (ptr)
19705     isl_val_list_free(ptr);
19706 }
19707 
copy()19708 __isl_give isl_val_list *val_list::copy() const & {
19709   return isl_val_list_copy(ptr);
19710 }
19711 
get()19712 __isl_keep isl_val_list *val_list::get() const {
19713   return ptr;
19714 }
19715 
release()19716 __isl_give isl_val_list *val_list::release() {
19717   isl_val_list *tmp = ptr;
19718   ptr = nullptr;
19719   return tmp;
19720 }
19721 
is_null()19722 bool val_list::is_null() const {
19723   return ptr == nullptr;
19724 }
19725 
ctx()19726 isl::checked::ctx val_list::ctx() const {
19727   return isl::checked::ctx(isl_val_list_get_ctx(ptr));
19728 }
19729 
add(isl::checked::val el)19730 isl::checked::val_list val_list::add(isl::checked::val el) const
19731 {
19732   auto res = isl_val_list_add(copy(), el.release());
19733   return manage(res);
19734 }
19735 
add(long el)19736 isl::checked::val_list val_list::add(long el) const
19737 {
19738   return this->add(isl::checked::val(ctx(), el));
19739 }
19740 
at(int index)19741 isl::checked::val val_list::at(int index) const
19742 {
19743   auto res = isl_val_list_get_at(get(), index);
19744   return manage(res);
19745 }
19746 
get_at(int index)19747 isl::checked::val val_list::get_at(int index) const
19748 {
19749   return at(index);
19750 }
19751 
clear()19752 isl::checked::val_list val_list::clear() const
19753 {
19754   auto res = isl_val_list_clear(copy());
19755   return manage(res);
19756 }
19757 
concat(isl::checked::val_list list2)19758 isl::checked::val_list val_list::concat(isl::checked::val_list list2) const
19759 {
19760   auto res = isl_val_list_concat(copy(), list2.release());
19761   return manage(res);
19762 }
19763 
drop(unsigned int first,unsigned int n)19764 isl::checked::val_list val_list::drop(unsigned int first, unsigned int n) const
19765 {
19766   auto res = isl_val_list_drop(copy(), first, n);
19767   return manage(res);
19768 }
19769 
foreach(const std::function<stat (isl::checked::val)> & fn)19770 stat val_list::foreach(const std::function<stat(isl::checked::val)> &fn) const
19771 {
19772   struct fn_data {
19773     std::function<stat(isl::checked::val)> func;
19774   } fn_data = { fn };
19775   auto fn_lambda = [](isl_val *arg_0, void *arg_1) -> isl_stat {
19776     auto *data = static_cast<struct fn_data *>(arg_1);
19777     auto ret = (data->func)(manage(arg_0));
19778     return ret.release();
19779   };
19780   auto res = isl_val_list_foreach(get(), fn_lambda, &fn_data);
19781   return manage(res);
19782 }
19783 
insert(unsigned int pos,isl::checked::val el)19784 isl::checked::val_list val_list::insert(unsigned int pos, isl::checked::val el) const
19785 {
19786   auto res = isl_val_list_insert(copy(), pos, el.release());
19787   return manage(res);
19788 }
19789 
insert(unsigned int pos,long el)19790 isl::checked::val_list val_list::insert(unsigned int pos, long el) const
19791 {
19792   return this->insert(pos, isl::checked::val(ctx(), el));
19793 }
19794 
size()19795 class size val_list::size() const
19796 {
19797   auto res = isl_val_list_size(get());
19798   return manage(res);
19799 }
19800 
19801 inline std::ostream &operator<<(std::ostream &os, const val_list &obj)
19802 {
19803   char *str = isl_val_list_to_str(obj.get());
19804   if (!str) {
19805     os.setstate(std::ios_base::badbit);
19806     return os;
19807   }
19808   os << str;
19809   free(str);
19810   return os;
19811 }
19812 } // namespace checked
19813 } // namespace isl
19814 
19815 #endif /* ISL_CPP_CHECKED */
19816